assistant-stream 0.3.15 → 0.3.16

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 (232) hide show
  1. package/README.md +6 -4
  2. package/dist/core/AssistantStream.d.ts +35 -31
  3. package/dist/core/AssistantStream.d.ts.map +1 -1
  4. package/dist/core/AssistantStream.js +39 -37
  5. package/dist/core/AssistantStream.js.map +1 -1
  6. package/dist/core/AssistantStreamChunk.d.ts +71 -78
  7. package/dist/core/AssistantStreamChunk.d.ts.map +1 -1
  8. package/dist/core/AssistantStreamChunk.js +0 -2
  9. package/dist/core/accumulators/AssistantMessageStream.d.ts +15 -11
  10. package/dist/core/accumulators/AssistantMessageStream.d.ts.map +1 -1
  11. package/dist/core/accumulators/AssistantMessageStream.js +52 -48
  12. package/dist/core/accumulators/AssistantMessageStream.js.map +1 -1
  13. package/dist/core/accumulators/TimingTracker.d.ts +15 -11
  14. package/dist/core/accumulators/TimingTracker.d.ts.map +1 -1
  15. package/dist/core/accumulators/TimingTracker.js +36 -43
  16. package/dist/core/accumulators/TimingTracker.js.map +1 -1
  17. package/dist/core/accumulators/assistant-message-accumulator.d.ts +21 -11
  18. package/dist/core/accumulators/assistant-message-accumulator.d.ts.map +1 -1
  19. package/dist/core/accumulators/assistant-message-accumulator.js +349 -390
  20. package/dist/core/accumulators/assistant-message-accumulator.js.map +1 -1
  21. package/dist/core/converters/toGenericMessages.d.ts +49 -47
  22. package/dist/core/converters/toGenericMessages.d.ts.map +1 -1
  23. package/dist/core/converters/toGenericMessages.js +122 -136
  24. package/dist/core/converters/toGenericMessages.js.map +1 -1
  25. package/dist/core/modules/assistant-stream.d.ts +62 -66
  26. package/dist/core/modules/assistant-stream.d.ts.map +1 -1
  27. package/dist/core/modules/assistant-stream.js +174 -182
  28. package/dist/core/modules/assistant-stream.js.map +1 -1
  29. package/dist/core/modules/text.d.ts +11 -7
  30. package/dist/core/modules/text.d.ts.map +1 -1
  31. package/dist/core/modules/text.js +45 -45
  32. package/dist/core/modules/text.js.map +1 -1
  33. package/dist/core/modules/tool-call.d.ts +15 -11
  34. package/dist/core/modules/tool-call.d.ts.map +1 -1
  35. package/dist/core/modules/tool-call.js +81 -96
  36. package/dist/core/modules/tool-call.js.map +1 -1
  37. package/dist/core/object/ObjectStreamAccumulator.d.ts +13 -9
  38. package/dist/core/object/ObjectStreamAccumulator.d.ts.map +1 -1
  39. package/dist/core/object/ObjectStreamAccumulator.js +44 -52
  40. package/dist/core/object/ObjectStreamAccumulator.js.map +1 -1
  41. package/dist/core/object/ObjectStreamResponse.d.ts +12 -8
  42. package/dist/core/object/ObjectStreamResponse.d.ts.map +1 -1
  43. package/dist/core/object/ObjectStreamResponse.js +52 -71
  44. package/dist/core/object/ObjectStreamResponse.js.map +1 -1
  45. package/dist/core/object/createObjectStream.d.ts +14 -8
  46. package/dist/core/object/createObjectStream.d.ts.map +1 -1
  47. package/dist/core/object/createObjectStream.js +50 -47
  48. package/dist/core/object/createObjectStream.js.map +1 -1
  49. package/dist/core/object/types.d.ts +14 -11
  50. package/dist/core/object/types.d.ts.map +1 -1
  51. package/dist/core/object/types.js +0 -2
  52. package/dist/core/serialization/PlainText.d.ts +11 -7
  53. package/dist/core/serialization/PlainText.d.ts.map +1 -1
  54. package/dist/core/serialization/PlainText.js +40 -48
  55. package/dist/core/serialization/PlainText.js.map +1 -1
  56. package/dist/core/serialization/assistant-transport/AssistantTransport.d.ts +11 -7
  57. package/dist/core/serialization/assistant-transport/AssistantTransport.d.ts.map +1 -1
  58. package/dist/core/serialization/assistant-transport/AssistantTransport.js +102 -117
  59. package/dist/core/serialization/assistant-transport/AssistantTransport.js.map +1 -1
  60. package/dist/core/serialization/data-stream/DataStream.d.ts +11 -7
  61. package/dist/core/serialization/data-stream/DataStream.d.ts.map +1 -1
  62. package/dist/core/serialization/data-stream/DataStream.js +320 -371
  63. package/dist/core/serialization/data-stream/DataStream.js.map +1 -1
  64. package/dist/core/serialization/data-stream/chunk-types.d.ts +101 -100
  65. package/dist/core/serialization/data-stream/chunk-types.d.ts.map +1 -1
  66. package/dist/core/serialization/data-stream/chunk-types.js +27 -23
  67. package/dist/core/serialization/data-stream/chunk-types.js.map +1 -1
  68. package/dist/core/serialization/data-stream/serialization.d.ts +9 -5
  69. package/dist/core/serialization/data-stream/serialization.d.ts.map +1 -1
  70. package/dist/core/serialization/data-stream/serialization.js +23 -24
  71. package/dist/core/serialization/data-stream/serialization.js.map +1 -1
  72. package/dist/core/serialization/ui-message-stream/UIMessageStream.d.ts +15 -12
  73. package/dist/core/serialization/ui-message-stream/UIMessageStream.d.ts.map +1 -1
  74. package/dist/core/serialization/ui-message-stream/UIMessageStream.js +205 -228
  75. package/dist/core/serialization/ui-message-stream/UIMessageStream.js.map +1 -1
  76. package/dist/core/serialization/ui-message-stream/chunk-types.d.ts +68 -65
  77. package/dist/core/serialization/ui-message-stream/chunk-types.d.ts.map +1 -1
  78. package/dist/core/serialization/ui-message-stream/chunk-types.js +0 -2
  79. package/dist/core/tool/ToolCallReader.d.ts +34 -30
  80. package/dist/core/tool/ToolCallReader.d.ts.map +1 -1
  81. package/dist/core/tool/ToolCallReader.js +264 -317
  82. package/dist/core/tool/ToolCallReader.js.map +1 -1
  83. package/dist/core/tool/ToolExecutionStream.d.ts +20 -17
  84. package/dist/core/tool/ToolExecutionStream.d.ts.map +1 -1
  85. package/dist/core/tool/ToolExecutionStream.js +123 -146
  86. package/dist/core/tool/ToolExecutionStream.js.map +1 -1
  87. package/dist/core/tool/ToolResponse.d.ts +41 -41
  88. package/dist/core/tool/ToolResponse.d.ts.map +1 -1
  89. package/dist/core/tool/ToolResponse.js +50 -56
  90. package/dist/core/tool/ToolResponse.js.map +1 -1
  91. package/dist/core/tool/schema-utils.d.ts +19 -15
  92. package/dist/core/tool/schema-utils.d.ts.map +1 -1
  93. package/dist/core/tool/schema-utils.js +50 -84
  94. package/dist/core/tool/schema-utils.js.map +1 -1
  95. package/dist/core/tool/tool-types.d.ts +103 -122
  96. package/dist/core/tool/tool-types.d.ts.map +1 -1
  97. package/dist/core/tool/tool-types.js +0 -2
  98. package/dist/core/tool/toolResultStream.d.ts +11 -9
  99. package/dist/core/tool/toolResultStream.d.ts.map +1 -1
  100. package/dist/core/tool/toolResultStream.js +127 -157
  101. package/dist/core/tool/toolResultStream.js.map +1 -1
  102. package/dist/core/tool/type-path-utils.d.ts +8 -19
  103. package/dist/core/tool/type-path-utils.d.ts.map +1 -1
  104. package/dist/core/tool/type-path-utils.js +0 -2
  105. package/dist/core/utils/Counter.d.ts +6 -3
  106. package/dist/core/utils/Counter.d.ts.map +1 -1
  107. package/dist/core/utils/Counter.js +10 -6
  108. package/dist/core/utils/Counter.js.map +1 -1
  109. package/dist/core/utils/generateId.d.ts +4 -1
  110. package/dist/core/utils/generateId.d.ts.map +1 -1
  111. package/dist/core/utils/generateId.js +5 -1
  112. package/dist/core/utils/generateId.js.map +1 -1
  113. package/dist/core/utils/stream/AssistantMetaTransformStream.d.ts +15 -11
  114. package/dist/core/utils/stream/AssistantMetaTransformStream.d.ts.map +1 -1
  115. package/dist/core/utils/stream/AssistantMetaTransformStream.js +38 -42
  116. package/dist/core/utils/stream/AssistantMetaTransformStream.js.map +1 -1
  117. package/dist/core/utils/stream/AssistantTransformStream.d.ts +11 -8
  118. package/dist/core/utils/stream/AssistantTransformStream.d.ts.map +1 -1
  119. package/dist/core/utils/stream/AssistantTransformStream.js +37 -35
  120. package/dist/core/utils/stream/AssistantTransformStream.js.map +1 -1
  121. package/dist/core/utils/stream/LineDecoderStream.d.ts +6 -3
  122. package/dist/core/utils/stream/LineDecoderStream.d.ts.map +1 -1
  123. package/dist/core/utils/stream/LineDecoderStream.js +23 -26
  124. package/dist/core/utils/stream/LineDecoderStream.js.map +1 -1
  125. package/dist/core/utils/stream/PipeableTransformStream.d.ts +5 -2
  126. package/dist/core/utils/stream/PipeableTransformStream.d.ts.map +1 -1
  127. package/dist/core/utils/stream/PipeableTransformStream.js +14 -10
  128. package/dist/core/utils/stream/PipeableTransformStream.js.map +1 -1
  129. package/dist/core/utils/stream/SSE.d.ts +10 -6
  130. package/dist/core/utils/stream/SSE.d.ts.map +1 -1
  131. package/dist/core/utils/stream/SSE.js +79 -91
  132. package/dist/core/utils/stream/SSE.js.map +1 -1
  133. package/dist/core/utils/stream/UnderlyingReadable.d.ts +7 -4
  134. package/dist/core/utils/stream/UnderlyingReadable.d.ts.map +1 -1
  135. package/dist/core/utils/stream/UnderlyingReadable.js +0 -2
  136. package/dist/core/utils/stream/merge.d.ts +11 -7
  137. package/dist/core/utils/stream/merge.d.ts.map +1 -1
  138. package/dist/core/utils/stream/merge.js +68 -170
  139. package/dist/core/utils/stream/merge.js.map +1 -1
  140. package/dist/core/utils/stream/path-utils.d.ts +11 -7
  141. package/dist/core/utils/stream/path-utils.d.ts.map +1 -1
  142. package/dist/core/utils/stream/path-utils.js +46 -52
  143. package/dist/core/utils/stream/path-utils.js.map +1 -1
  144. package/dist/core/utils/types.d.ts +109 -113
  145. package/dist/core/utils/types.d.ts.map +1 -1
  146. package/dist/core/utils/types.js +0 -2
  147. package/dist/core/utils/withPromiseOrValue.d.ts +4 -1
  148. package/dist/core/utils/withPromiseOrValue.d.ts.map +1 -1
  149. package/dist/core/utils/withPromiseOrValue.js +12 -15
  150. package/dist/core/utils/withPromiseOrValue.js.map +1 -1
  151. package/dist/index.d.ts +23 -24
  152. package/dist/index.js +16 -16
  153. package/dist/node_modules/.pnpm/@types_json-schema@7.0.15/node_modules/@types/json-schema/index.d.ts +141 -0
  154. package/dist/node_modules/.pnpm/@types_json-schema@7.0.15/node_modules/@types/json-schema/index.d.ts.map +1 -0
  155. package/dist/resumable/ResumableStreamContext.d.ts +28 -24
  156. package/dist/resumable/ResumableStreamContext.d.ts.map +1 -1
  157. package/dist/resumable/ResumableStreamContext.js +99 -114
  158. package/dist/resumable/ResumableStreamContext.js.map +1 -1
  159. package/dist/resumable/constants.d.ts +4 -1
  160. package/dist/resumable/constants.d.ts.map +1 -1
  161. package/dist/resumable/constants.js +5 -1
  162. package/dist/resumable/constants.js.map +1 -1
  163. package/dist/resumable/createResumableAssistantStreamResponse.d.ts +22 -21
  164. package/dist/resumable/createResumableAssistantStreamResponse.d.ts.map +1 -1
  165. package/dist/resumable/createResumableAssistantStreamResponse.js +25 -32
  166. package/dist/resumable/createResumableAssistantStreamResponse.js.map +1 -1
  167. package/dist/resumable/errors.d.ts +8 -5
  168. package/dist/resumable/errors.d.ts.map +1 -1
  169. package/dist/resumable/errors.js +14 -12
  170. package/dist/resumable/errors.js.map +1 -1
  171. package/dist/resumable/index.d.ts +7 -7
  172. package/dist/resumable/index.js +5 -5
  173. package/dist/resumable/stores/InMemoryResumableStreamStore.d.ts +14 -10
  174. package/dist/resumable/stores/InMemoryResumableStreamStore.d.ts.map +1 -1
  175. package/dist/resumable/stores/InMemoryResumableStreamStore.js +159 -193
  176. package/dist/resumable/stores/InMemoryResumableStreamStore.js.map +1 -1
  177. package/dist/resumable/stores/ioredis.d.ts +9 -5
  178. package/dist/resumable/stores/ioredis.d.ts.map +1 -1
  179. package/dist/resumable/stores/ioredis.js +70 -82
  180. package/dist/resumable/stores/ioredis.js.map +1 -1
  181. package/dist/resumable/stores/redis-impl.d.ts +51 -48
  182. package/dist/resumable/stores/redis-impl.d.ts.map +1 -1
  183. package/dist/resumable/stores/redis-impl.js +176 -176
  184. package/dist/resumable/stores/redis-impl.js.map +1 -1
  185. package/dist/resumable/stores/redis.d.ts +31 -28
  186. package/dist/resumable/stores/redis.d.ts.map +1 -1
  187. package/dist/resumable/stores/redis.js +87 -95
  188. package/dist/resumable/stores/redis.js.map +1 -1
  189. package/dist/resumable/types.d.ts +29 -26
  190. package/dist/resumable/types.d.ts.map +1 -1
  191. package/dist/resumable/types.js +0 -2
  192. package/dist/utils/AsyncIterableStream.d.ts +5 -2
  193. package/dist/utils/AsyncIterableStream.d.ts.map +1 -1
  194. package/dist/utils/AsyncIterableStream.js +17 -16
  195. package/dist/utils/AsyncIterableStream.js.map +1 -1
  196. package/dist/utils/json/fix-json.d.ts +4 -1
  197. package/dist/utils/json/fix-json.d.ts.map +1 -1
  198. package/dist/utils/json/fix-json.js +286 -380
  199. package/dist/utils/json/fix-json.js.map +1 -1
  200. package/dist/utils/json/is-json.d.ts +8 -4
  201. package/dist/utils/json/is-json.d.ts.map +1 -1
  202. package/dist/utils/json/is-json.js +13 -21
  203. package/dist/utils/json/is-json.js.map +1 -1
  204. package/dist/utils/json/json-value.d.ts +7 -4
  205. package/dist/utils/json/json-value.d.ts.map +1 -1
  206. package/dist/utils/json/json-value.js +0 -2
  207. package/dist/utils/json/parse-partial-json-object.d.ts +11 -8
  208. package/dist/utils/json/parse-partial-json-object.d.ts.map +1 -1
  209. package/dist/utils/json/parse-partial-json-object.js +50 -62
  210. package/dist/utils/json/parse-partial-json-object.js.map +1 -1
  211. package/dist/utils/promiseWithResolvers.d.ts +7 -4
  212. package/dist/utils/promiseWithResolvers.d.ts.map +1 -1
  213. package/dist/utils/promiseWithResolvers.js +17 -10
  214. package/dist/utils/promiseWithResolvers.js.map +1 -1
  215. package/dist/utils.d.ts +6 -6
  216. package/dist/utils.js +5 -5
  217. package/package.json +3 -3
  218. package/dist/core/AssistantStreamChunk.js.map +0 -1
  219. package/dist/core/object/types.js.map +0 -1
  220. package/dist/core/serialization/ui-message-stream/chunk-types.js.map +0 -1
  221. package/dist/core/tool/tool-types.js.map +0 -1
  222. package/dist/core/tool/type-path-utils.js.map +0 -1
  223. package/dist/core/utils/stream/UnderlyingReadable.js.map +0 -1
  224. package/dist/core/utils/types.js.map +0 -1
  225. package/dist/index.d.ts.map +0 -1
  226. package/dist/index.js.map +0 -1
  227. package/dist/resumable/index.d.ts.map +0 -1
  228. package/dist/resumable/index.js.map +0 -1
  229. package/dist/resumable/types.js.map +0 -1
  230. package/dist/utils/json/json-value.js.map +0 -1
  231. package/dist/utils.d.ts.map +0 -1
  232. package/dist/utils.js.map +0 -1
@@ -1,113 +1,105 @@
1
- import { RedisResumableStreamStore, } from "./redis-impl.js";
1
+ import { RedisResumableStreamStore } from "./redis-impl.js";
2
+ //#region src/resumable/stores/redis.ts
2
3
  const RESP_BLOB_STRING = 36;
3
4
  /**
4
- * Resumable stream store backed by [`redis`](https://www.npmjs.com/package/redis)
5
- * v5. Expects a connected client; cluster routing relies on the shared
6
- * `{streamId}` hash tag baked into the key scheme.
7
- */
8
- export function createRedisResumableStreamStore(client, options) {
9
- return new RedisResumableStreamStore(adapt(client), options);
5
+ * Resumable stream store backed by [`redis`](https://www.npmjs.com/package/redis)
6
+ * v5. Expects a connected client; cluster routing relies on the shared
7
+ * `{streamId}` hash tag baked into the key scheme.
8
+ */
9
+ function createRedisResumableStreamStore(client, options) {
10
+ return new RedisResumableStreamStore(adapt(client), options);
10
11
  }
11
12
  function adapt(client) {
12
- return {
13
- async setNX(key, value, ttlSec) {
14
- const result = await client.set(key, value, { NX: true, EX: ttlSec });
15
- return result === "OK";
16
- },
17
- async set(key, value, ttlSec) {
18
- await client.set(key, value, { EX: ttlSec });
19
- },
20
- async get(key) {
21
- return client.get(key);
22
- },
23
- async expire(key, ttlSec) {
24
- await client.expire(key, ttlSec);
25
- },
26
- async exists(key) {
27
- const result = await client.exists(key);
28
- return result > 0;
29
- },
30
- async del(keys) {
31
- if (keys.length === 0)
32
- return;
33
- await client.del(keys.length === 1 ? keys[0] : keys);
34
- },
35
- async xAdd(key, fields) {
36
- return client.xAdd(key, "*", toNodeFields(fields));
37
- },
38
- async xRange(key, start, end) {
39
- const reply = await client.sendCommand(["XRANGE", key, start, end], { typeMapping: { [RESP_BLOB_STRING]: Buffer } });
40
- return parseXRangeReply(reply);
41
- },
42
- async pipeline(commands) {
43
- if (commands.length === 0)
44
- return;
45
- let chain = client.multi();
46
- for (const cmd of commands) {
47
- chain = applyPipelineCommand(chain, cmd);
48
- }
49
- await chain.execAsPipeline();
50
- },
51
- };
13
+ return {
14
+ async setNX(key, value, ttlSec) {
15
+ return await client.set(key, value, {
16
+ NX: true,
17
+ EX: ttlSec
18
+ }) === "OK";
19
+ },
20
+ async set(key, value, ttlSec) {
21
+ await client.set(key, value, { EX: ttlSec });
22
+ },
23
+ async get(key) {
24
+ return client.get(key);
25
+ },
26
+ async expire(key, ttlSec) {
27
+ await client.expire(key, ttlSec);
28
+ },
29
+ async exists(key) {
30
+ return await client.exists(key) > 0;
31
+ },
32
+ async del(keys) {
33
+ if (keys.length === 0) return;
34
+ await client.del(keys.length === 1 ? keys[0] : keys);
35
+ },
36
+ async xAdd(key, fields) {
37
+ return client.xAdd(key, "*", toNodeFields(fields));
38
+ },
39
+ async xRange(key, start, end) {
40
+ return parseXRangeReply(await client.sendCommand([
41
+ "XRANGE",
42
+ key,
43
+ start,
44
+ end
45
+ ], { typeMapping: { [RESP_BLOB_STRING]: Buffer } }));
46
+ },
47
+ async pipeline(commands) {
48
+ if (commands.length === 0) return;
49
+ let chain = client.multi();
50
+ for (const cmd of commands) chain = applyPipelineCommand(chain, cmd);
51
+ await chain.execAsPipeline();
52
+ }
53
+ };
52
54
  }
53
55
  function applyPipelineCommand(chain, cmd) {
54
- switch (cmd.type) {
55
- case "xAdd":
56
- return chain.xAdd(cmd.key, "*", toNodeFields(cmd.fields));
57
- case "expire":
58
- return chain.expire(cmd.key, cmd.ttlSec);
59
- case "set":
60
- return chain.set(cmd.key, cmd.value, { EX: cmd.ttlSec });
61
- }
56
+ switch (cmd.type) {
57
+ case "xAdd": return chain.xAdd(cmd.key, "*", toNodeFields(cmd.fields));
58
+ case "expire": return chain.expire(cmd.key, cmd.ttlSec);
59
+ case "set": return chain.set(cmd.key, cmd.value, { EX: cmd.ttlSec });
60
+ }
62
61
  }
63
62
  function toNodeFields(fields) {
64
- const out = {};
65
- for (const [k, v] of Object.entries(fields)) {
66
- out[k] = typeof v === "string" ? v : toBuffer(v);
67
- }
68
- return out;
63
+ const out = {};
64
+ for (const [k, v] of Object.entries(fields)) out[k] = typeof v === "string" ? v : toBuffer(v);
65
+ return out;
69
66
  }
70
67
  function toBuffer(bytes) {
71
- if (Buffer.isBuffer(bytes))
72
- return bytes;
73
- return Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength);
68
+ if (Buffer.isBuffer(bytes)) return bytes;
69
+ return Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength);
74
70
  }
75
71
  function parseXRangeReply(reply) {
76
- if (!Array.isArray(reply))
77
- return [];
78
- const out = [];
79
- for (const entry of reply) {
80
- if (!Array.isArray(entry) || entry.length < 2)
81
- continue;
82
- const [rawId, rawFields] = entry;
83
- const id = bufferOrStringToString(rawId);
84
- if (id === undefined || !Array.isArray(rawFields))
85
- continue;
86
- const fields = {};
87
- for (let i = 0; i + 1 < rawFields.length; i += 2) {
88
- const fieldKey = bufferOrStringToString(rawFields[i]);
89
- const fieldValue = rawFields[i + 1];
90
- if (fieldKey === undefined || fieldValue === undefined)
91
- continue;
92
- fields[fieldKey] = bufferOrStringToBytes(fieldValue);
93
- }
94
- out.push({ id, fields });
95
- }
96
- return out;
72
+ if (!Array.isArray(reply)) return [];
73
+ const out = [];
74
+ for (const entry of reply) {
75
+ if (!Array.isArray(entry) || entry.length < 2) continue;
76
+ const [rawId, rawFields] = entry;
77
+ const id = bufferOrStringToString(rawId);
78
+ if (id === void 0 || !Array.isArray(rawFields)) continue;
79
+ const fields = {};
80
+ for (let i = 0; i + 1 < rawFields.length; i += 2) {
81
+ const fieldKey = bufferOrStringToString(rawFields[i]);
82
+ const fieldValue = rawFields[i + 1];
83
+ if (fieldKey === void 0 || fieldValue === void 0) continue;
84
+ fields[fieldKey] = bufferOrStringToBytes(fieldValue);
85
+ }
86
+ out.push({
87
+ id,
88
+ fields
89
+ });
90
+ }
91
+ return out;
97
92
  }
98
93
  function bufferOrStringToString(value) {
99
- if (typeof value === "string")
100
- return value;
101
- if (Buffer.isBuffer(value))
102
- return value.toString("utf8");
103
- return undefined;
94
+ if (typeof value === "string") return value;
95
+ if (Buffer.isBuffer(value)) return value.toString("utf8");
104
96
  }
105
97
  function bufferOrStringToBytes(value) {
106
- if (typeof value === "string")
107
- return value;
108
- if (Buffer.isBuffer(value)) {
109
- return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
110
- }
111
- return "";
98
+ if (typeof value === "string") return value;
99
+ if (Buffer.isBuffer(value)) return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
100
+ return "";
112
101
  }
102
+ //#endregion
103
+ export { createRedisResumableStreamStore };
104
+
113
105
  //# sourceMappingURL=redis.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"redis.js","sourceRoot":"","sources":["../../../src/resumable/stores/redis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redis.js","names":[],"sources":["../../../src/resumable/stores/redis.ts"],"sourcesContent":["import {\n RedisResumableStreamStore,\n type PipelineCommand,\n type RedisLikeClient,\n type RedisResumableStreamStoreOptions,\n} from \"./redis-impl\";\nimport type { ResumableStreamStore } from \"../types\";\n\nconst RESP_BLOB_STRING = 36;\n\ntype NodeRedisFields = Record<string, string | Buffer>;\n\ninterface NodeRedisMultiCommand {\n xAdd(key: string, id: string, fields: NodeRedisFields): NodeRedisMultiCommand;\n expire(key: string, seconds: number): NodeRedisMultiCommand;\n set(\n key: string,\n value: string,\n options: { EX: number },\n ): NodeRedisMultiCommand;\n execAsPipeline(): Promise<unknown>;\n exec(): Promise<unknown>;\n}\n\n/** Structural subset of node-redis v5 used by the adapter. */\nexport interface NodeRedisLike {\n set(\n key: string,\n value: string,\n options: { NX: true; EX: number },\n ): Promise<string | null>;\n set(\n key: string,\n value: string,\n options: { EX: number },\n ): Promise<string | null>;\n get(key: string): Promise<string | null>;\n expire(key: string, seconds: number): Promise<unknown>;\n exists(key: string): Promise<number>;\n del(keys: string | string[]): Promise<unknown>;\n xAdd(key: string, id: string, fields: NodeRedisFields): Promise<string>;\n sendCommand<T = unknown>(\n args: ReadonlyArray<string | Buffer>,\n options?: { typeMapping?: Record<number, unknown> },\n ): Promise<T>;\n multi(): NodeRedisMultiCommand;\n}\n\n/**\n * Resumable stream store backed by [`redis`](https://www.npmjs.com/package/redis)\n * v5. Expects a connected client; cluster routing relies on the shared\n * `{streamId}` hash tag baked into the key scheme.\n */\nexport function createRedisResumableStreamStore(\n client: NodeRedisLike,\n options?: RedisResumableStreamStoreOptions,\n): ResumableStreamStore {\n return new RedisResumableStreamStore(adapt(client), options);\n}\n\nfunction adapt(client: NodeRedisLike): RedisLikeClient {\n return {\n async setNX(key, value, ttlSec) {\n const result = await client.set(key, value, { NX: true, EX: ttlSec });\n return result === \"OK\";\n },\n async set(key, value, ttlSec) {\n await client.set(key, value, { EX: ttlSec });\n },\n async get(key) {\n return client.get(key);\n },\n async expire(key, ttlSec) {\n await client.expire(key, ttlSec);\n },\n async exists(key) {\n const result = await client.exists(key);\n return result > 0;\n },\n async del(keys) {\n if (keys.length === 0) return;\n await client.del(keys.length === 1 ? keys[0]! : keys);\n },\n async xAdd(key, fields) {\n return client.xAdd(key, \"*\", toNodeFields(fields));\n },\n async xRange(key, start, end) {\n const reply = await client.sendCommand<unknown>(\n [\"XRANGE\", key, start, end],\n { typeMapping: { [RESP_BLOB_STRING]: Buffer } },\n );\n return parseXRangeReply(reply);\n },\n async pipeline(commands) {\n if (commands.length === 0) return;\n let chain = client.multi();\n for (const cmd of commands) {\n chain = applyPipelineCommand(chain, cmd);\n }\n await chain.execAsPipeline();\n },\n };\n}\n\nfunction applyPipelineCommand(\n chain: NodeRedisMultiCommand,\n cmd: PipelineCommand,\n): NodeRedisMultiCommand {\n switch (cmd.type) {\n case \"xAdd\":\n return chain.xAdd(cmd.key, \"*\", toNodeFields(cmd.fields));\n case \"expire\":\n return chain.expire(cmd.key, cmd.ttlSec);\n case \"set\":\n return chain.set(cmd.key, cmd.value, { EX: cmd.ttlSec });\n }\n}\n\nfunction toNodeFields(\n fields: Record<string, string | Uint8Array>,\n): NodeRedisFields {\n const out: NodeRedisFields = {};\n for (const [k, v] of Object.entries(fields)) {\n out[k] = typeof v === \"string\" ? v : toBuffer(v);\n }\n return out;\n}\n\nfunction toBuffer(bytes: Uint8Array): Buffer {\n if (Buffer.isBuffer(bytes)) return bytes;\n return Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n}\n\nfunction parseXRangeReply(\n reply: unknown,\n): Array<{ id: string; fields: Record<string, string | Uint8Array> }> {\n if (!Array.isArray(reply)) return [];\n const out: Array<{\n id: string;\n fields: Record<string, string | Uint8Array>;\n }> = [];\n for (const entry of reply) {\n if (!Array.isArray(entry) || entry.length < 2) continue;\n const [rawId, rawFields] = entry as [unknown, unknown];\n const id = bufferOrStringToString(rawId);\n if (id === undefined || !Array.isArray(rawFields)) continue;\n const fields: Record<string, string | Uint8Array> = {};\n for (let i = 0; i + 1 < rawFields.length; i += 2) {\n const fieldKey = bufferOrStringToString(rawFields[i]);\n const fieldValue = rawFields[i + 1];\n if (fieldKey === undefined || fieldValue === undefined) continue;\n fields[fieldKey] = bufferOrStringToBytes(fieldValue);\n }\n out.push({ id, fields });\n }\n return out;\n}\n\nfunction bufferOrStringToString(value: unknown): string | undefined {\n if (typeof value === \"string\") return value;\n if (Buffer.isBuffer(value)) return value.toString(\"utf8\");\n return undefined;\n}\n\nfunction bufferOrStringToBytes(value: unknown): string | Uint8Array {\n if (typeof value === \"string\") return value;\n if (Buffer.isBuffer(value)) {\n return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);\n }\n return \"\";\n}\n"],"mappings":"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"}
@@ -1,30 +1,33 @@
1
- export type ResumableStreamRole = "producer" | "consumer";
2
- export type ResumableStreamStatus = "streaming" | "done" | "error" | "missing";
3
- export type ResumableStreamEntry = {
4
- readonly cursor: string;
5
- readonly chunk: Uint8Array;
1
+ //#region src/resumable/types.d.ts
2
+ type ResumableStreamRole = "producer" | "consumer";
3
+ type ResumableStreamStatus = "streaming" | "done" | "error" | "missing";
4
+ type ResumableStreamEntry = {
5
+ readonly cursor: string;
6
+ readonly chunk: Uint8Array;
6
7
  };
7
- export type ResumableStreamAcquireOptions = {
8
- readonly ttlMs?: number;
8
+ type ResumableStreamAcquireOptions = {
9
+ readonly ttlMs?: number;
9
10
  };
10
- export interface ResumableStreamStore {
11
- /**
12
- * Atomic election. The first caller for a given `streamId` observes
13
- * `"producer"`; every later caller observes `"consumer"`, including those
14
- * arriving after `finalize`.
15
- */
16
- acquire(streamId: string, options?: ResumableStreamAcquireOptions): Promise<ResumableStreamRole>;
17
- /** Implementations should refresh the TTL on each call. */
18
- append(streamId: string, chunk: Uint8Array): Promise<void>;
19
- finalize(streamId: string, status: "done" | "error", error?: string): Promise<void>;
20
- /**
21
- * Yields persisted entries strictly after `cursor` (`""` starts from the
22
- * beginning), then waits for new ones until the stream is finalized.
23
- * Aborting `signal` resolves the iterable without throwing.
24
- */
25
- read(streamId: string, cursor: string, signal: AbortSignal): AsyncIterable<ResumableStreamEntry>;
26
- status(streamId: string): Promise<ResumableStreamStatus>;
27
- /** Active readers terminate. No-op when the stream does not exist. */
28
- delete(streamId: string): Promise<void>;
11
+ interface ResumableStreamStore {
12
+ /**
13
+ * Atomic election. The first caller for a given `streamId` observes
14
+ * `"producer"`; every later caller observes `"consumer"`, including those
15
+ * arriving after `finalize`.
16
+ */
17
+ acquire(streamId: string, options?: ResumableStreamAcquireOptions): Promise<ResumableStreamRole>;
18
+ /** Implementations should refresh the TTL on each call. */
19
+ append(streamId: string, chunk: Uint8Array): Promise<void>;
20
+ finalize(streamId: string, status: "done" | "error", error?: string): Promise<void>;
21
+ /**
22
+ * Yields persisted entries strictly after `cursor` (`""` starts from the
23
+ * beginning), then waits for new ones until the stream is finalized.
24
+ * Aborting `signal` resolves the iterable without throwing.
25
+ */
26
+ read(streamId: string, cursor: string, signal: AbortSignal): AsyncIterable<ResumableStreamEntry>;
27
+ status(streamId: string): Promise<ResumableStreamStatus>;
28
+ /** Active readers terminate. No-op when the stream does not exist. */
29
+ delete(streamId: string): Promise<void>;
29
30
  }
31
+ //#endregion
32
+ export { ResumableStreamAcquireOptions, ResumableStreamEntry, ResumableStreamRole, ResumableStreamStatus, ResumableStreamStore };
30
33
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/resumable/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,UAAU,CAAC;AAE1D,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAE/E,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,OAAO,CACL,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,6BAA6B,GACtC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEhC,2DAA2D;IAC3D,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D,QAAQ,CACN,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GAAG,OAAO,EACxB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;OAIG;IACH,IAAI,CACF,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,GAClB,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAEvC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAEzD,sEAAsE;IACtE,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/resumable/types.ts"],"mappings":";KAAY,mBAAA;AAAA,KAEA,qBAAA;AAAA,KAEA,oBAAA;EAAA,SACD,MAAA;EAAA,SACA,KAAA,EAAO,UAAU;AAAA;AAAA,KAGhB,6BAAA;EAAA,SACD,KAAK;AAAA;AAAA,UAGC,oBAAA;EAXgB;AAEjC;;;;EAeE,OAAA,CACE,QAAA,UACA,OAAA,GAAU,6BAAA,GACT,OAAA,CAAQ,mBAAA;EAhBF;EAmBT,MAAA,CAAO,QAAA,UAAkB,KAAA,EAAO,UAAA,GAAa,OAAA;EAE7C,QAAA,CACE,QAAA,UACA,MAAA,oBACA,KAAA,YACC,OAAA;EAzBuB;AAG5B;;;;EA6BE,IAAA,CACE,QAAA,UACA,MAAA,UACA,MAAA,EAAQ,WAAA,GACP,aAAA,CAAc,oBAAA;EAEjB,MAAA,CAAO,QAAA,WAAmB,OAAA,CAAQ,qBAAA;EA/BC;EAkCnC,MAAA,CAAO,QAAA,WAAmB,OAAA;AAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1,3 +1,6 @@
1
- export type AsyncIterableStream<T> = AsyncIterable<T> & ReadableStream<T>;
2
- export declare function asAsyncIterableStream<T>(source: ReadableStream<T>): AsyncIterableStream<T>;
1
+ //#region src/utils/AsyncIterableStream.d.ts
2
+ type AsyncIterableStream<T> = AsyncIterable<T> & ReadableStream<T>;
3
+ declare function asAsyncIterableStream<T>(source: ReadableStream<T>): AsyncIterableStream<T>;
4
+ //#endregion
5
+ export { AsyncIterableStream, asAsyncIterableStream };
3
6
  //# sourceMappingURL=AsyncIterableStream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AsyncIterableStream.d.ts","sourceRoot":"","sources":["../../src/utils/AsyncIterableStream.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AAiB1E,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,GACxB,mBAAmB,CAAC,CAAC,CAAC,CAIxB"}
1
+ {"version":3,"file":"AsyncIterableStream.d.ts","names":[],"sources":["../../src/utils/AsyncIterableStream.ts"],"mappings":";KAAY,mBAAA,MAAyB,aAAA,CAAc,CAAA,IAAK,cAAA,CAAe,CAAA;AAAA,iBAiBvD,qBAAA,GAAA,CACd,MAAA,EAAQ,cAAA,CAAe,CAAA,IACtB,mBAAA,CAAoB,CAAA"}
@@ -1,20 +1,21 @@
1
+ //#region src/utils/AsyncIterableStream.ts
1
2
  async function* streamGeneratorPolyfill() {
2
- const reader = this.getReader();
3
- try {
4
- while (true) {
5
- const { done, value } = await reader.read();
6
- if (done)
7
- break;
8
- yield value;
9
- }
10
- }
11
- finally {
12
- reader.releaseLock();
13
- }
3
+ const reader = this.getReader();
4
+ try {
5
+ while (true) {
6
+ const { done, value } = await reader.read();
7
+ if (done) break;
8
+ yield value;
9
+ }
10
+ } finally {
11
+ reader.releaseLock();
12
+ }
14
13
  }
15
- export function asAsyncIterableStream(source) {
16
- source[Symbol.asyncIterator] ??=
17
- streamGeneratorPolyfill;
18
- return source;
14
+ function asAsyncIterableStream(source) {
15
+ source[Symbol.asyncIterator] ??= streamGeneratorPolyfill;
16
+ return source;
19
17
  }
18
+ //#endregion
19
+ export { asAsyncIterableStream };
20
+
20
21
  //# sourceMappingURL=AsyncIterableStream.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AsyncIterableStream.js","sourceRoot":"","sources":["../../src/utils/AsyncIterableStream.ts"],"names":[],"mappings":"AAEA,KAAK,SAAS,CAAC,CAAC,uBAAuB;IAGrC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAChC,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI;gBAAE,MAAM;YAChB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAAyB;IAExB,MAAiC,CAAC,MAAM,CAAC,aAAa,CAAC;QACtD,uBAAuB,CAAC;IAC1B,OAAO,MAAgC,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"AsyncIterableStream.js","names":[],"sources":["../../src/utils/AsyncIterableStream.ts"],"sourcesContent":["export type AsyncIterableStream<T> = AsyncIterable<T> & ReadableStream<T>;\n\nasync function* streamGeneratorPolyfill<T>(\n this: ReadableStream<T>,\n): AsyncGenerator<T, undefined, unknown> {\n const reader = this.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n yield value;\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nexport function asAsyncIterableStream<T>(\n source: ReadableStream<T>,\n): AsyncIterableStream<T> {\n (source as AsyncIterableStream<T>)[Symbol.asyncIterator] ??=\n streamGeneratorPolyfill;\n return source as AsyncIterableStream<T>;\n}\n"],"mappings":";AAEA,gBAAgB,0BAEyB;CACvC,MAAM,SAAS,KAAK,UAAU;CAC9B,IAAI;EACF,OAAO,MAAM;GACX,MAAM,EAAE,MAAM,UAAU,MAAM,OAAO,KAAK;GAC1C,IAAI,MAAM;GACV,MAAM;EACR;CACF,UAAU;EACR,OAAO,YAAY;CACrB;AACF;AAEA,SAAgB,sBACd,QACwB;CACxB,OAAmC,OAAO,mBACxC;CACF,OAAO;AACT"}
@@ -1,2 +1,5 @@
1
- export declare function fixJson(input: string): [string, string[]];
1
+ //#region src/utils/json/fix-json.d.ts
2
+ declare function fixJson(input: string): [string, string[]];
3
+ //#endregion
4
+ export { fixJson };
2
5
  //# sourceMappingURL=fix-json.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fix-json.d.ts","sourceRoot":"","sources":["../../../src/utils/json/fix-json.ts"],"names":[],"mappings":"AA+DA,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAsazD"}
1
+ {"version":3,"file":"fix-json.d.ts","names":[],"sources":["../../../src/utils/json/fix-json.ts"],"mappings":";iBA+DgB,OAAA,CAAQ,KAAa"}