@workflow/world-local 4.1.0-beta.40 → 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 +97 -65
- 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,59 +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
|
-
if (directHandler) {
|
|
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
|
-
});
|
|
113
|
-
}
|
|
114
|
-
if (response.ok) {
|
|
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') {
|
|
115
152
|
return;
|
|
116
153
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
// persistent state and returns another timeoutSeconds if needed.
|
|
124
|
-
const timeoutMs = Math.min(timeoutSeconds * 1000, MAX_SAFE_TIMEOUT_MS);
|
|
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);
|
|
125
160
|
await setTimeout(timeoutMs);
|
|
126
|
-
defaultRetriesLeft++;
|
|
127
|
-
continue;
|
|
128
161
|
}
|
|
129
|
-
|
|
162
|
+
defaultRetriesLeft++;
|
|
163
|
+
continue;
|
|
130
164
|
}
|
|
131
165
|
console.error(`[local world] Failed to queue message`, {
|
|
132
166
|
queueName,
|
|
133
|
-
text,
|
|
134
|
-
status:
|
|
135
|
-
headers:
|
|
167
|
+
text: result.text,
|
|
168
|
+
status: result.status,
|
|
169
|
+
headers: result.headers,
|
|
136
170
|
body: body.toString(),
|
|
137
171
|
});
|
|
138
172
|
}
|
|
@@ -186,7 +220,7 @@ export function createQueue(config) {
|
|
|
186
220
|
timeoutSeconds = Math.min(result.timeoutSeconds, LOCAL_QUEUE_MAX_VISIBILITY);
|
|
187
221
|
}
|
|
188
222
|
if (timeoutSeconds != null) {
|
|
189
|
-
return Response.json({ timeoutSeconds }
|
|
223
|
+
return Response.json({ timeoutSeconds });
|
|
190
224
|
}
|
|
191
225
|
return Response.json({ ok: true });
|
|
192
226
|
}
|
|
@@ -203,11 +237,9 @@ export function createQueue(config) {
|
|
|
203
237
|
queue,
|
|
204
238
|
createQueueHandler,
|
|
205
239
|
getDeploymentId,
|
|
206
|
-
registerHandler
|
|
207
|
-
directHandlers.set(prefix, handler);
|
|
208
|
-
},
|
|
240
|
+
registerHandler: executor.registerHandler,
|
|
209
241
|
async close() {
|
|
210
|
-
await
|
|
242
|
+
await executor.close();
|
|
211
243
|
},
|
|
212
244
|
};
|
|
213
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",
|