@rivetkit/workflow-engine 2.3.20 → 2.3.22
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/tsup/{chunk-EGOPMLG2.js → chunk-AAAPEYGX.js} +4 -2
- package/dist/tsup/chunk-AAAPEYGX.js.map +1 -0
- package/dist/tsup/{chunk-AKCJVGJ7.cjs → chunk-XRITRTKT.cjs} +4 -2
- package/dist/tsup/chunk-XRITRTKT.cjs.map +1 -0
- package/dist/tsup/index.cjs +2 -2
- package/dist/tsup/index.cjs.map +1 -1
- package/dist/tsup/index.js +1 -1
- package/dist/tsup/testing.cjs +25 -25
- package/dist/tsup/testing.cjs.map +1 -1
- package/dist/tsup/testing.js +1 -1
- package/package.json +2 -2
- package/src/storage.ts +3 -1
- package/dist/tsup/chunk-AKCJVGJ7.cjs.map +0 -1
- package/dist/tsup/chunk-EGOPMLG2.js.map +0 -1
package/dist/tsup/index.cjs
CHANGED
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
|
|
44
44
|
|
|
45
45
|
|
|
46
|
-
var
|
|
46
|
+
var _chunkXRITRTKTcjs = require('./chunk-XRITRTKT.cjs');
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
|
|
@@ -89,5 +89,5 @@ var _chunkAKCJVGJ7cjs = require('./chunk-AKCJVGJ7.cjs');
|
|
|
89
89
|
|
|
90
90
|
|
|
91
91
|
|
|
92
|
-
exports.CancelledError =
|
|
92
|
+
exports.CancelledError = _chunkXRITRTKTcjs.CancelledError; exports.CriticalError = _chunkXRITRTKTcjs.CriticalError; exports.DEFAULT_LOOP_HISTORY_PRUNE_INTERVAL = _chunkXRITRTKTcjs.DEFAULT_LOOP_HISTORY_PRUNE_INTERVAL; exports.DEFAULT_MAX_RETRIES = _chunkXRITRTKTcjs.DEFAULT_MAX_RETRIES; exports.DEFAULT_RETRY_BACKOFF_BASE = _chunkXRITRTKTcjs.DEFAULT_RETRY_BACKOFF_BASE; exports.DEFAULT_RETRY_BACKOFF_MAX = _chunkXRITRTKTcjs.DEFAULT_RETRY_BACKOFF_MAX; exports.DEFAULT_STEP_TIMEOUT = _chunkXRITRTKTcjs.DEFAULT_STEP_TIMEOUT; exports.EntryInProgressError = _chunkXRITRTKTcjs.EntryInProgressError; exports.EvictedError = _chunkXRITRTKTcjs.EvictedError; exports.HistoryDivergedError = _chunkXRITRTKTcjs.HistoryDivergedError; exports.JoinError = _chunkXRITRTKTcjs.JoinError; exports.Loop = _chunkXRITRTKTcjs.Loop; exports.MessageWaitError = _chunkXRITRTKTcjs.MessageWaitError; exports.RaceError = _chunkXRITRTKTcjs.RaceError; exports.RollbackCheckpointError = _chunkXRITRTKTcjs.RollbackCheckpointError; exports.RollbackError = _chunkXRITRTKTcjs.RollbackError; exports.SleepError = _chunkXRITRTKTcjs.SleepError; exports.StepExhaustedError = _chunkXRITRTKTcjs.StepExhaustedError; exports.StepFailedError = _chunkXRITRTKTcjs.StepFailedError; exports.WorkflowContextImpl = _chunkXRITRTKTcjs.WorkflowContextImpl; exports.appendLoopIteration = _chunkXRITRTKTcjs.appendLoopIteration; exports.appendName = _chunkXRITRTKTcjs.appendName; exports.createEntry = _chunkXRITRTKTcjs.createEntry; exports.createHistorySnapshot = _chunkXRITRTKTcjs.createHistorySnapshot; exports.createStorage = _chunkXRITRTKTcjs.createStorage; exports.deleteEntriesWithPrefix = _chunkXRITRTKTcjs.deleteEntriesWithPrefix; exports.emptyLocation = _chunkXRITRTKTcjs.emptyLocation; exports.extractErrorInfo = _chunkXRITRTKTcjs.extractErrorInfo; exports.flush = _chunkXRITRTKTcjs.flush; exports.generateId = _chunkXRITRTKTcjs.generateId; exports.getEntry = _chunkXRITRTKTcjs.getEntry; exports.getOrCreateMetadata = _chunkXRITRTKTcjs.getOrCreateMetadata; exports.isLocationPrefix = _chunkXRITRTKTcjs.isLocationPrefix; exports.isLoopIterationMarker = _chunkXRITRTKTcjs.isLoopIterationMarker; exports.loadMetadata = _chunkXRITRTKTcjs.loadMetadata; exports.loadStorage = _chunkXRITRTKTcjs.loadStorage; exports.locationToKey = _chunkXRITRTKTcjs.locationToKey; exports.locationsEqual = _chunkXRITRTKTcjs.locationsEqual; exports.parentLocation = _chunkXRITRTKTcjs.parentLocation; exports.registerName = _chunkXRITRTKTcjs.registerName; exports.replayWorkflowFromStep = _chunkXRITRTKTcjs.replayWorkflowFromStep; exports.resolveName = _chunkXRITRTKTcjs.resolveName; exports.runWorkflow = _chunkXRITRTKTcjs.runWorkflow; exports.setEntry = _chunkXRITRTKTcjs.setEntry;
|
|
93
93
|
//# sourceMappingURL=index.cjs.map
|
package/dist/tsup/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/workflow-engine/dist/tsup/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,qpFAAC","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/workflow-engine/dist/tsup/index.cjs"}
|
package/dist/tsup/index.js
CHANGED
package/dist/tsup/testing.cjs
CHANGED
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
|
|
50
|
-
var
|
|
50
|
+
var _chunkXRITRTKTcjs = require('./chunk-XRITRTKT.cjs');
|
|
51
51
|
|
|
52
52
|
// src/testing.ts
|
|
53
53
|
var InMemoryWorkflowMessageDriver = class {
|
|
@@ -97,7 +97,7 @@ var InMemoryWorkflowMessageDriver = class {
|
|
|
97
97
|
}
|
|
98
98
|
async waitForMessages(messageNames, abortSignal) {
|
|
99
99
|
if (abortSignal.aborted) {
|
|
100
|
-
throw new (0,
|
|
100
|
+
throw new (0, _chunkXRITRTKTcjs.EvictedError)();
|
|
101
101
|
}
|
|
102
102
|
const nameSet = messageNames.length > 0 ? new Set(messageNames) : void 0;
|
|
103
103
|
if (this.#messages.some(
|
|
@@ -118,7 +118,7 @@ var InMemoryWorkflowMessageDriver = class {
|
|
|
118
118
|
},
|
|
119
119
|
abortSignal,
|
|
120
120
|
onAbort: () => {
|
|
121
|
-
waiter.reject(new (0,
|
|
121
|
+
waiter.reject(new (0, _chunkXRITRTKTcjs.EvictedError)());
|
|
122
122
|
}
|
|
123
123
|
};
|
|
124
124
|
abortSignal.addEventListener("abort", waiter.onAbort, {
|
|
@@ -158,62 +158,62 @@ var InMemoryDriver = (_class = class {constructor() { _class.prototype.__init.ca
|
|
|
158
158
|
__init4() {this.workerPollInterval = 100}
|
|
159
159
|
__init5() {this.messageDriver = this.#inMemoryMessageDriver}
|
|
160
160
|
async get(key) {
|
|
161
|
-
await
|
|
162
|
-
const entry = this.kv.get(
|
|
161
|
+
await _chunkXRITRTKTcjs.sleep.call(void 0, this.latency);
|
|
162
|
+
const entry = this.kv.get(_chunkXRITRTKTcjs.keyToHex.call(void 0, key));
|
|
163
163
|
return _nullishCoalesce((entry == null ? void 0 : entry.value), () => ( null));
|
|
164
164
|
}
|
|
165
165
|
async set(key, value) {
|
|
166
|
-
await
|
|
167
|
-
this.kv.set(
|
|
166
|
+
await _chunkXRITRTKTcjs.sleep.call(void 0, this.latency);
|
|
167
|
+
this.kv.set(_chunkXRITRTKTcjs.keyToHex.call(void 0, key), { key, value });
|
|
168
168
|
}
|
|
169
169
|
async delete(key) {
|
|
170
|
-
await
|
|
171
|
-
this.kv.delete(
|
|
170
|
+
await _chunkXRITRTKTcjs.sleep.call(void 0, this.latency);
|
|
171
|
+
this.kv.delete(_chunkXRITRTKTcjs.keyToHex.call(void 0, key));
|
|
172
172
|
}
|
|
173
173
|
async batchDelete(keys) {
|
|
174
|
-
await
|
|
174
|
+
await _chunkXRITRTKTcjs.sleep.call(void 0, this.latency);
|
|
175
175
|
for (const key of keys) {
|
|
176
|
-
this.kv.delete(
|
|
176
|
+
this.kv.delete(_chunkXRITRTKTcjs.keyToHex.call(void 0, key));
|
|
177
177
|
}
|
|
178
178
|
}
|
|
179
179
|
async deletePrefix(prefix) {
|
|
180
|
-
await
|
|
180
|
+
await _chunkXRITRTKTcjs.sleep.call(void 0, this.latency);
|
|
181
181
|
for (const [hexKey, entry] of this.kv) {
|
|
182
|
-
if (
|
|
182
|
+
if (_chunkXRITRTKTcjs.keyStartsWith.call(void 0, entry.key, prefix)) {
|
|
183
183
|
this.kv.delete(hexKey);
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
186
|
}
|
|
187
187
|
async deleteRange(start, end) {
|
|
188
|
-
await
|
|
188
|
+
await _chunkXRITRTKTcjs.sleep.call(void 0, this.latency);
|
|
189
189
|
for (const [hexKey, entry] of this.kv) {
|
|
190
|
-
if (
|
|
190
|
+
if (_chunkXRITRTKTcjs.compareKeys.call(void 0, entry.key, start) >= 0 && _chunkXRITRTKTcjs.compareKeys.call(void 0, entry.key, end) < 0) {
|
|
191
191
|
this.kv.delete(hexKey);
|
|
192
192
|
}
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
195
|
async list(prefix) {
|
|
196
|
-
await
|
|
196
|
+
await _chunkXRITRTKTcjs.sleep.call(void 0, this.latency);
|
|
197
197
|
const results = [];
|
|
198
198
|
for (const entry of this.kv.values()) {
|
|
199
|
-
if (
|
|
199
|
+
if (_chunkXRITRTKTcjs.keyStartsWith.call(void 0, entry.key, prefix)) {
|
|
200
200
|
results.push({ key: entry.key, value: entry.value });
|
|
201
201
|
}
|
|
202
202
|
}
|
|
203
|
-
return results.sort((a, b) =>
|
|
203
|
+
return results.sort((a, b) => _chunkXRITRTKTcjs.compareKeys.call(void 0, a.key, b.key));
|
|
204
204
|
}
|
|
205
205
|
async batch(writes) {
|
|
206
|
-
await
|
|
206
|
+
await _chunkXRITRTKTcjs.sleep.call(void 0, this.latency);
|
|
207
207
|
for (const { key, value } of writes) {
|
|
208
|
-
this.kv.set(
|
|
208
|
+
this.kv.set(_chunkXRITRTKTcjs.keyToHex.call(void 0, key), { key, value });
|
|
209
209
|
}
|
|
210
210
|
}
|
|
211
211
|
async setAlarm(workflowId, wakeAt) {
|
|
212
|
-
await
|
|
212
|
+
await _chunkXRITRTKTcjs.sleep.call(void 0, this.latency);
|
|
213
213
|
this.alarms.set(workflowId, wakeAt);
|
|
214
214
|
}
|
|
215
215
|
async clearAlarm(workflowId) {
|
|
216
|
-
await
|
|
216
|
+
await _chunkXRITRTKTcjs.sleep.call(void 0, this.latency);
|
|
217
217
|
this.alarms.delete(workflowId);
|
|
218
218
|
}
|
|
219
219
|
async waitForMessages(messageNames, abortSignal) {
|
|
@@ -224,7 +224,7 @@ var InMemoryDriver = (_class = class {constructor() { _class.prototype.__init.ca
|
|
|
224
224
|
}
|
|
225
225
|
while (true) {
|
|
226
226
|
if (abortSignal.aborted) {
|
|
227
|
-
throw new (0,
|
|
227
|
+
throw new (0, _chunkXRITRTKTcjs.EvictedError)();
|
|
228
228
|
}
|
|
229
229
|
const messages = await this.messageDriver.receiveMessages({
|
|
230
230
|
names: messageNames.length > 0 ? messageNames : void 0,
|
|
@@ -234,7 +234,7 @@ var InMemoryDriver = (_class = class {constructor() { _class.prototype.__init.ca
|
|
|
234
234
|
if (messages.length > 0) {
|
|
235
235
|
return;
|
|
236
236
|
}
|
|
237
|
-
await
|
|
237
|
+
await _chunkXRITRTKTcjs.sleep.call(void 0, Math.max(1, this.latency));
|
|
238
238
|
}
|
|
239
239
|
}
|
|
240
240
|
/**
|
|
@@ -330,5 +330,5 @@ var InMemoryDriver = (_class = class {constructor() { _class.prototype.__init.ca
|
|
|
330
330
|
|
|
331
331
|
|
|
332
332
|
|
|
333
|
-
exports.CancelledError =
|
|
333
|
+
exports.CancelledError = _chunkXRITRTKTcjs.CancelledError; exports.CriticalError = _chunkXRITRTKTcjs.CriticalError; exports.DEFAULT_LOOP_HISTORY_PRUNE_INTERVAL = _chunkXRITRTKTcjs.DEFAULT_LOOP_HISTORY_PRUNE_INTERVAL; exports.DEFAULT_MAX_RETRIES = _chunkXRITRTKTcjs.DEFAULT_MAX_RETRIES; exports.DEFAULT_RETRY_BACKOFF_BASE = _chunkXRITRTKTcjs.DEFAULT_RETRY_BACKOFF_BASE; exports.DEFAULT_RETRY_BACKOFF_MAX = _chunkXRITRTKTcjs.DEFAULT_RETRY_BACKOFF_MAX; exports.DEFAULT_STEP_TIMEOUT = _chunkXRITRTKTcjs.DEFAULT_STEP_TIMEOUT; exports.EntryInProgressError = _chunkXRITRTKTcjs.EntryInProgressError; exports.EvictedError = _chunkXRITRTKTcjs.EvictedError; exports.HistoryDivergedError = _chunkXRITRTKTcjs.HistoryDivergedError; exports.InMemoryDriver = InMemoryDriver; exports.JoinError = _chunkXRITRTKTcjs.JoinError; exports.Loop = _chunkXRITRTKTcjs.Loop; exports.MessageWaitError = _chunkXRITRTKTcjs.MessageWaitError; exports.RaceError = _chunkXRITRTKTcjs.RaceError; exports.RollbackCheckpointError = _chunkXRITRTKTcjs.RollbackCheckpointError; exports.RollbackError = _chunkXRITRTKTcjs.RollbackError; exports.SleepError = _chunkXRITRTKTcjs.SleepError; exports.StepExhaustedError = _chunkXRITRTKTcjs.StepExhaustedError; exports.StepFailedError = _chunkXRITRTKTcjs.StepFailedError; exports.WorkflowContextImpl = _chunkXRITRTKTcjs.WorkflowContextImpl; exports.appendLoopIteration = _chunkXRITRTKTcjs.appendLoopIteration; exports.appendName = _chunkXRITRTKTcjs.appendName; exports.createEntry = _chunkXRITRTKTcjs.createEntry; exports.createHistorySnapshot = _chunkXRITRTKTcjs.createHistorySnapshot; exports.createStorage = _chunkXRITRTKTcjs.createStorage; exports.deleteEntriesWithPrefix = _chunkXRITRTKTcjs.deleteEntriesWithPrefix; exports.emptyLocation = _chunkXRITRTKTcjs.emptyLocation; exports.extractErrorInfo = _chunkXRITRTKTcjs.extractErrorInfo; exports.flush = _chunkXRITRTKTcjs.flush; exports.generateId = _chunkXRITRTKTcjs.generateId; exports.getEntry = _chunkXRITRTKTcjs.getEntry; exports.getOrCreateMetadata = _chunkXRITRTKTcjs.getOrCreateMetadata; exports.isLocationPrefix = _chunkXRITRTKTcjs.isLocationPrefix; exports.isLoopIterationMarker = _chunkXRITRTKTcjs.isLoopIterationMarker; exports.loadMetadata = _chunkXRITRTKTcjs.loadMetadata; exports.loadStorage = _chunkXRITRTKTcjs.loadStorage; exports.locationToKey = _chunkXRITRTKTcjs.locationToKey; exports.locationsEqual = _chunkXRITRTKTcjs.locationsEqual; exports.parentLocation = _chunkXRITRTKTcjs.parentLocation; exports.registerName = _chunkXRITRTKTcjs.registerName; exports.replayWorkflowFromStep = _chunkXRITRTKTcjs.replayWorkflowFromStep; exports.resolveName = _chunkXRITRTKTcjs.resolveName; exports.runWorkflow = _chunkXRITRTKTcjs.runWorkflow; exports.setEntry = _chunkXRITRTKTcjs.setEntry;
|
|
334
334
|
//# sourceMappingURL=testing.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/actors/actors/rivetkit-typescript/packages/workflow-engine/dist/tsup/testing.cjs","../../src/testing.ts"],"names":[],"mappings":"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","file":"/home/runner/work/actors/actors/rivetkit-typescript/packages/workflow-engine/dist/tsup/testing.cjs","sourcesContent":[null,"import type { EngineDriver, KVEntry, KVWrite } from \"./driver.js\";\nimport { EvictedError } from \"./errors.js\";\nimport { compareKeys, keyStartsWith, keyToHex } from \"./keys.js\";\nimport type { Message, WorkflowMessageDriver } from \"./types.js\";\nimport { sleep } from \"./utils.js\";\n\ninterface Waiter {\n\tnameSet?: Set<string>;\n\tresolve: () => void;\n\treject: (error: Error) => void;\n\tabortSignal: AbortSignal;\n\tonAbort: () => void;\n}\n\nclass InMemoryWorkflowMessageDriver implements WorkflowMessageDriver {\n\t#messages: Message[] = [];\n\t#waiters = new Set<Waiter>();\n\n\tasync addMessage(message: Message): Promise<void> {\n\t\tthis.#messages.push(message);\n\t\tthis.#notifyWaiters(message.name);\n\t}\n\n\tasync receiveMessages(opts: {\n\t\tnames?: readonly string[];\n\t\tcount: number;\n\t\tcompletable: boolean;\n\t}): Promise<Message[]> {\n\t\tconst limitedCount = Math.max(1, opts.count);\n\t\tconst nameSet =\n\t\t\topts.names && opts.names.length > 0\n\t\t\t\t? new Set(opts.names)\n\t\t\t\t: undefined;\n\t\tconst selected: Array<{ message: Message; index: number }> = [];\n\n\t\tfor (\n\t\t\tlet i = 0;\n\t\t\ti < this.#messages.length && selected.length < limitedCount;\n\t\t\ti++\n\t\t) {\n\t\t\tconst message = this.#messages[i];\n\t\t\tif (nameSet && !nameSet.has(message.name)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tselected.push({ message, index: i });\n\t\t}\n\n\t\tif (selected.length === 0) {\n\t\t\treturn [];\n\t\t}\n\n\t\tif (!opts.completable) {\n\t\t\tfor (let i = selected.length - 1; i >= 0; i--) {\n\t\t\t\tthis.#messages.splice(selected[i].index, 1);\n\t\t\t}\n\t\t\treturn selected.map((entry) => entry.message);\n\t\t}\n\n\t\treturn selected.map((entry) => {\n\t\t\tconst { message } = entry;\n\t\t\treturn {\n\t\t\t\t...message,\n\t\t\t\tcomplete: async () => {\n\t\t\t\t\tawait this.completeMessage(message.id);\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\t}\n\n\tasync completeMessage(messageId: string): Promise<void> {\n\t\tconst index = this.#messages.findIndex(\n\t\t\t(message) => message.id === messageId,\n\t\t);\n\t\tif (index !== -1) {\n\t\t\tthis.#messages.splice(index, 1);\n\t\t}\n\t}\n\n\tasync waitForMessages(\n\t\tmessageNames: string[],\n\t\tabortSignal: AbortSignal,\n\t): Promise<void> {\n\t\tif (abortSignal.aborted) {\n\t\t\tthrow new EvictedError();\n\t\t}\n\n\t\tconst nameSet =\n\t\t\tmessageNames.length > 0 ? new Set(messageNames) : undefined;\n\t\tif (\n\t\t\tthis.#messages.some((message) =>\n\t\t\t\tnameSet ? nameSet.has(message.name) : true,\n\t\t\t)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\tconst waiter: Waiter = {\n\t\t\t\tnameSet,\n\t\t\t\tresolve: () => {\n\t\t\t\t\tthis.#removeWaiter(waiter);\n\t\t\t\t\tresolve();\n\t\t\t\t},\n\t\t\t\treject: (error) => {\n\t\t\t\t\tthis.#removeWaiter(waiter);\n\t\t\t\t\treject(error);\n\t\t\t\t},\n\t\t\t\tabortSignal,\n\t\t\t\tonAbort: () => {\n\t\t\t\t\twaiter.reject(new EvictedError());\n\t\t\t\t},\n\t\t\t};\n\t\t\tabortSignal.addEventListener(\"abort\", waiter.onAbort, {\n\t\t\t\tonce: true,\n\t\t\t});\n\t\t\tthis.#waiters.add(waiter);\n\t\t});\n\t}\n\n\t#removeWaiter(waiter: Waiter): void {\n\t\tif (this.#waiters.delete(waiter)) {\n\t\t\twaiter.abortSignal.removeEventListener(\"abort\", waiter.onAbort);\n\t\t}\n\t}\n\n\t#notifyWaiters(name: string): void {\n\t\tfor (const waiter of [...this.#waiters]) {\n\t\t\tif (waiter.nameSet && !waiter.nameSet.has(name)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\twaiter.resolve();\n\t\t}\n\t}\n\n\tclear(): void {\n\t\tthis.#messages = [];\n\t\tfor (const waiter of [...this.#waiters]) {\n\t\t\twaiter.reject(new Error(\"cleared\"));\n\t\t}\n\t}\n}\n\n/**\n * In-memory implementation of EngineDriver for testing.\n * Uses binary keys (Uint8Array) with hex encoding for internal Map storage.\n */\nexport class InMemoryDriver implements EngineDriver {\n\t// Map from hex-encoded key to { originalKey, value }\n\tprivate kv = new Map<string, { key: Uint8Array; value: Uint8Array }>();\n\tprivate alarms = new Map<string, number>();\n\t#inMemoryMessageDriver = new InMemoryWorkflowMessageDriver();\n\n\t/** Simulated latency per operation (ms) */\n\tlatency = 10;\n\n\t/** How often the worker polls for work */\n\tworkerPollInterval = 100;\n\tmessageDriver: WorkflowMessageDriver = this.#inMemoryMessageDriver;\n\n\tasync get(key: Uint8Array): Promise<Uint8Array | null> {\n\t\tawait sleep(this.latency);\n\t\tconst entry = this.kv.get(keyToHex(key));\n\t\treturn entry?.value ?? null;\n\t}\n\n\tasync set(key: Uint8Array, value: Uint8Array): Promise<void> {\n\t\tawait sleep(this.latency);\n\t\tthis.kv.set(keyToHex(key), { key, value });\n\t}\n\n\tasync delete(key: Uint8Array): Promise<void> {\n\t\tawait sleep(this.latency);\n\t\tthis.kv.delete(keyToHex(key));\n\t}\n\n\tasync batchDelete(keys: Uint8Array[]): Promise<void> {\n\t\tawait sleep(this.latency);\n\t\tfor (const key of keys) {\n\t\t\tthis.kv.delete(keyToHex(key));\n\t\t}\n\t}\n\n\tasync deletePrefix(prefix: Uint8Array): Promise<void> {\n\t\tawait sleep(this.latency);\n\t\tfor (const [hexKey, entry] of this.kv) {\n\t\t\tif (keyStartsWith(entry.key, prefix)) {\n\t\t\t\tthis.kv.delete(hexKey);\n\t\t\t}\n\t\t}\n\t}\n\n\tasync deleteRange(start: Uint8Array, end: Uint8Array): Promise<void> {\n\t\tawait sleep(this.latency);\n\t\tfor (const [hexKey, entry] of this.kv) {\n\t\t\tif (\n\t\t\t\tcompareKeys(entry.key, start) >= 0 &&\n\t\t\t\tcompareKeys(entry.key, end) < 0\n\t\t\t) {\n\t\t\t\tthis.kv.delete(hexKey);\n\t\t\t}\n\t\t}\n\t}\n\n\tasync list(prefix: Uint8Array): Promise<KVEntry[]> {\n\t\tawait sleep(this.latency);\n\t\tconst results: KVEntry[] = [];\n\t\tfor (const entry of this.kv.values()) {\n\t\t\tif (keyStartsWith(entry.key, prefix)) {\n\t\t\t\tresults.push({ key: entry.key, value: entry.value });\n\t\t\t}\n\t\t}\n\t\t// Sort by key lexicographically\n\t\treturn results.sort((a, b) => compareKeys(a.key, b.key));\n\t}\n\n\tasync batch(writes: KVWrite[]): Promise<void> {\n\t\tawait sleep(this.latency);\n\t\tfor (const { key, value } of writes) {\n\t\t\tthis.kv.set(keyToHex(key), { key, value });\n\t\t}\n\t}\n\n\tasync setAlarm(workflowId: string, wakeAt: number): Promise<void> {\n\t\tawait sleep(this.latency);\n\t\tthis.alarms.set(workflowId, wakeAt);\n\t}\n\n\tasync clearAlarm(workflowId: string): Promise<void> {\n\t\tawait sleep(this.latency);\n\t\tthis.alarms.delete(workflowId);\n\t}\n\n\tasync waitForMessages(\n\t\tmessageNames: string[],\n\t\tabortSignal: AbortSignal,\n\t): Promise<void> {\n\t\tconst driver = this.messageDriver as WorkflowMessageDriver & {\n\t\t\twaitForMessages?: (\n\t\t\t\tmessageNames: string[],\n\t\t\t\tabortSignal: AbortSignal,\n\t\t\t) => Promise<void>;\n\t\t};\n\t\tif (driver.waitForMessages) {\n\t\t\tawait driver.waitForMessages(messageNames, abortSignal);\n\t\t\treturn;\n\t\t}\n\n\t\twhile (true) {\n\t\t\tif (abortSignal.aborted) {\n\t\t\t\tthrow new EvictedError();\n\t\t\t}\n\t\t\tconst messages = await this.messageDriver.receiveMessages({\n\t\t\t\tnames: messageNames.length > 0 ? messageNames : undefined,\n\t\t\t\tcount: 1,\n\t\t\t\tcompletable: true,\n\t\t\t});\n\t\t\tif (messages.length > 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tawait sleep(Math.max(1, this.latency));\n\t\t}\n\t}\n\n\t/**\n\t * Get the alarm time for a workflow (for testing).\n\t */\n\tgetAlarm(workflowId: string): number | undefined {\n\t\treturn this.alarms.get(workflowId);\n\t}\n\n\t/**\n\t * Check if any alarms are due and return their workflow IDs.\n\t */\n\tgetDueAlarms(): string[] {\n\t\tconst now = Date.now();\n\t\tconst due: string[] = [];\n\t\tfor (const [workflowId, wakeAt] of this.alarms) {\n\t\t\tif (wakeAt <= now) {\n\t\t\t\tdue.push(workflowId);\n\t\t\t}\n\t\t}\n\t\treturn due;\n\t}\n\n\t/**\n\t * Clear all data (for testing).\n\t */\n\tclear(): void {\n\t\tthis.kv.clear();\n\t\tthis.alarms.clear();\n\t\tthis.#inMemoryMessageDriver.clear();\n\t}\n\n\t/**\n\t * Get a snapshot of all data (for testing/debugging).\n\t */\n\tsnapshot(): {\n\t\tkv: Record<string, Uint8Array>;\n\t\talarms: Record<string, number>;\n\t} {\n\t\tconst kvSnapshot: Record<string, Uint8Array> = {};\n\t\tfor (const [hexKey, entry] of this.kv) {\n\t\t\tkvSnapshot[hexKey] = entry.value;\n\t\t}\n\t\treturn {\n\t\t\tkv: kvSnapshot,\n\t\t\talarms: Object.fromEntries(this.alarms),\n\t\t};\n\t}\n\n\t/**\n\t * Get all hex-encoded keys (for testing).\n\t */\n\tkeys(): string[] {\n\t\treturn [...this.kv.keys()];\n\t}\n}\n\n// Re-export main exports for convenience\nexport * from \"./index.js\";\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/workflow-engine/dist/tsup/testing.cjs","../../src/testing.ts"],"names":[],"mappings":"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","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/workflow-engine/dist/tsup/testing.cjs","sourcesContent":[null,"import type { EngineDriver, KVEntry, KVWrite } from \"./driver.js\";\nimport { EvictedError } from \"./errors.js\";\nimport { compareKeys, keyStartsWith, keyToHex } from \"./keys.js\";\nimport type { Message, WorkflowMessageDriver } from \"./types.js\";\nimport { sleep } from \"./utils.js\";\n\ninterface Waiter {\n\tnameSet?: Set<string>;\n\tresolve: () => void;\n\treject: (error: Error) => void;\n\tabortSignal: AbortSignal;\n\tonAbort: () => void;\n}\n\nclass InMemoryWorkflowMessageDriver implements WorkflowMessageDriver {\n\t#messages: Message[] = [];\n\t#waiters = new Set<Waiter>();\n\n\tasync addMessage(message: Message): Promise<void> {\n\t\tthis.#messages.push(message);\n\t\tthis.#notifyWaiters(message.name);\n\t}\n\n\tasync receiveMessages(opts: {\n\t\tnames?: readonly string[];\n\t\tcount: number;\n\t\tcompletable: boolean;\n\t}): Promise<Message[]> {\n\t\tconst limitedCount = Math.max(1, opts.count);\n\t\tconst nameSet =\n\t\t\topts.names && opts.names.length > 0\n\t\t\t\t? new Set(opts.names)\n\t\t\t\t: undefined;\n\t\tconst selected: Array<{ message: Message; index: number }> = [];\n\n\t\tfor (\n\t\t\tlet i = 0;\n\t\t\ti < this.#messages.length && selected.length < limitedCount;\n\t\t\ti++\n\t\t) {\n\t\t\tconst message = this.#messages[i];\n\t\t\tif (nameSet && !nameSet.has(message.name)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tselected.push({ message, index: i });\n\t\t}\n\n\t\tif (selected.length === 0) {\n\t\t\treturn [];\n\t\t}\n\n\t\tif (!opts.completable) {\n\t\t\tfor (let i = selected.length - 1; i >= 0; i--) {\n\t\t\t\tthis.#messages.splice(selected[i].index, 1);\n\t\t\t}\n\t\t\treturn selected.map((entry) => entry.message);\n\t\t}\n\n\t\treturn selected.map((entry) => {\n\t\t\tconst { message } = entry;\n\t\t\treturn {\n\t\t\t\t...message,\n\t\t\t\tcomplete: async () => {\n\t\t\t\t\tawait this.completeMessage(message.id);\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\t}\n\n\tasync completeMessage(messageId: string): Promise<void> {\n\t\tconst index = this.#messages.findIndex(\n\t\t\t(message) => message.id === messageId,\n\t\t);\n\t\tif (index !== -1) {\n\t\t\tthis.#messages.splice(index, 1);\n\t\t}\n\t}\n\n\tasync waitForMessages(\n\t\tmessageNames: string[],\n\t\tabortSignal: AbortSignal,\n\t): Promise<void> {\n\t\tif (abortSignal.aborted) {\n\t\t\tthrow new EvictedError();\n\t\t}\n\n\t\tconst nameSet =\n\t\t\tmessageNames.length > 0 ? new Set(messageNames) : undefined;\n\t\tif (\n\t\t\tthis.#messages.some((message) =>\n\t\t\t\tnameSet ? nameSet.has(message.name) : true,\n\t\t\t)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\tconst waiter: Waiter = {\n\t\t\t\tnameSet,\n\t\t\t\tresolve: () => {\n\t\t\t\t\tthis.#removeWaiter(waiter);\n\t\t\t\t\tresolve();\n\t\t\t\t},\n\t\t\t\treject: (error) => {\n\t\t\t\t\tthis.#removeWaiter(waiter);\n\t\t\t\t\treject(error);\n\t\t\t\t},\n\t\t\t\tabortSignal,\n\t\t\t\tonAbort: () => {\n\t\t\t\t\twaiter.reject(new EvictedError());\n\t\t\t\t},\n\t\t\t};\n\t\t\tabortSignal.addEventListener(\"abort\", waiter.onAbort, {\n\t\t\t\tonce: true,\n\t\t\t});\n\t\t\tthis.#waiters.add(waiter);\n\t\t});\n\t}\n\n\t#removeWaiter(waiter: Waiter): void {\n\t\tif (this.#waiters.delete(waiter)) {\n\t\t\twaiter.abortSignal.removeEventListener(\"abort\", waiter.onAbort);\n\t\t}\n\t}\n\n\t#notifyWaiters(name: string): void {\n\t\tfor (const waiter of [...this.#waiters]) {\n\t\t\tif (waiter.nameSet && !waiter.nameSet.has(name)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\twaiter.resolve();\n\t\t}\n\t}\n\n\tclear(): void {\n\t\tthis.#messages = [];\n\t\tfor (const waiter of [...this.#waiters]) {\n\t\t\twaiter.reject(new Error(\"cleared\"));\n\t\t}\n\t}\n}\n\n/**\n * In-memory implementation of EngineDriver for testing.\n * Uses binary keys (Uint8Array) with hex encoding for internal Map storage.\n */\nexport class InMemoryDriver implements EngineDriver {\n\t// Map from hex-encoded key to { originalKey, value }\n\tprivate kv = new Map<string, { key: Uint8Array; value: Uint8Array }>();\n\tprivate alarms = new Map<string, number>();\n\t#inMemoryMessageDriver = new InMemoryWorkflowMessageDriver();\n\n\t/** Simulated latency per operation (ms) */\n\tlatency = 10;\n\n\t/** How often the worker polls for work */\n\tworkerPollInterval = 100;\n\tmessageDriver: WorkflowMessageDriver = this.#inMemoryMessageDriver;\n\n\tasync get(key: Uint8Array): Promise<Uint8Array | null> {\n\t\tawait sleep(this.latency);\n\t\tconst entry = this.kv.get(keyToHex(key));\n\t\treturn entry?.value ?? null;\n\t}\n\n\tasync set(key: Uint8Array, value: Uint8Array): Promise<void> {\n\t\tawait sleep(this.latency);\n\t\tthis.kv.set(keyToHex(key), { key, value });\n\t}\n\n\tasync delete(key: Uint8Array): Promise<void> {\n\t\tawait sleep(this.latency);\n\t\tthis.kv.delete(keyToHex(key));\n\t}\n\n\tasync batchDelete(keys: Uint8Array[]): Promise<void> {\n\t\tawait sleep(this.latency);\n\t\tfor (const key of keys) {\n\t\t\tthis.kv.delete(keyToHex(key));\n\t\t}\n\t}\n\n\tasync deletePrefix(prefix: Uint8Array): Promise<void> {\n\t\tawait sleep(this.latency);\n\t\tfor (const [hexKey, entry] of this.kv) {\n\t\t\tif (keyStartsWith(entry.key, prefix)) {\n\t\t\t\tthis.kv.delete(hexKey);\n\t\t\t}\n\t\t}\n\t}\n\n\tasync deleteRange(start: Uint8Array, end: Uint8Array): Promise<void> {\n\t\tawait sleep(this.latency);\n\t\tfor (const [hexKey, entry] of this.kv) {\n\t\t\tif (\n\t\t\t\tcompareKeys(entry.key, start) >= 0 &&\n\t\t\t\tcompareKeys(entry.key, end) < 0\n\t\t\t) {\n\t\t\t\tthis.kv.delete(hexKey);\n\t\t\t}\n\t\t}\n\t}\n\n\tasync list(prefix: Uint8Array): Promise<KVEntry[]> {\n\t\tawait sleep(this.latency);\n\t\tconst results: KVEntry[] = [];\n\t\tfor (const entry of this.kv.values()) {\n\t\t\tif (keyStartsWith(entry.key, prefix)) {\n\t\t\t\tresults.push({ key: entry.key, value: entry.value });\n\t\t\t}\n\t\t}\n\t\t// Sort by key lexicographically\n\t\treturn results.sort((a, b) => compareKeys(a.key, b.key));\n\t}\n\n\tasync batch(writes: KVWrite[]): Promise<void> {\n\t\tawait sleep(this.latency);\n\t\tfor (const { key, value } of writes) {\n\t\t\tthis.kv.set(keyToHex(key), { key, value });\n\t\t}\n\t}\n\n\tasync setAlarm(workflowId: string, wakeAt: number): Promise<void> {\n\t\tawait sleep(this.latency);\n\t\tthis.alarms.set(workflowId, wakeAt);\n\t}\n\n\tasync clearAlarm(workflowId: string): Promise<void> {\n\t\tawait sleep(this.latency);\n\t\tthis.alarms.delete(workflowId);\n\t}\n\n\tasync waitForMessages(\n\t\tmessageNames: string[],\n\t\tabortSignal: AbortSignal,\n\t): Promise<void> {\n\t\tconst driver = this.messageDriver as WorkflowMessageDriver & {\n\t\t\twaitForMessages?: (\n\t\t\t\tmessageNames: string[],\n\t\t\t\tabortSignal: AbortSignal,\n\t\t\t) => Promise<void>;\n\t\t};\n\t\tif (driver.waitForMessages) {\n\t\t\tawait driver.waitForMessages(messageNames, abortSignal);\n\t\t\treturn;\n\t\t}\n\n\t\twhile (true) {\n\t\t\tif (abortSignal.aborted) {\n\t\t\t\tthrow new EvictedError();\n\t\t\t}\n\t\t\tconst messages = await this.messageDriver.receiveMessages({\n\t\t\t\tnames: messageNames.length > 0 ? messageNames : undefined,\n\t\t\t\tcount: 1,\n\t\t\t\tcompletable: true,\n\t\t\t});\n\t\t\tif (messages.length > 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tawait sleep(Math.max(1, this.latency));\n\t\t}\n\t}\n\n\t/**\n\t * Get the alarm time for a workflow (for testing).\n\t */\n\tgetAlarm(workflowId: string): number | undefined {\n\t\treturn this.alarms.get(workflowId);\n\t}\n\n\t/**\n\t * Check if any alarms are due and return their workflow IDs.\n\t */\n\tgetDueAlarms(): string[] {\n\t\tconst now = Date.now();\n\t\tconst due: string[] = [];\n\t\tfor (const [workflowId, wakeAt] of this.alarms) {\n\t\t\tif (wakeAt <= now) {\n\t\t\t\tdue.push(workflowId);\n\t\t\t}\n\t\t}\n\t\treturn due;\n\t}\n\n\t/**\n\t * Clear all data (for testing).\n\t */\n\tclear(): void {\n\t\tthis.kv.clear();\n\t\tthis.alarms.clear();\n\t\tthis.#inMemoryMessageDriver.clear();\n\t}\n\n\t/**\n\t * Get a snapshot of all data (for testing/debugging).\n\t */\n\tsnapshot(): {\n\t\tkv: Record<string, Uint8Array>;\n\t\talarms: Record<string, number>;\n\t} {\n\t\tconst kvSnapshot: Record<string, Uint8Array> = {};\n\t\tfor (const [hexKey, entry] of this.kv) {\n\t\t\tkvSnapshot[hexKey] = entry.value;\n\t\t}\n\t\treturn {\n\t\t\tkv: kvSnapshot,\n\t\t\talarms: Object.fromEntries(this.alarms),\n\t\t};\n\t}\n\n\t/**\n\t * Get all hex-encoded keys (for testing).\n\t */\n\tkeys(): string[] {\n\t\treturn [...this.kv.keys()];\n\t}\n}\n\n// Re-export main exports for convenience\nexport * from \"./index.js\";\n"]}
|
package/dist/tsup/testing.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rivetkit/workflow-engine",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.22",
|
|
4
4
|
"description": "Durable workflow engine with reentrant execution",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"keywords": [
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
},
|
|
70
70
|
"repository": {
|
|
71
71
|
"type": "git",
|
|
72
|
-
"url": "https://github.com/rivet-dev/
|
|
72
|
+
"url": "https://github.com/rivet-dev/rivet.git",
|
|
73
73
|
"directory": "rivetkit-typescript/packages/workflow-engine"
|
|
74
74
|
}
|
|
75
75
|
}
|
package/src/storage.ts
CHANGED
|
@@ -409,7 +409,9 @@ async function runDeletes(
|
|
|
409
409
|
deletions: PendingDeletions,
|
|
410
410
|
): Promise<boolean> {
|
|
411
411
|
const ops = [
|
|
412
|
-
...deletions.prefixes.map(
|
|
412
|
+
...deletions.prefixes.map(
|
|
413
|
+
(prefix) => () => driver.deletePrefix(prefix),
|
|
414
|
+
),
|
|
413
415
|
...deletions.ranges.map(
|
|
414
416
|
(range) => () => driver.deleteRange(range.start, range.end),
|
|
415
417
|
),
|