@requence/task 1.0.0-alpha.19 → 1.0.0-alpha.20

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # @requence/task
2
2
 
3
+ ## 1.0.0-alpha.20
4
+
5
+ ### Patch Changes
6
+
7
+ - e83bf22: improve task updates
8
+
3
9
  ## 1.0.0-alpha.19
4
10
 
5
11
  ### Patch Changes
package/build/index.js CHANGED
@@ -140,6 +140,9 @@ function mapData(data, visitors) {
140
140
  return traverseData(data, []);
141
141
  }
142
142
 
143
+ // ../helpers/src/context/context.ts
144
+ import { z as z3 } from "zod";
145
+
143
146
  // ../helpers/src/files/index.ts
144
147
  import { z as z2 } from "zod";
145
148
 
@@ -398,6 +401,104 @@ function isStreamObject(data) {
398
401
  return streamObjectSchema.safeParse(data).success;
399
402
  }
400
403
 
404
+ // ../helpers/src/context/context.ts
405
+ var contextSchema = z3.object({
406
+ input: z3.any(),
407
+ meta: z3.any(),
408
+ tenant: z3.object({ name: z3.string() }),
409
+ data: z3.record(z3.string(), z3.any()),
410
+ errors: z3.record(z3.string(), z3.string()),
411
+ dates: z3.record(z3.string(), z3.string().datetime())
412
+ });
413
+ var internalKey = Symbol.for("internal");
414
+ function resolveRequenceTypes(data) {
415
+ return mapData(data, {
416
+ Object(obj) {
417
+ if (isFileObject(obj)) {
418
+ return RequenceFile.fromFileObject(obj);
419
+ }
420
+ if (isStreamObject(obj)) {
421
+ return RequenceStream.fromStreamObject(obj);
422
+ }
423
+ }
424
+ });
425
+ }
426
+ function createContextHelper(context, nodes) {
427
+ const input = resolveRequenceTypes(context.input);
428
+ const meta = resolveRequenceTypes(context.meta);
429
+ const results = new Map(nodes.map((node) => [
430
+ node.id,
431
+ {
432
+ node,
433
+ executionDate: node.id in context.dates ? new Date(context.dates[node.id]) : null,
434
+ data: resolveRequenceTypes(context.data[node.id] ?? null),
435
+ error: context.errors[node.id] ?? null
436
+ }
437
+ ]));
438
+ const lookUpMap = new Map;
439
+ for (const node of nodes) {
440
+ const alias = typeof node.meta?.mapAlias === "string" ? node.meta.mapAlias : ("alias" in node) && node.alias;
441
+ if (alias) {
442
+ if (lookUpMap.has(alias)) {
443
+ lookUpMap.get(alias).push(node.id);
444
+ } else {
445
+ lookUpMap.set(alias, [node.id]);
446
+ }
447
+ }
448
+ const name = typeof node.meta?.mapName === "string" ? node.meta.mapName : node.type === "service" && node.name;
449
+ if (name) {
450
+ if (lookUpMap.has(name)) {
451
+ lookUpMap.get(name).push(node.id);
452
+ } else {
453
+ lookUpMap.set(name, [node.id]);
454
+ }
455
+ }
456
+ }
457
+ return {
458
+ [internalKey]: {
459
+ results
460
+ },
461
+ getInput() {
462
+ return input;
463
+ },
464
+ getMeta() {
465
+ return meta;
466
+ },
467
+ getData(alias) {
468
+ if (alias) {
469
+ const nodeIds = lookUpMap.get(alias);
470
+ if (!nodeIds) {
471
+ return null;
472
+ }
473
+ const uniqueNodeIds = Array.from(new Set(nodeIds));
474
+ const combinedData = uniqueNodeIds.map((nodeId) => results.get(nodeId)?.data).filter(Boolean);
475
+ if (combinedData.length === 0) {
476
+ return null;
477
+ }
478
+ if (combinedData.length === 1) {
479
+ return combinedData[0];
480
+ }
481
+ if (combinedData.every(isRecord)) {
482
+ return combinedData.reduce((acc, data) => ({ ...acc, ...data }), {});
483
+ }
484
+ return combinedData;
485
+ }
486
+ return Array.from(results.values()).filter((result) => result.executionDate && isRecord(result.data)).toSorted((a, b) => a.executionDate.getTime() - b.executionDate.getTime()).reduce((acc, result) => ({
487
+ ...acc,
488
+ ...result.data
489
+ }), isRecord(input) ? input : {});
490
+ },
491
+ getError(alias) {
492
+ const nodeIds = lookUpMap.get(alias);
493
+ if (!nodeIds) {
494
+ return null;
495
+ }
496
+ return nodeIds.map((nodeId) => results.get(nodeId)?.error).filter((str) => typeof str === "string").join(`
497
+ `);
498
+ }
499
+ };
500
+ }
501
+
401
502
  // src/createTask.ts
402
503
  import { EventSource } from "eventsource";
403
504
 
@@ -417,7 +518,7 @@ in your package.json in requence.accessToken`);
417
518
  }
418
519
  const parts = deobfuscate(token);
419
520
  if (parts.length < 2 || parts[0] !== "api") {
420
- throw new Error("Invalid api key");
521
+ throw new Error("Invalid access token");
421
522
  }
422
523
  return {
423
524
  token: parts[1],
@@ -449,77 +550,71 @@ async function abortTask(options) {
449
550
  }
450
551
 
451
552
  // src/types.ts
452
- import { z as z3 } from "zod";
453
- var serviceNodeInfoSchema = z3.object({
454
- id: z3.string().uuid(),
455
- type: z3.literal("service"),
456
- alias: z3.string().optional(),
457
- service: z3.object({
458
- id: z3.string().uuid(),
459
- name: z3.string(),
460
- version: z3.string()
553
+ import { z as z4 } from "zod";
554
+ var serviceNodeInfoSchema = z4.object({
555
+ id: z4.string().uuid(),
556
+ type: z4.literal("service"),
557
+ alias: z4.string().optional(),
558
+ service: z4.object({
559
+ id: z4.string().uuid(),
560
+ name: z4.string(),
561
+ version: z4.string()
461
562
  }).optional()
462
563
  });
463
- var logicNodeInfoSchema = z3.object({
464
- id: z3.string().uuid(),
465
- type: z3.literal("logic"),
466
- alias: z3.string().optional(),
467
- logic: z3.object({
468
- language: z3.enum(["typescript", "javascript", "python"])
564
+ var logicNodeInfoSchema = z4.object({
565
+ id: z4.string().uuid(),
566
+ type: z4.literal("logic"),
567
+ alias: z4.string().optional(),
568
+ logic: z4.object({
569
+ language: z4.enum(["typescript", "javascript", "python"])
469
570
  }).optional()
470
571
  });
471
- var nodeInfoSchema = z3.discriminatedUnion("type", [
572
+ var nodeInfoSchema = z4.discriminatedUnion("type", [
472
573
  serviceNodeInfoSchema,
473
574
  logicNodeInfoSchema
474
575
  ]);
475
- var baseUpdate = z3.object({
476
- timestamp: z3.coerce.date(),
477
- taskId: z3.string().uuid()
576
+ var baseUpdate = z4.object({
577
+ timestamp: z4.coerce.date(),
578
+ taskId: z4.string().uuid(),
579
+ updateId: z4.string().uuid(),
580
+ context: contextSchema,
581
+ nodes: z4.custom((data) => Array.isArray(data))
478
582
  });
479
583
  var taskStartUpdateSchema = baseUpdate.extend({
480
- type: z3.literal("taskStart"),
481
- input: z3.unknown(),
482
- meta: z3.unknown()
584
+ type: z4.literal("taskStart")
483
585
  });
484
586
  var taskErrorUpdateSchema = baseUpdate.extend({
485
- type: z3.literal("taskError"),
486
- error: z3.string()
587
+ type: z4.literal("taskError"),
588
+ error: z4.string()
487
589
  });
488
590
  var taskEndUpdateSchema = baseUpdate.extend({
489
- type: z3.literal("taskEnd"),
490
- result: z3.record(z3.string(), z3.unknown()),
491
- partialResults: z3.array(z3.object({
492
- node: nodeInfoSchema,
493
- timestamp: z3.coerce.date().nullable(),
494
- data: z3.unknown(),
495
- error: z3.string().optional()
496
- }))
591
+ type: z4.literal("taskEnd")
497
592
  });
498
593
  var nodeStartUpdateSchema = baseUpdate.extend({
499
- type: z3.literal("nodeStart"),
594
+ type: z4.literal("nodeStart"),
500
595
  node: nodeInfoSchema
501
596
  });
502
597
  var nodeUpdateUpdateSchema = baseUpdate.extend({
503
- type: z3.literal("nodeUpdate"),
598
+ type: z4.literal("nodeUpdate"),
504
599
  node: nodeInfoSchema,
505
- data: z3.unknown(),
506
- output: z3.union([z3.null(), z3.string()])
600
+ data: z4.unknown(),
601
+ output: z4.union([z4.null(), z4.string()])
507
602
  });
508
603
  var nodeErrorUpdateSchema = baseUpdate.extend({
509
- type: z3.literal("nodeError"),
604
+ type: z4.literal("nodeError"),
510
605
  node: nodeInfoSchema,
511
- error: z3.string()
606
+ error: z4.string()
512
607
  });
513
608
  var nodeDeferUpdateSchema = baseUpdate.extend({
514
- type: z3.literal("nodeDefer"),
609
+ type: z4.literal("nodeDefer"),
515
610
  node: nodeInfoSchema,
516
- reason: z3.string().optional()
611
+ reason: z4.string().optional()
517
612
  });
518
613
  var nodeEndUpdateSchema = baseUpdate.extend({
519
- type: z3.literal("nodeEnd"),
614
+ type: z4.literal("nodeEnd"),
520
615
  node: nodeInfoSchema
521
616
  });
522
- var updateSchema = z3.discriminatedUnion("type", [
617
+ var updateSchema = z4.discriminatedUnion("type", [
523
618
  taskStartUpdateSchema,
524
619
  taskErrorUpdateSchema,
525
620
  taskEndUpdateSchema,
@@ -529,7 +624,7 @@ var updateSchema = z3.discriminatedUnion("type", [
529
624
  nodeDeferUpdateSchema,
530
625
  nodeEndUpdateSchema
531
626
  ]);
532
- var eventSchema = z3.object({ type: z3.string(), data: z3.string() }).transform((event) => ({ type: event.type, ...JSON.parse(event.data) })).pipe(updateSchema);
627
+ var eventSchema = z4.object({ type: z4.string(), data: z4.string() }).transform((event) => ({ type: event.type, ...JSON.parse(event.data) })).pipe(updateSchema);
533
628
 
534
629
  // src/utils/mapOutput.ts
535
630
  function mapOutput3(data) {
@@ -568,10 +663,10 @@ function createTask(options, onUpdate) {
568
663
  if (!payload.urls) {
569
664
  resultPromise.resolve({
570
665
  getInput() {
571
- return input;
666
+ return options.input;
572
667
  },
573
668
  getMeta() {
574
- return meta;
669
+ return options.meta;
575
670
  },
576
671
  getError(_alias) {
577
672
  return null;
@@ -589,7 +684,7 @@ function createTask(options, onUpdate) {
589
684
  return;
590
685
  }
591
686
  const eventSource = new EventSource(payload.urls.watch, {
592
- fetch: (input2, init) => fetch(input2, {
687
+ fetch: (input, init) => fetch(input, {
593
688
  ...init,
594
689
  headers: {
595
690
  Authorization: `Bearer ${token}`
@@ -606,8 +701,6 @@ function createTask(options, onUpdate) {
606
701
  "nodeError",
607
702
  "nodeEnd"
608
703
  ];
609
- let input = null;
610
- let meta = null;
611
704
  taskEvents.forEach((taskEvent) => {
612
705
  eventSource.addEventListener(taskEvent, (event) => {
613
706
  const updateResult = eventSchema.safeParse(event);
@@ -620,28 +713,18 @@ function createTask(options, onUpdate) {
620
713
  if (update.type === "taskEnd" || update.type === "taskError") {
621
714
  eventSource.close();
622
715
  }
623
- if (update.type === "taskStart") {
624
- input = update.input;
625
- meta = update.meta;
716
+ const context = update.context;
717
+ if (update.type === "nodeUpdate") {
718
+ context.dates[update.node.id] = update.timestamp.toISOString();
719
+ context.data[update.node.id] = update.data;
626
720
  }
627
- if (update.type === "taskEnd") {
628
- const getPartialResult = (alias) => update.partialResults.find((partialResult) => partialResult.node.alias === alias);
721
+ const contextUpdate = {
722
+ ...update,
723
+ context: createContextHelper(context, update.nodes)
724
+ };
725
+ if (contextUpdate.type === "taskEnd") {
629
726
  resultPromise.resolve({
630
- getInput() {
631
- return mapOutput3(input);
632
- },
633
- getMeta() {
634
- return mapOutput3(meta);
635
- },
636
- getError(alias) {
637
- return getPartialResult(alias)?.error ?? null;
638
- },
639
- getData(alias) {
640
- if (!alias) {
641
- return mapOutput3(update.result);
642
- }
643
- return mapOutput3(getPartialResult(alias)?.data ?? null);
644
- },
727
+ ...contextUpdate.context,
645
728
  getTaskId() {
646
729
  return payload.taskId;
647
730
  },
@@ -650,14 +733,14 @@ function createTask(options, onUpdate) {
650
733
  }
651
734
  });
652
735
  }
653
- if (update.type === "taskError") {
654
- resultPromise.reject(new TaskError(update.error, options.taskTemplate));
736
+ if (contextUpdate.type === "taskError") {
737
+ resultPromise.reject(new TaskError(contextUpdate.error, options.taskTemplate));
655
738
  }
656
- const extendedUpdate = update.type === "nodeUpdate" ? {
657
- ...update,
658
- output: update.output === "__default__" ? null : update.output,
659
- data: mapOutput3(update.data)
660
- } : update;
739
+ const extendedUpdate = contextUpdate.type === "nodeUpdate" ? {
740
+ ...contextUpdate,
741
+ output: contextUpdate.output === "__default__" ? null : contextUpdate.output,
742
+ data: mapOutput3(contextUpdate.data)
743
+ } : contextUpdate;
661
744
  taskUpdateHandlers.forEach((handler) => handler(extendedUpdate));
662
745
  });
663
746
  });
@@ -782,11 +865,20 @@ function watchTasks(options) {
782
865
  throw new Error("invalid update");
783
866
  }
784
867
  const update = updateResult.data;
785
- const extendedUpdate = update.type === "nodeUpdate" ? {
868
+ const context = update.context;
869
+ if (update.type === "nodeUpdate") {
870
+ context.dates[update.node.id] = update.timestamp.toISOString();
871
+ context.data[update.node.id] = update.data;
872
+ }
873
+ const contextUpdate = {
786
874
  ...update,
787
- output: update.output === "__default__" ? null : update.output,
788
- data: mapOutput3(update.data)
789
- } : update;
875
+ context: createContextHelper(context, update.nodes)
876
+ };
877
+ const extendedUpdate = contextUpdate.type === "nodeUpdate" ? {
878
+ ...contextUpdate,
879
+ output: contextUpdate.output === "__default__" ? null : contextUpdate.output,
880
+ data: mapOutput3(contextUpdate.data)
881
+ } : contextUpdate;
790
882
  taskUpdateHandlers.forEach((handler) => handler(extendedUpdate));
791
883
  });
792
884
  });
@@ -803,5 +895,5 @@ export {
803
895
  RequenceFile
804
896
  };
805
897
 
806
- //# debugId=C8D5E6A0535B4D4764756E2164756E21
898
+ //# debugId=1ABBB576345EB61164756E2164756E21
807
899
  //# sourceMappingURL=index.js.map
@@ -1,23 +1,24 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../helpers/src/utils/createRemotePromise.ts", "../../helpers/src/utils/callbackToAsyncIterator.ts", "../../helpers/src/utils/isRecord.ts", "../../helpers/src/utils/mapData.ts", "../../helpers/src/files/index.ts", "../../helpers/src/files/mapOutput.ts", "../../helpers/src/files/RequenceFile.ts", "../../helpers/src/files/RequenceStream.ts", "../src/createTask.ts", "../src/utils/getAccessToken.ts", "../src/abortTask.ts", "../src/types.ts", "../src/utils/mapOutput.ts", "../src/watchTasks.ts"],
3
+ "sources": ["../../helpers/src/utils/createRemotePromise.ts", "../../helpers/src/utils/callbackToAsyncIterator.ts", "../../helpers/src/utils/isRecord.ts", "../../helpers/src/utils/mapData.ts", "../../helpers/src/context/context.ts", "../../helpers/src/files/index.ts", "../../helpers/src/files/mapOutput.ts", "../../helpers/src/files/RequenceFile.ts", "../../helpers/src/files/RequenceStream.ts", "../src/createTask.ts", "../src/utils/getAccessToken.ts", "../src/abortTask.ts", "../src/types.ts", "../src/utils/mapOutput.ts", "../src/watchTasks.ts"],
4
4
  "sourcesContent": [
5
5
  "export function createRemotePromise<T = void>(\n onAwait?: (\n resolve: (value: T) => void,\n reject: (error: any) => void,\n ) => void | Promise<void>,\n) {\n let resolvePromise!: (value: T | PromiseLike<T>) => void\n let rejectPromise!: (reason?: any) => void\n\n const internalPromise = new Promise<T>((resolve, reject) => {\n resolvePromise = resolve\n rejectPromise = reject\n })\n\n let isAwaited = false\n\n const wrappedPromise = new Proxy(internalPromise, {\n get(target, property: keyof PromiseLike<T>) {\n if (\n property === 'then' ||\n property === 'catch' ||\n property === 'finally'\n ) {\n if (!isAwaited && onAwait) {\n isAwaited = true\n onAwait(resolvePromise, rejectPromise)\n }\n return target[property].bind(target)\n }\n\n return target[property]\n },\n })\n\n return Object.assign(wrappedPromise, {\n resolve: resolvePromise,\n reject: rejectPromise,\n promise: wrappedPromise,\n })\n}\n\nexport type RemotePromise<T> = ReturnType<typeof createRemotePromise<T>>\n",
6
6
  "type CallbackValue<T> = { value: T } | { done: true } | { error: Error }\n\nexport function callbackToAsyncIterator<T>(\n subscribe: (\n push: (value: T) => void,\n fail: (error: Error) => void,\n end: () => void,\n ) => void,\n): AsyncIterator<T> {\n const pullQueue: Array<(value: CallbackValue<T>) => void> = []\n const pushQueue: Array<CallbackValue<T>> = []\n\n const pushValue = (value: CallbackValue<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<CallbackValue<T>>((resolve) => {\n if (pushQueue.length !== 0) {\n resolve(pushQueue.shift()!)\n } else {\n pullQueue.push(resolve)\n }\n })\n\n subscribe(\n (value) => {\n pushValue({ value })\n },\n (error) => {\n pushValue({ error })\n },\n () => {\n pushValue({ done: true })\n },\n )\n\n return {\n async next() {\n const value: any = await pullValue()\n if (value.done) {\n return { value: undefined, done: true }\n }\n\n if (value.error) {\n throw value.error\n }\n\n return { value: value.value, done: false }\n },\n }\n}\n\nexport function callbackToAsyncIterable<T>(\n ...args: Parameters<typeof callbackToAsyncIterator<T>>\n): AsyncIterable<T> {\n return {\n [Symbol.asyncIterator]() {\n return callbackToAsyncIterator(...args)\n },\n }\n}\n",
7
7
  "import { z } from 'zod'\n\nconst recordSchema = z.record(z.unknown())\nexport function isRecord(data: unknown): data is Record<string, unknown> {\n return recordSchema.safeParse(data).success\n}\n",
8
8
  "import { isRecord } from './isRecord.ts'\n\ntype DataVistor<T> = (\n data: T,\n path: Array<string | number>,\n) => Promise<any> | any\n\ninterface DataVistors {\n Null?: DataVistor<null>\n String?: DataVistor<string>\n Number?: DataVistor<number>\n Object?: DataVistor<object>\n Array?: DataVistor<Array<any>>\n Buffer?: DataVistor<Buffer>\n}\n\ntype HasPromiseVistor<T extends DataVistors, Then, Else> = T[keyof T] extends (\n ...args: any[]\n) => any\n ? Promise<any> extends ReturnType<T[keyof T]>\n ? Then\n : Else\n : Else\n\nfunction resolve<T>(value: T | Promise<T>, onResolve: (value: T) => void) {\n if (value instanceof Promise) {\n return Promise.resolve()\n .then(() => value)\n .then(onResolve)\n }\n return onResolve(value)\n}\n\nfunction notUndefined(value: unknown, fallback: unknown) {\n return resolve(value, (resolvedValue) =>\n typeof resolvedValue === 'undefined' ? fallback : resolvedValue,\n )\n}\n\nexport function mapData<\n Output,\n Input = unknown,\n V extends DataVistors = DataVistors,\n>(\n data: Input,\n visitors: V,\n): HasPromiseVistor<\n V,\n Promise<unknown extends Output ? Input : Output>,\n unknown extends Output ? Input : Output\n> {\n const traverseData = (data: any, path: Array<string | number>): any => {\n if (Array.isArray(data)) {\n return resolve(visitors.Array?.(data, path), (resolvedData) => {\n if (resolvedData) {\n return resolvedData\n }\n const items = data.map((item, index) =>\n traverseData(item, [...path, index]),\n )\n if (items.some((item) => item instanceof Promise)) {\n return Promise.all(items)\n }\n\n return items\n })\n }\n if (data === null) {\n return notUndefined(visitors.Null?.(data, path), data)\n }\n if (typeof Buffer !== 'undefined' && Buffer.isBuffer(data)) {\n return notUndefined(visitors.Buffer?.(data, path), data)\n }\n if (typeof data === 'string') {\n return notUndefined(visitors.String?.(data, path), data)\n }\n if (typeof data === 'number') {\n return notUndefined(visitors.Number?.(data, path), data)\n }\n if (isRecord(data)) {\n return resolve(visitors.Object?.(data, path), (resolvedData) => {\n if (resolvedData) {\n return resolvedData\n }\n\n const entries = Object.entries(data).map(([key, value]) => [\n key,\n traverseData(value, [...path, key]),\n ])\n\n if (entries.some(([, value]) => value instanceof Promise)) {\n return Promise.all(\n entries.map(([key, value]) =>\n Promise.resolve()\n .then(() => value)\n .then((resolvedValue) => [key, resolvedValue]),\n ),\n ).then((entries) => Object.fromEntries(entries))\n }\n\n return Object.fromEntries(entries)\n })\n }\n return data\n }\n\n return traverseData(data, [])\n}\n",
9
+ "import { z } from 'zod'\n\nimport {\n RequenceFile,\n RequenceStream,\n isFileObject,\n isStreamObject,\n} from '../files/index.ts'\nimport type { Nodes } from '../protocol/nodes.ts'\nimport { isRecord } from '../utils/isRecord.ts'\nimport { mapData } from '../utils/mapData.ts'\n\nexport const contextSchema = z.object({\n input: z.any(),\n meta: z.any(),\n tenant: z.object({ name: z.string() }),\n data: z.record(z.string(), z.any()),\n errors: z.record(z.string(), z.string()),\n dates: z.record(z.string(), z.string().datetime()),\n})\n\nexport type Context = z.infer<typeof contextSchema>\n\nconst internalKey = Symbol.for('internal') as unknown as 'internal'\n\nexport function getInternalContext(contextHelper: ContextHelper) {\n return (contextHelper as InternalContextHelper)[internalKey]\n}\n\nfunction resolveRequenceTypes(data: any) {\n return mapData(data, {\n Object(obj) {\n if (isFileObject(obj)) {\n return RequenceFile.fromFileObject(obj)\n }\n\n if (isStreamObject(obj)) {\n return RequenceStream.fromStreamObject(obj)\n }\n },\n })\n}\n\nexport function createContextHelper(context: Context, nodes: Nodes) {\n const input = resolveRequenceTypes(context.input)\n const meta = resolveRequenceTypes(context.meta)\n\n const results = new Map(\n nodes.map((node) => [\n node.id,\n {\n node,\n executionDate:\n node.id in context.dates ? new Date(context.dates[node.id]) : null,\n data: resolveRequenceTypes(context.data[node.id] ?? null),\n error: context.errors[node.id] ?? null,\n },\n ]),\n )\n\n const lookUpMap = new Map<string, Array<string>>()\n\n for (const node of nodes) {\n const alias =\n typeof node.meta?.mapAlias === 'string'\n ? node.meta.mapAlias\n : 'alias' in node && node.alias\n if (alias) {\n if (lookUpMap.has(alias)) {\n lookUpMap.get(alias)!.push(node.id)\n } else {\n lookUpMap.set(alias, [node.id])\n }\n }\n\n const name =\n typeof node.meta?.mapName === 'string'\n ? node.meta.mapName\n : node.type === 'service' && node.name\n if (name) {\n if (lookUpMap.has(name)) {\n lookUpMap.get(name)!.push(node.id)\n } else {\n lookUpMap.set(name, [node.id])\n }\n }\n }\n\n return {\n [internalKey]: {\n results,\n },\n getInput(): unknown {\n return input\n },\n getMeta(): unknown {\n return meta\n },\n getData(alias?: string) {\n if (alias) {\n const nodeIds = lookUpMap.get(alias)\n if (!nodeIds) {\n return null\n }\n\n const uniqueNodeIds = Array.from(new Set(nodeIds))\n const combinedData = uniqueNodeIds\n .map((nodeId) => results.get(nodeId)?.data)\n .filter(Boolean)\n\n if (combinedData.length === 0) {\n return null\n }\n\n if (combinedData.length === 1) {\n return combinedData[0]\n }\n\n if (combinedData.every(isRecord)) {\n return combinedData.reduce((acc, data) => ({ ...acc, ...data }), {})\n }\n return combinedData\n }\n\n return Array.from(results.values())\n .filter((result) => result.executionDate && isRecord(result.data))\n .toSorted(\n (a, b) => a.executionDate!.getTime() - b.executionDate!.getTime(),\n )\n .reduce(\n (acc, result) => ({\n ...acc,\n ...result.data,\n }),\n isRecord(input) ? input : {},\n )\n },\n getError(alias: string) {\n const nodeIds = lookUpMap.get(alias)\n if (!nodeIds) {\n return null\n }\n return nodeIds\n .map((nodeId) => results.get(nodeId)?.error)\n .filter((str) => typeof str === 'string')\n .join('\\n')\n },\n }\n}\n\ntype InternalContextHelper = ReturnType<typeof createContextHelper>\nexport type ContextHelper = Omit<InternalContextHelper, typeof internalKey>\n",
9
10
  "import { z } from 'zod'\n\nexport * from './mapOutput.ts'\nexport * from './isValidMimeType.ts'\nexport * from './RequenceFile.ts'\nexport * from './RequenceStream.ts'\n\nconst fileObjectSchema = z.object({\n size: z.number().int().positive(),\n mime: z.string(),\n url: z.string().url(),\n __REQUENCE_type: z.literal('RequenceFile'),\n})\n\nexport type FileObject = z.infer<typeof fileObjectSchema>\n\nexport function toFileObject(fileInfo: {\n size: number\n mime: string\n url: string\n}): FileObject {\n return {\n ...fileInfo,\n __REQUENCE_type: 'RequenceFile',\n }\n}\n\nexport function isFileObject(data: unknown): data is FileObject {\n return fileObjectSchema.safeParse(data).success\n}\n\nconst streamObjectSchema = z.object({\n mime: z.string(),\n url: z.string().url(),\n __REQUENCE_type: z.literal('RequenceStream'),\n})\n\nexport type StreamObject = z.infer<typeof streamObjectSchema>\n\nexport function toStreamObject(streamInfo: {\n mime: string\n url: string\n}): StreamObject {\n return {\n ...streamInfo,\n __REQUENCE_type: 'RequenceStream',\n }\n}\n\nexport function isStreamObject(data: unknown): data is StreamObject {\n return streamObjectSchema.safeParse(data).success\n}\n",
10
11
  "import {\n RequenceFile,\n RequenceStream,\n toFileObject,\n toStreamObject,\n} from './index.ts'\nimport type { NodeOptions } from '../protocol/command.ts'\nimport { mapData } from '../utils/mapData.ts'\n\nasync function upload(\n uploadUrl: string,\n body: BodyInit | null,\n signal?: AbortSignal,\n contentType?: string | null,\n) {\n const uploadResponse = await fetch(uploadUrl, {\n method: 'POST',\n signal,\n headers: contentType\n ? {\n 'Content-Type': contentType,\n }\n : {},\n body,\n })\n\n const data = await uploadResponse.json()\n if (!data || typeof data !== 'object') {\n throw new Error('invalid upload response')\n }\n\n return toFileObject(data as { size: number; mime: string; url: string })\n}\n\n/**\n * nodejs closes the stream when no data where pushed before executing fetch,\n * this way we wait for the first bytes, the executing fetch\n * All that gets obsolete once we use bun.\n */\nasync function stream(\n streamUrl: string,\n stream: ReadableStream,\n signal?: AbortSignal,\n contentType?: string | null,\n) {\n const [testStream, dataStream] = stream.tee()\n\n const reader = testStream.getReader()\n const dataPromise = reader.read().then(({ done }) => {\n if (done) {\n throw new Error('No streaming date received')\n }\n\n reader.cancel()\n })\n\n const streamResponse = await fetch(streamUrl, {\n method: 'POST',\n signal,\n headers: contentType ? { 'Content-Type': contentType } : {},\n })\n\n const data = await streamResponse.json()\n if (!data || typeof data !== 'object') {\n throw new Error('invalid stream response')\n }\n\n const { mime, url } = data as { mime: string; url: string }\n await dataPromise\n\n // don't wait\n const done = fetch(url, {\n method: 'POST',\n signal,\n duplex: 'half', // this is not typed but needed for nodejs to handle readable streams\n body: dataStream,\n } as RequestInit)\n\n return [toStreamObject({ mime, url }), done] as const\n}\n\nexport async function mapOutput(params: {\n value: unknown\n options: Pick<NodeOptions, 'uploadUrl' | 'streamUrl'>\n onFail?: (error: Error) => void\n onSkip?: () => void\n onDone?: () => void\n signal?: AbortSignal\n}) {\n const streamPromises: Array<Promise<any>> = []\n const mapped = await mapData(params.value, {\n async Object(obj) {\n if (obj instanceof Blob || obj instanceof RequenceFile) {\n // don't reupload existing files\n if (obj instanceof RequenceFile && obj.fileObject) {\n return obj.fileObject\n }\n\n if (params.options.uploadUrl) {\n try {\n if (obj instanceof Blob) {\n return await upload(\n params.options.uploadUrl,\n obj,\n params.signal,\n obj.type,\n )\n }\n\n if (obj instanceof RequenceFile) {\n return await upload(\n params.options.uploadUrl,\n await obj.blob(),\n params.signal,\n obj.mimeType,\n )\n }\n } catch (error) {\n if (!(error instanceof Error)) {\n throw error\n }\n params.onFail?.(error)\n return null\n }\n } else {\n params.onSkip?.()\n return null\n }\n }\n\n if (obj instanceof Response || obj instanceof RequenceStream) {\n if (obj instanceof RequenceStream && obj.streamObject) {\n return obj.streamObject\n }\n\n if (params.options.streamUrl) {\n try {\n if (obj instanceof Response && obj.body) {\n const [streamObject, streamPromise] = await stream(\n params.options.streamUrl,\n obj.body,\n params.signal,\n obj.headers.get('Content-Type'),\n )\n streamPromises.push(streamPromise)\n return streamObject\n }\n\n if (obj instanceof RequenceStream) {\n const [streamObject, streamPromise] = await stream(\n params.options.streamUrl,\n obj.stream(),\n params.signal,\n obj.mimeType,\n )\n streamPromises.push(streamPromise)\n return streamObject\n }\n } catch (error) {\n if (!(error instanceof Error)) {\n throw error\n }\n params.onFail?.(error)\n return null\n }\n } else {\n params.onSkip?.()\n return null\n }\n }\n },\n })\n\n Promise.allSettled(streamPromises).then(() => params.onDone?.())\n\n return mapped\n}\n",
11
12
  "import type { FileObject } from './index.ts'\nimport type { MainMimeType, SubMimeType, ValidMimeType } from './types.ts'\n\ninterface RequenceFilePropertyBag<T> extends Omit<BlobPropertyBag, 'type'> {\n type: T\n}\n\nexport interface RequenceFileType<A, B> {\n size: number\n mimeType: string\n mainMimeType: A\n subMimeType: B\n text(): Promise<string>\n json(): Promise<unknown>\n blob(): Promise<Blob>\n arrayBuffer(): Promise<ArrayBuffer>\n}\n\nexport class RequenceFile<\n T extends `${string}/${string}` = '*/*',\n A = MainMimeType<T>,\n B = SubMimeType<T>,\n> implements RequenceFileType<A, B>\n{\n #data: Blob\n #file: FileObject | null = null\n constructor(\n blobParts: BlobPart[],\n options?: RequenceFilePropertyBag<ValidMimeType<T>>,\n ) {\n this.#data = new Blob(blobParts, options)\n }\n\n /** @internal */\n static fromFileObject<T extends `${string}/${string}`>(file: FileObject) {\n const instance = new this([], { type: 'x/x' })\n instance.#file = file\n return instance as RequenceFile<T>\n }\n\n /** @internal */\n get fileObject() {\n return this.#file\n }\n\n get size() {\n return this.#file?.size ?? this.#data.size\n }\n\n get mimeType() {\n return this.#file?.mime ?? this.#data.type\n }\n\n get mainMimeType() {\n return this.mimeType.split('/')[0] as A\n }\n\n get subMimeType() {\n return this.mimeType.split('/')[1] as B\n }\n\n async text() {\n if (this.#file) {\n return fetch(this.#file.url).then((response) => response.text())\n }\n return this.#data.text()\n }\n\n async json() {\n if (this.#file) {\n return fetch(this.#file.url).then((response) => response.json())\n }\n return JSON.parse(await this.text())\n }\n\n async blob() {\n if (this.#file) {\n return fetch(this.#file.url).then((response) => response.blob())\n }\n return this.#data\n }\n\n async arrayBuffer() {\n if (this.#file) {\n return fetch(this.#file.url).then((response) => response.arrayBuffer())\n }\n return this.#data.arrayBuffer()\n }\n\n toString() {\n return `RequenceFile<${this.mimeType}>`\n }\n\n toJSON() {\n return `RequenceFile<${this.mimeType}>`\n }\n}\n",
12
13
  "import type { StreamObject } from './index.ts'\nimport type { MainMimeType, SubMimeType, ValidMimeType } from './types.ts'\n\nexport interface RequenceStreamType<A, B> {\n mimeType: string\n mainMimeType: A\n subMimeType: B\n stream(): ReadableStream\n}\n\ninterface RequenceStreamOptions<T> {\n type: T\n}\n\nexport class RequenceStream<\n T extends `${string}/${string}` = '*/*',\n A = MainMimeType<T>,\n B = SubMimeType<T>,\n> implements RequenceStreamType<A, B>\n{\n #data: ReadableStream\n #stream: StreamObject | null = null\n #options: RequenceStreamOptions<any>\n\n constructor(\n stream: ReadableStream,\n options: RequenceStreamOptions<ValidMimeType<T>>,\n ) {\n this.#data = stream\n this.#options = options\n }\n\n /** @internal */\n static fromStreamObject<T extends `${string}/${string}`>(\n stream: StreamObject,\n ) {\n const instance = new this(null as unknown as ReadableStream, {\n type: 'x/x',\n })\n instance.#stream = stream\n return instance as unknown as RequenceStream<T>\n }\n\n /** @internal */\n get streamObject() {\n return this.#stream\n }\n\n get mimeType() {\n return this.#stream?.mime ?? this.#options.type\n }\n\n get mainMimeType() {\n return this.mimeType.split('/')[0] as A\n }\n\n get subMimeType() {\n return this.mimeType.split('/')[1] as B\n }\n\n stream() {\n if (this.#stream) {\n const { readable, writable } = new TransformStream()\n\n fetch(this.#stream.url).then((response) =>\n response.body?.pipeTo(writable),\n )\n\n return readable\n }\n return this.#data\n }\n\n asyncIterable(): AsyncIterable<Uint8Array> {\n const reader = this.stream().getReader()\n\n return {\n [Symbol.asyncIterator]() {\n return {\n async next() {\n return reader.read() as Promise<IteratorResult<Uint8Array>>\n },\n async return() {\n reader.cancel()\n reader.releaseLock()\n return { done: true, value: null }\n },\n }\n },\n }\n }\n\n toString() {\n return `RequenceStream<${this.mimeType}>`\n }\n\n toJSON() {\n return `RequenceStream<${this.mimeType}>`\n }\n}\n",
13
- "import { callbackToAsyncIterable, createRemotePromise } from '@requence/helpers'\nimport { mapOutput as mapInput } from '@requence/helpers/files'\nimport { EventSource } from 'eventsource'\n\nimport { abortTask } from './abortTask.ts'\nimport {\n type CreateTaskOptions,\n type Result,\n type Update,\n eventSchema,\n} from './types.ts'\nimport getAccessToken from './utils/getAccessToken.ts'\nimport mapOutput from './utils/mapOutput.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<T> = (update: Update<T>) => void\n\nexport function createTask<\n T extends keyof RequenceTask.TaskTemplate | (string & {}),\n>(options: CreateTaskOptions<T>, onUpdate?: TaskUpdateHandler<T>) {\n const taskUpdateHandlers = new Set<TaskUpdateHandler<T>>()\n\n const { apiBaseUrl, token } = getAccessToken(options.accessToken)\n\n const prepareUrl = `${apiBaseUrl}/task/prepare/${options.taskTemplate}`\n\n const payloadPromise = createRemotePromise<{\n taskId: string\n urls?: { watch: string; show: 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 getTaskId() {\n return payload.taskId\n },\n getTaskUrl() {\n return ''\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<T>['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 mapOutput(input)\n },\n getMeta() {\n return mapOutput(meta)\n },\n getError(alias) {\n return getPartialResult(alias)?.error ?? null\n },\n getData(alias) {\n if (!alias) {\n return mapOutput(update.result)\n }\n\n return mapOutput(getPartialResult(alias)?.data ?? null)\n },\n getTaskId() {\n return payload.taskId\n },\n getTaskUrl() {\n return payload.urls?.show ?? ''\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 const extendedUpdate =\n update.type === 'nodeUpdate'\n ? {\n ...update,\n output: update.output === '__default__' ? null : update.output,\n data: mapOutput(update.data),\n }\n : update\n taskUpdateHandlers.forEach((handler) =>\n handler(extendedUpdate as Update<T>),\n )\n })\n })\n }\n\n const taskMetaPromise = createRemotePromise<{\n id: string\n showUrl: string | null\n }>()\n const resultPromise = createRemotePromise<Result<T>>(startMonitoring)\n\n ;(async () => {\n const prepareResponse = await fetch(prepareUrl, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n\n if (!prepareResponse.ok) {\n const error = new TaskError(\n await prepareResponse.text(),\n options.taskTemplate,\n )\n taskMetaPromise.reject(error)\n resultPromise.reject(error)\n return\n }\n\n const prepareData = (await prepareResponse.json()) as {\n taskId: string\n finalizeUrl: string\n fileUrls?: { uploadUrl: string; streamUrl: string }\n }\n\n const mappedParams = await mapInput({\n value: {\n name: options.name,\n input: options.input,\n meta: options.meta,\n },\n options: {\n uploadUrl: prepareData.fileUrls?.uploadUrl,\n streamUrl: prepareData.fileUrls?.streamUrl,\n },\n })\n\n const finalizeResponse = await fetch(prepareData.finalizeUrl, {\n method: 'POST',\n body: JSON.stringify(mappedParams),\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n })\n\n if (!finalizeResponse.ok) {\n const error = new TaskError(\n await prepareResponse.text(),\n options.taskTemplate,\n )\n taskMetaPromise.reject(error)\n resultPromise.reject(error)\n return\n }\n\n const payload = (await finalizeResponse.json()) as {\n taskId: string\n urls?: {\n show: string\n watch: string\n }\n }\n taskMetaPromise.resolve({\n id: payload.taskId,\n showUrl: payload.urls?.show ?? null,\n })\n payloadPromise.resolve(payload)\n if (onUpdate) {\n taskUpdateHandlers.add(onUpdate)\n startMonitoring()\n }\n })()\n\n const asyncIterable = callbackToAsyncIterable<Update<T>>(\n (push, _fail, done) => {\n taskUpdateHandlers.add(function handleUpdate(update) {\n push(update)\n if (update.type === 'taskEnd' || update.type === 'taskError') {\n done()\n taskUpdateHandlers.delete(handleUpdate)\n }\n })\n\n startMonitoring()\n },\n )\n\n return Object.assign(resultPromise.promise, asyncIterable, {\n async getTaskId() {\n const meta = await taskMetaPromise\n return meta.id\n },\n async getTaskUrl() {\n const meta = await taskMetaPromise\n return meta.showUrl\n },\n async abort(reason?: string) {\n const meta = await taskMetaPromise\n await abortTask({\n taskId: meta.id,\n accessToken: options.accessToken,\n reason,\n })\n },\n })\n}\n",
14
- "import { readFileSync } from 'node:fs'\n\nimport { deobfuscate } from '@requence/helpers'\n\nexport default function getAccessToken(accessToken?: string) {\n let token =\n accessToken ??\n process.env.REQUENCE_TASK_ACCESS_TOKEN ??\n process.env.REQUENCE_ACCESS_TOKEN\n\n if (!token) {\n const pkgJson = JSON.parse(readFileSync('package.json', 'utf-8'))\n token = pkgJson.requence?.task?.accessToken ?? pkgJson.requence?.accessToken\n }\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",
14
+ "import { callbackToAsyncIterable, createRemotePromise } from '@requence/helpers'\nimport { createContextHelper } from '@requence/helpers/context'\nimport { mapOutput as mapInput } from '@requence/helpers/files'\nimport { EventSource } from 'eventsource'\n\nimport { abortTask } from './abortTask.ts'\nimport {\n type CreateTaskOptions,\n type Result,\n type Update,\n eventSchema,\n} from './types.ts'\nimport getAccessToken from './utils/getAccessToken.ts'\nimport mapOutput from './utils/mapOutput.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<T> = (update: Update<T>) => void\n\nexport function createTask<\n T extends keyof RequenceTask.TaskTemplate | (string & {}),\n>(options: CreateTaskOptions<T>, onUpdate?: TaskUpdateHandler<T>) {\n const taskUpdateHandlers = new Set<TaskUpdateHandler<T>>()\n\n const { apiBaseUrl, token } = getAccessToken(options.accessToken)\n\n const prepareUrl = `${apiBaseUrl}/task/prepare/${options.taskTemplate}`\n\n const payloadPromise = createRemotePromise<{\n taskId: string\n urls?: { watch: string; show: 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 options.input\n },\n getMeta() {\n return options.meta\n },\n getError(_alias) {\n return null\n },\n getData(_alias) {\n return null\n },\n getTaskId() {\n return payload.taskId\n },\n getTaskUrl() {\n return ''\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<T>['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 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 const context = update.context\n\n if (update.type === 'nodeUpdate') {\n context.dates[update.node.id] = update.timestamp.toISOString()\n context.data[update.node.id] = update.data\n }\n\n const contextUpdate = {\n ...update,\n context: createContextHelper(context, update.nodes),\n }\n\n if (contextUpdate.type === 'taskEnd') {\n resultPromise.resolve({\n ...contextUpdate.context,\n getTaskId() {\n return payload.taskId\n },\n getTaskUrl() {\n return payload.urls?.show ?? ''\n },\n } as Result<T>)\n }\n\n if (contextUpdate.type === 'taskError') {\n resultPromise.reject(\n new TaskError(contextUpdate.error, options.taskTemplate),\n )\n }\n\n const extendedUpdate =\n contextUpdate.type === 'nodeUpdate'\n ? {\n ...contextUpdate,\n output:\n contextUpdate.output === '__default__'\n ? null\n : contextUpdate.output,\n data: mapOutput(contextUpdate.data),\n }\n : contextUpdate\n\n taskUpdateHandlers.forEach((handler) =>\n handler(extendedUpdate as Update<T>),\n )\n })\n })\n }\n\n const taskMetaPromise = createRemotePromise<{\n id: string\n showUrl: string | null\n }>()\n const resultPromise = createRemotePromise<Result<T>>(startMonitoring)\n\n ;(async () => {\n const prepareResponse = await fetch(prepareUrl, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n\n if (!prepareResponse.ok) {\n const error = new TaskError(\n await prepareResponse.text(),\n options.taskTemplate,\n )\n taskMetaPromise.reject(error)\n resultPromise.reject(error)\n return\n }\n\n const prepareData = (await prepareResponse.json()) as {\n taskId: string\n finalizeUrl: string\n fileUrls?: { uploadUrl: string; streamUrl: string }\n }\n\n const mappedParams = await mapInput({\n value: {\n name: options.name,\n input: options.input,\n meta: options.meta,\n },\n options: {\n uploadUrl: prepareData.fileUrls?.uploadUrl,\n streamUrl: prepareData.fileUrls?.streamUrl,\n },\n })\n\n const finalizeResponse = await fetch(prepareData.finalizeUrl, {\n method: 'POST',\n body: JSON.stringify(mappedParams),\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n })\n\n if (!finalizeResponse.ok) {\n const error = new TaskError(\n await prepareResponse.text(),\n options.taskTemplate,\n )\n taskMetaPromise.reject(error)\n resultPromise.reject(error)\n return\n }\n\n const payload = (await finalizeResponse.json()) as {\n taskId: string\n urls?: {\n show: string\n watch: string\n }\n }\n taskMetaPromise.resolve({\n id: payload.taskId,\n showUrl: payload.urls?.show ?? null,\n })\n payloadPromise.resolve(payload)\n if (onUpdate) {\n taskUpdateHandlers.add(onUpdate)\n startMonitoring()\n }\n })()\n\n const asyncIterable = callbackToAsyncIterable<Update<T>>(\n (push, _fail, done) => {\n taskUpdateHandlers.add(function handleUpdate(update) {\n push(update)\n if (update.type === 'taskEnd' || update.type === 'taskError') {\n done()\n taskUpdateHandlers.delete(handleUpdate)\n }\n })\n\n startMonitoring()\n },\n )\n\n return Object.assign(resultPromise.promise, asyncIterable, {\n async getTaskId() {\n const meta = await taskMetaPromise\n return meta.id\n },\n async getTaskUrl() {\n const meta = await taskMetaPromise\n return meta.showUrl\n },\n async abort(reason?: string) {\n const meta = await taskMetaPromise\n await abortTask({\n taskId: meta.id,\n accessToken: options.accessToken,\n reason,\n })\n },\n })\n}\n",
15
+ "import { readFileSync } from 'node:fs'\n\nimport { deobfuscate } from '@requence/helpers'\n\nexport default function getAccessToken(accessToken?: string) {\n let token =\n accessToken ??\n process.env.REQUENCE_TASK_ACCESS_TOKEN ??\n process.env.REQUENCE_ACCESS_TOKEN\n\n if (!token) {\n const pkgJson = JSON.parse(readFileSync('package.json', 'utf-8'))\n token = pkgJson.requence?.task?.accessToken ?? pkgJson.requence?.accessToken\n }\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 access token')\n }\n\n return {\n token: parts[1],\n apiBaseUrl: parts[2],\n }\n}\n",
15
16
  "import getAccessToken from './utils/getAccessToken.ts'\n\nclass TaskAbortError extends Error {\n constructor(\n message: string,\n public readonly taskId: string,\n ) {\n super(message)\n }\n}\n\ninterface AbortTaskOptions {\n accessToken?: string\n reason?: string\n taskId: string\n}\nexport async function abortTask(options: AbortTaskOptions) {\n const { apiBaseUrl, token } = getAccessToken(options.accessToken)\n\n const abortUrl = `${apiBaseUrl}/task/abort/${options.taskId}`\n\n const response = await fetch(abortUrl, {\n method: 'POST',\n body: options.reason ?? '',\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n\n if (!response.ok) {\n throw new TaskAbortError(await response.text(), options.taskId)\n }\n}\n",
16
- "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 name?: string | null\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 RequenceTask.TaskTemplate\n ? RequenceTask.TaskTemplate[T]['input']\n : unknown\ntype Meta<T> = T extends keyof RequenceTask.TaskTemplate\n ? RequenceTask.TaskTemplate[T]['meta']\n : unknown\ntype Data<T> = T extends keyof RequenceTask.TaskTemplate\n ? Prettify<RequenceTask.TaskTemplate[T]['results']>\n : unknown\ntype NamedData<T, A> = T extends keyof RequenceTask.TaskTemplate\n ? A extends keyof RequenceTask.TaskTemplate[T]['namedResults']\n ? Prettify<RequenceTask.TaskTemplate[T]['namedResults'][A]>\n : unknown\n : unknown\ntype Alias<T> = T extends keyof RequenceTask.TaskTemplate\n ? keyof RequenceTask.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 getTaskId(): string\n getTaskUrl(): string\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 node: nodeInfoSchema,\n data: z.unknown(),\n output: z.union([z.null(), z.string()]),\n})\n\nconst nodeErrorUpdateSchema = baseUpdate.extend({\n type: z.literal('nodeError'),\n node: nodeInfoSchema,\n error: z.string(),\n})\n\nconst nodeDeferUpdateSchema = baseUpdate.extend({\n type: z.literal('nodeDefer'),\n node: nodeInfoSchema,\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<T> =\n | Exclude<z.infer<typeof updateSchema>, { type: 'nodeUpdate' }>\n | (Omit<z.infer<typeof nodeUpdateUpdateSchema>, 'data'> & {\n data: Partial<Data<T>>\n })\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",
17
+ "import { contextSchema } from '@requence/helpers/context'\nimport type { Nodes } from '@requence/helpers/protocol'\nimport { 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 name?: string | null\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 RequenceTask.TaskTemplate\n ? RequenceTask.TaskTemplate[T]['input']\n : unknown\ntype Meta<T> = T extends keyof RequenceTask.TaskTemplate\n ? RequenceTask.TaskTemplate[T]['meta']\n : unknown\ntype Data<T> = T extends keyof RequenceTask.TaskTemplate\n ? Prettify<RequenceTask.TaskTemplate[T]['results']>\n : unknown\ntype NamedData<T, A> = T extends keyof RequenceTask.TaskTemplate\n ? A extends keyof RequenceTask.TaskTemplate[T]['namedResults']\n ? Prettify<RequenceTask.TaskTemplate[T]['namedResults'][A]>\n : unknown\n : unknown\ntype Alias<T> = T extends keyof RequenceTask.TaskTemplate\n ? keyof RequenceTask.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 getTaskId(): string\n getTaskUrl(): string\n}\n\ntype Context<T> = Omit<Result<T>, 'getTaskId' | 'getTaskUrl'>\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 updateId: z.string().uuid(),\n context: contextSchema,\n nodes: z.custom<Nodes>((data) => Array.isArray(data)),\n})\n\nconst taskStartUpdateSchema = baseUpdate.extend({\n type: z.literal('taskStart'),\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})\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 node: nodeInfoSchema,\n data: z.unknown(),\n output: z.union([z.null(), z.string()]),\n})\n\nconst nodeErrorUpdateSchema = baseUpdate.extend({\n type: z.literal('nodeError'),\n node: nodeInfoSchema,\n error: z.string(),\n})\n\nconst nodeDeferUpdateSchema = baseUpdate.extend({\n type: z.literal('nodeDefer'),\n node: nodeInfoSchema,\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\ntype DistributiveOmit<T, K extends keyof any> = T extends any\n ? Omit<T, K>\n : never\n\ntype NonContextUpdate = DistributiveOmit<\n z.infer<typeof updateSchema>,\n 'context'\n>\n\nexport type Update<T> = Prettify<\n | (Exclude<NonContextUpdate, { type: 'taskEnd' } | { type: 'nodeUpdate' }> & {\n context: Context<Partial<T>>\n })\n | (Extract<NonContextUpdate, { type: 'nodeUpdate' }> & {\n context: Context<Partial<T>>\n data: Partial<Data<T>>\n })\n | (Extract<NonContextUpdate, { type: 'taskEnd' }> & { context: Context<T> })\n>\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",
17
18
  "import { mapData } from '@requence/helpers'\nimport {\n RequenceFile,\n RequenceStream,\n isFileObject,\n isStreamObject,\n} from '@requence/helpers/files'\n\nexport default function mapOutput(data: unknown): unknown {\n return mapData(data, {\n Object(obj) {\n if (isFileObject(obj)) {\n return RequenceFile.fromFileObject(obj)\n }\n if (isStreamObject(obj)) {\n return RequenceStream.fromStreamObject(obj)\n }\n },\n })\n}\n",
18
- "import { callbackToAsyncIterable } from '@requence/helpers'\nimport { EventSource } from 'eventsource'\n\nimport { type Update, eventSchema } from './types.ts'\nimport getAccessToken from './utils/getAccessToken.ts'\nimport mapOutput from './utils/mapOutput.ts'\n\ntype TaskUpdateHandler = (update: Update<unknown>) => 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 = callbackToAsyncIterable<Update<unknown>>((push) => {\n taskUpdateHandlers.add(push)\n })\n\n const taskEvents: Array<Update<unknown>['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 const update = updateResult.data\n const extendedUpdate =\n update.type === 'nodeUpdate'\n ? {\n ...update,\n output: update.output === '__default__' ? null : update.output,\n data: mapOutput(update.data),\n }\n : update\n taskUpdateHandlers.forEach((handler) =>\n handler(extendedUpdate as Update<unknown>),\n )\n })\n })\n\n const stopWatching = () => {\n eventSource.close()\n }\n\n return Object.assign(stopWatching, asyncIterable)\n}\n"
19
+ "import { callbackToAsyncIterable } from '@requence/helpers'\nimport { createContextHelper } from '@requence/helpers/context'\nimport { EventSource } from 'eventsource'\n\nimport { type Update, eventSchema } from './types.ts'\nimport getAccessToken from './utils/getAccessToken.ts'\nimport mapOutput from './utils/mapOutput.ts'\n\ntype TaskUpdateHandler = (update: Update<unknown>) => 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 = callbackToAsyncIterable<Update<unknown>>((push) => {\n taskUpdateHandlers.add(push)\n })\n\n const taskEvents: Array<Update<unknown>['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 const update = updateResult.data\n const context = update.context\n\n if (update.type === 'nodeUpdate') {\n context.dates[update.node.id] = update.timestamp.toISOString()\n context.data[update.node.id] = update.data\n }\n\n const contextUpdate = {\n ...update,\n context: createContextHelper(context, update.nodes),\n }\n\n const extendedUpdate =\n contextUpdate.type === 'nodeUpdate'\n ? {\n ...contextUpdate,\n output:\n contextUpdate.output === '__default__'\n ? null\n : contextUpdate.output,\n data: mapOutput(contextUpdate.data),\n }\n : contextUpdate\n taskUpdateHandlers.forEach((handler) =>\n handler(extendedUpdate as Update<unknown>),\n )\n })\n })\n\n const stopWatching = () => {\n eventSource.close()\n }\n\n return Object.assign(stopWatching, asyncIterable)\n}\n"
19
20
  ],
20
- "mappings": "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",
21
- "debugId": "C8D5E6A0535B4D4764756E2164756E21",
21
+ "mappings": "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",
22
+ "debugId": "1ABBB576345EB61164756E2164756E21",
22
23
  "names": []
23
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../../../helpers/src/context/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAQvB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAGjD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOxB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA;AAMnD,QAAA,MAAM,WAAW,EAAwC,UAAU,CAAA;AAEnE,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE9D;AAgBD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBA8ClD,OAAO;eAGR,OAAO;oBAGF,MAAM;oBAuCN,MAAM;EAWzB;AAED,KAAK,qBAAqB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAA;AACnE,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,EAAE,OAAO,WAAW,CAAC,CAAA"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../../../helpers/src/context/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAQvB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAIjD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOxB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA;AAEnD,QAAA,MAAM,WAAW,EAAwC,UAAU,CAAA;AAEnE,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE9D;AAgBD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAiDlD,OAAO;eAGR,OAAO;oBAGF,MAAM;oBAuCN,MAAM;EAWzB;AAED,KAAK,qBAAqB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAA;AACnE,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,EAAE,OAAO,WAAW,CAAC,CAAA"}
@@ -21,6 +21,7 @@ export declare function validate<T extends JSONSchema7>(options: {
21
21
  property?: string;
22
22
  allowAdditionalProperties?: boolean;
23
23
  enforeFileKeywords?: boolean;
24
+ coerceTypes?: boolean;
24
25
  }): {
25
26
  [x: string]: {};
26
27
  };