@laserdata/laser-sdk 0.5.3 → 0.6.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 (356) hide show
  1. package/README.md +105 -79
  2. package/dist/agent/agdx.d.ts +8 -3
  3. package/dist/agent/agdx.d.ts.map +1 -1
  4. package/dist/agent/agdx.js +39 -22
  5. package/dist/agent/agdx.js.map +1 -1
  6. package/dist/agent/builder.d.ts +25 -15
  7. package/dist/agent/builder.d.ts.map +1 -1
  8. package/dist/agent/builder.js +103 -59
  9. package/dist/agent/builder.js.map +1 -1
  10. package/dist/agent/context.d.ts +3 -6
  11. package/dist/agent/context.d.ts.map +1 -1
  12. package/dist/agent/context.js +17 -9
  13. package/dist/agent/context.js.map +1 -1
  14. package/dist/agent/contract.d.ts +2 -2
  15. package/dist/agent/contract.d.ts.map +1 -1
  16. package/dist/agent/contract.js +10 -6
  17. package/dist/agent/contract.js.map +1 -1
  18. package/dist/agent/memory-handler.d.ts +25 -0
  19. package/dist/agent/memory-handler.d.ts.map +1 -0
  20. package/dist/agent/memory-handler.js +43 -0
  21. package/dist/agent/memory-handler.js.map +1 -0
  22. package/dist/agent/registry.d.ts +3 -10
  23. package/dist/agent/registry.d.ts.map +1 -1
  24. package/dist/agent/registry.js +22 -19
  25. package/dist/agent/registry.js.map +1 -1
  26. package/dist/agent/reliable-consumer.d.ts +19 -9
  27. package/dist/agent/reliable-consumer.d.ts.map +1 -1
  28. package/dist/agent/reliable-consumer.js +193 -54
  29. package/dist/agent/reliable-consumer.js.map +1 -1
  30. package/dist/agent/replies.d.ts +6 -0
  31. package/dist/agent/replies.d.ts.map +1 -1
  32. package/dist/agent/replies.js +55 -4
  33. package/dist/agent/replies.js.map +1 -1
  34. package/dist/agent/router.d.ts +1 -1
  35. package/dist/agent/router.d.ts.map +1 -1
  36. package/dist/agent/router.js +5 -19
  37. package/dist/agent/router.js.map +1 -1
  38. package/dist/agent/scope.d.ts +7 -3
  39. package/dist/agent/scope.d.ts.map +1 -1
  40. package/dist/agent/scope.js +11 -1
  41. package/dist/agent/scope.js.map +1 -1
  42. package/dist/agent/timer.d.ts +6 -0
  43. package/dist/agent/timer.d.ts.map +1 -0
  44. package/dist/agent/timer.js +21 -0
  45. package/dist/agent/timer.js.map +1 -0
  46. package/dist/agent/workflow.d.ts +16 -19
  47. package/dist/agent/workflow.d.ts.map +1 -1
  48. package/dist/agent/workflow.js +17 -6
  49. package/dist/agent/workflow.js.map +1 -1
  50. package/dist/blob.d.ts +2 -3
  51. package/dist/blob.d.ts.map +1 -1
  52. package/dist/blob.js.map +1 -1
  53. package/dist/bridges/a2a.d.ts +34 -23
  54. package/dist/bridges/a2a.d.ts.map +1 -1
  55. package/dist/bridges/a2a.js +29 -19
  56. package/dist/bridges/a2a.js.map +1 -1
  57. package/dist/bridges/hops.d.ts +1 -1
  58. package/dist/bridges/hops.d.ts.map +1 -1
  59. package/dist/bridges/hops.js +1 -1
  60. package/dist/bridges/hops.js.map +1 -1
  61. package/dist/bridges/mcp.d.ts +27 -7
  62. package/dist/bridges/mcp.d.ts.map +1 -1
  63. package/dist/bridges/mcp.js +24 -9
  64. package/dist/bridges/mcp.js.map +1 -1
  65. package/dist/client/bytes.d.ts +5 -0
  66. package/dist/client/bytes.d.ts.map +1 -1
  67. package/dist/client/bytes.js +15 -0
  68. package/dist/client/bytes.js.map +1 -1
  69. package/dist/client/capabilities.d.ts +25 -13
  70. package/dist/client/capabilities.d.ts.map +1 -1
  71. package/dist/client/capabilities.js +145 -123
  72. package/dist/client/capabilities.js.map +1 -1
  73. package/dist/client/error-classify.d.ts +57 -0
  74. package/dist/client/error-classify.d.ts.map +1 -0
  75. package/dist/client/error-classify.js +347 -0
  76. package/dist/client/error-classify.js.map +1 -0
  77. package/dist/client/errors.d.ts +113 -40
  78. package/dist/client/errors.d.ts.map +1 -1
  79. package/dist/client/errors.js +191 -53
  80. package/dist/client/errors.js.map +1 -1
  81. package/dist/client/internals.d.ts +1 -0
  82. package/dist/client/internals.d.ts.map +1 -1
  83. package/dist/client/internals.js +1 -0
  84. package/dist/client/internals.js.map +1 -1
  85. package/dist/client/laser.d.ts +62 -46
  86. package/dist/client/laser.d.ts.map +1 -1
  87. package/dist/client/laser.js +206 -120
  88. package/dist/client/laser.js.map +1 -1
  89. package/dist/client/managed.d.ts +3 -0
  90. package/dist/client/managed.d.ts.map +1 -1
  91. package/dist/client/managed.js +70 -3
  92. package/dist/client/managed.js.map +1 -1
  93. package/dist/context-scope.d.ts +25 -9
  94. package/dist/context-scope.d.ts.map +1 -1
  95. package/dist/context-scope.js +36 -9
  96. package/dist/context-scope.js.map +1 -1
  97. package/dist/context.d.ts +33 -16
  98. package/dist/context.d.ts.map +1 -1
  99. package/dist/context.js +174 -95
  100. package/dist/context.js.map +1 -1
  101. package/dist/conversation-state.d.ts +1 -1
  102. package/dist/conversation-state.d.ts.map +1 -1
  103. package/dist/conversation-state.js +35 -16
  104. package/dist/conversation-state.js.map +1 -1
  105. package/dist/govern.d.ts +24 -5
  106. package/dist/govern.d.ts.map +1 -1
  107. package/dist/govern.js +116 -28
  108. package/dist/govern.js.map +1 -1
  109. package/dist/iggy/apache-iggy.d.ts +59 -56
  110. package/dist/iggy/apache-iggy.d.ts.map +1 -1
  111. package/dist/iggy/apache-iggy.js +300 -137
  112. package/dist/iggy/apache-iggy.js.map +1 -1
  113. package/dist/index.d.ts +97 -65
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.js +49 -30
  116. package/dist/index.js.map +1 -1
  117. package/dist/intent.d.ts +16 -2
  118. package/dist/intent.d.ts.map +1 -1
  119. package/dist/intent.js +50 -18
  120. package/dist/intent.js.map +1 -1
  121. package/dist/managed/coordination.d.ts +82 -0
  122. package/dist/managed/coordination.d.ts.map +1 -0
  123. package/dist/managed/coordination.js +367 -0
  124. package/dist/managed/coordination.js.map +1 -0
  125. package/dist/managed/destinations.d.ts +4 -3
  126. package/dist/managed/destinations.d.ts.map +1 -1
  127. package/dist/managed/destinations.js +29 -13
  128. package/dist/managed/destinations.js.map +1 -1
  129. package/dist/managed/filters.d.ts +5 -5
  130. package/dist/managed/filters.d.ts.map +1 -1
  131. package/dist/managed/filters.js +39 -22
  132. package/dist/managed/filters.js.map +1 -1
  133. package/dist/managed/forks.d.ts +8 -11
  134. package/dist/managed/forks.d.ts.map +1 -1
  135. package/dist/managed/forks.js +33 -13
  136. package/dist/managed/forks.js.map +1 -1
  137. package/dist/managed/graph.d.ts +1 -4
  138. package/dist/managed/graph.d.ts.map +1 -1
  139. package/dist/managed/graph.js +5 -3
  140. package/dist/managed/graph.js.map +1 -1
  141. package/dist/managed/kv.d.ts +26 -14
  142. package/dist/managed/kv.d.ts.map +1 -1
  143. package/dist/managed/kv.js +88 -61
  144. package/dist/managed/kv.js.map +1 -1
  145. package/dist/managed/projections.d.ts +5 -8
  146. package/dist/managed/projections.d.ts.map +1 -1
  147. package/dist/managed/projections.js +22 -2
  148. package/dist/managed/projections.js.map +1 -1
  149. package/dist/managed/query.d.ts +20 -6
  150. package/dist/managed/query.d.ts.map +1 -1
  151. package/dist/managed/query.js +97 -24
  152. package/dist/managed/query.js.map +1 -1
  153. package/dist/managed/runs.d.ts +2 -4
  154. package/dist/managed/runs.d.ts.map +1 -1
  155. package/dist/managed/runs.js +9 -1
  156. package/dist/managed/runs.js.map +1 -1
  157. package/dist/managed/watch.d.ts +2 -4
  158. package/dist/managed/watch.d.ts.map +1 -1
  159. package/dist/managed/watch.js +9 -1
  160. package/dist/managed/watch.js.map +1 -1
  161. package/dist/memory/handle.d.ts +75 -22
  162. package/dist/memory/handle.d.ts.map +1 -1
  163. package/dist/memory/handle.js +232 -58
  164. package/dist/memory/handle.js.map +1 -1
  165. package/dist/memory/log-memory.d.ts +24 -12
  166. package/dist/memory/log-memory.d.ts.map +1 -1
  167. package/dist/memory/log-memory.js +214 -100
  168. package/dist/memory/log-memory.js.map +1 -1
  169. package/dist/memory/topic.d.ts +2 -2
  170. package/dist/memory/topic.d.ts.map +1 -1
  171. package/dist/memory/topic.js +7 -5
  172. package/dist/memory/topic.js.map +1 -1
  173. package/dist/memory/types.d.ts +41 -5
  174. package/dist/memory/types.d.ts.map +1 -1
  175. package/dist/memory/types.js +44 -18
  176. package/dist/memory/types.js.map +1 -1
  177. package/dist/memory/vector-memory.d.ts +8 -6
  178. package/dist/memory/vector-memory.d.ts.map +1 -1
  179. package/dist/memory/vector-memory.js +65 -34
  180. package/dist/memory/vector-memory.js.map +1 -1
  181. package/dist/memory.d.ts +6 -5
  182. package/dist/memory.d.ts.map +1 -1
  183. package/dist/memory.js +4 -4
  184. package/dist/memory.js.map +1 -1
  185. package/dist/provenance/agent-topic.d.ts +3 -1
  186. package/dist/provenance/agent-topic.d.ts.map +1 -1
  187. package/dist/provenance/agent-topic.js +3 -1
  188. package/dist/provenance/agent-topic.js.map +1 -1
  189. package/dist/provenance/provenance.d.ts +3 -3
  190. package/dist/provenance/provenance.d.ts.map +1 -1
  191. package/dist/provenance/provenance.js +30 -18
  192. package/dist/provenance/provenance.js.map +1 -1
  193. package/dist/runtime/clock.d.ts +3 -0
  194. package/dist/runtime/clock.d.ts.map +1 -1
  195. package/dist/runtime/clock.js +16 -3
  196. package/dist/runtime/clock.js.map +1 -1
  197. package/dist/schema-codecs.d.ts +7 -3
  198. package/dist/schema-codecs.d.ts.map +1 -1
  199. package/dist/schema-codecs.js +80 -12
  200. package/dist/schema-codecs.js.map +1 -1
  201. package/dist/session.d.ts +27 -18
  202. package/dist/session.d.ts.map +1 -1
  203. package/dist/session.js +95 -37
  204. package/dist/session.js.map +1 -1
  205. package/dist/signing.d.ts +11 -5
  206. package/dist/signing.d.ts.map +1 -1
  207. package/dist/signing.js +64 -21
  208. package/dist/signing.js.map +1 -1
  209. package/dist/snapshot.d.ts +10 -2
  210. package/dist/snapshot.d.ts.map +1 -1
  211. package/dist/snapshot.js +62 -28
  212. package/dist/snapshot.js.map +1 -1
  213. package/dist/state-store.d.ts +1 -1
  214. package/dist/state-store.d.ts.map +1 -1
  215. package/dist/state-store.js.map +1 -1
  216. package/dist/stream/batching.d.ts +81 -0
  217. package/dist/stream/batching.d.ts.map +1 -0
  218. package/dist/stream/batching.js +210 -0
  219. package/dist/stream/batching.js.map +1 -0
  220. package/dist/stream/bson.d.ts +3 -0
  221. package/dist/stream/bson.d.ts.map +1 -0
  222. package/dist/stream/bson.js +245 -0
  223. package/dist/stream/bson.js.map +1 -0
  224. package/dist/stream/codecs.d.ts +58 -6
  225. package/dist/stream/codecs.d.ts.map +1 -1
  226. package/dist/stream/codecs.js +143 -59
  227. package/dist/stream/codecs.js.map +1 -1
  228. package/dist/stream/consumer-group.d.ts +13 -10
  229. package/dist/stream/consumer-group.d.ts.map +1 -1
  230. package/dist/stream/consumer-group.js +91 -31
  231. package/dist/stream/consumer-group.js.map +1 -1
  232. package/dist/stream/consumer-start.d.ts +17 -0
  233. package/dist/stream/consumer-start.d.ts.map +1 -0
  234. package/dist/stream/consumer-start.js +2 -0
  235. package/dist/stream/consumer-start.js.map +1 -0
  236. package/dist/stream/consumer.d.ts +166 -24
  237. package/dist/stream/consumer.d.ts.map +1 -1
  238. package/dist/stream/consumer.js +451 -68
  239. package/dist/stream/consumer.js.map +1 -1
  240. package/dist/stream/cursor.d.ts +5 -12
  241. package/dist/stream/cursor.d.ts.map +1 -1
  242. package/dist/stream/cursor.js +34 -8
  243. package/dist/stream/cursor.js.map +1 -1
  244. package/dist/stream/header-value.d.ts +61 -15
  245. package/dist/stream/header-value.d.ts.map +1 -1
  246. package/dist/stream/header-value.js.map +1 -1
  247. package/dist/stream/message.d.ts +17 -0
  248. package/dist/stream/message.d.ts.map +1 -0
  249. package/dist/stream/message.js +9 -0
  250. package/dist/stream/message.js.map +1 -0
  251. package/dist/stream/producer.d.ts +127 -11
  252. package/dist/stream/producer.d.ts.map +1 -1
  253. package/dist/stream/producer.js +401 -36
  254. package/dist/stream/producer.js.map +1 -1
  255. package/dist/stream/publish.d.ts +6 -15
  256. package/dist/stream/publish.d.ts.map +1 -1
  257. package/dist/stream/publish.js +18 -28
  258. package/dist/stream/publish.js.map +1 -1
  259. package/dist/stream/record.d.ts +4 -6
  260. package/dist/stream/record.d.ts.map +1 -1
  261. package/dist/stream/record.js +4 -3
  262. package/dist/stream/record.js.map +1 -1
  263. package/dist/stream/routing.d.ts +12 -0
  264. package/dist/stream/routing.d.ts.map +1 -1
  265. package/dist/stream/routing.js +6 -1
  266. package/dist/stream/routing.js.map +1 -1
  267. package/dist/stream/stream.d.ts +1 -4
  268. package/dist/stream/stream.d.ts.map +1 -1
  269. package/dist/stream/stream.js +5 -1
  270. package/dist/stream/stream.js.map +1 -1
  271. package/dist/stream/topic.d.ts +22 -23
  272. package/dist/stream/topic.d.ts.map +1 -1
  273. package/dist/stream/topic.js +90 -30
  274. package/dist/stream/topic.js.map +1 -1
  275. package/dist/stream/typed-topic.d.ts +9 -13
  276. package/dist/stream/typed-topic.d.ts.map +1 -1
  277. package/dist/stream/typed-topic.js +25 -10
  278. package/dist/stream/typed-topic.js.map +1 -1
  279. package/dist/swarm.d.ts +0 -1
  280. package/dist/swarm.d.ts.map +1 -1
  281. package/dist/swarm.js +1 -0
  282. package/dist/swarm.js.map +1 -1
  283. package/dist/testing.d.ts +3 -3
  284. package/dist/testing.d.ts.map +1 -1
  285. package/dist/testing.js +3 -3
  286. package/dist/testing.js.map +1 -1
  287. package/dist/types/ids.d.ts +17 -2
  288. package/dist/types/ids.d.ts.map +1 -1
  289. package/dist/types/ids.js +34 -14
  290. package/dist/types/ids.js.map +1 -1
  291. package/dist/wire/agent.d.ts +22 -0
  292. package/dist/wire/agent.d.ts.map +1 -1
  293. package/dist/wire/agent.js +80 -25
  294. package/dist/wire/agent.js.map +1 -1
  295. package/dist/wire/authz.d.ts +35 -1
  296. package/dist/wire/authz.d.ts.map +1 -1
  297. package/dist/wire/authz.js +45 -15
  298. package/dist/wire/authz.js.map +1 -1
  299. package/dist/wire/cbor.d.ts.map +1 -1
  300. package/dist/wire/cbor.js +13 -2
  301. package/dist/wire/cbor.js.map +1 -1
  302. package/dist/wire/checkpoint.d.ts +17 -12
  303. package/dist/wire/checkpoint.d.ts.map +1 -1
  304. package/dist/wire/checkpoint.js +28 -3
  305. package/dist/wire/checkpoint.js.map +1 -1
  306. package/dist/wire/control.d.ts +82 -0
  307. package/dist/wire/control.d.ts.map +1 -1
  308. package/dist/wire/control.js +219 -0
  309. package/dist/wire/control.js.map +1 -1
  310. package/dist/wire/filter-eval.d.ts +41 -7
  311. package/dist/wire/filter-eval.d.ts.map +1 -1
  312. package/dist/wire/filter-eval.js +26 -28
  313. package/dist/wire/filter-eval.js.map +1 -1
  314. package/dist/wire/filter.d.ts +51 -17
  315. package/dist/wire/filter.d.ts.map +1 -1
  316. package/dist/wire/filter.js +99 -10
  317. package/dist/wire/filter.js.map +1 -1
  318. package/dist/wire/fork.d.ts +14 -1
  319. package/dist/wire/fork.d.ts.map +1 -1
  320. package/dist/wire/fork.js +19 -8
  321. package/dist/wire/fork.js.map +1 -1
  322. package/dist/wire/graph.d.ts +3 -0
  323. package/dist/wire/graph.d.ts.map +1 -1
  324. package/dist/wire/graph.js +18 -4
  325. package/dist/wire/graph.js.map +1 -1
  326. package/dist/wire/hello.d.ts +4 -1
  327. package/dist/wire/hello.d.ts.map +1 -1
  328. package/dist/wire/hello.js +13 -3
  329. package/dist/wire/hello.js.map +1 -1
  330. package/dist/wire/index.d.ts +4 -1
  331. package/dist/wire/index.d.ts.map +1 -1
  332. package/dist/wire/index.js +4 -1
  333. package/dist/wire/index.js.map +1 -1
  334. package/dist/wire/kv.d.ts +37 -2
  335. package/dist/wire/kv.d.ts.map +1 -1
  336. package/dist/wire/kv.js +36 -18
  337. package/dist/wire/kv.js.map +1 -1
  338. package/dist/wire/query.d.ts +6 -0
  339. package/dist/wire/query.d.ts.map +1 -1
  340. package/dist/wire/query.js +38 -12
  341. package/dist/wire/query.js.map +1 -1
  342. package/dist/wire/schema.d.ts +29 -6
  343. package/dist/wire/schema.d.ts.map +1 -1
  344. package/dist/wire/schema.js +61 -26
  345. package/dist/wire/schema.js.map +1 -1
  346. package/dist/wire/snapshot.js +1 -1
  347. package/dist/wire/snapshot.js.map +1 -1
  348. package/dist/wire/value.d.ts +10 -2
  349. package/dist/wire/value.d.ts.map +1 -1
  350. package/dist/wire/value.js +29 -3
  351. package/dist/wire/value.js.map +1 -1
  352. package/package.json +2 -3
  353. package/dist/stream/polling-strategy.d.ts +0 -14
  354. package/dist/stream/polling-strategy.d.ts.map +0 -1
  355. package/dist/stream/polling-strategy.js +0 -2
  356. package/dist/stream/polling-strategy.js.map +0 -1
@@ -1,8 +1,53 @@
1
1
  import { ownedBytes } from "../client/bytes.js";
2
- import { InvalidError, TransportError } from "../client/errors.js";
2
+ import { InvalidError, PublishFailedError, TimeoutError, TransportError } from "../client/errors.js";
3
+ import { NEVER_EXPIRE, UNLIMITED_TOPIC_SIZE, withMessageIds, xxHash32 } from "../iggy/apache-iggy.js";
3
4
  import { ProducerRecorder } from "./producer-statistics.js";
5
+ /** A raw streaming record with optional exact-width user headers. */
6
+ export class ProducerMessage {
7
+ payload;
8
+ headerValues = new Map();
9
+ /** A record without user headers. */
10
+ constructor(payload) {
11
+ this.payload = ownedBytes(payload);
12
+ }
13
+ get headers() {
14
+ return new Map(this.headerValues);
15
+ }
16
+ /** Replace all user headers. */
17
+ withHeaders(headers) {
18
+ this.headerValues = new Map(headers);
19
+ return this;
20
+ }
21
+ /** Add or replace one user header. */
22
+ header(key, value) {
23
+ this.headerValues.set(key, value);
24
+ return this;
25
+ }
26
+ }
4
27
  const DEFAULT_RETRIES = 3;
5
- const DEFAULT_RETRY_INTERVAL_MS = 1_000;
28
+ const DEFAULT_RETRY_BACKOFF_MS = 250;
29
+ const MAX_RETRY_DELAY_MS = 30_000;
30
+ const MAX_TIMER_MS = 0x7fff_ffff;
31
+ const DEFAULT_BATCH_LENGTH = 1_000;
32
+ const MAX_KEY_BYTES = 255;
33
+ const MIB = 1024 * 1024;
34
+ function payloadBytes(messages) {
35
+ return messages.reduce((total, message) => total + message.payload.byteLength, 0);
36
+ }
37
+ function sameRouting(left, right) {
38
+ if (left.kind !== right.kind)
39
+ return false;
40
+ if (left.kind === "partition" && right.kind === "partition")
41
+ return left.partition === right.partition;
42
+ if (left.kind === "key" && right.kind === "key")
43
+ return (left.key.length === right.key.length && left.key.every((byte, i) => byte === right.key[i]));
44
+ return true;
45
+ }
46
+ function nonNegative(value, name) {
47
+ if (!Number.isFinite(value) || value < 0)
48
+ throw new InvalidError(`${name} must be a non-negative finite number`);
49
+ return value;
50
+ }
6
51
  function headersMap(headers) {
7
52
  if (headers === undefined)
8
53
  return new Map();
@@ -15,16 +60,50 @@ function optionRouting(options, fallback) {
15
60
  if (options.partition !== undefined)
16
61
  return { kind: "partition", partition: options.partition };
17
62
  if (options.key !== undefined)
18
- return { kind: "key", key: options.key.slice() };
63
+ return { kind: "key", key: routingKey(options.key) };
19
64
  return fallback;
20
65
  }
21
- function lowerMessage(message) {
22
- return { payload: ownedBytes(message.payload), headers: headersMap(message.headers) };
66
+ // A routing key holds 1 to 255 bytes, the range Apache Iggy accepts.
67
+ function routingKey(key) {
68
+ if (key.byteLength === 0 || key.byteLength > MAX_KEY_BYTES) {
69
+ throw new InvalidError("a routing key must hold 1 to 255 bytes");
70
+ }
71
+ return key.slice();
72
+ }
73
+ function positiveDelay(value, name) {
74
+ if (!Number.isSafeInteger(value) || value < 1 || value > MAX_TIMER_MS) {
75
+ throw new InvalidError(`${name} must be an integer between 1 and 2147483647 milliseconds`);
76
+ }
77
+ return value;
78
+ }
79
+ function backgroundSettings(background) {
80
+ const count = (value, fallback, name) => {
81
+ const resolved = value ?? fallback;
82
+ if (!Number.isSafeInteger(resolved) || resolved < 0) {
83
+ throw new InvalidError(`background ${name} must be a non-negative safe integer`);
84
+ }
85
+ return resolved;
86
+ };
87
+ const failureMode = background.failureMode ?? { kind: "block" };
88
+ if (failureMode.kind === "blockWithTimeout") {
89
+ positiveDelay(failureMode.timeoutMs, "background failure timeoutMs");
90
+ }
91
+ return {
92
+ shards: Math.max(1, count(background.shards, 1, "shards")),
93
+ sharding: background.sharding ?? "ordered",
94
+ batchLength: count(background.batchLength, 1_000, "batchLength"),
95
+ batchBytes: count(background.batchBytes, MIB, "batchBytes"),
96
+ lingerMs: nonNegative(background.lingerMs ?? 1, "background lingerMs"),
97
+ maxBufferBytes: count(background.maxBufferBytes, 32 * MIB, "maxBufferBytes"),
98
+ failureMode,
99
+ maxInFlight: count(background.maxInFlight, 1, "maxInFlight") || Number.POSITIVE_INFINITY
100
+ };
23
101
  }
24
- function isProducerMessage(value) {
25
- return "payload" in value;
102
+ function lowerMessage(message) {
103
+ return { payload: message.payload, headers: message.headers };
26
104
  }
27
- /** Publishes directly with bounded retries and explicit routing. */
105
+ /** Publishes directly with bounded retries and explicit routing. Unless told
106
+ * otherwise, it creates its stream and topic before the first send. */
28
107
  export class Producer {
29
108
  transport;
30
109
  streamName;
@@ -32,9 +111,23 @@ export class Producer {
32
111
  options;
33
112
  routing;
34
113
  retries;
35
- retryIntervalMs;
114
+ retryBackoffMs;
36
115
  closed = false;
116
+ closing;
37
117
  statistics;
118
+ provisioned;
119
+ batchLength;
120
+ lingerMs;
121
+ lastSentAt = 0;
122
+ background;
123
+ onError;
124
+ shards = [];
125
+ nextShard = 0;
126
+ bufferedBytes = 0;
127
+ writing = 0;
128
+ writeWaiters = [];
129
+ backgroundFailure;
130
+ roomWaiters = [];
38
131
  constructor(transport, streamName, topicName, options = {}) {
39
132
  this.transport = transport;
40
133
  this.streamName = streamName;
@@ -43,32 +136,93 @@ export class Producer {
43
136
  this.statistics = new ProducerRecorder(streamName, topicName, transport);
44
137
  this.routing =
45
138
  options.routing?.kind === "key"
46
- ? { kind: "key", key: options.routing.key.slice() }
139
+ ? { kind: "key", key: routingKey(options.routing.key) }
47
140
  : (options.routing ?? { kind: "balanced" });
48
141
  this.retries = options.retries ?? DEFAULT_RETRIES;
49
- this.retryIntervalMs = options.retryIntervalMs ?? DEFAULT_RETRY_INTERVAL_MS;
142
+ this.retryBackoffMs =
143
+ options.retryBackoffMs === undefined
144
+ ? DEFAULT_RETRY_BACKOFF_MS
145
+ : positiveDelay(options.retryBackoffMs, "producer retryBackoffMs");
50
146
  if (!Number.isSafeInteger(this.retries) || this.retries < 0) {
51
147
  throw new InvalidError("producer retries must be a non-negative safe integer");
52
148
  }
53
- if (!Number.isFinite(this.retryIntervalMs) || this.retryIntervalMs < 0) {
54
- throw new InvalidError("producer retryIntervalMs must be a non-negative finite number");
55
- }
56
149
  if (this.routing.kind === "partition" && this.routing.partition < 0) {
57
150
  throw new InvalidError("producer partition must be non-negative");
58
151
  }
152
+ const partitions = options.partitions ?? 1;
153
+ if (!Number.isSafeInteger(partitions) || partitions < 1) {
154
+ throw new InvalidError("producer partitions must be a positive safe integer");
155
+ }
156
+ this.batchLength = options.batchLength ?? DEFAULT_BATCH_LENGTH;
157
+ if (!Number.isSafeInteger(this.batchLength) || this.batchLength < 1) {
158
+ throw new InvalidError("producer batch length must be greater than zero");
159
+ }
160
+ this.lingerMs = nonNegative(options.lingerMs ?? 0, "producer lingerMs");
161
+ if (options.neverExpire === true && options.expireAfterMicros !== undefined) {
162
+ throw new InvalidError("producer takes neverExpire or expireAfterMicros, not both");
163
+ }
164
+ if (options.expireAfterMicros !== undefined && options.expireAfterMicros <= 0n) {
165
+ throw new InvalidError("producer expireAfterMicros must be greater than zero");
166
+ }
167
+ if (options.maxTopicBytes !== undefined && options.maxTopicBytes <= 0n) {
168
+ throw new InvalidError("producer maxTopicBytes must be greater than zero");
169
+ }
170
+ const background = options.background;
171
+ this.onError = background?.onError;
172
+ this.background = background === undefined ? undefined : backgroundSettings(background);
173
+ for (let shard = 0; shard < (this.background?.shards ?? 0); shard += 1) {
174
+ this.shards.push({ queue: [], queuedBytes: 0, timer: undefined, draining: undefined });
175
+ }
176
+ }
177
+ /** @internal */
178
+ static create(transport, streamName, topicName, options = {}) {
179
+ return new Producer(transport, streamName, topicName, options);
180
+ }
181
+ /** @internal True when this producer queues sends in background mode. */
182
+ get isBackground() {
183
+ return this.background !== undefined;
184
+ }
185
+ // Creates the stream and topic once, before the first send, when the
186
+ // options ask for it.
187
+ provision() {
188
+ this.provisioned ??= (async () => {
189
+ const createStream = this.options.createStream ?? true;
190
+ const createTopic = this.options.createTopic ?? true;
191
+ if (createStream)
192
+ await this.transport.ensureStream(this.streamName);
193
+ if (!createTopic)
194
+ return;
195
+ const partitions = this.options.partitions ?? 1;
196
+ const expiry = this.options.neverExpire === true ? NEVER_EXPIRE : this.options.expireAfterMicros;
197
+ const maxTopicSize = this.options.unlimitedTopicSize === true ? UNLIMITED_TOPIC_SIZE : this.options.maxTopicBytes;
198
+ if (this.transport.createTopicIfAbsent !== undefined) {
199
+ await this.transport.createTopicIfAbsent(this.streamName, this.topicName, partitions, {
200
+ ...(maxTopicSize === undefined ? {} : { maxTopicSize }),
201
+ ...(expiry === undefined ? {} : { messageExpiryMicros: expiry })
202
+ });
203
+ return;
204
+ }
205
+ if (maxTopicSize !== undefined || expiry !== undefined)
206
+ throw new InvalidError("this transport cannot set topic provisioning settings");
207
+ await this.transport.ensureTopic(this.streamName, this.topicName, partitions);
208
+ })().catch((error) => {
209
+ this.provisioned = undefined;
210
+ throw error;
211
+ });
212
+ return this.provisioned;
59
213
  }
60
214
  async send(payload, options = {}) {
61
- return this.sendMessage({ payload, ...(options.headers !== undefined ? { headers: options.headers } : {}) }, optionRouting(options, this.routing));
215
+ return this.sendMessage(new ProducerMessage(payload).withHeaders(headersMap(options.headers)), optionRouting(options, this.routing));
62
216
  }
63
217
  async sendMessage(message, routing = this.routing) {
64
218
  this.throwIfClosed("sendMessage");
65
219
  return this.sendWithRetry([lowerMessage(message)], routing);
66
220
  }
67
221
  async sendWithRouting(message, routing) {
68
- return this.sendMessage(message, routing);
222
+ return this.sendMessage(message, routing.kind === "key" ? { kind: "key", key: routingKey(routing.key) } : routing);
69
223
  }
70
224
  async sendKeyed(message, key) {
71
- return this.sendMessage(message, { kind: "key", key: ownedBytes(key) });
225
+ return this.sendMessage(message, { kind: "key", key: routingKey(ownedBytes(key)) });
72
226
  }
73
227
  async sendToPartition(message, partition) {
74
228
  if (!Number.isSafeInteger(partition) || partition < 0) {
@@ -77,13 +231,13 @@ export class Producer {
77
231
  return this.sendMessage(message, { kind: "partition", partition });
78
232
  }
79
233
  async sendBatch(messages, options = {}) {
80
- const lowered = messages.map((message) => isProducerMessage(message)
234
+ const lowered = messages.map((message) => message instanceof ProducerMessage
81
235
  ? lowerMessage(message)
82
236
  : { payload: ownedBytes(message), headers: headersMap(options.headers) });
83
237
  return this.sendLoweredBatch(lowered, optionRouting(options, this.routing));
84
238
  }
85
239
  async sendBatchWithRouting(messages, routing = this.routing) {
86
- return this.sendLoweredBatch(messages.map(lowerMessage), routing);
240
+ return this.sendLoweredBatch(messages.map(lowerMessage), routing.kind === "key" ? { kind: "key", key: routingKey(routing.key) } : routing);
87
241
  }
88
242
  async sendLoweredBatch(messages, routing) {
89
243
  this.throwIfClosed("sendBatch");
@@ -91,16 +245,37 @@ export class Producer {
91
245
  return { confirmations: [] };
92
246
  return this.sendWithRetry(messages, routing);
93
247
  }
94
- flush() {
95
- return this.closed
96
- ? Promise.reject(new InvalidError("flush() called after shutdown()"))
97
- : Promise.resolve();
248
+ /** @internal Waits until every queued background send is written. A
249
+ * direct producer has nothing to flush. Rejects with the unreported
250
+ * background failures as one `PublishFailedError` that lists the records
251
+ * of every failed batch. */
252
+ async flush() {
253
+ if (this.closed)
254
+ throw new InvalidError("flush() called after shutdown()");
255
+ await this.drainQueue();
256
+ this.throwBackgroundFailure();
98
257
  }
99
- /** Rejects future sends. Safe to call more than once. */
100
- shutdown() {
258
+ /** Flushes queued background sends, then rejects future sends. Safe to
259
+ * call more than once: a later call waits for the first one to finish, and
260
+ * the first call reports an unreported background failure. */
261
+ async shutdown() {
262
+ if (this.closing !== undefined) {
263
+ await this.closing.catch(() => undefined);
264
+ return;
265
+ }
101
266
  this.closed = true;
102
- this.statistics.closed = true;
103
- return Promise.resolve();
267
+ this.closing = (async () => {
268
+ for (const wake of this.roomWaiters.splice(0))
269
+ wake();
270
+ try {
271
+ await this.drainQueue();
272
+ }
273
+ finally {
274
+ this.statistics.closed = true;
275
+ }
276
+ this.throwBackgroundFailure();
277
+ })();
278
+ return this.closing;
104
279
  }
105
280
  /** Delegates async disposal to `shutdown()`. */
106
281
  [Symbol.asyncDispose]() {
@@ -111,24 +286,216 @@ export class Producer {
111
286
  throw new InvalidError(`${operation}() called after shutdown()`);
112
287
  }
113
288
  async sendWithRetry(messages, routing) {
114
- const finish = this.statistics.begin(messages.length, messages.reduce((total, message) => total + message.payload.byteLength, 0));
289
+ if (this.background !== undefined)
290
+ return this.enqueue(messages, routing, this.background);
291
+ await this.waitForLinger();
292
+ return this.writeChunks(messages, routing);
293
+ }
294
+ // Waits out what is left of the linger gap since the previous direct send.
295
+ async waitForLinger() {
296
+ const now = Date.now();
297
+ const wait = this.lingerMs - (now - this.lastSentAt);
298
+ if (this.lingerMs > 0 && this.lastSentAt > 0 && wait > 0) {
299
+ await new Promise((resolve) => setTimeout(resolve, wait));
300
+ }
301
+ this.lastSentAt = Date.now();
302
+ }
303
+ // Splits the batch into `batchLength` requests awaited one after another.
304
+ // Every record gets its id first, so a failure reports the confirmed prefix
305
+ // and every record from the failed request on with the ids its attempts used.
306
+ async writeChunks(batch, routing) {
307
+ const messages = withMessageIds(batch);
308
+ const finish = this.statistics.begin(messages.length, payloadBytes(messages));
309
+ const confirmations = [];
310
+ let start = 0;
115
311
  try {
116
- const result = await this.sendAttempts(messages, routing);
312
+ await this.provision();
313
+ for (; start < messages.length; start += this.batchLength) {
314
+ const chunk = messages.slice(start, start + this.batchLength);
315
+ const response = await this.sendAttempts(chunk, routing);
316
+ confirmations.push(...response.confirmations);
317
+ }
117
318
  finish(true);
118
- return result;
319
+ return { confirmations };
119
320
  }
120
321
  catch (error) {
121
322
  finish(false);
122
- throw error;
323
+ throw new PublishFailedError(this.streamName, this.topicName, error instanceof PublishFailedError
324
+ ? [...confirmations, ...error.committed]
325
+ : confirmations, error instanceof PublishFailedError
326
+ ? [...error.unconfirmed, ...messages.slice(start + this.batchLength)]
327
+ : messages.slice(start), error instanceof PublishFailedError ? error.publishCause() : error);
328
+ }
329
+ }
330
+ async enqueue(messages, routing, background) {
331
+ await this.provision();
332
+ this.throwIfClosed("send");
333
+ const bytes = payloadBytes(messages);
334
+ await this.waitForRoom(messages, bytes, background);
335
+ const shard = this.pickShard(background);
336
+ shard.queue.push({ messages, routing, bytes });
337
+ shard.queuedBytes += bytes;
338
+ this.bufferedBytes += bytes;
339
+ const full = (background.batchLength > 0 && shard.queue.length >= background.batchLength) ||
340
+ (background.batchBytes > 0 && shard.queuedBytes >= background.batchBytes);
341
+ if (full || background.lingerMs === 0) {
342
+ void this.drainShard(shard);
343
+ }
344
+ else {
345
+ shard.timer ??= setTimeout(() => {
346
+ shard.timer = undefined;
347
+ void this.drainShard(shard);
348
+ }, background.lingerMs);
349
+ shard.timer.unref();
350
+ }
351
+ return { confirmations: [] };
352
+ }
353
+ // Holds a send until the buffer has room for it, as the failure mode says.
354
+ // Bytes stay charged until their write completes. A send larger than the
355
+ // whole buffer waits for it to empty.
356
+ async waitForRoom(messages, bytes, background) {
357
+ const mode = background.failureMode;
358
+ const deadline = mode.kind === "blockWithTimeout" ? Date.now() + mode.timeoutMs : undefined;
359
+ while (background.maxBufferBytes > 0 &&
360
+ this.bufferedBytes > 0 &&
361
+ this.bufferedBytes + bytes > background.maxBufferBytes) {
362
+ if (mode.kind === "failImmediately") {
363
+ throw new PublishFailedError(this.streamName, this.topicName, [], messages, new TransportError("the background send buffer is full", false));
364
+ }
365
+ const woken = await this.roomOrDeadline(deadline);
366
+ this.throwIfClosed("send");
367
+ if (!woken) {
368
+ throw new PublishFailedError(this.streamName, this.topicName, [], messages, new TimeoutError("room in the background send buffer"));
369
+ }
370
+ }
371
+ }
372
+ roomOrDeadline(deadline) {
373
+ return new Promise((resolve) => {
374
+ let timer;
375
+ const wake = () => {
376
+ clearTimeout(timer);
377
+ resolve(true);
378
+ };
379
+ this.roomWaiters.push(wake);
380
+ if (deadline !== undefined) {
381
+ timer = setTimeout(() => {
382
+ const index = this.roomWaiters.indexOf(wake);
383
+ if (index !== -1)
384
+ this.roomWaiters.splice(index, 1);
385
+ resolve(false);
386
+ }, Math.max(0, deadline - Date.now()));
387
+ }
388
+ });
389
+ }
390
+ // Ordered sharding keeps this producer's one destination on one worker, as
391
+ // Apache Iggy's ordered sharding hashes the stream and topic. Balanced
392
+ // sharding deals sends out round-robin.
393
+ pickShard(background) {
394
+ const index = background.sharding === "balanced"
395
+ ? this.nextShard++ % background.shards
396
+ : xxHash32(new TextEncoder().encode(`${this.streamName}\0${this.topicName}`)) %
397
+ background.shards;
398
+ const shard = this.shards[index];
399
+ if (shard === undefined)
400
+ throw new InvalidError("background shard is out of range");
401
+ return shard;
402
+ }
403
+ // Writes until every worker queue is empty and no write is in flight.
404
+ async drainQueue() {
405
+ while (this.shards.some((shard) => shard.queue.length > 0 || shard.draining !== undefined)) {
406
+ await Promise.all(this.shards.map((shard) => this.drainShard(shard)));
123
407
  }
124
408
  }
409
+ // Writes one worker's queue in order, merging adjacent sends that share
410
+ // routing. Writes across workers are bounded by `maxInFlight`.
411
+ drainShard(shard) {
412
+ if (shard.timer !== undefined) {
413
+ clearTimeout(shard.timer);
414
+ shard.timer = undefined;
415
+ }
416
+ shard.draining ??= Promise.resolve().then(async () => {
417
+ try {
418
+ while (shard.queue.length > 0) {
419
+ const first = shard.queue.shift();
420
+ if (first === undefined)
421
+ break;
422
+ const merged = [...first.messages];
423
+ let bytes = first.bytes;
424
+ while (shard.queue[0] !== undefined &&
425
+ sameRouting(shard.queue[0].routing, first.routing)) {
426
+ const next = shard.queue.shift();
427
+ if (next === undefined)
428
+ break;
429
+ merged.push(...next.messages);
430
+ bytes += next.bytes;
431
+ }
432
+ shard.queuedBytes -= bytes;
433
+ await this.acquireWrite();
434
+ try {
435
+ await this.writeChunks(merged, first.routing);
436
+ }
437
+ catch (error) {
438
+ await this.reportBackgroundFailure(error);
439
+ }
440
+ finally {
441
+ this.releaseWrite();
442
+ this.bufferedBytes -= bytes;
443
+ for (const wake of this.roomWaiters.splice(0))
444
+ wake();
445
+ }
446
+ }
447
+ }
448
+ finally {
449
+ shard.draining = undefined;
450
+ }
451
+ });
452
+ return shard.draining;
453
+ }
454
+ async acquireWrite() {
455
+ const limit = this.background?.maxInFlight ?? 1;
456
+ while (this.writing >= limit) {
457
+ await new Promise((resolve) => this.writeWaiters.push(resolve));
458
+ }
459
+ this.writing += 1;
460
+ }
461
+ releaseWrite() {
462
+ this.writing -= 1;
463
+ this.writeWaiters.shift()?.();
464
+ }
465
+ async reportBackgroundFailure(error) {
466
+ const failure = error instanceof PublishFailedError
467
+ ? error
468
+ : new PublishFailedError(this.streamName, this.topicName, [], [], error);
469
+ if (this.onError !== undefined) {
470
+ try {
471
+ await this.onError(failure);
472
+ return;
473
+ }
474
+ catch {
475
+ // Preserve the failed records if the notification callback fails too.
476
+ }
477
+ }
478
+ const earlier = this.backgroundFailure;
479
+ this.backgroundFailure =
480
+ earlier === undefined
481
+ ? failure
482
+ : new PublishFailedError(this.streamName, this.topicName, [...earlier.committed, ...failure.committed], [...earlier.unconfirmed, ...failure.unconfirmed], earlier.cause);
483
+ }
484
+ throwBackgroundFailure() {
485
+ const failure = this.backgroundFailure;
486
+ if (failure === undefined)
487
+ return;
488
+ this.backgroundFailure = undefined;
489
+ throw failure;
490
+ }
125
491
  async sendAttempts(messages, routing) {
126
492
  if (this.transport.publishRetriesManaged === true) {
127
493
  return this.transport.sendMessagesWithHeaders(this.streamName, this.topicName, messages, routing.kind === "key" ? routing.key : undefined, routing.kind === "partition" ? routing.partition : undefined, {
494
+ batchLength: this.batchLength,
128
495
  ...(this.options.retries === undefined ? {} : { maxRetries: this.retries }),
129
- ...(this.options.retryIntervalMs === undefined
496
+ ...(this.options.retryBackoffMs === undefined
130
497
  ? {}
131
- : { retryBackoffMs: this.retryIntervalMs })
498
+ : { retryBackoffMs: this.retryBackoffMs })
132
499
  });
133
500
  }
134
501
  for (let attempt = 0;; attempt += 1) {
@@ -139,9 +506,7 @@ export class Producer {
139
506
  if (!(error instanceof TransportError) || !error.retryable || attempt >= this.retries) {
140
507
  throw error;
141
508
  }
142
- if (this.retryIntervalMs > 0) {
143
- await new Promise((resolve) => setTimeout(resolve, this.retryIntervalMs));
144
- }
509
+ await new Promise((resolve) => setTimeout(resolve, Math.min(this.retryBackoffMs * 2 ** Math.min(attempt, 16), MAX_RETRY_DELAY_MS)));
145
510
  }
146
511
  }
147
512
  }
@@ -1 +1 @@
1
- {"version":3,"file":"producer.js","sourceRoot":"","sources":["../../src/stream/producer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"producer.js","sourceRoot":"","sources":["../../src/stream/producer.ts"],"names":[],"mappings":"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"}