@nmtjs/protocol 0.8.1 → 0.9.0

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 (64) hide show
  1. package/dist/client/events.js +2 -0
  2. package/dist/client/events.js.map +1 -1
  3. package/dist/client/format.js +2 -0
  4. package/dist/client/format.js.map +1 -1
  5. package/dist/client/index.js +3 -0
  6. package/dist/client/index.js.map +1 -1
  7. package/dist/client/protocol.js +205 -199
  8. package/dist/client/protocol.js.map +1 -1
  9. package/dist/client/stream.js +9 -12
  10. package/dist/client/stream.js.map +1 -1
  11. package/dist/client/types.js +3 -0
  12. package/dist/client/types.js.map +1 -0
  13. package/dist/common/binary.js +2 -0
  14. package/dist/common/binary.js.map +1 -1
  15. package/dist/common/blob.js +6 -2
  16. package/dist/common/blob.js.map +1 -1
  17. package/dist/common/enums.js +4 -1
  18. package/dist/common/enums.js.map +1 -1
  19. package/dist/common/index.js +2 -0
  20. package/dist/common/index.js.map +1 -1
  21. package/dist/common/types.js +2 -0
  22. package/dist/common/types.js.map +1 -1
  23. package/dist/server/api.js +4 -1
  24. package/dist/server/api.js.map +1 -1
  25. package/dist/server/connection.js +2 -0
  26. package/dist/server/connection.js.map +1 -1
  27. package/dist/server/constants.js +2 -0
  28. package/dist/server/constants.js.map +1 -1
  29. package/dist/server/format.js +2 -0
  30. package/dist/server/format.js.map +1 -1
  31. package/dist/server/index.js +3 -0
  32. package/dist/server/index.js.map +1 -1
  33. package/dist/server/injectables.js +2 -0
  34. package/dist/server/injectables.js.map +1 -1
  35. package/dist/server/protocol.js +154 -55
  36. package/dist/server/protocol.js.map +1 -1
  37. package/dist/server/registry.js +2 -0
  38. package/dist/server/registry.js.map +1 -1
  39. package/dist/server/stream.js +3 -1
  40. package/dist/server/stream.js.map +1 -1
  41. package/dist/server/transport.js +2 -0
  42. package/dist/server/transport.js.map +1 -1
  43. package/dist/server/types.js +3 -0
  44. package/dist/server/types.js.map +1 -0
  45. package/dist/server/utils.js +7 -2
  46. package/dist/server/utils.js.map +1 -1
  47. package/package.json +7 -7
  48. package/src/client/format.ts +34 -5
  49. package/src/client/index.ts +2 -0
  50. package/src/client/protocol.ts +381 -274
  51. package/src/client/stream.ts +7 -14
  52. package/src/client/types.ts +14 -0
  53. package/src/common/blob.ts +10 -3
  54. package/src/common/enums.ts +3 -1
  55. package/src/common/types.ts +28 -47
  56. package/src/server/api.ts +15 -1
  57. package/src/server/connection.ts +1 -5
  58. package/src/server/format.ts +14 -4
  59. package/src/server/index.ts +1 -0
  60. package/src/server/protocol.ts +208 -66
  61. package/src/server/stream.ts +2 -7
  62. package/src/server/transport.ts +5 -1
  63. package/src/server/types.ts +21 -0
  64. package/src/server/utils.ts +9 -2
@@ -1,4 +1,4 @@
1
- import { defer } from "@nmtjs/common";
1
+ import { defer, noopFn } from "@nmtjs/common";
2
2
  import { concat, encodeText } from "../common/binary.js";
3
3
  export class ProtocolClientBlobStream extends TransformStream {
4
4
  #queue;
@@ -53,33 +53,30 @@ export class ProtocolClientBlobStream extends TransformStream {
53
53
  }
54
54
  }
55
55
  export class ProtocolServerStream extends TransformStream {
56
- #writer;
57
- constructor(start) {
58
- super({ start });
59
- this.#writer = this.writable.getWriter();
60
- }
61
56
  async *[Symbol.asyncIterator]() {
62
57
  const reader = this.readable.getReader();
63
58
  while (true) {
64
59
  const { done, value } = await reader.read();
65
60
  if (!done) yield value;
66
- else return void 0;
61
+ else break;
67
62
  }
68
63
  }
69
64
  async push(chunk) {
70
- await this.#writer.write(chunk);
65
+ await this.writable.getWriter().write(chunk);
71
66
  }
72
67
  async end() {
73
- await this.#writer.close();
68
+ await this.writable.getWriter().close();
74
69
  }
75
70
  abort(error = new Error("Stream aborted")) {
76
- this.#writer.abort(error);
71
+ this.writable.getWriter().abort(error);
77
72
  }
78
73
  }
79
74
  export class ProtocolServerBlobStream extends ProtocolServerStream {
80
- constructor(id, metadata, start) {
81
- super(start);
75
+ constructor(id, metadata, options) {
76
+ super(options);
82
77
  this.id = id;
83
78
  this.metadata = metadata;
84
79
  }
85
80
  }
81
+
82
+ //# sourceMappingURL=stream.js.map
@@ -1 +1 @@
1
- {"mappings":"AAAA,SAAwB,aAAa,eAAe;AACpD,SAAS,QAAQ,kBAAkB,qBAAqB;AAGxD,OAAO,MAAM,iCAAiC,gBAG5C;CACA;CACA;CAEA,YACWA,QACAC,IACAC,UACT;AACA,QAAM;GACJ,OAAO,MAAM;AACX,UAAM,MAAM,OAAO,YAAY,KAAK,CAAC;GACtC;GACD,WAAW,CAAC,OAAO,eAAe;AAChC,QAAI,iBAAiB,aAAa;AAChC,gBAAW,QAAQ,MAAM;IAC1B,WAAU,iBAAiB,YAAY;AACtC,gBAAW,QAAQ,MAAM,OAAiC;IAC3D,kBAAiB,UAAU,UAAU;AACpC,gBAAW,QAAQ,WAAW,MAAM,CAAC;IACtC,OAAM;AACL,WAAM,IAAI,MACR;IAEH;GACF;EACF,EAAC;OArBO;OACA;OACA;AAqBT,OAAKC,SAAS,IAAI,YAAY;AAC9B,OAAKC,UAAU,KAAK,SAAS,WAAW;CACzC;CAED,MAAM,KAAKC,MAAc;AACvB,SAAO,KAAKF,OAAO,aAAa,MAAM;GACpC,MAAM,EAAE,MAAM,OAAO,GAAG,MAAM,KAAKC,QAAQ,MAAM;AACjD,OAAI,MAAM;AACR,QAAI,KAAKD,OAAO,aAAa,GAAG;KAC9B,MAAM,QAAQ,KAAKA;AACnB,UAAKA,SAAS,IAAI,YAAY;AAC9B,YAAO;IACR;AACD,WAAO;GACR;GACD,MAAM,SAAS;AACf,QAAKA,SAAS,OAAO,KAAKA,QAAQ,OAAO;EAC1C;EACD,MAAM,QAAQ,KAAKA,OAAO,MAAM,GAAG,KAAK;AACxC,OAAKA,SAAS,KAAKA,OAAO,MAAM,KAAK;AACrC,SAAO;CACR;CAED,MAAM,QAAQ,IAAI,MAAM,mBAAmB;AACzC,OAAKC,QAAQ,OAAO,MAAM;AAC1B,OAAK,OAAO,OAAO,MAAM;CAC1B;CAED,MAAM;AACJ,SAAO,KAAK,OAAO,OAAO,eAAe;CAC1C;AACF;AAOD,OAAO,MAAM,6BACH,gBAEV;CACE;CAEA,YAAYE,OAAkB;AAC5B,QAAM,EAAE,MAAO,EAAC;AAChB,OAAKC,UAAU,KAAK,SAAS,WAAW;CACzC;CAED,QAAQ,OAAO,iBAAiB;EAC9B,MAAM,SAAS,KAAK,SAAS,WAAW;AACxC,SAAO,MAAM;GACX,MAAM,EAAE,MAAM,OAAO,GAAG,MAAM,OAAO,MAAM;AAC3C,QAAK,KAAM,OAAM;OACZ,aAAY;EAClB;CACF;CAED,MAAM,KAAKC,OAAU;AACnB,QAAM,KAAKD,QAAQ,MAAM,MAAM;CAChC;CAED,MAAM,MAAM;AACV,QAAM,KAAKA,QAAQ,OAAO;CAC3B;CAED,MAAM,QAAQ,IAAI,MAAM,mBAAmB;AACzC,OAAKA,QAAQ,MAAM,MAAM;CAC1B;AACF;AAED,OAAO,MAAM,iCAAiC,qBAAkC;CAC9E,YACWN,IACAC,UACTO,OACA;AACA,QAAM,MAAM;OAJH;OACA;CAIV;AACF","names":["source: ReadableStream","id: number","metadata: ProtocolBlobMetadata","#queue","#reader","size: number","start?: Callback","#writer","chunk: T","start: Callback"],"sources":["src/client/stream.ts"],"sourcesContent":["import { type Callback, defer } from '@nmtjs/common'\nimport { concat, encodeText } from '../common/binary.ts'\nimport type { ProtocolBlobMetadata } from '../common/blob.ts'\n\nexport class ProtocolClientBlobStream extends TransformStream<\n any,\n ArrayBuffer\n> {\n #queue: ArrayBuffer\n #reader: ReadableStreamDefaultReader\n\n constructor(\n readonly source: ReadableStream,\n readonly id: number,\n readonly metadata: ProtocolBlobMetadata,\n ) {\n super({\n start: () => {\n defer(() => source.pipeThrough(this))\n },\n transform: (chunk, controller) => {\n if (chunk instanceof ArrayBuffer) {\n controller.enqueue(chunk)\n } else if (chunk instanceof Uint8Array) {\n controller.enqueue(chunk.buffer as unknown as ArrayBuffer)\n } else if (typeof chunk === 'string') {\n controller.enqueue(encodeText(chunk))\n } else {\n throw new Error(\n 'Invalid chunk data type. Expected ArrayBuffer, Uint8Array, or string.',\n )\n }\n },\n })\n\n this.#queue = new ArrayBuffer(0)\n this.#reader = this.readable.getReader()\n }\n\n async read(size: number) {\n while (this.#queue.byteLength < size) {\n const { done, value } = await this.#reader.read()\n if (done) {\n if (this.#queue.byteLength > 0) {\n const chunk = this.#queue\n this.#queue = new ArrayBuffer(0)\n return chunk\n }\n return null\n }\n const buffer = value as ArrayBuffer\n this.#queue = concat(this.#queue, buffer)\n }\n const chunk = this.#queue.slice(0, size)\n this.#queue = this.#queue.slice(size)\n return chunk\n }\n\n abort(error = new Error('Stream aborted')) {\n this.#reader.cancel(error)\n this.source.cancel(error)\n }\n\n end() {\n return this.source.cancel('Stream ended')\n }\n}\n\nexport interface ProtocolServerStreamInterface<T = any> {\n [Symbol.asyncIterator](): AsyncGenerator<T>\n abort(error?: Error): void\n}\n\nexport class ProtocolServerStream<T = any>\n extends TransformStream<any, T>\n implements ProtocolServerStreamInterface<T>\n{\n #writer: WritableStreamDefaultWriter\n\n constructor(start?: Callback) {\n super({ start })\n this.#writer = this.writable.getWriter()\n }\n\n async *[Symbol.asyncIterator]() {\n const reader = this.readable.getReader()\n while (true) {\n const { done, value } = await reader.read()\n if (!done) yield value\n else return void 0\n }\n }\n\n async push(chunk: T) {\n await this.#writer.write(chunk)\n }\n\n async end() {\n await this.#writer.close()\n }\n\n abort(error = new Error('Stream aborted')) {\n this.#writer.abort(error)\n }\n}\n\nexport class ProtocolServerBlobStream extends ProtocolServerStream<ArrayBuffer> {\n constructor(\n readonly id: number,\n readonly metadata: ProtocolBlobMetadata,\n start: Callback,\n ) {\n super(start)\n }\n}\n"],"version":3}
1
+ {"mappings":"AAAA,SAAwB,OAAO,cAAc,eAAe;AAC5D,SAAS,QAAQ,kBAAkB,qBAAqB;AAGxD,OAAO,MAAM,iCAAiC,gBAG5C;CACA;CACA;CAEA,YACWA,QACAC,IACAC,UACT;AACA,QAAM;GACJ,OAAO,MAAM;AACX,UAAM,MAAM,OAAO,YAAY,KAAK,CAAC;GACtC;GACD,WAAW,CAAC,OAAO,eAAe;AAChC,QAAI,iBAAiB,aAAa;AAChC,gBAAW,QAAQ,MAAM;IAC1B,WAAU,iBAAiB,YAAY;AACtC,gBAAW,QAAQ,MAAM,OAAiC;IAC3D,kBAAiB,UAAU,UAAU;AACpC,gBAAW,QAAQ,WAAW,MAAM,CAAC;IACtC,OAAM;AACL,WAAM,IAAI,MACR;IAEH;GACF;EACF,EAAC;OArBO;OACA;OACA;AAqBT,OAAKC,SAAS,IAAI,YAAY;AAC9B,OAAKC,UAAU,KAAK,SAAS,WAAW;CACzC;CAED,MAAM,KAAKC,MAAc;AACvB,SAAO,KAAKF,OAAO,aAAa,MAAM;GACpC,MAAM,EAAE,MAAM,OAAO,GAAG,MAAM,KAAKC,QAAQ,MAAM;AACjD,OAAI,MAAM;AACR,QAAI,KAAKD,OAAO,aAAa,GAAG;KAC9B,MAAM,QAAQ,KAAKA;AACnB,UAAKA,SAAS,IAAI,YAAY;AAC9B,YAAO;IACR;AACD,WAAO;GACR;GACD,MAAM,SAAS;AACf,QAAKA,SAAS,OAAO,KAAKA,QAAQ,OAAO;EAC1C;EACD,MAAM,QAAQ,KAAKA,OAAO,MAAM,GAAG,KAAK;AACxC,OAAKA,SAAS,KAAKA,OAAO,MAAM,KAAK;AACrC,SAAO;CACR;CAED,MAAM,QAAQ,IAAI,MAAM,mBAAmB;AACzC,OAAKC,QAAQ,OAAO,MAAM;AAC1B,OAAK,OAAO,OAAO,MAAM;CAC1B;CAED,MAAM;AACJ,SAAO,KAAK,OAAO,OAAO,eAAe;CAC1C;AACF;AAOD,OAAO,MAAM,6BACH,gBAEV;CACE,QAAQ,OAAO,iBAAiB;EAC9B,MAAM,SAAS,KAAK,SAAS,WAAW;AACxC,SAAO,MAAM;GACX,MAAM,EAAE,MAAM,OAAO,GAAG,MAAM,OAAO,MAAM;AAC3C,QAAK,KAAM,OAAM;OACZ;EACN;CACF;CAED,MAAM,KAAKE,OAAU;AACnB,QAAM,KAAK,SAAS,WAAW,CAAC,MAAM,MAAM;CAC7C;CAED,MAAM,MAAM;AACV,QAAM,KAAK,SAAS,WAAW,CAAC,OAAO;CACxC;CAED,MAAM,QAAQ,IAAI,MAAM,mBAAmB;AACzC,OAAK,SAAS,WAAW,CAAC,MAAM,MAAM;CACvC;AACF;AAED,OAAO,MAAM,iCAAiC,qBAAkC;CAC9E,YACWL,IACAC,UACTK,SACA;AACA,QAAM,QAAQ;OAJL;OACA;CAIV;AACF","names":["source: ReadableStream","id: number","metadata: ProtocolBlobMetadata","#queue","#reader","size: number","chunk: T","options?: Transformer<any, ArrayBuffer>"],"sources":["../../src/client/stream.ts"],"sourcesContent":["import { type Callback, defer, noopFn } from '@nmtjs/common'\nimport { concat, encodeText } from '../common/binary.ts'\nimport type { ProtocolBlobMetadata } from '../common/blob.ts'\n\nexport class ProtocolClientBlobStream extends TransformStream<\n any,\n ArrayBuffer\n> {\n #queue: ArrayBuffer\n #reader: ReadableStreamDefaultReader\n\n constructor(\n readonly source: ReadableStream,\n readonly id: number,\n readonly metadata: ProtocolBlobMetadata,\n ) {\n super({\n start: () => {\n defer(() => source.pipeThrough(this))\n },\n transform: (chunk, controller) => {\n if (chunk instanceof ArrayBuffer) {\n controller.enqueue(chunk)\n } else if (chunk instanceof Uint8Array) {\n controller.enqueue(chunk.buffer as unknown as ArrayBuffer)\n } else if (typeof chunk === 'string') {\n controller.enqueue(encodeText(chunk))\n } else {\n throw new Error(\n 'Invalid chunk data type. Expected ArrayBuffer, Uint8Array, or string.',\n )\n }\n },\n })\n\n this.#queue = new ArrayBuffer(0)\n this.#reader = this.readable.getReader()\n }\n\n async read(size: number) {\n while (this.#queue.byteLength < size) {\n const { done, value } = await this.#reader.read()\n if (done) {\n if (this.#queue.byteLength > 0) {\n const chunk = this.#queue\n this.#queue = new ArrayBuffer(0)\n return chunk\n }\n return null\n }\n const buffer = value as ArrayBuffer\n this.#queue = concat(this.#queue, buffer)\n }\n const chunk = this.#queue.slice(0, size)\n this.#queue = this.#queue.slice(size)\n return chunk\n }\n\n abort(error = new Error('Stream aborted')) {\n this.#reader.cancel(error)\n this.source.cancel(error)\n }\n\n end() {\n return this.source.cancel('Stream ended')\n }\n}\n\nexport interface ProtocolServerStreamInterface<T = any> {\n [Symbol.asyncIterator](): AsyncGenerator<T>\n abort(error?: Error): void\n}\n\nexport class ProtocolServerStream<T = any>\n extends TransformStream<any, T>\n implements ProtocolServerStreamInterface<T>\n{\n async *[Symbol.asyncIterator]() {\n const reader = this.readable.getReader()\n while (true) {\n const { done, value } = await reader.read()\n if (!done) yield value\n else break\n }\n }\n\n async push(chunk: T) {\n await this.writable.getWriter().write(chunk)\n }\n\n async end() {\n await this.writable.getWriter().close()\n }\n\n abort(error = new Error('Stream aborted')) {\n this.writable.getWriter().abort(error)\n }\n}\n\nexport class ProtocolServerBlobStream extends ProtocolServerStream<ArrayBuffer> {\n constructor(\n readonly id: number,\n readonly metadata: ProtocolBlobMetadata,\n options?: Transformer<any, ArrayBuffer>,\n ) {\n super(options)\n }\n}\n"],"version":3,"file":"stream.js"}
@@ -0,0 +1,3 @@
1
+ export {};
2
+
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"","names":[],"sources":["../../src/client/types.ts"],"sourcesContent":["import type { ProtocolBlob, ProtocolBlobInterface } from '../common/blob.ts'\nimport type { ProtocolServerBlobStream } from './stream.ts'\n\nexport type InputType<T> = T extends ProtocolBlobInterface\n ? ProtocolBlob\n : T extends object\n ? { [K in keyof T]: InputType<T[K]> }\n : T\n\nexport type OutputType<T> = T extends ProtocolBlobInterface\n ? ProtocolServerBlobStream\n : T extends object\n ? { [K in keyof T]: OutputType<T[K]> }\n : T\n"],"version":3,"file":"types.js"}
@@ -23,3 +23,5 @@ export const concat = (...buffers) => {
23
23
  }
24
24
  return view.buffer;
25
25
  };
26
+
27
+ //# sourceMappingURL=binary.js.map
@@ -1 +1 @@
1
- {"mappings":"AAGA,MAAM,cAAc,IAAI;AACxB,MAAM,cAAc,IAAI;AAexB,OAAO,MAAM,eAAe,CAC1BA,OACAC,MACA,eAAe,UACZ;CACH,MAAM,cAAc,YAAY,EAAE,KAAK,QAAQ;CAC/C,MAAM,KAAK,IAAI,YAAY;CAC3B,MAAM,KAAK,IAAI,SAAS;AACxB,KAAI,KAAK,KAAK,GAAG,GAAG,OAAgB,aAAa;AACjD,QAAO;AACR;AAED,OAAO,MAAM,eAAe,CAC1BC,QACAD,MACA,SAAS,GACT,eAAe,UACI;CACnB,MAAM,OAAO,IAAI,SAAS;AAC1B,QAAO,MAAM,KAAK,KAAK,GAAG,QAAQ,aAAa;AAChD;AAED,OAAO,MAAM,aAAa,CAACE,SACzB,IAAI,WAAW,YAAY,OAAO,KAAK,EAAE;AAE3C,OAAO,MAAM,aAAa,CAACC,WACzB,YAAY,OAAO,OAAO;AAE5B,OAAO,MAAM,SAAS,CAAC,GAAG,YAA2B;CACnD,MAAM,cAAc,QAAQ,OAC1B,CAAC,KAAK,WAAW,MAAM,OAAO,YAC9B,EACD;CACD,MAAM,OAAO,IAAI,WAAW;CAC5B,IAAI,SAAS;AACb,MAAK,MAAM,UAAU,SAAS;AAC5B,OAAK,IAAI,IAAI,WAAW,SAAS,OAAO;AACxC,YAAU,OAAO;CAClB;AACD,QAAO,KAAK;AACb","names":["value: BinaryTypes[T]","type: T","buffer: ArrayBuffer","text: string","buffer: Parameters<typeof utf8decoder.decode>[0]"],"sources":["src/common/binary.ts"],"sourcesContent":["// TODO: get rid of lib DOM somehow...\n/// <reference lib=\"dom\" />\n\nconst utf8decoder = new TextDecoder()\nconst utf8encoder = new TextEncoder()\n\nexport type BinaryTypes = {\n Int8: number\n Int16: number\n Int32: number\n Uint8: number\n Uint16: number\n Uint32: number\n Float32: number\n Float64: number\n BigInt64: bigint\n BigUint64: bigint\n}\n\nexport const encodeNumber = <T extends keyof BinaryTypes>(\n value: BinaryTypes[T],\n type: T,\n littleEndian = false,\n) => {\n const bytesNeeded = globalThis[`${type}Array`].BYTES_PER_ELEMENT\n const ab = new ArrayBuffer(bytesNeeded)\n const dv = new DataView(ab)\n dv[`set${type}`](0, value as never, littleEndian)\n return ab\n}\n\nexport const decodeNumber = <T extends keyof BinaryTypes>(\n buffer: ArrayBuffer,\n type: T,\n offset = 0,\n littleEndian = false,\n): BinaryTypes[T] => {\n const view = new DataView(buffer)\n return view[`get${type}`](offset, littleEndian) as BinaryTypes[T]\n}\n\nexport const encodeText = (text: string) =>\n new Uint8Array(utf8encoder.encode(text)).buffer as ArrayBuffer\n\nexport const decodeText = (buffer: Parameters<typeof utf8decoder.decode>[0]) =>\n utf8decoder.decode(buffer)\n\nexport const concat = (...buffers: ArrayBuffer[]) => {\n const totalLength = buffers.reduce(\n (acc, buffer) => acc + buffer.byteLength,\n 0,\n )\n const view = new Uint8Array(totalLength)\n let offset = 0\n for (const buffer of buffers) {\n view.set(new Uint8Array(buffer), offset)\n offset += buffer.byteLength\n }\n return view.buffer\n}\n"],"version":3}
1
+ {"mappings":"AAGA,MAAM,cAAc,IAAI;AACxB,MAAM,cAAc,IAAI;AAexB,OAAO,MAAM,eAAe,CAC1BA,OACAC,MACA,eAAe,UACZ;CACH,MAAM,cAAc,YAAY,EAAE,KAAK,QAAQ;CAC/C,MAAM,KAAK,IAAI,YAAY;CAC3B,MAAM,KAAK,IAAI,SAAS;AACxB,KAAI,KAAK,KAAK,GAAG,GAAG,OAAgB,aAAa;AACjD,QAAO;AACR;AAED,OAAO,MAAM,eAAe,CAC1BC,QACAD,MACA,SAAS,GACT,eAAe,UACI;CACnB,MAAM,OAAO,IAAI,SAAS;AAC1B,QAAO,MAAM,KAAK,KAAK,GAAG,QAAQ,aAAa;AAChD;AAED,OAAO,MAAM,aAAa,CAACE,SACzB,IAAI,WAAW,YAAY,OAAO,KAAK,EAAE;AAE3C,OAAO,MAAM,aAAa,CAACC,WACzB,YAAY,OAAO,OAAO;AAE5B,OAAO,MAAM,SAAS,CAAC,GAAG,YAA2B;CACnD,MAAM,cAAc,QAAQ,OAC1B,CAAC,KAAK,WAAW,MAAM,OAAO,YAC9B,EACD;CACD,MAAM,OAAO,IAAI,WAAW;CAC5B,IAAI,SAAS;AACb,MAAK,MAAM,UAAU,SAAS;AAC5B,OAAK,IAAI,IAAI,WAAW,SAAS,OAAO;AACxC,YAAU,OAAO;CAClB;AACD,QAAO,KAAK;AACb","names":["value: BinaryTypes[T]","type: T","buffer: ArrayBuffer","text: string","buffer: Parameters<typeof utf8decoder.decode>[0]"],"sources":["../../src/common/binary.ts"],"sourcesContent":["// TODO: get rid of lib DOM somehow...\n/// <reference lib=\"dom\" />\n\nconst utf8decoder = new TextDecoder()\nconst utf8encoder = new TextEncoder()\n\nexport type BinaryTypes = {\n Int8: number\n Int16: number\n Int32: number\n Uint8: number\n Uint16: number\n Uint32: number\n Float32: number\n Float64: number\n BigInt64: bigint\n BigUint64: bigint\n}\n\nexport const encodeNumber = <T extends keyof BinaryTypes>(\n value: BinaryTypes[T],\n type: T,\n littleEndian = false,\n) => {\n const bytesNeeded = globalThis[`${type}Array`].BYTES_PER_ELEMENT\n const ab = new ArrayBuffer(bytesNeeded)\n const dv = new DataView(ab)\n dv[`set${type}`](0, value as never, littleEndian)\n return ab\n}\n\nexport const decodeNumber = <T extends keyof BinaryTypes>(\n buffer: ArrayBuffer,\n type: T,\n offset = 0,\n littleEndian = false,\n): BinaryTypes[T] => {\n const view = new DataView(buffer)\n return view[`get${type}`](offset, littleEndian) as BinaryTypes[T]\n}\n\nexport const encodeText = (text: string) =>\n new Uint8Array(utf8encoder.encode(text)).buffer as ArrayBuffer\n\nexport const decodeText = (buffer: Parameters<typeof utf8decoder.decode>[0]) =>\n utf8decoder.decode(buffer)\n\nexport const concat = (...buffers: ArrayBuffer[]) => {\n const totalLength = buffers.reduce(\n (acc, buffer) => acc + buffer.byteLength,\n 0,\n )\n const view = new Uint8Array(totalLength)\n let offset = 0\n for (const buffer of buffers) {\n view.set(new Uint8Array(buffer), offset)\n offset += buffer.byteLength\n }\n return view.buffer\n}\n"],"version":3,"file":"binary.js"}
@@ -1,8 +1,10 @@
1
+ export const BlobKey = Symbol.for("neemata:BlobKey");
1
2
  export class ProtocolBlob {
3
+ [BlobKey] = true;
2
4
  metadata;
3
5
  source;
4
- constructor(source, size = -1, type = "application/octet-stream", filename) {
5
- if (size < -1 || size === 0) throw new Error("Blob size is invalid");
6
+ constructor(source, size, type = "application/octet-stream", filename) {
7
+ if (typeof size !== "undefined" && size <= 0) throw new Error("Blob size is invalid");
6
8
  this.source = source;
7
9
  this.metadata = {
8
10
  size,
@@ -36,3 +38,5 @@ export class ProtocolBlob {
36
38
  return new ProtocolBlob(_source, metadata.size, metadata.type, metadata.filename);
37
39
  }
38
40
  }
41
+
42
+ //# sourceMappingURL=blob.js.map
@@ -1 +1 @@
1
- {"mappings":"AAUA,OAAO,MAAM,aAA8C;CACzD,AAAgB;CAChB,AAAgB;CAEhB,YACEA,QACA,QAAQ,GACR,OAAO,4BACPC,UACA;AACA,MAAI,QAAQ,KAAK,SAAS,EAAG,OAAM,IAAI,MAAM;AAE7C,OAAK,SAAS;AACd,OAAK,WAAW;GACd;GACA;GACA;EACD;CACF;CAED,OAAO,KACLD,QACAE,WAII,CAAE,GACN;EACA,IAAIC,UAAe;AAEnB,MAAI,kBAAkB,WAAW,gBAAgB;AAC/C,aAAU;EACX,WAAU,UAAU,cAAc,kBAAkB,WAAW,MAAM;AACpE,aAAU,OAAO,QAAQ;AACzB,YAAS,OAAO,OAAO;AACvB,YAAS,WAAW,OAAO;EAC5B,WAAU,kBAAkB,WAAW,MAAM;AAC5C,aAAU,OAAO,QAAQ;AACzB,YAAS,OAAO,OAAO;EACxB,kBAAiB,WAAW,UAAU;GACrC,MAAM,OAAO,IAAI,KAAK,CAAC,MAAO;AAC9B,aAAU,KAAK,QAAQ;AACvB,YAAS,OAAO,KAAK;AACrB,YAAS,OAAO,SAAS,QAAQ;EAClC,WAAU,kBAAkB,WAAW,aAAa;GACnD,MAAM,OAAO,IAAI,KAAK,CAAC,MAAO;AAC9B,aAAU,KAAK,QAAQ;AACvB,YAAS,OAAO,KAAK;EACtB,OAAM;AACL,aAAU;EACX;AAED,SAAO,IAAI,aACT,SACA,SAAS,MACT,SAAS,MACT,SAAS;CAEZ;AACF","names":["source: any","filename?: string","metadata: {\n size?: number\n type?: string\n filename?: string\n }","_source: any"],"sources":["src/common/blob.ts"],"sourcesContent":["export type ProtocolBlobMetadata = {\n type: string\n size: number\n filename?: string\n}\n\nexport interface ProtocolBlobInterface {\n readonly metadata: ProtocolBlobMetadata\n}\n\nexport class ProtocolBlob implements ProtocolBlobInterface {\n public readonly metadata: ProtocolBlobMetadata\n public readonly source: any\n\n constructor(\n source: any,\n size = -1,\n type = 'application/octet-stream',\n filename?: string,\n ) {\n if (size < -1 || size === 0) throw new Error('Blob size is invalid')\n\n this.source = source\n this.metadata = {\n size,\n type,\n filename,\n }\n }\n\n static from(\n source: any,\n metadata: {\n size?: number\n type?: string\n filename?: string\n } = {},\n ) {\n let _source: any = undefined\n\n if (source instanceof globalThis.ReadableStream) {\n _source = source\n } else if ('File' in globalThis && source instanceof globalThis.File) {\n _source = source.stream()\n metadata.size = source.size\n metadata.filename = source.name\n } else if (source instanceof globalThis.Blob) {\n _source = source.stream()\n metadata.size = source.size\n } else if (typeof source === 'string') {\n const blob = new Blob([source])\n _source = blob.stream()\n metadata.size = blob.size\n metadata.type = metadata.type || 'text/plain'\n } else if (source instanceof globalThis.ArrayBuffer) {\n const blob = new Blob([source])\n _source = blob.stream()\n metadata.size = blob.size\n } else {\n _source = source\n }\n\n return new ProtocolBlob(\n _source,\n metadata.size,\n metadata.type,\n metadata.filename,\n )\n }\n}\n"],"version":3}
1
+ {"mappings":"AAAA,OAAO,MAAMA,UAAyB,OAAO,IAAI,kBAAkB;AAcnE,OAAO,MAAM,aAA8C;CACzD,CAAU,WAAW;CAErB,AAAgB;CAChB,AAAgB;CAEhB,YACEC,QACAC,MACA,OAAO,4BACPC,UACA;AACA,aAAW,SAAS,eAAe,QAAQ,EACzC,OAAM,IAAI,MAAM;AAElB,OAAK,SAAS;AACd,OAAK,WAAW;GACd;GACA;GACA;EACD;CACF;CAED,OAAO,KACLF,QACAG,WAII,CAAE,GACN;EACA,IAAIC,UAAe;AAEnB,MAAI,kBAAkB,WAAW,gBAAgB;AAC/C,aAAU;EACX,WAAU,UAAU,cAAc,kBAAkB,WAAW,MAAM;AACpE,aAAU,OAAO,QAAQ;AACzB,YAAS,OAAO,OAAO;AACvB,YAAS,WAAW,OAAO;EAC5B,WAAU,kBAAkB,WAAW,MAAM;AAC5C,aAAU,OAAO,QAAQ;AACzB,YAAS,OAAO,OAAO;EACxB,kBAAiB,WAAW,UAAU;GACrC,MAAM,OAAO,IAAI,KAAK,CAAC,MAAO;AAC9B,aAAU,KAAK,QAAQ;AACvB,YAAS,OAAO,KAAK;AACrB,YAAS,OAAO,SAAS,QAAQ;EAClC,WAAU,kBAAkB,WAAW,aAAa;GACnD,MAAM,OAAO,IAAI,KAAK,CAAC,MAAO;AAC9B,aAAU,KAAK,QAAQ;AACvB,YAAS,OAAO,KAAK;EACtB,OAAM;AACL,aAAU;EACX;AAED,SAAO,IAAI,aACT,SACA,SAAS,MACT,SAAS,MACT,SAAS;CAEZ;AACF","names":["BlobKey: unique symbol","source: any","size?: number","filename?: string","metadata: {\n size?: number\n type?: string\n filename?: string\n }","_source: any"],"sources":["../../src/common/blob.ts"],"sourcesContent":["export const BlobKey: unique symbol = Symbol.for('neemata:BlobKey')\nexport type BlobKey = typeof BlobKey\n\nexport type ProtocolBlobMetadata = {\n type: string\n size?: number\n filename?: string\n}\n\nexport interface ProtocolBlobInterface {\n readonly metadata: ProtocolBlobMetadata\n readonly [BlobKey]: true\n}\n\nexport class ProtocolBlob implements ProtocolBlobInterface {\n readonly [BlobKey] = true\n\n public readonly metadata: ProtocolBlobMetadata\n public readonly source: any\n\n constructor(\n source: any,\n size?: number,\n type = 'application/octet-stream',\n filename?: string,\n ) {\n if (typeof size !== 'undefined' && size <= 0)\n throw new Error('Blob size is invalid')\n\n this.source = source\n this.metadata = {\n size,\n type,\n filename,\n }\n }\n\n static from(\n source: any,\n metadata: {\n size?: number\n type?: string\n filename?: string\n } = {},\n ) {\n let _source: any = undefined\n\n if (source instanceof globalThis.ReadableStream) {\n _source = source\n } else if ('File' in globalThis && source instanceof globalThis.File) {\n _source = source.stream()\n metadata.size = source.size\n metadata.filename = source.name\n } else if (source instanceof globalThis.Blob) {\n _source = source.stream()\n metadata.size = source.size\n } else if (typeof source === 'string') {\n const blob = new Blob([source])\n _source = blob.stream()\n metadata.size = blob.size\n metadata.type = metadata.type || 'text/plain'\n } else if (source instanceof globalThis.ArrayBuffer) {\n const blob = new Blob([source])\n _source = blob.stream()\n metadata.size = blob.size\n } else {\n _source = source\n }\n\n return new ProtocolBlob(\n _source,\n metadata.size,\n metadata.type,\n metadata.filename,\n )\n }\n}\n"],"version":3,"file":"blob.js"}
@@ -14,7 +14,8 @@ export let ServerMessageType = /* @__PURE__ */ function(ServerMessageType) {
14
14
  ServerMessageType[ServerMessageType["RpcResponse"] = 10] = "RpcResponse";
15
15
  ServerMessageType[ServerMessageType["RpcStreamResponse"] = 11] = "RpcStreamResponse";
16
16
  ServerMessageType[ServerMessageType["RpcStreamChunk"] = 12] = "RpcStreamChunk";
17
- ServerMessageType[ServerMessageType["RpcStreamAbort"] = 13] = "RpcStreamAbort";
17
+ ServerMessageType[ServerMessageType["RpcStreamEnd"] = 13] = "RpcStreamEnd";
18
+ ServerMessageType[ServerMessageType["RpcStreamAbort"] = 14] = "RpcStreamAbort";
18
19
  ServerMessageType[ServerMessageType["ServerStreamPush"] = 20] = "ServerStreamPush";
19
20
  ServerMessageType[ServerMessageType["ServerStreamEnd"] = 21] = "ServerStreamEnd";
20
21
  ServerMessageType[ServerMessageType["ServerStreamAbort"] = 22] = "ServerStreamAbort";
@@ -42,3 +43,5 @@ export let ErrorCode = /* @__PURE__ */ function(ErrorCode) {
42
43
  ErrorCode["ConnectionError"] = "ConnectionError";
43
44
  return ErrorCode;
44
45
  }({});
46
+
47
+ //# sourceMappingURL=enums.js.map
@@ -1 +1 @@
1
- {"mappings":"AAAA,OAAO,IAAK,gEAAL;AACL;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AACD;AAED,OAAO,IAAK,gEAAL;AACL;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AACD;AAED,OAAO,IAAK,wDAAL;AACL;AACA;;AACD;AAED,OAAO,IAAK,gDAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACD","names":[],"sources":["src/common/enums.ts"],"sourcesContent":["export enum ClientMessageType {\n Rpc = 10,\n RpcAbort = 11,\n RpcStreamAbort = 12,\n\n ClientStreamPush = 20,\n ClientStreamEnd = 21,\n ClientStreamAbort = 22,\n ServerStreamAbort = 23,\n ServerStreamPull = 24,\n}\n\nexport enum ServerMessageType {\n Event = 1,\n\n RpcResponse = 10,\n RpcStreamResponse = 11,\n RpcStreamChunk = 12,\n RpcStreamAbort = 13,\n\n ServerStreamPush = 20,\n ServerStreamEnd = 21,\n ServerStreamAbort = 22,\n ClientStreamAbort = 23,\n ClientStreamPull = 24,\n}\n\nexport enum TransportType {\n Bidirectional = 'Bidirectional',\n Unidirectional = 'Unidirectional',\n}\n\nexport enum ErrorCode {\n ValidationError = 'ValidationError',\n BadRequest = 'BadRequest',\n NotFound = 'NotFound',\n Forbidden = 'Forbidden',\n Unauthorized = 'Unauthorized',\n InternalServerError = 'InternalServerError',\n NotAcceptable = 'NotAcceptable',\n RequestTimeout = 'RequestTimeout',\n GatewayTimeout = 'GatewayTimeout',\n ServiceUnavailable = 'ServiceUnavailable',\n ClientRequestError = 'ClientRequestError',\n ConnectionError = 'ConnectionError',\n}\n"],"version":3}
1
+ {"mappings":"AAAA,OAAO,IAAK,gEAAL;AACL;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AACD;AAED,OAAO,IAAK,gEAAL;AACL;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;;AACD;AAED,OAAO,IAAK,wDAAL;AACL;AACA;;AACD;AAED,OAAO,IAAK,gDAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACD","names":[],"sources":["../../src/common/enums.ts"],"sourcesContent":["export enum ClientMessageType {\n Rpc = 10,\n RpcAbort = 11,\n RpcStreamAbort = 12,\n\n ClientStreamPush = 20,\n ClientStreamEnd = 21,\n ClientStreamAbort = 22,\n ServerStreamAbort = 23,\n ServerStreamPull = 24,\n}\n\nexport enum ServerMessageType {\n Event = 1,\n\n RpcResponse = 10,\n RpcStreamResponse = 11,\n RpcStreamChunk = 12,\n RpcStreamEnd = 13,\n RpcStreamAbort = 14,\n\n ServerStreamPush = 20,\n ServerStreamEnd = 21,\n ServerStreamAbort = 22,\n\n ClientStreamAbort = 23,\n ClientStreamPull = 24,\n}\n\nexport enum TransportType {\n Bidirectional = 'Bidirectional',\n Unidirectional = 'Unidirectional',\n}\n\nexport enum ErrorCode {\n ValidationError = 'ValidationError',\n BadRequest = 'BadRequest',\n NotFound = 'NotFound',\n Forbidden = 'Forbidden',\n Unauthorized = 'Unauthorized',\n InternalServerError = 'InternalServerError',\n NotAcceptable = 'NotAcceptable',\n RequestTimeout = 'RequestTimeout',\n GatewayTimeout = 'GatewayTimeout',\n ServiceUnavailable = 'ServiceUnavailable',\n ClientRequestError = 'ClientRequestError',\n ConnectionError = 'ConnectionError',\n}\n"],"version":3,"file":"enums.js"}
@@ -2,3 +2,5 @@ export * from "./binary.js";
2
2
  export * from "./blob.js";
3
3
  export * from "./enums.js";
4
4
  export * from "./types.js";
5
+
6
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","names":[],"sources":["src/common/index.ts"],"sourcesContent":["export * from './binary.ts'\nexport * from './blob.ts'\nexport * from './enums.ts'\nexport * from './types.ts'\n"],"version":3}
1
+ {"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","names":[],"sources":["../../src/common/index.ts"],"sourcesContent":["export * from './binary.ts'\nexport * from './blob.ts'\nexport * from './enums.ts'\nexport * from './types.ts'\n"],"version":3,"file":"index.js"}
@@ -1 +1,3 @@
1
1
  export {};
2
+
3
+ //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"mappings":"","names":[],"sources":["src/common/types.ts"],"sourcesContent":["import type { ProtocolServerBlobStream } from '../client/stream.ts'\nimport type {\n ProtocolBlob,\n ProtocolBlobInterface,\n ProtocolBlobMetadata,\n} from './blob.ts'\n\nexport type ProtocolRPC = {\n callId: number\n namespace: string\n procedure: string\n payload: any\n}\n\nexport type ProtocolRPCResponse =\n | {\n callId: number\n error: any\n payload?: never\n }\n | {\n callId: number\n payload: any\n error?: never\n }\n\nexport interface EncodeRPCContext {\n getStream: (id: number) => any\n addStream: (blob: ProtocolBlob) => {\n id: number\n metadata: ProtocolBlobMetadata\n }\n}\n\nexport interface DecodeRPCContext {\n getStream: (id: number) => any\n addStream: (id: number, metadata: ProtocolBlobMetadata) => any\n}\n\nexport interface BaseClientDecoder {\n decode(buffer: ArrayBuffer): any\n decodeRPC(buffer: ArrayBuffer, context: DecodeRPCContext): ProtocolRPCResponse\n}\n\nexport interface BaseClientEncoder {\n encode(data: any): ArrayBuffer\n encodeRPC(rpc: ProtocolRPC, context: EncodeRPCContext): ArrayBuffer\n}\n\nexport type InputType<T> = T extends ProtocolBlobInterface\n ? ProtocolBlob\n : T extends object\n ? { [K in keyof T]: InputType<T[K]> }\n : T\n\nexport type OutputType<T> = T extends ProtocolBlobInterface\n ? ProtocolServerBlobStream\n : T extends object\n ? { [K in keyof T]: OutputType<T[K]> }\n : T\n"],"version":3}
1
+ {"mappings":"","names":[],"sources":["../../src/common/types.ts"],"sourcesContent":["import type { OneOf } from '@nmtjs/common'\nimport type { ProtocolBlob, ProtocolBlobMetadata } from './blob.ts'\n\ntype Stream = any\n\nexport interface BaseProtocolError {\n code: string\n message: string\n data?: any\n}\n\nexport type ProtocolRPC = {\n callId: number\n namespace: string\n procedure: string\n payload: any\n}\n\nexport type ProtocolRPCResponse<T = Stream> = OneOf<\n [\n {\n callId: number\n error: BaseProtocolError\n },\n {\n callId: number\n result: any\n streams: Record<number, T>\n },\n ]\n>\n\nexport interface EncodeRPCContext<T = Stream> {\n getStream: (id: number) => T\n addStream: (blob: ProtocolBlob) => T\n}\n\nexport interface DecodeRPCContext<T = Stream> {\n getStream: (id: number, callId: number) => T\n addStream: (id: number, callId: number, metadata: ProtocolBlobMetadata) => T\n}\n"],"version":3,"file":"types.js"}
@@ -1 +1,4 @@
1
- export {};
1
+ export const isIterableResult = (result) => "iterable" in result;
2
+ export const isSubscriptionResult = (result) => "subscription" in result;
3
+
4
+ //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"mappings":"","names":[],"sources":["src/server/api.ts"],"sourcesContent":["import type { Container } from '@nmtjs/core'\nimport type { Hook } from '@nmtjs/core'\nimport type { Connection } from './connection.ts'\n\nexport type ProtocolApiCallOptions = {\n connection: Connection\n namespace: string\n procedure: string\n container: Container\n payload: any\n signal: AbortSignal\n}\n\nexport type ProtocolAnyIterable<T> =\n | (() => AsyncGenerator<T>)\n | AsyncIterable<T>\n\nexport interface ProtocolApiCallBaseResult {\n output: unknown\n}\nexport interface ProtocolApiCallSubscriptionResult\n extends ProtocolApiCallBaseResult {\n subscription: never\n}\n\nexport interface ProtocolApiCallIterableResult\n extends ProtocolApiCallBaseResult {\n iterable: ProtocolAnyIterable<unknown>\n onFinish?: () => void\n}\n\nexport type ProtocolApiCallResult =\n | ProtocolApiCallBaseResult\n | ProtocolApiCallSubscriptionResult\n | ProtocolApiCallIterableResult\n\nexport interface ProtocolApi {\n call(options: ProtocolApiCallOptions): Promise<ProtocolApiCallResult>\n}\n\ndeclare module '@nmtjs/core' {\n export interface HookType {\n [Hook.OnConnect]: (connection: Connection) => any\n [Hook.OnDisconnect]: (connection: Connection) => any\n }\n}\n"],"version":3}
1
+ {"mappings":"AA0CA,OAAO,MAAM,mBAAmB,CAC9BA,WAC4C,cAAc;AAE5D,OAAO,MAAM,uBAAuB,CAClCA,WACgD,kBAAkB","names":["result: ProtocolApiCallResult"],"sources":["../../src/server/api.ts"],"sourcesContent":["import type {\n Container,\n Metadata,\n MetadataKey,\n MetadataStore,\n} from '@nmtjs/core'\nimport type { Hook } from '@nmtjs/core'\nimport type { Connection } from './connection.ts'\n\nexport type ProtocolApiCallOptions = {\n connection: Connection\n namespace: string\n procedure: string\n container: Container\n payload: any\n signal: AbortSignal\n metadata?: (metadata: MetadataStore) => void\n}\n\nexport type ProtocolAnyIterable<T> =\n | (() => AsyncGenerator<T>)\n | AsyncIterable<T>\n\nexport interface ProtocolApiCallBaseResult {\n output: unknown\n}\nexport interface ProtocolApiCallSubscriptionResult\n extends ProtocolApiCallBaseResult {\n subscription: never\n}\n\nexport interface ProtocolApiCallIterableResult\n extends ProtocolApiCallBaseResult {\n iterable: ProtocolAnyIterable<unknown>\n onFinish?: () => void\n}\n\nexport type ProtocolApiCallResult =\n | ProtocolApiCallBaseResult\n | ProtocolApiCallSubscriptionResult\n | ProtocolApiCallIterableResult\n\nexport const isIterableResult = (\n result: ProtocolApiCallResult,\n): result is ProtocolApiCallIterableResult => 'iterable' in result\n\nexport const isSubscriptionResult = (\n result: ProtocolApiCallResult,\n): result is ProtocolApiCallSubscriptionResult => 'subscription' in result\n\nexport interface ProtocolApi {\n call(options: ProtocolApiCallOptions): Promise<ProtocolApiCallResult>\n}\n\ndeclare module '@nmtjs/core' {\n export interface HookType {\n [Hook.OnConnect]: (connection: Connection) => any\n [Hook.OnDisconnect]: (connection: Connection) => any\n }\n}\n"],"version":3,"file":"api.js"}
@@ -20,3 +20,5 @@ export class ConnectionContext {
20
20
  this.format = format;
21
21
  }
22
22
  }
23
+
24
+ //# sourceMappingURL=connection.js.map
@@ -1 +1 @@
1
- {"mappings":"AAAA,SAAS,kBAAkB,aAAa;AAYxC,OAAO,MAAM,WAA2B;CACtC,AAAS;CACT,AAAS;CAET,YAAYA,SAAkC;AAC5C,OAAK,KAAK,QAAQ,MAAM,YAAY;AACpC,OAAK,OAAO,QAAQ;CACrB;AACF;AAMD,OAAO,MAAM,kBAAkB;CAC7B,WAAW;CACX,QAAQ,IAAI;CACZ,gBAAgB,IAAI;CACpB,gBAAgB,IAAI;CACpB,aAAa,IAAI;CACjB;CACA;CAKA,YACEC,WACAC,QACA;AACA,OAAK,YAAY;AACjB,OAAK,SAAS;CACf;AACF","names":["options: ConnectionOptions<Data>","container: ConnectionContext['container']","format: ConnectionContext['format']"],"sources":["src/server/connection.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto'\nimport type { Container } from '@nmtjs/core'\nimport type { InteractivePromise } from '../../../common/src/index.ts'\nimport type { ProtocolApiCallResult } from './api.ts'\nimport type { BaseServerDecoder, BaseServerEncoder } from './format.ts'\nimport type { ProtocolClientStream, ProtocolServerStream } from './stream.ts'\n\nexport type ConnectionOptions<Data = unknown> = {\n id?: string\n data: Data\n}\n\nexport class Connection<Data = unknown> {\n readonly id: string\n readonly data: Data\n\n constructor(options: ConnectionOptions<Data>) {\n this.id = options.id ?? randomUUID()\n this.data = options.data\n }\n}\n\nexport type ConnectionCall<T = unknown> = InteractivePromise<T> & {\n abort: AbortController['abort']\n}\n\nexport class ConnectionContext {\n streamId = 1\n calls = new Map<number, ConnectionCall<ProtocolApiCallResult>>()\n clientStreams = new Map<number, ProtocolClientStream>()\n serverStreams = new Map<number, ProtocolServerStream>()\n rpcStreams = new Map<number, AbortController>()\n container: Container\n format: {\n encoder: BaseServerEncoder\n decoder: BaseServerDecoder\n }\n\n constructor(\n container: ConnectionContext['container'],\n format: ConnectionContext['format'],\n ) {\n this.container = container\n this.format = format\n }\n}\n"],"version":3}
1
+ {"mappings":"AAAA,SAAS,kBAAkB,aAAa;AAYxC,OAAO,MAAM,WAA2B;CACtC,AAAS;CACT,AAAS;CAET,YAAYA,SAAkC;AAC5C,OAAK,KAAK,QAAQ,MAAM,YAAY;AACpC,OAAK,OAAO,QAAQ;CACrB;AACF;AAED,OAAO,MAAM,kBAAkB;CAC7B,WAAW;CACX,QAAQ,IAAI;CACZ,gBAAgB,IAAI;CACpB,gBAAgB,IAAI;CACpB,aAAa,IAAI;CACjB;CACA;CAKA,YACEC,WACAC,QACA;AACA,OAAK,YAAY;AACjB,OAAK,SAAS;CACf;AACF","names":["options: ConnectionOptions<Data>","container: ConnectionContext['container']","format: ConnectionContext['format']"],"sources":["../../src/server/connection.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto'\nimport type { Container } from '@nmtjs/core'\nimport type { InteractivePromise } from '../../../common/src/index.ts'\nimport type { ProtocolApiCallResult } from './api.ts'\nimport type { BaseServerDecoder, BaseServerEncoder } from './format.ts'\nimport type { ProtocolClientStream, ProtocolServerStream } from './stream.ts'\n\nexport type ConnectionOptions<Data = unknown> = {\n id?: string\n data: Data\n}\n\nexport class Connection<Data = unknown> {\n readonly id: string\n readonly data: Data\n\n constructor(options: ConnectionOptions<Data>) {\n this.id = options.id ?? randomUUID()\n this.data = options.data\n }\n}\n\nexport class ConnectionContext {\n streamId = 1\n calls = new Map<number, AbortController>()\n clientStreams = new Map<number, ProtocolClientStream>()\n serverStreams = new Map<number, ProtocolServerStream>()\n rpcStreams = new Map<number, AbortController>()\n container: Container\n format: {\n encoder: BaseServerEncoder\n decoder: BaseServerDecoder\n }\n\n constructor(\n container: ConnectionContext['container'],\n format: ConnectionContext['format'],\n ) {\n this.container = container\n this.format = format\n }\n}\n"],"version":3,"file":"connection.js"}
@@ -1 +1,3 @@
1
1
  export const kTransportPlugin = Symbol.for("neemata:TransportPluginKey");
2
+
3
+ //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"mappings":"AAAA,OAAO,MAAMA,mBAAkC,OAAO,IACpD,6BACD","names":["kTransportPlugin: unique symbol"],"sources":["src/server/constants.ts"],"sourcesContent":["export const kTransportPlugin: unique symbol = Symbol.for(\n 'neemata:TransportPluginKey',\n)\nexport type kTransportPlugin = typeof kTransportPlugin\n"],"version":3}
1
+ {"mappings":"AAAA,OAAO,MAAMA,mBAAkC,OAAO,IACpD,6BACD","names":["kTransportPlugin: unique symbol"],"sources":["../../src/server/constants.ts"],"sourcesContent":["export const kTransportPlugin: unique symbol = Symbol.for(\n 'neemata:TransportPluginKey',\n)\nexport type kTransportPlugin = typeof kTransportPlugin\n"],"version":3,"file":"constants.js"}
@@ -43,3 +43,5 @@ export class Format {
43
43
  return null;
44
44
  }
45
45
  }
46
+
47
+ //# sourceMappingURL=format.js.map
@@ -1 +1 @@
1
- {"mappings":"AAAA,SAAS,aAA2B,aAAa;AAoBjD,OAAO,MAAe,iBAEtB,CAcC;AAED,OAAO,MAAM,oBAAoB,CAACA,UAAkB;AAClD,KAAI,UAAU,MAAO,QAAO,CAAC,KAAM;AACnC,QAAO,MACJ,MAAM,IAAI,CACV,IAAI,CAAC,MAAM;EACV,MAAM,CAAC,MAAM,GAAG,KAAK,GAAG,EAAE,MAAM,IAAI;EACpC,MAAM,SAAS,IAAI,IACjB,KAAK,IAAI,CAAC,MACR,EACG,MAAM,CACN,MAAM,IAAI,CACV,MAAM,GAAG,EAAE,CACX,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CACxB;AAEH,SAAO;GACL;GACA,GAAG,OAAO,IAAI,IAAI,GAAG,OAAO,WAAW,OAAO,IAAI,IAAI,CAAE,GAAG;EAC5D;CACF,EAAC,CACD,KAAK,CAAC,GAAG,MAAM;AACd,MAAI,EAAE,SAAS,MAAO,QAAO;AAC7B,MAAI,EAAE,SAAS,MAAO,SAAQ;AAC9B,SAAO,EAAE,IAAI,EAAE,KAAK,IAAI;CACzB,EAAC,CACD,IAAI,CAAC,MAAM,EAAE,KAAK;AACtB;AAED,OAAO,MAAM,OAAO;CAClB,WAAW,IAAI;CACf,WAAW,IAAI;CAEf,YAAYC,SAA6B;AACvC,OAAK,MAAM,UAAU,SAAS;AAC5B,QAAK,SAAS,IAAI,OAAO,aAAa,OAAO;AAC7C,QAAK,MAAM,cAAc,OAAO,QAAQ;AACtC,SAAK,SAAS,IAAI,YAAY,OAAO;GACtC;EACF;CACF;CAED,gBAAgBC,aAAqB,qBAAqB,OAAO;AAC/D,SAAO,KAAK,SAAS,KAAK,UAAU,aAAa,mBAAmB;CACrE;CAED,gBAAgBA,aAAqB,qBAAqB,OAAO;AAC/D,SAAO,KAAK,SAAS,KAAK,UAAU,aAAa,mBAAmB;CACrE;CAED,AAAQ,SACNC,SACAD,aACA,qBAAqB,OACX;EAEV,MAAM,QAAQ,kBAAkB,YAAY;AAE5C,OAAK,MAAM,QAAQ,OAAO;AACxB,QAAK,MAAM,CAAC,SAAS,OAAO,IAAI,SAAS;AACvC,QAAI,SAAS,SAAS,MAAM,MAAM,QAAQ,CAAE,QAAO;GACpD;EACF;AAED,MAAI,mBACF,OAAM,IAAI,OAAO,6BAA6B,YAAY;AAE5D,SAAO;CACR;AACF","names":["types: string","formats: BaseServerFormat[]","contentType: string","formats: Map<Pattern, T>"],"sources":["src/server/format.ts"],"sourcesContent":["import { match, type Pattern } from '@nmtjs/core'\nimport type {\n DecodeRPCContext,\n EncodeRPCContext,\n ProtocolRPC,\n ProtocolRPCResponse,\n} from '../common/types.ts'\n\nexport interface BaseServerDecoder {\n accept: Pattern[]\n decode(buffer: ArrayBuffer): any\n decodeRPC(buffer: ArrayBuffer, context: DecodeRPCContext): ProtocolRPC\n}\n\nexport interface BaseServerEncoder {\n contentType: string\n encode(data: any): ArrayBuffer\n encodeRPC(rpc: ProtocolRPCResponse, context: EncodeRPCContext): ArrayBuffer\n}\n\nexport abstract class BaseServerFormat\n implements BaseServerDecoder, BaseServerEncoder\n{\n abstract accept: Pattern[]\n abstract contentType: string\n\n abstract encode(data: any): ArrayBuffer\n abstract encodeRPC(\n rpc: ProtocolRPCResponse,\n context: EncodeRPCContext,\n ): ArrayBuffer\n abstract decode(buffer: ArrayBuffer): any\n abstract decodeRPC(\n buffer: ArrayBuffer,\n context: DecodeRPCContext,\n ): ProtocolRPC\n}\n\nexport const parseContentTypes = (types: string) => {\n if (types === '*/*') return ['*/*']\n return types\n .split(',')\n .map((t) => {\n const [type, ...rest] = t.split(';')\n const params = new Map(\n rest.map((p) =>\n p\n .trim()\n .split('=')\n .slice(0, 2)\n .map((p) => p.trim()),\n ) as [string, string][],\n )\n return {\n type,\n q: params.has('q') ? Number.parseFloat(params.get('q')!) : 1,\n }\n })\n .sort((a, b) => {\n if (a.type === '*/*') return 1\n if (b.type === '*/*') return -1\n return b.q - a.q ? -1 : 1\n })\n .map((t) => t.type)\n}\n\nexport class Format {\n decoders = new Map<Pattern, BaseServerDecoder>()\n encoders = new Map<Pattern, BaseServerEncoder>()\n\n constructor(formats: BaseServerFormat[]) {\n for (const format of formats) {\n this.encoders.set(format.contentType, format)\n for (const acceptType of format.accept) {\n this.decoders.set(acceptType, format)\n }\n }\n }\n\n supportsDecoder(contentType: string, throwIfUnsupported = false) {\n return this.supports(this.decoders, contentType, throwIfUnsupported)\n }\n\n supportsEncoder(contentType: string, throwIfUnsupported = false) {\n return this.supports(this.encoders, contentType, throwIfUnsupported)\n }\n\n private supports<T extends BaseServerEncoder | BaseServerDecoder>(\n formats: Map<Pattern, T>,\n contentType: string,\n throwIfUnsupported = false,\n ): T | null {\n // TODO: Use node:utils.MIMEType (not implemented yet in Deno and Bun yet)\n const types = parseContentTypes(contentType)\n\n for (const type of types) {\n for (const [pattern, format] of formats) {\n if (type === '*/*' || match(type, pattern)) return format\n }\n }\n\n if (throwIfUnsupported)\n throw new Error(`No supported format found: ${contentType}`)\n\n return null\n }\n}\n"],"version":3}
1
+ {"mappings":"AACA,SAAS,aAA2B,aAAa;AA6BjD,OAAO,MAAe,iBAEtB,CAcC;AAED,OAAO,MAAM,oBAAoB,CAACA,UAAkB;AAClD,KAAI,UAAU,MAAO,QAAO,CAAC,KAAM;AACnC,QAAO,MACJ,MAAM,IAAI,CACV,IAAI,CAAC,MAAM;EACV,MAAM,CAAC,MAAM,GAAG,KAAK,GAAG,EAAE,MAAM,IAAI;EACpC,MAAM,SAAS,IAAI,IACjB,KAAK,IAAI,CAAC,MACR,EACG,MAAM,CACN,MAAM,IAAI,CACV,MAAM,GAAG,EAAE,CACX,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CACxB;AAEH,SAAO;GACL;GACA,GAAG,OAAO,IAAI,IAAI,GAAG,OAAO,WAAW,OAAO,IAAI,IAAI,CAAE,GAAG;EAC5D;CACF,EAAC,CACD,KAAK,CAAC,GAAG,MAAM;AACd,MAAI,EAAE,SAAS,MAAO,QAAO;AAC7B,MAAI,EAAE,SAAS,MAAO,SAAQ;AAC9B,SAAO,EAAE,IAAI,EAAE,KAAK,IAAI;CACzB,EAAC,CACD,IAAI,CAAC,MAAM,EAAE,KAAK;AACtB;AAED,OAAO,MAAM,OAAO;CAClB,WAAW,IAAI;CACf,WAAW,IAAI;CAEf,YAAYC,SAA6B;AACvC,OAAK,MAAM,UAAU,SAAS;AAC5B,QAAK,SAAS,IAAI,OAAO,aAAa,OAAO;AAC7C,QAAK,MAAM,cAAc,OAAO,QAAQ;AACtC,SAAK,SAAS,IAAI,YAAY,OAAO;GACtC;EACF;CACF;CAED,gBAAgBC,aAAqB,qBAAqB,OAAO;AAC/D,SAAO,KAAK,SAAS,KAAK,UAAU,aAAa,mBAAmB;CACrE;CAED,gBAAgBA,aAAqB,qBAAqB,OAAO;AAC/D,SAAO,KAAK,SAAS,KAAK,UAAU,aAAa,mBAAmB;CACrE;CAED,AAAQ,SACNC,SACAD,aACA,qBAAqB,OACX;EAEV,MAAM,QAAQ,kBAAkB,YAAY;AAE5C,OAAK,MAAM,QAAQ,OAAO;AACxB,QAAK,MAAM,CAAC,SAAS,OAAO,IAAI,SAAS;AACvC,QAAI,SAAS,SAAS,MAAM,MAAM,QAAQ,CAAE,QAAO;GACpD;EACF;AAED,MAAI,mBACF,OAAM,IAAI,OAAO,6BAA6B,YAAY;AAE5D,SAAO;CACR;AACF","names":["types: string","formats: BaseServerFormat[]","contentType: string","formats: Map<Pattern, T>"],"sources":["../../src/server/format.ts"],"sourcesContent":["import type { OneOf } from '@nmtjs/common'\nimport { match, type Pattern } from '@nmtjs/core'\nimport type {\n DecodeRPCContext,\n EncodeRPCContext,\n ProtocolRPC,\n ProtocolRPCResponse,\n} from '../common/types.ts'\nimport type { ProtocolClientStream, ProtocolServerStream } from './stream.ts'\n\nexport interface BaseServerDecoder {\n accept: Pattern[]\n decode(buffer: ArrayBuffer): any\n decodeRPC(\n buffer: ArrayBuffer,\n context: DecodeRPCContext<ProtocolClientStream>,\n ): ProtocolRPC\n}\n\nexport interface BaseServerEncoder {\n contentType: string\n encode(data: any): ArrayBuffer\n encodeRPC(\n rpc: OneOf<\n [{ callId: number; error: any }, { callId: number; result: any }]\n >,\n context: EncodeRPCContext<ProtocolServerStream>,\n ): ArrayBuffer\n}\n\nexport abstract class BaseServerFormat\n implements BaseServerDecoder, BaseServerEncoder\n{\n abstract accept: Pattern[]\n abstract contentType: string\n\n abstract encode(data: any): ArrayBuffer\n abstract encodeRPC(\n rpc: ProtocolRPCResponse,\n context: EncodeRPCContext<ProtocolServerStream>,\n ): ArrayBuffer\n abstract decode(buffer: ArrayBuffer): any\n abstract decodeRPC(\n buffer: ArrayBuffer,\n context: DecodeRPCContext<ProtocolClientStream>,\n ): ProtocolRPC\n}\n\nexport const parseContentTypes = (types: string) => {\n if (types === '*/*') return ['*/*']\n return types\n .split(',')\n .map((t) => {\n const [type, ...rest] = t.split(';')\n const params = new Map(\n rest.map((p) =>\n p\n .trim()\n .split('=')\n .slice(0, 2)\n .map((p) => p.trim()),\n ) as [string, string][],\n )\n return {\n type,\n q: params.has('q') ? Number.parseFloat(params.get('q')!) : 1,\n }\n })\n .sort((a, b) => {\n if (a.type === '*/*') return 1\n if (b.type === '*/*') return -1\n return b.q - a.q ? -1 : 1\n })\n .map((t) => t.type)\n}\n\nexport class Format {\n decoders = new Map<Pattern, BaseServerDecoder>()\n encoders = new Map<Pattern, BaseServerEncoder>()\n\n constructor(formats: BaseServerFormat[]) {\n for (const format of formats) {\n this.encoders.set(format.contentType, format)\n for (const acceptType of format.accept) {\n this.decoders.set(acceptType, format)\n }\n }\n }\n\n supportsDecoder(contentType: string, throwIfUnsupported = false) {\n return this.supports(this.decoders, contentType, throwIfUnsupported)\n }\n\n supportsEncoder(contentType: string, throwIfUnsupported = false) {\n return this.supports(this.encoders, contentType, throwIfUnsupported)\n }\n\n private supports<T extends BaseServerEncoder | BaseServerDecoder>(\n formats: Map<Pattern, T>,\n contentType: string,\n throwIfUnsupported = false,\n ): T | null {\n // TODO: Use node:utils.MIMEType (not implemented yet in Deno and Bun yet)\n const types = parseContentTypes(contentType)\n\n for (const type of types) {\n for (const [pattern, format] of formats) {\n if (type === '*/*' || match(type, pattern)) return format\n }\n }\n\n if (throwIfUnsupported)\n throw new Error(`No supported format found: ${contentType}`)\n\n return null\n }\n}\n"],"version":3,"file":"format.js"}
@@ -7,4 +7,7 @@ export * from "./protocol.js";
7
7
  export * from "./registry.js";
8
8
  export * from "./stream.js";
9
9
  export * from "./transport.js";
10
+ export * from "./types.js";
10
11
  export * from "./utils.js";
12
+
13
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","names":[],"sources":["src/server/index.ts"],"sourcesContent":["export * from './api.ts'\nexport * from './connection.ts'\nexport * from './constants.ts'\nexport * from './format.ts'\nexport * from './injectables.ts'\nexport * from './protocol.ts'\nexport * from './registry.ts'\nexport * from './stream.ts'\nexport * from './transport.ts'\nexport * from './utils.ts'\n"],"version":3}
1
+ {"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","names":[],"sources":["../../src/server/index.ts"],"sourcesContent":["export * from './api.ts'\nexport * from './connection.ts'\nexport * from './constants.ts'\nexport * from './format.ts'\nexport * from './injectables.ts'\nexport * from './protocol.ts'\nexport * from './registry.ts'\nexport * from './stream.ts'\nexport * from './transport.ts'\nexport * from './types.ts'\nexport * from './utils.ts'\n"],"version":3,"file":"index.js"}
@@ -20,3 +20,5 @@ export const ProtocolInjectables = {
20
20
  rpcTimeoutSignal,
21
21
  rpcAbortSignal
22
22
  };
23
+
24
+ //# sourceMappingURL=injectables.js.map
@@ -1 +1 @@
1
- {"mappings":"AAAA,SACE,yBACA,sBACA,aACK,aAAa;AAGpB,MAAM,aAAa,qBACjB,MAAM,YACN,iBACD;AAED,MAAM,iBAAiB,qBACrB,MAAM,YACN,wBACD;AAED,MAAM,sBAAsB,qBAC1B,MAAM,QACN,wBACD;AAED,MAAM,uBAAuB,qBAC3B,MAAM,MACN,0BACD;AAED,MAAM,mBAAmB,qBACvB,MAAM,MACN,qBACD;AAED,MAAM,iBAAiB,wBACrB;CACE,cAAc;EACZ;EACA;EACA;CACD;CACD,SAAS,CAAC,QAAQ,YAAY,IAAI,OAAO,OAAO,IAAI,CAAC;AACtD,GACD,uBACD;AAED,OAAO,MAAM,sBAAsB;CACjC;CACA;CACA;CACA;CACA;CACA;AACD","names":[],"sources":["src/server/injectables.ts"],"sourcesContent":["import {\n createFactoryInjectable,\n createLazyInjectable,\n Scope,\n} from '@nmtjs/core'\nimport type { Connection } from './connection.ts'\n\nconst connection = createLazyInjectable<Connection, Scope.Connection>(\n Scope.Connection,\n 'RPC connection',\n)\n\nconst connectionData = createLazyInjectable<any, Scope.Connection>(\n Scope.Connection,\n \"RPC connection's data\",\n)\n\nconst transportStopSignal = createLazyInjectable<AbortSignal>(\n Scope.Global,\n 'Transport stop signal',\n)\n\nconst rpcClientAbortSignal = createLazyInjectable<AbortSignal, Scope.Call>(\n Scope.Call,\n 'RPC client abort signal',\n)\n\nconst rpcTimeoutSignal = createLazyInjectable<AbortSignal, Scope.Call>(\n Scope.Call,\n 'RPC timeout signal',\n)\n\nconst rpcAbortSignal = createFactoryInjectable(\n {\n dependencies: {\n rpcTimeoutSignal,\n rpcClientAbortSignal,\n transportStopSignal,\n },\n factory: (ctx) => AbortSignal.any(Object.values(ctx)),\n },\n 'Any RPC abort signal',\n)\n\nexport const ProtocolInjectables = {\n connection,\n connectionData,\n transportStopSignal,\n rpcClientAbortSignal,\n rpcTimeoutSignal,\n rpcAbortSignal,\n} as const\n"],"version":3}
1
+ {"mappings":"AAAA,SACE,yBACA,sBACA,aACK,aAAa;AAGpB,MAAM,aAAa,qBACjB,MAAM,YACN,iBACD;AAED,MAAM,iBAAiB,qBACrB,MAAM,YACN,wBACD;AAED,MAAM,sBAAsB,qBAC1B,MAAM,QACN,wBACD;AAED,MAAM,uBAAuB,qBAC3B,MAAM,MACN,0BACD;AAED,MAAM,mBAAmB,qBACvB,MAAM,MACN,qBACD;AAED,MAAM,iBAAiB,wBACrB;CACE,cAAc;EACZ;EACA;EACA;CACD;CACD,SAAS,CAAC,QAAQ,YAAY,IAAI,OAAO,OAAO,IAAI,CAAC;AACtD,GACD,uBACD;AAED,OAAO,MAAM,sBAAsB;CACjC;CACA;CACA;CACA;CACA;CACA;AACD","names":[],"sources":["../../src/server/injectables.ts"],"sourcesContent":["import {\n createFactoryInjectable,\n createLazyInjectable,\n Scope,\n} from '@nmtjs/core'\nimport type { Connection } from './connection.ts'\n\nconst connection = createLazyInjectable<Connection, Scope.Connection>(\n Scope.Connection,\n 'RPC connection',\n)\n\nconst connectionData = createLazyInjectable<any, Scope.Connection>(\n Scope.Connection,\n \"RPC connection's data\",\n)\n\nconst transportStopSignal = createLazyInjectable<AbortSignal>(\n Scope.Global,\n 'Transport stop signal',\n)\n\nconst rpcClientAbortSignal = createLazyInjectable<AbortSignal, Scope.Call>(\n Scope.Call,\n 'RPC client abort signal',\n)\n\nconst rpcTimeoutSignal = createLazyInjectable<AbortSignal, Scope.Call>(\n Scope.Call,\n 'RPC timeout signal',\n)\n\nconst rpcAbortSignal = createFactoryInjectable(\n {\n dependencies: {\n rpcTimeoutSignal,\n rpcClientAbortSignal,\n transportStopSignal,\n },\n factory: (ctx) => AbortSignal.any(Object.values(ctx)),\n },\n 'Any RPC abort signal',\n)\n\nexport const ProtocolInjectables = {\n connection,\n connectionData,\n transportStopSignal,\n rpcClientAbortSignal,\n rpcTimeoutSignal,\n rpcAbortSignal,\n} as const\n"],"version":3,"file":"injectables.js"}