@requence/task 1.0.0-alpha.1 → 1.0.0-alpha.3
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 +7 -0
- package/build/{chunk-s4kgf465.js → chunk-6pjtq0hg.js} +4 -5
- package/build/{chunk-s4kgf465.js.map → chunk-6pjtq0hg.js.map} +5 -5
- package/build/cli.js +15 -498
- package/build/cli.js.map +4 -8
- package/build/index.js +128 -45
- package/build/index.js.map +8 -6
- package/build/types/task/src/createTask.d.ts +110 -0
- package/build/types/task/src/createTask.d.ts.map +1 -0
- package/build/types/task/src/index.d.ts +2 -81
- package/build/types/task/src/index.d.ts.map +1 -1
- package/build/types/task/src/types.d.ts +637 -21
- package/build/types/task/src/types.d.ts.map +1 -1
- package/build/types/task/src/utils/callbackToAsyncIterator.d.ts +1 -1
- package/build/types/task/src/utils/callbackToAsyncIterator.d.ts.map +1 -1
- package/build/types/task/src/utils/getAccessToken.d.ts +5 -0
- package/build/types/task/src/utils/getAccessToken.d.ts.map +1 -0
- package/build/types/task/src/watchTasks.d.ts +105 -0
- package/build/types/task/src/watchTasks.d.ts.map +1 -0
- package/package.json +3 -2
package/build/index.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createRemotePromise,
|
|
3
3
|
deobfuscate
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-6pjtq0hg.js";
|
|
5
5
|
|
|
6
|
-
// src/
|
|
7
|
-
import { readFileSync } from "node:fs";
|
|
6
|
+
// src/createTask.ts
|
|
8
7
|
import { EventSource } from "eventsource";
|
|
9
|
-
import { z as z2 } from "zod";
|
|
10
8
|
|
|
11
9
|
// src/types.ts
|
|
12
10
|
import { z } from "zod";
|
|
@@ -32,20 +30,21 @@ var nodeInfoSchema = z.discriminatedUnion("type", [
|
|
|
32
30
|
serviceNodeInfoSchema,
|
|
33
31
|
logicNodeInfoSchema
|
|
34
32
|
]);
|
|
35
|
-
var
|
|
36
|
-
type: z.literal("taskStart"),
|
|
33
|
+
var baseUpdate = z.object({
|
|
37
34
|
timestamp: z.coerce.date(),
|
|
35
|
+
taskId: z.string().uuid()
|
|
36
|
+
});
|
|
37
|
+
var taskStartUpdateSchema = baseUpdate.extend({
|
|
38
|
+
type: z.literal("taskStart"),
|
|
38
39
|
input: z.unknown(),
|
|
39
40
|
meta: z.unknown()
|
|
40
41
|
});
|
|
41
|
-
var taskErrorUpdateSchema =
|
|
42
|
+
var taskErrorUpdateSchema = baseUpdate.extend({
|
|
42
43
|
type: z.literal("taskError"),
|
|
43
|
-
timestamp: z.coerce.date(),
|
|
44
44
|
error: z.string()
|
|
45
45
|
});
|
|
46
|
-
var taskEndUpdateSchema =
|
|
46
|
+
var taskEndUpdateSchema = baseUpdate.extend({
|
|
47
47
|
type: z.literal("taskEnd"),
|
|
48
|
-
timestamp: z.coerce.date(),
|
|
49
48
|
result: z.record(z.string(), z.unknown()),
|
|
50
49
|
partialResults: z.array(z.object({
|
|
51
50
|
node: nodeInfoSchema,
|
|
@@ -54,26 +53,26 @@ var taskEndUpdateSchema = z.object({
|
|
|
54
53
|
error: z.string().optional()
|
|
55
54
|
}))
|
|
56
55
|
});
|
|
57
|
-
var nodeStartUpdateSchema =
|
|
56
|
+
var nodeStartUpdateSchema = baseUpdate.extend({
|
|
58
57
|
type: z.literal("nodeStart"),
|
|
59
|
-
timestamp: z.coerce.date(),
|
|
60
58
|
node: nodeInfoSchema
|
|
61
59
|
});
|
|
62
|
-
var nodeUpdateUpdateSchema =
|
|
60
|
+
var nodeUpdateUpdateSchema = baseUpdate.extend({
|
|
63
61
|
type: z.literal("nodeUpdate"),
|
|
64
|
-
timestamp: z.coerce.date(),
|
|
65
62
|
data: z.unknown()
|
|
66
63
|
});
|
|
67
|
-
var nodeErrorUpdateSchema =
|
|
64
|
+
var nodeErrorUpdateSchema = baseUpdate.extend({
|
|
68
65
|
type: z.literal("nodeError"),
|
|
69
|
-
timestamp: z.coerce.date(),
|
|
70
66
|
error: z.string()
|
|
71
67
|
});
|
|
72
|
-
var nodeDeferUpdateSchema =
|
|
68
|
+
var nodeDeferUpdateSchema = baseUpdate.extend({
|
|
73
69
|
type: z.literal("nodeDefer"),
|
|
74
|
-
timestamp: z.coerce.date(),
|
|
75
70
|
reason: z.string().optional()
|
|
76
71
|
});
|
|
72
|
+
var nodeEndUpdateSchema = baseUpdate.extend({
|
|
73
|
+
type: z.literal("nodeEnd"),
|
|
74
|
+
node: nodeInfoSchema
|
|
75
|
+
});
|
|
77
76
|
var updateSchema = z.discriminatedUnion("type", [
|
|
78
77
|
taskStartUpdateSchema,
|
|
79
78
|
taskErrorUpdateSchema,
|
|
@@ -81,8 +80,10 @@ var updateSchema = z.discriminatedUnion("type", [
|
|
|
81
80
|
nodeStartUpdateSchema,
|
|
82
81
|
nodeUpdateUpdateSchema,
|
|
83
82
|
nodeErrorUpdateSchema,
|
|
84
|
-
nodeDeferUpdateSchema
|
|
83
|
+
nodeDeferUpdateSchema,
|
|
84
|
+
nodeEndUpdateSchema
|
|
85
85
|
]);
|
|
86
|
+
var eventSchema = z.object({ type: z.string(), data: z.string() }).transform((event) => ({ type: event.type, ...JSON.parse(event.data) })).pipe(updateSchema);
|
|
86
87
|
|
|
87
88
|
// src/utils/callbackToAsyncIterator.ts
|
|
88
89
|
function callbackToAsyncIterator(options) {
|
|
@@ -113,7 +114,9 @@ function callbackToAsyncIterator(options) {
|
|
|
113
114
|
return { value: undefined, done: true };
|
|
114
115
|
}
|
|
115
116
|
const value = await pullValue();
|
|
116
|
-
|
|
117
|
+
if (options.done) {
|
|
118
|
+
done = options.done(value);
|
|
119
|
+
}
|
|
117
120
|
return { value, done: false };
|
|
118
121
|
},
|
|
119
122
|
async return() {
|
|
@@ -125,30 +128,38 @@ function callbackToAsyncIterator(options) {
|
|
|
125
128
|
};
|
|
126
129
|
}
|
|
127
130
|
|
|
128
|
-
// src/
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
this.taskTemplate = taskTemplate;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
var eventSchema = z2.object({ type: z2.string(), data: z2.string() }).transform((event) => ({ type: event.type, ...JSON.parse(event.data) })).pipe(updateSchema);
|
|
137
|
-
function createTask(params, onUpdate) {
|
|
138
|
-
const taskUpdateHandlers = new Set;
|
|
139
|
-
const accessKey = params.accessToken ?? process.env.REQUENCE_ACCESS_TOKEN ?? JSON.parse(readFileSync("package.json", "utf-8")).requence?.accessToken;
|
|
140
|
-
if (!accessKey) {
|
|
131
|
+
// src/utils/getAccessToken.ts
|
|
132
|
+
import { readFileSync } from "node:fs";
|
|
133
|
+
function getAccessToken(accessToken) {
|
|
134
|
+
const token = accessToken ?? process.env.REQUENCE_ACCESS_TOKEN ?? JSON.parse(readFileSync("package.json", "utf-8")).requence?.accessToken;
|
|
135
|
+
if (!token) {
|
|
141
136
|
throw new Error(`No access token found
|
|
142
137
|
You can provide the access token as argument to createTask,
|
|
143
138
|
as environment variable REQUENCE_ACCESS_TOKEN or
|
|
144
139
|
in your package.json in requence.accessToken`);
|
|
145
140
|
}
|
|
146
|
-
const parts = deobfuscate(
|
|
141
|
+
const parts = deobfuscate(token);
|
|
147
142
|
if (parts.length < 2 || parts[0] !== "api") {
|
|
148
143
|
throw new Error("Invalid api key");
|
|
149
144
|
}
|
|
150
|
-
|
|
151
|
-
|
|
145
|
+
return {
|
|
146
|
+
token: parts[1],
|
|
147
|
+
apiBaseUrl: parts[2]
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// src/createTask.ts
|
|
152
|
+
class TaskError extends Error {
|
|
153
|
+
taskTemplate;
|
|
154
|
+
constructor(message, taskTemplate) {
|
|
155
|
+
super(message);
|
|
156
|
+
this.taskTemplate = taskTemplate;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
function createTask(options, onUpdate) {
|
|
160
|
+
const taskUpdateHandlers = new Set;
|
|
161
|
+
const { apiBaseUrl, token } = getAccessToken(options.accessToken);
|
|
162
|
+
const startUrl = `${apiBaseUrl}/task/start/${options.taskTemplate}`;
|
|
152
163
|
const payloadPromise = createRemotePromise();
|
|
153
164
|
let isMonitoring = false;
|
|
154
165
|
const startMonitoring = async () => {
|
|
@@ -157,6 +168,23 @@ in your package.json in requence.accessToken`);
|
|
|
157
168
|
}
|
|
158
169
|
isMonitoring = true;
|
|
159
170
|
const payload = await payloadPromise;
|
|
171
|
+
if (!payload.urls) {
|
|
172
|
+
resultPromise.resolve({
|
|
173
|
+
getInput() {
|
|
174
|
+
return input;
|
|
175
|
+
},
|
|
176
|
+
getMeta() {
|
|
177
|
+
return meta;
|
|
178
|
+
},
|
|
179
|
+
getError(_alias) {
|
|
180
|
+
return null;
|
|
181
|
+
},
|
|
182
|
+
getData(_alias) {
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
160
188
|
const eventSource = new EventSource(payload.urls.watch, {
|
|
161
189
|
fetch: (input2, init) => fetch(input2, {
|
|
162
190
|
...init,
|
|
@@ -172,7 +200,8 @@ in your package.json in requence.accessToken`);
|
|
|
172
200
|
"nodeStart",
|
|
173
201
|
"nodeUpdate",
|
|
174
202
|
"nodeDefer",
|
|
175
|
-
"nodeError"
|
|
203
|
+
"nodeError",
|
|
204
|
+
"nodeEnd"
|
|
176
205
|
];
|
|
177
206
|
let input = null;
|
|
178
207
|
let meta = null;
|
|
@@ -181,11 +210,10 @@ in your package.json in requence.accessToken`);
|
|
|
181
210
|
const updateResult = eventSchema.safeParse(event);
|
|
182
211
|
if (!updateResult.success) {
|
|
183
212
|
eventSource.close();
|
|
184
|
-
resultPromise.reject(new TaskError(`Invalid ${taskEvent} update received`,
|
|
213
|
+
resultPromise.reject(new TaskError(`Invalid ${taskEvent} update received`, options.taskTemplate));
|
|
185
214
|
return;
|
|
186
215
|
}
|
|
187
216
|
const update = updateResult.data;
|
|
188
|
-
taskUpdateHandlers.forEach((handler) => handler(update));
|
|
189
217
|
if (update.type === "taskEnd" || update.type === "taskError") {
|
|
190
218
|
eventSource.close();
|
|
191
219
|
}
|
|
@@ -214,8 +242,9 @@ in your package.json in requence.accessToken`);
|
|
|
214
242
|
});
|
|
215
243
|
}
|
|
216
244
|
if (update.type === "taskError") {
|
|
217
|
-
resultPromise.reject(new TaskError(update.error,
|
|
245
|
+
resultPromise.reject(new TaskError(update.error, options.taskTemplate));
|
|
218
246
|
}
|
|
247
|
+
taskUpdateHandlers.forEach((handler) => handler(update));
|
|
219
248
|
});
|
|
220
249
|
});
|
|
221
250
|
};
|
|
@@ -229,10 +258,10 @@ in your package.json in requence.accessToken`);
|
|
|
229
258
|
"Content-Type": "application/json",
|
|
230
259
|
Authorization: `Bearer ${token}`
|
|
231
260
|
},
|
|
232
|
-
body: JSON.stringify({ input:
|
|
261
|
+
body: JSON.stringify({ input: options.input, meta: options.meta })
|
|
233
262
|
});
|
|
234
263
|
if (!response.ok) {
|
|
235
|
-
const error = new TaskError(await response.text(),
|
|
264
|
+
const error = new TaskError(await response.text(), options.taskTemplate);
|
|
236
265
|
taskIdPromise.reject(error);
|
|
237
266
|
resultPromise.reject(error);
|
|
238
267
|
return;
|
|
@@ -249,6 +278,9 @@ in your package.json in requence.accessToken`);
|
|
|
249
278
|
subscribe: (push) => {
|
|
250
279
|
taskUpdateHandlers.add(push);
|
|
251
280
|
startMonitoring();
|
|
281
|
+
return () => {
|
|
282
|
+
taskUpdateHandlers.delete(push);
|
|
283
|
+
};
|
|
252
284
|
},
|
|
253
285
|
done: (value) => value.type === "taskError" || value.type === "taskEnd"
|
|
254
286
|
});
|
|
@@ -258,10 +290,61 @@ in your package.json in requence.accessToken`);
|
|
|
258
290
|
}
|
|
259
291
|
});
|
|
260
292
|
}
|
|
293
|
+
// src/watchTasks.ts
|
|
294
|
+
import { EventSource as EventSource2 } from "eventsource";
|
|
295
|
+
function watchTasks(options) {
|
|
296
|
+
const { apiBaseUrl, token } = getAccessToken(options.accessToken);
|
|
297
|
+
const taskUpdateHandlers = new Set;
|
|
298
|
+
if (options.onUpdate) {
|
|
299
|
+
taskUpdateHandlers.add(options.onUpdate);
|
|
300
|
+
}
|
|
301
|
+
const watchUrl = new URL(`${apiBaseUrl}/task/watch-all`);
|
|
302
|
+
watchUrl.searchParams.set("since", options.since.toISOString());
|
|
303
|
+
const eventSource = new EventSource2(watchUrl, {
|
|
304
|
+
fetch: (input, init) => fetch(input, {
|
|
305
|
+
...init,
|
|
306
|
+
headers: {
|
|
307
|
+
Authorization: `Bearer ${token}`
|
|
308
|
+
}
|
|
309
|
+
})
|
|
310
|
+
});
|
|
311
|
+
const asyncIterable = callbackToAsyncIterator({
|
|
312
|
+
subscribe: (push) => {
|
|
313
|
+
taskUpdateHandlers.add(push);
|
|
314
|
+
return () => {
|
|
315
|
+
taskUpdateHandlers.delete(push);
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
const taskEvents = [
|
|
320
|
+
"taskStart",
|
|
321
|
+
"taskError",
|
|
322
|
+
"taskEnd",
|
|
323
|
+
"nodeStart",
|
|
324
|
+
"nodeUpdate",
|
|
325
|
+
"nodeDefer",
|
|
326
|
+
"nodeError",
|
|
327
|
+
"nodeEnd"
|
|
328
|
+
];
|
|
329
|
+
taskEvents.forEach((taskEvent) => {
|
|
330
|
+
eventSource.addEventListener(taskEvent, (event) => {
|
|
331
|
+
const updateResult = eventSchema.safeParse(event);
|
|
332
|
+
if (!updateResult.success) {
|
|
333
|
+
eventSource.close();
|
|
334
|
+
throw new Error("invalid update");
|
|
335
|
+
}
|
|
336
|
+
taskUpdateHandlers.forEach((handler) => handler(updateResult.data));
|
|
337
|
+
});
|
|
338
|
+
});
|
|
339
|
+
const stopWatching = () => {
|
|
340
|
+
eventSource.close();
|
|
341
|
+
};
|
|
342
|
+
return Object.assign(stopWatching, asyncIterable);
|
|
343
|
+
}
|
|
261
344
|
export {
|
|
262
|
-
|
|
263
|
-
|
|
345
|
+
watchTasks,
|
|
346
|
+
createTask
|
|
264
347
|
};
|
|
265
348
|
|
|
266
|
-
//# debugId=
|
|
349
|
+
//# debugId=13556CDD3F92A75464756E2164756E21
|
|
267
350
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/
|
|
3
|
+
"sources": ["../src/createTask.ts", "../src/types.ts", "../src/utils/callbackToAsyncIterator.ts", "../src/utils/getAccessToken.ts", "../src/watchTasks.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import {
|
|
6
|
-
"import { z } from 'zod'\n\ntype Prettify<T> = {\n [K in keyof T]: T[K]\n} & {}\n\ntype IfUnknown<T, Then, Else> = unknown extends T\n ? T extends unknown\n ? Then\n : Else\n : Else\n\ntype IfNull<T, Then, Else> = T extends null\n ? null extends T\n ? Then\n : Else\n : Else\n\nexport type CreateTaskOptions<T> = {\n taskTemplate: T\n accessToken?: string\n} & IfNull<\n Input<T>,\n { input?: null },\n IfUnknown<Input<T>, { input?: any }, { input: Input<T> }>\n> &\n IfNull<\n Meta<T>,\n { meta?: null },\n IfUnknown<Meta<T>, { meta?: any }, { meta: Meta<T> }>\n >\n\ntype Input<T> = T extends keyof Requence.TaskTemplate\n ? Requence.TaskTemplate[T]['input']\n : unknown\ntype Meta<T> = T extends keyof Requence.TaskTemplate\n ? Requence.TaskTemplate[T]['meta']\n : unknown\ntype Data<T> = T extends keyof Requence.TaskTemplate\n ? Prettify<Requence.TaskTemplate[T]['results']>\n : unknown\ntype NamedData<T, A> = T extends keyof Requence.TaskTemplate\n ? A extends keyof Requence.TaskTemplate[T]['namedResults']\n ? Prettify<Requence.TaskTemplate[T]['namedResults'][A]>\n : unknown\n : unknown\ntype Alias<T> = T extends keyof Requence.TaskTemplate\n ? keyof Requence.TaskTemplate[T]['namedResults']\n : string\n\nexport interface Result<T> {\n getInput(): Input<T>\n getMeta(): Meta<T>\n getData: {\n (): Data<T>\n <A extends Alias<T>>(alias: A): NamedData<T, A>\n }\n getError(alias: Alias<T>): string | null\n}\n\nconst serviceNodeInfoSchema = z.object({\n id: z.string().uuid(),\n type: z.literal('service'),\n alias: z.string().optional(),\n service: z\n .object({\n id: z.string().uuid(),\n name: z.string(),\n version: z.string(),\n })\n .optional(),\n})\n\nconst logicNodeInfoSchema = z.object({\n id: z.string().uuid(),\n type: z.literal('logic'),\n alias: z.string().optional(),\n logic: z\n .object({\n language: z.enum(['typescript', 'javascript', 'python']),\n })\n .optional(),\n})\n\nconst nodeInfoSchema = z.discriminatedUnion('type', [\n serviceNodeInfoSchema,\n logicNodeInfoSchema,\n])\n\nconst
|
|
7
|
-
"export default function callbackToAsyncIterator<T>(options: {\n subscribe: (push: (value: T) => void) => void | (() => void)\n done
|
|
5
|
+
"import { createRemotePromise } from '@requence/helpers'\nimport { EventSource } from 'eventsource'\n\nimport {\n type CreateTaskOptions,\n type Result,\n type Update,\n eventSchema,\n} from './types.ts'\nimport callbackToAsyncIterator from './utils/callbackToAsyncIterator.ts'\nimport getAccessToken from './utils/getAccessToken.ts'\n\nexport class TaskError extends Error {\n constructor(\n message: string,\n public readonly taskTemplate: string,\n ) {\n super(message)\n }\n}\n\ntype TaskUpdateHandler = (update: Update) => void\n\nexport function createTask<\n T extends keyof Requence.TaskTemplate | (string & {}),\n>(options: CreateTaskOptions<T>, onUpdate?: TaskUpdateHandler) {\n const taskUpdateHandlers = new Set<TaskUpdateHandler>()\n\n const { apiBaseUrl, token } = getAccessToken(options.accessToken)\n\n const startUrl = `${apiBaseUrl}/task/start/${options.taskTemplate}`\n\n const payloadPromise = createRemotePromise<{\n id: string\n urls?: { watch: string }\n }>()\n\n let isMonitoring = false\n const startMonitoring = async () => {\n if (isMonitoring) {\n return\n }\n\n isMonitoring = true\n const payload = await payloadPromise\n\n if (!payload.urls) {\n resultPromise.resolve({\n getInput() {\n return input\n },\n getMeta() {\n return meta\n },\n getError(_alias) {\n return null\n },\n getData(_alias) {\n return null\n },\n } as Result<T>)\n return\n }\n\n const eventSource = new EventSource(payload.urls.watch, {\n fetch: (input, init) =>\n fetch(input, {\n ...init,\n headers: {\n Authorization: `Bearer ${token}`,\n },\n }),\n })\n\n const taskEvents: Array<Update['type']> = [\n 'taskStart',\n 'taskError',\n 'taskEnd',\n 'nodeStart',\n 'nodeUpdate',\n 'nodeDefer',\n 'nodeError',\n 'nodeEnd',\n ]\n\n let input: unknown = null\n let meta: unknown = null\n taskEvents.forEach((taskEvent) => {\n eventSource.addEventListener(taskEvent, (event) => {\n const updateResult = eventSchema.safeParse(event)\n\n if (!updateResult.success) {\n eventSource.close()\n resultPromise.reject(\n new TaskError(\n `Invalid ${taskEvent} update received`,\n options.taskTemplate,\n ),\n )\n return\n }\n\n const update = updateResult.data\n\n if (update.type === 'taskEnd' || update.type === 'taskError') {\n eventSource.close()\n }\n\n if (update.type === 'taskStart') {\n input = update.input\n meta = update.meta\n }\n\n if (update.type === 'taskEnd') {\n const getPartialResult = (alias: string) =>\n update.partialResults.find(\n (partialResult) => partialResult.node.alias === alias,\n )\n\n resultPromise.resolve({\n getInput() {\n return input\n },\n getMeta() {\n return meta\n },\n getError(alias) {\n return getPartialResult(alias)?.error ?? null\n },\n getData(alias) {\n if (!alias) {\n return update.result\n }\n\n return getPartialResult(alias)?.data ?? null\n },\n } as Result<T>)\n }\n\n if (update.type === 'taskError') {\n resultPromise.reject(\n new TaskError(update.error, options.taskTemplate),\n )\n }\n\n taskUpdateHandlers.forEach((handler) => handler(update))\n })\n })\n }\n\n const taskIdPromise = createRemotePromise<string>()\n const resultPromise = createRemotePromise<Result<T>>(startMonitoring)\n\n ;(async () => {\n const response = await fetch(startUrl, {\n method: 'post',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n },\n body: JSON.stringify({ input: options.input, meta: options.meta }),\n })\n\n if (!response.ok) {\n const error = new TaskError(await response.text(), options.taskTemplate)\n taskIdPromise.reject(error)\n resultPromise.reject(error)\n return\n }\n\n const payload = await response.json()\n taskIdPromise.resolve(payload.id)\n payloadPromise.resolve(payload)\n if (onUpdate) {\n taskUpdateHandlers.add(onUpdate)\n startMonitoring()\n }\n })()\n\n const asyncIterable = callbackToAsyncIterator<Update>({\n subscribe: (push) => {\n taskUpdateHandlers.add(push)\n startMonitoring()\n\n return () => {\n taskUpdateHandlers.delete(push)\n }\n },\n done: (value) => value.type === 'taskError' || value.type === 'taskEnd',\n })\n\n return Object.assign(resultPromise.promise, asyncIterable, {\n getTaskId() {\n return taskIdPromise\n },\n })\n}\n",
|
|
6
|
+
"import { z } from 'zod'\n\ntype Prettify<T> = {\n [K in keyof T]: T[K]\n} & {}\n\ntype IfUnknown<T, Then, Else> = unknown extends T\n ? T extends unknown\n ? Then\n : Else\n : Else\n\ntype IfNull<T, Then, Else> = T extends null\n ? null extends T\n ? Then\n : Else\n : Else\n\nexport type CreateTaskOptions<T> = {\n taskTemplate: T\n accessToken?: string\n} & IfNull<\n Input<T>,\n { input?: null },\n IfUnknown<Input<T>, { input?: any }, { input: Input<T> }>\n> &\n IfNull<\n Meta<T>,\n { meta?: null },\n IfUnknown<Meta<T>, { meta?: any }, { meta: Meta<T> }>\n >\n\ntype Input<T> = T extends keyof Requence.TaskTemplate\n ? Requence.TaskTemplate[T]['input']\n : unknown\ntype Meta<T> = T extends keyof Requence.TaskTemplate\n ? Requence.TaskTemplate[T]['meta']\n : unknown\ntype Data<T> = T extends keyof Requence.TaskTemplate\n ? Prettify<Requence.TaskTemplate[T]['results']>\n : unknown\ntype NamedData<T, A> = T extends keyof Requence.TaskTemplate\n ? A extends keyof Requence.TaskTemplate[T]['namedResults']\n ? Prettify<Requence.TaskTemplate[T]['namedResults'][A]>\n : unknown\n : unknown\ntype Alias<T> = T extends keyof Requence.TaskTemplate\n ? keyof Requence.TaskTemplate[T]['namedResults']\n : string\n\nexport interface Result<T> {\n getInput(): Input<T>\n getMeta(): Meta<T>\n getData: {\n (): Data<T>\n <A extends Alias<T>>(alias: A): NamedData<T, A>\n }\n getError(alias: Alias<T>): string | null\n}\n\nconst serviceNodeInfoSchema = z.object({\n id: z.string().uuid(),\n type: z.literal('service'),\n alias: z.string().optional(),\n service: z\n .object({\n id: z.string().uuid(),\n name: z.string(),\n version: z.string(),\n })\n .optional(),\n})\n\nconst logicNodeInfoSchema = z.object({\n id: z.string().uuid(),\n type: z.literal('logic'),\n alias: z.string().optional(),\n logic: z\n .object({\n language: z.enum(['typescript', 'javascript', 'python']),\n })\n .optional(),\n})\n\nconst nodeInfoSchema = z.discriminatedUnion('type', [\n serviceNodeInfoSchema,\n logicNodeInfoSchema,\n])\n\nconst baseUpdate = z.object({\n timestamp: z.coerce.date(),\n taskId: z.string().uuid(),\n})\n\nconst taskStartUpdateSchema = baseUpdate.extend({\n type: z.literal('taskStart'),\n input: z.unknown(),\n meta: z.unknown(),\n})\n\nconst taskErrorUpdateSchema = baseUpdate.extend({\n type: z.literal('taskError'),\n error: z.string(),\n})\n\nconst taskEndUpdateSchema = baseUpdate.extend({\n type: z.literal('taskEnd'),\n result: z.record(z.string(), z.unknown()),\n partialResults: z.array(\n z.object({\n node: nodeInfoSchema,\n timestamp: z.coerce.date().nullable(),\n data: z.unknown(),\n error: z.string().optional(),\n }),\n ),\n})\n\nconst nodeStartUpdateSchema = baseUpdate.extend({\n type: z.literal('nodeStart'),\n node: nodeInfoSchema,\n})\n\nconst nodeUpdateUpdateSchema = baseUpdate.extend({\n type: z.literal('nodeUpdate'),\n data: z.unknown(),\n})\n\nconst nodeErrorUpdateSchema = baseUpdate.extend({\n type: z.literal('nodeError'),\n error: z.string(),\n})\n\nconst nodeDeferUpdateSchema = baseUpdate.extend({\n type: z.literal('nodeDefer'),\n reason: z.string().optional(),\n})\n\nconst nodeEndUpdateSchema = baseUpdate.extend({\n type: z.literal('nodeEnd'),\n node: nodeInfoSchema,\n})\n\nexport const updateSchema = z.discriminatedUnion('type', [\n taskStartUpdateSchema,\n taskErrorUpdateSchema,\n taskEndUpdateSchema,\n nodeStartUpdateSchema,\n nodeUpdateUpdateSchema,\n nodeErrorUpdateSchema,\n nodeDeferUpdateSchema,\n nodeEndUpdateSchema,\n])\n\nexport type Update = z.infer<typeof updateSchema>\n\nexport const eventSchema = z\n .object({ type: z.string(), data: z.string() })\n .transform((event) => ({ type: event.type, ...JSON.parse(event.data) }))\n .pipe(updateSchema)\n",
|
|
7
|
+
"export default function callbackToAsyncIterator<T>(options: {\n subscribe: (push: (value: T) => void) => void | (() => void)\n done?: (value: T) => boolean\n}): AsyncIterable<T> {\n const pullQueue: Array<(value: T) => void> = []\n const pushQueue: Array<T> = []\n\n const pushValue = (value: T) => {\n if (pullQueue.length !== 0) {\n const resolver = pullQueue.shift()\n resolver!(value)\n } else {\n pushQueue.push(value)\n }\n }\n\n const pullValue = () =>\n new Promise<T>((resolve) => {\n if (pushQueue.length !== 0) {\n resolve(pushQueue.shift()!)\n } else {\n pullQueue.push(resolve)\n }\n })\n\n return {\n [Symbol.asyncIterator]() {\n let done = false\n const unsubscribe = options.subscribe(pushValue)\n return {\n async next() {\n if (done) {\n return { value: undefined, done: true }\n }\n\n const value = await pullValue()\n if (options.done) {\n done = options.done(value)\n }\n return { value, done: false }\n },\n async return() {\n unsubscribe?.()\n return { value: undefined, done: true }\n },\n }\n },\n }\n}\n",
|
|
8
|
+
"import { readFileSync } from 'node:fs'\n\nimport { deobfuscate } from '@requence/helpers'\n\nexport default function getAccessToken(accessToken?: string) {\n const token =\n accessToken ??\n process.env.REQUENCE_ACCESS_TOKEN ??\n (JSON.parse(readFileSync('package.json', 'utf-8')) as any).requence\n ?.accessToken\n\n if (!token) {\n throw new Error(\n 'No access token found\\nYou can provide the access token as argument to createTask,\\nas environment variable REQUENCE_ACCESS_TOKEN or\\nin your package.json in requence.accessToken',\n )\n }\n\n const parts = deobfuscate(token)\n if (parts.length < 2 || parts[0] !== 'api') {\n throw new Error('Invalid api key')\n }\n\n return {\n token: parts[1],\n apiBaseUrl: parts[2],\n }\n}\n",
|
|
9
|
+
"import { EventSource } from 'eventsource'\n\nimport { type Update, eventSchema } from './types.ts'\nimport callbackToAsyncIterator from './utils/callbackToAsyncIterator.ts'\nimport getAccessToken from './utils/getAccessToken.ts'\n\ntype TaskUpdateHandler = (update: Update) => void\n\ninterface WatchTasksOptions {\n accessToken?: string\n since: Date\n onUpdate?: TaskUpdateHandler\n}\nexport function watchTasks(options: WatchTasksOptions) {\n const { apiBaseUrl, token } = getAccessToken(options.accessToken)\n const taskUpdateHandlers = new Set<TaskUpdateHandler>()\n\n if (options.onUpdate) {\n taskUpdateHandlers.add(options.onUpdate)\n }\n\n const watchUrl = new URL(`${apiBaseUrl}/task/watch-all`)\n watchUrl.searchParams.set('since', options.since.toISOString())\n\n const eventSource = new EventSource(watchUrl, {\n fetch: (input, init) =>\n fetch(input, {\n ...init,\n headers: {\n Authorization: `Bearer ${token}`,\n },\n }),\n })\n\n const asyncIterable = callbackToAsyncIterator<Update>({\n subscribe: (push) => {\n taskUpdateHandlers.add(push)\n return () => {\n taskUpdateHandlers.delete(push)\n }\n },\n })\n\n const taskEvents: Array<Update['type']> = [\n 'taskStart',\n 'taskError',\n 'taskEnd',\n 'nodeStart',\n 'nodeUpdate',\n 'nodeDefer',\n 'nodeError',\n 'nodeEnd',\n ]\n\n taskEvents.forEach((taskEvent) => {\n eventSource.addEventListener(taskEvent, (event) => {\n const updateResult = eventSchema.safeParse(event)\n\n if (!updateResult.success) {\n eventSource.close()\n throw new Error('invalid update')\n }\n\n taskUpdateHandlers.forEach((handler) => handler(updateResult.data))\n })\n })\n\n const stopWatching = () => {\n eventSource.close()\n }\n\n return Object.assign(stopWatching, asyncIterable)\n}\n"
|
|
8
10
|
],
|
|
9
|
-
"mappings": ";;;;;;
|
|
10
|
-
"debugId": "
|
|
11
|
+
"mappings": "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",
|
|
12
|
+
"debugId": "13556CDD3F92A75464756E2164756E21",
|
|
11
13
|
"names": []
|
|
12
14
|
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { type CreateTaskOptions, type Result, type Update } from './types.ts';
|
|
2
|
+
export declare class TaskError extends Error {
|
|
3
|
+
readonly taskTemplate: string;
|
|
4
|
+
constructor(message: string, taskTemplate: string);
|
|
5
|
+
}
|
|
6
|
+
type TaskUpdateHandler = (update: Update) => void;
|
|
7
|
+
export declare function createTask<T extends keyof Requence.TaskTemplate | (string & {})>(options: CreateTaskOptions<T>, onUpdate?: TaskUpdateHandler): Promise<Result<T>> & AsyncIterable<{
|
|
8
|
+
type: "taskStart";
|
|
9
|
+
timestamp: Date;
|
|
10
|
+
taskId: string;
|
|
11
|
+
input?: unknown;
|
|
12
|
+
meta?: unknown;
|
|
13
|
+
} | {
|
|
14
|
+
type: "taskError";
|
|
15
|
+
timestamp: Date;
|
|
16
|
+
taskId: string;
|
|
17
|
+
error: string;
|
|
18
|
+
} | {
|
|
19
|
+
type: "taskEnd";
|
|
20
|
+
timestamp: Date;
|
|
21
|
+
taskId: string;
|
|
22
|
+
result: Record<string, unknown>;
|
|
23
|
+
partialResults: {
|
|
24
|
+
timestamp: Date | null;
|
|
25
|
+
node: {
|
|
26
|
+
type: "service";
|
|
27
|
+
id: string;
|
|
28
|
+
service?: {
|
|
29
|
+
id: string;
|
|
30
|
+
name: string;
|
|
31
|
+
version: string;
|
|
32
|
+
} | undefined;
|
|
33
|
+
alias?: string | undefined;
|
|
34
|
+
} | {
|
|
35
|
+
type: "logic";
|
|
36
|
+
id: string;
|
|
37
|
+
alias?: string | undefined;
|
|
38
|
+
logic?: {
|
|
39
|
+
language: "typescript" | "javascript" | "python";
|
|
40
|
+
} | undefined;
|
|
41
|
+
};
|
|
42
|
+
error?: string | undefined;
|
|
43
|
+
data?: unknown;
|
|
44
|
+
}[];
|
|
45
|
+
} | {
|
|
46
|
+
type: "nodeStart";
|
|
47
|
+
timestamp: Date;
|
|
48
|
+
taskId: string;
|
|
49
|
+
node: {
|
|
50
|
+
type: "service";
|
|
51
|
+
id: string;
|
|
52
|
+
service?: {
|
|
53
|
+
id: string;
|
|
54
|
+
name: string;
|
|
55
|
+
version: string;
|
|
56
|
+
} | undefined;
|
|
57
|
+
alias?: string | undefined;
|
|
58
|
+
} | {
|
|
59
|
+
type: "logic";
|
|
60
|
+
id: string;
|
|
61
|
+
alias?: string | undefined;
|
|
62
|
+
logic?: {
|
|
63
|
+
language: "typescript" | "javascript" | "python";
|
|
64
|
+
} | undefined;
|
|
65
|
+
};
|
|
66
|
+
} | {
|
|
67
|
+
type: "nodeUpdate";
|
|
68
|
+
timestamp: Date;
|
|
69
|
+
taskId: string;
|
|
70
|
+
data?: unknown;
|
|
71
|
+
} | {
|
|
72
|
+
type: "nodeError";
|
|
73
|
+
timestamp: Date;
|
|
74
|
+
taskId: string;
|
|
75
|
+
error: string;
|
|
76
|
+
} | {
|
|
77
|
+
type: "nodeDefer";
|
|
78
|
+
timestamp: Date;
|
|
79
|
+
taskId: string;
|
|
80
|
+
reason?: string | undefined;
|
|
81
|
+
} | {
|
|
82
|
+
type: "nodeEnd";
|
|
83
|
+
timestamp: Date;
|
|
84
|
+
taskId: string;
|
|
85
|
+
node: {
|
|
86
|
+
type: "service";
|
|
87
|
+
id: string;
|
|
88
|
+
service?: {
|
|
89
|
+
id: string;
|
|
90
|
+
name: string;
|
|
91
|
+
version: string;
|
|
92
|
+
} | undefined;
|
|
93
|
+
alias?: string | undefined;
|
|
94
|
+
} | {
|
|
95
|
+
type: "logic";
|
|
96
|
+
id: string;
|
|
97
|
+
alias?: string | undefined;
|
|
98
|
+
logic?: {
|
|
99
|
+
language: "typescript" | "javascript" | "python";
|
|
100
|
+
} | undefined;
|
|
101
|
+
};
|
|
102
|
+
}> & {
|
|
103
|
+
getTaskId(): Promise<string> & {
|
|
104
|
+
resolve: (value: string | PromiseLike<string>) => void;
|
|
105
|
+
reject: (reason?: any) => void;
|
|
106
|
+
promise: Promise<string>;
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
export {};
|
|
110
|
+
//# sourceMappingURL=createTask.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createTask.d.ts","sourceRoot":"","sources":["../../../../src/createTask.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,MAAM,EACX,KAAK,MAAM,EAEZ,MAAM,YAAY,CAAA;AAInB,qBAAa,SAAU,SAAQ,KAAK;aAGhB,YAAY,EAAE,MAAM;gBADpC,OAAO,EAAE,MAAM,EACC,YAAY,EAAE,MAAM;CAIvC;AAED,KAAK,iBAAiB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;AAEjD,wBAAgB,UAAU,CACxB,CAAC,SAAS,MAAM,QAAQ,CAAC,YAAY,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,EACrD,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4K5D"}
|
|
@@ -1,82 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
readonly taskTemplate: string;
|
|
4
|
-
constructor(message: string, taskTemplate: string);
|
|
5
|
-
}
|
|
6
|
-
type TaskUpdateHandler = (update: Update) => void;
|
|
7
|
-
export declare function createTask<T extends keyof Requence.TaskTemplate | (string & {})>(params: CreateTaskOptions<T>, onUpdate?: TaskUpdateHandler): Promise<Result<T>> & AsyncIterable<{
|
|
8
|
-
type: "taskStart";
|
|
9
|
-
timestamp: Date;
|
|
10
|
-
input?: unknown;
|
|
11
|
-
meta?: unknown;
|
|
12
|
-
} | {
|
|
13
|
-
type: "taskError";
|
|
14
|
-
timestamp: Date;
|
|
15
|
-
error: string;
|
|
16
|
-
} | {
|
|
17
|
-
type: "taskEnd";
|
|
18
|
-
timestamp: Date;
|
|
19
|
-
result: Record<string, unknown>;
|
|
20
|
-
partialResults: {
|
|
21
|
-
timestamp: Date | null;
|
|
22
|
-
node: {
|
|
23
|
-
type: "service";
|
|
24
|
-
id: string;
|
|
25
|
-
service?: {
|
|
26
|
-
id: string;
|
|
27
|
-
name: string;
|
|
28
|
-
version: string;
|
|
29
|
-
} | undefined;
|
|
30
|
-
alias?: string | undefined;
|
|
31
|
-
} | {
|
|
32
|
-
type: "logic";
|
|
33
|
-
id: string;
|
|
34
|
-
alias?: string | undefined;
|
|
35
|
-
logic?: {
|
|
36
|
-
language: "typescript" | "javascript" | "python";
|
|
37
|
-
} | undefined;
|
|
38
|
-
};
|
|
39
|
-
error?: string | undefined;
|
|
40
|
-
data?: unknown;
|
|
41
|
-
}[];
|
|
42
|
-
} | {
|
|
43
|
-
type: "nodeStart";
|
|
44
|
-
timestamp: Date;
|
|
45
|
-
node: {
|
|
46
|
-
type: "service";
|
|
47
|
-
id: string;
|
|
48
|
-
service?: {
|
|
49
|
-
id: string;
|
|
50
|
-
name: string;
|
|
51
|
-
version: string;
|
|
52
|
-
} | undefined;
|
|
53
|
-
alias?: string | undefined;
|
|
54
|
-
} | {
|
|
55
|
-
type: "logic";
|
|
56
|
-
id: string;
|
|
57
|
-
alias?: string | undefined;
|
|
58
|
-
logic?: {
|
|
59
|
-
language: "typescript" | "javascript" | "python";
|
|
60
|
-
} | undefined;
|
|
61
|
-
};
|
|
62
|
-
} | {
|
|
63
|
-
type: "nodeUpdate";
|
|
64
|
-
timestamp: Date;
|
|
65
|
-
data?: unknown;
|
|
66
|
-
} | {
|
|
67
|
-
type: "nodeError";
|
|
68
|
-
timestamp: Date;
|
|
69
|
-
error: string;
|
|
70
|
-
} | {
|
|
71
|
-
type: "nodeDefer";
|
|
72
|
-
timestamp: Date;
|
|
73
|
-
reason?: string | undefined;
|
|
74
|
-
}> & {
|
|
75
|
-
getTaskId(): Promise<string> & {
|
|
76
|
-
resolve: (value: string | PromiseLike<string>) => void;
|
|
77
|
-
reject: (reason?: any) => void;
|
|
78
|
-
promise: Promise<string>;
|
|
79
|
-
};
|
|
80
|
-
};
|
|
81
|
-
export {};
|
|
1
|
+
export { createTask } from './createTask.ts';
|
|
2
|
+
export { watchTasks } from './watchTasks.ts';
|
|
82
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"}
|