@requence/task 1.0.0-alpha.11 → 1.0.0-alpha.13
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/CHANGELOG.md +12 -0
- package/build/chunk-4r30g3ha.js +38 -0
- package/build/chunk-4r30g3ha.js.map +10 -0
- package/build/cli.js +1 -1
- package/build/index.js +378 -154
- package/build/index.js.map +11 -7
- package/build/types/helpers/src/files/mapOutput.d.ts +4 -1
- package/build/types/helpers/src/files/mapOutput.d.ts.map +1 -1
- package/build/types/helpers/src/index.d.ts +8 -6
- package/build/types/helpers/src/index.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/update.d.ts +8 -8
- package/build/types/helpers/src/utils/callbackToAsyncIterator.d.ts +3 -0
- package/build/types/helpers/src/utils/callbackToAsyncIterator.d.ts.map +1 -0
- package/build/types/helpers/src/utils/clone.d.ts +3 -0
- package/build/types/helpers/src/utils/clone.d.ts.map +1 -0
- package/build/types/helpers/src/utils/createObjectProxy.d.ts +2 -0
- package/build/types/helpers/src/utils/createObjectProxy.d.ts.map +1 -0
- package/build/types/helpers/src/{createRemotePromise.d.ts → utils/createRemotePromise.d.ts} +1 -1
- package/build/types/helpers/src/utils/createRemotePromise.d.ts.map +1 -0
- package/build/types/helpers/src/utils/isRecord.d.ts +2 -0
- package/build/types/helpers/src/utils/isRecord.d.ts.map +1 -0
- package/build/types/helpers/src/{utils.d.ts → utils/mapData.d.ts} +1 -5
- package/build/types/helpers/src/utils/mapData.d.ts.map +1 -0
- package/build/types/helpers/src/utils/matchSchema.d.ts +4 -0
- package/build/types/helpers/src/utils/matchSchema.d.ts.map +1 -0
- package/build/types/helpers/src/utils/obfuscate.d.ts.map +1 -0
- package/build/types/task/src/createTask.d.ts +3 -97
- package/build/types/task/src/createTask.d.ts.map +1 -1
- package/build/types/task/src/types.d.ts +24 -17
- package/build/types/task/src/types.d.ts.map +1 -1
- package/build/types/task/src/watchTasks.d.ts +2 -97
- package/build/types/task/src/watchTasks.d.ts.map +1 -1
- package/package.json +3 -3
- package/build/chunk-ajdmm777.js +0 -125
- package/build/chunk-ajdmm777.js.map +0 -12
- package/build/types/helpers/src/clone.d.ts +0 -3
- package/build/types/helpers/src/clone.d.ts.map +0 -1
- package/build/types/helpers/src/createObjectProxy.d.ts +0 -2
- package/build/types/helpers/src/createObjectProxy.d.ts.map +0 -1
- package/build/types/helpers/src/createRemotePromise.d.ts.map +0 -1
- package/build/types/helpers/src/obfuscate.d.ts.map +0 -1
- package/build/types/helpers/src/utils.d.ts.map +0 -1
- package/build/types/task/src/utils/callbackToAsyncIterator.d.ts +0 -5
- package/build/types/task/src/utils/callbackToAsyncIterator.d.ts.map +0 -1
- /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
|
-
|
|
3
|
-
|
|
4
|
-
mapData
|
|
5
|
-
} from "./chunk-ajdmm777.js";
|
|
2
|
+
deobfuscate
|
|
3
|
+
} from "./chunk-4r30g3ha.js";
|
|
6
4
|
|
|
7
|
-
// ../helpers/src/
|
|
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(
|
|
74
|
-
this.#data =
|
|
314
|
+
constructor(stream2, options) {
|
|
315
|
+
this.#data = stream2;
|
|
75
316
|
this.#options = options;
|
|
76
317
|
}
|
|
77
|
-
static fromStreamObject(
|
|
318
|
+
static fromStreamObject(stream2) {
|
|
78
319
|
const instance = new this(null, {
|
|
79
320
|
type: "x/x"
|
|
80
321
|
});
|
|
81
|
-
instance.#stream =
|
|
322
|
+
instance.#stream = stream2;
|
|
82
323
|
return instance;
|
|
83
324
|
}
|
|
84
325
|
get streamObject() {
|
|
@@ -127,20 +368,32 @@ class RequenceStream {
|
|
|
127
368
|
}
|
|
128
369
|
|
|
129
370
|
// ../helpers/src/files/index.ts
|
|
130
|
-
var fileObjectSchema =
|
|
131
|
-
size:
|
|
132
|
-
mime:
|
|
133
|
-
url:
|
|
134
|
-
__REQUENCE_type:
|
|
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 =
|
|
140
|
-
mime:
|
|
141
|
-
url:
|
|
142
|
-
__REQUENCE_type:
|
|
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
|
}
|
|
@@ -149,73 +402,73 @@ function isStreamObject(data) {
|
|
|
149
402
|
import { EventSource } from "eventsource";
|
|
150
403
|
|
|
151
404
|
// src/types.ts
|
|
152
|
-
import { z as
|
|
153
|
-
var serviceNodeInfoSchema =
|
|
154
|
-
id:
|
|
155
|
-
type:
|
|
156
|
-
alias:
|
|
157
|
-
service:
|
|
158
|
-
id:
|
|
159
|
-
name:
|
|
160
|
-
version:
|
|
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()
|
|
161
414
|
}).optional()
|
|
162
415
|
});
|
|
163
|
-
var logicNodeInfoSchema =
|
|
164
|
-
id:
|
|
165
|
-
type:
|
|
166
|
-
alias:
|
|
167
|
-
logic:
|
|
168
|
-
language:
|
|
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"])
|
|
169
422
|
}).optional()
|
|
170
423
|
});
|
|
171
|
-
var nodeInfoSchema =
|
|
424
|
+
var nodeInfoSchema = z3.discriminatedUnion("type", [
|
|
172
425
|
serviceNodeInfoSchema,
|
|
173
426
|
logicNodeInfoSchema
|
|
174
427
|
]);
|
|
175
|
-
var baseUpdate =
|
|
176
|
-
timestamp:
|
|
177
|
-
taskId:
|
|
428
|
+
var baseUpdate = z3.object({
|
|
429
|
+
timestamp: z3.coerce.date(),
|
|
430
|
+
taskId: z3.string().uuid()
|
|
178
431
|
});
|
|
179
432
|
var taskStartUpdateSchema = baseUpdate.extend({
|
|
180
|
-
type:
|
|
181
|
-
input:
|
|
182
|
-
meta:
|
|
433
|
+
type: z3.literal("taskStart"),
|
|
434
|
+
input: z3.unknown(),
|
|
435
|
+
meta: z3.unknown()
|
|
183
436
|
});
|
|
184
437
|
var taskErrorUpdateSchema = baseUpdate.extend({
|
|
185
|
-
type:
|
|
186
|
-
error:
|
|
438
|
+
type: z3.literal("taskError"),
|
|
439
|
+
error: z3.string()
|
|
187
440
|
});
|
|
188
441
|
var taskEndUpdateSchema = baseUpdate.extend({
|
|
189
|
-
type:
|
|
190
|
-
result:
|
|
191
|
-
partialResults:
|
|
442
|
+
type: z3.literal("taskEnd"),
|
|
443
|
+
result: z3.record(z3.string(), z3.unknown()),
|
|
444
|
+
partialResults: z3.array(z3.object({
|
|
192
445
|
node: nodeInfoSchema,
|
|
193
|
-
timestamp:
|
|
194
|
-
data:
|
|
195
|
-
error:
|
|
446
|
+
timestamp: z3.coerce.date().nullable(),
|
|
447
|
+
data: z3.unknown(),
|
|
448
|
+
error: z3.string().optional()
|
|
196
449
|
}))
|
|
197
450
|
});
|
|
198
451
|
var nodeStartUpdateSchema = baseUpdate.extend({
|
|
199
|
-
type:
|
|
452
|
+
type: z3.literal("nodeStart"),
|
|
200
453
|
node: nodeInfoSchema
|
|
201
454
|
});
|
|
202
455
|
var nodeUpdateUpdateSchema = baseUpdate.extend({
|
|
203
|
-
type:
|
|
204
|
-
data:
|
|
456
|
+
type: z3.literal("nodeUpdate"),
|
|
457
|
+
data: z3.unknown()
|
|
205
458
|
});
|
|
206
459
|
var nodeErrorUpdateSchema = baseUpdate.extend({
|
|
207
|
-
type:
|
|
208
|
-
error:
|
|
460
|
+
type: z3.literal("nodeError"),
|
|
461
|
+
error: z3.string()
|
|
209
462
|
});
|
|
210
463
|
var nodeDeferUpdateSchema = baseUpdate.extend({
|
|
211
|
-
type:
|
|
212
|
-
reason:
|
|
464
|
+
type: z3.literal("nodeDefer"),
|
|
465
|
+
reason: z3.string().optional()
|
|
213
466
|
});
|
|
214
467
|
var nodeEndUpdateSchema = baseUpdate.extend({
|
|
215
|
-
type:
|
|
468
|
+
type: z3.literal("nodeEnd"),
|
|
216
469
|
node: nodeInfoSchema
|
|
217
470
|
});
|
|
218
|
-
var updateSchema =
|
|
471
|
+
var updateSchema = z3.discriminatedUnion("type", [
|
|
219
472
|
taskStartUpdateSchema,
|
|
220
473
|
taskErrorUpdateSchema,
|
|
221
474
|
taskEndUpdateSchema,
|
|
@@ -225,50 +478,7 @@ var updateSchema = z2.discriminatedUnion("type", [
|
|
|
225
478
|
nodeDeferUpdateSchema,
|
|
226
479
|
nodeEndUpdateSchema
|
|
227
480
|
]);
|
|
228
|
-
var eventSchema =
|
|
229
|
-
|
|
230
|
-
// src/utils/callbackToAsyncIterator.ts
|
|
231
|
-
function callbackToAsyncIterator(options) {
|
|
232
|
-
const pullQueue = [];
|
|
233
|
-
const pushQueue = [];
|
|
234
|
-
const pushValue = (value) => {
|
|
235
|
-
if (pullQueue.length !== 0) {
|
|
236
|
-
const resolver = pullQueue.shift();
|
|
237
|
-
resolver(value);
|
|
238
|
-
} else {
|
|
239
|
-
pushQueue.push(value);
|
|
240
|
-
}
|
|
241
|
-
};
|
|
242
|
-
const pullValue = () => new Promise((resolve) => {
|
|
243
|
-
if (pushQueue.length !== 0) {
|
|
244
|
-
resolve(pushQueue.shift());
|
|
245
|
-
} else {
|
|
246
|
-
pullQueue.push(resolve);
|
|
247
|
-
}
|
|
248
|
-
});
|
|
249
|
-
return {
|
|
250
|
-
[Symbol.asyncIterator]() {
|
|
251
|
-
let done = false;
|
|
252
|
-
const unsubscribe = options.subscribe(pushValue);
|
|
253
|
-
return {
|
|
254
|
-
async next() {
|
|
255
|
-
if (done) {
|
|
256
|
-
return { value: undefined, done: true };
|
|
257
|
-
}
|
|
258
|
-
const value = await pullValue();
|
|
259
|
-
if (options.done) {
|
|
260
|
-
done = options.done(value);
|
|
261
|
-
}
|
|
262
|
-
return { value, done: false };
|
|
263
|
-
},
|
|
264
|
-
async return() {
|
|
265
|
-
unsubscribe?.();
|
|
266
|
-
return { value: undefined, done: true };
|
|
267
|
-
}
|
|
268
|
-
};
|
|
269
|
-
}
|
|
270
|
-
};
|
|
271
|
-
}
|
|
481
|
+
var eventSchema = z3.object({ type: z3.string(), data: z3.string() }).transform((event) => ({ type: event.type, ...JSON.parse(event.data) })).pipe(updateSchema);
|
|
272
482
|
|
|
273
483
|
// src/utils/getAccessToken.ts
|
|
274
484
|
import { readFileSync } from "node:fs";
|
|
@@ -291,7 +501,7 @@ in your package.json in requence.accessToken`);
|
|
|
291
501
|
}
|
|
292
502
|
|
|
293
503
|
// src/utils/mapOutput.ts
|
|
294
|
-
function
|
|
504
|
+
function mapOutput3(data) {
|
|
295
505
|
return mapData(data, {
|
|
296
506
|
Object(obj) {
|
|
297
507
|
if (isFileObject(obj)) {
|
|
@@ -315,7 +525,7 @@ class TaskError extends Error {
|
|
|
315
525
|
function createTask(options, onUpdate) {
|
|
316
526
|
const taskUpdateHandlers = new Set;
|
|
317
527
|
const { apiBaseUrl, token } = getAccessToken(options.accessToken);
|
|
318
|
-
const
|
|
528
|
+
const prepareUrl = `${apiBaseUrl}/task/prepare/${options.taskTemplate}`;
|
|
319
529
|
const payloadPromise = createRemotePromise();
|
|
320
530
|
let isMonitoring = false;
|
|
321
531
|
const startMonitoring = async () => {
|
|
@@ -337,6 +547,12 @@ function createTask(options, onUpdate) {
|
|
|
337
547
|
},
|
|
338
548
|
getData(_alias) {
|
|
339
549
|
return null;
|
|
550
|
+
},
|
|
551
|
+
getTaskId() {
|
|
552
|
+
return payload.taskId;
|
|
553
|
+
},
|
|
554
|
+
getTaskUrl() {
|
|
555
|
+
return "";
|
|
340
556
|
}
|
|
341
557
|
});
|
|
342
558
|
return;
|
|
@@ -381,89 +597,100 @@ function createTask(options, onUpdate) {
|
|
|
381
597
|
const getPartialResult = (alias) => update.partialResults.find((partialResult) => partialResult.node.alias === alias);
|
|
382
598
|
resultPromise.resolve({
|
|
383
599
|
getInput() {
|
|
384
|
-
return
|
|
600
|
+
return mapOutput3(input);
|
|
385
601
|
},
|
|
386
602
|
getMeta() {
|
|
387
|
-
return
|
|
603
|
+
return mapOutput3(meta);
|
|
388
604
|
},
|
|
389
605
|
getError(alias) {
|
|
390
606
|
return getPartialResult(alias)?.error ?? null;
|
|
391
607
|
},
|
|
392
608
|
getData(alias) {
|
|
393
609
|
if (!alias) {
|
|
394
|
-
return
|
|
610
|
+
return mapOutput3(update.result);
|
|
395
611
|
}
|
|
396
|
-
return
|
|
612
|
+
return mapOutput3(getPartialResult(alias)?.data ?? null);
|
|
613
|
+
},
|
|
614
|
+
getTaskId() {
|
|
615
|
+
return payload.taskId;
|
|
616
|
+
},
|
|
617
|
+
getTaskUrl() {
|
|
618
|
+
return payload.urls?.show ?? "";
|
|
397
619
|
}
|
|
398
620
|
});
|
|
399
621
|
}
|
|
400
622
|
if (update.type === "taskError") {
|
|
401
623
|
resultPromise.reject(new TaskError(update.error, options.taskTemplate));
|
|
402
624
|
}
|
|
403
|
-
|
|
625
|
+
const extendedUpdate = update.type === "nodeUpdate" ? { type: "nodeUpdate", data: mapOutput3(update.data) } : update;
|
|
626
|
+
taskUpdateHandlers.forEach((handler) => handler(extendedUpdate));
|
|
404
627
|
});
|
|
405
628
|
});
|
|
406
629
|
};
|
|
407
630
|
const taskIdPromise = createRemotePromise();
|
|
408
631
|
const resultPromise = createRemotePromise(startMonitoring);
|
|
409
632
|
(async () => {
|
|
410
|
-
const
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
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
|
-
const
|
|
657
|
+
const finalizeResponse = await fetch(prepareData.finalizeUrl, {
|
|
434
658
|
method: "POST",
|
|
435
|
-
body:
|
|
659
|
+
body: JSON.stringify(mappedParams),
|
|
436
660
|
headers: {
|
|
437
|
-
Authorization: `Bearer ${token}
|
|
661
|
+
Authorization: `Bearer ${token}`,
|
|
662
|
+
"Content-Type": "application/json"
|
|
438
663
|
}
|
|
439
664
|
});
|
|
440
|
-
if (!
|
|
441
|
-
const error = new TaskError(await
|
|
665
|
+
if (!finalizeResponse.ok) {
|
|
666
|
+
const error = new TaskError(await prepareResponse.text(), options.taskTemplate);
|
|
442
667
|
taskIdPromise.reject(error);
|
|
443
668
|
resultPromise.reject(error);
|
|
444
669
|
return;
|
|
445
670
|
}
|
|
446
|
-
const payload = await
|
|
447
|
-
taskIdPromise.resolve(payload.
|
|
671
|
+
const payload = await finalizeResponse.json();
|
|
672
|
+
taskIdPromise.resolve(payload.taskId);
|
|
448
673
|
payloadPromise.resolve(payload);
|
|
449
674
|
if (onUpdate) {
|
|
450
675
|
taskUpdateHandlers.add(onUpdate);
|
|
451
676
|
startMonitoring();
|
|
452
677
|
}
|
|
453
678
|
})();
|
|
454
|
-
const asyncIterable =
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
taskUpdateHandlers.delete(
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
|
|
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();
|
|
463
688
|
});
|
|
464
689
|
return Object.assign(resultPromise.promise, asyncIterable, {
|
|
465
690
|
getTaskId() {
|
|
466
691
|
return taskIdPromise;
|
|
692
|
+
},
|
|
693
|
+
getTaskUrl() {
|
|
467
694
|
}
|
|
468
695
|
});
|
|
469
696
|
}
|
|
@@ -485,13 +712,8 @@ function watchTasks(options) {
|
|
|
485
712
|
}
|
|
486
713
|
})
|
|
487
714
|
});
|
|
488
|
-
const asyncIterable =
|
|
489
|
-
|
|
490
|
-
taskUpdateHandlers.add(push);
|
|
491
|
-
return () => {
|
|
492
|
-
taskUpdateHandlers.delete(push);
|
|
493
|
-
};
|
|
494
|
-
}
|
|
715
|
+
const asyncIterable = callbackToAsyncIterable((push) => {
|
|
716
|
+
taskUpdateHandlers.add(push);
|
|
495
717
|
});
|
|
496
718
|
const taskEvents = [
|
|
497
719
|
"taskStart",
|
|
@@ -510,7 +732,9 @@ function watchTasks(options) {
|
|
|
510
732
|
eventSource.close();
|
|
511
733
|
throw new Error("invalid update");
|
|
512
734
|
}
|
|
513
|
-
|
|
735
|
+
const update = updateResult.data;
|
|
736
|
+
const extendedUpdate = update.type === "nodeUpdate" ? { type: "nodeUpdate", data: mapOutput3(update.data) } : update;
|
|
737
|
+
taskUpdateHandlers.forEach((handler) => handler(extendedUpdate));
|
|
514
738
|
});
|
|
515
739
|
});
|
|
516
740
|
const stopWatching = () => {
|
|
@@ -525,5 +749,5 @@ export {
|
|
|
525
749
|
RequenceFile
|
|
526
750
|
};
|
|
527
751
|
|
|
528
|
-
//# debugId=
|
|
752
|
+
//# debugId=17D151A31EA3238664756E2164756E21
|
|
529
753
|
//# sourceMappingURL=index.js.map
|