@workflow/core 5.0.0-beta.39 → 5.0.0-beta.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/classify-error.d.ts.map +1 -1
- package/dist/classify-error.js +5 -2
- package/dist/correlation-id.d.ts +109 -0
- package/dist/correlation-id.d.ts.map +1 -0
- package/dist/correlation-id.js +139 -0
- package/dist/describe-error.d.ts.map +1 -1
- package/dist/describe-error.js +14 -1
- package/dist/events-consumer.d.ts +1 -0
- package/dist/events-consumer.d.ts.map +1 -1
- package/dist/events-consumer.js +11 -3
- package/dist/private.d.ts +17 -1
- package/dist/private.d.ts.map +1 -1
- package/dist/private.js +1 -1
- package/dist/runtime/constants.d.ts +19 -0
- package/dist/runtime/constants.d.ts.map +1 -1
- package/dist/runtime/constants.js +30 -1
- package/dist/runtime/deployment-guard.d.ts +99 -0
- package/dist/runtime/deployment-guard.d.ts.map +1 -0
- package/dist/runtime/deployment-guard.js +154 -0
- package/dist/runtime/quickjs-assets.generated.d.ts +14 -0
- package/dist/runtime/quickjs-assets.generated.d.ts.map +1 -0
- package/dist/runtime/quickjs-assets.generated.js +30 -0
- package/dist/runtime/quickjs-entrypoint.d.ts +124 -0
- package/dist/runtime/quickjs-entrypoint.d.ts.map +1 -0
- package/dist/runtime/quickjs-entrypoint.js +1429 -0
- package/dist/runtime/quickjs-runtime.d.ts +193 -0
- package/dist/runtime/quickjs-runtime.d.ts.map +1 -0
- package/dist/runtime/quickjs-runtime.js +1944 -0
- package/dist/runtime/run.d.ts +2 -0
- package/dist/runtime/run.d.ts.map +1 -1
- package/dist/runtime/run.js +9 -4
- package/dist/runtime/runs.d.ts +18 -1
- package/dist/runtime/runs.d.ts.map +1 -1
- package/dist/runtime/runs.js +96 -2
- package/dist/runtime/start.d.ts.map +1 -1
- package/dist/runtime/start.js +9 -1
- package/dist/runtime/suspension-handler.d.ts +7 -0
- package/dist/runtime/suspension-handler.d.ts.map +1 -1
- package/dist/runtime/suspension-handler.js +29 -2
- package/dist/runtime/vm-mode.d.ts +44 -0
- package/dist/runtime/vm-mode.d.ts.map +1 -0
- package/dist/runtime/vm-mode.js +62 -0
- package/dist/runtime/vm-serde-bundle.generated.d.ts +14 -0
- package/dist/runtime/vm-serde-bundle.generated.d.ts.map +1 -0
- package/dist/runtime/vm-serde-bundle.generated.js +16 -0
- package/dist/runtime.d.ts +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +484 -47
- package/dist/serialization/codec-devalue-vm.d.ts +9 -0
- package/dist/serialization/codec-devalue-vm.d.ts.map +1 -0
- package/dist/serialization/codec-devalue-vm.js +137 -0
- package/dist/serialization/reducers/class-vm.d.ts +20 -0
- package/dist/serialization/reducers/class-vm.d.ts.map +1 -0
- package/dist/serialization/reducers/class-vm.js +77 -0
- package/dist/serialization/reducers/common-vm.d.ts +15 -0
- package/dist/serialization/reducers/common-vm.d.ts.map +1 -0
- package/dist/serialization/reducers/common-vm.js +579 -0
- package/dist/serialization/reducers/common.d.ts.map +1 -1
- package/dist/serialization/reducers/common.js +28 -6
- package/dist/serialization/reducers/step-function-vm.d.ts +44 -0
- package/dist/serialization/reducers/step-function-vm.d.ts.map +1 -0
- package/dist/serialization/reducers/step-function-vm.js +97 -0
- package/dist/serialization/vm-bundle-entry.d.ts +12 -0
- package/dist/serialization/vm-bundle-entry.d.ts.map +1 -0
- package/dist/serialization/vm-bundle-entry.js +58 -0
- package/dist/serialization/workflow-vm.d.ts +24 -0
- package/dist/serialization/workflow-vm.d.ts.map +1 -0
- package/dist/serialization/workflow-vm.js +66 -0
- package/dist/serialization.d.ts +2 -1
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +26 -21
- package/dist/source-map.d.ts +20 -0
- package/dist/source-map.d.ts.map +1 -1
- package/dist/source-map.js +47 -1
- package/dist/step.d.ts.map +1 -1
- package/dist/step.js +7 -2
- package/dist/telemetry/semantic-conventions.d.ts +78 -0
- package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
- package/dist/telemetry/semantic-conventions.js +56 -1
- package/dist/telemetry.d.ts +5 -0
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +13 -13
- package/dist/version.d.ts +1 -1
- package/dist/version.js +2 -2
- package/dist/workflow/abort-controller.d.ts.map +1 -1
- package/dist/workflow/abort-controller.js +6 -4
- package/dist/workflow/attribute-dispatcher.js +2 -2
- package/dist/workflow/hook.js +2 -2
- package/dist/workflow/sleep.js +2 -2
- package/dist/workflow.d.ts +49 -2
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +723 -569
- package/docs/api-reference/create-hook.mdx +1 -1
- package/docs/foundations/starting-workflows.mdx +74 -1
- package/package.json +8 -7
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VM-compatible devalue codec.
|
|
3
|
+
*
|
|
4
|
+
* Same as codec-devalue.ts but uses VM-compatible reducers/revivers
|
|
5
|
+
* (no Node.js Buffer, no node:util). Safe to bundle into the QuickJS VM.
|
|
6
|
+
*/
|
|
7
|
+
import type { Codec } from './codec.js';
|
|
8
|
+
export declare const devalueVmCodec: Codec;
|
|
9
|
+
//# sourceMappingURL=codec-devalue-vm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec-devalue-vm.d.ts","sourceRoot":"","sources":["../../src/serialization/codec-devalue-vm.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAqB,MAAM,YAAY,CAAC;AAyI3D,eAAO,MAAM,cAAc,EAAE,KAyB5B,CAAC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VM-compatible devalue codec.
|
|
3
|
+
*
|
|
4
|
+
* Same as codec-devalue.ts but uses VM-compatible reducers/revivers
|
|
5
|
+
* (no Node.js Buffer, no node:util). Safe to bundle into the QuickJS VM.
|
|
6
|
+
*/
|
|
7
|
+
import { parse, stringify, unflatten } from 'devalue';
|
|
8
|
+
import { getClassReducers, getClassRevivers } from './reducers/class-vm.js';
|
|
9
|
+
import { getCommonReducers, getCommonRevivers } from './reducers/common-vm.js';
|
|
10
|
+
import { getStepFunctionReducer, getStepFunctionReviver, } from './reducers/step-function-vm.js';
|
|
11
|
+
import { SerializationFormat } from './types.js';
|
|
12
|
+
const encoder = new TextEncoder();
|
|
13
|
+
const decoder = new TextDecoder();
|
|
14
|
+
// ---- AbortController / AbortSignal (workflow VM context) ----
|
|
15
|
+
// Mirrors the node:vm engine's workflow-context abort reducers/revivers in
|
|
16
|
+
// serialization.ts: reduce by reading the stream/hook symbols stamped at
|
|
17
|
+
// controller construction; revive to the bootstrap's WorkflowAbortSignal
|
|
18
|
+
// class (looked up lazily on globalThis — the serde bundle is evaluated
|
|
19
|
+
// before the bootstrap defines it).
|
|
20
|
+
const ABORT_STREAM_NAME = Symbol.for('WORKFLOW_ABORT_STREAM_NAME');
|
|
21
|
+
const ABORT_HOOK_TOKEN = Symbol.for('WORKFLOW_ABORT_HOOK_TOKEN');
|
|
22
|
+
function reduceAbortBySymbol(signal, holder) {
|
|
23
|
+
const streamName = holder[ABORT_STREAM_NAME] ?? holder.signal?.[ABORT_STREAM_NAME];
|
|
24
|
+
const hookToken = holder[ABORT_HOOK_TOKEN] ?? holder.signal?.[ABORT_HOOK_TOKEN];
|
|
25
|
+
if (!streamName) {
|
|
26
|
+
throw new Error('AbortController/AbortSignal stream name is not set');
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
streamName,
|
|
30
|
+
hookToken,
|
|
31
|
+
aborted: signal.aborted,
|
|
32
|
+
reason: signal.aborted ? signal.reason : undefined,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function reviveAbortSignalVM(value) {
|
|
36
|
+
const Cls = globalThis.__WorkflowAbortSignal;
|
|
37
|
+
if (typeof Cls !== 'function') {
|
|
38
|
+
throw new Error('WorkflowAbortSignal is not registered in the VM (bootstrap not evaluated)');
|
|
39
|
+
}
|
|
40
|
+
const signal = new Cls(value.streamName, value.hookToken);
|
|
41
|
+
if (value.aborted)
|
|
42
|
+
signal._setAborted(value.reason);
|
|
43
|
+
return signal;
|
|
44
|
+
}
|
|
45
|
+
function getAbortReducersVM() {
|
|
46
|
+
return {
|
|
47
|
+
AbortController: (value) => {
|
|
48
|
+
if (!value || typeof value !== 'object' || !value.signal)
|
|
49
|
+
return false;
|
|
50
|
+
const hasAbortSymbol = value[ABORT_STREAM_NAME] ?? value.signal?.[ABORT_STREAM_NAME];
|
|
51
|
+
if (hasAbortSymbol === undefined)
|
|
52
|
+
return false;
|
|
53
|
+
return reduceAbortBySymbol(value.signal, value);
|
|
54
|
+
},
|
|
55
|
+
AbortSignal: (value) => {
|
|
56
|
+
if (!value || typeof value !== 'object')
|
|
57
|
+
return false;
|
|
58
|
+
if (value[ABORT_STREAM_NAME] === undefined)
|
|
59
|
+
return false;
|
|
60
|
+
return reduceAbortBySymbol(value, value);
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function getAbortReviversVM() {
|
|
65
|
+
return {
|
|
66
|
+
AbortController: (value) => ({
|
|
67
|
+
[ABORT_STREAM_NAME]: value.streamName,
|
|
68
|
+
[ABORT_HOOK_TOKEN]: value.hookToken,
|
|
69
|
+
signal: reviveAbortSignalVM(value),
|
|
70
|
+
abort: () => { },
|
|
71
|
+
}),
|
|
72
|
+
AbortSignal: (value) => reviveAbortSignalVM(value),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function getReducersForMode(mode) {
|
|
76
|
+
switch (mode) {
|
|
77
|
+
case 'workflow':
|
|
78
|
+
return {
|
|
79
|
+
...getAbortReducersVM(),
|
|
80
|
+
...getClassReducers(),
|
|
81
|
+
...getStepFunctionReducer(),
|
|
82
|
+
...getCommonReducers(),
|
|
83
|
+
};
|
|
84
|
+
case 'step':
|
|
85
|
+
return {
|
|
86
|
+
...getClassReducers(),
|
|
87
|
+
...getCommonReducers(),
|
|
88
|
+
};
|
|
89
|
+
case 'client':
|
|
90
|
+
return {
|
|
91
|
+
...getClassReducers(),
|
|
92
|
+
...getCommonReducers(),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function getReviversForMode(mode) {
|
|
97
|
+
switch (mode) {
|
|
98
|
+
case 'workflow':
|
|
99
|
+
return {
|
|
100
|
+
...getAbortReviversVM(),
|
|
101
|
+
...getClassRevivers(),
|
|
102
|
+
...getStepFunctionReviver(),
|
|
103
|
+
...getCommonRevivers(),
|
|
104
|
+
};
|
|
105
|
+
case 'step':
|
|
106
|
+
return {
|
|
107
|
+
...getClassRevivers(),
|
|
108
|
+
...getCommonRevivers(),
|
|
109
|
+
};
|
|
110
|
+
case 'client':
|
|
111
|
+
return {
|
|
112
|
+
...getClassRevivers(),
|
|
113
|
+
...getCommonRevivers(),
|
|
114
|
+
StepFunction: () => {
|
|
115
|
+
throw new Error('Step functions cannot be deserialized in client context.');
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
export const devalueVmCodec = {
|
|
121
|
+
formatPrefix: SerializationFormat.DEVALUE_V1,
|
|
122
|
+
serialize(value, mode) {
|
|
123
|
+
const reducers = getReducersForMode(mode);
|
|
124
|
+
const str = stringify(value, reducers);
|
|
125
|
+
return encoder.encode(str);
|
|
126
|
+
},
|
|
127
|
+
deserialize(data, mode) {
|
|
128
|
+
const revivers = getReviversForMode(mode);
|
|
129
|
+
const str = decoder.decode(data);
|
|
130
|
+
return parse(str, revivers);
|
|
131
|
+
},
|
|
132
|
+
deserializeLegacy(data, mode) {
|
|
133
|
+
const revivers = getReviversForMode(mode);
|
|
134
|
+
return unflatten(data, revivers);
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWMtZGV2YWx1ZS12bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJpYWxpemF0aW9uL2NvZGVjLWRldmFsdWUtdm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0UsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixzQkFBc0IsR0FDdkIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQWdDLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRS9FLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztBQUVsQyxnRUFBZ0U7QUFDaEUsMkVBQTJFO0FBQzNFLHlFQUF5RTtBQUN6RSx5RUFBeUU7QUFDekUsd0VBQXdFO0FBQ3hFLG9DQUFvQztBQUNwQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUNuRSxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQVNqRSxTQUFTLG1CQUFtQixDQUMxQixNQUE4QyxFQUM5QyxNQUFXO0lBRVgsTUFBTSxVQUFVLEdBQ2QsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbEUsTUFBTSxTQUFTLEdBQ2IsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksTUFBTSxDQUFDLE1B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QUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxPQUFPLEtBQUssQ0FBQyxHQUFHLEVBQUUsUUFBK0MsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFhLEVBQUUsSUFBdUI7UUFDdEQsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsT0FBTyxTQUFTLENBQ2QsSUFBYSxFQUNiLFFBQStDLENBQ2hELENBQUM7SUFDSixDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVk0tY29tcGF0aWJsZSBkZXZhbHVlIGNvZGVjLlxuICpcbiAqIFNhbWUgYXMgY29kZWMtZGV2YWx1ZS50cyBidXQgdXNlcyBWTS1jb21wYXRpYmxlIHJlZHVjZXJzL3Jldml2ZXJzXG4gKiAobm8gTm9kZS5qcyBCdWZmZXIsIG5vIG5vZGU6dXRpbCkuIFNhZmUgdG8gYnVuZGxlIGludG8gdGhlIFF1aWNrSlMgVk0uXG4gKi9cblxuaW1wb3J0IHsgcGFyc2UsIHN0cmluZ2lmeSwgdW5mbGF0dGVuIH0gZnJvbSAnZGV2YWx1ZSc7XG5pbXBvcnQgdHlwZSB7IENvZGVjLCBTZXJpYWxpemF0aW9uTW9kZSB9IGZyb20gJy4vY29kZWMuanMnO1xuaW1wb3J0IHsgZ2V0Q2xhc3NSZWR1Y2VycywgZ2V0Q2xhc3NSZXZpdmVycyB9IGZyb20gJy4vcmVkdWNlcnMvY2xhc3Mtdm0uanMnO1xuaW1wb3J0IHsgZ2V0Q29tbW9uUmVkdWNlcnMsIGdldENvbW1vblJldml2ZXJzIH0gZnJvbSAnLi9yZWR1Y2Vycy9jb21tb24tdm0uanMnO1xuaW1wb3J0IHtcbiAgZ2V0U3RlcEZ1bmN0aW9uUmVkdWNlcixcbiAgZ2V0U3RlcEZ1bmN0aW9uUmV2aXZlcixcbn0gZnJvbSAnLi9yZWR1Y2Vycy9zdGVwLWZ1bmN0aW9uLXZtLmpzJztcbmltcG9ydCB7IHR5cGUgUmVkdWNlcnMsIHR5cGUgUmV2aXZlcnMsIFNlcmlhbGl6YXRpb25Gb3JtYXQgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpO1xuXG4vLyAtLS0tIEFib3J0Q29udHJvbGxlciAvIEFib3J0U2lnbmFsICh3b3JrZmxvdyBWTSBjb250ZXh0KSAtLS0tXG4vLyBNaXJyb3JzIHRoZSBub2RlOnZtIGVuZ2luZSdzIHdvcmtmbG93LWNvbnRleHQgYWJvcnQgcmVkdWNlcnMvcmV2aXZlcnMgaW5cbi8vIHNlcmlhbGl6YXRpb24udHM6IHJlZHVjZSBieSByZWFkaW5nIHRoZSBzdHJlYW0vaG9vayBzeW1ib2xzIHN0YW1wZWQgYXRcbi8vIGNvbnRyb2xsZXIgY29uc3RydWN0aW9uOyByZXZpdmUgdG8gdGhlIGJvb3RzdHJhcCdzIFdvcmtmbG93QWJvcnRTaWduYWxcbi8vIGNsYXNzIChsb29rZWQgdXAgbGF6aWx5IG9uIGdsb2JhbFRoaXMg4oCUIHRoZSBzZXJkZSBidW5kbGUgaXMgZXZhbHVhdGVkXG4vLyBiZWZvcmUgdGhlIGJvb3RzdHJhcCBkZWZpbmVzIGl0KS5cbmNvbnN0IEFCT1JUX1NUUkVBTV9OQU1FID0gU3ltYm9sLmZvcignV09SS0ZMT1dfQUJPUlRfU1RSRUFNX05BTUUnKTtcbmNvbnN0IEFCT1JUX0hPT0tfVE9LRU4gPSBTeW1ib2wuZm9yKCdXT1JLRkxPV19BQk9SVF9IT09LX1RPS0VOJyk7XG5cbnR5cGUgQWJvcnRTZXJpYWxpemVkID0ge1xuICBzdHJlYW1OYW1lOiBzdHJpbmc7XG4gIGhvb2tUb2tlbjogc3RyaW5nO1xuICBhYm9ydGVkOiBib29sZWFuO1xuICByZWFzb24/OiB1bmtub3duO1xufTtcblxuZnVuY3Rpb24gcmVkdWNlQWJvcnRCeVN5bWJvbChcbiAgc2lnbmFsOiB7IGFib3J0ZWQ6IGJvb2xlYW47IHJlYXNvbj86IHVua25vd24gfSxcbiAgaG9sZGVyOiBhbnlcbik6IEFib3J0U2VyaWFsaXplZCB7XG4gIGNvbnN0IHN0cmVhbU5hbWUgPVxuICAgIGhvbGRlcltBQk9SVF9TVFJFQU1fTkFNRV0gPz8gaG9sZGVyLnNpZ25hbD8uW0FCT1JUX1NUUkVBTV9OQU1FXTtcbiAgY29uc3QgaG9va1Rva2VuID1cbiAgICBob2xkZXJbQUJPUlRfSE9PS19UT0tFTl0gPz8gaG9sZGVyLnNpZ25hbD8uW0FCT1JUX0hPT0tfVE9LRU5dO1xuICBpZiAoIXN0cmVhbU5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fib3J0Q29udHJvbGxlci9BYm9ydFNpZ25hbCBzdHJlYW0gbmFtZSBpcyBub3Qgc2V0Jyk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzdHJlYW1OYW1lLFxuICAgIGhvb2tUb2tlbixcbiAgICBhYm9ydGVkOiBzaWduYWwuYWJvcnRlZCxcbiAgICByZWFzb246IHNpZ25hbC5hYm9ydGVkID8gc2lnbmFsLnJlYXNvbiA6IHVuZGVmaW5lZCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gcmV2aXZlQWJvcnRTaWduYWxWTSh2YWx1ZTogQWJvcnRTZXJpYWxpemVkKSB7XG4gIGNvbnN0IENscyA9IChnbG9iYWxUaGlzIGFzIGFueSkuX19Xb3JrZmxvd0Fib3J0U2lnbmFsO1xuICBpZiAodHlwZW9mIENscyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdXb3JrZmxvd0Fib3J0U2lnbmFsIGlzIG5vdCByZWdpc3RlcmVkIGluIHRoZSBWTSAoYm9vdHN0cmFwIG5vdCBldmFsdWF0ZWQpJ1xuICAgICk7XG4gIH1cbiAgY29uc3Qgc2lnbmFsID0gbmV3IENscyh2YWx1ZS5zdHJlYW1OYW1lLCB2YWx1ZS5ob29rVG9rZW4pO1xuICBpZiAodmFsdWUuYWJvcnRlZCkgc2lnbmFsLl9zZXRBYm9ydGVkKHZhbHVlLnJlYXNvbik7XG4gIHJldHVybiBzaWduYWw7XG59XG5cbmZ1bmN0aW9uIGdldEFib3J0UmVkdWNlcnNWTSgpOiBQYXJ0aWFsPFJlZHVjZXJzPiB7XG4gIHJldHVybiB7XG4gICAgQWJvcnRDb250cm9sbGVyOiAodmFsdWUpID0+IHtcbiAgICAgIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCAhdmFsdWUuc2lnbmFsKSByZXR1cm4gZmFsc2U7XG4gICAgICBjb25zdCBoYXNBYm9ydFN5bWJvbCA9XG4gICAgICAgIHZhbHVlW0FCT1JUX1NUUkVBTV9OQU1FXSA/PyB2YWx1ZS5zaWduYWw/LltBQk9SVF9TVFJFQU1fTkFNRV07XG4gICAgICBpZiAoaGFzQWJvcnRTeW1ib2wgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIHJlZHVjZUFib3J0QnlTeW1ib2wodmFsdWUuc2lnbmFsLCB2YWx1ZSk7XG4gICAgfSxcbiAgICBBYm9ydFNpZ25hbDogKHZhbHVlKSA9PiB7XG4gICAgICBpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHJldHVybiBmYWxzZTtcbiAgICAgIGlmICgodmFsdWUgYXMgYW55KVtBQk9SVF9TVFJFQU1fTkFNRV0gPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIHJlZHVjZUFib3J0QnlTeW1ib2wodmFsdWUgYXMgYW55LCB2YWx1ZSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0QWJvcnRSZXZpdmVyc1ZNKCk6IFBhcnRpYWw8UmV2aXZlcnM+IHtcbiAgcmV0dXJuIHtcbiAgICBBYm9ydENvbnRyb2xsZXI6ICh2YWx1ZTogQWJvcnRTZXJpYWxpemVkKSA9PiAoe1xuICAgICAgW0FCT1JUX1NUUkVBTV9OQU1FXTogdmFsdWUuc3RyZWFtTmFtZSxcbiAgICAgIFtBQk9SVF9IT09LX1RPS0VOXTogdmFsdWUuaG9va1Rva2VuLFxuICAgICAgc2lnbmFsOiByZXZpdmVBYm9ydFNpZ25hbFZNKHZhbHVlKSxcbiAgICAgIGFib3J0OiAoKSA9PiB7fSxcbiAgICB9KSxcbiAgICBBYm9ydFNpZ25hbDogKHZhbHVlOiBBYm9ydFNlcmlhbGl6ZWQpID0+IHJldml2ZUFib3J0U2lnbmFsVk0odmFsdWUpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRSZWR1Y2Vyc0Zvck1vZGUobW9kZTogU2VyaWFsaXphdGlvbk1vZGUpOiBQYXJ0aWFsPFJlZHVjZXJzPiB7XG4gIHN3aXRjaCAobW9kZSkge1xuICAgIGNhc2UgJ3dvcmtmbG93JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmdldEFib3J0UmVkdWNlcnNWTSgpLFxuICAgICAgICAuLi5nZXRDbGFzc1JlZHVjZXJzKCksXG4gICAgICAgIC4uLmdldFN0ZXBGdW5jdGlvblJlZHVjZXIoKSxcbiAgICAgICAgLi4uZ2V0Q29tbW9uUmVkdWNlcnMoKSxcbiAgICAgIH07XG4gICAgY2FzZSAnc3RlcCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5nZXRDbGFzc1JlZHVjZXJzKCksXG4gICAgICAgIC4uLmdldENvbW1vblJlZHVjZXJzKCksXG4gICAgICB9O1xuICAgIGNhc2UgJ2NsaWVudCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5nZXRDbGFzc1JlZHVjZXJzKCksXG4gICAgICAgIC4uLmdldENvbW1vblJlZHVjZXJzKCksXG4gICAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFJldml2ZXJzRm9yTW9kZShtb2RlOiBTZXJpYWxpemF0aW9uTW9kZSk6IFBhcnRpYWw8UmV2aXZlcnM+IHtcbiAgc3dpdGNoIChtb2RlKSB7XG4gICAgY2FzZSAnd29ya2Zsb3cnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZ2V0QWJvcnRSZXZpdmVyc1ZNKCksXG4gICAgICAgIC4uLmdldENsYXNzUmV2aXZlcnMoKSxcbiAgICAgICAgLi4uZ2V0U3RlcEZ1bmN0aW9uUmV2aXZlcigpLFxuICAgICAgICAuLi5nZXRDb21tb25SZXZpdmVycygpLFxuICAgICAgfTtcbiAgICBjYXNlICdzdGVwJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmdldENsYXNzUmV2aXZlcnMoKSxcbiAgICAgICAgLi4uZ2V0Q29tbW9uUmV2aXZlcnMoKSxcbiAgICAgIH07XG4gICAgY2FzZSAnY2xpZW50JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmdldENsYXNzUmV2aXZlcnMoKSxcbiAgICAgICAgLi4uZ2V0Q29tbW9uUmV2aXZlcnMoKSxcbiAgICAgICAgU3RlcEZ1bmN0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ1N0ZXAgZnVuY3Rpb25zIGNhbm5vdCBiZSBkZXNlcmlhbGl6ZWQgaW4gY2xpZW50IGNvbnRleHQuJ1xuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBkZXZhbHVlVm1Db2RlYzogQ29kZWMgPSB7XG4gIGZvcm1hdFByZWZpeDogU2VyaWFsaXphdGlvbkZvcm1hdC5ERVZBTFVFX1YxLFxuXG4gIHNlcmlhbGl6ZSh2YWx1ZTogdW5rbm93biwgbW9kZTogU2VyaWFsaXphdGlvbk1vZGUpOiBVaW50OEFycmF5IHtcbiAgICBjb25zdCByZWR1Y2VycyA9IGdldFJlZHVjZXJzRm9yTW9kZShtb2RlKTtcbiAgICBjb25zdCBzdHIgPSBzdHJpbmdpZnkoXG4gICAgICB2YWx1ZSxcbiAgICAgIHJlZHVjZXJzIGFzIFJlY29yZDxzdHJpbmcsICh2YWx1ZTogYW55KSA9PiBhbnk+XG4gICAgKTtcbiAgICByZXR1cm4gZW5jb2Rlci5lbmNvZGUoc3RyKTtcbiAgfSxcblxuICBkZXNlcmlhbGl6ZShkYXRhOiBVaW50OEFycmF5LCBtb2RlOiBTZXJpYWxpemF0aW9uTW9kZSk6IHVua25vd24ge1xuICAgIGNvbnN0IHJldml2ZXJzID0gZ2V0UmV2aXZlcnNGb3JNb2RlKG1vZGUpO1xuICAgIGNvbnN0IHN0ciA9IGRlY29kZXIuZGVjb2RlKGRhdGEpO1xuICAgIHJldHVybiBwYXJzZShzdHIsIHJldml2ZXJzIGFzIFJlY29yZDxzdHJpbmcsICh2YWx1ZTogYW55KSA9PiBhbnk+KTtcbiAgfSxcblxuICBkZXNlcmlhbGl6ZUxlZ2FjeShkYXRhOiB1bmtub3duLCBtb2RlOiBTZXJpYWxpemF0aW9uTW9kZSk6IHVua25vd24ge1xuICAgIGNvbnN0IHJldml2ZXJzID0gZ2V0UmV2aXZlcnNGb3JNb2RlKG1vZGUpO1xuICAgIHJldHVybiB1bmZsYXR0ZW4oXG4gICAgICBkYXRhIGFzIGFueVtdLFxuICAgICAgcmV2aXZlcnMgYXMgUmVjb3JkPHN0cmluZywgKHZhbHVlOiBhbnkpID0+IGFueT5cbiAgICApO1xuICB9LFxufTtcbiJdfQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VM-compatible copy: identical semantics to class.ts before the host-side
|
|
3
|
+
* hardening (#3257) made that module depend on `serialization/hardened.ts`
|
|
4
|
+
* (which imports `node:util` and captures host intrinsics — meaningless
|
|
5
|
+
* and unbundleable inside the QuickJS VM, where the codec already runs in
|
|
6
|
+
* the guest realm). The host/guest boundary hardening for the QuickJS
|
|
7
|
+
* engine lands with the host-side serde (#3263), which retires this
|
|
8
|
+
* bundle entirely. Wire format is identical to the hardened host version.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Reducers and revivers for custom class serialization.
|
|
12
|
+
*
|
|
13
|
+
* Handles:
|
|
14
|
+
* - Class: class constructors with a `classId` property
|
|
15
|
+
* - Instance: instances of classes with custom WORKFLOW_SERIALIZE/DESERIALIZE methods
|
|
16
|
+
*/
|
|
17
|
+
import type { Reducers, Revivers } from '../types.js';
|
|
18
|
+
export declare function getClassReducers(): Partial<Reducers>;
|
|
19
|
+
export declare function getClassRevivers(global?: Record<string, any>): Partial<Revivers>;
|
|
20
|
+
//# sourceMappingURL=class-vm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"class-vm.d.ts","sourceRoot":"","sources":["../../../src/serialization/reducers/class-vm.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAItD,wBAAgB,gBAAgB,IAAI,OAAO,CAAC,QAAQ,CAAC,CA8BpD;AAID,wBAAgB,gBAAgB,CAC9B,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAc,GACvC,OAAO,CAAC,QAAQ,CAAC,CAiCnB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VM-compatible copy: identical semantics to class.ts before the host-side
|
|
3
|
+
* hardening (#3257) made that module depend on `serialization/hardened.ts`
|
|
4
|
+
* (which imports `node:util` and captures host intrinsics — meaningless
|
|
5
|
+
* and unbundleable inside the QuickJS VM, where the codec already runs in
|
|
6
|
+
* the guest realm). The host/guest boundary hardening for the QuickJS
|
|
7
|
+
* engine lands with the host-side serde (#3263), which retires this
|
|
8
|
+
* bundle entirely. Wire format is identical to the hardened host version.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Reducers and revivers for custom class serialization.
|
|
12
|
+
*
|
|
13
|
+
* Handles:
|
|
14
|
+
* - Class: class constructors with a `classId` property
|
|
15
|
+
* - Instance: instances of classes with custom WORKFLOW_SERIALIZE/DESERIALIZE methods
|
|
16
|
+
*/
|
|
17
|
+
import { WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE } from '@workflow/serde';
|
|
18
|
+
import { getSerializationClass } from '../../class-serialization.js';
|
|
19
|
+
// ---- Reducers ----
|
|
20
|
+
export function getClassReducers() {
|
|
21
|
+
return {
|
|
22
|
+
// Class and Instance are intentionally placed before Error so that
|
|
23
|
+
// custom Error subclasses with WORKFLOW_SERIALIZE take precedence
|
|
24
|
+
// over the generic Error serialization (devalue uses first-match-wins).
|
|
25
|
+
Class: (value) => {
|
|
26
|
+
if (typeof value !== 'function')
|
|
27
|
+
return false;
|
|
28
|
+
const classId = value.classId;
|
|
29
|
+
if (typeof classId !== 'string')
|
|
30
|
+
return false;
|
|
31
|
+
return { classId };
|
|
32
|
+
},
|
|
33
|
+
Instance: (value) => {
|
|
34
|
+
if (value === null || typeof value !== 'object')
|
|
35
|
+
return false;
|
|
36
|
+
const cls = value.constructor;
|
|
37
|
+
if (!cls || typeof cls !== 'function')
|
|
38
|
+
return false;
|
|
39
|
+
const serialize = cls[WORKFLOW_SERIALIZE];
|
|
40
|
+
if (typeof serialize !== 'function')
|
|
41
|
+
return false;
|
|
42
|
+
const classId = cls.classId;
|
|
43
|
+
if (typeof classId !== 'string') {
|
|
44
|
+
throw new Error(`Class "${cls.name}" with ${String(WORKFLOW_SERIALIZE)} must have a static "classId" property.`);
|
|
45
|
+
}
|
|
46
|
+
const data = serialize.call(cls, value);
|
|
47
|
+
return { classId, data };
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
// ---- Revivers ----
|
|
52
|
+
export function getClassRevivers(global = globalThis) {
|
|
53
|
+
return {
|
|
54
|
+
Class: (value) => {
|
|
55
|
+
const classId = value.classId;
|
|
56
|
+
const cls = getSerializationClass(classId, global);
|
|
57
|
+
if (!cls) {
|
|
58
|
+
throw new Error(`Class "${classId}" not found. Make sure the class is registered with registerSerializationClass.`);
|
|
59
|
+
}
|
|
60
|
+
return cls;
|
|
61
|
+
},
|
|
62
|
+
Instance: (value) => {
|
|
63
|
+
const classId = value.classId;
|
|
64
|
+
const data = value.data;
|
|
65
|
+
const cls = getSerializationClass(classId, global);
|
|
66
|
+
if (!cls) {
|
|
67
|
+
throw new Error(`Class "${classId}" not found. Make sure the class is registered with registerSerializationClass.`);
|
|
68
|
+
}
|
|
69
|
+
const deserialize = cls[WORKFLOW_DESERIALIZE];
|
|
70
|
+
if (typeof deserialize !== 'function') {
|
|
71
|
+
throw new Error(`Class "${classId}" does not have a static ${String(WORKFLOW_DESERIALIZE)} method.`);
|
|
72
|
+
}
|
|
73
|
+
return deserialize.call(cls, data);
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Mtdm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VyaWFsaXphdGlvbi9yZWR1Y2Vycy9jbGFzcy12bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUNIOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBR3JFLHFCQUFxQjtBQUVyQixNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLE9BQU87UUFDTCxtRUFBbUU7UUFDbkUsa0VBQWtFO1FBQ2xFLHdFQUF3RTtRQUN4RSxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNmLElBQUksT0FBTyxLQUFLLEtBQUssVUFBVTtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUM5QyxNQUFNLE9BQU8sR0FBSSxLQUFhLENBQUMsT0FBTyxDQUFDO1lBQ3ZDLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUTtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUM5QyxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDckIsQ0FBQztRQUNELFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2xCLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQzlELE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7WUFDOUIsSUFBSSxDQUFDLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxVQUFVO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBRXBELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQzFDLElBQUksT0FBTyxTQUFTLEtBQUssVUFBVTtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUVsRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1lBQzVCLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQ2IsVUFBVSxHQUFHLENBQUMsSUFBSSxVQUFVLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyx5Q0FBeUMsQ0FDaEcsQ0FBQztZQUNKLENBQUM7WUFFRCxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4QyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQzNCLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELHFCQUFxQjtBQUVyQixNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLFNBQThCLFVBQVU7SUFFeEMsT0FBTztRQUNMLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2YsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUM5QixNQUFNLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNULE1BQU0sSUFBSSxLQUFLLENBQ2IsVUFBVSxPQUFPLGlGQUFpRixDQUNuRyxDQUFDO1lBQ0osQ0FBQztZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztRQUNELFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2xCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDOUIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztZQUV4QixNQUFNLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNULE1BQU0sSUFBSSxLQUFLLENBQ2IsVUFBVSxPQUFPLGlGQUFpRixDQUNuRyxDQUFDO1lBQ0osQ0FBQztZQUVELE1BQU0sV0FBVyxHQUFJLEdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3ZELElBQUksT0FBTyxXQUFXLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQ2IsVUFBVSxPQUFPLDRCQUE0QixNQUFNLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUNwRixDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDckMsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBWTS1jb21wYXRpYmxlIGNvcHk6IGlkZW50aWNhbCBzZW1hbnRpY3MgdG8gY2xhc3MudHMgYmVmb3JlIHRoZSBob3N0LXNpZGVcbiAqIGhhcmRlbmluZyAoIzMyNTcpIG1hZGUgdGhhdCBtb2R1bGUgZGVwZW5kIG9uIGBzZXJpYWxpemF0aW9uL2hhcmRlbmVkLnRzYFxuICogKHdoaWNoIGltcG9ydHMgYG5vZGU6dXRpbGAgYW5kIGNhcHR1cmVzIGhvc3QgaW50cmluc2ljcyDigJQgbWVhbmluZ2xlc3NcbiAqIGFuZCB1bmJ1bmRsZWFibGUgaW5zaWRlIHRoZSBRdWlja0pTIFZNLCB3aGVyZSB0aGUgY29kZWMgYWxyZWFkeSBydW5zIGluXG4gKiB0aGUgZ3Vlc3QgcmVhbG0pLiBUaGUgaG9zdC9ndWVzdCBib3VuZGFyeSBoYXJkZW5pbmcgZm9yIHRoZSBRdWlja0pTXG4gKiBlbmdpbmUgbGFuZHMgd2l0aCB0aGUgaG9zdC1zaWRlIHNlcmRlICgjMzI2MyksIHdoaWNoIHJldGlyZXMgdGhpc1xuICogYnVuZGxlIGVudGlyZWx5LiBXaXJlIGZvcm1hdCBpcyBpZGVudGljYWwgdG8gdGhlIGhhcmRlbmVkIGhvc3QgdmVyc2lvbi5cbiAqL1xuLyoqXG4gKiBSZWR1Y2VycyBhbmQgcmV2aXZlcnMgZm9yIGN1c3RvbSBjbGFzcyBzZXJpYWxpemF0aW9uLlxuICpcbiAqIEhhbmRsZXM6XG4gKiAtIENsYXNzOiBjbGFzcyBjb25zdHJ1Y3RvcnMgd2l0aCBhIGBjbGFzc0lkYCBwcm9wZXJ0eVxuICogLSBJbnN0YW5jZTogaW5zdGFuY2VzIG9mIGNsYXNzZXMgd2l0aCBjdXN0b20gV09SS0ZMT1dfU0VSSUFMSVpFL0RFU0VSSUFMSVpFIG1ldGhvZHNcbiAqL1xuXG5pbXBvcnQgeyBXT1JLRkxPV19ERVNFUklBTElaRSwgV09SS0ZMT1dfU0VSSUFMSVpFIH0gZnJvbSAnQHdvcmtmbG93L3NlcmRlJztcbmltcG9ydCB7IGdldFNlcmlhbGl6YXRpb25DbGFzcyB9IGZyb20gJy4uLy4uL2NsYXNzLXNlcmlhbGl6YXRpb24uanMnO1xuaW1wb3J0IHR5cGUgeyBSZWR1Y2VycywgUmV2aXZlcnMgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbi8vIC0tLS0gUmVkdWNlcnMgLS0tLVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2xhc3NSZWR1Y2VycygpOiBQYXJ0aWFsPFJlZHVjZXJzPiB7XG4gIHJldHVybiB7XG4gICAgLy8gQ2xhc3MgYW5kIEluc3RhbmNlIGFyZSBpbnRlbnRpb25hbGx5IHBsYWNlZCBiZWZvcmUgRXJyb3Igc28gdGhhdFxuICAgIC8vIGN1c3RvbSBFcnJvciBzdWJjbGFzc2VzIHdpdGggV09SS0ZMT1dfU0VSSUFMSVpFIHRha2UgcHJlY2VkZW5jZVxuICAgIC8vIG92ZXIgdGhlIGdlbmVyaWMgRXJyb3Igc2VyaWFsaXphdGlvbiAoZGV2YWx1ZSB1c2VzIGZpcnN0LW1hdGNoLXdpbnMpLlxuICAgIENsYXNzOiAodmFsdWUpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IGNsYXNzSWQgPSAodmFsdWUgYXMgYW55KS5jbGFzc0lkO1xuICAgICAgaWYgKHR5cGVvZiBjbGFzc0lkICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIHsgY2xhc3NJZCB9O1xuICAgIH0sXG4gICAgSW5zdGFuY2U6ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IGNscyA9IHZhbHVlLmNvbnN0cnVjdG9yO1xuICAgICAgaWYgKCFjbHMgfHwgdHlwZW9mIGNscyAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBjb25zdCBzZXJpYWxpemUgPSBjbHNbV09SS0ZMT1dfU0VSSUFMSVpFXTtcbiAgICAgIGlmICh0eXBlb2Ygc2VyaWFsaXplICE9PSAnZnVuY3Rpb24nKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGNsYXNzSWQgPSBjbHMuY2xhc3NJZDtcbiAgICAgIGlmICh0eXBlb2YgY2xhc3NJZCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBDbGFzcyBcIiR7Y2xzLm5hbWV9XCIgd2l0aCAke1N0cmluZyhXT1JLRkxPV19TRVJJQUxJWkUpfSBtdXN0IGhhdmUgYSBzdGF0aWMgXCJjbGFzc0lkXCIgcHJvcGVydHkuYFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhID0gc2VyaWFsaXplLmNhbGwoY2xzLCB2YWx1ZSk7XG4gICAgICByZXR1cm4geyBjbGFzc0lkLCBkYXRhIH07XG4gICAgfSxcbiAgfTtcbn1cblxuLy8gLS0tLSBSZXZpdmVycyAtLS0tXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGFzc1Jldml2ZXJzKFxuICBnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBnbG9iYWxUaGlzXG4pOiBQYXJ0aWFsPFJldml2ZXJzPiB7XG4gIHJldHVybiB7XG4gICAgQ2xhc3M6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgY2xhc3NJZCA9IHZhbHVlLmNsYXNzSWQ7XG4gICAgICBjb25zdCBjbHMgPSBnZXRTZXJpYWxpemF0aW9uQ2xhc3MoY2xhc3NJZCwgZ2xvYmFsKTtcbiAgICAgIGlmICghY2xzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2xhc3MgXCIke2NsYXNzSWR9XCIgbm90IGZvdW5kLiBNYWtlIHN1cmUgdGhlIGNsYXNzIGlzIHJlZ2lzdGVyZWQgd2l0aCByZWdpc3RlclNlcmlhbGl6YXRpb25DbGFzcy5gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2xzO1xuICAgIH0sXG4gICAgSW5zdGFuY2U6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgY2xhc3NJZCA9IHZhbHVlLmNsYXNzSWQ7XG4gICAgICBjb25zdCBkYXRhID0gdmFsdWUuZGF0YTtcblxuICAgICAgY29uc3QgY2xzID0gZ2V0U2VyaWFsaXphdGlvbkNsYXNzKGNsYXNzSWQsIGdsb2JhbCk7XG4gICAgICBpZiAoIWNscykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYENsYXNzIFwiJHtjbGFzc0lkfVwiIG5vdCBmb3VuZC4gTWFrZSBzdXJlIHRoZSBjbGFzcyBpcyByZWdpc3RlcmVkIHdpdGggcmVnaXN0ZXJTZXJpYWxpemF0aW9uQ2xhc3MuYFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkZXNlcmlhbGl6ZSA9IChjbHMgYXMgYW55KVtXT1JLRkxPV19ERVNFUklBTElaRV07XG4gICAgICBpZiAodHlwZW9mIGRlc2VyaWFsaXplICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2xhc3MgXCIke2NsYXNzSWR9XCIgZG9lcyBub3QgaGF2ZSBhIHN0YXRpYyAke1N0cmluZyhXT1JLRkxPV19ERVNFUklBTElaRSl9IG1ldGhvZC5gXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkZXNlcmlhbGl6ZS5jYWxsKGNscywgZGF0YSk7XG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VM-compatible common reducers and revivers.
|
|
3
|
+
*
|
|
4
|
+
* Identical to common.ts but without Node.js dependencies:
|
|
5
|
+
* - Uses native `btoa` / `atob` (provided by quickjs-wasi's base64
|
|
6
|
+
* extension, see `quickjs-assets.generated.ts`) instead of Buffer
|
|
7
|
+
* or pure-JS base64.
|
|
8
|
+
* - Uses `instanceof Error` instead of `types.isNativeError()`.
|
|
9
|
+
*
|
|
10
|
+
* This module is safe to bundle into the QuickJS WASM VM.
|
|
11
|
+
*/
|
|
12
|
+
import type { Reducers, Revivers } from '../types.js';
|
|
13
|
+
export declare function getCommonReducers(): Partial<Reducers>;
|
|
14
|
+
export declare function getCommonRevivers(): Partial<Revivers>;
|
|
15
|
+
//# sourceMappingURL=common-vm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common-vm.d.ts","sourceRoot":"","sources":["../../../src/serialization/reducers/common-vm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAuB,MAAM,aAAa,CAAC;AA6E3E,wBAAgB,iBAAiB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAqQrD;AAID,wBAAgB,iBAAiB,IAAI,OAAO,CAAC,QAAQ,CAAC,CA+NrD"}
|