comfyui-node 1.0.0

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 (128) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +601 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/call-wrapper.d.ts +115 -0
  5. package/dist/call-wrapper.d.ts.map +1 -0
  6. package/dist/call-wrapper.js +432 -0
  7. package/dist/call-wrapper.js.map +1 -0
  8. package/dist/client.d.ts +233 -0
  9. package/dist/client.d.ts.map +1 -0
  10. package/dist/client.js +719 -0
  11. package/dist/client.js.map +1 -0
  12. package/dist/constants.d.ts +4 -0
  13. package/dist/constants.d.ts.map +1 -0
  14. package/dist/constants.js +4 -0
  15. package/dist/constants.js.map +1 -0
  16. package/dist/features/abstract.d.ts +15 -0
  17. package/dist/features/abstract.d.ts.map +1 -0
  18. package/dist/features/abstract.js +19 -0
  19. package/dist/features/abstract.js.map +1 -0
  20. package/dist/features/base.d.ts +9 -0
  21. package/dist/features/base.d.ts.map +1 -0
  22. package/dist/features/base.js +15 -0
  23. package/dist/features/base.js.map +1 -0
  24. package/dist/features/feature-flags.d.ts +14 -0
  25. package/dist/features/feature-flags.d.ts.map +1 -0
  26. package/dist/features/feature-flags.js +27 -0
  27. package/dist/features/feature-flags.js.map +1 -0
  28. package/dist/features/file.d.ts +86 -0
  29. package/dist/features/file.d.ts.map +1 -0
  30. package/dist/features/file.js +160 -0
  31. package/dist/features/file.js.map +1 -0
  32. package/dist/features/history.d.ts +16 -0
  33. package/dist/features/history.d.ts.map +1 -0
  34. package/dist/features/history.js +23 -0
  35. package/dist/features/history.js.map +1 -0
  36. package/dist/features/index.d.ts +14 -0
  37. package/dist/features/index.d.ts.map +1 -0
  38. package/dist/features/index.js +14 -0
  39. package/dist/features/index.js.map +1 -0
  40. package/dist/features/manager.d.ts +154 -0
  41. package/dist/features/manager.d.ts.map +1 -0
  42. package/dist/features/manager.js +309 -0
  43. package/dist/features/manager.js.map +1 -0
  44. package/dist/features/misc.d.ts +17 -0
  45. package/dist/features/misc.d.ts.map +1 -0
  46. package/dist/features/misc.js +52 -0
  47. package/dist/features/misc.js.map +1 -0
  48. package/dist/features/model.d.ts +39 -0
  49. package/dist/features/model.d.ts.map +1 -0
  50. package/dist/features/model.js +79 -0
  51. package/dist/features/model.js.map +1 -0
  52. package/dist/features/monitoring.d.ts +90 -0
  53. package/dist/features/monitoring.d.ts.map +1 -0
  54. package/dist/features/monitoring.js +129 -0
  55. package/dist/features/monitoring.js.map +1 -0
  56. package/dist/features/node.d.ts +42 -0
  57. package/dist/features/node.d.ts.map +1 -0
  58. package/dist/features/node.js +68 -0
  59. package/dist/features/node.js.map +1 -0
  60. package/dist/features/queue.d.ts +23 -0
  61. package/dist/features/queue.d.ts.map +1 -0
  62. package/dist/features/queue.js +68 -0
  63. package/dist/features/queue.js.map +1 -0
  64. package/dist/features/system.d.ts +21 -0
  65. package/dist/features/system.d.ts.map +1 -0
  66. package/dist/features/system.js +45 -0
  67. package/dist/features/system.js.map +1 -0
  68. package/dist/features/terminal.d.ts +25 -0
  69. package/dist/features/terminal.d.ts.map +1 -0
  70. package/dist/features/terminal.js +32 -0
  71. package/dist/features/terminal.js.map +1 -0
  72. package/dist/features/user.d.ts +42 -0
  73. package/dist/features/user.d.ts.map +1 -0
  74. package/dist/features/user.js +76 -0
  75. package/dist/features/user.js.map +1 -0
  76. package/dist/index.d.ts +8 -0
  77. package/dist/index.d.ts.map +1 -0
  78. package/dist/index.js +6 -0
  79. package/dist/index.js.map +1 -0
  80. package/dist/pool.d.ts +171 -0
  81. package/dist/pool.d.ts.map +1 -0
  82. package/dist/pool.js +467 -0
  83. package/dist/pool.js.map +1 -0
  84. package/dist/prompt-builder.d.ts +131 -0
  85. package/dist/prompt-builder.d.ts.map +1 -0
  86. package/dist/prompt-builder.js +266 -0
  87. package/dist/prompt-builder.js.map +1 -0
  88. package/dist/tools.d.ts +10 -0
  89. package/dist/tools.d.ts.map +1 -0
  90. package/dist/tools.js +16 -0
  91. package/dist/tools.js.map +1 -0
  92. package/dist/typed-event-target.d.ts +7 -0
  93. package/dist/typed-event-target.d.ts.map +1 -0
  94. package/dist/typed-event-target.js +19 -0
  95. package/dist/typed-event-target.js.map +1 -0
  96. package/dist/types/api.d.ts +212 -0
  97. package/dist/types/api.d.ts.map +1 -0
  98. package/dist/types/api.js +16 -0
  99. package/dist/types/api.js.map +1 -0
  100. package/dist/types/error.d.ts +72 -0
  101. package/dist/types/error.d.ts.map +1 -0
  102. package/dist/types/error.js +75 -0
  103. package/dist/types/error.js.map +1 -0
  104. package/dist/types/event.d.ts +164 -0
  105. package/dist/types/event.d.ts.map +1 -0
  106. package/dist/types/event.js +2 -0
  107. package/dist/types/event.js.map +1 -0
  108. package/dist/types/manager.d.ts +157 -0
  109. package/dist/types/manager.d.ts.map +1 -0
  110. package/dist/types/manager.js +41 -0
  111. package/dist/types/manager.js.map +1 -0
  112. package/dist/types/sampler.d.ts +3 -0
  113. package/dist/types/sampler.d.ts.map +1 -0
  114. package/dist/types/sampler.js +2 -0
  115. package/dist/types/sampler.js.map +1 -0
  116. package/dist/types/tool.d.ts +10 -0
  117. package/dist/types/tool.d.ts.map +1 -0
  118. package/dist/types/tool.js +2 -0
  119. package/dist/types/tool.js.map +1 -0
  120. package/dist/utils/response-error.d.ts +4 -0
  121. package/dist/utils/response-error.d.ts.map +1 -0
  122. package/dist/utils/response-error.js +62 -0
  123. package/dist/utils/response-error.js.map +1 -0
  124. package/dist/utils/ws-reconnect.d.ts +29 -0
  125. package/dist/utils/ws-reconnect.d.ts.map +1 -0
  126. package/dist/utils/ws-reconnect.js +91 -0
  127. package/dist/utils/ws-reconnect.js.map +1 -0
  128. package/package.json +71 -0
@@ -0,0 +1,432 @@
1
+ import { FailedCacheError, WentMissingError, EnqueueFailedError, DisconnectedError, CustomEventError, ExecutionFailedError, ExecutionInterruptedError, MissingNodeError } from "./types/error.js";
2
+ import { buildEnqueueFailedError } from "./utils/response-error.js";
3
+ /**
4
+ * Represents a wrapper class for making API calls using the ComfyApi client.
5
+ * Provides methods for setting callback functions and executing the job.
6
+ */
7
+ export class CallWrapper {
8
+ client;
9
+ prompt;
10
+ started = false;
11
+ promptId;
12
+ output = {};
13
+ onPreviewFn;
14
+ onPendingFn;
15
+ onStartFn;
16
+ onOutputFn;
17
+ onFinishedFn;
18
+ onFailedFn;
19
+ onProgressFn;
20
+ onDisconnectedHandlerOffFn;
21
+ checkExecutingOffFn;
22
+ checkExecutedOffFn;
23
+ progressHandlerOffFn;
24
+ previewHandlerOffFn;
25
+ executionHandlerOffFn;
26
+ errorHandlerOffFn;
27
+ executionEndSuccessOffFn;
28
+ statusHandlerOffFn;
29
+ interruptionHandlerOffFn;
30
+ /**
31
+ * Constructs a new CallWrapper instance.
32
+ * @param client The ComfyApi client.
33
+ * @param workflow The workflow object.
34
+ */
35
+ constructor(client, workflow) {
36
+ this.client = client;
37
+ this.prompt = workflow;
38
+ return this;
39
+ }
40
+ /**
41
+ * Set the callback function to be called when a preview event occurs.
42
+ *
43
+ * @param fn - The callback function to be called. It receives a Blob object representing the event and an optional promptId string.
44
+ * @returns The current instance of the CallWrapper.
45
+ */
46
+ onPreview(fn) {
47
+ this.onPreviewFn = fn;
48
+ return this;
49
+ }
50
+ /**
51
+ * Set a callback function to be executed when the job is queued.
52
+ * @param {Function} fn - The callback function to be executed.
53
+ * @returns The current instance of the CallWrapper.
54
+ */
55
+ onPending(fn) {
56
+ this.onPendingFn = fn;
57
+ return this;
58
+ }
59
+ /**
60
+ * Set the callback function to be executed when the job start.
61
+ *
62
+ * @param fn - The callback function to be executed. It can optionally receive a `promptId` parameter.
63
+ * @returns The current instance of the CallWrapper.
64
+ */
65
+ onStart(fn) {
66
+ this.onStartFn = fn;
67
+ return this;
68
+ }
69
+ /**
70
+ * Sets the callback function to handle the output node when the workflow is executing. This is
71
+ * useful when you want to handle the output of each nodes as they are being processed.
72
+ *
73
+ * All the nodes defined in the `mapOutputKeys` will be passed to this function when node is executed.
74
+ *
75
+ * @param fn - The callback function to handle the output.
76
+ * @returns The current instance of the class.
77
+ */
78
+ onOutput(fn) {
79
+ this.onOutputFn = fn;
80
+ return this;
81
+ }
82
+ /**
83
+ * Set the callback function to be executed when the asynchronous operation is finished.
84
+ *
85
+ * @param fn - The callback function to be executed. It receives the data returned by the operation
86
+ * and an optional promptId parameter.
87
+ * @returns The current instance of the CallWrapper.
88
+ */
89
+ onFinished(fn) {
90
+ this.onFinishedFn = fn;
91
+ return this;
92
+ }
93
+ /**
94
+ * Set the callback function to be executed when the API call fails.
95
+ *
96
+ * @param fn - The callback function to be executed when the API call fails.
97
+ * It receives an `Error` object as the first parameter and an optional `promptId` as the second parameter.
98
+ * @returns The current instance of the CallWrapper.
99
+ */
100
+ onFailed(fn) {
101
+ this.onFailedFn = fn;
102
+ return this;
103
+ }
104
+ /**
105
+ * Set a callback function to be called when progress information is available.
106
+ * @param fn - The callback function to be called with the progress information.
107
+ * @returns The current instance of the CallWrapper.
108
+ */
109
+ onProgress(fn) {
110
+ this.onProgressFn = fn;
111
+ return this;
112
+ }
113
+ /**
114
+ * Run the call wrapper and returns the output of the executed job.
115
+ * If the job is already cached, it returns the cached output.
116
+ * If the job is not cached, it executes the job and returns the output.
117
+ *
118
+ * @returns A promise that resolves to the output of the executed job,
119
+ * or `undefined` if the job is not found,
120
+ * or `false` if the job execution fails.
121
+ */
122
+ async run() {
123
+ /**
124
+ * Start the job execution.
125
+ */
126
+ const job = await this.enqueueJob();
127
+ if (!job) {
128
+ // enqueueJob already invoked onFailed with a rich error instance; just abort.
129
+ return false;
130
+ }
131
+ let promptLoadTrigger;
132
+ const promptLoadCached = new Promise((resolve) => {
133
+ promptLoadTrigger = resolve;
134
+ });
135
+ let jobDoneTrigger;
136
+ const jobDonePromise = new Promise((resolve) => {
137
+ jobDoneTrigger = resolve;
138
+ });
139
+ /**
140
+ * Declare the function to check if the job is executing.
141
+ */
142
+ const checkExecutingFn = (event) => {
143
+ if (event.detail && event.detail.prompt_id === job.prompt_id) {
144
+ promptLoadTrigger(false);
145
+ }
146
+ };
147
+ /**
148
+ * Declare the function to check if the job is cached.
149
+ */
150
+ const checkExecutionCachedFn = (event) => {
151
+ const outputNodes = Object.values(this.prompt.mapOutputKeys).filter((n) => !!n);
152
+ if (event.detail.nodes.length > 0 && event.detail.prompt_id === job.prompt_id) {
153
+ /**
154
+ * Cached is true if all output nodes are included in the cached nodes.
155
+ */
156
+ const cached = outputNodes.every((node) => event.detail.nodes.includes(node));
157
+ promptLoadTrigger(cached);
158
+ }
159
+ };
160
+ /**
161
+ * Listen to the executing event.
162
+ */
163
+ this.checkExecutingOffFn = this.client.on("executing", checkExecutingFn);
164
+ this.checkExecutedOffFn = this.client.on("execution_cached", checkExecutionCachedFn);
165
+ // race condition handling
166
+ let wentMissing = false;
167
+ let cachedOutputDone = false;
168
+ let cachedOutputPromise = Promise.resolve(null);
169
+ const statusHandler = async () => {
170
+ const queue = await this.client.getQueue();
171
+ const queueItems = [...queue.queue_pending, ...queue.queue_running];
172
+ for (const queueItem of queueItems) {
173
+ if (queueItem[1] === job.prompt_id) {
174
+ return;
175
+ }
176
+ }
177
+ await cachedOutputPromise;
178
+ if (cachedOutputDone) {
179
+ return;
180
+ }
181
+ const output = await this.handleCachedOutput(job.prompt_id);
182
+ wentMissing = true;
183
+ if (output) {
184
+ jobDoneTrigger(output);
185
+ this.cleanupListeners();
186
+ return;
187
+ }
188
+ promptLoadTrigger(false);
189
+ jobDoneTrigger(false);
190
+ this.cleanupListeners();
191
+ this.onFailedFn?.(new WentMissingError("The job went missing!"), job.prompt_id);
192
+ };
193
+ this.statusHandlerOffFn = this.client.on("status", statusHandler);
194
+ await promptLoadCached;
195
+ if (wentMissing) {
196
+ return jobDonePromise;
197
+ }
198
+ cachedOutputPromise = this.handleCachedOutput(job.prompt_id);
199
+ const output = await cachedOutputPromise;
200
+ if (output) {
201
+ cachedOutputDone = true;
202
+ this.cleanupListeners();
203
+ jobDoneTrigger(output);
204
+ return output;
205
+ }
206
+ if (output === false) {
207
+ cachedOutputDone = true;
208
+ this.cleanupListeners();
209
+ this.onFailedFn?.(new FailedCacheError("Failed to get cached output"), this.promptId);
210
+ jobDoneTrigger(false);
211
+ return false;
212
+ }
213
+ this.handleJobExecution(job.prompt_id, jobDoneTrigger);
214
+ return jobDonePromise;
215
+ }
216
+ async bypassWorkflowNodes(workflow) {
217
+ const nodeDefs = {}; // cache node definitions
218
+ for (const nodeId of this.prompt.bypassNodes) {
219
+ if (!workflow[nodeId]) {
220
+ throw new MissingNodeError(`Node ${nodeId.toString()} is missing from the workflow!`);
221
+ }
222
+ const classType = workflow[nodeId].class_type;
223
+ // Directly use feature namespace to avoid deprecated internal call
224
+ const def = nodeDefs[classType] || (await this.client.ext.node.getNodeDefs(classType))?.[classType];
225
+ if (!def) {
226
+ throw new MissingNodeError(`Node type ${workflow[nodeId].class_type} is missing from server!`);
227
+ }
228
+ nodeDefs[classType] = def;
229
+ const connections = new Map();
230
+ const connectedInputs = [];
231
+ // connect output nodes to matching input nodes
232
+ for (const [outputIdx, outputType] of def.output.entries()) {
233
+ for (const [inputName, inputValue] of Object.entries(workflow[nodeId].inputs)) {
234
+ if (connectedInputs.includes(inputName)) {
235
+ continue;
236
+ }
237
+ if (def.input.required[inputName]?.[0] === outputType) {
238
+ connections.set(outputIdx, inputValue);
239
+ connectedInputs.push(inputName);
240
+ break;
241
+ }
242
+ if (def.input.optional?.[inputName]?.[0] === outputType) {
243
+ connections.set(outputIdx, inputValue);
244
+ connectedInputs.push(inputName);
245
+ break;
246
+ }
247
+ }
248
+ }
249
+ // search and replace all nodes' inputs referencing this node based on matching output type, or remove reference
250
+ // if no matching output type was found
251
+ for (const [conNodeId, conNode] of Object.entries(workflow)) {
252
+ for (const [conInputName, conInputValue] of Object.entries(conNode.inputs)) {
253
+ if (!Array.isArray(conInputValue) || conInputValue[0] !== nodeId) {
254
+ continue;
255
+ }
256
+ if (connections.has(conInputValue[1])) {
257
+ workflow[conNodeId].inputs[conInputName] = connections.get(conInputValue[1]);
258
+ }
259
+ else {
260
+ delete workflow[conNodeId].inputs[conInputName];
261
+ }
262
+ }
263
+ }
264
+ delete workflow[nodeId];
265
+ }
266
+ return workflow;
267
+ }
268
+ async enqueueJob() {
269
+ let workflow = structuredClone(this.prompt.workflow);
270
+ if (this.prompt.bypassNodes.length > 0) {
271
+ try {
272
+ workflow = await this.bypassWorkflowNodes(workflow);
273
+ }
274
+ catch (e) {
275
+ if (e instanceof Response) {
276
+ this.onFailedFn?.(new MissingNodeError("Failed to get workflow node definitions", { cause: await e.json() }));
277
+ }
278
+ else {
279
+ this.onFailedFn?.(new MissingNodeError("There was a missing node in the workflow bypass.", { cause: e }));
280
+ }
281
+ return null;
282
+ }
283
+ }
284
+ const job = await this.client.ext.queue.appendPrompt(workflow).catch(async (e) => {
285
+ try {
286
+ if (e instanceof EnqueueFailedError) {
287
+ this.onFailedFn?.(e);
288
+ }
289
+ else if (e instanceof Response) {
290
+ const err = await buildEnqueueFailedError(e);
291
+ this.onFailedFn?.(err);
292
+ }
293
+ else if (e && typeof e === 'object' && 'response' in e && e.response instanceof Response) {
294
+ const err = await buildEnqueueFailedError(e.response);
295
+ this.onFailedFn?.(err);
296
+ }
297
+ else {
298
+ this.onFailedFn?.(new EnqueueFailedError("Failed to queue prompt", { cause: e, reason: e?.message }));
299
+ }
300
+ }
301
+ catch (inner) {
302
+ this.onFailedFn?.(new EnqueueFailedError("Failed to queue prompt", { cause: inner }));
303
+ }
304
+ return null;
305
+ });
306
+ if (!job) {
307
+ return;
308
+ }
309
+ this.promptId = job.prompt_id;
310
+ this.onPendingFn?.(this.promptId);
311
+ this.onDisconnectedHandlerOffFn = this.client.on("disconnected", () => this.onFailedFn?.(new DisconnectedError("Disconnected"), this.promptId));
312
+ return job;
313
+ }
314
+ async handleCachedOutput(promptId) {
315
+ const hisData = await this.client.ext.history.getHistory(promptId);
316
+ if (hisData?.status?.completed) {
317
+ const output = this.mapOutput(hisData.outputs);
318
+ if (Object.values(output).some((v) => v !== undefined)) {
319
+ this.onFinishedFn?.(output, this.promptId);
320
+ return output;
321
+ }
322
+ else {
323
+ return false;
324
+ }
325
+ }
326
+ return null;
327
+ }
328
+ mapOutput(outputNodes) {
329
+ const outputMapped = this.prompt.mapOutputKeys;
330
+ const output = {};
331
+ for (const key in outputMapped) {
332
+ const node = outputMapped[key];
333
+ if (node) {
334
+ output[key] = outputNodes[node];
335
+ }
336
+ else {
337
+ if (!output._raw) {
338
+ output._raw = {};
339
+ }
340
+ output._raw[key] = outputNodes[key];
341
+ }
342
+ }
343
+ return output;
344
+ }
345
+ handleJobExecution(promptId, jobDoneTrigger) {
346
+ const reverseOutputMapped = this.reverseMapOutputKeys();
347
+ this.progressHandlerOffFn = this.client.on("progress", (ev) => this.handleProgress(ev, promptId));
348
+ this.previewHandlerOffFn = this.client.on("b_preview", (ev) => this.onPreviewFn?.(ev.detail, this.promptId));
349
+ const totalOutput = Object.keys(reverseOutputMapped).length;
350
+ let remainingOutput = totalOutput;
351
+ const executionHandler = (ev) => {
352
+ if (ev.detail.prompt_id !== promptId)
353
+ return;
354
+ const outputKey = reverseOutputMapped[ev.detail.node];
355
+ if (outputKey) {
356
+ this.output[outputKey] = ev.detail.output;
357
+ this.onOutputFn?.(outputKey, ev.detail.output, this.promptId);
358
+ remainingOutput--;
359
+ }
360
+ else {
361
+ this.output._raw = this.output._raw || {};
362
+ this.output._raw[ev.detail.node] = ev.detail.output;
363
+ this.onOutputFn?.(ev.detail.node, ev.detail.output, this.promptId);
364
+ }
365
+ if (remainingOutput === 0) {
366
+ this.cleanupListeners();
367
+ this.onFinishedFn?.(this.output, this.promptId);
368
+ jobDoneTrigger(this.output);
369
+ }
370
+ };
371
+ const executedEnd = async () => {
372
+ if (remainingOutput !== 0) {
373
+ // some cached output nodes might output after executedEnd, so check history data if an output is really missing
374
+ const hisData = await this.client.ext.history.getHistory(promptId);
375
+ if (hisData?.status?.completed) {
376
+ const outputCount = Object.keys(hisData.outputs).length;
377
+ if (outputCount > 0 && outputCount - totalOutput === 0) {
378
+ return;
379
+ }
380
+ }
381
+ this.onFailedFn?.(new ExecutionFailedError("Execution failed"), this.promptId);
382
+ this.cleanupListeners();
383
+ jobDoneTrigger(false);
384
+ }
385
+ };
386
+ this.executionEndSuccessOffFn = this.client.on("execution_success", executedEnd);
387
+ this.executionHandlerOffFn = this.client.on("executed", executionHandler);
388
+ this.errorHandlerOffFn = this.client.on("execution_error", (ev) => this.handleError(ev, promptId, jobDoneTrigger));
389
+ this.interruptionHandlerOffFn = this.client.on("execution_interrupted", (ev) => {
390
+ if (ev.detail.prompt_id !== promptId)
391
+ return;
392
+ this.onFailedFn?.(new ExecutionInterruptedError("The execution was interrupted!", { cause: ev.detail }), ev.detail.prompt_id);
393
+ this.cleanupListeners();
394
+ jobDoneTrigger(false);
395
+ });
396
+ }
397
+ reverseMapOutputKeys() {
398
+ const outputMapped = this.prompt.mapOutputKeys;
399
+ return Object.entries(outputMapped).reduce((acc, [k, v]) => {
400
+ if (v)
401
+ acc[v] = k;
402
+ return acc;
403
+ }, {});
404
+ }
405
+ handleProgress(ev, promptId) {
406
+ if (ev.detail.prompt_id === promptId && !this.started) {
407
+ this.started = true;
408
+ this.onStartFn?.(this.promptId);
409
+ }
410
+ this.onProgressFn?.(ev.detail, this.promptId);
411
+ }
412
+ handleError(ev, promptId, resolve) {
413
+ if (ev.detail.prompt_id !== promptId)
414
+ return;
415
+ this.onFailedFn?.(new CustomEventError(ev.detail.exception_type, { cause: ev.detail }), ev.detail.prompt_id);
416
+ this.cleanupListeners();
417
+ resolve(false);
418
+ }
419
+ cleanupListeners() {
420
+ this.onDisconnectedHandlerOffFn?.();
421
+ this.checkExecutingOffFn?.();
422
+ this.checkExecutedOffFn?.();
423
+ this.progressHandlerOffFn?.();
424
+ this.previewHandlerOffFn?.();
425
+ this.executionHandlerOffFn?.();
426
+ this.errorHandlerOffFn?.();
427
+ this.executionEndSuccessOffFn?.();
428
+ this.interruptionHandlerOffFn?.();
429
+ this.statusHandlerOffFn?.();
430
+ }
431
+ }
432
+ //# sourceMappingURL=call-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-wrapper.js","sourceRoot":"","sources":["../src/call-wrapper.ts"],"names":[],"mappings":"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"}