aboutsummaryrefslogtreecommitdiff
path: root/src/fields/ScriptField.ts
diff options
context:
space:
mode:
authorTyler Schicke <tyler_schicke@brown.edu>2019-06-08 22:58:23 -0400
committerTyler Schicke <tyler_schicke@brown.edu>2019-06-08 22:58:23 -0400
commit6abf829099e4f61f2f557078f645fb9f2aa2414c (patch)
treeff6ddd4329bb394d0da6ea3f4bcbf3d9dc740bb1 /src/fields/ScriptField.ts
parent99ffc8ec1508f05dfb126318b1215a3ee597738f (diff)
Moved ScriptField to new_fields
Diffstat (limited to 'src/fields/ScriptField.ts')
-rw-r--r--src/fields/ScriptField.ts93
1 files changed, 0 insertions, 93 deletions
diff --git a/src/fields/ScriptField.ts b/src/fields/ScriptField.ts
deleted file mode 100644
index d4fed1a1d..000000000
--- a/src/fields/ScriptField.ts
+++ /dev/null
@@ -1,93 +0,0 @@
-import { ObjectField } from "../new_fields/ObjectField";
-import { CompiledScript, CompileScript } from "../client/util/Scripting";
-import { Copy, ToScriptString, Parent, SelfProxy } from "../new_fields/FieldSymbols";
-import { serializable, createSimpleSchema, map, primitive, object, deserialize, PropSchema, custom, SKIP } from "serializr";
-import { Deserializable } from "../client/util/SerializationHelper";
-import { computed } from "mobx";
-
-function optional(propSchema: PropSchema) {
- return custom(value => {
- if (value !== undefined) {
- return propSchema.serializer(value);
- }
- return SKIP;
- }, (jsonValue: any, context: any, oldValue: any, callback: (err: any, result: any) => void) => {
- if (jsonValue !== undefined) {
- return propSchema.deserializer(jsonValue, callback, context, oldValue);
- }
- return SKIP;
- });
-}
-
-const optionsSchema = createSimpleSchema({
- requiredType: true,
- addReturn: true,
- typecheck: true,
- params: optional(map(primitive()))
-});
-
-const scriptSchema = createSimpleSchema({
- options: object(optionsSchema),
- originalScript: true
-});
-
-function deserializeScript(script: ScriptField) {
- 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;
-}
-
-@Deserializable("script", deserializeScript)
-export class ScriptField extends ObjectField {
- @serializable(object(scriptSchema))
- readonly script: CompiledScript;
-
- constructor(script: CompiledScript) {
- super();
-
- this.script = script;
- }
-
- // init(callback: (res: Field) => any) {
- // const options = this.options!;
- // const keys = Object.keys(options.options.capturedIds);
- // Server.GetFields(keys).then(fields => {
- // let captured: { [name: string]: Field } = {};
- // keys.forEach(key => captured[options.options.capturedIds[key]] = fields[key]);
- // const opts: ScriptOptions = {
- // addReturn: options.options.addReturn,
- // params: options.options.params,
- // requiredType: options.options.requiredType,
- // capturedVariables: captured
- // };
- // const script = CompileScript(options.script, opts);
- // if (!script.compiled) {
- // throw new Error("Can't compile script");
- // }
- // this._script = script;
- // callback(this);
- // });
- // }
-
- [Copy](): ObjectField {
- return new ScriptField(this.script);
- }
-
- [ToScriptString]() {
- return "script field";
- }
-}
-
-@Deserializable("computed", deserializeScript)
-export class ComputedField extends ScriptField {
- @computed
- get value() {
- const val = this.script.run({ this: (this[Parent] as any)[SelfProxy] });
- if (val.success) {
- return val.result;
- }
- return undefined;
- }
-} \ No newline at end of file