stentor-conditional 1.56.118 → 1.56.119

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,9 @@
1
+ ### stentor-conditional
2
+
3
+ Conditionals are objects with key `conditions` that are strings with simple expressions.
4
+
5
+ The conditional determiner will take an array of conditionals and evaluate each condition and return an array of all the conditionals that returned true.
6
+
7
+ ### VM
8
+
9
+ By default, it uses the built-in Node VM but if you install vm2 or isolated-vm, it will then prefer that as your VM environment.
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ConditionalDeterminer = void 0;
4
4
  /*! Copyright (c) 2020, XAPPmedia */
5
5
  const stentor_logger_1 = require("stentor-logger");
6
- const vm2_1 = require("vm2");
6
+ const getVM_1 = require("./getVM");
7
7
  /**
8
8
  * ConditionalDeterminer is first configured with a set of conditional
9
9
  * checks it can perform and then determines which is the best match.
@@ -50,7 +50,7 @@ class ConditionalDeterminer {
50
50
  }
51
51
  });
52
52
  }
53
- const vm = new vm2_1.VM({
53
+ const vm = (0, getVM_1.getVM)({
54
54
  timeout: this.timeout,
55
55
  sandbox: Object.assign({}, sandboxFunctions)
56
56
  });
@@ -59,7 +59,7 @@ class ConditionalDeterminer {
59
59
  result = vm.run(conditional.conditions);
60
60
  }
61
61
  catch (e) {
62
- (0, stentor_logger_1.log)().error(`Error evaluating conditions "${conditional.conditions}": ${e}`);
62
+ (0, stentor_logger_1.log)().error(`${vm.type}|Error evaluating conditions "${conditional.conditions}": ${e}`);
63
63
  result = false;
64
64
  }
65
65
  // It should be a boolean but need to double check
@@ -1 +1 @@
1
- {"version":3,"file":"ConditionalDeterminer.js","sourceRoot":"","sources":["../src/ConditionalDeterminer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConditionalDeterminer.js","sourceRoot":"","sources":["../src/ConditionalDeterminer.ts"],"names":[],"mappings":"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"}
package/lib/getVM.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ /*! Copyright (c) 2022, XAPP AI */
2
+ export interface VMable {
3
+ run(code: string): boolean;
4
+ type: string;
5
+ }
6
+ export declare type SandboxFunctions = {
7
+ [name: string]: ((input: any) => boolean | string | number);
8
+ };
9
+ export interface VMProps {
10
+ timeout: number;
11
+ sandbox: SandboxFunctions;
12
+ }
13
+ /**
14
+ * Returns a VM, defaults to Node's VM.
15
+ *
16
+ * @param props
17
+ * @returns
18
+ */
19
+ export declare function getVM(props: VMProps): VMable;
package/lib/getVM.js ADDED
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ /*! Copyright (c) 2022, XAPP AI */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.getVM = void 0;
5
+ const node_vm_1 = require("node:vm");
6
+ /**
7
+ * Returns a VM, defaults to Node's VM.
8
+ *
9
+ * @param props
10
+ * @returns
11
+ */
12
+ function getVM(props) {
13
+ let vm = {
14
+ run: (code) => {
15
+ const context = (0, node_vm_1.createContext)(props.sandbox);
16
+ return (0, node_vm_1.runInNewContext)(code, context);
17
+ },
18
+ type: "VM"
19
+ };
20
+ if (!process.env.SKIP_VM2) {
21
+ try {
22
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
23
+ const { VM } = require('vm2');
24
+ vm = new VM(props);
25
+ vm.type = "VM2";
26
+ }
27
+ catch (e) {
28
+ // vm2 doesn't exist
29
+ }
30
+ }
31
+ if (!process.env.SKIP_IVM) {
32
+ try {
33
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
34
+ const ivm = require('isolated-vm');
35
+ const isolate = new ivm.Isolate({ memoryLimit: 128 });
36
+ vm = {
37
+ run: (code) => {
38
+ const context = isolate.createContextSync();
39
+ const jail = context.global;
40
+ Object.keys(props.sandbox).forEach((fnc) => {
41
+ const value = props.sandbox[fnc];
42
+ jail.setSync(fnc, (...args) => {
43
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
44
+ // @ts-ignore
45
+ return value(...args);
46
+ });
47
+ });
48
+ return context.evalSync(code);
49
+ },
50
+ type: "IVM"
51
+ };
52
+ }
53
+ catch (e) {
54
+ }
55
+ }
56
+ return vm;
57
+ }
58
+ exports.getVM = getVM;
59
+ //# sourceMappingURL=getVM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getVM.js","sourceRoot":"","sources":["../src/getVM.ts"],"names":[],"mappings":";AAAA,kCAAkC;;;AAElC,qCAAyD;AAezD;;;;;GAKG;AACH,SAAgB,KAAK,CAAC,KAAc;IAEhC,IAAI,EAAE,GAAW;QACb,GAAG,EAAE,CAAC,IAAY,EAAW,EAAE;YAC3B,MAAM,OAAO,GAAG,IAAA,uBAAa,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,IAAA,yBAAe,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,EAAE,IAAI;KACb,CAAA;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;QACvB,IAAI;YACA,8DAA8D;YAC9D,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAC9B,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;YACnB,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC;SACnB;QAAC,OAAO,CAAC,EAAE;YACR,oBAAoB;SACvB;KACJ;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;QACvB,IAAI;YACA,8DAA8D;YAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YACtD,EAAE,GAAG;gBACD,GAAG,EAAE,CAAC,IAAY,EAAW,EAAE;oBAE3B,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;oBAE5C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;oBAE5B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;wBACvC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;wBACjC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,IAAS,EAAE,EAAE;4BAC/B,6DAA6D;4BAC7D,aAAa;4BACb,OAAO,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;wBAC1B,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBAEH,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAClC,CAAC;gBACD,IAAI,EAAE,KAAK;aACd,CAAA;SAEJ;QAAC,OAAO,CAAC,EAAE;SAEX;KACJ;IAED,OAAO,EAAE,CAAC;AAEd,CAAC;AAtDD,sBAsDC"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "1.56.118",
7
+ "version": "1.56.119",
8
8
  "description": "Conditionals for 📣 stentor",
9
9
  "types": "lib/index",
10
10
  "typings": "lib/index",
@@ -19,12 +19,17 @@
19
19
  "@types/chai": "4.3.3",
20
20
  "@xapp/config": "0.2.3",
21
21
  "chai": "4.3.6",
22
+ "isolated-vm": "4.4.2",
22
23
  "mocha": "9.2.2",
23
24
  "stentor-models": "1.56.118",
24
- "typescript": "4.8.4"
25
+ "typescript": "4.8.4",
26
+ "vm2": "3.9.11"
25
27
  },
26
28
  "dependencies": {
27
- "stentor-logger": "1.56.118",
29
+ "stentor-logger": "1.56.118"
30
+ },
31
+ "optionalDependencies": {
32
+ "isolated-vm": "4.4.2",
28
33
  "vm2": "3.9.11"
29
34
  },
30
35
  "peerDependencies": {
@@ -35,5 +40,5 @@
35
40
  "clean": "rm -rf ./lib/*",
36
41
  "test": "mocha --recursive -r ts-node/register \"./src/**/*.test.ts\""
37
42
  },
38
- "gitHead": "36aadd5900f3ea56021fcfe1f65ff9a09f4a6c21"
43
+ "gitHead": "218f5238be6db31d0f89819ec65fc726b92c09a3"
39
44
  }