
When this is merged https://gitlab.com/ligolang/ligo-web-ide/ will be marked as deprecated. This MR does not hook up the webide build to the main CI. The CI integration will come in a subsequent MR for the sake of making review easier.
110 lines
2.4 KiB
TypeScript
110 lines
2.4 KiB
TypeScript
import joi from '@hapi/joi';
|
|
|
|
import { Migration } from './migration';
|
|
import { SchemaMigrationV0, SchemaV0 } from './share-v0';
|
|
|
|
export type Version = 'v1';
|
|
|
|
export interface SchemaV1 {
|
|
version: Version;
|
|
state: {
|
|
editor: {
|
|
language: string;
|
|
code: string;
|
|
};
|
|
compile: {
|
|
entrypoint: string;
|
|
};
|
|
dryRun: {
|
|
entrypoint: string;
|
|
parameters: string;
|
|
storage: string;
|
|
};
|
|
deploy: {
|
|
entrypoint: string;
|
|
storage: string;
|
|
useTezBridge?: boolean;
|
|
};
|
|
evaluateValue: {
|
|
entrypoint: string;
|
|
};
|
|
evaluateFunction: {
|
|
entrypoint: string;
|
|
parameters: string;
|
|
};
|
|
};
|
|
}
|
|
|
|
export class SchemaMigrationV1 extends Migration {
|
|
readonly VERSION: Version = 'v1';
|
|
|
|
protected readonly schema = joi.object({
|
|
version: joi
|
|
.string()
|
|
.required()
|
|
.allow(this.VERSION),
|
|
state: joi.object({
|
|
editor: joi
|
|
.object({
|
|
language: joi.string().required(),
|
|
code: joi.string().required()
|
|
})
|
|
.required(),
|
|
compile: joi.object({
|
|
entrypoint: joi.string().allow('')
|
|
}),
|
|
dryRun: joi.object({
|
|
entrypoint: joi.string().allow(''),
|
|
parameters: joi.any().allow(''),
|
|
storage: joi.any().allow('')
|
|
}),
|
|
deploy: joi.object({
|
|
entrypoint: joi.string().allow(''),
|
|
storage: joi.any().allow(''),
|
|
useTezBridge: joi.boolean().optional()
|
|
}),
|
|
evaluateValue: joi.object({
|
|
entrypoint: joi.string().allow('')
|
|
}),
|
|
evaluateFunction: joi.object({
|
|
entrypoint: joi.string().allow(''),
|
|
parameters: joi.any().allow('')
|
|
})
|
|
})
|
|
});
|
|
|
|
protected readonly previous = new SchemaMigrationV0();
|
|
|
|
protected migrate(data: SchemaV0): SchemaV1 {
|
|
return {
|
|
version: this.VERSION,
|
|
state: {
|
|
editor: {
|
|
language: data.language,
|
|
code: data.code
|
|
},
|
|
compile: {
|
|
entrypoint: data.entrypoint
|
|
},
|
|
dryRun: {
|
|
entrypoint: data.entrypoint,
|
|
parameters: data.parameters,
|
|
storage: data.storage
|
|
},
|
|
deploy: {
|
|
entrypoint: data.entrypoint,
|
|
storage: data.storage,
|
|
useTezBridge: false
|
|
},
|
|
evaluateValue: {
|
|
entrypoint: data.entrypoint
|
|
},
|
|
evaluateFunction: {
|
|
entrypoint: data.entrypoint,
|
|
parameters: data.parameters
|
|
}
|
|
}
|
|
};
|
|
}
|
|
}
|