@n8n/expression-runtime 0.2.0 → 0.4.0

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.
Files changed (192) hide show
  1. package/ARCHITECTURE.md +5 -6
  2. package/LICENSE_EE.md +27 -0
  3. package/README.md +11 -11
  4. package/dist/bundle/runtime.esm.js +45 -0
  5. package/dist/bundle/runtime.esm.js.map +7 -0
  6. package/dist/bundle/runtime.iife.js +45 -0
  7. package/dist/bundle/runtime.iife.js.map +7 -0
  8. package/dist/cjs/bridge/isolated-vm-bridge.d.ts +132 -0
  9. package/dist/cjs/bridge/isolated-vm-bridge.d.ts.map +1 -0
  10. package/dist/cjs/bridge/isolated-vm-bridge.js +500 -0
  11. package/dist/cjs/bridge/isolated-vm-bridge.js.map +1 -0
  12. package/dist/cjs/build.tsbuildinfo +1 -0
  13. package/dist/cjs/evaluator/expression-evaluator.d.ts +23 -0
  14. package/dist/cjs/evaluator/expression-evaluator.d.ts.map +1 -0
  15. package/dist/cjs/evaluator/expression-evaluator.js +87 -0
  16. package/dist/cjs/evaluator/expression-evaluator.js.map +1 -0
  17. package/dist/cjs/extensions/array-extensions.d.ts +34 -0
  18. package/dist/cjs/extensions/array-extensions.d.ts.map +1 -0
  19. package/dist/cjs/extensions/array-extensions.js +632 -0
  20. package/dist/cjs/extensions/array-extensions.js.map +1 -0
  21. package/dist/cjs/extensions/boolean-extensions.d.ts +6 -0
  22. package/dist/cjs/extensions/boolean-extensions.d.ts.map +1 -0
  23. package/dist/cjs/extensions/boolean-extensions.js +49 -0
  24. package/dist/cjs/extensions/boolean-extensions.js.map +1 -0
  25. package/dist/cjs/extensions/date-extensions.d.ts +3 -0
  26. package/dist/cjs/extensions/date-extensions.d.ts.map +1 -0
  27. package/dist/cjs/extensions/date-extensions.js +528 -0
  28. package/dist/cjs/extensions/date-extensions.js.map +1 -0
  29. package/dist/cjs/extensions/expression-extension-error.d.ts +7 -0
  30. package/dist/cjs/extensions/expression-extension-error.d.ts.map +1 -0
  31. package/dist/cjs/extensions/expression-extension-error.js +25 -0
  32. package/dist/cjs/extensions/expression-extension-error.js.map +1 -0
  33. package/dist/cjs/extensions/extend.d.ts +12 -0
  34. package/dist/cjs/extensions/extend.d.ts.map +1 -0
  35. package/dist/cjs/extensions/extend.js +149 -0
  36. package/dist/cjs/extensions/extend.js.map +1 -0
  37. package/dist/cjs/extensions/extensions.d.ts +43 -0
  38. package/dist/cjs/extensions/extensions.d.ts.map +1 -0
  39. package/dist/cjs/extensions/extensions.js +13 -0
  40. package/dist/cjs/extensions/extensions.js.map +1 -0
  41. package/dist/cjs/extensions/number-extensions.d.ts +27 -0
  42. package/dist/cjs/extensions/number-extensions.d.ts.map +1 -0
  43. package/dist/cjs/extensions/number-extensions.js +235 -0
  44. package/dist/cjs/extensions/number-extensions.js.map +1 -0
  45. package/dist/cjs/extensions/object-extensions.d.ts +46 -0
  46. package/dist/cjs/extensions/object-extensions.d.ts.map +1 -0
  47. package/dist/cjs/extensions/object-extensions.js +297 -0
  48. package/dist/cjs/extensions/object-extensions.js.map +1 -0
  49. package/dist/cjs/extensions/string-extensions.d.ts +38 -0
  50. package/dist/cjs/extensions/string-extensions.d.ts.map +1 -0
  51. package/dist/cjs/extensions/string-extensions.js +753 -0
  52. package/dist/cjs/extensions/string-extensions.js.map +1 -0
  53. package/dist/cjs/extensions/utils.d.ts +4 -0
  54. package/dist/cjs/extensions/utils.d.ts.map +1 -0
  55. package/dist/cjs/extensions/utils.js +42 -0
  56. package/dist/cjs/extensions/utils.js.map +1 -0
  57. package/dist/cjs/index.d.ts +7 -0
  58. package/dist/cjs/index.d.ts.map +1 -0
  59. package/dist/cjs/index.js +34 -0
  60. package/dist/cjs/index.js.map +1 -0
  61. package/dist/cjs/runtime/index.d.ts +17 -0
  62. package/dist/cjs/runtime/index.d.ts.map +1 -0
  63. package/dist/cjs/runtime/index.js +35 -0
  64. package/dist/cjs/runtime/index.js.map +1 -0
  65. package/dist/cjs/runtime/lazy-proxy.d.ts +22 -0
  66. package/dist/cjs/runtime/lazy-proxy.d.ts.map +1 -0
  67. package/dist/cjs/runtime/lazy-proxy.js +179 -0
  68. package/dist/cjs/runtime/lazy-proxy.js.map +1 -0
  69. package/dist/cjs/runtime/reset.d.ts +16 -0
  70. package/dist/cjs/runtime/reset.d.ts.map +1 -0
  71. package/dist/cjs/runtime/reset.js +137 -0
  72. package/dist/cjs/runtime/reset.js.map +1 -0
  73. package/dist/cjs/runtime/safe-globals.d.ts +21 -0
  74. package/dist/cjs/runtime/safe-globals.d.ts.map +1 -0
  75. package/dist/cjs/runtime/safe-globals.js +125 -0
  76. package/dist/cjs/runtime/safe-globals.js.map +1 -0
  77. package/dist/{types → cjs/types}/bridge.d.ts +2 -0
  78. package/dist/cjs/types/bridge.d.ts.map +1 -0
  79. package/dist/cjs/types/bridge.js +26 -0
  80. package/dist/cjs/types/bridge.js.map +1 -0
  81. package/dist/{types → cjs/types}/evaluator.d.ts +1 -4
  82. package/dist/cjs/types/evaluator.d.ts.map +1 -0
  83. package/dist/cjs/types/evaluator.js +47 -0
  84. package/dist/cjs/types/evaluator.js.map +1 -0
  85. package/dist/{types → cjs/types}/index.d.ts +2 -2
  86. package/dist/cjs/types/index.d.ts.map +1 -0
  87. package/dist/cjs/types/index.js +30 -0
  88. package/dist/cjs/types/index.js.map +1 -0
  89. package/dist/cjs/types/runtime.d.ts +20 -0
  90. package/dist/cjs/types/runtime.d.ts.map +1 -0
  91. package/dist/cjs/types/runtime.js +39 -0
  92. package/dist/cjs/types/runtime.js.map +1 -0
  93. package/dist/esm/bridge/isolated-vm-bridge.d.ts +132 -0
  94. package/dist/esm/bridge/isolated-vm-bridge.d.ts.map +1 -0
  95. package/dist/esm/bridge/isolated-vm-bridge.js +450 -0
  96. package/dist/esm/bridge/isolated-vm-bridge.js.map +1 -0
  97. package/dist/esm/build.tsbuildinfo +1 -0
  98. package/dist/esm/evaluator/expression-evaluator.d.ts +23 -0
  99. package/dist/esm/evaluator/expression-evaluator.d.ts.map +1 -0
  100. package/dist/esm/evaluator/expression-evaluator.js +73 -0
  101. package/dist/esm/evaluator/expression-evaluator.js.map +1 -0
  102. package/dist/esm/extensions/array-extensions.d.ts +34 -0
  103. package/dist/esm/extensions/array-extensions.d.ts.map +1 -0
  104. package/dist/esm/extensions/array-extensions.js +610 -0
  105. package/dist/esm/extensions/array-extensions.js.map +1 -0
  106. package/dist/esm/extensions/boolean-extensions.d.ts +6 -0
  107. package/dist/esm/extensions/boolean-extensions.d.ts.map +1 -0
  108. package/dist/esm/extensions/boolean-extensions.js +33 -0
  109. package/dist/esm/extensions/boolean-extensions.js.map +1 -0
  110. package/dist/esm/extensions/date-extensions.d.ts +3 -0
  111. package/dist/esm/extensions/date-extensions.d.ts.map +1 -0
  112. package/dist/esm/extensions/date-extensions.js +515 -0
  113. package/dist/esm/extensions/date-extensions.js.map +1 -0
  114. package/dist/esm/extensions/expression-extension-error.d.ts +7 -0
  115. package/dist/esm/extensions/expression-extension-error.d.ts.map +1 -0
  116. package/dist/esm/extensions/expression-extension-error.js +11 -0
  117. package/dist/esm/extensions/expression-extension-error.js.map +1 -0
  118. package/dist/esm/extensions/extend.d.ts +12 -0
  119. package/dist/esm/extensions/extend.d.ts.map +1 -0
  120. package/dist/esm/extensions/extend.js +134 -0
  121. package/dist/esm/extensions/extend.js.map +1 -0
  122. package/dist/esm/extensions/extensions.d.ts +43 -0
  123. package/dist/esm/extensions/extensions.d.ts.map +1 -0
  124. package/dist/esm/extensions/extensions.js +2 -0
  125. package/dist/esm/extensions/extensions.js.map +1 -0
  126. package/dist/esm/extensions/number-extensions.d.ts +27 -0
  127. package/dist/esm/extensions/number-extensions.d.ts.map +1 -0
  128. package/dist/esm/extensions/number-extensions.js +221 -0
  129. package/dist/esm/extensions/number-extensions.js.map +1 -0
  130. package/dist/esm/extensions/object-extensions.d.ts +46 -0
  131. package/dist/esm/extensions/object-extensions.d.ts.map +1 -0
  132. package/dist/esm/extensions/object-extensions.js +277 -0
  133. package/dist/esm/extensions/object-extensions.js.map +1 -0
  134. package/dist/esm/extensions/string-extensions.d.ts +38 -0
  135. package/dist/esm/extensions/string-extensions.d.ts.map +1 -0
  136. package/dist/esm/extensions/string-extensions.js +735 -0
  137. package/dist/esm/extensions/string-extensions.js.map +1 -0
  138. package/dist/esm/extensions/utils.d.ts +4 -0
  139. package/dist/esm/extensions/utils.d.ts.map +1 -0
  140. package/dist/esm/extensions/utils.js +27 -0
  141. package/dist/esm/extensions/utils.js.map +1 -0
  142. package/dist/esm/index.d.ts +7 -0
  143. package/dist/esm/index.d.ts.map +1 -0
  144. package/dist/esm/index.js +10 -0
  145. package/dist/esm/index.js.map +1 -0
  146. package/dist/esm/runtime/index.d.ts +17 -0
  147. package/dist/esm/runtime/index.d.ts.map +1 -0
  148. package/dist/esm/runtime/index.js +23 -0
  149. package/dist/esm/runtime/index.js.map +1 -0
  150. package/dist/esm/runtime/lazy-proxy.d.ts +22 -0
  151. package/dist/esm/runtime/lazy-proxy.d.ts.map +1 -0
  152. package/dist/esm/runtime/lazy-proxy.js +164 -0
  153. package/dist/esm/runtime/lazy-proxy.js.map +1 -0
  154. package/dist/esm/runtime/reset.d.ts +16 -0
  155. package/dist/esm/runtime/reset.d.ts.map +1 -0
  156. package/dist/esm/runtime/reset.js +124 -0
  157. package/dist/esm/runtime/reset.js.map +1 -0
  158. package/dist/esm/runtime/safe-globals.d.ts +21 -0
  159. package/dist/esm/runtime/safe-globals.d.ts.map +1 -0
  160. package/dist/esm/runtime/safe-globals.js +110 -0
  161. package/dist/esm/runtime/safe-globals.js.map +1 -0
  162. package/dist/esm/types/bridge.d.ts +63 -0
  163. package/dist/esm/types/bridge.d.ts.map +1 -0
  164. package/dist/{types → esm/types}/bridge.js +6 -1
  165. package/dist/esm/types/bridge.js.map +1 -0
  166. package/dist/esm/types/evaluator.d.ts +194 -0
  167. package/dist/esm/types/evaluator.d.ts.map +1 -0
  168. package/dist/esm/types/evaluator.js.map +1 -0
  169. package/dist/esm/types/index.d.ts +11 -0
  170. package/dist/esm/types/index.d.ts.map +1 -0
  171. package/dist/{types → esm/types}/index.js +2 -0
  172. package/dist/esm/types/index.js.map +1 -0
  173. package/dist/esm/types/runtime.d.ts +20 -0
  174. package/dist/esm/types/runtime.d.ts.map +1 -0
  175. package/dist/{types → esm/types}/runtime.js +0 -6
  176. package/dist/esm/types/runtime.js.map +1 -0
  177. package/package.json +29 -6
  178. package/dist/build.tsbuildinfo +0 -1
  179. package/dist/index.d.ts +0 -3
  180. package/dist/index.d.ts.map +0 -1
  181. package/dist/index.js +0 -2
  182. package/dist/index.js.map +0 -1
  183. package/dist/types/bridge.d.ts.map +0 -1
  184. package/dist/types/bridge.js.map +0 -1
  185. package/dist/types/evaluator.d.ts.map +0 -1
  186. package/dist/types/evaluator.js.map +0 -1
  187. package/dist/types/index.d.ts.map +0 -1
  188. package/dist/types/index.js.map +0 -1
  189. package/dist/types/runtime.d.ts +0 -122
  190. package/dist/types/runtime.d.ts.map +0 -1
  191. package/dist/types/runtime.js.map +0 -1
  192. /package/dist/{types → esm/types}/evaluator.js +0 -0
@@ -0,0 +1,125 @@
1
+ // ============================================================================
2
+ // Safe Wrappers for Security-Sensitive Globals
3
+ // ============================================================================
4
+ (function (factory) {
5
+ if (typeof module === "object" && typeof module.exports === "object") {
6
+ var v = factory(require, exports);
7
+ if (v !== undefined) module.exports = v;
8
+ }
9
+ else if (typeof define === "function" && define.amd) {
10
+ define(["require", "exports"], factory);
11
+ }
12
+ })(function (require, exports) {
13
+ "use strict";
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ExpressionError = exports.SafeError = exports.SafeObject = void 0;
16
+ exports.__sanitize = __sanitize;
17
+ /**
18
+ * SafeObject - Blocks dangerous Object methods that could lead to RCE
19
+ *
20
+ * Blocked methods:
21
+ * - defineProperty, setPrototypeOf: Prevent prototype pollution
22
+ * - getOwnPropertyDescriptor: Prevent property descriptor manipulation
23
+ * - __defineGetter__, __defineSetter__: Legacy descriptor manipulation
24
+ */
25
+ exports.SafeObject = new Proxy(Object, {
26
+ get(target, prop) {
27
+ // Block dangerous methods (return undefined)
28
+ const blockedMethods = [
29
+ 'defineProperty',
30
+ 'defineProperties',
31
+ 'setPrototypeOf',
32
+ 'getOwnPropertyDescriptor',
33
+ 'getOwnPropertyDescriptors',
34
+ '__defineGetter__',
35
+ '__defineSetter__',
36
+ '__lookupGetter__',
37
+ '__lookupSetter__',
38
+ ];
39
+ if (blockedMethods.includes(prop)) {
40
+ return undefined;
41
+ }
42
+ // Block getPrototypeOf by throwing (more secure than returning undefined)
43
+ if (prop === 'getPrototypeOf') {
44
+ throw new Error('Object.getPrototypeOf is not allowed');
45
+ }
46
+ // Allow other Object methods
47
+ const value = target[prop];
48
+ if (typeof value === 'function') {
49
+ // Use arrow function wrapper to preserve 'this' binding
50
+ return (...args) => value.apply(target, args);
51
+ }
52
+ return value;
53
+ },
54
+ });
55
+ /**
56
+ * SafeError - Blocks stack manipulation methods
57
+ *
58
+ * Blocked properties:
59
+ * - stackTraceLimit, captureStackTrace, prepareStackTrace: Prevent stack manipulation attacks
60
+ */
61
+ exports.SafeError = new Proxy(Error, {
62
+ get(target, prop) {
63
+ // Block stack manipulation (return undefined)
64
+ const blockedProps = ['stackTraceLimit', 'captureStackTrace', 'prepareStackTrace'];
65
+ if (blockedProps.includes(prop)) {
66
+ return undefined;
67
+ }
68
+ // Block dangerous methods
69
+ const blockedMethods = ['__defineGetter__', '__defineSetter__'];
70
+ if (blockedMethods.includes(prop)) {
71
+ return undefined;
72
+ }
73
+ const value = target[prop];
74
+ if (typeof value === 'function') {
75
+ return (...args) => value.apply(target, args);
76
+ }
77
+ return value;
78
+ },
79
+ set(target, prop, value) {
80
+ // Block setting prepareStackTrace
81
+ if (prop === 'prepareStackTrace') {
82
+ return false;
83
+ }
84
+ target[prop] = value;
85
+ return true;
86
+ },
87
+ });
88
+ // ============================================================================
89
+ // ExpressionError - used by tournament-generated error handlers
90
+ // ============================================================================
91
+ class ExpressionError extends Error {
92
+ constructor(message) {
93
+ super(message);
94
+ this.name = 'ExpressionError';
95
+ }
96
+ }
97
+ exports.ExpressionError = ExpressionError;
98
+ // ============================================================================
99
+ // Runtime sanitizer for dynamic property access
100
+ // Generated by PrototypeSanitizer: obj[expr] → obj[this.__sanitize(expr)]
101
+ // Must match the blocklist in packages/workflow/src/expression-sandboxing.ts
102
+ // ============================================================================
103
+ const unsafeObjectProperties = new Set([
104
+ '__proto__',
105
+ 'prototype',
106
+ 'constructor',
107
+ '__defineGetter__',
108
+ '__defineSetter__',
109
+ '__lookupGetter__',
110
+ '__lookupSetter__',
111
+ 'toString',
112
+ 'valueOf',
113
+ 'toLocaleString',
114
+ 'hasOwnProperty',
115
+ 'isPrototypeOf',
116
+ 'propertyIsEnumerable',
117
+ ]);
118
+ function __sanitize(value) {
119
+ if (typeof value === 'string' && unsafeObjectProperties.has(value)) {
120
+ throw new ExpressionError(`Cannot access "${value}" due to security concerns`);
121
+ }
122
+ return value;
123
+ }
124
+ });
125
+ //# sourceMappingURL=safe-globals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-globals.js","sourceRoot":"","sources":["../../../src/runtime/safe-globals.ts"],"names":[],"mappings":"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"}
@@ -58,4 +58,6 @@ export interface BridgeConfig {
58
58
  */
59
59
  debug?: boolean;
60
60
  }
61
+ /** Default values for BridgeConfig. Bridge implementations should use this as their baseline. */
62
+ export declare const DEFAULT_BRIDGE_CONFIG: Required<BridgeConfig>;
61
63
  //# sourceMappingURL=bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/types/bridge.ts"],"names":[],"mappings":"AAOA;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC7B;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;IAE9D;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,iGAAiG;AACjG,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,YAAY,CAIxD,CAAC"}
@@ -0,0 +1,26 @@
1
+ // ============================================================================
2
+ // Phase 1.1: Bridge Interface (CORE - IMPLEMENT FIRST)
3
+ //
4
+ // This is the main interface all environments must implement.
5
+ // Start here for CLI/backend (IsolatedVmBridge) or frontend (WebWorkerBridge).
6
+ // ============================================================================
7
+ (function (factory) {
8
+ if (typeof module === "object" && typeof module.exports === "object") {
9
+ var v = factory(require, exports);
10
+ if (v !== undefined) module.exports = v;
11
+ }
12
+ else if (typeof define === "function" && define.amd) {
13
+ define(["require", "exports"], factory);
14
+ }
15
+ })(function (require, exports) {
16
+ "use strict";
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.DEFAULT_BRIDGE_CONFIG = void 0;
19
+ /** Default values for BridgeConfig. Bridge implementations should use this as their baseline. */
20
+ exports.DEFAULT_BRIDGE_CONFIG = {
21
+ memoryLimit: 128,
22
+ timeout: 5000,
23
+ debug: false,
24
+ };
25
+ });
26
+ //# sourceMappingURL=bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../src/types/bridge.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,uDAAuD;AACvD,EAAE;AACF,8DAA8D;AAC9D,+EAA+E;AAC/E,+EAA+E;;;;;;;;;;;;;IAqE/E,iGAAiG;IACpF,QAAA,qBAAqB,GAA2B;QAC5D,WAAW,EAAE,GAAG;QAChB,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,KAAK;KACZ,CAAC"}
@@ -1,8 +1,5 @@
1
+ import type { TournamentHooks } from '@n8n/tournament';
1
2
  import type { RuntimeBridge } from './bridge';
2
- export interface TournamentHooks {
3
- before?: Array<(ast: unknown) => unknown>;
4
- after?: Array<(ast: unknown) => unknown>;
5
- }
6
3
  /**
7
4
  * Configuration for ExpressionEvaluator.
8
5
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../../src/types/evaluator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SyntaxError = exports.SecurityViolationError = exports.TimeoutError = exports.MemoryLimitError = exports.ExpressionError = void 0;
13
+ // ============================================================================
14
+ // Phase 1.4: Error Handling (IMPLEMENT WITH EVALUATOR)
15
+ //
16
+ // These error types provide structured error information.
17
+ // Start with basic Error, add these types in Phase 1.4.
18
+ // ============================================================================
19
+ /**
20
+ * Expression evaluation error.
21
+ */
22
+ class ExpressionError extends Error {
23
+ context;
24
+ constructor(message, context) {
25
+ super(message);
26
+ this.context = context;
27
+ this.name = 'ExpressionError';
28
+ }
29
+ }
30
+ exports.ExpressionError = ExpressionError;
31
+ /**
32
+ * Specific error types.
33
+ */
34
+ class MemoryLimitError extends ExpressionError {
35
+ }
36
+ exports.MemoryLimitError = MemoryLimitError;
37
+ class TimeoutError extends ExpressionError {
38
+ }
39
+ exports.TimeoutError = TimeoutError;
40
+ class SecurityViolationError extends ExpressionError {
41
+ }
42
+ exports.SecurityViolationError = SecurityViolationError;
43
+ class SyntaxError extends ExpressionError {
44
+ }
45
+ exports.SyntaxError = SyntaxError;
46
+ });
47
+ //# sourceMappingURL=evaluator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../../src/types/evaluator.ts"],"names":[],"mappings":";;;;;;;;;;;;IA8MA,+EAA+E;IAC/E,uDAAuD;IACvD,EAAE;IACF,0DAA0D;IAC1D,wDAAwD;IACxD,+EAA+E;IAE/E;;OAEG;IACH,MAAa,eAAgB,SAAQ,KAAK;QAGjC;QAFR,YACC,OAAe,EACR,OAKN;YAED,KAAK,CAAC,OAAO,CAAC,CAAC;YAPR,YAAO,GAAP,OAAO,CAKb;YAGD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC/B,CAAC;KACD;IAbD,0CAaC;IAED;;OAEG;IACH,MAAa,gBAAiB,SAAQ,eAAe;KAAG;IAAxD,4CAAwD;IACxD,MAAa,YAAa,SAAQ,eAAe;KAAG;IAApD,oCAAoD;IACpD,MAAa,sBAAuB,SAAQ,eAAe;KAAG;IAA9D,wDAA8D;IAC9D,MAAa,WAAY,SAAQ,eAAe;KAAG;IAAnD,kCAAmD"}
@@ -4,8 +4,8 @@
4
4
  * This module exports all TypeScript interfaces and types for the expression runtime.
5
5
  */
6
6
  export type { RuntimeBridge, BridgeConfig } from './bridge';
7
- export type { RuntimeHostInterface, RuntimeGlobals, RuntimeConfig, LazyProxyConfig, } from './runtime';
7
+ export { DEFAULT_BRIDGE_CONFIG } from './bridge';
8
8
  export { RuntimeError } from './runtime';
9
- export type { EvaluatorConfig, IExpressionEvaluator, WorkflowData, EvaluateOptions, ObservabilityProvider, MetricsAPI, TracesAPI, Span, LogsAPI, TournamentHooks, } from './evaluator';
9
+ export type { EvaluatorConfig, IExpressionEvaluator, WorkflowData, EvaluateOptions, ObservabilityProvider, MetricsAPI, TracesAPI, Span, LogsAPI, } from './evaluator';
10
10
  export { ExpressionError, MemoryLimitError, TimeoutError, SecurityViolationError, SyntaxError, } from './evaluator';
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGjD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,YAAY,EACX,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,UAAU,EACV,SAAS,EACT,IAAI,EACJ,OAAO,GACP,MAAM,aAAa,CAAC;AAErB,OAAO,EACN,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,WAAW,GACX,MAAM,aAAa,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Expression Runtime Types
3
+ *
4
+ * This module exports all TypeScript interfaces and types for the expression runtime.
5
+ */
6
+ (function (factory) {
7
+ if (typeof module === "object" && typeof module.exports === "object") {
8
+ var v = factory(require, exports);
9
+ if (v !== undefined) module.exports = v;
10
+ }
11
+ else if (typeof define === "function" && define.amd) {
12
+ define(["require", "exports", "./bridge", "./runtime", "./evaluator"], factory);
13
+ }
14
+ })(function (require, exports) {
15
+ "use strict";
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.SyntaxError = exports.SecurityViolationError = exports.TimeoutError = exports.MemoryLimitError = exports.ExpressionError = exports.RuntimeError = exports.DEFAULT_BRIDGE_CONFIG = void 0;
18
+ var bridge_1 = require("./bridge");
19
+ Object.defineProperty(exports, "DEFAULT_BRIDGE_CONFIG", { enumerable: true, get: function () { return bridge_1.DEFAULT_BRIDGE_CONFIG; } });
20
+ // Runtime types
21
+ var runtime_1 = require("./runtime");
22
+ Object.defineProperty(exports, "RuntimeError", { enumerable: true, get: function () { return runtime_1.RuntimeError; } });
23
+ var evaluator_1 = require("./evaluator");
24
+ Object.defineProperty(exports, "ExpressionError", { enumerable: true, get: function () { return evaluator_1.ExpressionError; } });
25
+ Object.defineProperty(exports, "MemoryLimitError", { enumerable: true, get: function () { return evaluator_1.MemoryLimitError; } });
26
+ Object.defineProperty(exports, "TimeoutError", { enumerable: true, get: function () { return evaluator_1.TimeoutError; } });
27
+ Object.defineProperty(exports, "SecurityViolationError", { enumerable: true, get: function () { return evaluator_1.SecurityViolationError; } });
28
+ Object.defineProperty(exports, "SyntaxError", { enumerable: true, get: function () { return evaluator_1.SyntaxError; } });
29
+ });
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;;;;;;;;;;;;IAIH,mCAAiD;IAAxC,+GAAA,qBAAqB,OAAA;IAE9B,gBAAgB;IAChB,qCAAyC;IAAhC,uGAAA,YAAY,OAAA;IAerB,yCAMqB;IALpB,4GAAA,eAAe,OAAA;IACf,6GAAA,gBAAgB,OAAA;IAChB,yGAAA,YAAY,OAAA;IACZ,mHAAA,sBAAsB,OAAA;IACtB,wGAAA,WAAW,OAAA"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Runtime error thrown inside isolated context.
3
+ *
4
+ * These errors are thrown by the runtime code when something goes wrong during
5
+ * expression evaluation. The bridge must catch these and translate them to the
6
+ * appropriate ExpressionError subclass (see evaluator.ts).
7
+ *
8
+ * Translation mapping:
9
+ * - code: 'MEMORY_LIMIT' → MemoryLimitError
10
+ * - code: 'TIMEOUT' → TimeoutError
11
+ * - code: 'SECURITY_VIOLATION' → SecurityViolationError
12
+ * - code: 'SYNTAX_ERROR' → SyntaxError
13
+ * - other → ExpressionError
14
+ */
15
+ export declare class RuntimeError extends Error {
16
+ code: string;
17
+ details?: Record<string, unknown> | undefined;
18
+ constructor(message: string, code: string, details?: Record<string, unknown> | undefined);
19
+ }
20
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/types/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAa,SAAQ,KAAK;IAG9B,IAAI,EAAE,MAAM;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFxC,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAKzC"}
@@ -0,0 +1,39 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RuntimeError = void 0;
13
+ /**
14
+ * Runtime error thrown inside isolated context.
15
+ *
16
+ * These errors are thrown by the runtime code when something goes wrong during
17
+ * expression evaluation. The bridge must catch these and translate them to the
18
+ * appropriate ExpressionError subclass (see evaluator.ts).
19
+ *
20
+ * Translation mapping:
21
+ * - code: 'MEMORY_LIMIT' → MemoryLimitError
22
+ * - code: 'TIMEOUT' → TimeoutError
23
+ * - code: 'SECURITY_VIOLATION' → SecurityViolationError
24
+ * - code: 'SYNTAX_ERROR' → SyntaxError
25
+ * - other → ExpressionError
26
+ */
27
+ class RuntimeError extends Error {
28
+ code;
29
+ details;
30
+ constructor(message, code, details) {
31
+ super(message);
32
+ this.code = code;
33
+ this.details = details;
34
+ this.name = 'RuntimeError';
35
+ }
36
+ }
37
+ exports.RuntimeError = RuntimeError;
38
+ });
39
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/types/runtime.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA;;;;;;;;;;;;;OAaG;IACH,MAAa,YAAa,SAAQ,KAAK;QAG9B;QACA;QAHR,YACC,OAAe,EACR,IAAY,EACZ,OAAiC;YAExC,KAAK,CAAC,OAAO,CAAC,CAAC;YAHR,SAAI,GAAJ,IAAI,CAAQ;YACZ,YAAO,GAAP,OAAO,CAA0B;YAGxC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC5B,CAAC;KACD;IATD,oCASC"}
@@ -0,0 +1,132 @@
1
+ import type { RuntimeBridge, BridgeConfig } from '../types';
2
+ /**
3
+ * IsolatedVmBridge - Runtime bridge using isolated-vm for secure expression evaluation.
4
+ *
5
+ * This bridge creates a V8 isolate with:
6
+ * - Hard memory limit (128MB default)
7
+ * - No access to Node.js APIs
8
+ * - Timeout enforcement
9
+ * - Complete isolation from host process
10
+ *
11
+ * Context reuse pattern: Create isolate/context once, reset state between evaluations.
12
+ */
13
+ export declare class IsolatedVmBridge implements RuntimeBridge {
14
+ private isolate;
15
+ private context?;
16
+ private initialized;
17
+ private disposed;
18
+ private config;
19
+ private scriptCache;
20
+ private valueAtPathRef?;
21
+ private arrayElementRef?;
22
+ private callFunctionRef?;
23
+ constructor(config?: BridgeConfig);
24
+ /**
25
+ * Initialize the isolate and create execution context.
26
+ *
27
+ * Steps:
28
+ * 1. Create context
29
+ * 2. Set up basic globals (global reference)
30
+ * 3. Load runtime bundle (DateTime, extend, proxy system)
31
+ * 4. Verify proxy system
32
+ *
33
+ * Must be called before execute().
34
+ */
35
+ initialize(): Promise<void>;
36
+ /**
37
+ * Load runtime bundle into the isolate.
38
+ *
39
+ * The runtime bundle includes:
40
+ * - DateTime, extend, extendOptional (expression engine globals)
41
+ * - SafeObject and SafeError wrappers
42
+ * - createDeepLazyProxy function
43
+ * - __data object initialization
44
+ *
45
+ * @private
46
+ * @throws {Error} If context not initialized or bundle loading fails
47
+ */
48
+ private loadVendorLibraries;
49
+ /**
50
+ * Verify the proxy system loaded correctly.
51
+ *
52
+ * The proxy system is loaded as part of the runtime bundle in loadVendorLibraries().
53
+ * This method verifies all required components are available.
54
+ *
55
+ * @private
56
+ * @throws {Error} If context not initialized or proxy system verification fails
57
+ */
58
+ private verifyProxySystem;
59
+ /**
60
+ * Inject the E() error handler into the isolate context.
61
+ *
62
+ * Tournament wraps expressions with try-catch that calls E(error, this).
63
+ * This handler:
64
+ * - Re-throws security violations from __sanitize
65
+ * - Swallows TypeErrors (failed attack attempts return undefined)
66
+ * - Re-throws all other errors
67
+ *
68
+ * @private
69
+ * @throws {Error} If context not initialized
70
+ */
71
+ private injectErrorHandler;
72
+ /**
73
+ * Reset data proxies in the isolate context.
74
+ *
75
+ * This method should be called before each execute() to:
76
+ * 1. Clear proxy caches from previous evaluations
77
+ * 2. Initialize fresh workflow data references
78
+ * 3. Expose workflow properties to globalThis
79
+ *
80
+ * The reset function runs in the isolate and calls back to the host
81
+ * via ivm.Reference callbacks to fetch workflow data.
82
+ *
83
+ * @private
84
+ * @throws {Error} If context not initialized or reset fails
85
+ */
86
+ private resetDataProxies;
87
+ /**
88
+ * Register callback functions for cross-isolate communication.
89
+ *
90
+ * Creates three ivm.Reference callbacks that the runtime bundle uses
91
+ * to fetch data from the host process:
92
+ *
93
+ * - __getValueAtPath: Returns metadata or primitive for a property path
94
+ * - __getArrayElement: Returns individual array elements
95
+ * - __callFunctionAtPath: Executes functions in host context
96
+ *
97
+ * These callbacks are called synchronously from isolate proxy traps.
98
+ *
99
+ * @param data - Current workflow data to use for callback responses
100
+ * @private
101
+ */
102
+ private registerCallbacks;
103
+ /**
104
+ * Execute JavaScript code in the isolated context.
105
+ *
106
+ * Flow:
107
+ * 1. Register callbacks as ivm.Reference for cross-isolate communication
108
+ * 2. Call resetDataProxies() to initialize workflow data proxies
109
+ * 3. Compile script (with caching for performance)
110
+ * 4. Execute with timeout enforcement
111
+ * 5. Return result (copied from isolate)
112
+ *
113
+ * @param code - JavaScript expression to evaluate
114
+ * @param data - Workflow data (e.g., { $json: {...}, $runIndex: 0 })
115
+ * @returns Result of the expression
116
+ * @throws {Error} If bridge not initialized or execution fails
117
+ */
118
+ execute(code: string, data: Record<string, unknown>): unknown;
119
+ /**
120
+ * Dispose of the isolate and free resources.
121
+ *
122
+ * After disposal, the bridge cannot be used again.
123
+ */
124
+ dispose(): Promise<void>;
125
+ /**
126
+ * Check if the bridge has been disposed.
127
+ *
128
+ * @returns true if disposed, false otherwise
129
+ */
130
+ isDisposed(): boolean;
131
+ }
132
+ //# sourceMappingURL=isolated-vm-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isolated-vm-bridge.d.ts","sourceRoot":"","sources":["../../../src/bridge/isolated-vm-bridge.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA0B5D;;;;;;;;;;GAUG;AACH,qBAAa,gBAAiB,YAAW,aAAa;IACrD,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAyB;IAIvC,OAAO,CAAC,WAAW,CAAiC;IAIpD,OAAO,CAAC,cAAc,CAAC,CAAgB;IACvC,OAAO,CAAC,eAAe,CAAC,CAAgB;IACxC,OAAO,CAAC,eAAe,CAAC,CAAgB;gBAE5B,MAAM,GAAE,YAAiB;IAWrC;;;;;;;;;;OAUG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCjC;;;;;;;;;;;OAWG;YACW,mBAAmB;IAoCjC;;;;;;;;OAQG;YACW,iBAAiB;IA+B/B;;;;;;;;;;;OAWG;YACW,kBAAkB;IA0BhC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,gBAAgB;IAmBxB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,iBAAiB;IAiIzB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;IAsD7D;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB9B;;;;OAIG;IACH,UAAU,IAAI,OAAO;CAGrB"}