Added JSON output to compile command
This commit is contained in:
parent
fddda1a0a2
commit
2a063a4353
@ -6,7 +6,6 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="theme-color" content="#000000" />
|
||||
<meta name="description" content="The LIGO Playground for learning LIGO" />
|
||||
<link rel="apple-touch-icon" href="logo192.png" />
|
||||
<!--
|
||||
manifest.json provides metadata used when your web app is installed on a
|
||||
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
|
||||
|
@ -3,16 +3,25 @@ import { useDispatch, useSelector } from 'react-redux';
|
||||
import styled from 'styled-components';
|
||||
|
||||
import { AppState } from '../redux/app';
|
||||
import { ChangeEntrypointAction, CompileState } from '../redux/compile';
|
||||
import { Group, Input, Label } from './inputs';
|
||||
import { ChangeEntrypointAction, ChangeMichelsonFormatAction, CompileState, MichelsonFormat } from '../redux/compile';
|
||||
import { CheckboxComponent } from './checkbox';
|
||||
import { Group, HGroup, Input, Label } from './inputs';
|
||||
|
||||
const Container = styled.div``;
|
||||
|
||||
const Checkbox = styled(CheckboxComponent)`
|
||||
margin-right: 0.3em;
|
||||
`;
|
||||
|
||||
export const CompilePaneComponent = () => {
|
||||
const dispatch = useDispatch();
|
||||
const entrypoint = useSelector<AppState, CompileState['entrypoint']>(
|
||||
state => state.compile.entrypoint
|
||||
);
|
||||
const michelsonFormat = useSelector<
|
||||
AppState,
|
||||
CompileState['michelsonFormat']
|
||||
>(state => state.compile.michelsonFormat);
|
||||
|
||||
return (
|
||||
<Container>
|
||||
@ -26,6 +35,19 @@ export const CompilePaneComponent = () => {
|
||||
}
|
||||
></Input>
|
||||
</Group>
|
||||
<HGroup>
|
||||
<Checkbox
|
||||
checked={michelsonFormat === MichelsonFormat.Json}
|
||||
onChanged={value =>
|
||||
dispatch({
|
||||
...new ChangeMichelsonFormatAction(
|
||||
value ? MichelsonFormat.Json : MichelsonFormat.Text
|
||||
)
|
||||
})
|
||||
}
|
||||
></Checkbox>
|
||||
<Label htmlFor="michelsonFormat">Output michelson in JSON format</Label>
|
||||
</HGroup>
|
||||
</Container>
|
||||
);
|
||||
};
|
||||
|
@ -16,7 +16,8 @@ export class CompileAction extends CancellableAction {
|
||||
const michelsonCode = await compileContract(
|
||||
editor.language,
|
||||
editor.code,
|
||||
compileState.entrypoint
|
||||
compileState.entrypoint,
|
||||
compileState.michelsonFormat
|
||||
);
|
||||
|
||||
if (this.isCancelled()) {
|
||||
|
@ -6,11 +6,13 @@ export enum MichelsonFormat {
|
||||
}
|
||||
|
||||
export enum ActionType {
|
||||
ChangeEntrypoint = 'compile-change-entrypoint'
|
||||
ChangeEntrypoint = 'compile-change-entrypoint',
|
||||
ChangeMichelsonFormat = 'compile-change-michelson-format'
|
||||
}
|
||||
|
||||
export interface CompileState {
|
||||
entrypoint: string;
|
||||
michelsonFormat: MichelsonFormat;
|
||||
}
|
||||
|
||||
export class ChangeEntrypointAction {
|
||||
@ -18,10 +20,19 @@ export class ChangeEntrypointAction {
|
||||
constructor(public payload: CompileState['entrypoint']) {}
|
||||
}
|
||||
|
||||
type Action = ChangeEntrypointAction | ChangeSelectedExampleAction;
|
||||
export class ChangeMichelsonFormatAction {
|
||||
public readonly type = ActionType.ChangeMichelsonFormat;
|
||||
constructor(public payload: CompileState['michelsonFormat']) {}
|
||||
}
|
||||
|
||||
type Action =
|
||||
| ChangeEntrypointAction
|
||||
| ChangeMichelsonFormatAction
|
||||
| ChangeSelectedExampleAction;
|
||||
|
||||
const DEFAULT_STATE: CompileState = {
|
||||
entrypoint: ''
|
||||
entrypoint: '',
|
||||
michelsonFormat: MichelsonFormat.Text
|
||||
};
|
||||
|
||||
export default (state = DEFAULT_STATE, action: Action): CompileState => {
|
||||
@ -36,6 +47,12 @@ export default (state = DEFAULT_STATE, action: Action): CompileState => {
|
||||
...state,
|
||||
entrypoint: action.payload
|
||||
};
|
||||
}
|
||||
return state;
|
||||
case ActionType.ChangeMichelsonFormat:
|
||||
return {
|
||||
...state,
|
||||
michelsonFormat: action.payload
|
||||
};
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
};
|
||||
|
@ -1,4 +1,8 @@
|
||||
import { ActionType as CompileActionType, ChangeEntrypointAction as ChangeCompileEntrypointAction } from './compile';
|
||||
import {
|
||||
ActionType as CompileActionType,
|
||||
ChangeEntrypointAction as ChangeCompileEntrypointAction,
|
||||
ChangeMichelsonFormatAction,
|
||||
} from './compile';
|
||||
import {
|
||||
ActionType as DeployActionType,
|
||||
ChangeEntrypointAction as ChangeDeployEntrypointAction,
|
||||
@ -40,6 +44,7 @@ type Action =
|
||||
| ChangeCodeAction
|
||||
| ChangeLanguageAction
|
||||
| ChangeCompileEntrypointAction
|
||||
| ChangeMichelsonFormatAction
|
||||
| ChangeDeployEntrypointAction
|
||||
| ChangeDeployStorageAction
|
||||
| UseTezBridgeAction
|
||||
@ -61,7 +66,6 @@ export default (state = DEFAULT_STATE, action: Action): ShareState => {
|
||||
case CompileActionType.ChangeEntrypoint:
|
||||
case DeployActionType.ChangeEntrypoint:
|
||||
case DeployActionType.ChangeStorage:
|
||||
case DeployActionType.UseTezBridge:
|
||||
case DryRunActionType.ChangeEntrypoint:
|
||||
case DryRunActionType.ChangeParameters:
|
||||
case DryRunActionType.ChangeStorage:
|
||||
|
@ -30,7 +30,7 @@ export async function compileExpression(
|
||||
) {
|
||||
const response = await axios.post('/api/compile-expression', {
|
||||
syntax,
|
||||
expression,
|
||||
expression: `${expression}`,
|
||||
format
|
||||
});
|
||||
return response.data;
|
||||
@ -64,14 +64,24 @@ export async function share({
|
||||
evaluateValue,
|
||||
evaluateFunction
|
||||
}: Partial<AppState>) {
|
||||
const response = await axios.post('/api/share', {
|
||||
const params = {
|
||||
editor,
|
||||
compile,
|
||||
dryRun,
|
||||
deploy,
|
||||
evaluateValue,
|
||||
evaluateFunction
|
||||
});
|
||||
};
|
||||
|
||||
// We don't want to store the following configuration
|
||||
if (params.compile) {
|
||||
delete params.compile.michelsonFormat;
|
||||
}
|
||||
if (params.deploy) {
|
||||
delete params.deploy.useTezBridge;
|
||||
}
|
||||
|
||||
const response = await axios.post('/api/share', params);
|
||||
return response.data;
|
||||
}
|
||||
|
||||
|
@ -1,12 +1,12 @@
|
||||
import { Request, Response } from 'express';
|
||||
|
||||
import { loadDefaultState } from '../load-state';
|
||||
import { logger } from '../logger';
|
||||
import latestSchema from '../schemas/share-latest';
|
||||
import { storage } from '../storage';
|
||||
import { FileNotFoundError } from '../storage/interface';
|
||||
import { logger } from '../logger';
|
||||
|
||||
export function createSharedLinkHandler(
|
||||
export function sharedLinkHandler(
|
||||
appBundleDirectory: string,
|
||||
template: (state: string) => string
|
||||
) {
|
||||
|
@ -9,9 +9,9 @@ import { dryRunHandler } from './handlers/dry-run';
|
||||
import { evaluateValueHandler } from './handlers/evaluate-value';
|
||||
import { runFunctionHandler } from './handlers/run-function';
|
||||
import { shareHandler } from './handlers/share';
|
||||
import { createSharedLinkHandler } from './handlers/shared-link';
|
||||
import { sharedLinkHandler } from './handlers/shared-link';
|
||||
import { loadDefaultState } from './load-state';
|
||||
import { loggerMiddleware, errorLoggerMiddleware } from './logger';
|
||||
import { errorLoggerMiddleware, loggerMiddleware } from './logger';
|
||||
|
||||
var bodyParser = require('body-parser');
|
||||
var escape = require('escape-html');
|
||||
@ -47,7 +47,7 @@ app.use('^/$', async (_, res) =>
|
||||
app.use(express.static(appBundleDirectory));
|
||||
app.get(
|
||||
`/p/:hash([0-9a-zA-Z\-\_]+)`,
|
||||
createSharedLinkHandler(appBundleDirectory, template)
|
||||
sharedLinkHandler(appBundleDirectory, template)
|
||||
);
|
||||
app.post('/api/compile-contract', compileContractHandler);
|
||||
app.post('/api/compile-expression', compileExpressionHandler);
|
||||
|
@ -37,12 +37,30 @@ export async function loadDefaultState(appBundleDirectory: string) {
|
||||
);
|
||||
const defaultExample = JSON.parse(example);
|
||||
|
||||
defaultState.compile = defaultExample.compile;
|
||||
defaultState.dryRun = defaultExample.dryRun;
|
||||
defaultState.deploy = defaultExample.deploy;
|
||||
defaultState.evaluateValue = defaultExample.evaluateValue;
|
||||
defaultState.evaluateFunction = defaultExample.evaluateFunction;
|
||||
defaultState.editor = defaultExample.editor;
|
||||
defaultState.compile = {
|
||||
...defaultState.compile,
|
||||
...defaultExample.compile
|
||||
};
|
||||
defaultState.dryRun = {
|
||||
...defaultState.dryRun,
|
||||
...defaultExample.dryRun
|
||||
};
|
||||
defaultState.deploy = {
|
||||
...defaultState.deploy,
|
||||
...defaultExample.deploy
|
||||
};
|
||||
defaultState.evaluateValue = {
|
||||
...defaultState.evaluateValue,
|
||||
...defaultExample.evaluateValue
|
||||
};
|
||||
defaultState.evaluateFunction = {
|
||||
...defaultState.evaluateFunction,
|
||||
...defaultExample.evaluateFunction
|
||||
};
|
||||
defaultState.editor = {
|
||||
...defaultState.editor,
|
||||
...defaultExample.editor
|
||||
};
|
||||
defaultState.examples.selected = defaultExample;
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,9 @@ export abstract class Migration {
|
||||
}
|
||||
|
||||
throw new Error(
|
||||
`Unable to migrate ${data}. Reached the end of the migration chain.`
|
||||
`Unable to migrate ${JSON.stringify(
|
||||
data
|
||||
)}. Reached the end of the migration chain.`
|
||||
);
|
||||
}
|
||||
return value;
|
||||
|
Loading…
Reference in New Issue
Block a user