@requence/task 1.0.0-alpha.10 → 1.0.0-alpha.12

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 (45) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/chunk-4r30g3ha.js +38 -0
  3. package/build/chunk-4r30g3ha.js.map +10 -0
  4. package/build/cli.js +1 -1
  5. package/build/index.js +378 -155
  6. package/build/index.js.map +11 -7
  7. package/build/types/helpers/src/files/mapOutput.d.ts +4 -1
  8. package/build/types/helpers/src/files/mapOutput.d.ts.map +1 -1
  9. package/build/types/helpers/src/index.d.ts +8 -6
  10. package/build/types/helpers/src/index.d.ts.map +1 -1
  11. package/build/types/helpers/src/protocol/update.d.ts +8 -8
  12. package/build/types/helpers/src/utils/callbackToAsyncIterator.d.ts +3 -0
  13. package/build/types/helpers/src/utils/callbackToAsyncIterator.d.ts.map +1 -0
  14. package/build/types/helpers/src/utils/clone.d.ts +3 -0
  15. package/build/types/helpers/src/utils/clone.d.ts.map +1 -0
  16. package/build/types/helpers/src/utils/createObjectProxy.d.ts +2 -0
  17. package/build/types/helpers/src/utils/createObjectProxy.d.ts.map +1 -0
  18. package/build/types/helpers/src/{createRemotePromise.d.ts → utils/createRemotePromise.d.ts} +1 -1
  19. package/build/types/helpers/src/utils/createRemotePromise.d.ts.map +1 -0
  20. package/build/types/helpers/src/utils/isRecord.d.ts +2 -0
  21. package/build/types/helpers/src/utils/isRecord.d.ts.map +1 -0
  22. package/build/types/helpers/src/{utils.d.ts → utils/mapData.d.ts} +1 -5
  23. package/build/types/helpers/src/utils/mapData.d.ts.map +1 -0
  24. package/build/types/helpers/src/utils/matchSchema.d.ts +4 -0
  25. package/build/types/helpers/src/utils/matchSchema.d.ts.map +1 -0
  26. package/build/types/helpers/src/utils/obfuscate.d.ts.map +1 -0
  27. package/build/types/task/src/createTask.d.ts +3 -97
  28. package/build/types/task/src/createTask.d.ts.map +1 -1
  29. package/build/types/task/src/types.d.ts +24 -17
  30. package/build/types/task/src/types.d.ts.map +1 -1
  31. package/build/types/task/src/watchTasks.d.ts +2 -97
  32. package/build/types/task/src/watchTasks.d.ts.map +1 -1
  33. package/package.json +1 -2
  34. package/build/chunk-ajdmm777.js +0 -125
  35. package/build/chunk-ajdmm777.js.map +0 -12
  36. package/build/types/helpers/src/clone.d.ts +0 -3
  37. package/build/types/helpers/src/clone.d.ts.map +0 -1
  38. package/build/types/helpers/src/createObjectProxy.d.ts +0 -2
  39. package/build/types/helpers/src/createObjectProxy.d.ts.map +0 -1
  40. package/build/types/helpers/src/createRemotePromise.d.ts.map +0 -1
  41. package/build/types/helpers/src/obfuscate.d.ts.map +0 -1
  42. package/build/types/helpers/src/utils.d.ts.map +0 -1
  43. package/build/types/task/src/utils/callbackToAsyncIterator.d.ts +0 -5
  44. package/build/types/task/src/utils/callbackToAsyncIterator.d.ts.map +0 -1
  45. /package/build/types/helpers/src/{obfuscate.d.ts → utils/obfuscate.d.ts} +0 -0
package/build/index.js CHANGED
@@ -1,12 +1,253 @@
1
1
  import {
2
- createRemotePromise,
3
- deobfuscate,
4
- mapData
5
- } from "./chunk-ajdmm777.js";
2
+ deobfuscate
3
+ } from "./chunk-4r30g3ha.js";
6
4
 
7
- // ../helpers/src/files/index.ts
5
+ // ../helpers/src/utils/createRemotePromise.ts
6
+ function createRemotePromise(onAwait) {
7
+ let resolvePromise;
8
+ let rejectPromise;
9
+ const internalPromise = new Promise((resolve, reject) => {
10
+ resolvePromise = resolve;
11
+ rejectPromise = reject;
12
+ });
13
+ let isAwaited = false;
14
+ const wrappedPromise = new Proxy(internalPromise, {
15
+ get(target, property) {
16
+ if (property === "then" || property === "catch" || property === "finally") {
17
+ if (!isAwaited && onAwait) {
18
+ isAwaited = true;
19
+ onAwait(resolvePromise, rejectPromise);
20
+ }
21
+ return target[property].bind(target);
22
+ }
23
+ return target[property];
24
+ }
25
+ });
26
+ return Object.assign(wrappedPromise, {
27
+ resolve: resolvePromise,
28
+ reject: rejectPromise,
29
+ promise: wrappedPromise
30
+ });
31
+ }
32
+
33
+ // ../helpers/src/utils/callbackToAsyncIterator.ts
34
+ function callbackToAsyncIterator(subscribe) {
35
+ const pullQueue = [];
36
+ const pushQueue = [];
37
+ const pushValue = (value) => {
38
+ if (pullQueue.length !== 0) {
39
+ const resolver = pullQueue.shift();
40
+ resolver(value);
41
+ } else {
42
+ pushQueue.push(value);
43
+ }
44
+ };
45
+ const pullValue = () => new Promise((resolve) => {
46
+ if (pushQueue.length !== 0) {
47
+ resolve(pushQueue.shift());
48
+ } else {
49
+ pullQueue.push(resolve);
50
+ }
51
+ });
52
+ subscribe((value) => {
53
+ pushValue({ value });
54
+ }, (error) => {
55
+ pushValue({ error });
56
+ }, () => {
57
+ pushValue({ done: true });
58
+ });
59
+ return {
60
+ async next() {
61
+ const value = await pullValue();
62
+ if (value.done) {
63
+ return { value: undefined, done: true };
64
+ }
65
+ if (value.error) {
66
+ throw value.error;
67
+ }
68
+ return { value: value.value, done: false };
69
+ }
70
+ };
71
+ }
72
+ function callbackToAsyncIterable(...args) {
73
+ return {
74
+ [Symbol.asyncIterator]() {
75
+ return callbackToAsyncIterator(...args);
76
+ }
77
+ };
78
+ }
79
+
80
+ // ../helpers/src/utils/isRecord.ts
8
81
  import { z } from "zod";
82
+ var recordSchema = z.record(z.unknown());
83
+ function isRecord(data) {
84
+ return recordSchema.safeParse(data).success;
85
+ }
86
+
87
+ // ../helpers/src/utils/mapData.ts
88
+ function resolve(value, onResolve) {
89
+ if (value instanceof Promise) {
90
+ return Promise.resolve().then(() => value).then(onResolve);
91
+ }
92
+ return onResolve(value);
93
+ }
94
+ function notUndefined(value, fallback) {
95
+ return resolve(value, (resolvedValue) => typeof resolvedValue === "undefined" ? fallback : resolvedValue);
96
+ }
97
+ function mapData(data, visitors) {
98
+ const traverseData = (data2, path) => {
99
+ if (Array.isArray(data2)) {
100
+ return resolve(visitors.Array?.(data2, path), (resolvedData) => {
101
+ if (resolvedData) {
102
+ return resolvedData;
103
+ }
104
+ const items = data2.map((item, index) => traverseData(item, [...path, index]));
105
+ if (items.some((item) => item instanceof Promise)) {
106
+ return Promise.all(items);
107
+ }
108
+ return items;
109
+ });
110
+ }
111
+ if (data2 === null) {
112
+ return notUndefined(visitors.Null?.(data2, path), data2);
113
+ }
114
+ if (typeof Buffer !== "undefined" && Buffer.isBuffer(data2)) {
115
+ return notUndefined(visitors.Buffer?.(data2, path), data2);
116
+ }
117
+ if (typeof data2 === "string") {
118
+ return notUndefined(visitors.String?.(data2, path), data2);
119
+ }
120
+ if (typeof data2 === "number") {
121
+ return notUndefined(visitors.Number?.(data2, path), data2);
122
+ }
123
+ if (isRecord(data2)) {
124
+ return resolve(visitors.Object?.(data2, path), (resolvedData) => {
125
+ if (resolvedData) {
126
+ return resolvedData;
127
+ }
128
+ const entries = Object.entries(data2).map(([key, value]) => [
129
+ key,
130
+ traverseData(value, [...path, key])
131
+ ]);
132
+ if (entries.some(([, value]) => value instanceof Promise)) {
133
+ return Promise.all(entries.map(([key, value]) => Promise.resolve().then(() => value).then((resolvedValue) => [key, resolvedValue]))).then((entries2) => Object.fromEntries(entries2));
134
+ }
135
+ return Object.fromEntries(entries);
136
+ });
137
+ }
138
+ return data2;
139
+ };
140
+ return traverseData(data, []);
141
+ }
9
142
 
143
+ // ../helpers/src/files/index.ts
144
+ import { z as z2 } from "zod";
145
+
146
+ // ../helpers/src/files/mapOutput.ts
147
+ async function upload(uploadUrl, body, signal, contentType) {
148
+ const uploadResponse = await fetch(uploadUrl, {
149
+ method: "POST",
150
+ signal,
151
+ headers: contentType ? {
152
+ "Content-Type": contentType
153
+ } : {},
154
+ body
155
+ });
156
+ const data = await uploadResponse.json();
157
+ if (!data || typeof data !== "object") {
158
+ throw new Error("invalid upload response");
159
+ }
160
+ return toFileObject(data);
161
+ }
162
+ async function stream(streamUrl, stream2, signal, contentType) {
163
+ const [testStream, dataStream] = stream2.tee();
164
+ const reader = testStream.getReader();
165
+ const dataPromise = reader.read().then(({ done: done2 }) => {
166
+ if (done2) {
167
+ throw new Error("No streaming date received");
168
+ }
169
+ reader.cancel();
170
+ });
171
+ const streamResponse = await fetch(streamUrl, {
172
+ method: "POST",
173
+ signal,
174
+ headers: contentType ? { "Content-Type": contentType } : {}
175
+ });
176
+ const data = await streamResponse.json();
177
+ if (!data || typeof data !== "object") {
178
+ throw new Error("invalid stream response");
179
+ }
180
+ const { mime, url } = data;
181
+ await dataPromise;
182
+ const done = fetch(url, {
183
+ method: "POST",
184
+ signal,
185
+ duplex: "half",
186
+ body: dataStream
187
+ });
188
+ return [toStreamObject({ mime, url }), done];
189
+ }
190
+ async function mapOutput(params) {
191
+ const streamPromises = [];
192
+ const mapped = await mapData(params.value, {
193
+ async Object(obj) {
194
+ if (obj instanceof Blob || obj instanceof RequenceFile) {
195
+ if (obj instanceof RequenceFile && obj.fileObject) {
196
+ return obj.fileObject;
197
+ }
198
+ if (params.options.uploadUrl) {
199
+ try {
200
+ if (obj instanceof Blob) {
201
+ return await upload(params.options.uploadUrl, obj, params.signal, obj.type);
202
+ }
203
+ if (obj instanceof RequenceFile) {
204
+ return await upload(params.options.uploadUrl, await obj.blob(), params.signal, obj.mimeType);
205
+ }
206
+ } catch (error) {
207
+ if (!(error instanceof Error)) {
208
+ throw error;
209
+ }
210
+ params.onFail?.(error);
211
+ return null;
212
+ }
213
+ } else {
214
+ params.onSkip?.();
215
+ return null;
216
+ }
217
+ }
218
+ if (obj instanceof Response || obj instanceof RequenceStream) {
219
+ if (obj instanceof RequenceStream && obj.streamObject) {
220
+ return obj.streamObject;
221
+ }
222
+ if (params.options.streamUrl) {
223
+ try {
224
+ if (obj instanceof Response && obj.body) {
225
+ const [streamObject, streamPromise] = await stream(params.options.streamUrl, obj.body, params.signal, obj.headers.get("Content-Type"));
226
+ streamPromises.push(streamPromise);
227
+ return streamObject;
228
+ }
229
+ if (obj instanceof RequenceStream) {
230
+ const [streamObject, streamPromise] = await stream(params.options.streamUrl, obj.stream(), params.signal, obj.mimeType);
231
+ streamPromises.push(streamPromise);
232
+ return streamObject;
233
+ }
234
+ } catch (error) {
235
+ if (!(error instanceof Error)) {
236
+ throw error;
237
+ }
238
+ params.onFail?.(error);
239
+ return null;
240
+ }
241
+ } else {
242
+ params.onSkip?.();
243
+ return null;
244
+ }
245
+ }
246
+ }
247
+ });
248
+ Promise.allSettled(streamPromises).then(() => params.onDone?.());
249
+ return mapped;
250
+ }
10
251
  // ../helpers/src/files/RequenceFile.ts
11
252
  class RequenceFile {
12
253
  #data;
@@ -70,15 +311,15 @@ class RequenceStream {
70
311
  #data;
71
312
  #stream = null;
72
313
  #options;
73
- constructor(stream, options) {
74
- this.#data = stream;
314
+ constructor(stream2, options) {
315
+ this.#data = stream2;
75
316
  this.#options = options;
76
317
  }
77
- static fromStreamObject(stream) {
318
+ static fromStreamObject(stream2) {
78
319
  const instance = new this(null, {
79
320
  type: "x/x"
80
321
  });
81
- instance.#stream = stream;
322
+ instance.#stream = stream2;
82
323
  return instance;
83
324
  }
84
325
  get streamObject() {
@@ -127,96 +368,107 @@ class RequenceStream {
127
368
  }
128
369
 
129
370
  // ../helpers/src/files/index.ts
130
- var fileObjectSchema = z.object({
131
- size: z.number().int().positive(),
132
- mime: z.string(),
133
- url: z.string().url(),
134
- __REQUENCE_type: z.literal("RequenceFile")
371
+ var fileObjectSchema = z2.object({
372
+ size: z2.number().int().positive(),
373
+ mime: z2.string(),
374
+ url: z2.string().url(),
375
+ __REQUENCE_type: z2.literal("RequenceFile")
135
376
  });
377
+ function toFileObject(fileInfo) {
378
+ return {
379
+ ...fileInfo,
380
+ __REQUENCE_type: "RequenceFile"
381
+ };
382
+ }
136
383
  function isFileObject(data) {
137
384
  return fileObjectSchema.safeParse(data).success;
138
385
  }
139
- var streamObjectSchema = z.object({
140
- mime: z.string(),
141
- url: z.string().url(),
142
- __REQUENCE_type: z.literal("RequenceStream")
386
+ var streamObjectSchema = z2.object({
387
+ mime: z2.string(),
388
+ url: z2.string().url(),
389
+ __REQUENCE_type: z2.literal("RequenceStream")
143
390
  });
391
+ function toStreamObject(streamInfo) {
392
+ return {
393
+ ...streamInfo,
394
+ __REQUENCE_type: "RequenceStream"
395
+ };
396
+ }
144
397
  function isStreamObject(data) {
145
398
  return streamObjectSchema.safeParse(data).success;
146
399
  }
147
400
 
148
401
  // src/createTask.ts
149
402
  import { EventSource } from "eventsource";
150
- import FormData from "form-data";
151
403
 
152
404
  // src/types.ts
153
- import { z as z2 } from "zod";
154
- var serviceNodeInfoSchema = z2.object({
155
- id: z2.string().uuid(),
156
- type: z2.literal("service"),
157
- alias: z2.string().optional(),
158
- service: z2.object({
159
- id: z2.string().uuid(),
160
- name: z2.string(),
161
- version: z2.string()
405
+ import { z as z3 } from "zod";
406
+ var serviceNodeInfoSchema = z3.object({
407
+ id: z3.string().uuid(),
408
+ type: z3.literal("service"),
409
+ alias: z3.string().optional(),
410
+ service: z3.object({
411
+ id: z3.string().uuid(),
412
+ name: z3.string(),
413
+ version: z3.string()
162
414
  }).optional()
163
415
  });
164
- var logicNodeInfoSchema = z2.object({
165
- id: z2.string().uuid(),
166
- type: z2.literal("logic"),
167
- alias: z2.string().optional(),
168
- logic: z2.object({
169
- language: z2.enum(["typescript", "javascript", "python"])
416
+ var logicNodeInfoSchema = z3.object({
417
+ id: z3.string().uuid(),
418
+ type: z3.literal("logic"),
419
+ alias: z3.string().optional(),
420
+ logic: z3.object({
421
+ language: z3.enum(["typescript", "javascript", "python"])
170
422
  }).optional()
171
423
  });
172
- var nodeInfoSchema = z2.discriminatedUnion("type", [
424
+ var nodeInfoSchema = z3.discriminatedUnion("type", [
173
425
  serviceNodeInfoSchema,
174
426
  logicNodeInfoSchema
175
427
  ]);
176
- var baseUpdate = z2.object({
177
- timestamp: z2.coerce.date(),
178
- taskId: z2.string().uuid()
428
+ var baseUpdate = z3.object({
429
+ timestamp: z3.coerce.date(),
430
+ taskId: z3.string().uuid()
179
431
  });
180
432
  var taskStartUpdateSchema = baseUpdate.extend({
181
- type: z2.literal("taskStart"),
182
- input: z2.unknown(),
183
- meta: z2.unknown()
433
+ type: z3.literal("taskStart"),
434
+ input: z3.unknown(),
435
+ meta: z3.unknown()
184
436
  });
185
437
  var taskErrorUpdateSchema = baseUpdate.extend({
186
- type: z2.literal("taskError"),
187
- error: z2.string()
438
+ type: z3.literal("taskError"),
439
+ error: z3.string()
188
440
  });
189
441
  var taskEndUpdateSchema = baseUpdate.extend({
190
- type: z2.literal("taskEnd"),
191
- result: z2.record(z2.string(), z2.unknown()),
192
- partialResults: z2.array(z2.object({
442
+ type: z3.literal("taskEnd"),
443
+ result: z3.record(z3.string(), z3.unknown()),
444
+ partialResults: z3.array(z3.object({
193
445
  node: nodeInfoSchema,
194
- timestamp: z2.coerce.date().nullable(),
195
- data: z2.unknown(),
196
- error: z2.string().optional()
446
+ timestamp: z3.coerce.date().nullable(),
447
+ data: z3.unknown(),
448
+ error: z3.string().optional()
197
449
  }))
198
450
  });
199
451
  var nodeStartUpdateSchema = baseUpdate.extend({
200
- type: z2.literal("nodeStart"),
452
+ type: z3.literal("nodeStart"),
201
453
  node: nodeInfoSchema
202
454
  });
203
455
  var nodeUpdateUpdateSchema = baseUpdate.extend({
204
- type: z2.literal("nodeUpdate"),
205
- data: z2.unknown()
456
+ type: z3.literal("nodeUpdate"),
457
+ data: z3.unknown()
206
458
  });
207
459
  var nodeErrorUpdateSchema = baseUpdate.extend({
208
- type: z2.literal("nodeError"),
209
- error: z2.string()
460
+ type: z3.literal("nodeError"),
461
+ error: z3.string()
210
462
  });
211
463
  var nodeDeferUpdateSchema = baseUpdate.extend({
212
- type: z2.literal("nodeDefer"),
213
- reason: z2.string().optional()
464
+ type: z3.literal("nodeDefer"),
465
+ reason: z3.string().optional()
214
466
  });
215
467
  var nodeEndUpdateSchema = baseUpdate.extend({
216
- type: z2.literal("nodeEnd"),
468
+ type: z3.literal("nodeEnd"),
217
469
  node: nodeInfoSchema
218
470
  });
219
- var updateSchema = z2.discriminatedUnion("type", [
471
+ var updateSchema = z3.discriminatedUnion("type", [
220
472
  taskStartUpdateSchema,
221
473
  taskErrorUpdateSchema,
222
474
  taskEndUpdateSchema,
@@ -226,50 +478,7 @@ var updateSchema = z2.discriminatedUnion("type", [
226
478
  nodeDeferUpdateSchema,
227
479
  nodeEndUpdateSchema
228
480
  ]);
229
- var eventSchema = z2.object({ type: z2.string(), data: z2.string() }).transform((event) => ({ type: event.type, ...JSON.parse(event.data) })).pipe(updateSchema);
230
-
231
- // src/utils/callbackToAsyncIterator.ts
232
- function callbackToAsyncIterator(options) {
233
- const pullQueue = [];
234
- const pushQueue = [];
235
- const pushValue = (value) => {
236
- if (pullQueue.length !== 0) {
237
- const resolver = pullQueue.shift();
238
- resolver(value);
239
- } else {
240
- pushQueue.push(value);
241
- }
242
- };
243
- const pullValue = () => new Promise((resolve) => {
244
- if (pushQueue.length !== 0) {
245
- resolve(pushQueue.shift());
246
- } else {
247
- pullQueue.push(resolve);
248
- }
249
- });
250
- return {
251
- [Symbol.asyncIterator]() {
252
- let done = false;
253
- const unsubscribe = options.subscribe(pushValue);
254
- return {
255
- async next() {
256
- if (done) {
257
- return { value: undefined, done: true };
258
- }
259
- const value = await pullValue();
260
- if (options.done) {
261
- done = options.done(value);
262
- }
263
- return { value, done: false };
264
- },
265
- async return() {
266
- unsubscribe?.();
267
- return { value: undefined, done: true };
268
- }
269
- };
270
- }
271
- };
272
- }
481
+ var eventSchema = z3.object({ type: z3.string(), data: z3.string() }).transform((event) => ({ type: event.type, ...JSON.parse(event.data) })).pipe(updateSchema);
273
482
 
274
483
  // src/utils/getAccessToken.ts
275
484
  import { readFileSync } from "node:fs";
@@ -292,7 +501,7 @@ in your package.json in requence.accessToken`);
292
501
  }
293
502
 
294
503
  // src/utils/mapOutput.ts
295
- function mapOutput2(data) {
504
+ function mapOutput3(data) {
296
505
  return mapData(data, {
297
506
  Object(obj) {
298
507
  if (isFileObject(obj)) {
@@ -316,7 +525,7 @@ class TaskError extends Error {
316
525
  function createTask(options, onUpdate) {
317
526
  const taskUpdateHandlers = new Set;
318
527
  const { apiBaseUrl, token } = getAccessToken(options.accessToken);
319
- const startUrl = `${apiBaseUrl}/task/start/${options.taskTemplate}`;
528
+ const prepareUrl = `${apiBaseUrl}/task/prepare/${options.taskTemplate}`;
320
529
  const payloadPromise = createRemotePromise();
321
530
  let isMonitoring = false;
322
531
  const startMonitoring = async () => {
@@ -338,6 +547,12 @@ function createTask(options, onUpdate) {
338
547
  },
339
548
  getData(_alias) {
340
549
  return null;
550
+ },
551
+ getTaskId() {
552
+ return payload.taskId;
553
+ },
554
+ getTaskUrl() {
555
+ return "";
341
556
  }
342
557
  });
343
558
  return;
@@ -382,89 +597,100 @@ function createTask(options, onUpdate) {
382
597
  const getPartialResult = (alias) => update.partialResults.find((partialResult) => partialResult.node.alias === alias);
383
598
  resultPromise.resolve({
384
599
  getInput() {
385
- return mapOutput2(input);
600
+ return mapOutput3(input);
386
601
  },
387
602
  getMeta() {
388
- return mapOutput2(meta);
603
+ return mapOutput3(meta);
389
604
  },
390
605
  getError(alias) {
391
606
  return getPartialResult(alias)?.error ?? null;
392
607
  },
393
608
  getData(alias) {
394
609
  if (!alias) {
395
- return mapOutput2(update.result);
610
+ return mapOutput3(update.result);
396
611
  }
397
- return mapOutput2(getPartialResult(alias)?.data ?? null);
612
+ return mapOutput3(getPartialResult(alias)?.data ?? null);
613
+ },
614
+ getTaskId() {
615
+ return payload.taskId;
616
+ },
617
+ getTaskUrl() {
618
+ return payload.urls?.show ?? "";
398
619
  }
399
620
  });
400
621
  }
401
622
  if (update.type === "taskError") {
402
623
  resultPromise.reject(new TaskError(update.error, options.taskTemplate));
403
624
  }
404
- taskUpdateHandlers.forEach((handler) => handler(update));
625
+ const extendedUpdate = update.type === "nodeUpdate" ? { type: "nodeUpdate", data: mapOutput3(update.data) } : update;
626
+ taskUpdateHandlers.forEach((handler) => handler(extendedUpdate));
405
627
  });
406
628
  });
407
629
  };
408
630
  const taskIdPromise = createRemotePromise();
409
631
  const resultPromise = createRemotePromise(startMonitoring);
410
632
  (async () => {
411
- const formData = new FormData;
412
- const walkData = async (data, path = []) => {
413
- const name = path.map((segment, index) => index === 0 ? segment : typeof segment === "string" ? `.${segment}` : `[${segment}]`).join("");
414
- if (data instanceof RequenceFile) {
415
- formData.append(name, await data.blob(), name);
416
- } else if (data instanceof RequenceStream) {
417
- formData.append(name, data.stream(), name);
418
- } else if (Array.isArray(data)) {
419
- await Promise.all(data.map((item, index) => walkData(item, [...path, index])));
420
- } else if (data && typeof data === "object") {
421
- for (const [key, value] of Object.entries(data)) {
422
- await walkData(value, [...path, key]);
423
- }
424
- } else if (typeof data !== "undefined") {
425
- formData.append(name, `json://${JSON.stringify(data)}`);
633
+ const prepareResponse = await fetch(prepareUrl, {
634
+ method: "POST",
635
+ headers: {
636
+ Authorization: `Bearer ${token}`
637
+ }
638
+ });
639
+ if (!prepareResponse.ok) {
640
+ const error = new TaskError(await prepareResponse.text(), options.taskTemplate);
641
+ taskIdPromise.reject(error);
642
+ resultPromise.reject(error);
643
+ return;
644
+ }
645
+ const prepareData = await prepareResponse.json();
646
+ const mappedParams = await mapOutput({
647
+ value: {
648
+ name: options.name,
649
+ input: options.input,
650
+ meta: options.meta
651
+ },
652
+ options: {
653
+ uploadUrl: prepareData.fileUrls?.uploadUrl,
654
+ streamUrl: prepareData.fileUrls?.streamUrl
426
655
  }
427
- };
428
- await walkData({
429
- input: options.input ?? null,
430
- meta: options.meta ?? null,
431
- name: options.name ?? null
432
656
  });
433
- console.log(formData);
434
- const response = await fetch(startUrl, {
657
+ const finalizeResponse = await fetch(prepareData.finalizeUrl, {
435
658
  method: "POST",
436
- body: formData,
659
+ body: JSON.stringify(mappedParams),
437
660
  headers: {
438
- Authorization: `Bearer ${token}`
661
+ Authorization: `Bearer ${token}`,
662
+ "Content-Type": "application/json"
439
663
  }
440
664
  });
441
- if (!response.ok) {
442
- const error = new TaskError(await response.text(), options.taskTemplate);
665
+ if (!finalizeResponse.ok) {
666
+ const error = new TaskError(await prepareResponse.text(), options.taskTemplate);
443
667
  taskIdPromise.reject(error);
444
668
  resultPromise.reject(error);
445
669
  return;
446
670
  }
447
- const payload = await response.json();
448
- taskIdPromise.resolve(payload.id);
671
+ const payload = await finalizeResponse.json();
672
+ taskIdPromise.resolve(payload.taskId);
449
673
  payloadPromise.resolve(payload);
450
674
  if (onUpdate) {
451
675
  taskUpdateHandlers.add(onUpdate);
452
676
  startMonitoring();
453
677
  }
454
678
  })();
455
- const asyncIterable = callbackToAsyncIterator({
456
- subscribe: (push) => {
457
- taskUpdateHandlers.add(push);
458
- startMonitoring();
459
- return () => {
460
- taskUpdateHandlers.delete(push);
461
- };
462
- },
463
- done: (value) => value.type === "taskError" || value.type === "taskEnd"
679
+ const asyncIterable = callbackToAsyncIterable((push, _fail, done) => {
680
+ taskUpdateHandlers.add(function handleUpdate(update) {
681
+ push(update);
682
+ if (update.type === "taskEnd" || update.type === "taskError") {
683
+ done();
684
+ taskUpdateHandlers.delete(handleUpdate);
685
+ }
686
+ });
687
+ startMonitoring();
464
688
  });
465
689
  return Object.assign(resultPromise.promise, asyncIterable, {
466
690
  getTaskId() {
467
691
  return taskIdPromise;
692
+ },
693
+ getTaskUrl() {
468
694
  }
469
695
  });
470
696
  }
@@ -486,13 +712,8 @@ function watchTasks(options) {
486
712
  }
487
713
  })
488
714
  });
489
- const asyncIterable = callbackToAsyncIterator({
490
- subscribe: (push) => {
491
- taskUpdateHandlers.add(push);
492
- return () => {
493
- taskUpdateHandlers.delete(push);
494
- };
495
- }
715
+ const asyncIterable = callbackToAsyncIterable((push) => {
716
+ taskUpdateHandlers.add(push);
496
717
  });
497
718
  const taskEvents = [
498
719
  "taskStart",
@@ -511,7 +732,9 @@ function watchTasks(options) {
511
732
  eventSource.close();
512
733
  throw new Error("invalid update");
513
734
  }
514
- taskUpdateHandlers.forEach((handler) => handler(updateResult.data));
735
+ const update = updateResult.data;
736
+ const extendedUpdate = update.type === "nodeUpdate" ? { type: "nodeUpdate", data: mapOutput3(update.data) } : update;
737
+ taskUpdateHandlers.forEach((handler) => handler(extendedUpdate));
515
738
  });
516
739
  });
517
740
  const stopWatching = () => {
@@ -526,5 +749,5 @@ export {
526
749
  RequenceFile
527
750
  };
528
751
 
529
- //# debugId=D795FF91B80A9C0364756E2164756E21
752
+ //# debugId=17D151A31EA3238664756E2164756E21
530
753
  //# sourceMappingURL=index.js.map