@superdurable/dex 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +145 -0
  3. package/dist/src/blob-cache.d.ts +14 -0
  4. package/dist/src/blob-cache.js +22 -0
  5. package/dist/src/blob-cache.js.map +1 -0
  6. package/dist/src/client.d.ts +36 -0
  7. package/dist/src/client.js +441 -0
  8. package/dist/src/client.js.map +1 -0
  9. package/dist/src/codec.d.ts +38 -0
  10. package/dist/src/codec.js +86 -0
  11. package/dist/src/codec.js.map +1 -0
  12. package/dist/src/context.d.ts +23 -0
  13. package/dist/src/context.js +9 -0
  14. package/dist/src/context.js.map +1 -0
  15. package/dist/src/errors.d.ts +44 -0
  16. package/dist/src/errors.js +73 -0
  17. package/dist/src/errors.js.map +1 -0
  18. package/dist/src/flow.d.ts +31 -0
  19. package/dist/src/flow.js +155 -0
  20. package/dist/src/flow.js.map +1 -0
  21. package/dist/src/gen/dex.d.ts +1529 -0
  22. package/dist/src/gen/dex.js +10661 -0
  23. package/dist/src/gen/dex.js.map +1 -0
  24. package/dist/src/gen/google/protobuf/duration.d.ts +103 -0
  25. package/dist/src/gen/google/protobuf/duration.js +64 -0
  26. package/dist/src/gen/google/protobuf/duration.js.map +1 -0
  27. package/dist/src/gen/google/protobuf/empty.d.ts +37 -0
  28. package/dist/src/gen/google/protobuf/empty.js +39 -0
  29. package/dist/src/gen/google/protobuf/empty.js.map +1 -0
  30. package/dist/src/gen/google/protobuf/struct.d.ts +140 -0
  31. package/dist/src/gen/google/protobuf/struct.js +359 -0
  32. package/dist/src/gen/google/protobuf/struct.js.map +1 -0
  33. package/dist/src/gen/google/protobuf/timestamp.d.ts +133 -0
  34. package/dist/src/gen/google/protobuf/timestamp.js +64 -0
  35. package/dist/src/gen/google/protobuf/timestamp.js.map +1 -0
  36. package/dist/src/grpc-status.d.ts +4 -0
  37. package/dist/src/grpc-status.js +105 -0
  38. package/dist/src/grpc-status.js.map +1 -0
  39. package/dist/src/index.d.ts +14 -0
  40. package/dist/src/index.js +20 -0
  41. package/dist/src/index.js.map +1 -0
  42. package/dist/src/invocation-context.d.ts +44 -0
  43. package/dist/src/invocation-context.js +203 -0
  44. package/dist/src/invocation-context.js.map +1 -0
  45. package/dist/src/options.d.ts +106 -0
  46. package/dist/src/options.js +55 -0
  47. package/dist/src/options.js.map +1 -0
  48. package/dist/src/persistence.d.ts +45 -0
  49. package/dist/src/persistence.js +65 -0
  50. package/dist/src/persistence.js.map +1 -0
  51. package/dist/src/rpc.d.ts +39 -0
  52. package/dist/src/rpc.js +50 -0
  53. package/dist/src/rpc.js.map +1 -0
  54. package/dist/src/step.d.ts +92 -0
  55. package/dist/src/step.js +62 -0
  56. package/dist/src/step.js.map +1 -0
  57. package/dist/src/validation.d.ts +3 -0
  58. package/dist/src/validation.js +33 -0
  59. package/dist/src/validation.js.map +1 -0
  60. package/dist/src/value-mapper.d.ts +14 -0
  61. package/dist/src/value-mapper.js +199 -0
  62. package/dist/src/value-mapper.js.map +1 -0
  63. package/dist/src/wait.d.ts +57 -0
  64. package/dist/src/wait.js +124 -0
  65. package/dist/src/wait.js.map +1 -0
  66. package/dist/src/worker-dispatcher.d.ts +14 -0
  67. package/dist/src/worker-dispatcher.js +374 -0
  68. package/dist/src/worker-dispatcher.js.map +1 -0
  69. package/dist/src/worker.d.ts +18 -0
  70. package/dist/src/worker.js +139 -0
  71. package/dist/src/worker.js.map +1 -0
  72. package/package.json +53 -0
@@ -0,0 +1,124 @@
1
+ // Copyright (c) 2026 Super Durable, Inc.
2
+ //
3
+ // Licensed under the Super Durable Source License 1.0.
4
+ // You may not use this file except in compliance with the License.
5
+ // See the LICENSE file in the repository root.
6
+ //
7
+ // SPDX-License-Identifier: LicenseRef-Super-Durable-1.0
8
+ import { requireConditionId, requireName, validateChannelBounds, } from "./validation.js";
9
+ export const ConditionCombination = Object.freeze({
10
+ of(...conditions) {
11
+ return { conditions };
12
+ },
13
+ });
14
+ export const Timer = Object.freeze({
15
+ byDuration(durationMs, conditionId) {
16
+ if (durationMs < 0 || !Number.isFinite(durationMs)) {
17
+ throw new RangeError("timer duration must be non-negative");
18
+ }
19
+ requireConditionId(conditionId);
20
+ return {
21
+ kind: "timer",
22
+ durationMs,
23
+ ...(conditionId === undefined ? {} : { conditionId }),
24
+ };
25
+ },
26
+ });
27
+ export class Channel {
28
+ name;
29
+ codec;
30
+ constructor(name, codec) {
31
+ this.name = name;
32
+ this.codec = codec;
33
+ requireName(name);
34
+ }
35
+ publish(context, value) {
36
+ context.publish(this, value);
37
+ }
38
+ size(context) {
39
+ return context.channelSize(this);
40
+ }
41
+ results(context) {
42
+ return context.channelResults(this);
43
+ }
44
+ forOne(conditionId) {
45
+ return this.range(1, 1, conditionId);
46
+ }
47
+ forN(count, conditionId) {
48
+ return this.range(count, count, conditionId);
49
+ }
50
+ atLeast(count, conditionId) {
51
+ return this.range(count, undefined, conditionId);
52
+ }
53
+ atMost(count, conditionId) {
54
+ return this.range(undefined, count, conditionId);
55
+ }
56
+ range(atLeast, atMost, conditionId) {
57
+ validateChannelBounds(atLeast, atMost);
58
+ requireConditionId(conditionId);
59
+ return {
60
+ kind: "channel",
61
+ channelName: this.name,
62
+ ...(atLeast === undefined ? {} : { atLeast }),
63
+ ...(atMost === undefined ? {} : { atMost }),
64
+ ...(conditionId === undefined ? {} : { conditionId }),
65
+ };
66
+ }
67
+ }
68
+ export class ChannelMap {
69
+ name;
70
+ codec;
71
+ constructor(name, codec) {
72
+ this.name = name;
73
+ this.codec = codec;
74
+ requireName(name);
75
+ }
76
+ publish(context, instance, value) {
77
+ context.publish(this, value, instance);
78
+ }
79
+ size(context, instance) {
80
+ return context.channelSize(this, instance);
81
+ }
82
+ results(context, instance) {
83
+ return context.channelResults(this, instance);
84
+ }
85
+ forOne(instance, conditionId) {
86
+ return this.range(instance, 1, 1, conditionId);
87
+ }
88
+ forN(instance, count, conditionId) {
89
+ return this.range(instance, count, count, conditionId);
90
+ }
91
+ atLeast(instance, count, conditionId) {
92
+ return this.range(instance, count, undefined, conditionId);
93
+ }
94
+ atMost(instance, count, conditionId) {
95
+ return this.range(instance, undefined, count, conditionId);
96
+ }
97
+ range(instance, atLeast, atMost, conditionId) {
98
+ validateChannelBounds(atLeast, atMost);
99
+ requireConditionId(conditionId);
100
+ return {
101
+ kind: "channel",
102
+ channelName: this.name,
103
+ instance,
104
+ ...(atLeast === undefined ? {} : { atLeast }),
105
+ ...(atMost === undefined ? {} : { atMost }),
106
+ ...(conditionId === undefined ? {} : { conditionId }),
107
+ };
108
+ }
109
+ }
110
+ export const Wait = Object.freeze({
111
+ skipImmediately() {
112
+ return { kind: "skipImmediately", conditions: [], combinations: [] };
113
+ },
114
+ allOf(...conditions) {
115
+ return { kind: "allOf", conditions, combinations: [] };
116
+ },
117
+ anyOf(...conditions) {
118
+ return { kind: "anyOf", conditions, combinations: [] };
119
+ },
120
+ anyCombinationOf(...combinations) {
121
+ return { kind: "anyCombinationOf", conditions: [], combinations };
122
+ },
123
+ });
124
+ //# sourceMappingURL=wait.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait.js","sourceRoot":"","sources":["../../src/wait.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { InvokeExecuteMethodResponse, InvokeWaitForMethodResponse, InvokeWorkerRPCResponse, type InvokeExecuteMethodRequest, type InvokeWaitForMethodRequest, type InvokeWorkerRPCRequest } from "./gen/dex.js";
2
+ import { type Registry } from "./flow.js";
3
+ import { type ValueHydrator } from "./value-mapper.js";
4
+ export declare class WorkerDispatcher {
5
+ private readonly registry;
6
+ private readonly hydrator;
7
+ constructor(registry: Registry, hydrator: ValueHydrator);
8
+ invokeWaitFor(original: InvokeWaitForMethodRequest): Promise<InvokeWaitForMethodResponse>;
9
+ invokeExecute(original: InvokeExecuteMethodRequest): Promise<InvokeExecuteMethodResponse>;
10
+ invokeRPC(original: InvokeWorkerRPCRequest): Promise<InvokeWorkerRPCResponse>;
11
+ private hydrateWaitFor;
12
+ private hydrateExecute;
13
+ private hydrateRPC;
14
+ }
@@ -0,0 +1,374 @@
1
+ // Copyright (c) 2026 Super Durable, Inc.
2
+ //
3
+ // Licensed under the Super Durable Source License 1.0.
4
+ // You may not use this file except in compliance with the License.
5
+ // See the LICENSE file in the repository root.
6
+ //
7
+ // SPDX-License-Identifier: LicenseRef-Super-Durable-1.0
8
+ import { ChannelCondition, CloseDecision, CloseDecisionType, ConditionCombination as ProtoConditionCombination, ExecuteMethodFailurePolicy, InvokeExecuteMethodResponse, InvokeWaitForMethodResponse, InvokeWorkerRPCResponse, StepDecision as ProtoStepDecision, StepMovement as ProtoStepMovement, StepOptions as ProtoStepOptions, TimerCondition, WaitForMethodFailurePolicy, WaitingCondition, WaitingConditionType, } from "./gen/dex.js";
9
+ import { registeredFlowByName, registeredRPCByName, registeredStep, } from "./flow.js";
10
+ import { InvocationContext } from "./invocation-context.js";
11
+ import { decodeValue, encodeUnknown, encodeValue, } from "./value-mapper.js";
12
+ import { Channel, ChannelMap } from "./wait.js";
13
+ const internalConditionPrefix = "__dex_internal_condition_";
14
+ export class WorkerDispatcher {
15
+ registry;
16
+ hydrator;
17
+ constructor(registry, hydrator) {
18
+ this.registry = registry;
19
+ this.hydrator = hydrator;
20
+ }
21
+ async invokeWaitFor(original) {
22
+ const request = await this.hydrateWaitFor(original);
23
+ const flow = registeredFlowByName(this.registry, request.flowType);
24
+ const step = registeredStep(flow, request.stepType);
25
+ const context = new InvocationContext("waitFor", flow, request.context, request.attributes);
26
+ const input = decodeValue(step.step.inputCodec, requireValue(request.stepInput, "Step input"));
27
+ if (step.step.waitFor === undefined) {
28
+ throw new TypeError(`Step ${step.name} does not implement waitFor`);
29
+ }
30
+ const wait = step.step.waitFor(context, input);
31
+ return InvokeWaitForMethodResponse.create({
32
+ upsertAttributes: [...context.getAttributeWrites()],
33
+ waitingCondition: mapWait(flow, wait),
34
+ upsertStepExeLocals: [...context.getLocalWrites()],
35
+ recordEvents: [...context.getEvents()],
36
+ publishToChannel: [...context.getPublications()],
37
+ });
38
+ }
39
+ async invokeExecute(original) {
40
+ const request = await this.hydrateExecute(original);
41
+ const flow = registeredFlowByName(this.registry, request.flowType);
42
+ const step = registeredStep(flow, request.stepType);
43
+ const context = new InvocationContext("execute", flow, request.context, request.attributes, request.stepExeLocals, request.conditionResults);
44
+ const input = decodeValue(step.step.inputCodec, requireValue(request.stepInput, "Step input"));
45
+ const decision = step.step.execute(context, input);
46
+ return InvokeExecuteMethodResponse.create({
47
+ stepDecision: mapDecision(flow, decision),
48
+ upsertAttributes: [...context.getAttributeWrites()],
49
+ recordEvents: [...context.getEvents()],
50
+ upsertStepExeLocals: [...context.getLocalWrites()],
51
+ publishToChannel: [...context.getPublications()],
52
+ });
53
+ }
54
+ async invokeRPC(original) {
55
+ const request = await this.hydrateRPC(original);
56
+ const flow = registeredFlowByName(this.registry, request.flowType);
57
+ const rpc = registeredRPCByName(flow, request.rpcName);
58
+ const context = new InvocationContext("rpc", flow, request.context, request.attributes, [], undefined, request.channelInfos);
59
+ const returned = invokeRPC(flow, rpc, context, request.input);
60
+ const result = rpcResult(rpc, returned);
61
+ return InvokeWorkerRPCResponse.create({
62
+ output: rpc.options.outputCodec === undefined
63
+ ? encodeUnknown(undefined)
64
+ : encodeValue(rpc.options.outputCodec, result?.output),
65
+ stepDecision: result?.nextSteps === undefined || result.nextSteps.length === 0
66
+ ? undefined
67
+ : ProtoStepDecision.create({ nextSteps: mapMovements(flow, result.nextSteps) }),
68
+ upsertAttributes: [...context.getAttributeWrites()],
69
+ recordEvents: [...context.getEvents()],
70
+ publishToChannel: [...context.getPublications()],
71
+ });
72
+ }
73
+ async hydrateWaitFor(request) {
74
+ const values = await this.hydrator.hydrateAll([
75
+ request.stepInput,
76
+ ...request.attributes.map((entry) => entry.value),
77
+ ]);
78
+ return {
79
+ ...request,
80
+ stepInput: values[0],
81
+ attributes: replaceEntryValues(request.attributes, values.slice(1)),
82
+ };
83
+ }
84
+ async hydrateExecute(request) {
85
+ const channelValues = request.conditionResults?.channelResults.flatMap((result) => result.values) ?? [];
86
+ const values = await this.hydrator.hydrateAll([
87
+ request.stepInput,
88
+ ...request.attributes.map((entry) => entry.value),
89
+ ...request.stepExeLocals.map((entry) => entry.value),
90
+ ...channelValues,
91
+ ]);
92
+ let offset = 1;
93
+ const attributes = replaceEntryValues(request.attributes, values.slice(offset, (offset += request.attributes.length)));
94
+ const stepExeLocals = replaceEntryValues(request.stepExeLocals, values.slice(offset, (offset += request.stepExeLocals.length)));
95
+ const conditionResults = replaceConditionValues(request.conditionResults, values.slice(offset));
96
+ return { ...request, attributes, stepExeLocals, conditionResults };
97
+ }
98
+ async hydrateRPC(request) {
99
+ const hasInput = request.input !== undefined;
100
+ const values = await this.hydrator.hydrateAll([
101
+ ...(hasInput ? [request.input] : []),
102
+ ...request.attributes.map((entry) => entry.value),
103
+ ]);
104
+ return {
105
+ ...request,
106
+ input: hasInput ? values[0] : undefined,
107
+ attributes: replaceEntryValues(request.attributes, values.slice(hasInput ? 1 : 0)),
108
+ };
109
+ }
110
+ }
111
+ function invokeRPC(flow, rpc, context, input) {
112
+ if (rpc.options.inputCodec === undefined) {
113
+ return rpc.method.call(flow.flow, context);
114
+ }
115
+ return rpc.method.call(flow.flow, context, decodeValue(rpc.options.inputCodec, requireValue(input, "RPC input")));
116
+ }
117
+ function rpcResult(rpc, returned) {
118
+ if (rpc.options.outputCodec === undefined) {
119
+ if (returned !== undefined) {
120
+ throw new TypeError(`procedure RPC ${rpc.name} must not return a value`);
121
+ }
122
+ return undefined;
123
+ }
124
+ if (typeof returned !== "object" || returned === null || !("output" in returned)) {
125
+ throw new TypeError(`function RPC ${rpc.name} must return RPCResult`);
126
+ }
127
+ return returned;
128
+ }
129
+ function mapWait(flow, wait) {
130
+ if (wait === undefined) {
131
+ throw new TypeError("waitFor returned undefined");
132
+ }
133
+ if (wait.kind === "skipImmediately") {
134
+ return undefined;
135
+ }
136
+ const mapper = new ConditionMapper(flow);
137
+ let waitingConditionType;
138
+ const combinations = [];
139
+ if (wait.kind === "allOf" || wait.kind === "anyOf") {
140
+ if (wait.conditions.length === 0) {
141
+ throw new TypeError("Wait requires at least one Condition");
142
+ }
143
+ waitingConditionType =
144
+ wait.kind === "allOf"
145
+ ? WaitingConditionType.WAITING_CONDITION_TYPE_ALL_COMPLETED
146
+ : WaitingConditionType.WAITING_CONDITION_TYPE_ANY_COMPLETED;
147
+ for (const condition of wait.conditions) {
148
+ mapper.add(condition);
149
+ }
150
+ }
151
+ else {
152
+ waitingConditionType =
153
+ WaitingConditionType.WAITING_CONDITION_TYPE_ANY_COMBINATION_COMPLETED;
154
+ for (const combination of wait.combinations) {
155
+ combinations.push(ProtoConditionCombination.create({
156
+ conditionIds: combination.conditions.map((condition) => mapper.add(condition)),
157
+ }));
158
+ }
159
+ }
160
+ return WaitingCondition.create({
161
+ waitingConditionType,
162
+ timerConditions: mapper.timers,
163
+ channelConditions: mapper.channels,
164
+ conditionCombinations: combinations,
165
+ });
166
+ }
167
+ function mapDecision(flow, decision) {
168
+ if (decision === undefined) {
169
+ throw new TypeError("execute returned undefined");
170
+ }
171
+ if (decision.kind === "next") {
172
+ if (decision.movements.length === 0) {
173
+ throw new TypeError("goToMulti requires a movement");
174
+ }
175
+ return ProtoStepDecision.create({ nextSteps: mapMovements(flow, decision.movements) });
176
+ }
177
+ if (decision.kind === "deadEnd") {
178
+ return ProtoStepDecision.create({
179
+ closeDecision: CloseDecision.create({
180
+ closeDecisionType: CloseDecisionType.CLOSE_DECISION_TYPE_DEAD_END,
181
+ }),
182
+ });
183
+ }
184
+ if (decision.kind === "forceCompleteIfChannelsEmpty") {
185
+ const channels = decision.channels.map((channel) => {
186
+ if (!(channel instanceof Channel) || channel instanceof ChannelMap) {
187
+ throw new TypeError("conditional close requires static Channels");
188
+ }
189
+ return channel.name;
190
+ });
191
+ return ProtoStepDecision.create({
192
+ nextSteps: [mapMovement(flow, decision.fallback)],
193
+ closeDecision: CloseDecision.create({
194
+ closeDecisionType: CloseDecisionType.CLOSE_DECISION_TYPE_FORCE_COMPLETE_ON_CHANNELS_EMPTY,
195
+ conditionalChannelNames: channels,
196
+ closeInput: encodeUnknown(decision.output),
197
+ }),
198
+ });
199
+ }
200
+ const closeTypes = {
201
+ gracefulComplete: CloseDecisionType.CLOSE_DECISION_TYPE_GRACEFUL_COMPLETE,
202
+ forceComplete: CloseDecisionType.CLOSE_DECISION_TYPE_FORCE_COMPLETE,
203
+ forceFail: CloseDecisionType.CLOSE_DECISION_TYPE_FORCE_FAIL,
204
+ };
205
+ return ProtoStepDecision.create({
206
+ closeDecision: CloseDecision.create({
207
+ closeDecisionType: closeTypes[decision.kind],
208
+ closeInput: encodeUnknown(decision.kind === "forceFail" ? decision.reason : decision.output),
209
+ }),
210
+ });
211
+ }
212
+ function mapMovements(flow, movements) {
213
+ return movements.map((movement) => mapMovement(flow, movement));
214
+ }
215
+ function mapMovement(flow, movement) {
216
+ const target = flow.steps.find((candidate) => candidate.step === movement.step);
217
+ if (target === undefined) {
218
+ throw new TypeError("Step movement target does not belong to Flow");
219
+ }
220
+ return ProtoStepMovement.create({
221
+ stepType: target.name,
222
+ stepInput: encodeValue(target.step.inputCodec, movement.input),
223
+ stepOptions: mapStepOptions(flow, movement.options ?? target.step.getStepOptions?.(), target.step.waitFor === undefined),
224
+ });
225
+ }
226
+ function mapStepOptions(flow, options, skipWaitFor) {
227
+ const failureTarget = options?.executeFailure?.step;
228
+ const failureDefinition = failureTarget === undefined
229
+ ? undefined
230
+ : flow.steps.find((candidate) => candidate.step === failureTarget);
231
+ if (failureTarget !== undefined && failureDefinition === undefined) {
232
+ throw new TypeError("execute failure Step must belong to the Flow");
233
+ }
234
+ const failureOptions = options?.executeFailure?.options ?? failureDefinition?.step.getStepOptions?.();
235
+ return ProtoStepOptions.create({
236
+ waitForTimeoutSeconds: seconds(options?.waitForMethodTimeoutMs),
237
+ executeTimeoutSeconds: seconds(options?.executeMethodTimeoutMs),
238
+ waitForRetryPolicy: mapRetry(options?.waitForRetry),
239
+ executeRetryPolicy: mapRetry(options?.executeRetry),
240
+ waitForFailurePolicy: options?.waitForFailure === "proceed"
241
+ ? WaitForMethodFailurePolicy.WAIT_FOR_METHOD_FAILURE_POLICY_PROCEED_ON_FAILURE
242
+ : options?.waitForFailure === "failFlow"
243
+ ? WaitForMethodFailurePolicy.WAIT_FOR_METHOD_FAILURE_POLICY_FAIL_FLOW_ON_FAILURE
244
+ : WaitForMethodFailurePolicy.WAIT_FOR_METHOD_FAILURE_POLICY_UNSPECIFIED,
245
+ executeFailurePolicy: failureDefinition === undefined
246
+ ? ExecuteMethodFailurePolicy.EXECUTE_METHOD_FAILURE_POLICY_UNSPECIFIED
247
+ : ExecuteMethodFailurePolicy.EXECUTE_METHOD_FAILURE_POLICY_PROCEED_TO_CONFIGURED_STEP,
248
+ executeFailureProceedStepType: failureDefinition?.name ?? "",
249
+ executeFailureProceedStepOptions: failureDefinition === undefined
250
+ ? undefined
251
+ : mapStepOptions(flow, failureOptions, failureDefinition.step.waitFor === undefined),
252
+ skipWaitFor,
253
+ waitForDurabilityOverride: options?.waitForDurability === "sync"
254
+ ? 1
255
+ : options?.waitForDurability === "async"
256
+ ? 2
257
+ : 0,
258
+ executeDurabilityOverride: options?.executeDurability === "sync"
259
+ ? 1
260
+ : options?.executeDurability === "async"
261
+ ? 2
262
+ : 0,
263
+ waitForLockAttributeKeys: (options?.waitForLockAttributes ?? []).map((lock) => lock.instance === undefined
264
+ ? lock.attribute.name
265
+ : physicalName(lock.attribute.name, lock.instance)),
266
+ executeLockAttributeKeys: (options?.executeLockAttributes ?? []).map((lock) => lock.instance === undefined
267
+ ? lock.attribute.name
268
+ : physicalName(lock.attribute.name, lock.instance)),
269
+ });
270
+ }
271
+ function mapRetry(retry) {
272
+ if (retry === undefined) {
273
+ return undefined;
274
+ }
275
+ return {
276
+ initialIntervalSeconds: seconds(retry.initialIntervalMs),
277
+ backoffCoefficient: retry.backoffCoefficient ?? 0,
278
+ maximumIntervalSeconds: seconds(retry.maximumIntervalMs),
279
+ maximumAttempts: retry.maximumAttempts ?? 0,
280
+ totalDurationSeconds: seconds(retry.totalDurationMs),
281
+ };
282
+ }
283
+ class ConditionMapper {
284
+ flow;
285
+ timers = [];
286
+ channels = [];
287
+ ids = new Map();
288
+ used = new Set();
289
+ nextId = 0;
290
+ constructor(flow) {
291
+ this.flow = flow;
292
+ }
293
+ add(condition) {
294
+ const existing = this.ids.get(condition);
295
+ if (existing !== undefined) {
296
+ return existing;
297
+ }
298
+ const id = condition.conditionId ?? `${internalConditionPrefix}${this.nextId++}`;
299
+ if (id === "" || this.used.has(id)) {
300
+ throw new TypeError("duplicate or empty Condition ID");
301
+ }
302
+ this.used.add(id);
303
+ if (condition.kind === "timer") {
304
+ this.timers.push(TimerCondition.create({
305
+ conditionId: id,
306
+ durationSeconds: BigInt(seconds(condition.durationMs)),
307
+ }));
308
+ }
309
+ else {
310
+ const registered = this.flow.persistence.get(condition.channelName ?? "");
311
+ if (!(registered instanceof Channel) && !(registered instanceof ChannelMap)) {
312
+ throw new TypeError(`Channel is not registered: ${condition.channelName ?? ""}`);
313
+ }
314
+ const channelName = registered instanceof ChannelMap
315
+ ? physicalName(registered.name, condition.instance)
316
+ : registered.name;
317
+ this.channels.push(ChannelCondition.create({
318
+ conditionId: id,
319
+ channelName,
320
+ atLeast: condition.atLeast,
321
+ atMost: condition.atMost,
322
+ }));
323
+ }
324
+ this.ids.set(condition, id);
325
+ return id;
326
+ }
327
+ }
328
+ function replaceEntryValues(entries, values) {
329
+ if (entries.length !== values.length) {
330
+ throw new TypeError("hydrated entry count does not match request");
331
+ }
332
+ return entries.map((entry, index) => ({ ...entry, value: values[index] }));
333
+ }
334
+ function replaceConditionValues(results, values) {
335
+ if (results === undefined) {
336
+ if (values.length !== 0) {
337
+ throw new TypeError("unexpected hydrated Condition values");
338
+ }
339
+ return undefined;
340
+ }
341
+ let offset = 0;
342
+ const channelResults = results.channelResults.map((result) => {
343
+ const next = offset + result.values.length;
344
+ const replaced = { ...result, values: values.slice(offset, next) };
345
+ offset = next;
346
+ return replaced;
347
+ });
348
+ if (offset !== values.length) {
349
+ throw new TypeError("hydrated Condition value count does not match request");
350
+ }
351
+ return { ...results, channelResults };
352
+ }
353
+ function requireValue(value, kind) {
354
+ if (value?.kind === undefined) {
355
+ throw new TypeError(`${kind} is required`);
356
+ }
357
+ return value;
358
+ }
359
+ function physicalName(name, instance) {
360
+ if (instance === undefined || instance === "") {
361
+ throw new TypeError(`map definition ${name} requires an instance`);
362
+ }
363
+ return `${name}/${encodeURIComponent(instance).replace(/[!'()*]/g, (character) => `%${character.charCodeAt(0).toString(16).toUpperCase()}`)}`;
364
+ }
365
+ function seconds(milliseconds) {
366
+ if (milliseconds === undefined) {
367
+ return 0;
368
+ }
369
+ if (!Number.isSafeInteger(milliseconds) || milliseconds < 0 || milliseconds % 1_000 !== 0) {
370
+ throw new RangeError("duration must be a non-negative whole number of seconds");
371
+ }
372
+ return milliseconds / 1_000;
373
+ }
374
+ //# sourceMappingURL=worker-dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-dispatcher.js","sourceRoot":"","sources":["../../src/worker-dispatcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { BlobCache } from "./blob-cache.js";
2
+ import type { Registry } from "./flow.js";
3
+ import type { WorkerOptions, WorkerTarget } from "./options.js";
4
+ export declare class Worker {
5
+ readonly registry: Registry;
6
+ readonly blobCache: BlobCache;
7
+ readonly options: WorkerOptions;
8
+ readonly workerTarget: WorkerTarget;
9
+ private readonly server;
10
+ private readonly flowService;
11
+ private readonly stopped;
12
+ private resolveStopped;
13
+ private state;
14
+ constructor(registry: Registry, blobCache: BlobCache, options?: WorkerOptions);
15
+ start(): Promise<void>;
16
+ run(): Promise<void>;
17
+ close(): Promise<void>;
18
+ }