@requence/service 1.0.0-alpha.50 → 1.0.0-alpha.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +235 -96
  3. package/build/cli.js +2 -1
  4. package/build/cli.js.map +3 -3
  5. package/build/index.js +70 -20
  6. package/build/index.js.map +6 -6
  7. package/build/types/helpers/src/files/RequenceFile.d.ts.map +1 -1
  8. package/build/types/helpers/src/files/RequenceStream.d.ts.map +1 -1
  9. package/build/types/helpers/src/files/isValidMimeType.d.ts.map +1 -1
  10. package/build/types/helpers/src/protocol/NodeTree.d.ts +16 -2
  11. package/build/types/helpers/src/protocol/NodeTree.d.ts.map +1 -1
  12. package/build/types/helpers/src/protocol/command.d.ts +26 -0
  13. package/build/types/helpers/src/protocol/command.d.ts.map +1 -1
  14. package/build/types/helpers/src/protocol/nodeType.d.ts +10 -0
  15. package/build/types/helpers/src/protocol/nodeType.d.ts.map +1 -1
  16. package/build/types/helpers/src/protocol/taskOptions.d.ts +3 -0
  17. package/build/types/helpers/src/protocol/taskOptions.d.ts.map +1 -1
  18. package/build/types/helpers/src/protocol/templateNodeTypes.d.ts.map +1 -1
  19. package/build/types/helpers/src/protocol/treeNodes.d.ts +38 -0
  20. package/build/types/helpers/src/protocol/treeNodes.d.ts.map +1 -1
  21. package/build/types/helpers/src/protocol/update.d.ts +25 -0
  22. package/build/types/helpers/src/protocol/update.d.ts.map +1 -1
  23. package/build/types/helpers/src/utils/callbackToAsyncIterator.d.ts +1 -1
  24. package/build/types/helpers/src/utils/callbackToAsyncIterator.d.ts.map +1 -1
  25. package/build/types/service/src/createAmqpConnection.d.ts +2 -2
  26. package/build/types/service/src/createAmqpConnection.d.ts.map +1 -1
  27. package/build/types/service/src/helpers.d.ts +6 -2
  28. package/build/types/service/src/helpers.d.ts.map +1 -1
  29. package/package.json +7 -3
package/build/index.js CHANGED
@@ -472,6 +472,11 @@ async function unwrapResult(params) {
472
472
  }
473
473
  function createContextHelper(options) {
474
474
  const terminatePromise = Promise.withResolvers();
475
+ const abortController = new AbortController;
476
+ terminatePromise.promise.then(() => abortController.abort());
477
+ const terminated = Object.assign(terminatePromise.promise, {
478
+ signal: abortController.signal
479
+ });
475
480
  return [
476
481
  {
477
482
  taskId: options.taskId,
@@ -509,7 +514,7 @@ function createContextHelper(options) {
509
514
  skip() {
510
515
  throw new SkipError;
511
516
  },
512
- terminated: terminatePromise.promise
517
+ terminated
513
518
  },
514
519
  terminatePromise
515
520
  ];
@@ -541,12 +546,14 @@ var headerSchema = z5.object({
541
546
  properties: z5.object({
542
547
  correlationId: z5.uuid(),
543
548
  headers: z5.object({
544
- taskId: z5.uuid()
549
+ taskId: z5.uuid(),
550
+ mode: z5.enum(["LINEAR", "CONTINUOUS"]).default("LINEAR")
545
551
  })
546
552
  })
547
553
  }).transform((msg) => ({
548
554
  messageId: msg.properties.correlationId,
549
- taskId: msg.properties.headers.taskId
555
+ taskId: msg.properties.headers.taskId,
556
+ mode: msg.properties.headers.mode
550
557
  }));
551
558
  var payloadSchema = z5.object({ content: z5.instanceof(Buffer) }).transform((msg) => JSON.parse(msg.content.toString())).pipe(z5.object({
552
559
  input: z5.unknown(),
@@ -585,7 +592,7 @@ var connectionOptionsSchema = z5.object({
585
592
  silent: z5.boolean().optional(),
586
593
  prefetch: z5.number().int().optional(),
587
594
  connectionTimeout: z5.number().positive().default(3000),
588
- connectionOptions: z5.any()
595
+ connectionOptions: z5.any().optional()
589
596
  });
590
597
  function isMessageHandlerGenerator(handler) {
591
598
  return handler.constructor.name === "GeneratorFunction" || handler.constructor.name === "AsyncGeneratorFunction";
@@ -658,7 +665,7 @@ function createConnection({
658
665
  headers: {
659
666
  outputName: outputName ?? null,
660
667
  connectionId,
661
- libVersion: "javascript@1.0.0-alpha.50",
668
+ libVersion: "javascript@1.0.0-alpha.53",
662
669
  ...headers
663
670
  }
664
671
  });
@@ -695,10 +702,12 @@ function createConnection({
695
702
  return;
696
703
  }
697
704
  let publishIndex = 0;
705
+ let acked = false;
706
+ let terminated = false;
698
707
  const donePromises = [];
699
708
  const registeredCallbackIds = new Set;
700
709
  let resolveActiveMessage = () => {};
701
- const { messageId, taskId } = headerSchema.parse(message);
710
+ const { messageId, taskId, mode } = headerSchema.parse(message);
702
711
  try {
703
712
  let deferred = false;
704
713
  let deferredReason = null;
@@ -754,19 +763,33 @@ function createConnection({
754
763
  priority: message.properties.priority,
755
764
  begin: true
756
765
  });
757
- if (isMessageHandlerGenerator(messageHandler)) {
766
+ if (isMessageHandlerGenerator(messageHandler) && mode === "CONTINUOUS") {
767
+ channel.ack(message);
768
+ acked = true;
758
769
  const generator = messageHandler(extendedContext);
759
770
  const terminationPromise = Promise.withResolvers();
760
771
  generatorTerminators.set(messageId, (reason) => {
761
- generator.return();
772
+ terminated = true;
773
+ generator.return().catch((error) => {
774
+ if (terminated && error instanceof Error && error.name === "AbortError" && !(error instanceof AbortError)) {
775
+ return;
776
+ }
777
+ throw error;
778
+ });
762
779
  terminationPromise.resolve(abortSymbol);
763
780
  terminatePromise.resolve(reason);
764
781
  });
765
782
  await handlerStorage.run(extendedContext, async () => {
766
783
  while (true) {
784
+ const nextPromise = Promise.resolve(generator.next()).then((r) => r, (error) => {
785
+ if (terminated && error instanceof Error && error.name === "AbortError" && !(error instanceof AbortError)) {
786
+ return { value: undefined, done: true };
787
+ }
788
+ throw error;
789
+ });
767
790
  const next = await Promise.race([
768
791
  terminationPromise.promise,
769
- generator.next()
792
+ nextPromise
770
793
  ]);
771
794
  if (next === abortSymbol) {
772
795
  break;
@@ -851,17 +874,23 @@ function createConnection({
851
874
  deferred,
852
875
  done: !deferred
853
876
  });
854
- channel.ack(message);
877
+ if (!acked) {
878
+ channel.ack(message);
879
+ }
855
880
  resolve2();
856
881
  });
857
882
  });
858
883
  } catch (error) {
859
884
  if (error instanceof SkipError) {
860
- channel.nack(message);
885
+ if (!acked) {
886
+ channel.nack(message);
887
+ }
861
888
  return;
862
889
  }
863
890
  if (error instanceof RetryError) {
864
- channel.ack(message);
891
+ if (!acked) {
892
+ channel.ack(message);
893
+ }
865
894
  const properties = {
866
895
  ...message.properties,
867
896
  expiration: error.delay || 1000
@@ -870,25 +899,35 @@ function createConnection({
870
899
  return;
871
900
  }
872
901
  if (error instanceof AbortError && error.message.length > 0) {
873
- channelWrapper.ack(message);
902
+ if (!acked) {
903
+ channelWrapper.ack(message);
904
+ }
874
905
  channelWrapper.publish(`${exchange}-retry`, "operator", error.message, {
875
906
  ...message.properties,
876
907
  contentType: "text/plain",
877
908
  headers: {
878
909
  ...message.properties.headers,
879
910
  index: publishIndex++,
880
- libVersion: "javascript@1.0.0-alpha.50",
911
+ libVersion: "javascript@1.0.0-alpha.53",
881
912
  abort: true
882
913
  }
883
914
  });
884
915
  return;
885
916
  }
917
+ if (terminated && error instanceof Error && error.name === "AbortError" && !(error instanceof AbortError)) {
918
+ if (!acked) {
919
+ channel.ack(message);
920
+ }
921
+ return;
922
+ }
886
923
  if (error instanceof Error) {
887
924
  if (!silent) {
888
925
  console.error("Encountered an error inside service handler:");
889
926
  console.error(error);
890
927
  }
891
- channel.ack(message);
928
+ if (!acked) {
929
+ channel.ack(message);
930
+ }
892
931
  channel.publish(`${exchange}-retry`, "operator", message.content, {
893
932
  ...message.properties,
894
933
  headers: {
@@ -896,7 +935,7 @@ function createConnection({
896
935
  version,
897
936
  exception: true,
898
937
  index: publishIndex++,
899
- libVersion: "javascript@1.0.0-alpha.50",
938
+ libVersion: "javascript@1.0.0-alpha.53",
900
939
  "error-message": error.message || "error in service handler"
901
940
  }
902
941
  });
@@ -930,7 +969,7 @@ function createConnection({
930
969
  };
931
970
  const registeredCallbackIds = new Set;
932
971
  const donePromises = [];
933
- await actor({
972
+ const sendApi = {
934
973
  async sendToOutput(outputName, data) {
935
974
  await activeMessage();
936
975
  const donePromise = Promise.withResolvers();
@@ -994,13 +1033,24 @@ function createConnection({
994
1033
  contentType: "text/plain",
995
1034
  headers: {
996
1035
  taskId,
997
- libVersion: "javascript@1.0.0-alpha.50",
1036
+ libVersion: "javascript@1.0.0-alpha.53",
998
1037
  index: publishIndex++,
999
1038
  abort: true
1000
1039
  }
1001
1040
  });
1002
1041
  }
1003
- });
1042
+ };
1043
+ const result = await actor(sendApi);
1044
+ if (result != null && typeof result === "object" && ((Symbol.asyncIterator in result) || (Symbol.iterator in result))) {
1045
+ const iterable = result;
1046
+ for await (const value of iterable) {
1047
+ if (value !== undefined) {
1048
+ await sendApi.send(value);
1049
+ }
1050
+ }
1051
+ } else if (result !== undefined) {
1052
+ await sendApi.send(result);
1053
+ }
1004
1054
  await new Promise((resolve2) => setImmediate(resolve2));
1005
1055
  await activeMessage();
1006
1056
  while (true) {
@@ -1177,5 +1227,5 @@ export {
1177
1227
  RequenceConnectionError
1178
1228
  };
1179
1229
 
1180
- //# debugId=57C0C865BD4C680C64756E2164756E21
1230
+ //# debugId=0C626223B0DCBC9D64756E2164756E21
1181
1231
  //# sourceMappingURL=index.js.map
@@ -7,18 +7,18 @@
7
7
  "import { isRecord } from './guards.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 Function?: DataVistor<(...args: any[]) => any>\n Symbol?: DataVistor<symbol>\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\nclass AbortMapData extends Error {}\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 let aborted = false\n const traverseData = (data: any, path: Array<string | number>): any => {\n if (aborted) {\n return data\n }\n try {\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 (typeof data === 'symbol') {\n return notUndefined(visitors.Symbol?.(data, path), data)\n }\n if (typeof data === 'function') {\n return notUndefined(visitors.Function?.(data, path), data)\n }\n if (isRecord(data)) {\n return resolve(\n visitors.Object?.(structuredClone(data), path),\n (resolvedData) => {\n const nextData = resolvedData ?? data\n if (!isRecord(nextData)) {\n return nextData\n }\n const entries = Object.entries(nextData).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 }\n if (typeof data === 'object' && data) {\n return notUndefined(visitors.Object?.(data, path), data)\n }\n return data\n } catch (error) {\n if (error instanceof AbortMapData) {\n aborted = true\n return data\n }\n throw error\n }\n }\n\n return traverseData(data, [])\n}\n\nmapData.abort = () => {\n throw new AbortMapData()\n}\n",
8
8
  "import { z } from 'zod/v4'\n\nconst callbackObjectSchema = z.object({\n sourceId: z.string(),\n outputName: z.string().nullable(),\n propertyPath: z.array(z.union([z.string(), z.int()])),\n callbackId: z.uuid(),\n __REQUENCE_type: z.literal('RequenceCallback'),\n})\n\nexport type CallbackObject = z.infer<typeof callbackObjectSchema>\n\nexport function isCallbackObject(data: unknown): data is CallbackObject {\n return callbackObjectSchema.safeParse(data).success\n}\n\nexport type RequenceCallback<T> = (arg: T) => void\nexport type WrappedRequenceCallback<T> = RequenceCallback<T> & {\n response(): Promise<T>\n}\n\nexport function createCallback<T>(\n callback?: (arg: T) => void,\n): WrappedRequenceCallback<T> {\n const { promise, resolve } = Promise.withResolvers<T>()\n\n const executor = (arg: T) => {\n resolve(arg)\n callback?.(arg)\n }\n\n return Object.assign(executor, {\n response() {\n return promise\n },\n })\n}\n",
9
9
  "import { z } from 'zod/v4'\n\nconst fileObjectSchema = z.object({\n size: z.int().positive(),\n mime: z.string(),\n url: z.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",
10
- "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",
11
- "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",
10
+ "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 #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",
11
+ "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 #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",
12
12
  "import { z } from 'zod/v4'\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 isStreamObject(data: unknown): data is StreamObject {\n return streamObjectSchema.safeParse(data).success\n}\n\nexport function toStreamObject(streamInfo: {\n mime: string\n url: string\n}): StreamObject {\n return {\n ...streamInfo,\n __REQUENCE_type: 'RequenceStream',\n }\n}\n",
13
13
  "import { toFileObject } from './fileObject.ts'\nimport { RequenceFile } from './RequenceFile.ts'\nimport { RequenceStream } from './RequenceStream.ts'\nimport { toStreamObject } from './streamObject.ts'\nimport type { TaskOptions } from '../protocol/taskOptions.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<TaskOptions, '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",
14
14
  "import { mapData } from './mapData.ts'\nimport { isCallbackObject } from './requenceCallback.ts'\nimport {\n RequenceFile,\n RequenceStream,\n isFileObject,\n isStreamObject,\n} from '../files/index.ts'\n\nexport function resolveRequenceTypes(\n data: any,\n onCallback?: (params: {\n sourceId: string\n callbackId: string\n outputName: string | null\n propertyPath: (string | number)[]\n arg: unknown\n }) => void,\n) {\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 if (isCallbackObject(obj)) {\n return (arg: unknown) => {\n onCallback?.({ ...obj, arg })\n }\n }\n },\n })\n}\n",
15
- "import { type MaybePromise, deobfuscate, obfuscate } from '@requence/helpers'\nimport { type Options, connect } from 'amqp-connection-manager'\nimport type { ConfirmChannel } from 'amqplib'\nimport { z } from 'zod/v4'\n\nimport { RequenceConnectionError } from './errors.ts'\nimport createContextHelper, {\n AbortError,\n type ContextHelper,\n type JSONValue,\n RetryError,\n SkipError,\n handlerStorage,\n processData,\n unwrapResult,\n} from './helpers.ts'\nimport { libVersion } from './macro.ts' with { type: 'macro' }\nimport mapInput from './mapInput.ts'\n\ntype InternalNamedOutput = '__internal_named_output__'\n\ntype Input<V extends keyof RequenceService.Version> =\n RequenceService.Version[V]['input']\ntype Configuration<V extends keyof RequenceService.Version> =\n RequenceService.Version[V]['configuration']\ntype OutputName<\n V extends keyof RequenceService.Version,\n K = keyof RequenceService.Version[V]['outputs'],\n> = K extends '__default__' ? null : K\n\ntype OutputValue<\n V extends keyof RequenceService.Version,\n O extends OutputName<V>,\n ON = O extends null ? '__default__' : O,\n> = ON extends keyof RequenceService.Version[V]['outputs']\n ? RequenceService.Version[V]['outputs'][ON]\n : never\n\ninterface ServiceContextHelper<V extends keyof RequenceService.Version>\n extends Omit<\n ContextHelper,\n 'input' | 'configuration' | 'getData' | 'getConfiguration' | 'toOutput'\n > {\n input: Input<V>\n configuration: Configuration<V>\n\n toOutput<O extends OutputName<V>>(\n name: O,\n value: OutputValue<V, O>,\n ): InternalNamedOutput\n}\n\ntype ApiOutputName<V> = V extends keyof RequenceService.Version\n ? OutputName<V>\n : string | null\ntype ApiOutputValue<V, O> = V extends keyof RequenceService.Version\n ? O extends OutputName<V>\n ? OutputValue<V, O>\n : unknown\n : unknown\n\ninterface ActorApi<V> {\n sendToOutput<O extends ApiOutputName<V>>(\n outputName: O,\n data: ApiOutputValue<V, O>,\n ): void\n send(data: ApiOutputValue<V, null>): void\n abort(error: string | Error): void\n}\n\nexport interface ConnectionApi<V> {\n close(): Promise<void>\n open(): Promise<ConnectionApi<V>>\n act(\n messageKey: string,\n actor: (api: ActorApi<V>) => void | Promise<void>,\n ): Promise<void>\n}\n\nconst messageKeySchema = z\n .string()\n .transform((str) => deobfuscate(str))\n .pipe(z.tuple([z.uuid(), z.uuid()]).rest(z.string()))\n .transform((arr) => ({\n taskId: arr[0],\n messageId: arr[1],\n uploadUrl: arr[2] || undefined,\n streamUrl: arr[3] || undefined,\n }))\n\nconst headerSchema = z\n .object({\n properties: z.object({\n correlationId: z.uuid(),\n headers: z.object({\n taskId: z.uuid(),\n }),\n }),\n })\n .transform((msg) => ({\n messageId: msg.properties.correlationId,\n taskId: msg.properties.headers.taskId,\n }))\n\nconst payloadSchema = z\n .object({ content: z.instanceof(Buffer) })\n .transform((msg) => JSON.parse(msg.content.toString()))\n .pipe(\n z.object({\n input: z.unknown(),\n configuration: z.unknown(),\n options: z.object({\n uploadUrl: z.url().optional(),\n streamUrl: z.url().optional(),\n }),\n }),\n )\n\nconst backchannelMessageSchema = z\n .object({\n content: z\n .instanceof(Buffer)\n .transform((content) => JSON.parse(content.toString()))\n .pipe(\n z.discriminatedUnion('type', [\n z.object({\n type: z.literal('stop'),\n }),\n z.object({\n type: z.literal('callback'),\n callbackId: z.uuid(),\n arg: z.any(),\n }),\n ]),\n ),\n properties: z.object({\n correlationId: z.string(),\n }),\n })\n .transform((message) => ({\n payload: message.content,\n messageId: message.properties.correlationId,\n }))\n\nconst abortSymbol = Symbol()\n\nexport const connectionOptionsSchema = z.object({\n url: z.union([\n z\n .string()\n .regex(/^amqps?:\\/\\/(.+):(.+)@(.+)$/)\n .transform((str) => new URL(str)),\n z\n .instanceof(URL)\n .refine((url) => url.protocol.match(/^amqps?:/), 'Wrong protocol'),\n ]),\n version: z.string(),\n devOverlay: z.string().optional(),\n silent: z.boolean().optional(),\n prefetch: z.number().int().optional(),\n connectionTimeout: z.number().positive().default(3_000),\n connectionOptions: z.any(),\n})\n\nexport type ConnectionOptions = z.output<typeof connectionOptionsSchema>\n\ntype MessageHandlerContext<V> = V extends keyof RequenceService.Version\n ? ServiceContextHelper<V>\n : ContextHelper\ntype MessageHandlerReturnValue<\n V,\n O = null,\n> = V extends keyof RequenceService.Version\n ? O extends OutputName<V>\n ? OutputValue<V, O> | InternalNamedOutput\n : void\n : JSONValue\n\ntype MessageHandlerFunction<V> = (\n context: MessageHandlerContext<V>,\n) => MaybePromise<MessageHandlerReturnValue<V> | void>\n\ntype MessageHandlerGenerator<V> = (\n context: MessageHandlerContext<V>,\n) => Generator<\n MessageHandlerReturnValue<V>,\n MessageHandlerReturnValue<V> | void,\n void\n>\ntype MessageHandlerAsyncGenerator<V> = (\n context: MessageHandlerContext<V>,\n) => AsyncGenerator<\n MessageHandlerReturnValue<V>,\n MessageHandlerReturnValue<V> | void,\n void\n>\n\nexport type MessageHandler<V> = V extends keyof RequenceService.Version\n ? RequenceService.Version[V]['mode'] extends 'LINEAR'\n ? MessageHandlerFunction<V>\n :\n | MessageHandlerAsyncGenerator<V>\n | MessageHandlerGenerator<V>\n | MessageHandlerFunction<V>\n :\n | MessageHandlerAsyncGenerator<V>\n | MessageHandlerGenerator<V>\n | MessageHandlerFunction<V>\n\nfunction isMessageHandlerGenerator<V extends keyof RequenceService.Version>(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n handler: Function,\n): handler is MessageHandlerGenerator<V> | MessageHandlerAsyncGenerator<V> {\n return (\n handler.constructor.name === 'GeneratorFunction' ||\n handler.constructor.name === 'AsyncGeneratorFunction'\n )\n}\n\nconst activeMessages = new Map<string, Promise<void>>()\n\nexport default function createConnection<V>(\n {\n url,\n version,\n prefetch = 1,\n silent = false,\n connectionTimeout,\n connectionOptions,\n devOverlay = '',\n }: ConnectionOptions,\n messageHandler: MessageHandler<V>,\n) {\n const baseQueue = `${url.username}@${version}`\n const queue = devOverlay\n ? `${baseQueue}-dev-overlay-${devOverlay}`\n : baseQueue\n const exchange = url.username\n const connection = connect(url.toString(), { connectionOptions })\n\n const connectedPromise = new Promise<void>((resolve, reject) => {\n const unsubscribe = () => {\n clearTimeout(timeout)\n connection.removeListener('connect', handleConnect)\n connection.removeListener('connectFailed', handleConnectFailed)\n }\n\n const timeout = setTimeout(() => {\n handleConnectFailed({\n err: new RequenceConnectionError('Requence connection timeout'),\n })\n }, connectionTimeout)\n\n const handleConnect = () => {\n unsubscribe()\n resolve()\n }\n\n const handleConnectFailed = ({ err }: { err: Error }) => {\n unsubscribe()\n if (\n err.message.startsWith(\n 'Handshake terminated by server: 403 (ACCESS-REFUSED)',\n )\n ) {\n reject(new RequenceConnectionError('Invalid service credentials'))\n } else {\n reject(err)\n }\n }\n\n connection.addListener('connect', handleConnect)\n connection.addListener('connectFailed', handleConnectFailed)\n })\n\n const connectionId = crypto.randomUUID()\n const backchannelQueue = `${baseQueue}-backchannel-${connectionId}`\n const channelWrapper = connection.createChannel({\n async setup(channel: ConfirmChannel) {\n if (devOverlay) {\n await channel.assertQueue(queue)\n await channel.bindQueue(queue, 'service', queue)\n }\n await channel.checkExchange(exchange)\n await channel.checkExchange(`${exchange}-retry`)\n await channel.checkQueue(queue)\n await channel.prefetch(prefetch)\n },\n })\n\n const publish = ({\n data,\n outputName,\n messageId,\n priority,\n ...headers\n }: {\n index: number\n data?: unknown\n outputName?: string | null\n messageId: string\n taskId: string\n priority?: number\n version: string\n debugMethod?: 'log' | 'warn' | 'info' | 'error'\n debug?: boolean\n connectionId?: string\n callbackId?: string\n propertyPath?: (string | number)[]\n begin?: boolean\n deferred?: boolean\n done?: boolean\n }) =>\n channelWrapper.publish(\n exchange,\n '',\n Buffer.from(JSON.stringify(data ?? null)),\n {\n correlationId: messageId,\n contentType: 'application/json',\n persistent: true,\n priority,\n headers: {\n outputName: outputName ?? null,\n connectionId,\n libVersion: libVersion(),\n ...headers,\n },\n },\n )\n\n const generatorTerminators = new Map<string, (reason: string) => void>()\n const callbacks = new Map<string, (...args: any[]) => void>()\n\n channelWrapper.addSetup(async (channel: ConfirmChannel) => {\n await channel.assertQueue(backchannelQueue, {\n exclusive: true,\n })\n\n await channel.bindQueue(backchannelQueue, 'service', backchannelQueue)\n\n await channel.consume(\n backchannelQueue,\n async (message) => {\n const result = backchannelMessageSchema.safeParse(message)\n\n if (!result.success) {\n return\n }\n\n const backchannelMessage = result.data\n\n switch (backchannelMessage.payload.type) {\n case 'stop': {\n generatorTerminators.get(backchannelMessage.messageId)?.(\n 'task stopped',\n )\n break\n }\n case 'callback': {\n callbacks.get(backchannelMessage.payload.callbackId)?.(\n backchannelMessage.payload.arg,\n )\n break\n }\n }\n },\n {\n noAck: true,\n },\n )\n })\n\n channelWrapper.addSetup(async (channel: ConfirmChannel) => {\n channel.consume(queue, async (message) => {\n if (!message) {\n return\n }\n\n let publishIndex = 0\n const donePromises: Array<Promise<void>> = []\n const registeredCallbackIds = new Set<string>()\n let resolveActiveMessage = () => {}\n\n const { messageId, taskId } = headerSchema.parse(message)\n\n try {\n let deferred = false\n let deferredReason: string | null = null\n\n const messageExecution = Promise.withResolvers<void>()\n activeMessages.set(messageId, messageExecution.promise)\n messageExecution.promise.then(() => {\n activeMessages.delete(messageId)\n })\n resolveActiveMessage = () => {\n messageExecution.resolve()\n }\n\n const payload = payloadSchema.parse(message)\n\n const [extendedContext, terminatePromise] = createContextHelper({\n taskId,\n input: mapInput(payload.input),\n configuration: mapInput(payload.configuration),\n onLog(debugMethod, data) {\n publish({\n index: publishIndex++,\n version,\n messageId,\n taskId,\n data,\n debugMethod,\n priority: message.properties.priority,\n debug: true,\n })\n },\n onDefer(reason) {\n deferred = true\n deferredReason = reason || null\n\n return obfuscate(\n taskId,\n messageId,\n payload.options.uploadUrl ?? '',\n payload.options.streamUrl ?? '',\n )\n },\n onCallback(params) {\n publish({\n index: 0,\n version,\n taskId,\n messageId,\n data: params.arg,\n outputName: params.outputName,\n connectionId: params.sourceId,\n callbackId: params.callbackId,\n propertyPath: params.propertyPath,\n })\n },\n }) as unknown as [\n MessageHandlerContext<V>,\n PromiseWithResolvers<string>,\n ]\n\n await publish({\n index: publishIndex++,\n version,\n messageId,\n taskId,\n priority: message.properties.priority,\n begin: true,\n })\n\n if (isMessageHandlerGenerator(messageHandler)) {\n const generator = messageHandler(extendedContext)\n const terminationPromise = Promise.withResolvers<typeof abortSymbol>()\n generatorTerminators.set(messageId, (reason) => {\n generator.return()\n terminationPromise.resolve(abortSymbol)\n terminatePromise.resolve(reason)\n })\n\n await handlerStorage.run(\n extendedContext as ContextHelper,\n async () => {\n while (true) {\n const next = await Promise.race([\n terminationPromise.promise,\n generator.next(),\n ])\n if (next === abortSymbol) {\n break\n }\n\n const { value: result, done } = next\n\n if (deferred) {\n deferred = false\n console.warn(\n 'returning a value in a deferred message resets the deferred status',\n )\n }\n\n const donePromise = Promise.withResolvers<void>()\n donePromises.push(donePromise.promise)\n\n const { value, outputName } = await unwrapResult({\n result,\n options: payload.options,\n onDone: donePromise.resolve,\n onCallback: (callback) => {\n const callbackId = crypto.randomUUID()\n registeredCallbackIds.add(callbackId)\n callbacks.set(callbackId, callback)\n return {\n sourceId: connectionId,\n callbackId,\n }\n },\n })\n\n if (!done || typeof value !== 'undefined') {\n publish({\n index: publishIndex++,\n version,\n messageId,\n taskId,\n data: value,\n priority: message.properties.priority,\n outputName,\n })\n }\n\n if (done) {\n break\n }\n }\n },\n )\n } else {\n const result = await handlerStorage.run(\n extendedContext as ContextHelper,\n () => messageHandler(extendedContext),\n )\n const donePromise = Promise.withResolvers<void>()\n donePromises.push(donePromise.promise)\n const { value, outputName } = await unwrapResult({\n result,\n options: payload.options,\n onDone: donePromise.resolve,\n onCallback: () => {\n throw new Error(\n 'callbacks can only be used in generator functions',\n )\n },\n })\n if (deferred && value) {\n console.warn(\n 'returning a value in a deferred message resets the deferred status',\n )\n deferred = false\n }\n\n if (!deferred || value) {\n publish({\n index: publishIndex++,\n version,\n messageId,\n taskId,\n data: value,\n priority: message.properties.priority,\n outputName,\n })\n }\n }\n\n await new Promise<void>((resolve) => {\n setImmediate(async () => {\n if (!deferred) {\n await Promise.allSettled(donePromises)\n }\n\n await publish({\n index: publishIndex++,\n version,\n messageId,\n taskId,\n data: deferredReason,\n priority: message.properties.priority,\n deferred,\n done: !deferred,\n })\n\n channel.ack(message)\n resolve()\n })\n })\n } catch (error) {\n if (error instanceof SkipError) {\n channel.nack(message)\n return\n }\n if (error instanceof RetryError) {\n channel.ack(message)\n const properties: Options.Publish = {\n ...message.properties,\n expiration: error.delay || 1_000, // 1s\n }\n channel.publish(\n `${exchange}-retry`,\n version, // to other services\n message.content,\n properties,\n )\n\n return\n }\n\n if (error instanceof AbortError && error.message.length > 0) {\n channelWrapper.ack(message)\n channelWrapper.publish(\n `${exchange}-retry`,\n 'operator', //back to operator\n error.message,\n {\n ...message.properties,\n contentType: 'text/plain',\n headers: {\n ...message.properties.headers,\n index: publishIndex++,\n libVersion: libVersion(),\n abort: true,\n },\n },\n )\n\n return\n }\n\n if (error instanceof Error) {\n if (!silent) {\n console.error('Encountered an error inside service handler:')\n console.error(error)\n }\n\n channel.ack(message)\n channel.publish(\n `${exchange}-retry`,\n 'operator', // back to operator\n message.content,\n {\n ...message.properties,\n headers: {\n ...message.properties.headers,\n version,\n exception: true,\n index: publishIndex++,\n libVersion: libVersion(),\n 'error-message': error.message || 'error in service handler',\n },\n },\n )\n\n return\n }\n } finally {\n generatorTerminators.delete(messageId)\n registeredCallbackIds.forEach((id) => callbacks.delete(id))\n resolveActiveMessage()\n }\n })\n })\n\n const activeMessageKeys = new Set<string>()\n const api: ConnectionApi<V> = {\n close: async () => {\n await channelWrapper.close()\n await connection.close()\n },\n open: () => connectedPromise.then(() => api),\n\n async act(messageKey, actor) {\n if (activeMessageKeys.has(messageKey)) {\n throw new Error('a defer key can only be used once')\n }\n\n activeMessageKeys.add(messageKey)\n\n let publishIndex = 0\n const { taskId, messageId, ...options } =\n messageKeySchema.parse(messageKey)\n\n const activeMessage = async () => {\n if (activeMessages.has(messageId)) {\n await activeMessages.get(messageId)\n }\n }\n\n const registeredCallbackIds = new Set<string>()\n const donePromises: Array<Promise<unknown>> = []\n\n await actor({\n async sendToOutput(outputName, data) {\n await activeMessage()\n const donePromise = Promise.withResolvers<void>()\n donePromises.push(donePromise.promise)\n donePromises.push(\n publish({\n index: publishIndex++,\n version,\n messageId,\n taskId,\n data: await processData({\n outputName: outputName as string | null,\n data,\n options,\n onDone: donePromise.resolve,\n onCallback: (callback) => {\n const callbackId = crypto.randomUUID()\n registeredCallbackIds.add(callbackId)\n callbacks.set(callbackId, callback)\n\n return {\n sourceId: connectionId,\n callbackId,\n }\n },\n }),\n outputName: outputName as string | null,\n }),\n )\n },\n async send(data) {\n await activeMessage()\n const donePromise = Promise.withResolvers<void>()\n donePromises.push(donePromise.promise)\n donePromises.push(\n publish({\n index: publishIndex++,\n version,\n messageId,\n taskId,\n data: await processData({\n outputName: null,\n data,\n options,\n onDone: donePromise.resolve,\n onCallback: (callback) => {\n const callbackId = crypto.randomUUID()\n registeredCallbackIds.add(callbackId)\n callbacks.set(callbackId, callback)\n return {\n sourceId: connectionId,\n callbackId,\n }\n },\n }),\n }),\n )\n },\n async abort(error) {\n await activeMessage()\n channelWrapper.publish(\n `${exchange}-retry`,\n 'operator',\n error instanceof Error ? error.message : error,\n {\n persistent: true,\n correlationId: messageId,\n expiration: 0,\n priority: 0,\n contentType: 'text/plain',\n headers: {\n taskId,\n libVersion: libVersion(),\n index: publishIndex++,\n abort: true,\n },\n },\n )\n },\n })\n\n await new Promise((resolve) => setImmediate(resolve))\n await activeMessage()\n\n while (true) {\n const promiseCount = donePromises.length\n await Promise.allSettled(donePromises)\n if (promiseCount === donePromises.length) {\n break\n }\n }\n\n registeredCallbackIds.forEach((id) => callbacks.delete(id))\n\n await publish({\n index: publishIndex++,\n version,\n messageId,\n taskId,\n done: true,\n })\n\n activeMessageKeys.delete(messageKey)\n },\n }\n\n return api\n}\n",
15
+ "import { type MaybePromise, deobfuscate, obfuscate } from '@requence/helpers'\nimport { type Options, connect } from 'amqp-connection-manager'\nimport type { ConfirmChannel } from 'amqplib'\nimport { z } from 'zod/v4'\n\nimport { RequenceConnectionError } from './errors.ts'\nimport createContextHelper, {\n AbortError,\n type ContextHelper,\n type JSONValue,\n RetryError,\n SkipError,\n handlerStorage,\n processData,\n unwrapResult,\n} from './helpers.ts'\nimport { libVersion } from './macro.ts' with { type: 'macro' }\nimport mapInput from './mapInput.ts'\n\ntype InternalNamedOutput = '__internal_named_output__'\n\ntype Input<V extends keyof RequenceService.Version> =\n RequenceService.Version[V]['input']\ntype Configuration<V extends keyof RequenceService.Version> =\n RequenceService.Version[V]['configuration']\ntype OutputName<\n V extends keyof RequenceService.Version,\n K = keyof RequenceService.Version[V]['outputs'],\n> = K extends '__default__' ? null : K\n\ntype OutputValue<\n V extends keyof RequenceService.Version,\n O extends OutputName<V>,\n ON = O extends null ? '__default__' : O,\n> = ON extends keyof RequenceService.Version[V]['outputs']\n ? RequenceService.Version[V]['outputs'][ON]\n : never\n\ninterface ServiceContextHelper<\n V extends keyof RequenceService.Version,\n> extends Omit<\n ContextHelper,\n 'input' | 'configuration' | 'getData' | 'getConfiguration' | 'toOutput'\n> {\n input: Input<V>\n configuration: Configuration<V>\n\n toOutput<O extends OutputName<V>>(\n name: O,\n value: OutputValue<V, O>,\n ): InternalNamedOutput\n}\n\ntype ApiOutputName<V> = V extends keyof RequenceService.Version\n ? OutputName<V>\n : string | null\ntype ApiOutputValue<V, O> = V extends keyof RequenceService.Version\n ? O extends OutputName<V>\n ? OutputValue<V, O>\n : unknown\n : unknown\n\ninterface ActorApi<V> {\n sendToOutput<O extends ApiOutputName<V>>(\n outputName: O,\n data: ApiOutputValue<V, O>,\n ): void\n send(data: ApiOutputValue<V, null>): void\n abort(error: string | Error): void\n}\n\nexport interface ConnectionApi<V> {\n close(): Promise<void>\n open(): Promise<ConnectionApi<V>>\n act(\n messageKey: string,\n actor: (\n api: ActorApi<V>,\n ) =>\n | ApiOutputValue<V, null>\n | Promise<ApiOutputValue<V, null>>\n | void\n | Promise<void>\n | AsyncGenerator<ApiOutputValue<V, null>>\n | Generator<ApiOutputValue<V, null>>,\n ): Promise<void>\n}\n\nconst messageKeySchema = z\n .string()\n .transform((str) => deobfuscate(str))\n .pipe(z.tuple([z.uuid(), z.uuid()]).rest(z.string()))\n .transform((arr) => ({\n taskId: arr[0],\n messageId: arr[1],\n uploadUrl: arr[2] || undefined,\n streamUrl: arr[3] || undefined,\n }))\n\nconst headerSchema = z\n .object({\n properties: z.object({\n correlationId: z.uuid(),\n headers: z.object({\n taskId: z.uuid(),\n mode: z.enum(['LINEAR', 'CONTINUOUS']).default('LINEAR'),\n }),\n }),\n })\n .transform((msg) => ({\n messageId: msg.properties.correlationId,\n taskId: msg.properties.headers.taskId,\n mode: msg.properties.headers.mode,\n }))\n\nconst payloadSchema = z\n .object({ content: z.instanceof(Buffer) })\n .transform((msg) => JSON.parse(msg.content.toString()))\n .pipe(\n z.object({\n input: z.unknown(),\n configuration: z.unknown(),\n options: z.object({\n uploadUrl: z.url().optional(),\n streamUrl: z.url().optional(),\n }),\n }),\n )\n\nconst backchannelMessageSchema = z\n .object({\n content: z\n .instanceof(Buffer)\n .transform((content) => JSON.parse(content.toString()))\n .pipe(\n z.discriminatedUnion('type', [\n z.object({\n type: z.literal('stop'),\n }),\n z.object({\n type: z.literal('callback'),\n callbackId: z.uuid(),\n arg: z.any(),\n }),\n ]),\n ),\n properties: z.object({\n correlationId: z.string(),\n }),\n })\n .transform((message) => ({\n payload: message.content,\n messageId: message.properties.correlationId,\n }))\n\nconst abortSymbol = Symbol()\n\nexport const connectionOptionsSchema = z.object({\n url: z.union([\n z\n .string()\n .regex(/^amqps?:\\/\\/(.+):(.+)@(.+)$/)\n .transform((str) => new URL(str)),\n z\n .instanceof(URL)\n .refine((url) => url.protocol.match(/^amqps?:/), 'Wrong protocol'),\n ]),\n version: z.string(),\n devOverlay: z.string().optional(),\n silent: z.boolean().optional(),\n prefetch: z.number().int().optional(),\n connectionTimeout: z.number().positive().default(3_000),\n connectionOptions: z.any().optional(),\n})\n\nexport type ConnectionOptions = z.output<typeof connectionOptionsSchema>\n\ntype MessageHandlerContext<V> = V extends keyof RequenceService.Version\n ? ServiceContextHelper<V>\n : ContextHelper\ntype MessageHandlerReturnValue<\n V,\n O = null,\n> = V extends keyof RequenceService.Version\n ? O extends OutputName<V>\n ? OutputValue<V, O> | InternalNamedOutput\n : void\n : JSONValue\n\ntype MessageHandlerFunction<V> = (\n context: MessageHandlerContext<V>,\n) => MaybePromise<MessageHandlerReturnValue<V> | void>\n\ntype MessageHandlerGenerator<V> = (\n context: MessageHandlerContext<V>,\n) => Generator<\n MessageHandlerReturnValue<V>,\n MessageHandlerReturnValue<V> | void,\n void\n>\ntype MessageHandlerAsyncGenerator<V> = (\n context: MessageHandlerContext<V>,\n) => AsyncGenerator<\n MessageHandlerReturnValue<V>,\n MessageHandlerReturnValue<V> | void,\n void\n>\n\nexport type MessageHandler<V> = V extends keyof RequenceService.Version\n ? RequenceService.Version[V]['mode'] extends 'LINEAR'\n ? MessageHandlerFunction<V>\n :\n | MessageHandlerAsyncGenerator<V>\n | MessageHandlerGenerator<V>\n | MessageHandlerFunction<V>\n :\n | MessageHandlerAsyncGenerator<V>\n | MessageHandlerGenerator<V>\n | MessageHandlerFunction<V>\n\nfunction isMessageHandlerGenerator<V extends keyof RequenceService.Version>(\n // oxlint-disable-next-line typescript/no-unsafe-function-type\n handler: Function,\n): handler is MessageHandlerGenerator<V> | MessageHandlerAsyncGenerator<V> {\n return (\n handler.constructor.name === 'GeneratorFunction' ||\n handler.constructor.name === 'AsyncGeneratorFunction'\n )\n}\n\nconst activeMessages = new Map<string, Promise<void>>()\n\nexport default function createConnection<V>(\n {\n url,\n version,\n prefetch = 1,\n silent = false,\n connectionTimeout,\n connectionOptions,\n devOverlay = '',\n }: ConnectionOptions,\n messageHandler: MessageHandler<V>,\n) {\n const baseQueue = `${url.username}@${version}`\n const queue = devOverlay\n ? `${baseQueue}-dev-overlay-${devOverlay}`\n : baseQueue\n const exchange = url.username\n const connection = connect(url.toString(), { connectionOptions })\n\n const connectedPromise = new Promise<void>((resolve, reject) => {\n const unsubscribe = () => {\n clearTimeout(timeout)\n connection.removeListener('connect', handleConnect)\n connection.removeListener('connectFailed', handleConnectFailed)\n }\n\n const timeout = setTimeout(() => {\n handleConnectFailed({\n err: new RequenceConnectionError('Requence connection timeout'),\n })\n }, connectionTimeout)\n\n const handleConnect = () => {\n unsubscribe()\n resolve()\n }\n\n const handleConnectFailed = ({ err }: { err: Error }) => {\n unsubscribe()\n if (\n err.message.startsWith(\n 'Handshake terminated by server: 403 (ACCESS-REFUSED)',\n )\n ) {\n reject(new RequenceConnectionError('Invalid service credentials'))\n } else {\n reject(err)\n }\n }\n\n connection.addListener('connect', handleConnect)\n connection.addListener('connectFailed', handleConnectFailed)\n })\n\n const connectionId = crypto.randomUUID()\n const backchannelQueue = `${baseQueue}-backchannel-${connectionId}`\n const channelWrapper = connection.createChannel({\n async setup(channel: ConfirmChannel) {\n if (devOverlay) {\n await channel.assertQueue(queue)\n await channel.bindQueue(queue, 'service', queue)\n }\n await channel.checkExchange(exchange)\n await channel.checkExchange(`${exchange}-retry`)\n await channel.checkQueue(queue)\n await channel.prefetch(prefetch)\n },\n })\n\n const publish = ({\n data,\n outputName,\n messageId,\n priority,\n ...headers\n }: {\n index: number\n data?: unknown\n outputName?: string | null\n messageId: string\n taskId: string\n priority?: number\n version: string\n debugMethod?: 'log' | 'warn' | 'info' | 'error'\n debug?: boolean\n connectionId?: string\n callbackId?: string\n propertyPath?: (string | number)[]\n begin?: boolean\n deferred?: boolean\n done?: boolean\n }) =>\n channelWrapper.publish(\n exchange,\n '',\n Buffer.from(JSON.stringify(data ?? null)),\n {\n correlationId: messageId,\n contentType: 'application/json',\n persistent: true,\n priority,\n headers: {\n outputName: outputName ?? null,\n connectionId,\n libVersion: libVersion(),\n ...headers,\n },\n },\n )\n\n const generatorTerminators = new Map<string, (reason: string) => void>()\n const callbacks = new Map<string, (...args: any[]) => void>()\n\n channelWrapper.addSetup(async (channel: ConfirmChannel) => {\n await channel.assertQueue(backchannelQueue, {\n exclusive: true,\n })\n\n await channel.bindQueue(backchannelQueue, 'service', backchannelQueue)\n\n await channel.consume(\n backchannelQueue,\n async (message) => {\n const result = backchannelMessageSchema.safeParse(message)\n\n if (!result.success) {\n return\n }\n\n const backchannelMessage = result.data\n\n switch (backchannelMessage.payload.type) {\n case 'stop': {\n generatorTerminators.get(backchannelMessage.messageId)?.(\n 'task stopped',\n )\n break\n }\n case 'callback': {\n callbacks.get(backchannelMessage.payload.callbackId)?.(\n backchannelMessage.payload.arg,\n )\n break\n }\n }\n },\n {\n noAck: true,\n },\n )\n })\n\n channelWrapper.addSetup(async (channel: ConfirmChannel) => {\n channel.consume(queue, async (message) => {\n if (!message) {\n return\n }\n\n let publishIndex = 0\n let acked = false\n let terminated = false\n const donePromises: Array<Promise<void>> = []\n const registeredCallbackIds = new Set<string>()\n let resolveActiveMessage = () => {}\n\n const { messageId, taskId, mode } = headerSchema.parse(message)\n\n try {\n let deferred = false\n let deferredReason: string | null = null\n\n const messageExecution = Promise.withResolvers<void>()\n activeMessages.set(messageId, messageExecution.promise)\n messageExecution.promise.then(() => {\n activeMessages.delete(messageId)\n })\n resolveActiveMessage = () => {\n messageExecution.resolve()\n }\n\n const payload = payloadSchema.parse(message)\n\n const [extendedContext, terminatePromise] = createContextHelper({\n taskId,\n input: mapInput(payload.input),\n configuration: mapInput(payload.configuration),\n onLog(debugMethod, data) {\n publish({\n index: publishIndex++,\n version,\n messageId,\n taskId,\n data,\n debugMethod,\n priority: message.properties.priority,\n debug: true,\n })\n },\n onDefer(reason) {\n deferred = true\n deferredReason = reason || null\n\n return obfuscate(\n taskId,\n messageId,\n payload.options.uploadUrl ?? '',\n payload.options.streamUrl ?? '',\n )\n },\n onCallback(params) {\n publish({\n index: 0,\n version,\n taskId,\n messageId,\n data: params.arg,\n outputName: params.outputName,\n connectionId: params.sourceId,\n callbackId: params.callbackId,\n propertyPath: params.propertyPath,\n })\n },\n }) as unknown as [\n MessageHandlerContext<V>,\n PromiseWithResolvers<string>,\n ]\n\n await publish({\n index: publishIndex++,\n version,\n messageId,\n taskId,\n priority: message.properties.priority,\n begin: true,\n })\n\n if (\n isMessageHandlerGenerator(messageHandler) &&\n mode === 'CONTINUOUS'\n ) {\n // CONTINUOUS generator: ACK immediately, operator watchdog supervises\n channel.ack(message)\n acked = true\n\n const generator = messageHandler(extendedContext)\n const terminationPromise = Promise.withResolvers<typeof abortSymbol>()\n generatorTerminators.set(messageId, (reason) => {\n terminated = true\n // Suppress native AbortError that may reject generator.return() when\n // context.terminated.signal fires and cancels a pending await inside\n // the generator (e.g. node:timers/promises setTimeout with { signal }).\n ;(generator.return() as Promise<unknown>).catch(\n (error: unknown) => {\n if (\n terminated &&\n error instanceof Error &&\n error.name === 'AbortError' &&\n !(error instanceof AbortError)\n ) {\n return\n }\n throw error\n },\n )\n terminationPromise.resolve(abortSymbol)\n terminatePromise.resolve(reason)\n })\n\n await handlerStorage.run(\n extendedContext as ContextHelper,\n async () => {\n while (true) {\n type IterResult = IteratorResult<\n MessageHandlerReturnValue<V, null>,\n void | MessageHandlerReturnValue<V, null>\n >\n // Catch native AbortError from context.terminated.signal so\n // generator implementations don't need their own try/catch.\n const nextPromise = Promise.resolve(generator.next()).then(\n (r) => r,\n (error: unknown) => {\n if (\n terminated &&\n error instanceof Error &&\n error.name === 'AbortError' &&\n !(error instanceof AbortError)\n ) {\n return { value: undefined, done: true } as IterResult\n }\n throw error\n },\n )\n const next = await Promise.race([\n terminationPromise.promise,\n nextPromise,\n ])\n if (next === abortSymbol) {\n break\n }\n\n const { value: result, done } = next\n\n if (deferred) {\n deferred = false\n console.warn(\n 'returning a value in a deferred message resets the deferred status',\n )\n }\n\n const donePromise = Promise.withResolvers<void>()\n donePromises.push(donePromise.promise)\n\n const { value, outputName } = await unwrapResult({\n result,\n options: payload.options,\n onDone: donePromise.resolve,\n onCallback: (callback) => {\n const callbackId = crypto.randomUUID()\n registeredCallbackIds.add(callbackId)\n callbacks.set(callbackId, callback)\n return {\n sourceId: connectionId,\n callbackId,\n }\n },\n })\n\n if (!done || typeof value !== 'undefined') {\n publish({\n index: publishIndex++,\n version,\n messageId,\n taskId,\n data: value,\n priority: message.properties.priority,\n outputName,\n })\n }\n\n if (done) {\n break\n }\n }\n },\n )\n } else {\n const result = await handlerStorage.run(\n extendedContext as ContextHelper,\n () => messageHandler(extendedContext),\n )\n const donePromise = Promise.withResolvers<void>()\n donePromises.push(donePromise.promise)\n const { value, outputName } = await unwrapResult({\n result,\n options: payload.options,\n onDone: donePromise.resolve,\n onCallback: () => {\n throw new Error(\n 'callbacks can only be used in generator functions',\n )\n },\n })\n if (deferred && value) {\n console.warn(\n 'returning a value in a deferred message resets the deferred status',\n )\n deferred = false\n }\n\n if (!deferred || value) {\n publish({\n index: publishIndex++,\n version,\n messageId,\n taskId,\n data: value,\n priority: message.properties.priority,\n outputName,\n })\n }\n }\n\n await new Promise<void>((resolve) => {\n setImmediate(async () => {\n if (!deferred) {\n await Promise.allSettled(donePromises)\n }\n\n await publish({\n index: publishIndex++,\n version,\n messageId,\n taskId,\n data: deferredReason,\n priority: message.properties.priority,\n deferred,\n done: !deferred,\n })\n\n if (!acked) {\n channel.ack(message)\n }\n resolve()\n })\n })\n } catch (error) {\n if (error instanceof SkipError) {\n if (!acked) {\n channel.nack(message)\n }\n return\n }\n if (error instanceof RetryError) {\n if (!acked) {\n channel.ack(message)\n }\n const properties: Options.Publish = {\n ...message.properties,\n expiration: error.delay || 1_000, // 1s\n }\n channel.publish(\n `${exchange}-retry`,\n version, // to other services\n message.content,\n properties,\n )\n\n return\n }\n\n if (error instanceof AbortError && error.message.length > 0) {\n if (!acked) {\n channelWrapper.ack(message)\n }\n channelWrapper.publish(\n `${exchange}-retry`,\n 'operator', //back to operator\n error.message,\n {\n ...message.properties,\n contentType: 'text/plain',\n headers: {\n ...message.properties.headers,\n index: publishIndex++,\n libVersion: libVersion(),\n abort: true,\n },\n },\n )\n\n return\n }\n\n // Native AbortError thrown when context.terminated.signal fires\n // (e.g. node:timers/promises setTimeout with { signal: context.terminated.signal }).\n // Only suppress when actually in a terminated state — otherwise a\n // different AbortSignal caused the error and it should propagate.\n if (\n terminated &&\n error instanceof Error &&\n error.name === 'AbortError' &&\n !(error instanceof AbortError)\n ) {\n if (!acked) {\n channel.ack(message)\n }\n return\n }\n\n if (error instanceof Error) {\n if (!silent) {\n console.error('Encountered an error inside service handler:')\n console.error(error)\n }\n\n if (!acked) {\n channel.ack(message)\n }\n channel.publish(\n `${exchange}-retry`,\n 'operator', // back to operator\n message.content,\n {\n ...message.properties,\n headers: {\n ...message.properties.headers,\n version,\n exception: true,\n index: publishIndex++,\n libVersion: libVersion(),\n 'error-message': error.message || 'error in service handler',\n },\n },\n )\n\n return\n }\n } finally {\n generatorTerminators.delete(messageId)\n registeredCallbackIds.forEach((id) => callbacks.delete(id))\n resolveActiveMessage()\n }\n })\n })\n\n const activeMessageKeys = new Set<string>()\n const api: ConnectionApi<V> = {\n close: async () => {\n await channelWrapper.close()\n await connection.close()\n },\n open: () => connectedPromise.then(() => api),\n\n async act(messageKey, actor) {\n if (activeMessageKeys.has(messageKey)) {\n throw new Error('a defer key can only be used once')\n }\n\n activeMessageKeys.add(messageKey)\n\n let publishIndex = 0\n const { taskId, messageId, ...options } =\n messageKeySchema.parse(messageKey)\n\n const activeMessage = async () => {\n if (activeMessages.has(messageId)) {\n await activeMessages.get(messageId)\n }\n }\n\n const registeredCallbackIds = new Set<string>()\n const donePromises: Array<Promise<unknown>> = []\n\n const sendApi = {\n async sendToOutput(outputName: string, data: unknown) {\n await activeMessage()\n const donePromise = Promise.withResolvers<void>()\n donePromises.push(donePromise.promise)\n donePromises.push(\n publish({\n index: publishIndex++,\n version,\n messageId,\n taskId,\n data: await processData({\n outputName: outputName as string | null,\n data,\n options,\n onDone: donePromise.resolve,\n onCallback: (callback) => {\n const callbackId = crypto.randomUUID()\n registeredCallbackIds.add(callbackId)\n callbacks.set(callbackId, callback)\n\n return {\n sourceId: connectionId,\n callbackId,\n }\n },\n }),\n outputName: outputName as string | null,\n }),\n )\n },\n async send(data: unknown) {\n await activeMessage()\n const donePromise = Promise.withResolvers<void>()\n donePromises.push(donePromise.promise)\n donePromises.push(\n publish({\n index: publishIndex++,\n version,\n messageId,\n taskId,\n data: await processData({\n outputName: null,\n data,\n options,\n onDone: donePromise.resolve,\n onCallback: (callback) => {\n const callbackId = crypto.randomUUID()\n registeredCallbackIds.add(callbackId)\n callbacks.set(callbackId, callback)\n return {\n sourceId: connectionId,\n callbackId,\n }\n },\n }),\n }),\n )\n },\n async abort(error: string | Error) {\n await activeMessage()\n channelWrapper.publish(\n `${exchange}-retry`,\n 'operator',\n error instanceof Error ? error.message : error,\n {\n persistent: true,\n correlationId: messageId,\n expiration: 0,\n priority: 0,\n contentType: 'text/plain',\n headers: {\n taskId,\n libVersion: libVersion(),\n index: publishIndex++,\n abort: true,\n },\n },\n )\n },\n }\n\n const result = await actor(sendApi as ActorApi<V>)\n\n if (\n result != null &&\n typeof result === 'object' &&\n (Symbol.asyncIterator in result || Symbol.iterator in result)\n ) {\n // Generator: iterate and send each yielded value\n const iterable = result as AsyncIterable<unknown> | Iterable<unknown>\n for await (const value of iterable) {\n if (value !== undefined) {\n await sendApi.send(value)\n }\n }\n } else if (result !== undefined) {\n await sendApi.send(result)\n }\n\n await new Promise((resolve) => setImmediate(resolve))\n await activeMessage()\n\n while (true) {\n const promiseCount = donePromises.length\n await Promise.allSettled(donePromises)\n if (promiseCount === donePromises.length) {\n break\n }\n }\n\n registeredCallbackIds.forEach((id) => callbacks.delete(id))\n\n await publish({\n index: publishIndex++,\n version,\n messageId,\n taskId,\n done: true,\n })\n\n activeMessageKeys.delete(messageKey)\n },\n }\n\n return api\n}\n",
16
16
  "export class RequenceConnectionError extends Error {}\n",
17
- "import { AsyncLocalStorage } from 'node:async_hooks'\n\nimport { mapData, resolveRequenceTypes } from '@requence/helpers'\nimport { mapOutput } from '@requence/helpers/files'\nimport type { TaskOptions } from '@requence/helpers/protocol'\n\nexport type JSONValue =\n | string\n | number\n | boolean\n | { [x: string]: JSONValue }\n | Array<JSONValue>\n | null\n | undefined\n\nexport class RetryError extends Error {\n constructor(public delay?: number) {\n super()\n }\n}\n\nexport class SkipError extends Error {}\n\nexport class AbortError extends Error {}\n\nconst OUTPUT_VALUE = Symbol('output_value')\n\ntype OutputValue = {\n [OUTPUT_VALUE]: string | null\n value: any\n}\n\nfunction isOutputValue(value: unknown): value is OutputValue {\n return value !== null && typeof value === 'object' && OUTPUT_VALUE in value\n}\n\nexport function processData(params: {\n data: unknown\n outputName: null | string\n options: Pick<TaskOptions, 'uploadUrl' | 'streamUrl'>\n onCallback: (callback: (...args: any[]) => void) => {\n callbackId: string\n sourceId: string\n }\n onDone: () => void\n}) {\n return mapOutput({\n value: mapData(params.data, {\n Function(data, path) {\n return {\n ...params.onCallback(data),\n outputName: params.outputName,\n propertyPath: path,\n __REQUENCE_type: 'RequenceCallback',\n }\n },\n }),\n options: params.options,\n onDone: params.onDone,\n })\n}\n\nexport async function unwrapResult(params: {\n result: unknown\n options: Pick<TaskOptions, 'uploadUrl' | 'streamUrl'>\n onCallback: (callback: (...args: any[]) => void) => {\n callbackId: string\n sourceId: string\n }\n onDone: () => void\n}) {\n if (isOutputValue(params.result)) {\n return {\n value: await processData({\n outputName: params.result[OUTPUT_VALUE],\n data: params.result.value,\n options: params.options,\n onDone: params.onDone,\n onCallback: params.onCallback,\n }),\n outputName: params.result[OUTPUT_VALUE],\n }\n }\n return {\n value: await processData({\n outputName: null,\n data: params.result,\n options: params.options,\n onDone: params.onDone,\n onCallback: params.onCallback,\n }),\n outputName: null,\n }\n}\n\nexport default function createContextHelper(options: {\n taskId: string\n input: unknown\n configuration: unknown\n onLog: (method: 'log' | 'warn' | 'info' | 'error', data: any[]) => void\n onDefer: (reason?: string) => string\n onCallback: (params: {\n sourceId: string\n callbackId: string\n outputName: string | null\n propertyPath: (string | number)[]\n arg: unknown\n }) => void\n}) {\n const terminatePromise = Promise.withResolvers<string>()\n\n return [\n {\n taskId: options.taskId,\n input: resolveRequenceTypes(options.input, options.onCallback),\n configuration: resolveRequenceTypes(options.configuration, () => {\n throw new Error('configuration may not have callbacks')\n }),\n\n toOutput(name: string | null, value: unknown): OutputValue {\n return {\n [OUTPUT_VALUE]: name,\n value,\n }\n },\n defer: options.onDefer,\n\n debug: {\n log(...data: any[]) {\n options.onLog('log', data)\n },\n info(...data: any[]) {\n options.onLog('info', data)\n },\n warn(...data: any[]) {\n options.onLog('warn', data)\n },\n error(...data: any[]) {\n options.onLog('error', data)\n },\n },\n retry(delay?: number) {\n throw new RetryError(delay)\n },\n abort(reason?: string) {\n throw new AbortError(reason)\n },\n skip() {\n throw new SkipError()\n },\n terminated: terminatePromise.promise,\n },\n terminatePromise,\n ] as const\n}\n\nexport type ContextHelper = ReturnType<typeof createContextHelper>[0]\n\nexport const handlerStorage = new AsyncLocalStorage<ContextHelper>()\n",
17
+ "import { AsyncLocalStorage } from 'node:async_hooks'\n\nimport { mapData, resolveRequenceTypes } from '@requence/helpers'\nimport { mapOutput } from '@requence/helpers/files'\nimport type { TaskOptions } from '@requence/helpers/protocol'\n\nexport type JSONValue =\n | string\n | number\n | boolean\n | { [x: string]: JSONValue }\n | Array<JSONValue>\n | null\n | undefined\n\nexport class RetryError extends Error {\n constructor(public delay?: number) {\n super()\n }\n}\n\nexport class SkipError extends Error {}\n\nexport class AbortError extends Error {}\n\nconst OUTPUT_VALUE = Symbol('output_value')\n\ntype OutputValue = {\n [OUTPUT_VALUE]: string | null\n value: any\n}\n\nfunction isOutputValue(value: unknown): value is OutputValue {\n return value !== null && typeof value === 'object' && OUTPUT_VALUE in value\n}\n\nexport function processData(params: {\n data: unknown\n outputName: null | string\n options: Pick<TaskOptions, 'uploadUrl' | 'streamUrl'>\n onCallback: (callback: (...args: any[]) => void) => {\n callbackId: string\n sourceId: string\n }\n onDone: () => void\n}) {\n return mapOutput({\n value: mapData(params.data, {\n Function(data, path) {\n return {\n ...params.onCallback(data),\n outputName: params.outputName,\n propertyPath: path,\n __REQUENCE_type: 'RequenceCallback',\n }\n },\n }),\n options: params.options,\n onDone: params.onDone,\n })\n}\n\nexport async function unwrapResult(params: {\n result: unknown\n options: Pick<TaskOptions, 'uploadUrl' | 'streamUrl'>\n onCallback: (callback: (...args: any[]) => void) => {\n callbackId: string\n sourceId: string\n }\n onDone: () => void\n}) {\n if (isOutputValue(params.result)) {\n return {\n value: await processData({\n outputName: params.result[OUTPUT_VALUE],\n data: params.result.value,\n options: params.options,\n onDone: params.onDone,\n onCallback: params.onCallback,\n }),\n outputName: params.result[OUTPUT_VALUE],\n }\n }\n return {\n value: await processData({\n outputName: null,\n data: params.result,\n options: params.options,\n onDone: params.onDone,\n onCallback: params.onCallback,\n }),\n outputName: null,\n }\n}\n\nexport default function createContextHelper(options: {\n taskId: string\n input: unknown\n configuration: unknown\n onLog: (method: 'log' | 'warn' | 'info' | 'error', data: any[]) => void\n onDefer: (reason?: string) => string\n onCallback: (params: {\n sourceId: string\n callbackId: string\n outputName: string | null\n propertyPath: (string | number)[]\n arg: unknown\n }) => void\n}) {\n const terminatePromise = Promise.withResolvers<string>()\n const abortController = new AbortController()\n terminatePromise.promise.then(() => abortController.abort())\n\n const terminated = Object.assign(terminatePromise.promise, {\n signal: abortController.signal,\n })\n\n return [\n {\n taskId: options.taskId,\n input: resolveRequenceTypes(options.input, options.onCallback),\n configuration: resolveRequenceTypes(options.configuration, () => {\n throw new Error('configuration may not have callbacks')\n }),\n\n toOutput(name: string | null, value: unknown): OutputValue {\n return {\n [OUTPUT_VALUE]: name,\n value,\n }\n },\n defer: options.onDefer,\n\n debug: {\n log(...data: any[]) {\n options.onLog('log', data)\n },\n info(...data: any[]) {\n options.onLog('info', data)\n },\n warn(...data: any[]) {\n options.onLog('warn', data)\n },\n error(...data: any[]) {\n options.onLog('error', data)\n },\n },\n retry(delay?: number) {\n throw new RetryError(delay)\n },\n abort(reason?: string) {\n throw new AbortError(reason)\n },\n skip() {\n throw new SkipError()\n },\n terminated,\n },\n terminatePromise,\n ] as const\n}\n\nexport type ContextHelper = ReturnType<typeof createContextHelper>[0]\n\nexport const handlerStorage = new AsyncLocalStorage<ContextHelper>()\n",
18
18
  "import { mapData } from '@requence/helpers'\nimport {\n RequenceFile,\n RequenceStream,\n isFileObject,\n isStreamObject,\n} from '@requence/helpers/files'\n\nexport default function mapInput(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",
19
19
  "import { handlerStorage } from './helpers.ts'\n\nfunction isAsyncIterable<T>(\n iterable: Iterable<T> | AsyncIterable<T>,\n): iterable is AsyncIterable<T> {\n return typeof (iterable as any)[Symbol.asyncIterator] === 'function'\n}\n\nexport function wrapIterable<T extends Iterable<any> | AsyncIterable<any>>(\n iterable: T,\n): T {\n const context = handlerStorage.getStore()\n\n if (!context) {\n return iterable\n }\n\n let terminated = false\n\n context.terminated.then(() => {\n terminated = true\n })\n\n if (isAsyncIterable(iterable)) {\n return {\n [Symbol.asyncIterator]() {\n const iterator = iterable[Symbol.asyncIterator]()\n\n return {\n async next() {\n const result = await Promise.race([\n context.terminated,\n iterator.next(),\n ])\n\n if (terminated) {\n return { done: true, value: undefined }\n }\n\n return result\n },\n }\n },\n } as T\n }\n\n return {\n [Symbol.iterator]() {\n const iterator = iterable[Symbol.iterator]()\n\n return {\n next() {\n if (terminated) {\n return { done: true, value: undefined }\n }\n const result = iterator.next()\n return result\n },\n }\n },\n } as T\n}\n\nexport function asyncEventEmitter<T>(initial: Array<T> = []) {\n const context = handlerStorage.getStore()\n\n let terminated = false\n context?.terminated.then(() => {\n terminated = true\n })\n\n let resolve: (value: T) => void\n const initialValues = structuredClone(initial)\n return {\n push: (value: T) => {\n if (resolve) {\n resolve(value)\n } else {\n initialValues.push(value)\n }\n },\n [Symbol.asyncIterator](): AsyncIterator<T> {\n return {\n async next() {\n if (initialValues.length > 0) {\n return { value: initialValues.shift()!, done: false }\n }\n const defer = Promise.withResolvers<T>()\n resolve = defer.resolve\n\n if (context) {\n const value = await Promise.race([\n defer.promise,\n context.terminated,\n ])\n\n return terminated\n ? { done: true, value: undefined }\n : { done: false, value: value as Awaited<T> }\n }\n\n return { value: await defer.promise, done: false }\n },\n }\n },\n }\n}\n"
20
20
  ],
21
- "mappings": "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",
22
- "debugId": "57C0C865BD4C680C64756E2164756E21",
21
+ "mappings": "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",
22
+ "debugId": "0C626223B0DCBC9D64756E2164756E21",
23
23
  "names": []
24
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RequenceFile.d.ts","sourceRoot":"","sources":["../../../../../../helpers/src/files/RequenceFile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1E,UAAU,uBAAuB,CAAC,CAAC,CAAE,SAAQ,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC;IACxE,IAAI,EAAE,CAAC,CAAA;CACR;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,EAAE,CAAC;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,CAAC,CAAA;IACf,WAAW,EAAE,CAAC,CAAA;IACd,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACvB,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IACxB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACrB,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAA;CACpC;AAED,qBAAa,YAAY,CACvB,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,KAAK,EACvC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EACnB,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAClB,YAAW,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC;;gBAK/B,SAAS,EAAE,QAAQ,EAAE,EACrB,OAAO,CAAC,EAAE,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAKrD,gBAAgB;IAChB,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,GAGlD,YAAY,CAAC,CAAC,CAAC;IAGpC,gBAAgB;IAChB,IAAI,UAAU;;;;;aAEb;IAED,IAAI,IAAI,WAEP;IAED,IAAI,QAAQ,WAEX;IAED,IAAI,YAAY,IACwB,CAAC,CACxC;IAED,IAAI,WAAW,IACyB,CAAC,CACxC;IAEK,IAAI;IAOJ,IAAI;IAOJ,IAAI;IAOJ,WAAW;IAOjB,QAAQ;IAIR,MAAM;CAGP"}
1
+ {"version":3,"file":"RequenceFile.d.ts","sourceRoot":"","sources":["../../../../../../helpers/src/files/RequenceFile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1E,UAAU,uBAAuB,CAAC,CAAC,CAAE,SAAQ,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC;IACxE,IAAI,EAAE,CAAC,CAAA;CACR;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,EAAE,CAAC;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,CAAC,CAAA;IACf,WAAW,EAAE,CAAC,CAAA;IACd,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACvB,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IACxB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACrB,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAA;CACpC;AAED,qBAAa,YAAY,CACvB,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,KAAK,EACvC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EACnB,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAClB,YAAW,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC;;gBAI/B,SAAS,EAAE,QAAQ,EAAE,EACrB,OAAO,CAAC,EAAE,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAKrD,gBAAgB;IAChB,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,GAGlD,YAAY,CAAC,CAAC,CAAC;IAGpC,gBAAgB;IAChB,IAAI,UAAU;;;;;aAEb;IAED,IAAI,IAAI,WAEP;IAED,IAAI,QAAQ,WAEX;IAED,IAAI,YAAY,IACwB,CAAC,CACxC;IAED,IAAI,WAAW,IACyB,CAAC,CACxC;IAEK,IAAI;IAOJ,IAAI;IAOJ,IAAI;IAOJ,WAAW;IAOjB,QAAQ;IAIR,MAAM;CAGP"}
@@ -1 +1 @@
1
- {"version":3,"file":"RequenceStream.d.ts","sourceRoot":"","sources":["../../../../../../helpers/src/files/RequenceStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1E,MAAM,WAAW,kBAAkB,CAAC,CAAC,EAAE,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,CAAC,CAAA;IACf,WAAW,EAAE,CAAC,CAAA;IACd,MAAM,IAAI,cAAc,CAAA;CACzB;AAED,UAAU,qBAAqB,CAAC,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAA;CACR;AAED,qBAAa,cAAc,CACzB,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,KAAK,EACvC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EACnB,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAClB,YAAW,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;;gBAOjC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAMlD,gBAAgB;IAChB,MAAM,CAAC,gBAAgB,CAAC,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,EAAE,EACrD,MAAM,EAAE,YAAY,GAMU,cAAc,CAAC,CAAC,CAAC;IAGjD,gBAAgB;IAChB,IAAI,YAAY;;;;aAEf;IAED,IAAI,QAAQ,QAEX;IAED,IAAI,YAAY,IACwB,CAAC,CACxC;IAED,IAAI,WAAW,IACyB,CAAC,CACxC;IAED,MAAM;IAaN,aAAa,IAAI,aAAa,CAAC,UAAU,CAAC;IAmB1C,QAAQ;IAIR,MAAM;CAGP"}
1
+ {"version":3,"file":"RequenceStream.d.ts","sourceRoot":"","sources":["../../../../../../helpers/src/files/RequenceStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1E,MAAM,WAAW,kBAAkB,CAAC,CAAC,EAAE,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,CAAC,CAAA;IACf,WAAW,EAAE,CAAC,CAAA;IACd,MAAM,IAAI,cAAc,CAAA;CACzB;AAED,UAAU,qBAAqB,CAAC,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAA;CACR;AAED,qBAAa,cAAc,CACzB,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,KAAK,EACvC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EACnB,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAClB,YAAW,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;;gBAMjC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAMlD,gBAAgB;IAChB,MAAM,CAAC,gBAAgB,CAAC,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,EAAE,EACrD,MAAM,EAAE,YAAY,GAMU,cAAc,CAAC,CAAC,CAAC;IAGjD,gBAAgB;IAChB,IAAI,YAAY;;;;aAEf;IAED,IAAI,QAAQ,QAEX;IAED,IAAI,YAAY,IACwB,CAAC,CACxC;IAED,IAAI,WAAW,IACyB,CAAC,CACxC;IAED,MAAM;IAaN,aAAa,IAAI,aAAa,CAAC,UAAU,CAAC;IAmB1C,QAAQ;IAIR,MAAM;CAGP"}
@@ -1 +1 @@
1
- {"version":3,"file":"isValidMimeType.d.ts","sourceRoot":"","sources":["../../../../../../helpers/src/files/isValidMimeType.ts"],"names":[],"mappings":"AAsCA,wBAAgB,eAAe,CAC7B,QAAQ,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACxC,MAAM,EAAE,MAAM,WA6Bf"}
1
+ {"version":3,"file":"isValidMimeType.d.ts","sourceRoot":"","sources":["../../../../../../helpers/src/files/isValidMimeType.ts"],"names":[],"mappings":"AAuCA,wBAAgB,eAAe,CAC7B,QAAQ,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACxC,MAAM,EAAE,MAAM,WA6Bf"}