comfyui-node 1.6.1 → 1.6.2

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 (88) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/call-wrapper.js +856 -856
  3. package/dist/index.d.ts +13 -13
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +7 -7
  6. package/dist/index.js.map +1 -1
  7. package/dist/multipool/client-registry.d.ts +32 -11
  8. package/dist/multipool/client-registry.d.ts.map +1 -1
  9. package/dist/multipool/client-registry.js +152 -25
  10. package/dist/multipool/client-registry.js.map +1 -1
  11. package/dist/multipool/helpers.d.ts +5 -0
  12. package/dist/multipool/helpers.d.ts.map +1 -0
  13. package/dist/multipool/helpers.js +53 -0
  14. package/dist/multipool/helpers.js.map +1 -0
  15. package/dist/multipool/index.d.ts +2 -1
  16. package/dist/multipool/index.d.ts.map +1 -1
  17. package/dist/multipool/index.js +2 -1
  18. package/dist/multipool/index.js.map +1 -1
  19. package/dist/multipool/interfaces.d.ts +12 -4
  20. package/dist/multipool/interfaces.d.ts.map +1 -1
  21. package/dist/multipool/interfaces.js +1 -1
  22. package/dist/multipool/job-profiler.d.ts +128 -0
  23. package/dist/multipool/job-profiler.d.ts.map +1 -0
  24. package/dist/multipool/job-profiler.js +222 -0
  25. package/dist/multipool/job-profiler.js.map +1 -0
  26. package/dist/multipool/job-queue-processor.d.ts +27 -11
  27. package/dist/multipool/job-queue-processor.d.ts.map +1 -1
  28. package/dist/multipool/job-queue-processor.js +196 -9
  29. package/dist/multipool/job-queue-processor.js.map +1 -1
  30. package/dist/multipool/job-state-registry.d.ts +67 -0
  31. package/dist/multipool/job-state-registry.d.ts.map +1 -0
  32. package/dist/multipool/job-state-registry.js +283 -0
  33. package/dist/multipool/job-state-registry.js.map +1 -0
  34. package/dist/multipool/logger.d.ts +30 -0
  35. package/dist/multipool/logger.d.ts.map +1 -0
  36. package/dist/multipool/logger.js +75 -0
  37. package/dist/multipool/logger.js.map +1 -0
  38. package/dist/multipool/multi-workflow-pool.d.ts +42 -23
  39. package/dist/multipool/multi-workflow-pool.d.ts.map +1 -1
  40. package/dist/multipool/multi-workflow-pool.js +313 -72
  41. package/dist/multipool/multi-workflow-pool.js.map +1 -1
  42. package/dist/multipool/pool-event-manager.d.ts +10 -10
  43. package/dist/multipool/pool-event-manager.js +27 -27
  44. package/dist/multipool/tests/error-classification-tests.d.ts +2 -0
  45. package/dist/multipool/tests/error-classification-tests.d.ts.map +1 -0
  46. package/dist/multipool/tests/error-classification-tests.js +374 -0
  47. package/dist/multipool/tests/error-classification-tests.js.map +1 -0
  48. package/dist/multipool/tests/job-state-registry.d.ts +16 -16
  49. package/dist/multipool/tests/job-state-registry.js +23 -23
  50. package/dist/multipool/tests/multipool-basic.d.ts +11 -1
  51. package/dist/multipool/tests/multipool-basic.d.ts.map +1 -1
  52. package/dist/multipool/tests/multipool-basic.js +141 -3
  53. package/dist/multipool/tests/multipool-basic.js.map +1 -1
  54. package/dist/multipool/tests/profiling-demo.d.ts +7 -0
  55. package/dist/multipool/tests/profiling-demo.d.ts.map +1 -0
  56. package/dist/multipool/tests/profiling-demo.js +88 -0
  57. package/dist/multipool/tests/profiling-demo.js.map +1 -0
  58. package/dist/multipool/tests/prompt-generator.d.ts +10 -0
  59. package/dist/multipool/tests/prompt-generator.d.ts.map +1 -0
  60. package/dist/multipool/tests/prompt-generator.js +26 -0
  61. package/dist/multipool/tests/prompt-generator.js.map +1 -0
  62. package/dist/multipool/tests/test-helpers.d.ts +4 -0
  63. package/dist/multipool/tests/test-helpers.d.ts.map +1 -0
  64. package/dist/multipool/tests/test-helpers.js +10 -0
  65. package/dist/multipool/tests/test-helpers.js.map +1 -0
  66. package/dist/multipool/tests/two-stage-edit-simulation.d.ts +32 -0
  67. package/dist/multipool/tests/two-stage-edit-simulation.d.ts.map +1 -0
  68. package/dist/multipool/tests/two-stage-edit-simulation.js +299 -0
  69. package/dist/multipool/tests/two-stage-edit-simulation.js.map +1 -0
  70. package/dist/multipool/workflow.d.ts +178 -173
  71. package/dist/multipool/workflow.d.ts.map +1 -1
  72. package/dist/multipool/workflow.js +333 -271
  73. package/dist/multipool/workflow.js.map +1 -1
  74. package/dist/pool/SmartPool.d.ts +143 -143
  75. package/dist/pool/SmartPool.js +676 -676
  76. package/dist/pool/SmartPoolV2.d.ts +119 -119
  77. package/dist/pool/SmartPoolV2.js +586 -586
  78. package/dist/pool/WorkflowPool.d.ts +202 -202
  79. package/dist/pool/WorkflowPool.d.ts.map +1 -1
  80. package/dist/pool/WorkflowPool.js +845 -840
  81. package/dist/pool/WorkflowPool.js.map +1 -1
  82. package/dist/pool/client/ClientManager.d.ts +86 -86
  83. package/dist/pool/client/ClientManager.js +215 -215
  84. package/dist/pool/index.d.ts +9 -11
  85. package/dist/pool/index.d.ts.map +1 -1
  86. package/dist/pool/index.js +3 -5
  87. package/dist/pool/index.js.map +1 -1
  88. package/package.json +1 -1
@@ -1,73 +1,314 @@
1
- import { ClientRegistry } from "src/multipool/client-registry.js";
2
- import { PoolEventManager } from "src/multipool/pool-event-manager.js";
3
- import { JobStateRegistry } from "src/multipool/tests/job-state-registry.js";
4
- import { JobQueueProcessor } from "src/multipool/job-queue-processor.js";
5
- /**
6
- * MultiWorkflowPool class to manage heterogeneous clusters of ComfyUI workers with different workflow capabilities.
7
- * Using a fully event driven architecture to handle client connections, job submissions, and failover strategies.
8
- * Zero polling is used; all operations are event driven. Maximizes responsiveness and scalability.
9
- */
10
- export class MultiWorkflowPool {
11
- // Event manager for handling pool events
12
- events;
13
- // Registry for managing clients in the pool
14
- clientRegistry;
15
- // Registry for managing job state
16
- jobRegistry;
17
- // Multi queue map, one per workflow based on the workflow hash
18
- queues = new Map();
19
- constructor() {
20
- this.events = new PoolEventManager(this);
21
- this.clientRegistry = new ClientRegistry(this);
22
- this.jobRegistry = new JobStateRegistry(this);
23
- }
24
- // PUBLIC API
25
- async init() {
26
- }
27
- async shutdown() {
28
- }
29
- addClient(clientUrl) {
30
- this.clientRegistry.addClient(clientUrl);
31
- }
32
- removeClient(clientUrl) {
33
- this.clientRegistry.removeClient(clientUrl);
34
- }
35
- async submitJob(workflow) {
36
- let workflowHash = workflow.structureHash;
37
- if (!workflowHash) {
38
- workflow.updateHash();
39
- workflowHash = workflow.structureHash;
40
- }
41
- const queue = this.assertQueue(workflowHash);
42
- if (!queue) {
43
- throw new Error("Failed to create or retrieve job queue for workflow.");
44
- }
45
- const newJobId = this.jobRegistry.addJob(workflow);
46
- queue.enqueueJob(newJobId, workflow);
47
- return newJobId;
48
- }
49
- getJobStatus(jobId) {
50
- return this.jobRegistry.getJobStatus(jobId);
51
- }
52
- async cancelJob(jobId) {
53
- this.jobRegistry.cancelJob(jobId);
54
- }
55
- attachEventHook(event, listener) {
56
- if (event && listener) {
57
- this.events.attachHook(event, listener);
58
- }
59
- }
60
- // PRIVATE METHODS
61
- assertQueue(workflowHash) {
62
- if (!workflowHash) {
63
- return null;
64
- }
65
- let queue = this.queues.get(workflowHash);
66
- if (!queue) {
67
- queue = new JobQueueProcessor(this);
68
- this.queues.set(workflowHash, queue);
69
- }
70
- return queue;
71
- }
72
- }
1
+ import { ClientRegistry } from "./client-registry.js";
2
+ import { PoolEventManager } from "./pool-event-manager.js";
3
+ import { JobStateRegistry } from "./job-state-registry.js";
4
+ import { JobQueueProcessor } from "./job-queue-processor.js";
5
+ import { createLogger } from "./logger.js";
6
+ /**
7
+ * MultiWorkflowPool class to manage heterogeneous clusters of ComfyUI workers with different workflow capabilities.
8
+ * Using a fully event driven architecture to handle client connections, job submissions, and failover strategies.
9
+ * Zero polling is used; all operations are event driven. Maximizes responsiveness and scalability.
10
+ */
11
+ export class MultiWorkflowPool {
12
+ // Event manager for handling pool events
13
+ events;
14
+ // Registry for managing clients in the pool
15
+ clientRegistry;
16
+ // Registry for managing job state
17
+ jobRegistry;
18
+ // Multi queue map, one per workflow based on the workflow hash
19
+ queues = new Map();
20
+ // Pool configuration
21
+ options;
22
+ // Logger instance
23
+ logger;
24
+ monitoringInterval;
25
+ constructor(options) {
26
+ this.options = {
27
+ connectionTimeoutMs: options?.connectionTimeoutMs ?? 10000,
28
+ enableMonitoring: options?.enableMonitoring ?? false,
29
+ monitoringIntervalMs: options?.monitoringIntervalMs ?? 60000,
30
+ logLevel: options?.logLevel ?? "warn",
31
+ enableProfiling: options?.enableProfiling ?? false
32
+ };
33
+ this.logger = createLogger("MultiWorkflowPool", this.options.logLevel);
34
+ this.events = new PoolEventManager(this);
35
+ this.clientRegistry = new ClientRegistry(this, this.logger);
36
+ this.jobRegistry = new JobStateRegistry(this, this.clientRegistry);
37
+ // Create general queue for workflows without specific hashes
38
+ this.queues.set("general", new JobQueueProcessor(this.jobRegistry, this.clientRegistry, "general", this.logger));
39
+ // Monitoring
40
+ if (this.options.enableMonitoring) {
41
+ this.monitoringInterval = setInterval(() => {
42
+ this.printStatusSummary();
43
+ }, this.options.monitoringIntervalMs);
44
+ }
45
+ }
46
+ // PUBLIC API
47
+ async init() {
48
+ if (this.clientRegistry.clients.size === 0) {
49
+ throw new Error("No clients registered in the pool. Please add clients before initializing the pool.");
50
+ }
51
+ const connectionPromises = [];
52
+ for (const client of this.clientRegistry.clients.values()) {
53
+ connectionPromises.push(new Promise(async (resolve, reject) => {
54
+ let timeout = setTimeout(() => {
55
+ client.api.abortReconnect();
56
+ reject(new Error(`Connection to client ${client.url} timed out`));
57
+ }, this.options.connectionTimeoutMs);
58
+ try {
59
+ const readyApi = await client.api.init(1);
60
+ clearTimeout(timeout);
61
+ timeout = null;
62
+ this.logger.info(`Connected to ${client.url}`);
63
+ client.api = readyApi;
64
+ this.attachHandlersToClient(client);
65
+ const queueStatus = await client.api.getQueue();
66
+ if (queueStatus.queue_running.length === 0 && queueStatus.queue_pending.length === 0) {
67
+ this.logger.debug(`Client ${client.url} is idle.`);
68
+ client.state = "idle";
69
+ }
70
+ else {
71
+ client.state = "busy";
72
+ }
73
+ resolve();
74
+ }
75
+ catch (e) {
76
+ client.state = "offline";
77
+ reject(e);
78
+ }
79
+ finally {
80
+ if (timeout) {
81
+ clearTimeout(timeout);
82
+ }
83
+ }
84
+ }));
85
+ }
86
+ const promiseResults = await Promise.allSettled(connectionPromises);
87
+ const failedConnections = promiseResults.filter(result => result.status === "rejected");
88
+ if (failedConnections.length > 0) {
89
+ this.logger.warn(`Warning: ${failedConnections.length} client(s) failed to connect.`);
90
+ failedConnections.forEach((result) => {
91
+ if (result.status === "rejected") {
92
+ this.logger.error("Connection failed:", result.reason);
93
+ }
94
+ });
95
+ }
96
+ // Throw error if all connections failed
97
+ if (failedConnections.length === this.clientRegistry.clients.size) {
98
+ throw new Error("All clients failed to connect. Pool initialization failed.");
99
+ }
100
+ this.logger.info(`Initialization complete. ${this.clientRegistry.clients.size - failedConnections.length} client(s) connected successfully.`);
101
+ }
102
+ async shutdown() {
103
+ this.logger.info("Shutting down MultiWorkflowPool...");
104
+ if (this.monitoringInterval) {
105
+ clearInterval(this.monitoringInterval);
106
+ }
107
+ // Disconnect all clients
108
+ const disconnectPromises = [];
109
+ for (const client of this.clientRegistry.clients.values()) {
110
+ disconnectPromises.push(new Promise(async (resolve) => {
111
+ try {
112
+ client.api.destroy();
113
+ this.logger.debug(`Disconnected from client ${client.url}`);
114
+ }
115
+ catch (e) {
116
+ this.logger.error(`Error disconnecting from client ${client.url}:`, e);
117
+ }
118
+ finally {
119
+ resolve();
120
+ }
121
+ }));
122
+ }
123
+ await Promise.allSettled(disconnectPromises);
124
+ }
125
+ addClient(clientUrl, options) {
126
+ this.clientRegistry.addClient(clientUrl, options);
127
+ }
128
+ removeClient(clientUrl) {
129
+ this.clientRegistry.removeClient(clientUrl);
130
+ }
131
+ async submitJob(workflow) {
132
+ let workflowHash = workflow.structureHash;
133
+ if (!workflowHash) {
134
+ workflow.updateHash();
135
+ workflowHash = workflow.structureHash;
136
+ }
137
+ // check if there are clients with affinity for this workflow
138
+ let queue;
139
+ if (workflowHash && this.clientRegistry.hasClientsForWorkflow(workflowHash)) {
140
+ queue = this.assertQueue(workflowHash);
141
+ }
142
+ else {
143
+ queue = this.queues.get("general");
144
+ this.logger.debug(`No clients with affinity for workflow hash ${workflowHash}, using general queue.`);
145
+ }
146
+ if (!queue) {
147
+ throw new Error("Failed to create or retrieve job queue for workflow.");
148
+ }
149
+ const newJobId = this.jobRegistry.addJob(workflow);
150
+ await queue.enqueueJob(newJobId, workflow);
151
+ return newJobId;
152
+ }
153
+ getJobStatus(jobId) {
154
+ return this.jobRegistry.getJobStatus(jobId);
155
+ }
156
+ async cancelJob(jobId) {
157
+ return this.jobRegistry.cancelJob(jobId);
158
+ }
159
+ attachEventHook(event, listener) {
160
+ if (event && listener) {
161
+ this.events.attachHook(event, listener);
162
+ }
163
+ }
164
+ // PRIVATE METHODS
165
+ assertQueue(workflowHash) {
166
+ if (!workflowHash) {
167
+ return null;
168
+ }
169
+ let queue = this.queues.get(workflowHash);
170
+ if (!queue) {
171
+ queue = new JobQueueProcessor(this.jobRegistry, this.clientRegistry, workflowHash, this.logger);
172
+ this.queues.set(workflowHash, queue);
173
+ }
174
+ return queue;
175
+ }
176
+ attachHandlersToClient(client) {
177
+ // client.api.on("all", event => {
178
+ // console.log(client.nodeName, event.detail.type, event.detail.data);
179
+ // });
180
+ client.api.on("status", event => {
181
+ this.logger.client(client.nodeName, event.type, `Queue Remaining: ${event.detail.status.exec_info.queue_remaining}`);
182
+ // Update client state based on status
183
+ if (event.detail.status.exec_info.queue_remaining === 0) {
184
+ client.state = "idle";
185
+ // Trigger queue processing
186
+ client.workflowAffinity?.forEach(value => {
187
+ this.logger.debug(`Triggering queue processing for workflow hash ${value} due to client ${client.nodeName} becoming idle.`);
188
+ const queue = this.queues.get(value);
189
+ if (queue) {
190
+ queue.processQueue().catch(reason => {
191
+ this.logger.error(`Error processing job queue for workflow hash ${value}:`, reason);
192
+ });
193
+ }
194
+ });
195
+ }
196
+ else {
197
+ client.state = "busy";
198
+ }
199
+ });
200
+ client.api.on("b_preview_meta", event => {
201
+ const prompt_id = event.detail.metadata.prompt_id;
202
+ if (prompt_id) {
203
+ this.jobRegistry.updateJobPreviewMetadata(prompt_id, event.detail.metadata, event.detail.blob);
204
+ this.logger.debug(`[${event.type}@${client.nodeName}] Preview metadata for prompt ID: ${prompt_id} | blob size: ${event.detail.blob.size} (${event.detail.metadata.image_type})`);
205
+ }
206
+ else {
207
+ this.logger.warn(`[${event.type}@${client.nodeName}] Preview metadata received without prompt ID.`);
208
+ }
209
+ });
210
+ // Handle finished nodes, extract image for prompt_id
211
+ client.api.on("executed", event => {
212
+ const prompt_id = event.detail.prompt_id;
213
+ if (prompt_id) {
214
+ const output = event.detail.output;
215
+ if (output && output.images) {
216
+ this.jobRegistry.addJobImages(prompt_id, output.images);
217
+ }
218
+ this.logger.debug(`[${event.type}@${client.nodeName}] Node executed for prompt ID: ${prompt_id}`, event.detail.output);
219
+ }
220
+ else {
221
+ this.logger.warn(`[${event.type}@${client.nodeName}] Executed event received without prompt ID.`);
222
+ }
223
+ });
224
+ client.api.on("progress", event => {
225
+ const prompt_id = event.detail.prompt_id;
226
+ if (prompt_id) {
227
+ const nodeId = event.detail.node;
228
+ this.jobRegistry.updateJobProgress(prompt_id, event.detail.value, event.detail.max, nodeId !== null ? nodeId : undefined);
229
+ this.logger.debug(`[${event.type}@${client.nodeName}] Progress for prompt ID: ${prompt_id} | ${Math.round(event.detail.value / event.detail.max * 100)}%`);
230
+ }
231
+ else {
232
+ this.logger.warn(`[${event.type}@${client.nodeName}] Progress event received without prompt ID.`);
233
+ }
234
+ });
235
+ // Track node execution for profiling
236
+ client.api.on("executing", event => {
237
+ const prompt_id = event.detail.prompt_id;
238
+ const nodeId = event.detail.node;
239
+ if (prompt_id) {
240
+ if (nodeId === null) {
241
+ // Execution completed (node: null event)
242
+ this.logger.debug(`[${event.type}@${client.nodeName}] Execution complete for prompt ID: ${prompt_id}`);
243
+ }
244
+ else {
245
+ // Node started executing
246
+ this.jobRegistry.onNodeExecuting(prompt_id, String(nodeId));
247
+ this.logger.debug(`[${event.type}@${client.nodeName}] Node ${nodeId} executing for prompt ID: ${prompt_id}`);
248
+ }
249
+ }
250
+ });
251
+ // Track cached nodes for profiling
252
+ client.api.on("execution_cached", event => {
253
+ const prompt_id = event.detail.prompt_id;
254
+ const nodeIds = event.detail.nodes;
255
+ if (prompt_id && nodeIds && Array.isArray(nodeIds)) {
256
+ this.jobRegistry.onCachedNodes(prompt_id, nodeIds.map(String));
257
+ this.logger.debug(`[${event.type}@${client.nodeName}] ${nodeIds.length} nodes cached for prompt ID: ${prompt_id}`);
258
+ }
259
+ });
260
+ client.api.on("execution_success", event => {
261
+ const prompt_id = event.detail.prompt_id;
262
+ if (prompt_id) {
263
+ this.logger.client(client.nodeName, event.type, `Execution success for prompt ID: ${prompt_id}`);
264
+ // Mark client as idle first
265
+ client.state = "idle";
266
+ // Mark job as completed, it will trigger queue processing
267
+ this.jobRegistry.completeJob(prompt_id);
268
+ }
269
+ });
270
+ }
271
+ printStatusSummary() {
272
+ console.log("\n" + "=".repeat(80));
273
+ console.log("MULTI-WORKFLOW POOL STATUS SUMMARY");
274
+ console.log("=".repeat(80));
275
+ // Print client states using console.table
276
+ if (this.clientRegistry.clients.size > 0) {
277
+ console.log("\nšŸ“‹ CLIENT STATES:");
278
+ const clientData = Array.from(this.clientRegistry.clients.values()).map(client => ({
279
+ "URL": client.url,
280
+ "Node Name": client.nodeName,
281
+ "State": client.state,
282
+ "Priority": client.priority !== undefined ? client.priority : "N/A"
283
+ }));
284
+ console.table(clientData);
285
+ }
286
+ else {
287
+ console.log("\nšŸ“‹ CLIENT STATES: No clients registered");
288
+ }
289
+ // Print queue states using console.table
290
+ if (this.queues.size > 0) {
291
+ console.log("\nšŸ“¬ QUEUE STATES:");
292
+ const queueData = Array.from(this.queues.entries()).map(([workflowHash, queue]) => ({
293
+ "Workflow Hash": workflowHash.length > 50 ? workflowHash.substring(0, 47) + "..." : workflowHash,
294
+ "Jobs Pending": queue.queue.length,
295
+ "Type": workflowHash === "general" ? "General" : "Specific"
296
+ }));
297
+ console.table(queueData);
298
+ }
299
+ else {
300
+ console.log("\nšŸ“¬ QUEUE STATES: No queues found");
301
+ }
302
+ console.log("");
303
+ }
304
+ async waitForJobCompletion(jobId) {
305
+ return await this.jobRegistry.waitForResults(jobId);
306
+ }
307
+ attachJobProgressListener(jobId, progressListener) {
308
+ this.jobRegistry.attachJobProgressListener(jobId, progressListener);
309
+ }
310
+ attachJobPreviewListener(jobId, previewListener) {
311
+ this.jobRegistry.attachJobPreviewListener(jobId, previewListener);
312
+ }
313
+ }
73
314
  //# sourceMappingURL=multi-workflow-pool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"multi-workflow-pool.js","sourceRoot":"","sources":["../../src/multipool/multi-workflow-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAIzE;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IAE5B,yCAAyC;IACjC,MAAM,CAAmB;IAEjC,4CAA4C;IACpC,cAAc,CAAiB;IAEvC,kCAAkC;IAC1B,WAAW,CAAmB;IAEtC,+DAA+D;IACvD,MAAM,GAAmC,IAAI,GAAG,EAAE,CAAC;IAE3D;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,aAAa;IACb,KAAK,CAAC,IAAI;IACV,CAAC;IAED,KAAK,CAAC,QAAQ;IACd,CAAC;IAED,SAAS,CAAC,SAAiB;QACzB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,YAAY,CAAC,SAAiB;QAC5B,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAkB;QAChC,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC;QAC1C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,QAAQ,CAAC,UAAU,EAAE,CAAC;YACtB,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC;QACxC,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnD,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACrC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,YAAY,CAAC,KAAa;QACxB,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAa;QAC3B,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,eAAe,CAAC,KAAa,EAAE,QAAgC;QAC7D,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,kBAAkB;IACV,WAAW,CAAC,YAAgC;QAClD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"multi-workflow-pool.js","sourceRoot":"","sources":["../../src/multipool/multi-workflow-pool.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- import { MultiWorkflowPool } from "src/multipool/multi-workflow-pool.js";
2
- import { PoolEvent } from "src/multipool/interfaces.js";
3
- export declare class PoolEventManager {
4
- pool: MultiWorkflowPool;
5
- hooks: Map<string, Array<Function>>;
6
- constructor(pool: MultiWorkflowPool);
7
- attachHook(event: string, listener: (e: PoolEvent) => void): void;
8
- emitEvent(event: PoolEvent): void;
9
- detachHook(event: string, listener: (e: PoolEvent) => void): void;
10
- }
1
+ import { MultiWorkflowPool } from "src/multipool/multi-workflow-pool.js";
2
+ import { PoolEvent } from "src/multipool/interfaces.js";
3
+ export declare class PoolEventManager {
4
+ pool: MultiWorkflowPool;
5
+ hooks: Map<string, Array<Function>>;
6
+ constructor(pool: MultiWorkflowPool);
7
+ attachHook(event: string, listener: (e: PoolEvent) => void): void;
8
+ emitEvent(event: PoolEvent): void;
9
+ detachHook(event: string, listener: (e: PoolEvent) => void): void;
10
+ }
11
11
  //# sourceMappingURL=pool-event-manager.d.ts.map
@@ -1,28 +1,28 @@
1
- export class PoolEventManager {
2
- pool;
3
- hooks = new Map();
4
- constructor(pool) {
5
- this.pool = pool;
6
- }
7
- attachHook(event, listener) {
8
- if (!this.hooks.has(event)) {
9
- this.hooks.set(event, []);
10
- }
11
- this.hooks.get(event).push(listener);
12
- }
13
- emitEvent(event) {
14
- const listeners = this.hooks.get(event.type);
15
- if (listeners) {
16
- for (const listener of listeners) {
17
- listener(event);
18
- }
19
- }
20
- }
21
- detachHook(event, listener) {
22
- const listeners = this.hooks.get(event);
23
- if (listeners) {
24
- this.hooks.set(event, listeners.filter(l => l !== listener));
25
- }
26
- }
27
- }
1
+ export class PoolEventManager {
2
+ pool;
3
+ hooks = new Map();
4
+ constructor(pool) {
5
+ this.pool = pool;
6
+ }
7
+ attachHook(event, listener) {
8
+ if (!this.hooks.has(event)) {
9
+ this.hooks.set(event, []);
10
+ }
11
+ this.hooks.get(event).push(listener);
12
+ }
13
+ emitEvent(event) {
14
+ const listeners = this.hooks.get(event.type);
15
+ if (listeners) {
16
+ for (const listener of listeners) {
17
+ listener(event);
18
+ }
19
+ }
20
+ }
21
+ detachHook(event, listener) {
22
+ const listeners = this.hooks.get(event);
23
+ if (listeners) {
24
+ this.hooks.set(event, listeners.filter(l => l !== listener));
25
+ }
26
+ }
27
+ }
28
28
  //# sourceMappingURL=pool-event-manager.js.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=error-classification-tests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-classification-tests.d.ts","sourceRoot":"","sources":["../../../src/multipool/tests/error-classification-tests.ts"],"names":[],"mappings":""}