@workflow/core 5.0.0-beta.1 → 5.0.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/attribute-changes.d.ts +7 -0
- package/dist/attribute-changes.d.ts.map +1 -0
- package/dist/attribute-changes.js +25 -0
- package/dist/capabilities.js +1 -1
- package/dist/capture-stack.d.ts +16 -0
- package/dist/capture-stack.d.ts.map +1 -0
- package/dist/capture-stack.js +21 -0
- package/dist/class-serialization.js +1 -1
- package/dist/classify-error.d.ts +11 -3
- package/dist/classify-error.d.ts.map +1 -1
- package/dist/classify-error.js +56 -6
- package/dist/context-errors.d.ts +27 -0
- package/dist/context-errors.d.ts.map +1 -0
- package/dist/context-errors.js +101 -0
- package/dist/context-violation-error.d.ts +97 -0
- package/dist/context-violation-error.d.ts.map +1 -0
- package/dist/context-violation-error.js +147 -0
- package/dist/create-hook.d.ts.map +1 -1
- package/dist/create-hook.js +4 -3
- package/dist/define-hook.d.ts.map +1 -1
- package/dist/define-hook.js +20 -5
- package/dist/describe-error.d.ts +70 -0
- package/dist/describe-error.d.ts.map +1 -0
- package/dist/describe-error.js +165 -0
- package/dist/encryption.d.ts +22 -1
- package/dist/encryption.d.ts.map +1 -1
- package/dist/encryption.js +72 -27
- package/dist/events-consumer.d.ts +7 -0
- package/dist/events-consumer.d.ts.map +1 -1
- package/dist/events-consumer.js +18 -3
- package/dist/flushable-stream.d.ts +10 -10
- package/dist/flushable-stream.d.ts.map +1 -1
- package/dist/flushable-stream.js +18 -13
- package/dist/global.d.ts +4 -0
- package/dist/global.d.ts.map +1 -1
- package/dist/global.js +8 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/log-format.d.ts +25 -0
- package/dist/log-format.d.ts.map +1 -0
- package/dist/log-format.js +250 -0
- package/dist/logger.d.ts +28 -30
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +77 -31
- package/dist/private.js +3 -3
- package/dist/runtime/constants.d.ts +48 -0
- package/dist/runtime/constants.d.ts.map +1 -1
- package/dist/runtime/constants.js +91 -8
- package/dist/runtime/get-port-lazy.d.ts +10 -0
- package/dist/runtime/get-port-lazy.d.ts.map +1 -0
- package/dist/runtime/get-port-lazy.js +30 -0
- package/dist/runtime/get-world-lazy.d.ts +32 -0
- package/dist/runtime/get-world-lazy.d.ts.map +1 -0
- package/dist/runtime/get-world-lazy.js +56 -0
- package/dist/runtime/helpers.d.ts +38 -5
- package/dist/runtime/helpers.d.ts.map +1 -1
- package/dist/runtime/helpers.js +141 -25
- package/dist/runtime/replay-budget.d.ts +98 -0
- package/dist/runtime/replay-budget.d.ts.map +1 -0
- package/dist/runtime/replay-budget.js +191 -0
- package/dist/runtime/resume-hook.d.ts.map +1 -1
- package/dist/runtime/resume-hook.js +5 -4
- package/dist/runtime/run.d.ts.map +1 -1
- package/dist/runtime/run.js +31 -6
- package/dist/runtime/runs.d.ts.map +1 -1
- package/dist/runtime/runs.js +4 -1
- package/dist/runtime/start.js +9 -4
- package/dist/runtime/step-executor.d.ts +42 -0
- package/dist/runtime/step-executor.d.ts.map +1 -0
- package/dist/runtime/step-executor.js +493 -0
- package/dist/runtime/step-handler.d.ts.map +1 -1
- package/dist/runtime/step-handler.js +217 -115
- package/dist/runtime/suspension-handler.d.ts +22 -4
- package/dist/runtime/suspension-handler.d.ts.map +1 -1
- package/dist/runtime/suspension-handler.js +90 -73
- package/dist/runtime/world-init.d.ts +75 -0
- package/dist/runtime/world-init.d.ts.map +1 -0
- package/dist/runtime/world-init.js +75 -0
- package/dist/runtime/world.d.ts.map +1 -1
- package/dist/runtime/world.js +47 -18
- package/dist/runtime.d.ts +8 -7
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +802 -320
- package/dist/schemas.d.ts +1 -1
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +1 -1
- package/dist/serialization/client.d.ts +17 -0
- package/dist/serialization/client.d.ts.map +1 -0
- package/dist/serialization/client.js +45 -0
- package/dist/serialization/codec-devalue.d.ts +14 -0
- package/dist/serialization/codec-devalue.d.ts.map +1 -0
- package/dist/serialization/codec-devalue.js +98 -0
- package/dist/serialization/codec.d.ts +90 -0
- package/dist/serialization/codec.d.ts.map +1 -0
- package/dist/serialization/codec.js +17 -0
- package/dist/serialization/encryption.d.ts +32 -0
- package/dist/serialization/encryption.d.ts.map +1 -0
- package/dist/serialization/encryption.js +67 -0
- package/dist/serialization/errors.d.ts +34 -0
- package/dist/serialization/errors.d.ts.map +1 -0
- package/dist/serialization/errors.js +59 -0
- package/dist/serialization/format.d.ts +60 -0
- package/dist/serialization/format.d.ts.map +1 -0
- package/dist/serialization/format.js +97 -0
- package/dist/serialization/index.d.ts +18 -0
- package/dist/serialization/index.d.ts.map +1 -0
- package/dist/serialization/index.js +20 -0
- package/dist/serialization/reducers/class.d.ts +11 -0
- package/dist/serialization/reducers/class.d.ts.map +1 -0
- package/dist/serialization/reducers/class.js +68 -0
- package/dist/serialization/reducers/common.d.ts +16 -0
- package/dist/serialization/reducers/common.d.ts.map +1 -0
- package/dist/serialization/reducers/common.js +417 -0
- package/dist/serialization/reducers/step-function.d.ts +35 -0
- package/dist/serialization/reducers/step-function.d.ts.map +1 -0
- package/dist/serialization/reducers/step-function.js +88 -0
- package/dist/serialization/step.d.ts +17 -0
- package/dist/serialization/step.d.ts.map +1 -0
- package/dist/serialization/step.js +45 -0
- package/dist/serialization/types.d.ts +228 -0
- package/dist/serialization/types.d.ts.map +1 -0
- package/dist/serialization/types.js +21 -0
- package/dist/serialization/workflow.d.ts +29 -0
- package/dist/serialization/workflow.d.ts.map +1 -0
- package/dist/serialization/workflow.js +54 -0
- package/dist/serialization-format.d.ts +16 -2
- package/dist/serialization-format.d.ts.map +1 -1
- package/dist/serialization-format.js +103 -5
- package/dist/serialization.d.ts +217 -226
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +956 -645
- package/dist/set-attributes.d.ts +13 -0
- package/dist/set-attributes.d.ts.map +1 -0
- package/dist/set-attributes.js +40 -0
- package/dist/sleep.d.ts.map +1 -1
- package/dist/sleep.js +3 -2
- package/dist/source-map.d.ts.map +1 -1
- package/dist/source-map.js +44 -6
- package/dist/step/context-storage.d.ts +16 -0
- package/dist/step/context-storage.d.ts.map +1 -1
- package/dist/step/context-storage.js +1 -1
- package/dist/step/get-closure-vars.d.ts.map +1 -1
- package/dist/step/get-closure-vars.js +3 -2
- package/dist/step/get-step-metadata.d.ts.map +1 -1
- package/dist/step/get-step-metadata.js +3 -2
- package/dist/step/get-workflow-metadata.d.ts.map +1 -1
- package/dist/step/get-workflow-metadata.js +3 -2
- package/dist/step/writable-stream.d.ts.map +1 -1
- package/dist/step/writable-stream.js +44 -4
- package/dist/step.d.ts.map +1 -1
- package/dist/step.js +97 -19
- package/dist/symbols.d.ts +26 -0
- package/dist/symbols.d.ts.map +1 -1
- package/dist/symbols.js +27 -1
- package/dist/telemetry/semantic-conventions.d.ts +2 -2
- package/dist/telemetry/semantic-conventions.js +1 -1
- package/dist/telemetry.js +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +23 -1
- package/dist/util.d.ts +18 -3
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +28 -5
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +2 -2
- package/dist/vm/index.d.ts.map +1 -1
- package/dist/vm/index.js +3 -2
- package/dist/vm/uint8array-base64.js +1 -1
- package/dist/vm/uuid.js +1 -1
- package/dist/workflow/abort-controller.d.ts +65 -0
- package/dist/workflow/abort-controller.d.ts.map +1 -0
- package/dist/workflow/abort-controller.js +260 -0
- package/dist/workflow/create-hook.d.ts.map +1 -1
- package/dist/workflow/create-hook.js +3 -2
- package/dist/workflow/define-hook.d.ts +1 -1
- package/dist/workflow/define-hook.d.ts.map +1 -1
- package/dist/workflow/define-hook.js +8 -4
- package/dist/workflow/get-workflow-metadata.d.ts.map +1 -1
- package/dist/workflow/get-workflow-metadata.js +14 -3
- package/dist/workflow/hook.d.ts.map +1 -1
- package/dist/workflow/hook.js +13 -4
- package/dist/workflow/index.d.ts +1 -0
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +5 -3
- package/dist/workflow/set-attributes.d.ts +74 -0
- package/dist/workflow/set-attributes.d.ts.map +1 -0
- package/dist/workflow/set-attributes.js +66 -0
- package/dist/workflow/sleep.d.ts.map +1 -1
- package/dist/workflow/sleep.js +22 -3
- package/dist/workflow/world-init-stub.d.ts +15 -0
- package/dist/workflow/world-init-stub.d.ts.map +1 -0
- package/dist/workflow/world-init-stub.js +15 -0
- package/dist/workflow/writable-stream.js +1 -1
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +83 -31
- package/docs/api-reference/create-webhook.mdx +37 -18
- package/docs/api-reference/experimental-set-attributes.mdx +63 -0
- package/docs/api-reference/get-workflow-metadata.mdx +34 -0
- package/docs/api-reference/index.mdx +3 -0
- package/docs/foundations/cancellation.mdx +460 -0
- package/docs/foundations/errors-and-retries.mdx +7 -3
- package/docs/foundations/index.mdx +3 -3
- package/docs/foundations/meta.json +3 -2
- package/docs/foundations/serialization.mdx +78 -42
- package/docs/foundations/starting-workflows.mdx +6 -2
- package/docs/foundations/versioning.mdx +263 -0
- package/docs/how-it-works/cancellation.mdx +287 -0
- package/docs/how-it-works/code-transform.mdx +2 -2
- package/docs/how-it-works/event-sourcing.mdx +2 -2
- package/docs/how-it-works/meta.json +2 -1
- package/package.json +16 -7
- package/docs/foundations/common-patterns.mdx +0 -265
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reducer and reviver for step function references.
|
|
3
|
+
*
|
|
4
|
+
* In workflow mode, step functions are replaced by the SWC plugin with
|
|
5
|
+
* proxies created by `globalThis[Symbol.for("WORKFLOW_USE_STEP")]("stepId")`.
|
|
6
|
+
* These proxies have a `.stepId` property and optionally a `.__closureVarsFn`
|
|
7
|
+
* for captured closure variables. They may additionally have `.__boundThis`
|
|
8
|
+
* (and rarely `.__boundArgs`) when the SWC plugin emitted
|
|
9
|
+
* `useStep(...).bind(this)` for a nested arrow step that lexically
|
|
10
|
+
* captured `this` (see `packages/swc-plugin-workflow/spec.md` → "Lexical
|
|
11
|
+
* `this` Capture in Nested Arrow Steps").
|
|
12
|
+
*
|
|
13
|
+
* The reducer serializes them as
|
|
14
|
+
* `{ stepId, closureVars?, boundThis?, boundArgs? }`.
|
|
15
|
+
* The reviver reconstructs them by calling WORKFLOW_USE_STEP and, when
|
|
16
|
+
* `boundThis` (or `boundArgs`) is present, re-binding the resulting
|
|
17
|
+
* proxy so the caller's captured `this` (and prefilled args) survive the
|
|
18
|
+
* round trip.
|
|
19
|
+
*/
|
|
20
|
+
// ---- Reducer ----
|
|
21
|
+
export function getStepFunctionReducer() {
|
|
22
|
+
return {
|
|
23
|
+
StepFunction: (value) => {
|
|
24
|
+
if (typeof value !== 'function')
|
|
25
|
+
return false;
|
|
26
|
+
const stepId = value.stepId;
|
|
27
|
+
if (typeof stepId !== 'string')
|
|
28
|
+
return false;
|
|
29
|
+
const closureVarsFn = value.__closureVarsFn;
|
|
30
|
+
const closureVars = closureVarsFn && typeof closureVarsFn === 'function'
|
|
31
|
+
? closureVarsFn()
|
|
32
|
+
: undefined;
|
|
33
|
+
// `__boundThis` / `__boundArgs` are marker properties added by the
|
|
34
|
+
// step proxy's overridden `.bind` (see step.ts) to record the
|
|
35
|
+
// bound receiver and any prefilled arguments. Use `in` for
|
|
36
|
+
// `__boundThis` so we round-trip even when the bound `this` is
|
|
37
|
+
// `undefined`/`null`. `__boundArgs` is only set when the user
|
|
38
|
+
// actually supplied prefilled args, so a missing property means
|
|
39
|
+
// "no prefilled args".
|
|
40
|
+
const hasBoundThis = '__boundThis' in value;
|
|
41
|
+
const boundThis = hasBoundThis ? value.__boundThis : undefined;
|
|
42
|
+
const boundArgs = value.__boundArgs;
|
|
43
|
+
const payload = { stepId };
|
|
44
|
+
if (closureVars !== undefined)
|
|
45
|
+
payload.closureVars = closureVars;
|
|
46
|
+
if (hasBoundThis)
|
|
47
|
+
payload.boundThis = boundThis;
|
|
48
|
+
if (Array.isArray(boundArgs) && boundArgs.length > 0) {
|
|
49
|
+
payload.boundArgs = boundArgs;
|
|
50
|
+
}
|
|
51
|
+
return payload;
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// ---- Reviver ----
|
|
56
|
+
/**
|
|
57
|
+
* Create the StepFunction reviver for workflow context.
|
|
58
|
+
*
|
|
59
|
+
* The reviver calls WORKFLOW_USE_STEP to create the step proxy,
|
|
60
|
+
* restoring the ability to call the step from workflow code. If the
|
|
61
|
+
* serialized payload includes `boundThis` (and optionally `boundArgs`),
|
|
62
|
+
* the reviver also re-binds the freshly-created proxy so a step proxy
|
|
63
|
+
* that was constructed with `.bind(this, …)` in the workflow bundle
|
|
64
|
+
* continues to carry that receiver and any prefilled arguments after
|
|
65
|
+
* being deserialized in another bundle (e.g. when passed as a step
|
|
66
|
+
* argument).
|
|
67
|
+
*/
|
|
68
|
+
export function getStepFunctionReviver(global = globalThis) {
|
|
69
|
+
const useStep = global[Symbol.for('WORKFLOW_USE_STEP')];
|
|
70
|
+
return {
|
|
71
|
+
StepFunction: (value) => {
|
|
72
|
+
const stepId = value.stepId;
|
|
73
|
+
const closureVars = value.closureVars;
|
|
74
|
+
if (!useStep) {
|
|
75
|
+
throw new Error('WORKFLOW_USE_STEP not found on global object. Step functions cannot be deserialized outside workflow context.');
|
|
76
|
+
}
|
|
77
|
+
const proxy = closureVars
|
|
78
|
+
? useStep(stepId, () => closureVars)
|
|
79
|
+
: useStep(stepId);
|
|
80
|
+
if ('boundThis' in value) {
|
|
81
|
+
const boundArgs = Array.isArray(value.boundArgs) ? value.boundArgs : [];
|
|
82
|
+
return proxy.bind(value.boundThis, ...boundArgs);
|
|
83
|
+
}
|
|
84
|
+
return proxy;
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1mdW5jdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJpYWxpemF0aW9uL3JlZHVjZXJzL3N0ZXAtZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUlILG9CQUFvQjtBQUVwQixNQUFNLFVBQVUsc0JBQXNCO0lBQ3BDLE9BQU87UUFDTCxZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN0QixJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVU7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDOUMsTUFBTSxNQUFNLEdBQUksS0FBYSxDQUFDLE1BQU0sQ0FBQztZQUNyQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVE7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFFN0MsTUFBTSxhQUFhLEdBQUksS0FBYSxDQUFDLGVBQWUsQ0FBQztZQUNyRCxNQUFNLFdBQVcsR0FDZixhQUFhLElBQUksT0FBTyxhQUFhLEtBQUssVUFBVTtnQkFDbEQsQ0FBQyxDQUFDLGFBQWEsRUFBRTtnQkFDakIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUVoQixtRUFBbUU7WUFDbkUsOERBQThEO1lBQzlELDJEQUEyRDtZQUMzRCwrREFBK0Q7WUFDL0QsOERBQThEO1lBQzlELGdFQUFnRTtZQUNoRSx1QkFBdUI7WUFDdkIsTUFBTSxZQUFZLEdBQUcsYUFBYSxJQUFLLEtBQWEsQ0FBQztZQUNyRCxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFFLEtBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN4RSxNQUFNLFNBQVMsR0FBSSxLQUFhLENBQUMsV0FBb0MsQ0FBQztZQUV0RSxNQUFNLE9BQU8sR0FLVCxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ2YsSUFBSSxXQUFXLEtBQUssU0FBUztnQkFBRSxPQUFPLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztZQUNqRSxJQUFJLFlBQVk7Z0JBQUUsT0FBTyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDaEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JELE9BQU8sQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1lBQ2hDLENBQUM7WUFFRCxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxvQkFBb0I7QUFFcEI7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLFNBQThCLFVBQVU7SUFFeEMsTUFBTSxPQUFPLEdBQUksTUFBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FLbEQsQ0FBQztJQUVkLE9BQU87UUFDTCxZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN0QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzVCLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7WUFFdEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNiLE1BQU0sSUFBSSxLQUFLLENBQ2IsK0dBQStHLENBQ2hILENBQUM7WUFDSixDQUFDO1lBRUQsTUFBTSxLQUFLLEdBQUcsV0FBVztnQkFDdkIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDO2dCQUNwQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRXBCLElBQUksV0FBVyxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUN6QixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN4RSxPQUFRLEtBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDO1lBQzVELENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVkdWNlciBhbmQgcmV2aXZlciBmb3Igc3RlcCBmdW5jdGlvbiByZWZlcmVuY2VzLlxuICpcbiAqIEluIHdvcmtmbG93IG1vZGUsIHN0ZXAgZnVuY3Rpb25zIGFyZSByZXBsYWNlZCBieSB0aGUgU1dDIHBsdWdpbiB3aXRoXG4gKiBwcm94aWVzIGNyZWF0ZWQgYnkgYGdsb2JhbFRoaXNbU3ltYm9sLmZvcihcIldPUktGTE9XX1VTRV9TVEVQXCIpXShcInN0ZXBJZFwiKWAuXG4gKiBUaGVzZSBwcm94aWVzIGhhdmUgYSBgLnN0ZXBJZGAgcHJvcGVydHkgYW5kIG9wdGlvbmFsbHkgYSBgLl9fY2xvc3VyZVZhcnNGbmBcbiAqIGZvciBjYXB0dXJlZCBjbG9zdXJlIHZhcmlhYmxlcy4gVGhleSBtYXkgYWRkaXRpb25hbGx5IGhhdmUgYC5fX2JvdW5kVGhpc2BcbiAqIChhbmQgcmFyZWx5IGAuX19ib3VuZEFyZ3NgKSB3aGVuIHRoZSBTV0MgcGx1Z2luIGVtaXR0ZWRcbiAqIGB1c2VTdGVwKC4uLikuYmluZCh0aGlzKWAgZm9yIGEgbmVzdGVkIGFycm93IHN0ZXAgdGhhdCBsZXhpY2FsbHlcbiAqIGNhcHR1cmVkIGB0aGlzYCAoc2VlIGBwYWNrYWdlcy9zd2MtcGx1Z2luLXdvcmtmbG93L3NwZWMubWRgIOKGkiBcIkxleGljYWxcbiAqIGB0aGlzYCBDYXB0dXJlIGluIE5lc3RlZCBBcnJvdyBTdGVwc1wiKS5cbiAqXG4gKiBUaGUgcmVkdWNlciBzZXJpYWxpemVzIHRoZW0gYXNcbiAqICAgYHsgc3RlcElkLCBjbG9zdXJlVmFycz8sIGJvdW5kVGhpcz8sIGJvdW5kQXJncz8gfWAuXG4gKiBUaGUgcmV2aXZlciByZWNvbnN0cnVjdHMgdGhlbSBieSBjYWxsaW5nIFdPUktGTE9XX1VTRV9TVEVQIGFuZCwgd2hlblxuICogYGJvdW5kVGhpc2AgKG9yIGBib3VuZEFyZ3NgKSBpcyBwcmVzZW50LCByZS1iaW5kaW5nIHRoZSByZXN1bHRpbmdcbiAqIHByb3h5IHNvIHRoZSBjYWxsZXIncyBjYXB0dXJlZCBgdGhpc2AgKGFuZCBwcmVmaWxsZWQgYXJncykgc3Vydml2ZSB0aGVcbiAqIHJvdW5kIHRyaXAuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBSZWR1Y2VycywgUmV2aXZlcnMgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbi8vIC0tLS0gUmVkdWNlciAtLS0tXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGVwRnVuY3Rpb25SZWR1Y2VyKCk6IFBhcnRpYWw8UmVkdWNlcnM+IHtcbiAgcmV0dXJuIHtcbiAgICBTdGVwRnVuY3Rpb246ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3Qgc3RlcElkID0gKHZhbHVlIGFzIGFueSkuc3RlcElkO1xuICAgICAgaWYgKHR5cGVvZiBzdGVwSWQgIT09ICdzdHJpbmcnKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGNsb3N1cmVWYXJzRm4gPSAodmFsdWUgYXMgYW55KS5fX2Nsb3N1cmVWYXJzRm47XG4gICAgICBjb25zdCBjbG9zdXJlVmFycyA9XG4gICAgICAgIGNsb3N1cmVWYXJzRm4gJiYgdHlwZW9mIGNsb3N1cmVWYXJzRm4gPT09ICdmdW5jdGlvbidcbiAgICAgICAgICA/IGNsb3N1cmVWYXJzRm4oKVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAvLyBgX19ib3VuZFRoaXNgIC8gYF9fYm91bmRBcmdzYCBhcmUgbWFya2VyIHByb3BlcnRpZXMgYWRkZWQgYnkgdGhlXG4gICAgICAvLyBzdGVwIHByb3h5J3Mgb3ZlcnJpZGRlbiBgLmJpbmRgIChzZWUgc3RlcC50cykgdG8gcmVjb3JkIHRoZVxuICAgICAgLy8gYm91bmQgcmVjZWl2ZXIgYW5kIGFueSBwcmVmaWxsZWQgYXJndW1lbnRzLiBVc2UgYGluYCBmb3JcbiAgICAgIC8vIGBfX2JvdW5kVGhpc2Agc28gd2Ugcm91bmQtdHJpcCBldmVuIHdoZW4gdGhlIGJvdW5kIGB0aGlzYCBpc1xuICAgICAgLy8gYHVuZGVmaW5lZGAvYG51bGxgLiBgX19ib3VuZEFyZ3NgIGlzIG9ubHkgc2V0IHdoZW4gdGhlIHVzZXJcbiAgICAgIC8vIGFjdHVhbGx5IHN1cHBsaWVkIHByZWZpbGxlZCBhcmdzLCBzbyBhIG1pc3NpbmcgcHJvcGVydHkgbWVhbnNcbiAgICAgIC8vIFwibm8gcHJlZmlsbGVkIGFyZ3NcIi5cbiAgICAgIGNvbnN0IGhhc0JvdW5kVGhpcyA9ICdfX2JvdW5kVGhpcycgaW4gKHZhbHVlIGFzIGFueSk7XG4gICAgICBjb25zdCBib3VuZFRoaXMgPSBoYXNCb3VuZFRoaXMgPyAodmFsdWUgYXMgYW55KS5fX2JvdW5kVGhpcyA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGJvdW5kQXJncyA9ICh2YWx1ZSBhcyBhbnkpLl9fYm91bmRBcmdzIGFzIHVua25vd25bXSB8IHVuZGVmaW5lZDtcblxuICAgICAgY29uc3QgcGF5bG9hZDoge1xuICAgICAgICBzdGVwSWQ6IHN0cmluZztcbiAgICAgICAgY2xvc3VyZVZhcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgICAgICBib3VuZFRoaXM/OiB1bmtub3duO1xuICAgICAgICBib3VuZEFyZ3M/OiB1bmtub3duW107XG4gICAgICB9ID0geyBzdGVwSWQgfTtcbiAgICAgIGlmIChjbG9zdXJlVmFycyAhPT0gdW5kZWZpbmVkKSBwYXlsb2FkLmNsb3N1cmVWYXJzID0gY2xvc3VyZVZhcnM7XG4gICAgICBpZiAoaGFzQm91bmRUaGlzKSBwYXlsb2FkLmJvdW5kVGhpcyA9IGJvdW5kVGhpcztcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGJvdW5kQXJncykgJiYgYm91bmRBcmdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcGF5bG9hZC5ib3VuZEFyZ3MgPSBib3VuZEFyZ3M7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH0sXG4gIH07XG59XG5cbi8vIC0tLS0gUmV2aXZlciAtLS0tXG5cbi8qKlxuICogQ3JlYXRlIHRoZSBTdGVwRnVuY3Rpb24gcmV2aXZlciBmb3Igd29ya2Zsb3cgY29udGV4dC5cbiAqXG4gKiBUaGUgcmV2aXZlciBjYWxscyBXT1JLRkxPV19VU0VfU1RFUCB0byBjcmVhdGUgdGhlIHN0ZXAgcHJveHksXG4gKiByZXN0b3JpbmcgdGhlIGFiaWxpdHkgdG8gY2FsbCB0aGUgc3RlcCBmcm9tIHdvcmtmbG93IGNvZGUuIElmIHRoZVxuICogc2VyaWFsaXplZCBwYXlsb2FkIGluY2x1ZGVzIGBib3VuZFRoaXNgIChhbmQgb3B0aW9uYWxseSBgYm91bmRBcmdzYCksXG4gKiB0aGUgcmV2aXZlciBhbHNvIHJlLWJpbmRzIHRoZSBmcmVzaGx5LWNyZWF0ZWQgcHJveHkgc28gYSBzdGVwIHByb3h5XG4gKiB0aGF0IHdhcyBjb25zdHJ1Y3RlZCB3aXRoIGAuYmluZCh0aGlzLCDigKYpYCBpbiB0aGUgd29ya2Zsb3cgYnVuZGxlXG4gKiBjb250aW51ZXMgdG8gY2FycnkgdGhhdCByZWNlaXZlciBhbmQgYW55IHByZWZpbGxlZCBhcmd1bWVudHMgYWZ0ZXJcbiAqIGJlaW5nIGRlc2VyaWFsaXplZCBpbiBhbm90aGVyIGJ1bmRsZSAoZS5nLiB3aGVuIHBhc3NlZCBhcyBhIHN0ZXBcbiAqIGFyZ3VtZW50KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0ZXBGdW5jdGlvblJldml2ZXIoXG4gIGdsb2JhbDogUmVjb3JkPHN0cmluZywgYW55PiA9IGdsb2JhbFRoaXNcbik6IFBhcnRpYWw8UmV2aXZlcnM+IHtcbiAgY29uc3QgdXNlU3RlcCA9IChnbG9iYWwgYXMgYW55KVtTeW1ib2wuZm9yKCdXT1JLRkxPV19VU0VfU1RFUCcpXSBhc1xuICAgIHwgKChcbiAgICAgICAgc3RlcElkOiBzdHJpbmcsXG4gICAgICAgIGNsb3N1cmVWYXJzRm4/OiAoKSA9PiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgKSA9PiAoLi4uYXJnczogdW5rbm93bltdKSA9PiBQcm9taXNlPHVua25vd24+KVxuICAgIHwgdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7XG4gICAgU3RlcEZ1bmN0aW9uOiAodmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IHN0ZXBJZCA9IHZhbHVlLnN0ZXBJZDtcbiAgICAgIGNvbnN0IGNsb3N1cmVWYXJzID0gdmFsdWUuY2xvc3VyZVZhcnM7XG5cbiAgICAgIGlmICghdXNlU3RlcCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1dPUktGTE9XX1VTRV9TVEVQIG5vdCBmb3VuZCBvbiBnbG9iYWwgb2JqZWN0LiBTdGVwIGZ1bmN0aW9ucyBjYW5ub3QgYmUgZGVzZXJpYWxpemVkIG91dHNpZGUgd29ya2Zsb3cgY29udGV4dC4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb3h5ID0gY2xvc3VyZVZhcnNcbiAgICAgICAgPyB1c2VTdGVwKHN0ZXBJZCwgKCkgPT4gY2xvc3VyZVZhcnMpXG4gICAgICAgIDogdXNlU3RlcChzdGVwSWQpO1xuXG4gICAgICBpZiAoJ2JvdW5kVGhpcycgaW4gdmFsdWUpIHtcbiAgICAgICAgY29uc3QgYm91bmRBcmdzID0gQXJyYXkuaXNBcnJheSh2YWx1ZS5ib3VuZEFyZ3MpID8gdmFsdWUuYm91bmRBcmdzIDogW107XG4gICAgICAgIHJldHVybiAocHJveHkgYXMgYW55KS5iaW5kKHZhbHVlLmJvdW5kVGhpcywgLi4uYm91bmRBcmdzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm94eTtcbiAgICB9LFxuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Step mode serialization.
|
|
3
|
+
*
|
|
4
|
+
* Used by the step handler for serializing step return values and
|
|
5
|
+
* deserializing step arguments. Supports encryption as a composable layer.
|
|
6
|
+
*/
|
|
7
|
+
import type { CodecOptions } from './codec.js';
|
|
8
|
+
import { type CryptoKey } from './encryption.js';
|
|
9
|
+
/**
|
|
10
|
+
* Serialize a value from the step execution environment.
|
|
11
|
+
*/
|
|
12
|
+
export declare function serialize(value: unknown, encryptionKey?: CryptoKey, options?: CodecOptions): Promise<Uint8Array | unknown>;
|
|
13
|
+
/**
|
|
14
|
+
* Deserialize a value for the step execution environment.
|
|
15
|
+
*/
|
|
16
|
+
export declare function deserialize(data: Uint8Array | unknown, encryptionKey?: CryptoKey, options?: CodecOptions): Promise<unknown>;
|
|
17
|
+
//# sourceMappingURL=step.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../../src/serialization/step.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EACL,KAAK,SAAS,EAGf,MAAM,iBAAiB,CAAC;AAKzB;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,OAAO,EACd,aAAa,CAAC,EAAE,SAAS,EACzB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,CAa/B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,UAAU,GAAG,OAAO,EAC1B,aAAa,CAAC,EAAE,SAAS,EACzB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,OAAO,CAAC,CAmBlB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Step mode serialization.
|
|
3
|
+
*
|
|
4
|
+
* Used by the step handler for serializing step return values and
|
|
5
|
+
* deserializing step arguments. Supports encryption as a composable layer.
|
|
6
|
+
*/
|
|
7
|
+
import { SerializationError } from '@workflow/errors';
|
|
8
|
+
import { devalueCodec } from './codec-devalue.js';
|
|
9
|
+
import { decrypt as decryptData, encrypt as encryptData, } from './encryption.js';
|
|
10
|
+
import { formatSerializationError, rethrowIfRuntimeError } from './errors.js';
|
|
11
|
+
import { decodeFormatPrefix, encodeWithFormatPrefix } from './format.js';
|
|
12
|
+
import { SerializationFormat } from './types.js';
|
|
13
|
+
/**
|
|
14
|
+
* Serialize a value from the step execution environment.
|
|
15
|
+
*/
|
|
16
|
+
export async function serialize(value, encryptionKey, options) {
|
|
17
|
+
try {
|
|
18
|
+
const payload = devalueCodec.serialize(value, 'step', options);
|
|
19
|
+
const prefixed = encodeWithFormatPrefix(SerializationFormat.DEVALUE_V1, payload);
|
|
20
|
+
return encryptData(prefixed, encryptionKey);
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
rethrowIfRuntimeError(error);
|
|
24
|
+
const { message, hint } = formatSerializationError('step value', error);
|
|
25
|
+
throw new SerializationError(message, { hint, cause: error });
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Deserialize a value for the step execution environment.
|
|
30
|
+
*/
|
|
31
|
+
export async function deserialize(data, encryptionKey, options) {
|
|
32
|
+
const decrypted = await decryptData(data, encryptionKey);
|
|
33
|
+
if (!(decrypted instanceof Uint8Array)) {
|
|
34
|
+
if (devalueCodec.deserializeLegacy) {
|
|
35
|
+
return devalueCodec.deserializeLegacy(decrypted, 'step', options);
|
|
36
|
+
}
|
|
37
|
+
throw new Error('Cannot deserialize non-binary data without legacy support');
|
|
38
|
+
}
|
|
39
|
+
const { format, payload } = decodeFormatPrefix(decrypted);
|
|
40
|
+
if (format === SerializationFormat.DEVALUE_V1) {
|
|
41
|
+
return devalueCodec.deserialize(payload, 'step', options);
|
|
42
|
+
}
|
|
43
|
+
throw new Error(`Unsupported serialization format: ${format}`);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJpYWxpemF0aW9uL3N0ZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUVMLE9BQU8sSUFBSSxXQUFXLEVBQ3RCLE9BQU8sSUFBSSxXQUFXLEdBQ3ZCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFakQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFNBQVMsQ0FDN0IsS0FBYyxFQUNkLGFBQXlCLEVBQ3pCLE9BQXNCO0lBRXRCLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvRCxNQUFNLFFBQVEsR0FBRyxzQkFBc0IsQ0FDckMsbUJBQW1CLENBQUMsVUFBVSxFQUM5QixPQUFPLENBQ00sQ0FBQztRQUNoQixPQUFPLFdBQVcsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLHdCQUF3QixDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4RSxNQUFNLElBQUksa0JBQWtCLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FDL0IsSUFBMEIsRUFDMUIsYUFBeUIsRUFDekIsT0FBc0I7SUFFdEIsTUFBTSxTQUFTLEdBQUcsTUFBTSxXQUFXLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRXpELElBQUksQ0FBQyxDQUFDLFNBQVMsWUFBWSxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLElBQUksWUFBWSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDbkMsT0FBTyxZQUFZLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYiwyREFBMkQsQ0FDNUQsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTFELElBQUksTUFBTSxLQUFLLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzlDLE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN0ZXAgbW9kZSBzZXJpYWxpemF0aW9uLlxuICpcbiAqIFVzZWQgYnkgdGhlIHN0ZXAgaGFuZGxlciBmb3Igc2VyaWFsaXppbmcgc3RlcCByZXR1cm4gdmFsdWVzIGFuZFxuICogZGVzZXJpYWxpemluZyBzdGVwIGFyZ3VtZW50cy4gU3VwcG9ydHMgZW5jcnlwdGlvbiBhcyBhIGNvbXBvc2FibGUgbGF5ZXIuXG4gKi9cblxuaW1wb3J0IHsgU2VyaWFsaXphdGlvbkVycm9yIH0gZnJvbSAnQHdvcmtmbG93L2Vycm9ycyc7XG5pbXBvcnQgdHlwZSB7IENvZGVjT3B0aW9ucyB9IGZyb20gJy4vY29kZWMuanMnO1xuaW1wb3J0IHsgZGV2YWx1ZUNvZGVjIH0gZnJvbSAnLi9jb2RlYy1kZXZhbHVlLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgQ3J5cHRvS2V5LFxuICBkZWNyeXB0IGFzIGRlY3J5cHREYXRhLFxuICBlbmNyeXB0IGFzIGVuY3J5cHREYXRhLFxufSBmcm9tICcuL2VuY3J5cHRpb24uanMnO1xuaW1wb3J0IHsgZm9ybWF0U2VyaWFsaXphdGlvbkVycm9yLCByZXRocm93SWZSdW50aW1lRXJyb3IgfSBmcm9tICcuL2Vycm9ycy5qcyc7XG5pbXBvcnQgeyBkZWNvZGVGb3JtYXRQcmVmaXgsIGVuY29kZVdpdGhGb3JtYXRQcmVmaXggfSBmcm9tICcuL2Zvcm1hdC5qcyc7XG5pbXBvcnQgeyBTZXJpYWxpemF0aW9uRm9ybWF0IH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogU2VyaWFsaXplIGEgdmFsdWUgZnJvbSB0aGUgc3RlcCBleGVjdXRpb24gZW52aXJvbm1lbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXJpYWxpemUoXG4gIHZhbHVlOiB1bmtub3duLFxuICBlbmNyeXB0aW9uS2V5PzogQ3J5cHRvS2V5LFxuICBvcHRpb25zPzogQ29kZWNPcHRpb25zXG4pOiBQcm9taXNlPFVpbnQ4QXJyYXkgfCB1bmtub3duPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IGRldmFsdWVDb2RlYy5zZXJpYWxpemUodmFsdWUsICdzdGVwJywgb3B0aW9ucyk7XG4gICAgY29uc3QgcHJlZml4ZWQgPSBlbmNvZGVXaXRoRm9ybWF0UHJlZml4KFxuICAgICAgU2VyaWFsaXphdGlvbkZvcm1hdC5ERVZBTFVFX1YxLFxuICAgICAgcGF5bG9hZFxuICAgICkgYXMgVWludDhBcnJheTtcbiAgICByZXR1cm4gZW5jcnlwdERhdGEocHJlZml4ZWQsIGVuY3J5cHRpb25LZXkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldGhyb3dJZlJ1bnRpbWVFcnJvcihlcnJvcik7XG4gICAgY29uc3QgeyBtZXNzYWdlLCBoaW50IH0gPSBmb3JtYXRTZXJpYWxpemF0aW9uRXJyb3IoJ3N0ZXAgdmFsdWUnLCBlcnJvcik7XG4gICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FcnJvcihtZXNzYWdlLCB7IGhpbnQsIGNhdXNlOiBlcnJvciB9KTtcbiAgfVxufVxuXG4vKipcbiAqIERlc2VyaWFsaXplIGEgdmFsdWUgZm9yIHRoZSBzdGVwIGV4ZWN1dGlvbiBlbnZpcm9ubWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlc2VyaWFsaXplKFxuICBkYXRhOiBVaW50OEFycmF5IHwgdW5rbm93bixcbiAgZW5jcnlwdGlvbktleT86IENyeXB0b0tleSxcbiAgb3B0aW9ucz86IENvZGVjT3B0aW9uc1xuKTogUHJvbWlzZTx1bmtub3duPiB7XG4gIGNvbnN0IGRlY3J5cHRlZCA9IGF3YWl0IGRlY3J5cHREYXRhKGRhdGEsIGVuY3J5cHRpb25LZXkpO1xuXG4gIGlmICghKGRlY3J5cHRlZCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgaWYgKGRldmFsdWVDb2RlYy5kZXNlcmlhbGl6ZUxlZ2FjeSkge1xuICAgICAgcmV0dXJuIGRldmFsdWVDb2RlYy5kZXNlcmlhbGl6ZUxlZ2FjeShkZWNyeXB0ZWQsICdzdGVwJywgb3B0aW9ucyk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdDYW5ub3QgZGVzZXJpYWxpemUgbm9uLWJpbmFyeSBkYXRhIHdpdGhvdXQgbGVnYWN5IHN1cHBvcnQnXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHsgZm9ybWF0LCBwYXlsb2FkIH0gPSBkZWNvZGVGb3JtYXRQcmVmaXgoZGVjcnlwdGVkKTtcblxuICBpZiAoZm9ybWF0ID09PSBTZXJpYWxpemF0aW9uRm9ybWF0LkRFVkFMVUVfVjEpIHtcbiAgICByZXR1cm4gZGV2YWx1ZUNvZGVjLmRlc2VyaWFsaXplKHBheWxvYWQsICdzdGVwJywgb3B0aW9ucyk7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHNlcmlhbGl6YXRpb24gZm9ybWF0OiAke2Zvcm1hdH1gKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types for the serialization system.
|
|
3
|
+
*/
|
|
4
|
+
import type { RuntimeDecryptionErrorContext } from '@workflow/errors';
|
|
5
|
+
/**
|
|
6
|
+
* A format prefix is exactly 4 lowercase alphanumeric characters [a-z0-9].
|
|
7
|
+
*
|
|
8
|
+
* This is a branded string type — use `isFormatPrefix()` to validate
|
|
9
|
+
* at runtime. The `SerializationFormat` object provides well-known
|
|
10
|
+
* constants, but codecs may define additional prefixes.
|
|
11
|
+
*/
|
|
12
|
+
export type FormatPrefix = string & {
|
|
13
|
+
readonly __brand: 'FormatPrefix';
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Runtime type guard for format prefix strings.
|
|
17
|
+
*
|
|
18
|
+
* Validates that a string is exactly 4 characters of [a-z0-9].
|
|
19
|
+
*/
|
|
20
|
+
export declare function isFormatPrefix(value: string): value is FormatPrefix;
|
|
21
|
+
/**
|
|
22
|
+
* Well-known format prefix constants. Codecs may define additional ones.
|
|
23
|
+
*/
|
|
24
|
+
export declare const SerializationFormat: {
|
|
25
|
+
/** devalue stringify/parse with TextEncoder/TextDecoder */
|
|
26
|
+
readonly DEVALUE_V1: FormatPrefix;
|
|
27
|
+
/** Encrypted payload (inner payload has its own format prefix) */
|
|
28
|
+
readonly ENCRYPTED: FormatPrefix;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Types that need specialized handling when serialized/deserialized.
|
|
32
|
+
* If a type is added here, it MUST also be added to the `Serializable`
|
|
33
|
+
* type in `schemas.ts`.
|
|
34
|
+
*/
|
|
35
|
+
export interface SerializableSpecial {
|
|
36
|
+
ArrayBuffer: string;
|
|
37
|
+
BigInt: string;
|
|
38
|
+
BigInt64Array: string;
|
|
39
|
+
BigUint64Array: string;
|
|
40
|
+
Date: string;
|
|
41
|
+
DOMException: {
|
|
42
|
+
message: string;
|
|
43
|
+
name: string;
|
|
44
|
+
stack?: string;
|
|
45
|
+
cause?: unknown;
|
|
46
|
+
};
|
|
47
|
+
FatalError: {
|
|
48
|
+
message: string;
|
|
49
|
+
stack?: string;
|
|
50
|
+
cause?: unknown;
|
|
51
|
+
};
|
|
52
|
+
Float32Array: string;
|
|
53
|
+
Float64Array: string;
|
|
54
|
+
Error: {
|
|
55
|
+
name: string;
|
|
56
|
+
message: string;
|
|
57
|
+
stack?: string;
|
|
58
|
+
cause?: unknown;
|
|
59
|
+
};
|
|
60
|
+
EvalError: {
|
|
61
|
+
message: string;
|
|
62
|
+
stack?: string;
|
|
63
|
+
cause?: unknown;
|
|
64
|
+
};
|
|
65
|
+
Headers: [string, string][];
|
|
66
|
+
HookConflictError: {
|
|
67
|
+
message: string;
|
|
68
|
+
stack?: string;
|
|
69
|
+
cause?: unknown;
|
|
70
|
+
token: string;
|
|
71
|
+
conflictingRunId?: string;
|
|
72
|
+
};
|
|
73
|
+
Int8Array: string;
|
|
74
|
+
Int16Array: string;
|
|
75
|
+
Int32Array: string;
|
|
76
|
+
Map: [any, any][];
|
|
77
|
+
RangeError: {
|
|
78
|
+
message: string;
|
|
79
|
+
stack?: string;
|
|
80
|
+
cause?: unknown;
|
|
81
|
+
};
|
|
82
|
+
ReadableStream: {
|
|
83
|
+
name: string;
|
|
84
|
+
type?: 'bytes';
|
|
85
|
+
startIndex?: number;
|
|
86
|
+
} | {
|
|
87
|
+
bodyInit: any;
|
|
88
|
+
};
|
|
89
|
+
ReferenceError: {
|
|
90
|
+
message: string;
|
|
91
|
+
stack?: string;
|
|
92
|
+
cause?: unknown;
|
|
93
|
+
};
|
|
94
|
+
RegExp: {
|
|
95
|
+
source: string;
|
|
96
|
+
flags: string;
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* `retryAfter` is serialized as a numeric epoch timestamp rather than a
|
|
100
|
+
* `Date` to be realm-safe. The Date reducer uses `instanceof global.Date`,
|
|
101
|
+
* which fails for Dates from a different VM realm.
|
|
102
|
+
*/
|
|
103
|
+
RetryableError: {
|
|
104
|
+
message: string;
|
|
105
|
+
stack?: string;
|
|
106
|
+
cause?: unknown;
|
|
107
|
+
retryAfter: number;
|
|
108
|
+
};
|
|
109
|
+
RuntimeDecryptionError: {
|
|
110
|
+
message: string;
|
|
111
|
+
stack?: string;
|
|
112
|
+
cause?: unknown;
|
|
113
|
+
context?: RuntimeDecryptionErrorContext;
|
|
114
|
+
};
|
|
115
|
+
Request: {
|
|
116
|
+
method: string;
|
|
117
|
+
url: string;
|
|
118
|
+
headers: Headers;
|
|
119
|
+
body: Request['body'];
|
|
120
|
+
duplex: Request['duplex'];
|
|
121
|
+
responseWritable?: WritableStream<Response>;
|
|
122
|
+
signal?: AbortSignal;
|
|
123
|
+
};
|
|
124
|
+
Response: {
|
|
125
|
+
type: Response['type'];
|
|
126
|
+
url: string;
|
|
127
|
+
status: number;
|
|
128
|
+
statusText: string;
|
|
129
|
+
headers: Headers;
|
|
130
|
+
body: Response['body'];
|
|
131
|
+
redirected: boolean;
|
|
132
|
+
};
|
|
133
|
+
Class: {
|
|
134
|
+
classId: string;
|
|
135
|
+
};
|
|
136
|
+
Instance: {
|
|
137
|
+
classId: string;
|
|
138
|
+
data: unknown;
|
|
139
|
+
};
|
|
140
|
+
Set: any[];
|
|
141
|
+
SyntaxError: {
|
|
142
|
+
message: string;
|
|
143
|
+
stack?: string;
|
|
144
|
+
cause?: unknown;
|
|
145
|
+
};
|
|
146
|
+
StepFunction: {
|
|
147
|
+
stepId: string;
|
|
148
|
+
closureVars?: Record<string, any>;
|
|
149
|
+
/**
|
|
150
|
+
* Captured lexical `this` for step proxies that were created via
|
|
151
|
+
* `useStep(...).bind(thisArg)` (the SWC plugin emits this for nested
|
|
152
|
+
* arrow steps that close over their enclosing function's `this`).
|
|
153
|
+
* The reviver re-binds the freshly-created proxy to this value so the
|
|
154
|
+
* binding survives serialization round-trips.
|
|
155
|
+
*/
|
|
156
|
+
boundThis?: unknown;
|
|
157
|
+
/**
|
|
158
|
+
* Prefilled arguments captured when the user (rather than the SWC
|
|
159
|
+
* plugin) called `useStep(...).bind(thisArg, x, y)`. The reviver
|
|
160
|
+
* re-applies these alongside `boundThis` so partial application
|
|
161
|
+
* survives serialization. The SWC plugin only ever emits
|
|
162
|
+
* `.bind(this)` with no extra args today; this slot exists so a
|
|
163
|
+
* hand-written `.bind(thisArg, x)` doesn't silently lose `x` after
|
|
164
|
+
* round-tripping through the reducer/reviver.
|
|
165
|
+
*/
|
|
166
|
+
boundArgs?: unknown[];
|
|
167
|
+
};
|
|
168
|
+
TypeError: {
|
|
169
|
+
message: string;
|
|
170
|
+
stack?: string;
|
|
171
|
+
cause?: unknown;
|
|
172
|
+
};
|
|
173
|
+
URIError: {
|
|
174
|
+
message: string;
|
|
175
|
+
stack?: string;
|
|
176
|
+
cause?: unknown;
|
|
177
|
+
};
|
|
178
|
+
URL: string;
|
|
179
|
+
WorkflowFunction: {
|
|
180
|
+
workflowId: string;
|
|
181
|
+
};
|
|
182
|
+
URLSearchParams: string;
|
|
183
|
+
Uint8Array: string;
|
|
184
|
+
Uint8ClampedArray: string;
|
|
185
|
+
Uint16Array: string;
|
|
186
|
+
Uint32Array: string;
|
|
187
|
+
AggregateError: {
|
|
188
|
+
message: string;
|
|
189
|
+
stack?: string;
|
|
190
|
+
cause?: unknown;
|
|
191
|
+
errors: unknown[];
|
|
192
|
+
};
|
|
193
|
+
WritableStream: {
|
|
194
|
+
name: string;
|
|
195
|
+
/**
|
|
196
|
+
* The runId of the workflow run that owns the underlying server
|
|
197
|
+
* stream. Present only when the writable was forwarded across a
|
|
198
|
+
* `start()` boundary (parent → child). When omitted, the writable
|
|
199
|
+
* belongs to the receiving run (the normal in-run case).
|
|
200
|
+
*/
|
|
201
|
+
runId?: string;
|
|
202
|
+
/**
|
|
203
|
+
* The deployment that owns the server stream. Carried with `runId`
|
|
204
|
+
* so a child running on a newer deployment can encrypt chunks with
|
|
205
|
+
* the parent's key without fetching the parent run first.
|
|
206
|
+
*/
|
|
207
|
+
deploymentId?: string;
|
|
208
|
+
};
|
|
209
|
+
AbortController: {
|
|
210
|
+
streamName: string;
|
|
211
|
+
hookToken: string;
|
|
212
|
+
aborted: boolean;
|
|
213
|
+
reason?: unknown;
|
|
214
|
+
};
|
|
215
|
+
AbortSignal: {
|
|
216
|
+
streamName: string;
|
|
217
|
+
hookToken: string;
|
|
218
|
+
aborted: boolean;
|
|
219
|
+
reason?: unknown;
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
export type Reducers = {
|
|
223
|
+
[K in keyof SerializableSpecial]: (value: any) => SerializableSpecial[K] | false;
|
|
224
|
+
};
|
|
225
|
+
export type Revivers = {
|
|
226
|
+
[K in keyof SerializableSpecial]: (value: SerializableSpecial[K]) => any;
|
|
227
|
+
};
|
|
228
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/serialization/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types for the serialization system.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Runtime type guard for format prefix strings.
|
|
6
|
+
*
|
|
7
|
+
* Validates that a string is exactly 4 characters of [a-z0-9].
|
|
8
|
+
*/
|
|
9
|
+
export function isFormatPrefix(value) {
|
|
10
|
+
return value.length === 4 && /^[a-z0-9]{4}$/.test(value);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Well-known format prefix constants. Codecs may define additional ones.
|
|
14
|
+
*/
|
|
15
|
+
export const SerializationFormat = {
|
|
16
|
+
/** devalue stringify/parse with TextEncoder/TextDecoder */
|
|
17
|
+
DEVALUE_V1: 'devl',
|
|
18
|
+
/** Encrypted payload (inner payload has its own format prefix) */
|
|
19
|
+
ENCRYPTED: 'encr',
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXphdGlvbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQWVIOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQWE7SUFDMUMsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLDJEQUEyRDtJQUMzRCxVQUFVLEVBQUUsTUFBc0I7SUFDbEMsa0VBQWtFO0lBQ2xFLFNBQVMsRUFBRSxNQUFzQjtDQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTaGFyZWQgdHlwZXMgZm9yIHRoZSBzZXJpYWxpemF0aW9uIHN5c3RlbS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFJ1bnRpbWVEZWNyeXB0aW9uRXJyb3JDb250ZXh0IH0gZnJvbSAnQHdvcmtmbG93L2Vycm9ycyc7XG5cbi8vIC0tLS0gRm9ybWF0IFByZWZpeCAtLS0tXG5cbi8qKlxuICogQSBmb3JtYXQgcHJlZml4IGlzIGV4YWN0bHkgNCBsb3dlcmNhc2UgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgW2EtejAtOV0uXG4gKlxuICogVGhpcyBpcyBhIGJyYW5kZWQgc3RyaW5nIHR5cGUg4oCUIHVzZSBgaXNGb3JtYXRQcmVmaXgoKWAgdG8gdmFsaWRhdGVcbiAqIGF0IHJ1bnRpbWUuIFRoZSBgU2VyaWFsaXphdGlvbkZvcm1hdGAgb2JqZWN0IHByb3ZpZGVzIHdlbGwta25vd25cbiAqIGNvbnN0YW50cywgYnV0IGNvZGVjcyBtYXkgZGVmaW5lIGFkZGl0aW9uYWwgcHJlZml4ZXMuXG4gKi9cbmV4cG9ydCB0eXBlIEZvcm1hdFByZWZpeCA9IHN0cmluZyAmIHsgcmVhZG9ubHkgX19icmFuZDogJ0Zvcm1hdFByZWZpeCcgfTtcblxuLyoqXG4gKiBSdW50aW1lIHR5cGUgZ3VhcmQgZm9yIGZvcm1hdCBwcmVmaXggc3RyaW5ncy5cbiAqXG4gKiBWYWxpZGF0ZXMgdGhhdCBhIHN0cmluZyBpcyBleGFjdGx5IDQgY2hhcmFjdGVycyBvZiBbYS16MC05XS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRm9ybWF0UHJlZml4KHZhbHVlOiBzdHJpbmcpOiB2YWx1ZSBpcyBGb3JtYXRQcmVmaXgge1xuICByZXR1cm4gdmFsdWUubGVuZ3RoID09PSA0ICYmIC9eW2EtejAtOV17NH0kLy50ZXN0KHZhbHVlKTtcbn1cblxuLyoqXG4gKiBXZWxsLWtub3duIGZvcm1hdCBwcmVmaXggY29uc3RhbnRzLiBDb2RlY3MgbWF5IGRlZmluZSBhZGRpdGlvbmFsIG9uZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uRm9ybWF0ID0ge1xuICAvKiogZGV2YWx1ZSBzdHJpbmdpZnkvcGFyc2Ugd2l0aCBUZXh0RW5jb2Rlci9UZXh0RGVjb2RlciAqL1xuICBERVZBTFVFX1YxOiAnZGV2bCcgYXMgRm9ybWF0UHJlZml4LFxuICAvKiogRW5jcnlwdGVkIHBheWxvYWQgKGlubmVyIHBheWxvYWQgaGFzIGl0cyBvd24gZm9ybWF0IHByZWZpeCkgKi9cbiAgRU5DUllQVEVEOiAnZW5jcicgYXMgRm9ybWF0UHJlZml4LFxufSBhcyBjb25zdDtcblxuLy8gLS0tLSBTZXJpYWxpemFibGUgVHlwZXMgLS0tLVxuXG4vKipcbiAqIFR5cGVzIHRoYXQgbmVlZCBzcGVjaWFsaXplZCBoYW5kbGluZyB3aGVuIHNlcmlhbGl6ZWQvZGVzZXJpYWxpemVkLlxuICogSWYgYSB0eXBlIGlzIGFkZGVkIGhlcmUsIGl0IE1VU1QgYWxzbyBiZSBhZGRlZCB0byB0aGUgYFNlcmlhbGl6YWJsZWBcbiAqIHR5cGUgaW4gYHNjaGVtYXMudHNgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcmlhbGl6YWJsZVNwZWNpYWwge1xuICBBcnJheUJ1ZmZlcjogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIEJpZ0ludDogc3RyaW5nOyAvLyBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYmlnaW50XG4gIEJpZ0ludDY0QXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBCaWdVaW50NjRBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIERhdGU6IHN0cmluZzsgLy8gSVNPIHN0cmluZ1xuICBET01FeGNlcHRpb246IHtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHN0YWNrPzogc3RyaW5nO1xuICAgIGNhdXNlPzogdW5rbm93bjtcbiAgfTtcbiAgRmF0YWxFcnJvcjogeyBtZXNzYWdlOiBzdHJpbmc7IHN0YWNrPzogc3RyaW5nOyBjYXVzZT86IHVua25vd24gfTtcbiAgRmxvYXQzMkFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgRmxvYXQ2NEFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgRXJyb3I6IHsgbmFtZTogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmc7IHN0YWNrPzogc3RyaW5nOyBjYXVzZT86IHVua25vd24gfTtcbiAgRXZhbEVycm9yOiB7IG1lc3NhZ2U6IHN0cmluZzsgc3RhY2s/OiBzdHJpbmc7IGNhdXNlPzogdW5rbm93biB9O1xuICBIZWFkZXJzOiBbc3RyaW5nLCBzdHJpbmddW107XG4gIEhvb2tDb25mbGljdEVycm9yOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIHN0YWNrPzogc3RyaW5nO1xuICAgIGNhdXNlPzogdW5rbm93bjtcbiAgICB0b2tlbjogc3RyaW5nO1xuICAgIC8vIFRPRE86IE1ha2UgdGhpcyByZXF1aXJlZCB3aGVuIEhvb2tDb25mbGljdEVycm9yLmNvbmZsaWN0aW5nUnVuSWQgaXMgcmVxdWlyZWQuXG4gICAgY29uZmxpY3RpbmdSdW5JZD86IHN0cmluZztcbiAgfTtcbiAgSW50OEFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgSW50MTZBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIEludDMyQXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBNYXA6IFthbnksIGFueV1bXTtcbiAgUmFuZ2VFcnJvcjogeyBtZXNzYWdlOiBzdHJpbmc7IHN0YWNrPzogc3RyaW5nOyBjYXVzZT86IHVua25vd24gfTtcbiAgUmVhZGFibGVTdHJlYW06XG4gICAgfCB7IG5hbWU6IHN0cmluZzsgdHlwZT86ICdieXRlcyc7IHN0YXJ0SW5kZXg/OiBudW1iZXIgfVxuICAgIHwgeyBib2R5SW5pdDogYW55IH07XG4gIFJlZmVyZW5jZUVycm9yOiB7IG1lc3NhZ2U6IHN0cmluZzsgc3RhY2s/OiBzdHJpbmc7IGNhdXNlPzogdW5rbm93biB9O1xuICBSZWdFeHA6IHsgc291cmNlOiBzdHJpbmc7IGZsYWdzOiBzdHJpbmcgfTtcbiAgLyoqXG4gICAqIGByZXRyeUFmdGVyYCBpcyBzZXJpYWxpemVkIGFzIGEgbnVtZXJpYyBlcG9jaCB0aW1lc3RhbXAgcmF0aGVyIHRoYW4gYVxuICAgKiBgRGF0ZWAgdG8gYmUgcmVhbG0tc2FmZS4gVGhlIERhdGUgcmVkdWNlciB1c2VzIGBpbnN0YW5jZW9mIGdsb2JhbC5EYXRlYCxcbiAgICogd2hpY2ggZmFpbHMgZm9yIERhdGVzIGZyb20gYSBkaWZmZXJlbnQgVk0gcmVhbG0uXG4gICAqL1xuICBSZXRyeWFibGVFcnJvcjoge1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBzdGFjaz86IHN0cmluZztcbiAgICBjYXVzZT86IHVua25vd247XG4gICAgcmV0cnlBZnRlcjogbnVtYmVyO1xuICB9O1xuICBSdW50aW1lRGVjcnlwdGlvbkVycm9yOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIHN0YWNrPzogc3RyaW5nO1xuICAgIGNhdXNlPzogdW5rbm93bjtcbiAgICBjb250ZXh0PzogUnVudGltZURlY3J5cHRpb25FcnJvckNvbnRleHQ7XG4gIH07XG4gIFJlcXVlc3Q6IHtcbiAgICBtZXRob2Q6IHN0cmluZztcbiAgICB1cmw6IHN0cmluZztcbiAgICBoZWFkZXJzOiBIZWFkZXJzO1xuICAgIGJvZHk6IFJlcXVlc3RbJ2JvZHknXTtcbiAgICBkdXBsZXg6IFJlcXVlc3RbJ2R1cGxleCddO1xuICAgIHJlc3BvbnNlV3JpdGFibGU/OiBXcml0YWJsZVN0cmVhbTxSZXNwb25zZT47XG4gICAgc2lnbmFsPzogQWJvcnRTaWduYWw7XG4gIH07XG4gIFJlc3BvbnNlOiB7XG4gICAgdHlwZTogUmVzcG9uc2VbJ3R5cGUnXTtcbiAgICB1cmw6IHN0cmluZztcbiAgICBzdGF0dXM6IG51bWJlcjtcbiAgICBzdGF0dXNUZXh0OiBzdHJpbmc7XG4gICAgaGVhZGVyczogSGVhZGVycztcbiAgICBib2R5OiBSZXNwb25zZVsnYm9keSddO1xuICAgIHJlZGlyZWN0ZWQ6IGJvb2xlYW47XG4gIH07XG4gIENsYXNzOiB7XG4gICAgY2xhc3NJZDogc3RyaW5nO1xuICB9O1xuICBJbnN0YW5jZToge1xuICAgIGNsYXNzSWQ6IHN0cmluZztcbiAgICBkYXRhOiB1bmtub3duO1xuICB9O1xuICBTZXQ6IGFueVtdO1xuICBTeW50YXhFcnJvcjogeyBtZXNzYWdlOiBzdHJpbmc7IHN0YWNrPzogc3RyaW5nOyBjYXVzZT86IHVua25vd24gfTtcbiAgU3RlcEZ1bmN0aW9uOiB7XG4gICAgc3RlcElkOiBzdHJpbmc7XG4gICAgY2xvc3VyZVZhcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIC8qKlxuICAgICAqIENhcHR1cmVkIGxleGljYWwgYHRoaXNgIGZvciBzdGVwIHByb3hpZXMgdGhhdCB3ZXJlIGNyZWF0ZWQgdmlhXG4gICAgICogYHVzZVN0ZXAoLi4uKS5iaW5kKHRoaXNBcmcpYCAodGhlIFNXQyBwbHVnaW4gZW1pdHMgdGhpcyBmb3IgbmVzdGVkXG4gICAgICogYXJyb3cgc3RlcHMgdGhhdCBjbG9zZSBvdmVyIHRoZWlyIGVuY2xvc2luZyBmdW5jdGlvbidzIGB0aGlzYCkuXG4gICAgICogVGhlIHJldml2ZXIgcmUtYmluZHMgdGhlIGZyZXNobHktY3JlYXRlZCBwcm94eSB0byB0aGlzIHZhbHVlIHNvIHRoZVxuICAgICAqIGJpbmRpbmcgc3Vydml2ZXMgc2VyaWFsaXphdGlvbiByb3VuZC10cmlwcy5cbiAgICAgKi9cbiAgICBib3VuZFRoaXM/OiB1bmtub3duO1xuICAgIC8qKlxuICAgICAqIFByZWZpbGxlZCBhcmd1bWVudHMgY2FwdHVyZWQgd2hlbiB0aGUgdXNlciAocmF0aGVyIHRoYW4gdGhlIFNXQ1xuICAgICAqIHBsdWdpbikgY2FsbGVkIGB1c2VTdGVwKC4uLikuYmluZCh0aGlzQXJnLCB4LCB5KWAuIFRoZSByZXZpdmVyXG4gICAgICogcmUtYXBwbGllcyB0aGVzZSBhbG9uZ3NpZGUgYGJvdW5kVGhpc2Agc28gcGFydGlhbCBhcHBsaWNhdGlvblxuICAgICAqIHN1cnZpdmVzIHNlcmlhbGl6YXRpb24uIFRoZSBTV0MgcGx1Z2luIG9ubHkgZXZlciBlbWl0c1xuICAgICAqIGAuYmluZCh0aGlzKWAgd2l0aCBubyBleHRyYSBhcmdzIHRvZGF5OyB0aGlzIHNsb3QgZXhpc3RzIHNvIGFcbiAgICAgKiBoYW5kLXdyaXR0ZW4gYC5iaW5kKHRoaXNBcmcsIHgpYCBkb2Vzbid0IHNpbGVudGx5IGxvc2UgYHhgIGFmdGVyXG4gICAgICogcm91bmQtdHJpcHBpbmcgdGhyb3VnaCB0aGUgcmVkdWNlci9yZXZpdmVyLlxuICAgICAqL1xuICAgIGJvdW5kQXJncz86IHVua25vd25bXTtcbiAgfTtcbiAgVHlwZUVycm9yOiB7IG1lc3NhZ2U6IHN0cmluZzsgc3RhY2s/OiBzdHJpbmc7IGNhdXNlPzogdW5rbm93biB9O1xuICBVUklFcnJvcjogeyBtZXNzYWdlOiBzdHJpbmc7IHN0YWNrPzogc3RyaW5nOyBjYXVzZT86IHVua25vd24gfTtcbiAgVVJMOiBzdHJpbmc7XG4gIFdvcmtmbG93RnVuY3Rpb246IHtcbiAgICB3b3JrZmxvd0lkOiBzdHJpbmc7XG4gIH07XG4gIFVSTFNlYXJjaFBhcmFtczogc3RyaW5nO1xuICBVaW50OEFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgVWludDhDbGFtcGVkQXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBVaW50MTZBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIFVpbnQzMkFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgQWdncmVnYXRlRXJyb3I6IHtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgc3RhY2s/OiBzdHJpbmc7XG4gICAgY2F1c2U/OiB1bmtub3duO1xuICAgIGVycm9yczogdW5rbm93bltdO1xuICB9O1xuICBXcml0YWJsZVN0cmVhbToge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgcnVuSWQgb2YgdGhlIHdvcmtmbG93IHJ1biB0aGF0IG93bnMgdGhlIHVuZGVybHlpbmcgc2VydmVyXG4gICAgICogc3RyZWFtLiBQcmVzZW50IG9ubHkgd2hlbiB0aGUgd3JpdGFibGUgd2FzIGZvcndhcmRlZCBhY3Jvc3MgYVxuICAgICAqIGBzdGFydCgpYCBib3VuZGFyeSAocGFyZW50IOKGkiBjaGlsZCkuIFdoZW4gb21pdHRlZCwgdGhlIHdyaXRhYmxlXG4gICAgICogYmVsb25ncyB0byB0aGUgcmVjZWl2aW5nIHJ1biAodGhlIG5vcm1hbCBpbi1ydW4gY2FzZSkuXG4gICAgICovXG4gICAgcnVuSWQ/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIGRlcGxveW1lbnQgdGhhdCBvd25zIHRoZSBzZXJ2ZXIgc3RyZWFtLiBDYXJyaWVkIHdpdGggYHJ1bklkYFxuICAgICAqIHNvIGEgY2hpbGQgcnVubmluZyBvbiBhIG5ld2VyIGRlcGxveW1lbnQgY2FuIGVuY3J5cHQgY2h1bmtzIHdpdGhcbiAgICAgKiB0aGUgcGFyZW50J3Mga2V5IHdpdGhvdXQgZmV0Y2hpbmcgdGhlIHBhcmVudCBydW4gZmlyc3QuXG4gICAgICovXG4gICAgZGVwbG95bWVudElkPzogc3RyaW5nO1xuICB9O1xuICBBYm9ydENvbnRyb2xsZXI6IHtcbiAgICBzdHJlYW1OYW1lOiBzdHJpbmc7XG4gICAgaG9va1Rva2VuOiBzdHJpbmc7XG4gICAgYWJvcnRlZDogYm9vbGVhbjtcbiAgICByZWFzb24/OiB1bmtub3duO1xuICB9O1xuICBBYm9ydFNpZ25hbDoge1xuICAgIHN0cmVhbU5hbWU6IHN0cmluZztcbiAgICBob29rVG9rZW46IHN0cmluZztcbiAgICBhYm9ydGVkOiBib29sZWFuO1xuICAgIHJlYXNvbj86IHVua25vd247XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFJlZHVjZXJzID0ge1xuICBbSyBpbiBrZXlvZiBTZXJpYWxpemFibGVTcGVjaWFsXTogKFxuICAgIHZhbHVlOiBhbnlcbiAgKSA9PiBTZXJpYWxpemFibGVTcGVjaWFsW0tdIHwgZmFsc2U7XG59O1xuXG5leHBvcnQgdHlwZSBSZXZpdmVycyA9IHtcbiAgW0sgaW4ga2V5b2YgU2VyaWFsaXphYmxlU3BlY2lhbF06ICh2YWx1ZTogU2VyaWFsaXphYmxlU3BlY2lhbFtLXSkgPT4gYW55O1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow mode serialization.
|
|
3
|
+
*
|
|
4
|
+
* Provides serialize/deserialize for use inside the workflow execution
|
|
5
|
+
* environment (QuickJS VM or Node.js vm). It is:
|
|
6
|
+
* - Synchronous (no async operations)
|
|
7
|
+
* - No encryption (encryption is handled outside the VM on the host side)
|
|
8
|
+
*
|
|
9
|
+
* Designed to be bundled into the workflow code by esbuild and executed
|
|
10
|
+
* inside the sandboxed VM.
|
|
11
|
+
*/
|
|
12
|
+
import type { CodecOptions } from './codec.js';
|
|
13
|
+
/**
|
|
14
|
+
* Serialize a value for storage/transmission from the workflow environment.
|
|
15
|
+
*
|
|
16
|
+
* @param value - The value to serialize
|
|
17
|
+
* @param options - Optional global, extra reducers/revivers for VM-context serialization
|
|
18
|
+
* @returns Format-prefixed serialized bytes
|
|
19
|
+
*/
|
|
20
|
+
export declare function serialize(value: unknown, options?: CodecOptions): Uint8Array;
|
|
21
|
+
/**
|
|
22
|
+
* Deserialize a value received in the workflow environment.
|
|
23
|
+
*
|
|
24
|
+
* @param data - Format-prefixed serialized bytes, or legacy data
|
|
25
|
+
* @param options - Optional global, extra revivers for VM-context deserialization
|
|
26
|
+
* @returns The deserialized value
|
|
27
|
+
*/
|
|
28
|
+
export declare function deserialize(data: Uint8Array | unknown, options?: CodecOptions): unknown;
|
|
29
|
+
//# sourceMappingURL=workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/serialization/workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,UAAU,CAW5E;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,UAAU,GAAG,OAAO,EAC1B,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAiBT"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow mode serialization.
|
|
3
|
+
*
|
|
4
|
+
* Provides serialize/deserialize for use inside the workflow execution
|
|
5
|
+
* environment (QuickJS VM or Node.js vm). It is:
|
|
6
|
+
* - Synchronous (no async operations)
|
|
7
|
+
* - No encryption (encryption is handled outside the VM on the host side)
|
|
8
|
+
*
|
|
9
|
+
* Designed to be bundled into the workflow code by esbuild and executed
|
|
10
|
+
* inside the sandboxed VM.
|
|
11
|
+
*/
|
|
12
|
+
import { SerializationError } from '@workflow/errors';
|
|
13
|
+
import { devalueCodec } from './codec-devalue.js';
|
|
14
|
+
import { formatSerializationError } from './errors.js';
|
|
15
|
+
import { decodeFormatPrefix, encodeWithFormatPrefix } from './format.js';
|
|
16
|
+
import { SerializationFormat } from './types.js';
|
|
17
|
+
/**
|
|
18
|
+
* Serialize a value for storage/transmission from the workflow environment.
|
|
19
|
+
*
|
|
20
|
+
* @param value - The value to serialize
|
|
21
|
+
* @param options - Optional global, extra reducers/revivers for VM-context serialization
|
|
22
|
+
* @returns Format-prefixed serialized bytes
|
|
23
|
+
*/
|
|
24
|
+
export function serialize(value, options) {
|
|
25
|
+
try {
|
|
26
|
+
const payload = devalueCodec.serialize(value, 'workflow', options);
|
|
27
|
+
return encodeWithFormatPrefix(SerializationFormat.DEVALUE_V1, payload);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
const { message, hint } = formatSerializationError('workflow value', error);
|
|
31
|
+
throw new SerializationError(message, { hint, cause: error });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Deserialize a value received in the workflow environment.
|
|
36
|
+
*
|
|
37
|
+
* @param data - Format-prefixed serialized bytes, or legacy data
|
|
38
|
+
* @param options - Optional global, extra revivers for VM-context deserialization
|
|
39
|
+
* @returns The deserialized value
|
|
40
|
+
*/
|
|
41
|
+
export function deserialize(data, options) {
|
|
42
|
+
if (!(data instanceof Uint8Array)) {
|
|
43
|
+
if (devalueCodec.deserializeLegacy) {
|
|
44
|
+
return devalueCodec.deserializeLegacy(data, 'workflow', options);
|
|
45
|
+
}
|
|
46
|
+
throw new Error('Cannot deserialize non-binary data without legacy support');
|
|
47
|
+
}
|
|
48
|
+
const { format, payload } = decodeFormatPrefix(data);
|
|
49
|
+
if (format === SerializationFormat.DEVALUE_V1) {
|
|
50
|
+
return devalueCodec.deserialize(payload, 'workflow', options);
|
|
51
|
+
}
|
|
52
|
+
throw new Error(`Unsupported serialization format: ${format}`);
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXphdGlvbi93b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBRUgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBYyxFQUFFLE9BQXNCO0lBQzlELElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNuRSxPQUFPLHNCQUFzQixDQUMzQixtQkFBbUIsQ0FBQyxVQUFVLEVBQzlCLE9BQU8sQ0FDTSxDQUFDO0lBQ2xCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyx3QkFBd0IsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1RSxNQUFNLElBQUksa0JBQWtCLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FDekIsSUFBMEIsRUFDMUIsT0FBc0I7SUFFdEIsSUFBSSxDQUFDLENBQUMsSUFBSSxZQUFZLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDbEMsSUFBSSxZQUFZLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNuQyxPQUFPLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUNiLDJEQUEyRCxDQUM1RCxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFckQsSUFBSSxNQUFNLEtBQUssbUJBQW1CLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDOUMsT0FBTyxZQUFZLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogV29ya2Zsb3cgbW9kZSBzZXJpYWxpemF0aW9uLlxuICpcbiAqIFByb3ZpZGVzIHNlcmlhbGl6ZS9kZXNlcmlhbGl6ZSBmb3IgdXNlIGluc2lkZSB0aGUgd29ya2Zsb3cgZXhlY3V0aW9uXG4gKiBlbnZpcm9ubWVudCAoUXVpY2tKUyBWTSBvciBOb2RlLmpzIHZtKS4gSXQgaXM6XG4gKiAtIFN5bmNocm9ub3VzIChubyBhc3luYyBvcGVyYXRpb25zKVxuICogLSBObyBlbmNyeXB0aW9uIChlbmNyeXB0aW9uIGlzIGhhbmRsZWQgb3V0c2lkZSB0aGUgVk0gb24gdGhlIGhvc3Qgc2lkZSlcbiAqXG4gKiBEZXNpZ25lZCB0byBiZSBidW5kbGVkIGludG8gdGhlIHdvcmtmbG93IGNvZGUgYnkgZXNidWlsZCBhbmQgZXhlY3V0ZWRcbiAqIGluc2lkZSB0aGUgc2FuZGJveGVkIFZNLlxuICovXG5cbmltcG9ydCB7IFNlcmlhbGl6YXRpb25FcnJvciB9IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBDb2RlY09wdGlvbnMgfSBmcm9tICcuL2NvZGVjLmpzJztcbmltcG9ydCB7IGRldmFsdWVDb2RlYyB9IGZyb20gJy4vY29kZWMtZGV2YWx1ZS5qcyc7XG5pbXBvcnQgeyBmb3JtYXRTZXJpYWxpemF0aW9uRXJyb3IgfSBmcm9tICcuL2Vycm9ycy5qcyc7XG5pbXBvcnQgeyBkZWNvZGVGb3JtYXRQcmVmaXgsIGVuY29kZVdpdGhGb3JtYXRQcmVmaXggfSBmcm9tICcuL2Zvcm1hdC5qcyc7XG5pbXBvcnQgeyBTZXJpYWxpemF0aW9uRm9ybWF0IH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogU2VyaWFsaXplIGEgdmFsdWUgZm9yIHN0b3JhZ2UvdHJhbnNtaXNzaW9uIGZyb20gdGhlIHdvcmtmbG93IGVudmlyb25tZW50LlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBzZXJpYWxpemVcbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgZ2xvYmFsLCBleHRyYSByZWR1Y2Vycy9yZXZpdmVycyBmb3IgVk0tY29udGV4dCBzZXJpYWxpemF0aW9uXG4gKiBAcmV0dXJucyBGb3JtYXQtcHJlZml4ZWQgc2VyaWFsaXplZCBieXRlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplKHZhbHVlOiB1bmtub3duLCBvcHRpb25zPzogQ29kZWNPcHRpb25zKTogVWludDhBcnJheSB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IGRldmFsdWVDb2RlYy5zZXJpYWxpemUodmFsdWUsICd3b3JrZmxvdycsIG9wdGlvbnMpO1xuICAgIHJldHVybiBlbmNvZGVXaXRoRm9ybWF0UHJlZml4KFxuICAgICAgU2VyaWFsaXphdGlvbkZvcm1hdC5ERVZBTFVFX1YxLFxuICAgICAgcGF5bG9hZFxuICAgICkgYXMgVWludDhBcnJheTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIGhpbnQgfSA9IGZvcm1hdFNlcmlhbGl6YXRpb25FcnJvcignd29ya2Zsb3cgdmFsdWUnLCBlcnJvcik7XG4gICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FcnJvcihtZXNzYWdlLCB7IGhpbnQsIGNhdXNlOiBlcnJvciB9KTtcbiAgfVxufVxuXG4vKipcbiAqIERlc2VyaWFsaXplIGEgdmFsdWUgcmVjZWl2ZWQgaW4gdGhlIHdvcmtmbG93IGVudmlyb25tZW50LlxuICpcbiAqIEBwYXJhbSBkYXRhIC0gRm9ybWF0LXByZWZpeGVkIHNlcmlhbGl6ZWQgYnl0ZXMsIG9yIGxlZ2FjeSBkYXRhXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGdsb2JhbCwgZXh0cmEgcmV2aXZlcnMgZm9yIFZNLWNvbnRleHQgZGVzZXJpYWxpemF0aW9uXG4gKiBAcmV0dXJucyBUaGUgZGVzZXJpYWxpemVkIHZhbHVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXNlcmlhbGl6ZShcbiAgZGF0YTogVWludDhBcnJheSB8IHVua25vd24sXG4gIG9wdGlvbnM/OiBDb2RlY09wdGlvbnNcbik6IHVua25vd24ge1xuICBpZiAoIShkYXRhIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHtcbiAgICBpZiAoZGV2YWx1ZUNvZGVjLmRlc2VyaWFsaXplTGVnYWN5KSB7XG4gICAgICByZXR1cm4gZGV2YWx1ZUNvZGVjLmRlc2VyaWFsaXplTGVnYWN5KGRhdGEsICd3b3JrZmxvdycsIG9wdGlvbnMpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnQ2Fubm90IGRlc2VyaWFsaXplIG5vbi1iaW5hcnkgZGF0YSB3aXRob3V0IGxlZ2FjeSBzdXBwb3J0J1xuICAgICk7XG4gIH1cblxuICBjb25zdCB7IGZvcm1hdCwgcGF5bG9hZCB9ID0gZGVjb2RlRm9ybWF0UHJlZml4KGRhdGEpO1xuXG4gIGlmIChmb3JtYXQgPT09IFNlcmlhbGl6YXRpb25Gb3JtYXQuREVWQUxVRV9WMSkge1xuICAgIHJldHVybiBkZXZhbHVlQ29kZWMuZGVzZXJpYWxpemUocGF5bG9hZCwgJ3dvcmtmbG93Jywgb3B0aW9ucyk7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHNlcmlhbGl6YXRpb24gZm9ybWF0OiAke2Zvcm1hdH1gKTtcbn1cbiJdfQ==
|
|
@@ -82,6 +82,19 @@ export interface StreamRef {
|
|
|
82
82
|
__type: typeof STREAM_REF_TYPE;
|
|
83
83
|
streamId: string;
|
|
84
84
|
}
|
|
85
|
+
/** Marker for Run reference objects rendered as links in the UI */
|
|
86
|
+
export declare const RUN_REF_TYPE = "__workflow_run_ref__";
|
|
87
|
+
/** A Run reference for UI display */
|
|
88
|
+
export interface RunRef {
|
|
89
|
+
__type: typeof RUN_REF_TYPE;
|
|
90
|
+
runId: string;
|
|
91
|
+
}
|
|
92
|
+
/** Check if a value is a RunRef object */
|
|
93
|
+
export declare const isRunRef: (value: unknown) => value is RunRef;
|
|
94
|
+
/** Convert a serialized Run value to a RunRef for display */
|
|
95
|
+
export declare const serializedRunToRunRef: (value: {
|
|
96
|
+
runId: string;
|
|
97
|
+
}) => RunRef;
|
|
85
98
|
/** Marker for custom class instance references */
|
|
86
99
|
export declare const CLASS_INSTANCE_REF_TYPE = "__workflow_class_instance_ref__";
|
|
87
100
|
/**
|
|
@@ -117,11 +130,12 @@ export declare const streamToStreamRef: (value: any) => StreamRef;
|
|
|
117
130
|
export declare const serializedStepFunctionToString: (value: unknown) => string;
|
|
118
131
|
/** Extract the class name from a classId */
|
|
119
132
|
export declare const extractClassName: (classId: string) => string;
|
|
120
|
-
/** Convert a serialized class instance to a ClassInstanceRef for display
|
|
133
|
+
/** Convert a serialized class instance to a ClassInstanceRef for display.
|
|
134
|
+
* Run instances are special-cased to a RunRef for clickable rendering. */
|
|
121
135
|
export declare const serializedInstanceToRef: (value: {
|
|
122
136
|
classId: string;
|
|
123
137
|
data: unknown;
|
|
124
|
-
}) => ClassInstanceRef;
|
|
138
|
+
}) => ClassInstanceRef | RunRef;
|
|
125
139
|
/** Convert a serialized class reference to a display string */
|
|
126
140
|
export declare const serializedClassToString: (value: {
|
|
127
141
|
classId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialization-format.d.ts","sourceRoot":"","sources":["../src/serialization-format.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,eAAO,MAAM,mBAAmB;IAC9B,2DAA2D;;IAE3D,mFAAmF;;CAE3E,CAAC;AAEX,MAAM,MAAM,uBAAuB,GACjC,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAQjE;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,UAAU,GAAG,OAAO,GAC5B,UAAU,GAAG,OAAO,CAgBtB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG;IAC9D,MAAM,EAAE,uBAAuB,CAAC;IAChC,OAAO,EAAE,UAAU,CAAC;CACrB,CA0BA;AAMD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,2BAAwB,CAAC;AAsB3D;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAQpD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAMtD;AAMD;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;AAM3D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAuBvE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,OAAO,iBAAiB,EAAE,SAAS,GAAG,SAAS,GACnD,OAAO,CAAC,OAAO,CAAC,CAWlB;AAQD,sEAAsE;AACtE,eAAO,MAAM,eAAe,4BAA4B,CAAC;AAEzD,wCAAwC;AACxC,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,OAAO,eAAe,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,kDAAkD;AAClD,eAAO,MAAM,uBAAuB,oCAAoC,CAAC;AAEzE;;;;;GAKG;AACH,qBAAa,gBAAgB;aAIT,SAAS,EAAE,MAAM;aACjB,OAAO,EAAE,MAAM;aACf,IAAI,EAAE,OAAO;IAL/B,QAAQ,CAAC,MAAM,qCAA2B;gBAGxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO;IAG/B,MAAM,IAAI;QACR,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,OAAO,CAAC;KACf;CAQF;AAED,oDAAoD;AACpD,eAAO,MAAM,kBAAkB,GAC7B,OAAO,OAAO,KACb,KAAK,IAAI,gBAUX,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,UAAU,GAAI,OAAO,OAAO,KAAG,OAE3C,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,SASrD,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,GAAG,KAAG,SAa9C,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,8BAA8B,GAAI,OAAO,OAAO,KAAG,MAO/D,CAAC;AAEF,4CAA4C;AAC5C,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,KAAG,MAIlD,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"serialization-format.d.ts","sourceRoot":"","sources":["../src/serialization-format.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,eAAO,MAAM,mBAAmB;IAC9B,2DAA2D;;IAE3D,mFAAmF;;CAE3E,CAAC;AAEX,MAAM,MAAM,uBAAuB,GACjC,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAQjE;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,UAAU,GAAG,OAAO,GAC5B,UAAU,GAAG,OAAO,CAgBtB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG;IAC9D,MAAM,EAAE,uBAAuB,CAAC;IAChC,OAAO,EAAE,UAAU,CAAC;CACrB,CA0BA;AAMD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,2BAAwB,CAAC;AAsB3D;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAQpD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAMtD;AAMD;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;AAM3D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAuBvE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,OAAO,iBAAiB,EAAE,SAAS,GAAG,SAAS,GACnD,OAAO,CAAC,OAAO,CAAC,CAWlB;AAQD,sEAAsE;AACtE,eAAO,MAAM,eAAe,4BAA4B,CAAC;AAEzD,wCAAwC;AACxC,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,OAAO,eAAe,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mEAAmE;AACnE,eAAO,MAAM,YAAY,yBAAyB,CAAC;AAEnD,qCAAqC;AACrC,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,OAAO,YAAY,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,0CAA0C;AAC1C,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MASlD,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,qBAAqB,GAAI,OAAO;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,KAAG,MAEhE,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,uBAAuB,oCAAoC,CAAC;AAEzE;;;;;GAKG;AACH,qBAAa,gBAAgB;aAIT,SAAS,EAAE,MAAM;aACjB,OAAO,EAAE,MAAM;aACf,IAAI,EAAE,OAAO;IAL/B,QAAQ,CAAC,MAAM,qCAA2B;gBAGxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO;IAG/B,MAAM,IAAI;QACR,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,OAAO,CAAC;KACf;CAQF;AAED,oDAAoD;AACpD,eAAO,MAAM,kBAAkB,GAC7B,OAAO,OAAO,KACb,KAAK,IAAI,gBAUX,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,UAAU,GAAI,OAAO,OAAO,KAAG,OAE3C,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,SASrD,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,GAAG,KAAG,SAa9C,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,8BAA8B,GAAI,OAAO,OAAO,KAAG,MAO/D,CAAC;AAEF,4CAA4C;AAC5C,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,KAAG,MAIlD,CAAC;AAEF;2EAC2E;AAC3E,eAAO,MAAM,uBAAuB,GAAI,OAAO;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf,KAAG,gBAAgB,GAAG,MAYtB,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,uBAAuB,GAAI,OAAO;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,KAAG,MAEpE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAuCnC,CAAC;AA0LF;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,SAAS;IACR,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,gBAAgB,CAAC,EAAE,GAAG,CAAC;CACxB,EACD,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,CAAC,CA8BpC;AAMD,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAmBvD;AAED,uEAAuE;AACvE,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,SAAK,GAAG,MAAM,CAG7D"}
|