aboutsummaryrefslogtreecommitdiff
path: root/src/fields/ScriptField.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/fields/ScriptField.ts')
-rw-r--r--src/fields/ScriptField.ts28
1 files changed, 12 insertions, 16 deletions
diff --git a/src/fields/ScriptField.ts b/src/fields/ScriptField.ts
index ac46ccf90..d4fed1a1d 100644
--- a/src/fields/ScriptField.ts
+++ b/src/fields/ScriptField.ts
@@ -26,32 +26,28 @@ const optionsSchema = createSimpleSchema({
params: optional(map(primitive()))
});
+const scriptSchema = createSimpleSchema({
+ options: object(optionsSchema),
+ originalScript: true
+});
+
function deserializeScript(script: ScriptField) {
- const comp = CompileScript(script.scriptString, script.options);
+ const comp = CompileScript(script.script.originalScript, script.script.options);
if (!comp.compiled) {
throw new Error("Couldn't compile loaded script");
}
- (script as any)._script = comp;
+ (script as any).script = comp;
}
@Deserializable("script", deserializeScript)
export class ScriptField extends ObjectField {
- protected readonly _script: CompiledScript;
+ @serializable(object(scriptSchema))
+ readonly script: CompiledScript;
constructor(script: CompiledScript) {
super();
- this._script = script;
- }
-
- @serializable(custom(object(optionsSchema).serializer, () => SKIP))
- get options() {
- return this._script && this._script.options;
- }
-
- @serializable(custom(primitive().serializer, () => SKIP))
- get scriptString(): string {
- return this._script && this._script.originalScript;
+ this.script = script;
}
// init(callback: (res: Field) => any) {
@@ -76,7 +72,7 @@ export class ScriptField extends ObjectField {
// }
[Copy](): ObjectField {
- return new ScriptField(this._script);
+ return new ScriptField(this.script);
}
[ToScriptString]() {
@@ -88,7 +84,7 @@ export class ScriptField extends ObjectField {
export class ComputedField extends ScriptField {
@computed
get value() {
- const val = this._script.run({ this: (this[Parent] as any)[SelfProxy] });
+ const val = this.script.run({ this: (this[Parent] as any)[SelfProxy] });
if (val.success) {
return val.result;
}