@n8n/expression-runtime 0.4.0 → 0.6.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 (121) hide show
  1. package/dist/bundle/runtime.esm.js +17 -17
  2. package/dist/bundle/runtime.esm.js.map +4 -4
  3. package/dist/bundle/runtime.iife.js +17 -17
  4. package/dist/bundle/runtime.iife.js.map +4 -4
  5. package/dist/cjs/bridge/isolated-vm-bridge.d.ts +3 -2
  6. package/dist/cjs/bridge/isolated-vm-bridge.d.ts.map +1 -1
  7. package/dist/cjs/bridge/isolated-vm-bridge.js +54 -21
  8. package/dist/cjs/bridge/isolated-vm-bridge.js.map +1 -1
  9. package/dist/cjs/build.tsbuildinfo +1 -1
  10. package/dist/cjs/evaluator/expression-evaluator.d.ts +1 -1
  11. package/dist/cjs/evaluator/expression-evaluator.d.ts.map +1 -1
  12. package/dist/cjs/evaluator/expression-evaluator.js +4 -2
  13. package/dist/cjs/evaluator/expression-evaluator.js.map +1 -1
  14. package/dist/cjs/extensions/array-extensions.d.ts.map +1 -1
  15. package/dist/cjs/extensions/array-extensions.js +7 -2
  16. package/dist/cjs/extensions/array-extensions.js.map +1 -1
  17. package/dist/cjs/extensions/extend.d.ts.map +1 -1
  18. package/dist/cjs/extensions/extend.js +29 -0
  19. package/dist/cjs/extensions/extend.js.map +1 -1
  20. package/dist/cjs/extensions/function-extensions.d.ts +28 -0
  21. package/dist/cjs/extensions/function-extensions.d.ts.map +1 -0
  22. package/dist/cjs/extensions/function-extensions.js +92 -0
  23. package/dist/cjs/extensions/function-extensions.js.map +1 -0
  24. package/dist/cjs/extensions/number-extensions.d.ts.map +1 -1
  25. package/dist/cjs/extensions/number-extensions.js +10 -1
  26. package/dist/cjs/extensions/number-extensions.js.map +1 -1
  27. package/dist/cjs/extensions/object-extensions.d.ts.map +1 -1
  28. package/dist/cjs/extensions/object-extensions.js +9 -1
  29. package/dist/cjs/extensions/object-extensions.js.map +1 -1
  30. package/dist/cjs/extensions/string-extensions.d.ts.map +1 -1
  31. package/dist/cjs/extensions/string-extensions.js +41 -4
  32. package/dist/cjs/extensions/string-extensions.js.map +1 -1
  33. package/dist/cjs/index.d.ts +1 -1
  34. package/dist/cjs/index.d.ts.map +1 -1
  35. package/dist/cjs/index.js +2 -1
  36. package/dist/cjs/index.js.map +1 -1
  37. package/dist/cjs/runtime/index.d.ts +17 -0
  38. package/dist/cjs/runtime/index.d.ts.map +1 -1
  39. package/dist/cjs/runtime/index.js +5 -1
  40. package/dist/cjs/runtime/index.js.map +1 -1
  41. package/dist/cjs/runtime/lazy-proxy.d.ts.map +1 -1
  42. package/dist/cjs/runtime/lazy-proxy.js +9 -0
  43. package/dist/cjs/runtime/lazy-proxy.js.map +1 -1
  44. package/dist/cjs/runtime/reset.d.ts +1 -1
  45. package/dist/cjs/runtime/reset.d.ts.map +1 -1
  46. package/dist/cjs/runtime/reset.js +158 -4
  47. package/dist/cjs/runtime/reset.js.map +1 -1
  48. package/dist/cjs/runtime/safe-globals.d.ts +6 -4
  49. package/dist/cjs/runtime/safe-globals.d.ts.map +1 -1
  50. package/dist/cjs/runtime/safe-globals.js +47 -12
  51. package/dist/cjs/runtime/safe-globals.js.map +1 -1
  52. package/dist/cjs/runtime/serialize.d.ts +19 -0
  53. package/dist/cjs/runtime/serialize.d.ts.map +1 -0
  54. package/dist/cjs/runtime/serialize.js +67 -0
  55. package/dist/cjs/runtime/serialize.js.map +1 -0
  56. package/dist/cjs/types/bridge.d.ts +9 -1
  57. package/dist/cjs/types/bridge.d.ts.map +1 -1
  58. package/dist/cjs/types/evaluator.d.ts +5 -3
  59. package/dist/cjs/types/evaluator.d.ts.map +1 -1
  60. package/dist/cjs/types/evaluator.js.map +1 -1
  61. package/dist/cjs/types/index.d.ts +1 -1
  62. package/dist/cjs/types/index.d.ts.map +1 -1
  63. package/dist/esm/bridge/isolated-vm-bridge.d.ts +3 -2
  64. package/dist/esm/bridge/isolated-vm-bridge.d.ts.map +1 -1
  65. package/dist/esm/bridge/isolated-vm-bridge.js +53 -17
  66. package/dist/esm/bridge/isolated-vm-bridge.js.map +1 -1
  67. package/dist/esm/build.tsbuildinfo +1 -1
  68. package/dist/esm/evaluator/expression-evaluator.d.ts +1 -1
  69. package/dist/esm/evaluator/expression-evaluator.d.ts.map +1 -1
  70. package/dist/esm/evaluator/expression-evaluator.js +4 -2
  71. package/dist/esm/evaluator/expression-evaluator.js.map +1 -1
  72. package/dist/esm/extensions/array-extensions.d.ts.map +1 -1
  73. package/dist/esm/extensions/array-extensions.js +6 -1
  74. package/dist/esm/extensions/array-extensions.js.map +1 -1
  75. package/dist/esm/extensions/extend.d.ts.map +1 -1
  76. package/dist/esm/extensions/extend.js +29 -0
  77. package/dist/esm/extensions/extend.js.map +1 -1
  78. package/dist/esm/extensions/function-extensions.d.ts +28 -0
  79. package/dist/esm/extensions/function-extensions.d.ts.map +1 -0
  80. package/dist/esm/extensions/function-extensions.js +79 -0
  81. package/dist/esm/extensions/function-extensions.js.map +1 -0
  82. package/dist/esm/extensions/number-extensions.d.ts.map +1 -1
  83. package/dist/esm/extensions/number-extensions.js +10 -1
  84. package/dist/esm/extensions/number-extensions.js.map +1 -1
  85. package/dist/esm/extensions/object-extensions.d.ts.map +1 -1
  86. package/dist/esm/extensions/object-extensions.js +9 -1
  87. package/dist/esm/extensions/object-extensions.js.map +1 -1
  88. package/dist/esm/extensions/string-extensions.d.ts.map +1 -1
  89. package/dist/esm/extensions/string-extensions.js +41 -4
  90. package/dist/esm/extensions/string-extensions.js.map +1 -1
  91. package/dist/esm/index.d.ts +1 -1
  92. package/dist/esm/index.d.ts.map +1 -1
  93. package/dist/esm/index.js +2 -1
  94. package/dist/esm/index.js.map +1 -1
  95. package/dist/esm/runtime/index.d.ts +17 -0
  96. package/dist/esm/runtime/index.d.ts.map +1 -1
  97. package/dist/esm/runtime/index.js +5 -1
  98. package/dist/esm/runtime/index.js.map +1 -1
  99. package/dist/esm/runtime/lazy-proxy.d.ts.map +1 -1
  100. package/dist/esm/runtime/lazy-proxy.js +9 -0
  101. package/dist/esm/runtime/lazy-proxy.js.map +1 -1
  102. package/dist/esm/runtime/reset.d.ts +1 -1
  103. package/dist/esm/runtime/reset.d.ts.map +1 -1
  104. package/dist/esm/runtime/reset.js +158 -4
  105. package/dist/esm/runtime/reset.js.map +1 -1
  106. package/dist/esm/runtime/safe-globals.d.ts +6 -4
  107. package/dist/esm/runtime/safe-globals.d.ts.map +1 -1
  108. package/dist/esm/runtime/safe-globals.js +46 -12
  109. package/dist/esm/runtime/safe-globals.js.map +1 -1
  110. package/dist/esm/runtime/serialize.d.ts +19 -0
  111. package/dist/esm/runtime/serialize.d.ts.map +1 -0
  112. package/dist/esm/runtime/serialize.js +54 -0
  113. package/dist/esm/runtime/serialize.js.map +1 -0
  114. package/dist/esm/types/bridge.d.ts +9 -1
  115. package/dist/esm/types/bridge.d.ts.map +1 -1
  116. package/dist/esm/types/evaluator.d.ts +5 -3
  117. package/dist/esm/types/evaluator.d.ts.map +1 -1
  118. package/dist/esm/types/evaluator.js.map +1 -1
  119. package/dist/esm/types/index.d.ts +1 -1
  120. package/dist/esm/types/index.d.ts.map +1 -1
  121. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAGvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,YAAY,EACX,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,UAAU,EACV,SAAS,EACT,IAAI,EACJ,OAAO,GACP,MAAM,SAAS,CAAC;AAGjB,OAAO,EACN,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,WAAW,GACX,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAIvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,YAAY,EACX,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,cAAc,EACd,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,UAAU,EACV,SAAS,EACT,IAAI,EACJ,OAAO,GACP,MAAM,SAAS,CAAC;AAGjB,OAAO,EACN,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,WAAW,GACX,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC"}
package/dist/esm/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  // Main exports
2
2
  export { ExpressionEvaluator } from './evaluator/expression-evaluator';
3
- // Bridge exports
3
+ // Bridge exports — IsolatedVmBridge lazy-loads isolated-vm internally,
4
+ // so this value re-export does NOT pull in the native binary at import time.
4
5
  export { IsolatedVmBridge } from './bridge/isolated-vm-bridge';
5
6
  // Error types
6
7
  export { ExpressionError, MemoryLimitError, TimeoutError, SecurityViolationError, SyntaxError, } from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAEvE,iBAAiB;AACjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAiB/D,cAAc;AACd,OAAO,EACN,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,WAAW,GACX,MAAM,SAAS,CAAC;AAEjB,4BAA4B;AAC5B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAEvE,uEAAuE;AACvE,6EAA6E;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAkB/D,cAAc;AACd,OAAO,EACN,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,WAAW,GACX,MAAM,SAAS,CAAC;AAEjB,4BAA4B;AAC5B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC"}
@@ -9,8 +9,25 @@ declare global {
9
9
  var SafeObject: typeof Object;
10
10
  var SafeError: typeof Error;
11
11
  var DateTime: typeof import('luxon').DateTime;
12
+ var Duration: typeof import('luxon').Duration;
13
+ var Interval: typeof import('luxon').Interval;
14
+ var __prepareForTransfer: (value: unknown) => unknown;
12
15
  var extend: typeof import('../extensions/extend').extend;
13
16
  var extendOptional: typeof import('../extensions/extend').extendOptional;
17
+ var $json: unknown;
18
+ var $binary: unknown;
19
+ var $input: unknown;
20
+ var $node: unknown;
21
+ var $parameter: unknown;
22
+ var $workflow: unknown;
23
+ var $prevNode: unknown;
24
+ var $data: unknown;
25
+ var $env: unknown;
26
+ var $runIndex: number | undefined;
27
+ var $itemIndex: number | undefined;
28
+ var $now: import('luxon').DateTime;
29
+ var $today: import('luxon').DateTime;
30
+ var $items: unknown;
14
31
  }
15
32
  }
16
33
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":"AASA,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,UAAU,CAAC;QAEpB,IAAI,gBAAgB,EAAE,GAAG,CAAC;QAC1B,IAAI,iBAAiB,EAAE,GAAG,CAAC;QAC3B,IAAI,oBAAoB,EAAE,GAAG,CAAC;QAG9B,IAAI,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAGpC,IAAI,mBAAmB,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC;QAGtD,IAAI,gBAAgB,EAAE,MAAM,IAAI,CAAC;QAGjC,IAAI,UAAU,EAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,SAAS,EAAE,OAAO,KAAK,CAAC;QAG5B,IAAI,QAAQ,EAAE,cAAc,OAAO,EAAE,QAAQ,CAAC;QAC9C,IAAI,MAAM,EAAE,cAAc,sBAAsB,EAAE,MAAM,CAAC;QACzD,IAAI,cAAc,EAAE,cAAc,sBAAsB,EAAE,cAAc,CAAC;KACzE;CACD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":"AAUA,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,UAAU,CAAC;QAEpB,IAAI,gBAAgB,EAAE,GAAG,CAAC;QAC1B,IAAI,iBAAiB,EAAE,GAAG,CAAC;QAC3B,IAAI,oBAAoB,EAAE,GAAG,CAAC;QAG9B,IAAI,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAGpC,IAAI,mBAAmB,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC;QAGtD,IAAI,gBAAgB,EAAE,MAAM,IAAI,CAAC;QAGjC,IAAI,UAAU,EAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,SAAS,EAAE,OAAO,KAAK,CAAC;QAG5B,IAAI,QAAQ,EAAE,cAAc,OAAO,EAAE,QAAQ,CAAC;QAC9C,IAAI,QAAQ,EAAE,cAAc,OAAO,EAAE,QAAQ,CAAC;QAC9C,IAAI,QAAQ,EAAE,cAAc,OAAO,EAAE,QAAQ,CAAC;QAC9C,IAAI,oBAAoB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;QACtD,IAAI,MAAM,EAAE,cAAc,sBAAsB,EAAE,MAAM,CAAC;QACzD,IAAI,cAAc,EAAE,cAAc,sBAAsB,EAAE,cAAc,CAAC;QAGzE,IAAI,KAAK,EAAE,OAAO,CAAC;QACnB,IAAI,OAAO,EAAE,OAAO,CAAC;QACrB,IAAI,MAAM,EAAE,OAAO,CAAC;QACpB,IAAI,KAAK,EAAE,OAAO,CAAC;QACnB,IAAI,UAAU,EAAE,OAAO,CAAC;QACxB,IAAI,SAAS,EAAE,OAAO,CAAC;QACvB,IAAI,SAAS,EAAE,OAAO,CAAC;QACvB,IAAI,KAAK,EAAE,OAAO,CAAC;QACnB,IAAI,IAAI,EAAE,OAAO,CAAC;QAClB,IAAI,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;QAClC,IAAI,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;QACnC,IAAI,IAAI,EAAE,OAAO,OAAO,EAAE,QAAQ,CAAC;QACnC,IAAI,MAAM,EAAE,OAAO,OAAO,EAAE,QAAQ,CAAC;QACrC,IAAI,MAAM,EAAE,OAAO,CAAC;KACpB;CACD"}
@@ -1,8 +1,9 @@
1
- import { DateTime } from 'luxon';
1
+ import { DateTime, Duration, Interval } from 'luxon';
2
2
  import { extend, extendOptional } from '../extensions/extend';
3
3
  import { SafeObject, SafeError, ExpressionError } from './safe-globals';
4
4
  import { createDeepLazyProxy } from './lazy-proxy';
5
5
  import { resetDataProxies } from './reset';
6
+ import { __prepareForTransfer } from './serialize';
6
7
  // ============================================================================
7
8
  // Library Setup
8
9
  // ============================================================================
@@ -10,6 +11,8 @@ import { resetDataProxies } from './reset';
10
11
  globalThis.extend = extend;
11
12
  globalThis.extendOptional = extendOptional;
12
13
  globalThis.DateTime = DateTime;
14
+ globalThis.Duration = Duration;
15
+ globalThis.Interval = Interval;
13
16
  // ============================================================================
14
17
  // Expose security globals and runtime functions
15
18
  // ============================================================================
@@ -18,6 +21,7 @@ globalThis.SafeError = SafeError;
18
21
  globalThis.ExpressionError = ExpressionError;
19
22
  globalThis.createDeepLazyProxy = createDeepLazyProxy;
20
23
  globalThis.resetDataProxies = resetDataProxies;
24
+ globalThis.__prepareForTransfer = __prepareForTransfer;
21
25
  // Initialize empty __data object (populated by resetDataProxies before each evaluation)
22
26
  globalThis.__data = {};
23
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AA8B3C,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,gEAAgE;AAChE,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3B,UAAU,CAAC,cAAc,GAAG,cAAc,CAAC;AAC3C,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAE/B,+EAA+E;AAC/E,gDAAgD;AAChD,+EAA+E;AAE/E,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;AACnC,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;AAChC,UAAkB,CAAC,eAAe,GAAG,eAAe,CAAC;AAEtD,UAAU,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;AACrD,UAAU,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;AAE/C,wFAAwF;AACxF,UAAU,CAAC,MAAM,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAiDnD,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,gEAAgE;AAChE,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3B,UAAU,CAAC,cAAc,GAAG,cAAc,CAAC;AAC3C,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC/B,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC/B,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAE/B,+EAA+E;AAC/E,gDAAgD;AAChD,+EAA+E;AAE/E,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;AACnC,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;AAChC,UAAkB,CAAC,eAAe,GAAG,eAAe,CAAC;AAEtD,UAAU,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;AACrD,UAAU,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;AAC/C,UAAU,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;AAEvD,wFAAwF;AACxF,UAAU,CAAC,MAAM,GAAG,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"lazy-proxy.d.ts","sourceRoot":"","sources":["../../../src/runtime/lazy-proxy.ts"],"names":[],"mappings":"AAYA,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEjD;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAE9D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,GAAE,MAAM,EAAO,GAAG,GAAG,CAgJhE"}
1
+ {"version":3,"file":"lazy-proxy.d.ts","sourceRoot":"","sources":["../../../src/runtime/lazy-proxy.ts"],"names":[],"mappings":"AAYA,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEjD;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAE9D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,GAAE,MAAM,EAAO,GAAG,GAAG,CAwJhE"}
@@ -84,6 +84,15 @@ export function createDeepLazyProxy(basePath = []) {
84
84
  // Handle arrays - metadata: { __isArray: true, __length: number }
85
85
  if (value && typeof value === 'object' && value.__isArray) {
86
86
  const arrayProxy = new Proxy([], {
87
+ has(arrTarget, arrProp) {
88
+ if (typeof arrProp === 'symbol')
89
+ return arrProp in arrTarget;
90
+ const index = Number(arrProp);
91
+ if (!isNaN(index) && index >= 0 && index < value.__length) {
92
+ return true;
93
+ }
94
+ return arrProp in arrTarget;
95
+ },
87
96
  get(arrTarget, arrProp) {
88
97
  // Symbols can't be transferred via isolated-vm; return undefined
89
98
  if (typeof arrProp === 'symbol') {
@@ -1 +1 @@
1
- {"version":3,"file":"lazy-proxy.js","sourceRoot":"","sources":["../../../src/runtime/lazy-proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lazy-proxy.js","sourceRoot":"","sources":["../../../src/runtime/lazy-proxy.ts"],"names":[],"mappings":"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"}
@@ -12,5 +12,5 @@
12
12
  *
13
13
  * Called from bridge: context.evalSync('resetDataProxies()')
14
14
  */
15
- export declare function resetDataProxies(): void;
15
+ export declare function resetDataProxies(timezone?: string): void;
16
16
  //# sourceMappingURL=reset.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../../../src/runtime/reset.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAkHvC"}
1
+ {"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../../../src/runtime/reset.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CA0JxD"}
@@ -1,6 +1,15 @@
1
+ import { DateTime, IANAZone, Settings } from 'luxon';
1
2
  import { extend, extendOptional } from '../extensions/extend';
2
- import { __sanitize } from './safe-globals';
3
+ import { extendedFunctions } from '../extensions/function-extensions';
4
+ import { __sanitize, createSafeErrorSubclass, ExpressionError } from './safe-globals';
3
5
  import { createDeepLazyProxy } from './lazy-proxy';
6
+ // Pre-create safe error subclass wrappers (reused across evaluations)
7
+ const SafeTypeError = createSafeErrorSubclass(TypeError);
8
+ const SafeSyntaxError = createSafeErrorSubclass(SyntaxError);
9
+ const SafeEvalError = createSafeErrorSubclass(EvalError);
10
+ const SafeRangeError = createSafeErrorSubclass(RangeError);
11
+ const SafeReferenceError = createSafeErrorSubclass(ReferenceError);
12
+ const SafeURIError = createSafeErrorSubclass(URIError);
4
13
  // ============================================================================
5
14
  // Reset Function for Data Proxies
6
15
  // ============================================================================
@@ -18,12 +27,24 @@ import { createDeepLazyProxy } from './lazy-proxy';
18
27
  *
19
28
  * Called from bridge: context.evalSync('resetDataProxies()')
20
29
  */
21
- export function resetDataProxies() {
30
+ export function resetDataProxies(timezone) {
31
+ if (timezone && !IANAZone.isValidZone(timezone)) {
32
+ throw new Error(`Invalid timezone: "${timezone}"`);
33
+ }
34
+ Settings.defaultZone = timezone ?? 'system';
22
35
  // Clear existing __data object
23
36
  globalThis.__data = {};
24
37
  // __sanitize must be on __data because PrototypeSanitizer generates:
25
38
  // obj[this.__sanitize(expr)] where 'this' is __data (via .call(__data) wrapping)
26
- globalThis.__data.__sanitize = __sanitize;
39
+ // Use a non-writable property descriptor so override attempts throw instead of silently succeeding.
40
+ Object.defineProperty(globalThis.__data, '__sanitize', {
41
+ get: () => __sanitize,
42
+ set: () => {
43
+ throw new ExpressionError('Cannot override "__sanitize" due to security concerns');
44
+ },
45
+ enumerable: false,
46
+ configurable: false,
47
+ });
27
48
  // Verify callbacks are available
28
49
  // Note: ivm.Reference may not be typeof 'function', check for existence
29
50
  if (!globalThis.__getValueAtPath) {
@@ -42,6 +63,14 @@ export function resetDataProxies() {
42
63
  globalThis.__data.$data = createDeepLazyProxy(['$data']);
43
64
  globalThis.__data.$env = createDeepLazyProxy(['$env']);
44
65
  // -------------------------------------------------------------------------
66
+ // Create DateTime values inside the isolate (not lazy-loaded from host,
67
+ // because host-side DateTime objects lose their prototype crossing the
68
+ // boundary). The isolate has its own luxon with the correct timezone
69
+ // already set via Settings.defaultZone above.
70
+ // -------------------------------------------------------------------------
71
+ globalThis.__data.$now = DateTime.now();
72
+ globalThis.__data.$today = DateTime.now().set({ hour: 0, minute: 0, second: 0, millisecond: 0 });
73
+ // -------------------------------------------------------------------------
45
74
  // Fetch primitives directly (no lazy loading needed for simple values)
46
75
  // -------------------------------------------------------------------------
47
76
  try {
@@ -78,6 +107,10 @@ export function resetDataProxies() {
78
107
  globalThis.$itemIndex = globalThis.__data.$itemIndex;
79
108
  globalThis.$data = globalThis.__data.$data;
80
109
  globalThis.$env = globalThis.__data.$env;
110
+ globalThis.$now = globalThis.__data.$now;
111
+ globalThis.$today = globalThis.__data.$today;
112
+ // Expose standalone functions (min, max, average, numberList, zip, $ifEmpty, etc.)
113
+ Object.assign(globalThis.__data, extendedFunctions);
81
114
  // -------------------------------------------------------------------------
82
115
  // Handle function properties (check if value is function metadata)
83
116
  // -------------------------------------------------------------------------
@@ -115,10 +148,131 @@ export function resetDataProxies() {
115
148
  // pattern resolves them correctly (tournament checks __data before global)
116
149
  // -------------------------------------------------------------------------
117
150
  globalThis.__data.DateTime = globalThis.DateTime;
151
+ globalThis.__data.Duration = globalThis.Duration;
152
+ globalThis.__data.Interval = globalThis.Interval;
118
153
  // Expose extend/extendOptional on __data so tournament's "x in this ? this.x : global.x"
119
154
  // pattern resolves them correctly when the VM checks __data first
120
155
  globalThis.__data.extend = extend;
121
156
  globalThis.__data.extendOptional = extendOptional;
122
- // TODO: Add other function properties as needed ($item, $vars, etc.)
157
+ // Wire builtins so tournament's VariablePolyfill resolves them from __data
158
+ initializeBuiltins(globalThis.__data);
159
+ // $item(itemIndex) returns a sub-proxy for the specified item (legacy syntax)
160
+ globalThis.__data.$item = function (itemIndex) {
161
+ const indexStr = String(itemIndex);
162
+ return {
163
+ $json: createDeepLazyProxy(['$item', indexStr, '$json']),
164
+ $binary: createDeepLazyProxy(['$item', indexStr, '$binary']),
165
+ };
166
+ };
167
+ }
168
+ // Matches initializeGlobalContext() lines 262-318 in packages/workflow/src/expression.ts
169
+ const DENYLISTED_GLOBALS = [
170
+ 'document',
171
+ 'global',
172
+ 'window',
173
+ 'Window',
174
+ 'globalThis',
175
+ 'self',
176
+ 'alert',
177
+ 'prompt',
178
+ 'confirm',
179
+ 'eval',
180
+ 'uneval',
181
+ 'setTimeout',
182
+ 'setInterval',
183
+ 'setImmediate',
184
+ 'clearImmediate',
185
+ 'queueMicrotask',
186
+ 'Function',
187
+ 'require',
188
+ 'module',
189
+ 'Buffer',
190
+ '__dirname',
191
+ '__filename',
192
+ 'fetch',
193
+ 'XMLHttpRequest',
194
+ 'Promise',
195
+ 'Generator',
196
+ 'GeneratorFunction',
197
+ 'AsyncFunction',
198
+ 'AsyncGenerator',
199
+ 'AsyncGeneratorFunction',
200
+ 'WebAssembly',
201
+ 'Reflect',
202
+ 'Proxy',
203
+ 'escape',
204
+ 'unescape',
205
+ ];
206
+ /**
207
+ * Wire builtins onto __data so tournament's VariablePolyfill resolves them.
208
+ *
209
+ * Tournament transforms `Object` → `("Object" in this ? this : window).Object`.
210
+ * `this` = __data. Without these entries on __data, builtins fall through to
211
+ * `window` which doesn't exist in the isolate, causing a ReferenceError.
212
+ *
213
+ * Mirrors Expression.initializeGlobalContext() in packages/workflow/src/expression.ts.
214
+ */
215
+ function initializeBuiltins(data) {
216
+ // ── Denylist: dangerous globals → empty objects ──
217
+ for (const key of DENYLISTED_GLOBALS) {
218
+ data[key] = {};
219
+ }
220
+ data.__lookupGetter__ = undefined;
221
+ data.__lookupSetter__ = undefined;
222
+ data.__defineGetter__ = undefined;
223
+ data.__defineSetter__ = undefined;
224
+ // ── Allowlist: safe versions of builtins ──
225
+ // Object — use SafeObject wrapper from the runtime bundle
226
+ data.Object = globalThis.SafeObject;
227
+ // Error types — use SafeError and safe subclass wrappers
228
+ data.Error = globalThis.SafeError;
229
+ data.TypeError = SafeTypeError;
230
+ data.SyntaxError = SafeSyntaxError;
231
+ data.EvalError = SafeEvalError;
232
+ data.RangeError = SafeRangeError;
233
+ data.ReferenceError = SafeReferenceError;
234
+ data.URIError = SafeURIError;
235
+ // Arrays
236
+ data.Array = Array;
237
+ data.Int8Array = Int8Array;
238
+ data.Uint8Array = Uint8Array;
239
+ data.Uint8ClampedArray = Uint8ClampedArray;
240
+ data.Int16Array = Int16Array;
241
+ data.Uint16Array = Uint16Array;
242
+ data.Int32Array = Int32Array;
243
+ data.Uint32Array = Uint32Array;
244
+ data.Float32Array = Float32Array;
245
+ data.Float64Array = Float64Array;
246
+ data.BigInt64Array = typeof BigInt64Array !== 'undefined' ? BigInt64Array : {};
247
+ data.BigUint64Array = typeof BigUint64Array !== 'undefined' ? BigUint64Array : {};
248
+ // Collections
249
+ data.Map = Map;
250
+ data.WeakMap = WeakMap;
251
+ data.Set = Set;
252
+ data.WeakSet = WeakSet;
253
+ // Internationalization
254
+ data.Intl = typeof Intl !== 'undefined' ? Intl : {};
255
+ // Text
256
+ data.String = String;
257
+ // Numbers
258
+ data.Number = Number;
259
+ data.BigInt = typeof BigInt !== 'undefined' ? BigInt : {};
260
+ data.Infinity = Infinity;
261
+ data.parseFloat = parseFloat;
262
+ data.parseInt = parseInt;
263
+ // Structured data
264
+ data.JSON = JSON;
265
+ data.ArrayBuffer = typeof ArrayBuffer !== 'undefined' ? ArrayBuffer : {};
266
+ data.SharedArrayBuffer = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : {};
267
+ data.Atomics = typeof Atomics !== 'undefined' ? Atomics : {};
268
+ data.DataView = typeof DataView !== 'undefined' ? DataView : {};
269
+ // Encoding
270
+ data.encodeURI = encodeURI;
271
+ data.encodeURIComponent = encodeURIComponent;
272
+ data.decodeURI = decodeURI;
273
+ data.decodeURIComponent = decodeURIComponent;
274
+ // Other
275
+ data.Boolean = Boolean;
276
+ data.Symbol = Symbol;
123
277
  }
124
278
  //# sourceMappingURL=reset.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/runtime/reset.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/runtime/reset.ts"],"names":[],"mappings":"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"}
@@ -8,12 +8,14 @@
8
8
  */
9
9
  export declare const SafeObject: ObjectConstructor;
10
10
  /**
11
- * SafeError - Blocks stack manipulation methods
12
- *
13
- * Blocked properties:
14
- * - stackTraceLimit, captureStackTrace, prepareStackTrace: Prevent stack manipulation attacks
11
+ * SafeError - Blocks stack manipulation methods on Error constructor.
15
12
  */
16
13
  export declare const SafeError: ErrorConstructor;
14
+ /**
15
+ * Creates a safe wrapper for Error subclasses (TypeError, SyntaxError, etc.)
16
+ * Blocks the same dangerous properties as SafeError for defense in depth.
17
+ */
18
+ export declare function createSafeErrorSubclass<T extends ErrorConstructor>(ErrorClass: T): T;
17
19
  export declare class ExpressionError extends Error {
18
20
  constructor(message: string);
19
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"safe-globals.d.ts","sourceRoot":"","sources":["../../../src/runtime/safe-globals.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,mBAgCrB,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,SAAS,kBA4BpB,CAAC;AAMH,qBAAa,eAAgB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM;CAI3B;AAwBD,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKlD"}
1
+ {"version":3,"file":"safe-globals.d.ts","sourceRoot":"","sources":["../../../src/runtime/safe-globals.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,mBAqCrB,CAAC;AAgBH;;GAEG;AACH,eAAO,MAAM,SAAS,kBAsBpB,CAAC;AAEH;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,gBAAgB,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,CAmBpF;AAMD,qBAAa,eAAgB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM;CAI3B;AAwBD,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKlD"}
@@ -30,6 +30,10 @@ export const SafeObject = new Proxy(Object, {
30
30
  if (prop === 'getPrototypeOf') {
31
31
  throw new Error('Object.getPrototypeOf is not allowed');
32
32
  }
33
+ // Wrap Object.create to accept only one argument (blocks property descriptor injection)
34
+ if (prop === 'create') {
35
+ return (proto) => Object.create(proto);
36
+ }
33
37
  // Allow other Object methods
34
38
  const value = target[prop];
35
39
  if (typeof value === 'function') {
@@ -40,21 +44,24 @@ export const SafeObject = new Proxy(Object, {
40
44
  },
41
45
  });
42
46
  /**
43
- * SafeError - Blocks stack manipulation methods
44
- *
45
- * Blocked properties:
46
- * - stackTraceLimit, captureStackTrace, prepareStackTrace: Prevent stack manipulation attacks
47
+ * Properties blocked on Error and all Error subclasses.
48
+ * These can be exploited for sandbox escape via V8's stack trace API.
49
+ */
50
+ const blockedErrorProperties = new Set([
51
+ 'captureStackTrace',
52
+ 'prepareStackTrace',
53
+ 'stackTraceLimit',
54
+ '__defineGetter__',
55
+ '__defineSetter__',
56
+ '__lookupGetter__',
57
+ '__lookupSetter__',
58
+ ]);
59
+ /**
60
+ * SafeError - Blocks stack manipulation methods on Error constructor.
47
61
  */
48
62
  export const SafeError = new Proxy(Error, {
49
63
  get(target, prop) {
50
- // Block stack manipulation (return undefined)
51
- const blockedProps = ['stackTraceLimit', 'captureStackTrace', 'prepareStackTrace'];
52
- if (blockedProps.includes(prop)) {
53
- return undefined;
54
- }
55
- // Block dangerous methods
56
- const blockedMethods = ['__defineGetter__', '__defineSetter__'];
57
- if (blockedMethods.includes(prop)) {
64
+ if (blockedErrorProperties.has(prop)) {
58
65
  return undefined;
59
66
  }
60
67
  const value = target[prop];
@@ -71,7 +78,34 @@ export const SafeError = new Proxy(Error, {
71
78
  target[prop] = value;
72
79
  return true;
73
80
  },
81
+ defineProperty() {
82
+ return false;
83
+ },
74
84
  });
85
+ /**
86
+ * Creates a safe wrapper for Error subclasses (TypeError, SyntaxError, etc.)
87
+ * Blocks the same dangerous properties as SafeError for defense in depth.
88
+ */
89
+ export function createSafeErrorSubclass(ErrorClass) {
90
+ return new Proxy(ErrorClass, {
91
+ get(target, prop) {
92
+ if (blockedErrorProperties.has(prop)) {
93
+ return undefined;
94
+ }
95
+ const value = target[prop];
96
+ if (typeof value === 'function') {
97
+ return (...args) => value.apply(target, args);
98
+ }
99
+ return value;
100
+ },
101
+ set() {
102
+ return false;
103
+ },
104
+ defineProperty() {
105
+ return false;
106
+ },
107
+ });
108
+ }
75
109
  // ============================================================================
76
110
  // ExpressionError - used by tournament-generated error handlers
77
111
  // ============================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"safe-globals.js","sourceRoot":"","sources":["../../../src/runtime/safe-globals.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"safe-globals.js","sourceRoot":"","sources":["../../../src/runtime/safe-globals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Prepare a value for transfer across the V8 isolate boundary.
3
+ *
4
+ * isolated-vm's `copy: true` uses structured clone, which strips prototypes
5
+ * from non-standard types. Luxon DateTime/Duration/Interval lose their class
6
+ * identity and arrive on the host as plain objects.
7
+ *
8
+ * This function recursively walks a value and converts types that don't
9
+ * survive structured clone into their string representations. It runs
10
+ * inside the isolate before the result is transferred.
11
+ *
12
+ * Note: JS Date objects survive structured clone with prototype intact
13
+ * (Date is a standard structured-cloneable type) and are not converted.
14
+ *
15
+ * Circular references are not handled — expression results should not
16
+ * contain cycles.
17
+ */
18
+ export declare function __prepareForTransfer(value: unknown): unknown;
19
+ //# sourceMappingURL=serialize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../../src/runtime/serialize.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA2B5D"}
@@ -0,0 +1,54 @@
1
+ import { DateTime, Duration, Interval } from 'luxon';
2
+ /** Type guard: plain object with Object.prototype or null prototype. */
3
+ function isPlainObject(value) {
4
+ const proto = Object.getPrototypeOf(value);
5
+ return proto === Object.prototype || proto === null;
6
+ }
7
+ /**
8
+ * Prepare a value for transfer across the V8 isolate boundary.
9
+ *
10
+ * isolated-vm's `copy: true` uses structured clone, which strips prototypes
11
+ * from non-standard types. Luxon DateTime/Duration/Interval lose their class
12
+ * identity and arrive on the host as plain objects.
13
+ *
14
+ * This function recursively walks a value and converts types that don't
15
+ * survive structured clone into their string representations. It runs
16
+ * inside the isolate before the result is transferred.
17
+ *
18
+ * Note: JS Date objects survive structured clone with prototype intact
19
+ * (Date is a standard structured-cloneable type) and are not converted.
20
+ *
21
+ * Circular references are not handled — expression results should not
22
+ * contain cycles.
23
+ */
24
+ export function __prepareForTransfer(value) {
25
+ if (value === null || value === undefined)
26
+ return value;
27
+ if (typeof value !== 'object')
28
+ return value;
29
+ // Luxon DateTime -> ISO string (toISO() returns null for invalid DateTime)
30
+ if (DateTime.isDateTime(value))
31
+ return value.toISO() ?? null;
32
+ // Luxon Duration -> ISO string (toISO() returns null for invalid Duration)
33
+ if (Duration.isDuration(value))
34
+ return value.toISO() ?? null;
35
+ // Luxon Interval -> ISO string (toISO() returns "Invalid Interval" for invalid Interval)
36
+ if (Interval.isInterval(value)) {
37
+ const iso = value.toISO();
38
+ return iso === 'Invalid Interval' ? null : iso;
39
+ }
40
+ // Array — walk elements
41
+ if (Array.isArray(value))
42
+ return value.map(__prepareForTransfer);
43
+ // Only walk plain objects — structured-cloneable types like Date, Map, Set,
44
+ // RegExp, Error, typed arrays survive copy:true with prototypes intact.
45
+ if (!isPlainObject(value))
46
+ return value;
47
+ // Plain object — walk values
48
+ const result = {};
49
+ for (const key of Object.keys(value)) {
50
+ result[key] = __prepareForTransfer(value[key]);
51
+ }
52
+ return result;
53
+ }
54
+ //# sourceMappingURL=serialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../../src/runtime/serialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAErD,wEAAwE;AACxE,SAAS,aAAa,CAAC,KAAa;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,KAAK,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAc;IAClD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5C,2EAA2E;IAC3E,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;IAC7D,2EAA2E;IAC3E,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;IAC7D,yFAAyF;IACzF,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1B,OAAO,GAAG,KAAK,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IAChD,CAAC;IAED,wBAAwB;IACxB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAEjE,4EAA4E;IAC5E,wEAAwE;IACxE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAExC,6BAA6B;IAC7B,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -24,7 +24,7 @@ export interface RuntimeBridge {
24
24
  * Note: Synchronous for Node.js vm module (Slice 1).
25
25
  * Will be async for isolated-vm (Slice 2).
26
26
  */
27
- execute(code: string, data: Record<string, unknown>): unknown;
27
+ execute(code: string, data: Record<string, unknown>, options?: ExecuteOptions): unknown;
28
28
  /**
29
29
  * Dispose of the isolated context and free resources.
30
30
  * After disposal, the bridge cannot be used again.
@@ -60,4 +60,12 @@ export interface BridgeConfig {
60
60
  }
61
61
  /** Default values for BridgeConfig. Bridge implementations should use this as their baseline. */
62
62
  export declare const DEFAULT_BRIDGE_CONFIG: Required<BridgeConfig>;
63
+ /** Options for a single execute() call. */
64
+ export interface ExecuteOptions {
65
+ /**
66
+ * IANA timezone for this evaluation (e.g., 'America/New_York').
67
+ * Sets luxon Settings.defaultZone inside the isolate before execution.
68
+ */
69
+ timezone?: string;
70
+ }
63
71
  //# sourceMappingURL=bridge.d.ts.map
@@ -1 +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"}
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,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC;IAExF;;;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;AAEF,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB"}