@workflow/world-local 4.1.0-beta.41 → 4.1.0-beta.42
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/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/queue.d.ts +28 -1
- package/dist/queue.d.ts.map +1 -1
- package/dist/queue.js +98 -68
- package/dist/queue.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { World } from '@workflow/world';
|
|
|
2
2
|
import type { Config } from './config.js';
|
|
3
3
|
import { type DirectHandler } from './queue.js';
|
|
4
4
|
export { DataDirAccessError, DataDirVersionError, ensureDataDir, initDataDir, type ParsedVersion, parseVersion, } from './init.js';
|
|
5
|
-
export type
|
|
5
|
+
export { createQueueExecutor, type DirectHandler, type QueueExecutionRequest, type QueueExecutionResult, type QueueExecutor, } from './queue.js';
|
|
6
6
|
export type LocalWorld = World & {
|
|
7
7
|
/** Register a direct in-process handler for a queue prefix, bypassing HTTP. */
|
|
8
8
|
registerHandler(prefix: '__wkf_step_' | '__wkf_workflow_', handler: DirectHandler): void;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAK7D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,KAAK,aAAa,EAClB,YAAY,GACb,MAAM,WAAW,CAAC;AAEnB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAK7D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,KAAK,aAAa,EAClB,YAAY,GACb,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,aAAa,GACnB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG;IAC/B,+EAA+E;IAC/E,eAAe,CACb,MAAM,EAAE,aAAa,GAAG,iBAAiB,EACzC,OAAO,EAAE,aAAa,GACrB,IAAI,CAAC;IACR,qEAAqE;IACrE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,UAAU,CAuBnE"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import { createStorage } from './storage.js';
|
|
|
6
6
|
import { createStreamer } from './streamer.js';
|
|
7
7
|
// Re-export init types and utilities for consumers
|
|
8
8
|
export { DataDirAccessError, DataDirVersionError, ensureDataDir, initDataDir, parseVersion, } from './init.js';
|
|
9
|
+
export { createQueueExecutor, } from './queue.js';
|
|
9
10
|
/**
|
|
10
11
|
* Creates a local world instance that combines queue, storage, and streamer functionalities.
|
|
11
12
|
*
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAGtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAsB,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,mDAAmD;AACnD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,WAAW,EAEX,YAAY,GACb,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAGtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAsB,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,mDAAmD;AACnD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,WAAW,EAEX,YAAY,GACb,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,mBAAmB,GAKpB,MAAM,YAAY,CAAC;AAYpB;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAsB;IACrD,MAAM,WAAW,GAAG,IAAI;QACtB,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAChE;QACH,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,YAAY,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,WAAW,EAAE,CAAC;IACzD,MAAM,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IACxC,OAAO;QACL,GAAG,KAAK;QACR,GAAG,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC;QACtC,GAAG,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC;QACvC,KAAK,CAAC,KAAK;YACT,MAAM,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;QACD,KAAK,CAAC,KAAK;YACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;QACD,KAAK,CAAC,KAAK;YACT,MAAM,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,MAAM,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/queue.d.ts
CHANGED
|
@@ -1,11 +1,38 @@
|
|
|
1
|
-
import { type Queue } from '@workflow/world';
|
|
1
|
+
import { MessageId, type Queue, ValidQueueName } from '@workflow/world';
|
|
2
2
|
import type { Config } from './config.js';
|
|
3
3
|
export type DirectHandler = (req: Request) => Promise<Response>;
|
|
4
|
+
export interface QueueExecutionRequest {
|
|
5
|
+
queueName: ValidQueueName;
|
|
6
|
+
messageId: MessageId;
|
|
7
|
+
attempt: number;
|
|
8
|
+
body: Uint8Array;
|
|
9
|
+
headers?: Record<string, string>;
|
|
10
|
+
}
|
|
11
|
+
export type QueueExecutionResult = {
|
|
12
|
+
type: 'completed';
|
|
13
|
+
} | {
|
|
14
|
+
type: 'reschedule';
|
|
15
|
+
timeoutSeconds: number;
|
|
16
|
+
} | {
|
|
17
|
+
type: 'error';
|
|
18
|
+
status: number;
|
|
19
|
+
text: string;
|
|
20
|
+
headers: Record<string, string>;
|
|
21
|
+
};
|
|
22
|
+
export type QueueExecutor = {
|
|
23
|
+
/** Execute a single queue message without enqueueing or sleeping. */
|
|
24
|
+
executeMessage(request: QueueExecutionRequest): Promise<QueueExecutionResult>;
|
|
25
|
+
/** Close the HTTP agent and release resources. */
|
|
26
|
+
close(): Promise<void>;
|
|
27
|
+
/** Register a direct in-process handler for a queue prefix, bypassing HTTP. */
|
|
28
|
+
registerHandler(prefix: '__wkf_step_' | '__wkf_workflow_', handler: DirectHandler): void;
|
|
29
|
+
};
|
|
4
30
|
export type LocalQueue = Queue & {
|
|
5
31
|
/** Close the HTTP agent and release resources. */
|
|
6
32
|
close(): Promise<void>;
|
|
7
33
|
/** Register a direct in-process handler for a queue prefix, bypassing HTTP. */
|
|
8
34
|
registerHandler(prefix: '__wkf_step_' | '__wkf_workflow_', handler: DirectHandler): void;
|
|
9
35
|
};
|
|
36
|
+
export declare function createQueueExecutor(config: Partial<Config>): QueueExecutor;
|
|
10
37
|
export declare function createQueue(config: Partial<Config>): LocalQueue;
|
|
11
38
|
//# sourceMappingURL=queue.d.ts.map
|
package/dist/queue.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,KAAK,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAKxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAuB1C,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEhE,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,cAAc,CAAC;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAC9C;IACE,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,CAAC;AAEN,MAAM,MAAM,aAAa,GAAG;IAC1B,qEAAqE;IACrE,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC9E,kDAAkD;IAClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,+EAA+E;IAC/E,eAAe,CACb,MAAM,EAAE,aAAa,GAAG,iBAAiB,EACzC,OAAO,EAAE,aAAa,GACrB,IAAI,CAAC;CACT,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG;IAC/B,kDAAkD;IAClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,+EAA+E;IAC/E,eAAe,CACb,MAAM,EAAE,aAAa,GAAG,iBAAiB,EACzC,OAAO,EAAE,aAAa,GACrB,IAAI,CAAC;CACT,CAAC;AAeF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,aAAa,CAyF1E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,UAAU,CA8K/D"}
|
package/dist/queue.js
CHANGED
|
@@ -21,7 +21,16 @@ const MAX_SAFE_TIMEOUT_MS = 2147483647;
|
|
|
21
21
|
const DEFAULT_CONCURRENCY_LIMIT = 1000;
|
|
22
22
|
const WORKFLOW_LOCAL_QUEUE_CONCURRENCY = parseInt(process.env.WORKFLOW_LOCAL_QUEUE_CONCURRENCY ?? '0', 10) ||
|
|
23
23
|
DEFAULT_CONCURRENCY_LIMIT;
|
|
24
|
-
|
|
24
|
+
function getQueueRoute(queueName) {
|
|
25
|
+
if (queueName.startsWith('__wkf_step_')) {
|
|
26
|
+
return { pathname: 'step', prefix: '__wkf_step_' };
|
|
27
|
+
}
|
|
28
|
+
if (queueName.startsWith('__wkf_workflow_')) {
|
|
29
|
+
return { pathname: 'flow', prefix: '__wkf_workflow_' };
|
|
30
|
+
}
|
|
31
|
+
throw new Error('Unknown queue name prefix');
|
|
32
|
+
}
|
|
33
|
+
export function createQueueExecutor(config) {
|
|
25
34
|
// Create a custom agent optimized for high-concurrency local workflows:
|
|
26
35
|
// - headersTimeout: 0 allows long-running steps
|
|
27
36
|
// - connections: 1000 allows many parallel connections to the same host
|
|
@@ -32,6 +41,70 @@ export function createQueue(config) {
|
|
|
32
41
|
connections: 1000,
|
|
33
42
|
keepAliveTimeout: 30_000,
|
|
34
43
|
});
|
|
44
|
+
/** Direct in-process handlers by queue prefix, bypassing HTTP when set. */
|
|
45
|
+
const directHandlers = new Map();
|
|
46
|
+
const executeMessage = async ({ queueName, messageId, attempt, body, headers: extraHeaders, }) => {
|
|
47
|
+
const { pathname, prefix } = getQueueRoute(queueName);
|
|
48
|
+
const headers = {
|
|
49
|
+
...extraHeaders,
|
|
50
|
+
'content-type': 'application/json',
|
|
51
|
+
'x-vqs-queue-name': queueName,
|
|
52
|
+
'x-vqs-message-id': messageId,
|
|
53
|
+
'x-vqs-message-attempt': String(attempt),
|
|
54
|
+
};
|
|
55
|
+
const directHandler = directHandlers.get(prefix);
|
|
56
|
+
let response;
|
|
57
|
+
if (directHandler) {
|
|
58
|
+
// Wrap direct handlers in a Request so local execution and HTTP execution
|
|
59
|
+
// share the same contract and response parsing.
|
|
60
|
+
const req = new Request('http://localhost/.well-known/workflow/v1/' + pathname, {
|
|
61
|
+
method: 'POST',
|
|
62
|
+
headers,
|
|
63
|
+
body,
|
|
64
|
+
});
|
|
65
|
+
response = await directHandler(req);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
const baseUrl = await resolveBaseUrl(config);
|
|
69
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- undici v7 dispatcher types don't match @types/node's RequestInit
|
|
70
|
+
response = await fetch(`${baseUrl}/.well-known/workflow/v1/${pathname}`, {
|
|
71
|
+
method: 'POST',
|
|
72
|
+
duplex: 'half',
|
|
73
|
+
dispatcher: httpAgent,
|
|
74
|
+
headers,
|
|
75
|
+
body,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
const text = await response.text();
|
|
79
|
+
if (!response.ok) {
|
|
80
|
+
return {
|
|
81
|
+
type: 'error',
|
|
82
|
+
status: response.status,
|
|
83
|
+
text,
|
|
84
|
+
headers: Object.fromEntries(response.headers.entries()),
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
try {
|
|
88
|
+
const timeoutSeconds = Number(JSON.parse(text).timeoutSeconds);
|
|
89
|
+
if (Number.isFinite(timeoutSeconds) && timeoutSeconds >= 0) {
|
|
90
|
+
return { type: 'reschedule', timeoutSeconds };
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch { }
|
|
94
|
+
return { type: 'completed' };
|
|
95
|
+
};
|
|
96
|
+
return {
|
|
97
|
+
executeMessage,
|
|
98
|
+
registerHandler(prefix, handler) {
|
|
99
|
+
directHandlers.set(prefix, handler);
|
|
100
|
+
},
|
|
101
|
+
async close() {
|
|
102
|
+
await httpAgent.close();
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
export function createQueue(config) {
|
|
107
|
+
const executor = createQueueExecutor(config);
|
|
35
108
|
const transport = new JsonTransport();
|
|
36
109
|
const generateId = monotonicFactory();
|
|
37
110
|
const semaphore = new Sema(WORKFLOW_LOCAL_QUEUE_CONCURRENCY);
|
|
@@ -40,8 +113,6 @@ export function createQueue(config) {
|
|
|
40
113
|
* that we don't queue the same message multiple times
|
|
41
114
|
*/
|
|
42
115
|
const inflightMessages = new Map();
|
|
43
|
-
/** Direct in-process handlers by queue prefix, bypassing HTTP when set. */
|
|
44
|
-
const directHandlers = new Map();
|
|
45
116
|
const queue = async (queueName, message, opts) => {
|
|
46
117
|
const cleanup = [];
|
|
47
118
|
if (opts?.idempotencyKey) {
|
|
@@ -51,19 +122,7 @@ export function createQueue(config) {
|
|
|
51
122
|
}
|
|
52
123
|
}
|
|
53
124
|
const body = transport.serialize(message);
|
|
54
|
-
|
|
55
|
-
let prefix;
|
|
56
|
-
if (queueName.startsWith('__wkf_step_')) {
|
|
57
|
-
pathname = `step`;
|
|
58
|
-
prefix = '__wkf_step_';
|
|
59
|
-
}
|
|
60
|
-
else if (queueName.startsWith('__wkf_workflow_')) {
|
|
61
|
-
pathname = `flow`;
|
|
62
|
-
prefix = '__wkf_workflow_';
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
throw new Error('Unknown queue name prefix');
|
|
66
|
-
}
|
|
125
|
+
getQueueRoute(queueName);
|
|
67
126
|
const messageId = MessageId.parse(`msg_${generateId()}`);
|
|
68
127
|
if (opts?.idempotencyKey) {
|
|
69
128
|
const key = opts.idempotencyKey;
|
|
@@ -80,61 +139,34 @@ export function createQueue(config) {
|
|
|
80
139
|
}
|
|
81
140
|
try {
|
|
82
141
|
let defaultRetriesLeft = 3;
|
|
83
|
-
const directHandler = directHandlers.get(prefix);
|
|
84
142
|
for (let attempt = 0; defaultRetriesLeft > 0; attempt++) {
|
|
85
143
|
defaultRetriesLeft--;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
// Call handler directly in-process, bypassing HTTP
|
|
96
|
-
const req = new Request('http://localhost/.well-known/workflow/v1/' + pathname, {
|
|
97
|
-
method: 'POST',
|
|
98
|
-
headers,
|
|
99
|
-
body,
|
|
100
|
-
});
|
|
101
|
-
response = await directHandler(req);
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
const baseUrl = await resolveBaseUrl(config);
|
|
105
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- undici v7 dispatcher types don't match @types/node's RequestInit
|
|
106
|
-
response = await fetch(`${baseUrl}/.well-known/workflow/v1/${pathname}`, {
|
|
107
|
-
method: 'POST',
|
|
108
|
-
duplex: 'half',
|
|
109
|
-
dispatcher: httpAgent,
|
|
110
|
-
headers,
|
|
111
|
-
body,
|
|
112
|
-
});
|
|
144
|
+
const result = await executor.executeMessage({
|
|
145
|
+
queueName,
|
|
146
|
+
messageId,
|
|
147
|
+
attempt: attempt + 1,
|
|
148
|
+
body,
|
|
149
|
+
headers: opts?.headers,
|
|
150
|
+
});
|
|
151
|
+
if (result.type === 'completed') {
|
|
152
|
+
return;
|
|
113
153
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
// persistent state and returns another timeoutSeconds if needed.
|
|
122
|
-
if (timeoutSeconds > 0) {
|
|
123
|
-
const timeoutMs = Math.min(timeoutSeconds * 1000, MAX_SAFE_TIMEOUT_MS);
|
|
124
|
-
await setTimeout(timeoutMs);
|
|
125
|
-
}
|
|
126
|
-
defaultRetriesLeft++;
|
|
127
|
-
continue;
|
|
128
|
-
}
|
|
154
|
+
if (result.type === 'reschedule') {
|
|
155
|
+
// Clamp to MAX_SAFE_TIMEOUT_MS to avoid Node.js setTimeout overflow warning.
|
|
156
|
+
// When this fires early, the handler recalculates remaining time from
|
|
157
|
+
// persistent state and returns another timeoutSeconds if needed.
|
|
158
|
+
if (result.timeoutSeconds > 0) {
|
|
159
|
+
const timeoutMs = Math.min(result.timeoutSeconds * 1000, MAX_SAFE_TIMEOUT_MS);
|
|
160
|
+
await setTimeout(timeoutMs);
|
|
129
161
|
}
|
|
130
|
-
|
|
131
|
-
|
|
162
|
+
defaultRetriesLeft++;
|
|
163
|
+
continue;
|
|
132
164
|
}
|
|
133
165
|
console.error(`[local world] Failed to queue message`, {
|
|
134
166
|
queueName,
|
|
135
|
-
text,
|
|
136
|
-
status:
|
|
137
|
-
headers:
|
|
167
|
+
text: result.text,
|
|
168
|
+
status: result.status,
|
|
169
|
+
headers: result.headers,
|
|
138
170
|
body: body.toString(),
|
|
139
171
|
});
|
|
140
172
|
}
|
|
@@ -205,11 +237,9 @@ export function createQueue(config) {
|
|
|
205
237
|
queue,
|
|
206
238
|
createQueueHandler,
|
|
207
239
|
getDeploymentId,
|
|
208
|
-
registerHandler
|
|
209
|
-
directHandlers.set(prefix, handler);
|
|
210
|
-
},
|
|
240
|
+
registerHandler: executor.registerHandler,
|
|
211
241
|
async close() {
|
|
212
|
-
await
|
|
242
|
+
await executor.close();
|
|
213
243
|
},
|
|
214
244
|
};
|
|
215
245
|
}
|
package/dist/queue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAc,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,mFAAmF;AACnF,+FAA+F;AAC/F,MAAM,0BAA0B,GAC9B,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mCAAmC,IAAI,GAAG,EAAE,EAAE,CAAC;IACpE,QAAQ,CAAC;AAEX,oFAAoF;AACpF,4FAA4F;AAC5F,mFAAmF;AACnF,gEAAgE;AAChE,MAAM,mBAAmB,GAAG,UAAU,CAAC;AAEvC,mEAAmE;AACnE,oEAAoE;AACpE,MAAM,yBAAyB,GAAG,IAAI,CAAC;AACvC,MAAM,gCAAgC,GACpC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,GAAG,EAAE,EAAE,CAAC;IACjE,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@workflow/world-local",
|
|
3
|
-
"version": "4.1.0-beta.
|
|
3
|
+
"version": "4.1.0-beta.42",
|
|
4
4
|
"description": "Local development World implementation for Workflow DevKit",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"zod": "4.3.6",
|
|
31
31
|
"@workflow/errors": "4.1.0-beta.18",
|
|
32
32
|
"@workflow/utils": "4.1.0-beta.13",
|
|
33
|
-
"@workflow/world": "4.1.0-beta.
|
|
33
|
+
"@workflow/world": "4.1.0-beta.12"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@opentelemetry/api": "1.9.0",
|