@n8n/expression-runtime 0.29.1 → 0.31.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 (120) hide show
  1. package/README.md +4 -0
  2. package/dist/bundle/runtime.esm.js +17 -17
  3. package/dist/bundle/runtime.esm.js.map +4 -4
  4. package/dist/bundle/runtime.iife.js +17 -17
  5. package/dist/bundle/runtime.iife.js.map +4 -4
  6. package/dist/cjs/bridge/host-functions.d.ts +74 -0
  7. package/dist/cjs/bridge/host-functions.d.ts.map +1 -0
  8. package/dist/cjs/bridge/host-functions.js +336 -0
  9. package/dist/cjs/bridge/host-functions.js.map +1 -0
  10. package/dist/cjs/bridge/isolated-vm-bridge.d.ts +24 -150
  11. package/dist/cjs/bridge/isolated-vm-bridge.d.ts.map +1 -1
  12. package/dist/cjs/bridge/isolated-vm-bridge.js +130 -429
  13. package/dist/cjs/bridge/isolated-vm-bridge.js.map +1 -1
  14. package/dist/cjs/bridge/quickjs-bridge.d.ts +21 -6
  15. package/dist/cjs/bridge/quickjs-bridge.d.ts.map +1 -1
  16. package/dist/cjs/bridge/quickjs-bridge.js +377 -402
  17. package/dist/cjs/bridge/quickjs-bridge.js.map +1 -1
  18. package/dist/cjs/build.tsbuildinfo +1 -1
  19. package/dist/cjs/evaluator/expression-evaluator.d.ts +17 -0
  20. package/dist/cjs/evaluator/expression-evaluator.d.ts.map +1 -1
  21. package/dist/cjs/evaluator/expression-evaluator.js +61 -1
  22. package/dist/cjs/evaluator/expression-evaluator.js.map +1 -1
  23. package/dist/cjs/extensions/array-extensions.d.ts.map +1 -1
  24. package/dist/cjs/extensions/array-extensions.js +7 -15
  25. package/dist/cjs/extensions/array-extensions.js.map +1 -1
  26. package/dist/cjs/extensions/function-extensions.d.ts.map +1 -1
  27. package/dist/cjs/extensions/function-extensions.js +2 -10
  28. package/dist/cjs/extensions/function-extensions.js.map +1 -1
  29. package/dist/cjs/extensions/object-extensions.d.ts.map +1 -1
  30. package/dist/cjs/extensions/object-extensions.js +3 -11
  31. package/dist/cjs/extensions/object-extensions.js.map +1 -1
  32. package/dist/cjs/extensions/utils.d.ts +1 -0
  33. package/dist/cjs/extensions/utils.d.ts.map +1 -1
  34. package/dist/cjs/extensions/utils.js +10 -0
  35. package/dist/cjs/extensions/utils.js.map +1 -1
  36. package/dist/cjs/observability/metrics.d.ts +12 -0
  37. package/dist/cjs/observability/metrics.d.ts.map +1 -1
  38. package/dist/cjs/observability/metrics.js +12 -0
  39. package/dist/cjs/observability/metrics.js.map +1 -1
  40. package/dist/cjs/runtime/lazy-proxy.d.ts +2 -0
  41. package/dist/cjs/runtime/lazy-proxy.d.ts.map +1 -1
  42. package/dist/cjs/runtime/lazy-proxy.js +29 -15
  43. package/dist/cjs/runtime/lazy-proxy.js.map +1 -1
  44. package/dist/cjs/runtime/luxon-transfer.d.ts +62 -0
  45. package/dist/cjs/runtime/luxon-transfer.d.ts.map +1 -0
  46. package/dist/cjs/runtime/luxon-transfer.js +200 -0
  47. package/dist/cjs/runtime/luxon-transfer.js.map +1 -0
  48. package/dist/cjs/runtime/serialize.d.ts +7 -7
  49. package/dist/cjs/runtime/serialize.d.ts.map +1 -1
  50. package/dist/cjs/runtime/serialize.js +42 -30
  51. package/dist/cjs/runtime/serialize.js.map +1 -1
  52. package/dist/cjs/runtime/transfer.d.ts +77 -0
  53. package/dist/cjs/runtime/transfer.d.ts.map +1 -0
  54. package/dist/cjs/runtime/transfer.js +183 -0
  55. package/dist/cjs/runtime/transfer.js.map +1 -0
  56. package/dist/cjs/types/bridge.d.ts +16 -0
  57. package/dist/cjs/types/bridge.d.ts.map +1 -1
  58. package/dist/cjs/types/bridge.js +1 -0
  59. package/dist/cjs/types/bridge.js.map +1 -1
  60. package/dist/cjs/types/evaluator.d.ts +9 -0
  61. package/dist/cjs/types/evaluator.d.ts.map +1 -1
  62. package/dist/cjs/types/evaluator.js.map +1 -1
  63. package/dist/esm/bridge/host-functions.d.ts +74 -0
  64. package/dist/esm/bridge/host-functions.d.ts.map +1 -0
  65. package/dist/esm/bridge/host-functions.js +328 -0
  66. package/dist/esm/bridge/host-functions.js.map +1 -0
  67. package/dist/esm/bridge/isolated-vm-bridge.d.ts +24 -150
  68. package/dist/esm/bridge/isolated-vm-bridge.d.ts.map +1 -1
  69. package/dist/esm/bridge/isolated-vm-bridge.js +126 -425
  70. package/dist/esm/bridge/isolated-vm-bridge.js.map +1 -1
  71. package/dist/esm/bridge/quickjs-bridge.d.ts +21 -6
  72. package/dist/esm/bridge/quickjs-bridge.d.ts.map +1 -1
  73. package/dist/esm/bridge/quickjs-bridge.js +368 -393
  74. package/dist/esm/bridge/quickjs-bridge.js.map +1 -1
  75. package/dist/esm/build.tsbuildinfo +1 -1
  76. package/dist/esm/evaluator/expression-evaluator.d.ts +17 -0
  77. package/dist/esm/evaluator/expression-evaluator.d.ts.map +1 -1
  78. package/dist/esm/evaluator/expression-evaluator.js +61 -1
  79. package/dist/esm/evaluator/expression-evaluator.js.map +1 -1
  80. package/dist/esm/extensions/array-extensions.d.ts.map +1 -1
  81. package/dist/esm/extensions/array-extensions.js +1 -9
  82. package/dist/esm/extensions/array-extensions.js.map +1 -1
  83. package/dist/esm/extensions/function-extensions.d.ts.map +1 -1
  84. package/dist/esm/extensions/function-extensions.js +1 -9
  85. package/dist/esm/extensions/function-extensions.js.map +1 -1
  86. package/dist/esm/extensions/object-extensions.d.ts.map +1 -1
  87. package/dist/esm/extensions/object-extensions.js +1 -9
  88. package/dist/esm/extensions/object-extensions.js.map +1 -1
  89. package/dist/esm/extensions/utils.d.ts +1 -0
  90. package/dist/esm/extensions/utils.d.ts.map +1 -1
  91. package/dist/esm/extensions/utils.js +9 -0
  92. package/dist/esm/extensions/utils.js.map +1 -1
  93. package/dist/esm/observability/metrics.d.ts +12 -0
  94. package/dist/esm/observability/metrics.d.ts.map +1 -1
  95. package/dist/esm/observability/metrics.js +12 -0
  96. package/dist/esm/observability/metrics.js.map +1 -1
  97. package/dist/esm/runtime/lazy-proxy.d.ts +2 -0
  98. package/dist/esm/runtime/lazy-proxy.d.ts.map +1 -1
  99. package/dist/esm/runtime/lazy-proxy.js +29 -15
  100. package/dist/esm/runtime/lazy-proxy.js.map +1 -1
  101. package/dist/esm/runtime/luxon-transfer.d.ts +62 -0
  102. package/dist/esm/runtime/luxon-transfer.d.ts.map +1 -0
  103. package/dist/esm/runtime/luxon-transfer.js +183 -0
  104. package/dist/esm/runtime/luxon-transfer.js.map +1 -0
  105. package/dist/esm/runtime/serialize.d.ts +7 -7
  106. package/dist/esm/runtime/serialize.d.ts.map +1 -1
  107. package/dist/esm/runtime/serialize.js +42 -30
  108. package/dist/esm/runtime/serialize.js.map +1 -1
  109. package/dist/esm/runtime/transfer.d.ts +77 -0
  110. package/dist/esm/runtime/transfer.d.ts.map +1 -0
  111. package/dist/esm/runtime/transfer.js +173 -0
  112. package/dist/esm/runtime/transfer.js.map +1 -0
  113. package/dist/esm/types/bridge.d.ts +16 -0
  114. package/dist/esm/types/bridge.d.ts.map +1 -1
  115. package/dist/esm/types/bridge.js +1 -0
  116. package/dist/esm/types/bridge.js.map +1 -1
  117. package/dist/esm/types/evaluator.d.ts +9 -0
  118. package/dist/esm/types/evaluator.d.ts.map +1 -1
  119. package/dist/esm/types/evaluator.js.map +1 -1
  120. package/package.json +8 -8
@@ -58,6 +58,8 @@ function getProxyPath(obj) {
58
58
  * 2. Metadata indicates type: primitive, object, or array
59
59
  * 3. For objects/arrays: Create nested proxy (shape-matched) for lazy loading
60
60
  * 4. Cache all fetched values in target to avoid repeated callbacks
61
+ * 5. On the first write or delete: shallow-materialize into the cache
62
+ * (copy-on-write). Mutations stay in the evaluation and never reach the host.
61
63
  *
62
64
  * Callable host bindings (`$('Foo').first()`, `$items()`, etc.) do not flow
63
65
  * through this proxy — they are wired as in-isolate stubs on `target` that
@@ -77,7 +79,8 @@ function createDeepLazyProxy(basePath = [], meta, callbacks) {
77
79
  const arrayLength = isArray ? meta.length : 0;
78
80
  const objectKeys = meta?.kind === 'object' ? meta.keys : undefined;
79
81
  // Cache for keys fetched from the bridge (root object proxies without known keys).
80
- // Shared between ownKeys and getOwnPropertyDescriptor for consistency.
82
+ // Shared by ownKeys, getOwnPropertyDescriptor, and materialize() so all three
83
+ // see the same key list.
81
84
  let fetchedKeys;
82
85
  function resolveObjectKeys() {
83
86
  if (objectKeys)
@@ -123,10 +126,16 @@ function createDeepLazyProxy(basePath = [], meta, callbacks) {
123
126
  // never cross the isolate boundary — the host callback surface is read-only
124
127
  // (getValueAtPath / getArrayElement) — and the mutated copy dies with the
125
128
  // per-evaluation context.
129
+ // The guard must be in EVERY trap: after mutation, the construction-time
130
+ // meta (arrayLength, host key list, host `in` checks) is stale — an
131
+ // unguarded trap would report the pre-push length or resurrect deleted keys.
126
132
  let materialized = false;
127
- function fetchAndCacheArrayElement(idx) {
133
+ // `prop` is the already-stringified index — callers have it at hand, and
134
+ // re-deriving it here would put a String() allocation on the hot read path.
135
+ // Plain assignment is safe here (unlike fetchAndCacheObjectValue): `prop`
136
+ // is always a canonical index string, never a setter-chain key like '__proto__'.
137
+ function fetchAndCacheArrayElement(idx, prop) {
128
138
  const t = target;
129
- const prop = String(idx);
130
139
  const element = getArrayElement(basePath, idx);
131
140
  // Primitives (and null) skip `materializeChild`'s metadata checks.
132
141
  if (element === null || typeof element !== 'object') {
@@ -153,10 +162,14 @@ function createDeepLazyProxy(basePath = [], meta, callbacks) {
153
162
  function materialize() {
154
163
  if (materialized)
155
164
  return;
165
+ // Keep cached entries: a cached child proxy can already carry its own
166
+ // copy-on-write mutations; a re-fetch would create a fresh proxy and
167
+ // discard them.
156
168
  if (isArray) {
157
169
  for (let i = 0; i < arrayLength; i++) {
158
- if (!Object.prototype.hasOwnProperty.call(target, String(i)))
159
- fetchAndCacheArrayElement(i);
170
+ const prop = String(i);
171
+ if (!Object.prototype.hasOwnProperty.call(target, prop))
172
+ fetchAndCacheArrayElement(i, prop);
160
173
  }
161
174
  target.length = arrayLength;
162
175
  }
@@ -245,7 +258,6 @@ function createDeepLazyProxy(basePath = [], meta, callbacks) {
245
258
  if (isArray && prop === 'length') {
246
259
  return arrayLength;
247
260
  }
248
- // Check cache - if already fetched, return cached value
249
261
  if (prop in targetObj) {
250
262
  return targetObj[prop];
251
263
  }
@@ -253,21 +265,26 @@ function createDeepLazyProxy(basePath = [], meta, callbacks) {
253
265
  const idx = isInArrayBounds(prop);
254
266
  if (idx === undefined)
255
267
  return undefined;
256
- return fetchAndCacheArrayElement(idx);
268
+ return fetchAndCacheArrayElement(idx, prop);
257
269
  }
258
270
  return fetchAndCacheObjectValue(prop);
259
271
  },
260
- set(_targetObj, prop, value) {
272
+ // Expression code runs in sloppy mode (the eval wrapper adds no
273
+ // 'use strict'), so a false result from these traps no-ops silently
274
+ // instead of throwing. Materialize, then let Reflect apply the
275
+ // mutation for real.
276
+ set(_targetObj, prop, value, receiver) {
261
277
  materialize();
262
- return Reflect.set(target, prop, value);
278
+ // Forward the receiver: when the proxy sits on another object's
279
+ // prototype chain, the write must create an own property on that
280
+ // object, not land in this proxy's cache.
281
+ return Reflect.set(target, prop, value, receiver);
263
282
  },
264
283
  deleteProperty(_targetObj, prop) {
265
284
  materialize();
266
285
  return Reflect.deleteProperty(target, prop);
267
286
  },
268
287
  has(targetObj, prop) {
269
- // Implement 'in' operator support
270
- // Example: '$json' in data
271
288
  if (materialized)
272
289
  return Reflect.has(targetObj, prop);
273
290
  // Mirror the get trap: symbol-keyed lookups defer to the target so
@@ -281,18 +298,15 @@ function createDeepLazyProxy(basePath = [], meta, callbacks) {
281
298
  return true;
282
299
  return isInArrayBounds(prop) !== undefined;
283
300
  }
284
- // Check cache first
285
301
  if (prop in targetObj) {
286
302
  return true;
287
303
  }
288
- // Build path and check existence via callback
289
304
  const path = [...basePath, prop];
290
305
  const value = getValueAtPath(path);
291
306
  // Handle errors serialized by host-side callbacks — reconstruct and throw
292
307
  // so the isolate's outer try-catch can serialize them back via __reportError
293
308
  throwIfErrorSentinel(value);
294
- // Property exists if value is not undefined
295
- // Note: null values mean property exists but is null
309
+ // Note: null values mean the property exists but is null.
296
310
  return value !== undefined;
297
311
  },
298
312
  });
@@ -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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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Carry luxon values across the runtime boundary.
3
+ *
4
+ * A luxon DateTime, Duration or Interval is a class instance, and structured
5
+ * clone does not carry the prototype of one. Each goes across as a marker
6
+ * object in the framing `transfer.ts` defines, and the host rebuilds a real
7
+ * instance from it.
8
+ */
9
+ import { DateTime, Duration, Interval } from 'luxon';
10
+ import type { DurationLikeObject } from 'luxon';
11
+ import type { SentinelDecoder, SentinelEncoder, TransferSentinel } from './transfer';
12
+ import { TRANSFER_TYPE_KEY } from './transfer';
13
+ export declare const DATE_TIME_TYPE = "DateTime";
14
+ export declare const DURATION_TYPE = "Duration";
15
+ export declare const INTERVAL_TYPE = "Interval";
16
+ export interface InvalidLuxonSentinel {
17
+ __invalidReason?: string;
18
+ __invalidExplanation?: string | null;
19
+ }
20
+ export interface DateTimeSentinel extends TransferSentinel, InvalidLuxonSentinel {
21
+ [TRANSFER_TYPE_KEY]: typeof DATE_TIME_TYPE;
22
+ __isoString?: string;
23
+ __zone?: string;
24
+ }
25
+ export interface DurationSentinel extends TransferSentinel, InvalidLuxonSentinel {
26
+ [TRANSFER_TYPE_KEY]: typeof DURATION_TYPE;
27
+ __values?: DurationLikeObject;
28
+ }
29
+ export interface IntervalSentinel extends TransferSentinel, InvalidLuxonSentinel {
30
+ [TRANSFER_TYPE_KEY]: typeof INTERVAL_TYPE;
31
+ __start?: DateTimeSentinel;
32
+ __end?: DateTimeSentinel;
33
+ }
34
+ export type LuxonSentinel = DateTimeSentinel | DurationSentinel | IntervalSentinel;
35
+ export declare function isDateTimeSentinel(value: unknown): value is DateTimeSentinel;
36
+ export declare function isDurationSentinel(value: unknown): value is DurationSentinel;
37
+ export declare function isIntervalSentinel(value: unknown): value is IntervalSentinel;
38
+ export declare function isLuxonSentinel(value: unknown): value is LuxonSentinel;
39
+ export declare function dateTimeToSentinel(value: DateTime): DateTimeSentinel;
40
+ export declare function durationToSentinel(value: Duration): DurationSentinel;
41
+ export declare function intervalToSentinel(value: Interval): IntervalSentinel;
42
+ export declare function rebuildDateTime(sentinel: DateTimeSentinel): DateTime;
43
+ export declare function rebuildDuration(sentinel: DurationSentinel): Duration;
44
+ export declare function rebuildInterval(sentinel: IntervalSentinel): Interval;
45
+ export declare function rebuildLuxonValue(sentinel: LuxonSentinel): DateTime | Duration | Interval;
46
+ /**
47
+ * Turn a luxon instance into a marker, or give back nothing for any other value.
48
+ *
49
+ * The luxon `is*` helpers only read a flag on the object, which user data can
50
+ * also hold. The prototype check makes sure the value is a real instance.
51
+ */
52
+ export declare const encodeLuxonValue: SentinelEncoder;
53
+ /**
54
+ * Rebuild a luxon instance from a marker.
55
+ *
56
+ * A marker that names a type no encoder here wrote is given back as the plain
57
+ * object it is, which is what the host did before the type had a marker.
58
+ */
59
+ export declare const decodeLuxonSentinel: SentinelDecoder;
60
+ /** Walk a transferred value and rebuild every luxon instance in it. */
61
+ export declare function unwrapLuxonValues(value: unknown): unknown;
62
+ //# sourceMappingURL=luxon-transfer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"luxon-transfer.d.ts","sourceRoot":"","sources":["../../../src/runtime/luxon-transfer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAY,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAEhD,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACrF,OAAO,EAGN,iBAAiB,EAEjB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,cAAc,aAAa,CAAC;AACzC,eAAO,MAAM,aAAa,aAAa,CAAC;AACxC,eAAO,MAAM,aAAa,aAAa,CAAC;AAExC,MAAM,WAAW,oBAAoB;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB,EAAE,oBAAoB;IAC/E,CAAC,iBAAiB,CAAC,EAAE,OAAO,cAAc,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB,EAAE,oBAAoB;IAC/E,CAAC,iBAAiB,CAAC,EAAE,OAAO,aAAa,CAAC;IAC1C,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB,EAAE,oBAAoB;IAC/E,CAAC,iBAAiB,CAAC,EAAE,OAAO,aAAa,CAAC;IAC1C,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,KAAK,CAAC,EAAE,gBAAgB,CAAC;CACzB;AAED,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAEnF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAE5E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAE5E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAE5E;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,GAAG,gBAAgB,CAgBpE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,GAAG,gBAAgB,CASpE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,GAAG,gBAAgB,CAapE;AA2DD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,QAAQ,CAWpE;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,QAAQ,CAMpE;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,QAAQ,CAOpE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAIzF;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,eAK9B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,eAGjC,CAAC;AAEF,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEzD"}
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+ /**
3
+ * Carry luxon values across the runtime boundary.
4
+ *
5
+ * A luxon DateTime, Duration or Interval is a class instance, and structured
6
+ * clone does not carry the prototype of one. Each goes across as a marker
7
+ * object in the framing `transfer.ts` defines, and the host rebuilds a real
8
+ * instance from it.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.decodeLuxonSentinel = exports.encodeLuxonValue = exports.INTERVAL_TYPE = exports.DURATION_TYPE = exports.DATE_TIME_TYPE = void 0;
12
+ exports.isDateTimeSentinel = isDateTimeSentinel;
13
+ exports.isDurationSentinel = isDurationSentinel;
14
+ exports.isIntervalSentinel = isIntervalSentinel;
15
+ exports.isLuxonSentinel = isLuxonSentinel;
16
+ exports.dateTimeToSentinel = dateTimeToSentinel;
17
+ exports.durationToSentinel = durationToSentinel;
18
+ exports.intervalToSentinel = intervalToSentinel;
19
+ exports.rebuildDateTime = rebuildDateTime;
20
+ exports.rebuildDuration = rebuildDuration;
21
+ exports.rebuildInterval = rebuildInterval;
22
+ exports.rebuildLuxonValue = rebuildLuxonValue;
23
+ exports.unwrapLuxonValues = unwrapLuxonValues;
24
+ const luxon_1 = require("luxon");
25
+ const transfer_1 = require("./transfer");
26
+ exports.DATE_TIME_TYPE = 'DateTime';
27
+ exports.DURATION_TYPE = 'Duration';
28
+ exports.INTERVAL_TYPE = 'Interval';
29
+ function isDateTimeSentinel(value) {
30
+ return (0, transfer_1.transferTypeOf)(value) === exports.DATE_TIME_TYPE;
31
+ }
32
+ function isDurationSentinel(value) {
33
+ return (0, transfer_1.transferTypeOf)(value) === exports.DURATION_TYPE;
34
+ }
35
+ function isIntervalSentinel(value) {
36
+ return (0, transfer_1.transferTypeOf)(value) === exports.INTERVAL_TYPE;
37
+ }
38
+ function isLuxonSentinel(value) {
39
+ return isDateTimeSentinel(value) || isDurationSentinel(value) || isIntervalSentinel(value);
40
+ }
41
+ function dateTimeToSentinel(value) {
42
+ if (!value.isValid) {
43
+ return {
44
+ [transfer_1.TRANSFER_TYPE_KEY]: exports.DATE_TIME_TYPE,
45
+ __invalidReason: value.invalidReason ?? 'unknown',
46
+ __invalidExplanation: value.invalidExplanation,
47
+ };
48
+ }
49
+ const sentinel = {
50
+ [transfer_1.TRANSFER_TYPE_KEY]: exports.DATE_TIME_TYPE,
51
+ __isoString: value.toISO() ?? '',
52
+ };
53
+ // Carry a zone name only when the value does not use the system zone. The
54
+ // host then keeps its own system zone for such a value.
55
+ if (value.zone.type !== 'system')
56
+ sentinel.__zone = value.zone.name;
57
+ return sentinel;
58
+ }
59
+ function durationToSentinel(value) {
60
+ if (!value.isValid) {
61
+ return {
62
+ [transfer_1.TRANSFER_TYPE_KEY]: exports.DURATION_TYPE,
63
+ __invalidReason: value.invalidReason ?? 'unknown',
64
+ __invalidExplanation: value.invalidExplanation,
65
+ };
66
+ }
67
+ return { [transfer_1.TRANSFER_TYPE_KEY]: exports.DURATION_TYPE, __values: value.toObject() };
68
+ }
69
+ function intervalToSentinel(value) {
70
+ if (!value.isValid || value.start === null || value.end === null) {
71
+ return {
72
+ [transfer_1.TRANSFER_TYPE_KEY]: exports.INTERVAL_TYPE,
73
+ __invalidReason: value.invalidReason ?? 'unknown',
74
+ __invalidExplanation: value.invalidExplanation,
75
+ };
76
+ }
77
+ return {
78
+ [transfer_1.TRANSFER_TYPE_KEY]: exports.INTERVAL_TYPE,
79
+ __start: dateTimeToSentinel(value.start),
80
+ __end: dateTimeToSentinel(value.end),
81
+ };
82
+ }
83
+ // The host rebuilds from fields that came across the boundary, and user data
84
+ // can hold the same fields. The checks below run before any field reaches
85
+ // luxon. A field that does not pass gives an invalid instance.
86
+ const DURATION_UNIT_KEYS = new Set([
87
+ 'year',
88
+ 'years',
89
+ 'quarter',
90
+ 'quarters',
91
+ 'month',
92
+ 'months',
93
+ 'week',
94
+ 'weeks',
95
+ 'day',
96
+ 'days',
97
+ 'hour',
98
+ 'hours',
99
+ 'minute',
100
+ 'minutes',
101
+ 'second',
102
+ 'seconds',
103
+ 'millisecond',
104
+ 'milliseconds',
105
+ ]);
106
+ // Luxon resolves a fixed offset only in the "UTC" spelling, such as "UTC+1".
107
+ // It does not resolve an offset written against GMT, such as "GMT+2", and no
108
+ // zone database holds that name either. Bare "GMT" is a zone database name, so
109
+ // it passes the IANA check below.
110
+ const FIXED_OFFSET_ZONE_NAME = /^utc(?:[+-]\d{1,2}(?::\d{2})?)?$/i;
111
+ function invalidArguments(sentinel) {
112
+ const reason = typeof sentinel.__invalidReason === 'string' && sentinel.__invalidReason.length > 0
113
+ ? sentinel.__invalidReason
114
+ : 'unknown';
115
+ const explanation = typeof sentinel.__invalidExplanation === 'string' ? sentinel.__invalidExplanation : undefined;
116
+ return [reason, explanation];
117
+ }
118
+ /** Give back a zone name luxon can resolve, or nothing to keep the system zone. */
119
+ function acceptedZoneName(zone) {
120
+ if (typeof zone !== 'string' || zone.length === 0)
121
+ return undefined;
122
+ const lowered = zone.toLowerCase();
123
+ if (lowered === 'local' || lowered === 'system' || lowered === 'default')
124
+ return undefined;
125
+ if (FIXED_OFFSET_ZONE_NAME.test(zone))
126
+ return zone;
127
+ return luxon_1.IANAZone.isValidZone(zone) ? zone : undefined;
128
+ }
129
+ function isDurationValues(value) {
130
+ if (typeof value !== 'object' || value === null || !(0, transfer_1.isPlainObject)(value))
131
+ return false;
132
+ return Object.entries(value).every(([key, amount]) => DURATION_UNIT_KEYS.has(key) && typeof amount === 'number' && Number.isFinite(amount));
133
+ }
134
+ function rebuildDateTime(sentinel) {
135
+ const isoString = sentinel.__isoString;
136
+ if (typeof isoString !== 'string') {
137
+ return luxon_1.DateTime.invalid(...invalidArguments(sentinel));
138
+ }
139
+ // A marker without a zone name came from a value in the system zone. Name the
140
+ // system zone, because the default zone here is the timezone of the workflow.
141
+ const zone = acceptedZoneName(sentinel.__zone) ?? 'local';
142
+ // Do not pass `setZone`. With `setZone`, luxon takes the zone from the offset
143
+ // in the ISO string and drops the zone name the marker carries.
144
+ return luxon_1.DateTime.fromISO(isoString, { zone });
145
+ }
146
+ function rebuildDuration(sentinel) {
147
+ const values = sentinel.__values;
148
+ if (!isDurationValues(values)) {
149
+ return luxon_1.Duration.invalid(...invalidArguments(sentinel));
150
+ }
151
+ return luxon_1.Duration.fromObject(values);
152
+ }
153
+ function rebuildInterval(sentinel) {
154
+ const start = sentinel.__start;
155
+ const end = sentinel.__end;
156
+ if (!isDateTimeSentinel(start) || !isDateTimeSentinel(end)) {
157
+ return luxon_1.Interval.invalid(...invalidArguments(sentinel));
158
+ }
159
+ return luxon_1.Interval.fromDateTimes(rebuildDateTime(start), rebuildDateTime(end));
160
+ }
161
+ function rebuildLuxonValue(sentinel) {
162
+ if (isDateTimeSentinel(sentinel))
163
+ return rebuildDateTime(sentinel);
164
+ if (isDurationSentinel(sentinel))
165
+ return rebuildDuration(sentinel);
166
+ return rebuildInterval(sentinel);
167
+ }
168
+ /**
169
+ * Turn a luxon instance into a marker, or give back nothing for any other value.
170
+ *
171
+ * The luxon `is*` helpers only read a flag on the object, which user data can
172
+ * also hold. The prototype check makes sure the value is a real instance.
173
+ */
174
+ const encodeLuxonValue = (value) => {
175
+ if (value instanceof luxon_1.DateTime && luxon_1.DateTime.isDateTime(value))
176
+ return dateTimeToSentinel(value);
177
+ if (value instanceof luxon_1.Duration && luxon_1.Duration.isDuration(value))
178
+ return durationToSentinel(value);
179
+ if (value instanceof luxon_1.Interval && luxon_1.Interval.isInterval(value))
180
+ return intervalToSentinel(value);
181
+ return undefined;
182
+ };
183
+ exports.encodeLuxonValue = encodeLuxonValue;
184
+ /**
185
+ * Rebuild a luxon instance from a marker.
186
+ *
187
+ * A marker that names a type no encoder here wrote is given back as the plain
188
+ * object it is, which is what the host did before the type had a marker.
189
+ */
190
+ const decodeLuxonSentinel = (sentinel) => {
191
+ if (!isLuxonSentinel(sentinel))
192
+ return sentinel;
193
+ return rebuildLuxonValue(sentinel);
194
+ };
195
+ exports.decodeLuxonSentinel = decodeLuxonSentinel;
196
+ /** Walk a transferred value and rebuild every luxon instance in it. */
197
+ function unwrapLuxonValues(value) {
198
+ return (0, transfer_1.unwrapTransferSentinels)(value, exports.decodeLuxonSentinel);
199
+ }
200
+ //# sourceMappingURL=luxon-transfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"luxon-transfer.js","sourceRoot":"","sources":["../../../src/runtime/luxon-transfer.ts"],"names":[],"mappings":"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"}
@@ -2,18 +2,18 @@
2
2
  * Prepare a value for transfer across the V8 isolate boundary.
3
3
  *
4
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.
5
+ * from non-standard types. A class instance such as a luxon DateTime loses its
6
+ * class identity and arrives on the host as a plain object.
7
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.
8
+ * This function recursively walks a value and converts each such type into a
9
+ * structured-cloneable marker object. The host rebuilds a real instance from
10
+ * the marker. It runs inside the isolate before the result is transferred.
11
11
  *
12
12
  * Note: JS Date objects survive structured clone with prototype intact
13
13
  * (Date is a standard structured-cloneable type) and are not converted.
14
14
  *
15
- * Circular references are not handled — expression results should not
16
- * contain cycles.
15
+ * This walk does not record the objects it has seen, because expression results
16
+ * are not expected to refer to themselves. The host walk does record them.
17
17
  */
18
18
  export declare function __prepareForTransfer(value: unknown): unknown;
19
19
  //# sourceMappingURL=serialize.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../../src/runtime/serialize.ts"],"names":[],"mappings":"AAyBA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA8B5D"}
@@ -1,57 +1,69 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.__prepareForTransfer = __prepareForTransfer;
4
- const luxon_1 = require("luxon");
5
- /** Type guard: plain object with Object.prototype or null prototype. */
6
- function isPlainObject(value) {
7
- const proto = Object.getPrototypeOf(value);
8
- return proto === Object.prototype || proto === null;
4
+ const luxon_transfer_1 = require("./luxon-transfer");
5
+ const transfer_1 = require("./transfer");
6
+ /**
7
+ * The types that go across as a marker. Each encoder claims the values it owns
8
+ * and passes on every other, so a new type is one entry here.
9
+ */
10
+ const ENCODERS = [luxon_transfer_1.encodeLuxonValue];
11
+ function encode(value) {
12
+ for (const encoder of ENCODERS) {
13
+ const sentinel = encoder(value);
14
+ if (sentinel !== undefined)
15
+ return sentinel;
16
+ }
17
+ return undefined;
9
18
  }
10
19
  /**
11
20
  * Prepare a value for transfer across the V8 isolate boundary.
12
21
  *
13
22
  * isolated-vm's `copy: true` uses structured clone, which strips prototypes
14
- * from non-standard types. Luxon DateTime/Duration/Interval lose their class
15
- * identity and arrive on the host as plain objects.
23
+ * from non-standard types. A class instance such as a luxon DateTime loses its
24
+ * class identity and arrives on the host as a plain object.
16
25
  *
17
- * This function recursively walks a value and converts types that don't
18
- * survive structured clone into their string representations. It runs
19
- * inside the isolate before the result is transferred.
26
+ * This function recursively walks a value and converts each such type into a
27
+ * structured-cloneable marker object. The host rebuilds a real instance from
28
+ * the marker. It runs inside the isolate before the result is transferred.
20
29
  *
21
30
  * Note: JS Date objects survive structured clone with prototype intact
22
31
  * (Date is a standard structured-cloneable type) and are not converted.
23
32
  *
24
- * Circular references are not handled — expression results should not
25
- * contain cycles.
33
+ * This walk does not record the objects it has seen, because expression results
34
+ * are not expected to refer to themselves. The host walk does record them.
26
35
  */
27
36
  function __prepareForTransfer(value) {
28
37
  if (value === null || value === undefined)
29
38
  return value;
30
39
  if (typeof value !== 'object')
31
40
  return value;
32
- // Luxon DateTime -> ISO string (toISO() returns null for invalid DateTime)
33
- if (luxon_1.DateTime.isDateTime(value))
34
- return value.toISO() ?? null;
35
- // Luxon Duration -> ISO string (toISO() returns null for invalid Duration)
36
- if (luxon_1.Duration.isDuration(value))
37
- return value.toISO() ?? null;
38
- // Luxon Interval -> ISO string (toISO() returns "Invalid Interval" for invalid Interval)
39
- if (luxon_1.Interval.isInterval(value)) {
40
- const iso = value.toISO();
41
- return iso === 'Invalid Interval' ? null : iso;
42
- }
43
- // Array — walk elements
41
+ const sentinel = encode(value);
42
+ if (sentinel !== undefined)
43
+ return sentinel;
44
44
  if (Array.isArray(value))
45
45
  return value.map(__prepareForTransfer);
46
- // Only walk plain objects — structured-cloneable types like Date, Map, Set,
47
- // RegExp, Error, typed arrays survive copy:true with prototypes intact.
48
- if (!isPlainObject(value))
49
- return value;
50
- // Plain object — walk values
46
+ if (!(0, transfer_1.isPlainObject)(value)) {
47
+ if ((0, transfer_1.isStructuredCloneBuiltin)(value))
48
+ return value;
49
+ // A class instance the host cannot rebuild. Structured clone flattens its
50
+ // prototype away, so a marker key on it would read as one of ours. Mark it
51
+ // opaque, and the host gives the contents back as data.
52
+ return {
53
+ [transfer_1.TRANSFER_ESCAPED_KEY]: true,
54
+ [transfer_1.TRANSFER_OPAQUE_KEY]: true,
55
+ [transfer_1.TRANSFER_VALUE_KEY]: value,
56
+ };
57
+ }
51
58
  const result = {};
59
+ let collides = false;
52
60
  for (const key of Object.keys(value)) {
61
+ if (transfer_1.TRANSFER_FRAMING_KEYS.includes(key))
62
+ collides = true;
53
63
  result[key] = __prepareForTransfer(value[key]);
54
64
  }
55
- return result;
65
+ // User data can hold the same keys as our framing. Escape such an object, so
66
+ // the host reads the object itself as data but still walks what is inside it.
67
+ return collides ? { [transfer_1.TRANSFER_ESCAPED_KEY]: true, [transfer_1.TRANSFER_VALUE_KEY]: result } : result;
56
68
  }
57
69
  //# sourceMappingURL=serialize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../../src/runtime/serialize.ts"],"names":[],"mappings":";;;AAAA,iCAAqD;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,8BAAqC,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,gBAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;IAC7D,2EAA2E;IAC3E,IAAI,gBAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;IAC7D,yFAAyF;IACzF,IAAI,gBAAQ,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"}
1
+ {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../../src/runtime/serialize.ts"],"names":[],"mappings":";;;AAAA,qDAAoD;AAEpD,yCAOoB;AAEpB;;;GAGG;AACH,MAAM,QAAQ,GAAsB,CAAC,iCAAgB,CAAC,CAAC;AAEvD,SAAS,MAAM,CAAC,KAAa;IAC5B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC;IAC7C,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,8BAAqC,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,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAE5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAEjE,IAAI,CAAC,IAAA,wBAAa,EAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,IAAI,IAAA,mCAAwB,EAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAClD,0EAA0E;QAC1E,2EAA2E;QAC3E,wDAAwD;QACxD,OAAO;YACN,CAAC,+BAAoB,CAAC,EAAE,IAAI;YAC5B,CAAC,8BAAmB,CAAC,EAAE,IAAI;YAC3B,CAAC,6BAAkB,CAAC,EAAE,KAAK;SAC3B,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,IAAI,gCAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,QAAQ,GAAG,IAAI,CAAC;QACzD,MAAM,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,6EAA6E;IAC7E,8EAA8E;IAC9E,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,+BAAoB,CAAC,EAAE,IAAI,EAAE,CAAC,6BAAkB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3F,CAAC"}