@workflow/world-testing 4.0.1-beta.19 → 4.0.1-beta.20
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/.well-known/workflow/v1/flow.js +76 -32
- package/dist/.well-known/workflow/v1/flow.js.map +1 -1
- package/dist/.well-known/workflow/v1/manifest.debug.json +5 -5
- package/dist/.well-known/workflow/v1/step.js +64 -20
- package/dist/.well-known/workflow/v1/step.js.map +1 -1
- package/package.json +4 -4
|
@@ -44641,7 +44641,12 @@ function createQueue(config3) {
|
|
|
44641
44641
|
});
|
|
44642
44642
|
}
|
|
44643
44643
|
console.error(`[embedded world] Reached max retries of embedded world queue implementation`);
|
|
44644
|
-
})().
|
|
44644
|
+
})().catch((err) => {
|
|
44645
|
+
const isAbortError2 = err?.name === "AbortError" || err?.name === "ResponseAborted";
|
|
44646
|
+
if (!isAbortError2) {
|
|
44647
|
+
console.error("[embedded world] Queue operation failed:", err);
|
|
44648
|
+
}
|
|
44649
|
+
}).finally(() => {
|
|
44645
44650
|
for (const fn of cleanup) {
|
|
44646
44651
|
fn();
|
|
44647
44652
|
}
|
|
@@ -44730,14 +44735,18 @@ async function write(filePath, data, opts) {
|
|
|
44730
44735
|
}
|
|
44731
44736
|
}
|
|
44732
44737
|
const tempPath = `${filePath}.tmp.${ulid3()}`;
|
|
44738
|
+
let tempFileCreated = false;
|
|
44733
44739
|
try {
|
|
44734
44740
|
await ensureDir(import_node_path6.default.dirname(filePath));
|
|
44735
44741
|
await import_node_fs6.promises.writeFile(tempPath, data);
|
|
44742
|
+
tempFileCreated = true;
|
|
44736
44743
|
await import_node_fs6.promises.rename(tempPath, filePath);
|
|
44737
44744
|
}
|
|
44738
44745
|
catch (error45) {
|
|
44739
|
-
|
|
44740
|
-
|
|
44746
|
+
if (tempFileCreated) {
|
|
44747
|
+
await import_node_fs6.promises.unlink(tempPath).catch(() => {
|
|
44748
|
+
});
|
|
44749
|
+
}
|
|
44741
44750
|
throw error45;
|
|
44742
44751
|
}
|
|
44743
44752
|
}
|
|
@@ -45070,6 +45079,15 @@ function createStorage(basedir) {
|
|
|
45070
45079
|
const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
|
|
45071
45080
|
return filterRunData(run, resolveData);
|
|
45072
45081
|
},
|
|
45082
|
+
/**
|
|
45083
|
+
* Updates a workflow run.
|
|
45084
|
+
*
|
|
45085
|
+
* Note: This operation is not atomic. Concurrent updates from multiple
|
|
45086
|
+
* processes may result in lost updates (last writer wins). This is an
|
|
45087
|
+
* inherent limitation of filesystem-based storage without locking.
|
|
45088
|
+
* For the local/embedded world, this is acceptable as it's typically
|
|
45089
|
+
* used in single-process scenarios.
|
|
45090
|
+
*/
|
|
45073
45091
|
async update(id, data) {
|
|
45074
45092
|
const runPath = import_node_path7.default.join(basedir, "runs", `${id}.json`);
|
|
45075
45093
|
const run = await readJSON(runPath, WorkflowRunSchema);
|
|
@@ -45183,6 +45201,13 @@ function createStorage(basedir) {
|
|
|
45183
45201
|
const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
|
|
45184
45202
|
return filterStepData(step, resolveData);
|
|
45185
45203
|
},
|
|
45204
|
+
/**
|
|
45205
|
+
* Updates a step.
|
|
45206
|
+
*
|
|
45207
|
+
* Note: This operation is not atomic. Concurrent updates from multiple
|
|
45208
|
+
* processes may result in lost updates (last writer wins). This is an
|
|
45209
|
+
* inherent limitation of filesystem-based storage without locking.
|
|
45210
|
+
*/
|
|
45186
45211
|
async update(runId, stepId, data) {
|
|
45187
45212
|
const compositeKey = `${runId}-${stepId}`;
|
|
45188
45213
|
const stepPath = import_node_path7.default.join(basedir, "steps", `${compositeKey}.json`);
|
|
@@ -45317,7 +45342,7 @@ function serializeChunk(chunk) {
|
|
|
45317
45342
|
__name(serializeChunk, "serializeChunk");
|
|
45318
45343
|
function deserializeChunk(serialized) {
|
|
45319
45344
|
const eof = serialized[0] === 1;
|
|
45320
|
-
const chunk = serialized.subarray(1);
|
|
45345
|
+
const chunk = Buffer.from(serialized.subarray(1));
|
|
45321
45346
|
return { eof, chunk };
|
|
45322
45347
|
}
|
|
45323
45348
|
__name(deserializeChunk, "deserializeChunk");
|
|
@@ -45327,16 +45352,23 @@ function createStreamer(basedir) {
|
|
|
45327
45352
|
async writeToStream(name, _runId, chunk) {
|
|
45328
45353
|
await _runId;
|
|
45329
45354
|
const chunkId = `strm_${monotonicUlid2()}`;
|
|
45355
|
+
let chunkBuffer;
|
|
45330
45356
|
if (typeof chunk === "string") {
|
|
45331
|
-
|
|
45357
|
+
chunkBuffer = Buffer.from(new TextEncoder().encode(chunk));
|
|
45358
|
+
}
|
|
45359
|
+
else if (chunk instanceof Buffer) {
|
|
45360
|
+
chunkBuffer = chunk;
|
|
45361
|
+
}
|
|
45362
|
+
else {
|
|
45363
|
+
chunkBuffer = Buffer.from(chunk);
|
|
45332
45364
|
}
|
|
45333
45365
|
const serialized = serializeChunk({
|
|
45334
|
-
chunk:
|
|
45366
|
+
chunk: chunkBuffer,
|
|
45335
45367
|
eof: false
|
|
45336
45368
|
});
|
|
45337
45369
|
const chunkPath = import_node_path8.default.join(basedir, "streams", "chunks", `${name}-${chunkId}.json`);
|
|
45338
45370
|
await write(chunkPath, serialized);
|
|
45339
|
-
const chunkData =
|
|
45371
|
+
const chunkData = Uint8Array.from(chunkBuffer);
|
|
45340
45372
|
streamEmitter.emit(`chunk:${name}`, {
|
|
45341
45373
|
streamName: name,
|
|
45342
45374
|
chunkData,
|
|
@@ -45361,20 +45393,27 @@ function createStreamer(basedir) {
|
|
|
45361
45393
|
let isReadingFromDisk = true;
|
|
45362
45394
|
const chunkListener = /* @__PURE__ */ __name((event) => {
|
|
45363
45395
|
deliveredChunkIds.add(event.chunkId);
|
|
45396
|
+
if (event.chunkData.byteLength === 0) {
|
|
45397
|
+
return;
|
|
45398
|
+
}
|
|
45364
45399
|
if (isReadingFromDisk) {
|
|
45365
45400
|
bufferedEventChunks.push({
|
|
45366
45401
|
chunkId: event.chunkId,
|
|
45367
|
-
chunkData: event.chunkData
|
|
45402
|
+
chunkData: Uint8Array.from(event.chunkData)
|
|
45368
45403
|
});
|
|
45369
45404
|
}
|
|
45370
45405
|
else {
|
|
45371
|
-
controller.enqueue(event.chunkData);
|
|
45406
|
+
controller.enqueue(Uint8Array.from(event.chunkData));
|
|
45372
45407
|
}
|
|
45373
45408
|
}, "chunkListener");
|
|
45374
45409
|
const closeListener = /* @__PURE__ */ __name(() => {
|
|
45375
45410
|
streamEmitter.off(`chunk:${name}`, chunkListener);
|
|
45376
45411
|
streamEmitter.off(`close:${name}`, closeListener);
|
|
45377
|
-
|
|
45412
|
+
try {
|
|
45413
|
+
controller.close();
|
|
45414
|
+
}
|
|
45415
|
+
catch (e) {
|
|
45416
|
+
}
|
|
45378
45417
|
}, "closeListener");
|
|
45379
45418
|
removeListeners = closeListener;
|
|
45380
45419
|
streamEmitter.on(`chunk:${name}`, chunkListener);
|
|
@@ -45394,13 +45433,13 @@ function createStreamer(basedir) {
|
|
|
45394
45433
|
break;
|
|
45395
45434
|
}
|
|
45396
45435
|
if (chunk.chunk.byteLength) {
|
|
45397
|
-
controller.enqueue(chunk.chunk);
|
|
45436
|
+
controller.enqueue(Uint8Array.from(chunk.chunk));
|
|
45398
45437
|
}
|
|
45399
45438
|
}
|
|
45400
45439
|
isReadingFromDisk = false;
|
|
45401
45440
|
bufferedEventChunks.sort((a2, b) => a2.chunkId.localeCompare(b.chunkId));
|
|
45402
45441
|
for (const buffered of bufferedEventChunks) {
|
|
45403
|
-
controller.enqueue(buffered.chunkData);
|
|
45442
|
+
controller.enqueue(Uint8Array.from(buffered.chunkData));
|
|
45404
45443
|
}
|
|
45405
45444
|
if (isComplete) {
|
|
45406
45445
|
removeListeners();
|
|
@@ -46766,7 +46805,8 @@ function getCommonReducers(global3 = globalThis) {
|
|
|
46766
46805
|
const abToBase64 = /* @__PURE__ */ __name((value, offset, length) => {
|
|
46767
46806
|
if (length === 0)
|
|
46768
46807
|
return ".";
|
|
46769
|
-
|
|
46808
|
+
const uint8 = new Uint8Array(value, offset, length);
|
|
46809
|
+
return Buffer.from(uint8).toString("base64");
|
|
46770
46810
|
}, "abToBase64");
|
|
46771
46811
|
const viewToBase64 = /* @__PURE__ */ __name((value) => abToBase64(value.buffer, value.byteOffset, value.byteLength), "viewToBase64");
|
|
46772
46812
|
return {
|
|
@@ -48619,7 +48659,11 @@ function workflowEntrypoint(workflowCode2) {
|
|
|
48619
48659
|
stepName: queueItem.stepName,
|
|
48620
48660
|
input: dehydratedArgs
|
|
48621
48661
|
});
|
|
48622
|
-
(0, import_functions4.waitUntil)(Promise.all(ops))
|
|
48662
|
+
(0, import_functions4.waitUntil)(Promise.all(ops).catch((err2) => {
|
|
48663
|
+
const isAbortError2 = err2?.name === "AbortError" || err2?.name === "ResponseAborted";
|
|
48664
|
+
if (!isAbortError2)
|
|
48665
|
+
throw err2;
|
|
48666
|
+
}));
|
|
48623
48667
|
await world.queue(`__wkf_step_${queueItem.stepName}`, {
|
|
48624
48668
|
workflowName,
|
|
48625
48669
|
workflowRunId: runId,
|
|
@@ -48741,6 +48785,22 @@ var __export = (target, all) => {
|
|
|
48741
48785
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
48742
48786
|
};
|
|
48743
48787
|
|
|
48788
|
+
// workflows/addition.ts
|
|
48789
|
+
var addition_exports = {};
|
|
48790
|
+
__export(addition_exports, {
|
|
48791
|
+
addition: () => addition
|
|
48792
|
+
});
|
|
48793
|
+
var add = globalThis[Symbol.for("WORKFLOW_USE_STEP")]("step//workflows/addition.ts//add");
|
|
48794
|
+
async function addition(num, num2) {
|
|
48795
|
+
const result = await add(num, num2);
|
|
48796
|
+
console.log({
|
|
48797
|
+
result
|
|
48798
|
+
});
|
|
48799
|
+
return result;
|
|
48800
|
+
}
|
|
48801
|
+
__name(addition, "addition");
|
|
48802
|
+
addition.workflowId = "workflow//workflows/addition.ts//addition";
|
|
48803
|
+
|
|
48744
48804
|
// workflows/noop.ts
|
|
48745
48805
|
var noop_exports = {};
|
|
48746
48806
|
__export(noop_exports, {
|
|
@@ -48774,27 +48834,11 @@ async function brokenWf() {
|
|
|
48774
48834
|
__name(brokenWf, "brokenWf");
|
|
48775
48835
|
brokenWf.workflowId = "workflow//workflows/noop.ts//brokenWf";
|
|
48776
48836
|
|
|
48777
|
-
// workflows/addition.ts
|
|
48778
|
-
var addition_exports = {};
|
|
48779
|
-
__export(addition_exports, {
|
|
48780
|
-
addition: () => addition
|
|
48781
|
-
});
|
|
48782
|
-
var add = globalThis[Symbol.for("WORKFLOW_USE_STEP")]("step//workflows/addition.ts//add");
|
|
48783
|
-
async function addition(num, num2) {
|
|
48784
|
-
const result = await add(num, num2);
|
|
48785
|
-
console.log({
|
|
48786
|
-
result
|
|
48787
|
-
});
|
|
48788
|
-
return result;
|
|
48789
|
-
}
|
|
48790
|
-
__name(addition, "addition");
|
|
48791
|
-
addition.workflowId = "workflow//workflows/addition.ts//addition";
|
|
48792
|
-
|
|
48793
48837
|
// virtual-entry.js
|
|
48794
48838
|
globalThis.__private_workflows = /* @__PURE__ */ new Map();
|
|
48795
|
-
Object.values(noop_exports).map((item) => item?.workflowId && globalThis.__private_workflows.set(item.workflowId, item));
|
|
48796
48839
|
Object.values(addition_exports).map((item) => item?.workflowId && globalThis.__private_workflows.set(item.workflowId, item));
|
|
48797
|
-
|
|
48840
|
+
Object.values(noop_exports).map((item) => item?.workflowId && globalThis.__private_workflows.set(item.workflowId, item));
|
|
48841
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsid29ya2Zsb3dzL2FkZGl0aW9uLnRzIiwgIndvcmtmbG93cy9ub29wLnRzIiwgInZpcnR1YWwtZW50cnkuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKl9faW50ZXJuYWxfd29ya2Zsb3dze1wid29ya2Zsb3dzXCI6e1wid29ya2Zsb3dzL2FkZGl0aW9uLnRzXCI6e1wiYWRkaXRpb25cIjp7XCJ3b3JrZmxvd0lkXCI6XCJ3b3JrZmxvdy8vd29ya2Zsb3dzL2FkZGl0aW9uLnRzLy9hZGRpdGlvblwifX19LFwic3RlcHNcIjp7XCJ3b3JrZmxvd3MvYWRkaXRpb24udHNcIjp7XCJhZGRcIjp7XCJzdGVwSWRcIjpcInN0ZXAvL3dvcmtmbG93cy9hZGRpdGlvbi50cy8vYWRkXCJ9fX19Ki87XG52YXIgYWRkID0gZ2xvYmFsVGhpc1tTeW1ib2wuZm9yKFwiV09SS0ZMT1dfVVNFX1NURVBcIildKFwic3RlcC8vd29ya2Zsb3dzL2FkZGl0aW9uLnRzLy9hZGRcIik7XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWRkaXRpb24obnVtLCBudW0yKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYWRkKG51bSwgbnVtMik7XG4gICAgY29uc29sZS5sb2coe1xuICAgICAgICByZXN1bHRcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuYWRkaXRpb24ud29ya2Zsb3dJZCA9IFwid29ya2Zsb3cvL3dvcmtmbG93cy9hZGRpdGlvbi50cy8vYWRkaXRpb25cIjtcbiIsICIvKipfX2ludGVybmFsX3dvcmtmbG93c3tcIndvcmtmbG93c1wiOntcIndvcmtmbG93cy9ub29wLnRzXCI6e1wiYnJva2VuV2ZcIjp7XCJ3b3JrZmxvd0lkXCI6XCJ3b3JrZmxvdy8vd29ya2Zsb3dzL25vb3AudHMvL2Jyb2tlbldmXCJ9fX0sXCJzdGVwc1wiOntcIndvcmtmbG93cy9ub29wLnRzXCI6e1wibm9vcFwiOntcInN0ZXBJZFwiOlwic3RlcC8vd29ya2Zsb3dzL25vb3AudHMvL25vb3BcIn19fX0qLztcbmV4cG9ydCB2YXIgbm9vcCA9IGdsb2JhbFRoaXNbU3ltYm9sLmZvcihcIldPUktGTE9XX1VTRV9TVEVQXCIpXShcInN0ZXAvL3dvcmtmbG93cy9ub29wLnRzLy9ub29wXCIpO1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJyb2tlbldmKCkge1xuICAgIGNvbnN0IG51bWJlcnMgPSBbXTtcbiAgICB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCAxMDsgaSsrKXtcbiAgICAgICAgICAgIHByb21pc2VzLnB1c2gobm9vcChpKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coJ2F3YWl0IDEwJyk7XG4gICAgICAgIG51bWJlcnMucHVzaCguLi5hd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpO1xuICAgIH1cbiAgICB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKyl7XG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKG5vb3AoMTAwMCArIGkpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZygnYXdhaXQgMTAwJyk7XG4gICAgICAgIG51bWJlcnMucHVzaCguLi5hd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZygnZG9uZS4nKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBudW1iZXJzXG4gICAgfTtcbn1cbmJyb2tlbldmLndvcmtmbG93SWQgPSBcIndvcmtmbG93Ly93b3JrZmxvd3Mvbm9vcC50cy8vYnJva2VuV2ZcIjtcbiIsICJnbG9iYWxUaGlzLl9fcHJpdmF0ZV93b3JrZmxvd3MgPSBuZXcgTWFwKCk7XG5pbXBvcnQgKiBhcyB3b3JrZmxvd0ZpbGUwIGZyb20gJy4vd29ya2Zsb3dzL2FkZGl0aW9uLnRzJztcbiAgICAgICAgICAgIE9iamVjdC52YWx1ZXMod29ya2Zsb3dGaWxlMCkubWFwKGl0ZW0gPT4gaXRlbT8ud29ya2Zsb3dJZCAmJiBnbG9iYWxUaGlzLl9fcHJpdmF0ZV93b3JrZmxvd3Muc2V0KGl0ZW0ud29ya2Zsb3dJZCwgaXRlbSkpXG5pbXBvcnQgKiBhcyB3b3JrZmxvd0ZpbGUxIGZyb20gJy4vd29ya2Zsb3dzL25vb3AudHMnO1xuICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyh3b3JrZmxvd0ZpbGUxKS5tYXAoaXRlbSA9PiBpdGVtPy53b3JrZmxvd0lkICYmIGdsb2JhbFRoaXMuX19wcml2YXRlX3dvcmtmbG93cy5zZXQoaXRlbS53b3JrZmxvd0lkLCBpdGVtKSkiXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0EsSUFBSSxNQUFNLFdBQVcsT0FBTyxJQUFJLG1CQUFtQixDQUFDLEVBQUUsa0NBQWtDO0FBQ3hGLGVBQXNCLFNBQVMsS0FBSyxNQUFNO0FBQ3RDLFFBQU0sU0FBUyxNQUFNLElBQUksS0FBSyxJQUFJO0FBQ2xDLFVBQVEsSUFBSTtBQUFBLElBQ1I7QUFBQSxFQUNKLENBQUM7QUFDRCxTQUFPO0FBQ1g7QUFOc0I7QUFPdEIsU0FBUyxhQUFhOzs7QUNUdEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNPLElBQUksT0FBTyxXQUFXLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxFQUFFLCtCQUErQjtBQUM3RixlQUFzQixXQUFXO0FBQzdCLFFBQU0sVUFBVSxDQUFDO0FBQ2pCO0FBQ0ksVUFBTSxXQUFXLENBQUM7QUFDbEIsYUFBUSxJQUFJLEdBQUcsSUFBSSxJQUFJLEtBQUk7QUFDdkIsZUFBUyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQUEsSUFDekI7QUFDQSxZQUFRLElBQUksVUFBVTtBQUN0QixZQUFRLEtBQUssR0FBRyxNQUFNLFFBQVEsSUFBSSxRQUFRLENBQUM7QUFBQSxFQUMvQztBQUNBO0FBQ0ksVUFBTSxXQUFXLENBQUM7QUFDbEIsYUFBUSxJQUFJLEdBQUcsSUFBSSxLQUFLLEtBQUk7QUFDeEIsZUFBUyxLQUFLLEtBQUssTUFBTyxDQUFDLENBQUM7QUFBQSxJQUNoQztBQUNBLFlBQVEsSUFBSSxXQUFXO0FBQ3ZCLFlBQVEsS0FBSyxHQUFHLE1BQU0sUUFBUSxJQUFJLFFBQVEsQ0FBQztBQUFBLEVBQy9DO0FBQ0EsVUFBUSxJQUFJLE9BQU87QUFDbkIsU0FBTztBQUFBLElBQ0g7QUFBQSxFQUNKO0FBQ0o7QUF0QnNCO0FBdUJ0QixTQUFTLGFBQWE7OztBQ3pCdEIsV0FBVyxzQkFBc0Isb0JBQUksSUFBSTtBQUU3QixPQUFPLE9BQU8sZ0JBQWEsRUFBRSxJQUFJLFVBQVEsTUFBTSxjQUFjLFdBQVcsb0JBQW9CLElBQUksS0FBSyxZQUFZLElBQUksQ0FBQztBQUV0SCxPQUFPLE9BQU8sWUFBYSxFQUFFLElBQUksVUFBUSxNQUFNLGNBQWMsV0FBVyxvQkFBb0IsSUFBSSxLQUFLLFlBQVksSUFBSSxDQUFDOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
48798
48842
|
`;
|
|
48799
48843
|
var POST = workflowEntrypoint(workflowCode);
|
|
48800
48844
|
// Annotate the CommonJS export names for ESM import in node:
|