ligo/tools/webide/packages/server/src/load-state.ts
2020-02-24 19:29:11 +00:00

71 lines
1.6 KiB
TypeScript

import fs from 'fs';
import { join } from 'path';
function readFile(path: string): Promise<string> {
return new Promise((resolve, reject) => {
fs.readFile(path, 'utf8', (error, content) => {
if (error) {
reject(error);
} else {
resolve(content);
}
});
});
}
export async function loadDefaultState(appBundleDirectory: string) {
const examples = await readFile(
join(appBundleDirectory, 'static', 'examples', 'list')
);
const examplesList = JSON.parse(examples);
const defaultState = {
compile: {},
dryRun: {},
deploy: {},
evaluateValue: {},
evaluateFunction: {},
editor: {
title: ''
},
examples: {
selected: null,
list: examplesList
}
};
if (examplesList[0]) {
const example = await readFile(
join(appBundleDirectory, 'static', 'examples', examplesList[0].id)
);
const defaultExample = JSON.parse(example);
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,
title: defaultExample.name
};
}
return defaultState;
}