@s2-dev/streamstore 0.19.5 → 0.21.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 (221) hide show
  1. package/LICENSE +21 -201
  2. package/README.md +60 -10
  3. package/dist/cjs/accessTokens.d.ts +27 -14
  4. package/dist/cjs/accessTokens.d.ts.map +1 -1
  5. package/dist/cjs/accessTokens.js +72 -8
  6. package/dist/cjs/accessTokens.js.map +1 -1
  7. package/dist/cjs/basins.d.ts +29 -19
  8. package/dist/cjs/basins.d.ts.map +1 -1
  9. package/dist/cjs/basins.js +119 -9
  10. package/dist/cjs/basins.js.map +1 -1
  11. package/dist/cjs/batch-transform.d.ts +12 -16
  12. package/dist/cjs/batch-transform.d.ts.map +1 -1
  13. package/dist/cjs/batch-transform.js +17 -21
  14. package/dist/cjs/batch-transform.js.map +1 -1
  15. package/dist/cjs/common.d.ts +31 -24
  16. package/dist/cjs/common.d.ts.map +1 -1
  17. package/dist/cjs/common.js +22 -0
  18. package/dist/cjs/common.js.map +1 -1
  19. package/dist/cjs/endpoints.d.ts +63 -0
  20. package/dist/cjs/endpoints.d.ts.map +1 -0
  21. package/dist/cjs/endpoints.js +120 -0
  22. package/dist/cjs/endpoints.js.map +1 -0
  23. package/dist/cjs/error.d.ts.map +1 -1
  24. package/dist/cjs/error.js +11 -0
  25. package/dist/cjs/error.js.map +1 -1
  26. package/dist/cjs/generated/types.gen.d.ts +11 -20
  27. package/dist/cjs/generated/types.gen.d.ts.map +1 -1
  28. package/dist/cjs/index.d.ts +30 -46
  29. package/dist/cjs/index.d.ts.map +1 -1
  30. package/dist/cjs/index.js +50 -26
  31. package/dist/cjs/index.js.map +1 -1
  32. package/dist/cjs/internal/case-transform.d.ts +59 -0
  33. package/dist/cjs/internal/case-transform.d.ts.map +1 -0
  34. package/dist/cjs/internal/case-transform.js +80 -0
  35. package/dist/cjs/internal/case-transform.js.map +1 -0
  36. package/dist/cjs/internal/mappers.d.ts +51 -0
  37. package/dist/cjs/internal/mappers.d.ts.map +1 -0
  38. package/dist/cjs/internal/mappers.js +225 -0
  39. package/dist/cjs/internal/mappers.js.map +1 -0
  40. package/dist/cjs/internal/sdk-types.d.ts +127 -0
  41. package/dist/cjs/internal/sdk-types.d.ts.map +1 -0
  42. package/dist/cjs/internal/sdk-types.js +9 -0
  43. package/dist/cjs/internal/sdk-types.js.map +1 -0
  44. package/dist/cjs/lib/base64.d.ts +8 -0
  45. package/dist/cjs/lib/base64.d.ts.map +1 -1
  46. package/dist/cjs/lib/base64.js +32 -12
  47. package/dist/cjs/lib/base64.js.map +1 -1
  48. package/dist/cjs/lib/event-stream.d.ts.map +1 -1
  49. package/dist/cjs/lib/event-stream.js +2 -1
  50. package/dist/cjs/lib/event-stream.js.map +1 -1
  51. package/dist/cjs/lib/paginate.d.ts +57 -0
  52. package/dist/cjs/lib/paginate.d.ts.map +1 -0
  53. package/dist/cjs/lib/paginate.js +51 -0
  54. package/dist/cjs/lib/paginate.js.map +1 -0
  55. package/dist/cjs/lib/result.d.ts +1 -1
  56. package/dist/cjs/lib/result.d.ts.map +1 -1
  57. package/dist/cjs/lib/retry.d.ts +47 -31
  58. package/dist/cjs/lib/retry.d.ts.map +1 -1
  59. package/dist/cjs/lib/retry.js +302 -201
  60. package/dist/cjs/lib/retry.js.map +1 -1
  61. package/dist/cjs/lib/stream/runtime.d.ts +1 -1
  62. package/dist/cjs/lib/stream/transport/fetch/index.d.ts +7 -9
  63. package/dist/cjs/lib/stream/transport/fetch/index.d.ts.map +1 -1
  64. package/dist/cjs/lib/stream/transport/fetch/index.js +38 -39
  65. package/dist/cjs/lib/stream/transport/fetch/index.js.map +1 -1
  66. package/dist/cjs/lib/stream/transport/fetch/shared.d.ts +7 -2
  67. package/dist/cjs/lib/stream/transport/fetch/shared.d.ts.map +1 -1
  68. package/dist/cjs/lib/stream/transport/fetch/shared.js +56 -110
  69. package/dist/cjs/lib/stream/transport/fetch/shared.js.map +1 -1
  70. package/dist/cjs/lib/stream/transport/proto.d.ts +9 -0
  71. package/dist/cjs/lib/stream/transport/proto.d.ts.map +1 -0
  72. package/dist/cjs/lib/stream/transport/proto.js +118 -0
  73. package/dist/cjs/lib/stream/transport/proto.js.map +1 -0
  74. package/dist/cjs/lib/stream/transport/s2s/index.d.ts +3 -3
  75. package/dist/cjs/lib/stream/transport/s2s/index.d.ts.map +1 -1
  76. package/dist/cjs/lib/stream/transport/s2s/index.js +115 -82
  77. package/dist/cjs/lib/stream/transport/s2s/index.js.map +1 -1
  78. package/dist/cjs/lib/stream/types.d.ts +81 -36
  79. package/dist/cjs/lib/stream/types.d.ts.map +1 -1
  80. package/dist/cjs/lib/stream/types.js +18 -0
  81. package/dist/cjs/lib/stream/types.js.map +1 -1
  82. package/dist/cjs/metrics.d.ts +18 -17
  83. package/dist/cjs/metrics.d.ts.map +1 -1
  84. package/dist/cjs/metrics.js +67 -12
  85. package/dist/cjs/metrics.js.map +1 -1
  86. package/dist/cjs/producer.d.ts +82 -0
  87. package/dist/cjs/producer.d.ts.map +1 -0
  88. package/dist/cjs/producer.js +305 -0
  89. package/dist/cjs/producer.js.map +1 -0
  90. package/dist/cjs/s2.d.ts +1 -2
  91. package/dist/cjs/s2.d.ts.map +1 -1
  92. package/dist/cjs/s2.js +11 -15
  93. package/dist/cjs/s2.js.map +1 -1
  94. package/dist/cjs/stream.d.ts +26 -12
  95. package/dist/cjs/stream.d.ts.map +1 -1
  96. package/dist/cjs/stream.js +77 -13
  97. package/dist/cjs/stream.js.map +1 -1
  98. package/dist/cjs/streams.d.ts +29 -19
  99. package/dist/cjs/streams.d.ts.map +1 -1
  100. package/dist/cjs/streams.js +120 -9
  101. package/dist/cjs/streams.js.map +1 -1
  102. package/dist/cjs/types.d.ts +624 -0
  103. package/dist/cjs/types.d.ts.map +1 -0
  104. package/dist/cjs/types.js +129 -0
  105. package/dist/cjs/types.js.map +1 -0
  106. package/dist/cjs/utils.d.ts +1 -22
  107. package/dist/cjs/utils.d.ts.map +1 -1
  108. package/dist/cjs/utils.js +0 -42
  109. package/dist/cjs/utils.js.map +1 -1
  110. package/dist/cjs/version.d.ts +1 -1
  111. package/dist/cjs/version.js +1 -1
  112. package/dist/esm/accessTokens.d.ts +27 -14
  113. package/dist/esm/accessTokens.d.ts.map +1 -1
  114. package/dist/esm/accessTokens.js +73 -9
  115. package/dist/esm/accessTokens.js.map +1 -1
  116. package/dist/esm/basins.d.ts +29 -19
  117. package/dist/esm/basins.d.ts.map +1 -1
  118. package/dist/esm/basins.js +119 -9
  119. package/dist/esm/basins.js.map +1 -1
  120. package/dist/esm/batch-transform.d.ts +12 -16
  121. package/dist/esm/batch-transform.d.ts.map +1 -1
  122. package/dist/esm/batch-transform.js +18 -22
  123. package/dist/esm/batch-transform.js.map +1 -1
  124. package/dist/esm/common.d.ts +31 -24
  125. package/dist/esm/common.d.ts.map +1 -1
  126. package/dist/esm/common.js +20 -1
  127. package/dist/esm/common.js.map +1 -1
  128. package/dist/esm/endpoints.d.ts +63 -0
  129. package/dist/esm/endpoints.d.ts.map +1 -0
  130. package/dist/esm/endpoints.js +115 -0
  131. package/dist/esm/endpoints.js.map +1 -0
  132. package/dist/esm/error.d.ts.map +1 -1
  133. package/dist/esm/error.js +11 -0
  134. package/dist/esm/error.js.map +1 -1
  135. package/dist/esm/generated/types.gen.d.ts +11 -20
  136. package/dist/esm/generated/types.gen.d.ts.map +1 -1
  137. package/dist/esm/index.d.ts +30 -46
  138. package/dist/esm/index.d.ts.map +1 -1
  139. package/dist/esm/index.js +33 -19
  140. package/dist/esm/index.js.map +1 -1
  141. package/dist/esm/internal/case-transform.d.ts +59 -0
  142. package/dist/esm/internal/case-transform.d.ts.map +1 -0
  143. package/dist/esm/internal/case-transform.js +76 -0
  144. package/dist/esm/internal/case-transform.js.map +1 -0
  145. package/dist/esm/internal/mappers.d.ts +51 -0
  146. package/dist/esm/internal/mappers.d.ts.map +1 -0
  147. package/dist/esm/internal/mappers.js +218 -0
  148. package/dist/esm/internal/mappers.js.map +1 -0
  149. package/dist/esm/internal/sdk-types.d.ts +127 -0
  150. package/dist/esm/internal/sdk-types.d.ts.map +1 -0
  151. package/dist/esm/internal/sdk-types.js +8 -0
  152. package/dist/esm/internal/sdk-types.js.map +1 -0
  153. package/dist/esm/lib/base64.d.ts +8 -0
  154. package/dist/esm/lib/base64.d.ts.map +1 -1
  155. package/dist/esm/lib/base64.js +30 -11
  156. package/dist/esm/lib/base64.js.map +1 -1
  157. package/dist/esm/lib/event-stream.d.ts.map +1 -1
  158. package/dist/esm/lib/event-stream.js +2 -1
  159. package/dist/esm/lib/event-stream.js.map +1 -1
  160. package/dist/esm/lib/paginate.d.ts +57 -0
  161. package/dist/esm/lib/paginate.d.ts.map +1 -0
  162. package/dist/esm/lib/paginate.js +48 -0
  163. package/dist/esm/lib/paginate.js.map +1 -0
  164. package/dist/esm/lib/result.d.ts +1 -1
  165. package/dist/esm/lib/result.d.ts.map +1 -1
  166. package/dist/esm/lib/retry.d.ts +47 -31
  167. package/dist/esm/lib/retry.d.ts.map +1 -1
  168. package/dist/esm/lib/retry.js +303 -201
  169. package/dist/esm/lib/retry.js.map +1 -1
  170. package/dist/esm/lib/stream/runtime.d.ts +1 -1
  171. package/dist/esm/lib/stream/transport/fetch/index.d.ts +7 -9
  172. package/dist/esm/lib/stream/transport/fetch/index.d.ts.map +1 -1
  173. package/dist/esm/lib/stream/transport/fetch/index.js +40 -41
  174. package/dist/esm/lib/stream/transport/fetch/index.js.map +1 -1
  175. package/dist/esm/lib/stream/transport/fetch/shared.d.ts +7 -2
  176. package/dist/esm/lib/stream/transport/fetch/shared.d.ts.map +1 -1
  177. package/dist/esm/lib/stream/transport/fetch/shared.js +58 -112
  178. package/dist/esm/lib/stream/transport/fetch/shared.js.map +1 -1
  179. package/dist/esm/lib/stream/transport/proto.d.ts +9 -0
  180. package/dist/esm/lib/stream/transport/proto.d.ts.map +1 -0
  181. package/dist/esm/lib/stream/transport/proto.js +110 -0
  182. package/dist/esm/lib/stream/transport/proto.js.map +1 -0
  183. package/dist/esm/lib/stream/transport/s2s/index.d.ts +3 -3
  184. package/dist/esm/lib/stream/transport/s2s/index.d.ts.map +1 -1
  185. package/dist/esm/lib/stream/transport/s2s/index.js +116 -82
  186. package/dist/esm/lib/stream/transport/s2s/index.js.map +1 -1
  187. package/dist/esm/lib/stream/types.d.ts +81 -36
  188. package/dist/esm/lib/stream/types.d.ts.map +1 -1
  189. package/dist/esm/lib/stream/types.js +17 -1
  190. package/dist/esm/lib/stream/types.js.map +1 -1
  191. package/dist/esm/metrics.d.ts +18 -17
  192. package/dist/esm/metrics.d.ts.map +1 -1
  193. package/dist/esm/metrics.js +66 -12
  194. package/dist/esm/metrics.js.map +1 -1
  195. package/dist/esm/producer.d.ts +82 -0
  196. package/dist/esm/producer.d.ts.map +1 -0
  197. package/dist/esm/producer.js +300 -0
  198. package/dist/esm/producer.js.map +1 -0
  199. package/dist/esm/s2.d.ts +1 -2
  200. package/dist/esm/s2.d.ts.map +1 -1
  201. package/dist/esm/s2.js +12 -16
  202. package/dist/esm/s2.js.map +1 -1
  203. package/dist/esm/stream.d.ts +26 -12
  204. package/dist/esm/stream.d.ts.map +1 -1
  205. package/dist/esm/stream.js +79 -15
  206. package/dist/esm/stream.js.map +1 -1
  207. package/dist/esm/streams.d.ts +29 -19
  208. package/dist/esm/streams.d.ts.map +1 -1
  209. package/dist/esm/streams.js +120 -9
  210. package/dist/esm/streams.js.map +1 -1
  211. package/dist/esm/types.d.ts +624 -0
  212. package/dist/esm/types.d.ts.map +1 -0
  213. package/dist/esm/types.js +126 -0
  214. package/dist/esm/types.js.map +1 -0
  215. package/dist/esm/utils.d.ts +1 -22
  216. package/dist/esm/utils.d.ts.map +1 -1
  217. package/dist/esm/utils.js +0 -41
  218. package/dist/esm/utils.js.map +1 -1
  219. package/dist/esm/version.d.ts +1 -1
  220. package/dist/esm/version.js +1 -1
  221. package/package.json +4 -3
@@ -3,7 +3,79 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.S2Basins = void 0;
4
4
  const error_js_1 = require("./error.js");
5
5
  const index_js_1 = require("./generated/index.js");
6
+ const case_transform_js_1 = require("./internal/case-transform.js");
7
+ const base64_js_1 = require("./lib/base64.js");
8
+ const paginate_js_1 = require("./lib/paginate.js");
6
9
  const retry_js_1 = require("./lib/retry.js");
10
+ /** Convert SDK RetentionPolicy (ageSecs) to API RetentionPolicy (age). */
11
+ function toAPIRetentionPolicy(policy) {
12
+ if (policy === null)
13
+ return null;
14
+ if (policy === undefined)
15
+ return undefined;
16
+ if ("ageSecs" in policy) {
17
+ return { age: Math.floor(policy.ageSecs) };
18
+ }
19
+ return policy; // { infinite: ... } passes through
20
+ }
21
+ /** Convert API RetentionPolicy (age) to SDK RetentionPolicy (ageSecs). */
22
+ function toSDKRetentionPolicy(policy) {
23
+ if (policy === null)
24
+ return null;
25
+ if (policy === undefined)
26
+ return undefined;
27
+ if ("age" in policy) {
28
+ return { ageSecs: policy.age };
29
+ }
30
+ return policy; // { infinite: ... } passes through
31
+ }
32
+ /** Convert SDK StreamConfig to API format (handles retentionPolicy.ageSecs → age). */
33
+ function toAPIStreamConfig(config) {
34
+ if (config === null || config === undefined)
35
+ return config;
36
+ return {
37
+ ...config,
38
+ deleteOnEmpty: config.deleteOnEmpty
39
+ ? {
40
+ ...config.deleteOnEmpty,
41
+ minAgeSecs: config.deleteOnEmpty.minAgeSecs === undefined
42
+ ? undefined
43
+ : Math.max(0, Math.floor(config.deleteOnEmpty.minAgeSecs)),
44
+ }
45
+ : config.deleteOnEmpty,
46
+ retentionPolicy: toAPIRetentionPolicy(config.retentionPolicy),
47
+ };
48
+ }
49
+ /** Convert API StreamConfig to SDK format (handles retentionPolicy.age → ageSecs). */
50
+ function toSDKStreamConfig(config) {
51
+ if (config === null || config === undefined)
52
+ return config;
53
+ return {
54
+ ...config,
55
+ retentionPolicy: toSDKRetentionPolicy(config?.retentionPolicy),
56
+ };
57
+ }
58
+ /** Convert SDK BasinConfig to API format. */
59
+ function toAPIBasinConfig(config) {
60
+ if (config === null || config === undefined)
61
+ return config;
62
+ return {
63
+ ...config,
64
+ defaultStreamConfig: toAPIStreamConfig(config.defaultStreamConfig),
65
+ };
66
+ }
67
+ /** Convert API BasinConfig to SDK format. */
68
+ function toSDKBasinConfig(config) {
69
+ return {
70
+ ...config,
71
+ defaultStreamConfig: toSDKStreamConfig(config?.defaultStreamConfig),
72
+ };
73
+ }
74
+ /**
75
+ * Account-scoped helper for listing, creating, deleting, and reconfiguring basins.
76
+ *
77
+ * Retrieve this via {@link S2.basins}. Each method retries according to the client-level retry config.
78
+ */
7
79
  class S2Basins {
8
80
  client;
9
81
  retryConfig;
@@ -15,33 +87,62 @@ class S2Basins {
15
87
  * List basins.
16
88
  *
17
89
  * @param args.prefix Return basins whose names start with the given prefix
18
- * @param args.start_after Name to start after (for pagination)
90
+ * @param args.startAfter Name to start after (for pagination)
19
91
  * @param args.limit Max results (up to 1000)
20
92
  */
21
93
  async list(args, options) {
22
- return await (0, retry_js_1.withRetries)(this.retryConfig, async () => {
94
+ const response = await (0, retry_js_1.withRetries)(this.retryConfig, async () => {
23
95
  return await (0, error_js_1.withS2Data)(() => (0, index_js_1.listBasins)({
24
96
  client: this.client,
25
- query: args,
97
+ query: (0, case_transform_js_1.toSnakeCase)(args),
26
98
  ...options,
27
99
  }));
28
100
  });
101
+ return (0, case_transform_js_1.toCamelCase)(response);
102
+ }
103
+ /**
104
+ * List all basins with automatic pagination.
105
+ * Returns a lazy async iterable that fetches pages as needed.
106
+ *
107
+ * @param includeDeleted - Include basins that are being deleted (default: false)
108
+ * @param args - Optional filtering options: `prefix` to filter by name prefix, `limit` for max results per page
109
+ *
110
+ * @example
111
+ * ```ts
112
+ * for await (const basin of s2.basins.listAll(false, { prefix: "my-" })) {
113
+ * console.log(basin.name);
114
+ * }
115
+ * ```
116
+ */
117
+ listAll(includeDeleted = false, args, options) {
118
+ return (0, paginate_js_1.paginate)((a) => this.list(a, options).then((r) => ({
119
+ items: r.basins.filter((b) => includeDeleted || b.state !== "deleting"),
120
+ hasMore: r.hasMore,
121
+ })), args ?? {}, (basin) => basin.name);
29
122
  }
30
123
  /**
31
124
  * Create a basin.
32
125
  *
33
126
  * @param args.basin Globally unique basin name (8-48 chars, lowercase letters, numbers, hyphens; cannot begin or end with a hyphen)
34
- * @param args.config Optional basin configuration (e.g. default stream config)
127
+ * @param args.config Optional basin configuration (e.g. defaultStreamConfig)
35
128
  * @param args.scope Basin scope
36
129
  */
37
130
  async create(args, options) {
38
- return await (0, retry_js_1.withRetries)(this.retryConfig, async () => {
131
+ const requestToken = (0, base64_js_1.randomToken)();
132
+ // Convert SDK config to API format (ageSecs → age)
133
+ const apiArgs = {
134
+ ...args,
135
+ config: toAPIBasinConfig(args.config),
136
+ };
137
+ const response = await (0, retry_js_1.withRetries)(this.retryConfig, async () => {
39
138
  return await (0, error_js_1.withS2Data)(() => (0, index_js_1.createBasin)({
40
139
  client: this.client,
41
- body: args,
140
+ body: (0, case_transform_js_1.toSnakeCase)(apiArgs),
141
+ headers: { "s2-request-token": requestToken },
42
142
  ...options,
43
143
  }));
44
144
  });
145
+ return (0, case_transform_js_1.toCamelCase)(response);
45
146
  }
46
147
  /**
47
148
  * Get basin configuration.
@@ -49,13 +150,15 @@ class S2Basins {
49
150
  * @param args.basin Basin name
50
151
  */
51
152
  async getConfig(args, options) {
52
- return await (0, retry_js_1.withRetries)(this.retryConfig, async () => {
153
+ const response = await (0, retry_js_1.withRetries)(this.retryConfig, async () => {
53
154
  return await (0, error_js_1.withS2Data)(() => (0, index_js_1.getBasinConfig)({
54
155
  client: this.client,
55
156
  path: args,
56
157
  ...options,
57
158
  }));
58
159
  });
160
+ // Convert API format to SDK (age → ageSecs)
161
+ return toSDKBasinConfig((0, case_transform_js_1.toCamelCase)(response));
59
162
  }
60
163
  /**
61
164
  * Delete a basin.
@@ -77,14 +180,21 @@ class S2Basins {
77
180
  * @param args Configuration for the basin to reconfigure (including basin name and fields to change)
78
181
  */
79
182
  async reconfigure(args, options) {
80
- return await (0, retry_js_1.withRetries)(this.retryConfig, async () => {
183
+ // Convert SDK config to API format (ageSecs age)
184
+ const apiArgs = {
185
+ ...args,
186
+ defaultStreamConfig: toAPIStreamConfig(args.defaultStreamConfig),
187
+ };
188
+ const response = await (0, retry_js_1.withRetries)(this.retryConfig, async () => {
81
189
  return await (0, error_js_1.withS2Data)(() => (0, index_js_1.reconfigureBasin)({
82
190
  client: this.client,
83
191
  path: args,
84
- body: args,
192
+ body: (0, case_transform_js_1.toSnakeCase)(apiArgs),
85
193
  ...options,
86
194
  }));
87
195
  });
196
+ // Convert API format to SDK (age → ageSecs)
197
+ return toSDKBasinConfig((0, case_transform_js_1.toCamelCase)(response));
88
198
  }
89
199
  }
90
200
  exports.S2Basins = S2Basins;
@@ -1 +1 @@
1
- {"version":3,"file":"basins.js","sourceRoot":"","sources":["../../src/basins.ts"],"names":[],"mappings":";;;AACA,yCAAwC;AAExC,mDAe8B;AAC9B,6CAA6C;AAS7C,MAAa,QAAQ;IACH,MAAM,CAAS;IACf,WAAW,CAAc;IAE1C,YAAY,MAAc,EAAE,WAAwB;QACnD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,IAAI,CAChB,IAAqB,EACrB,OAA0B;QAE1B,OAAO,MAAM,IAAA,sBAAW,EAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YACrD,OAAO,MAAM,IAAA,qBAAU,EAAC,GAAG,EAAE,CAC5B,IAAA,qBAAU,EAAC;gBACV,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI;gBACX,GAAG,OAAO;aACV,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,MAAM,CAClB,IAAqB,EACrB,OAA0B;QAE1B,OAAO,MAAM,IAAA,sBAAW,EAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YACrD,OAAO,MAAM,IAAA,qBAAU,EAAC,GAAG,EAAE,CAC5B,IAAA,sBAAW,EAAC;gBACX,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI;gBACV,GAAG,OAAO;aACV,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,SAAS,CACrB,IAAwB,EACxB,OAA0B;QAE1B,OAAO,MAAM,IAAA,sBAAW,EAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YACrD,OAAO,MAAM,IAAA,qBAAU,EAAC,GAAG,EAAE,CAC5B,IAAA,yBAAc,EAAC;gBACd,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI;gBACV,GAAG,OAAO;aACV,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,MAAM,CAClB,IAAqB,EACrB,OAA0B;QAE1B,MAAM,IAAA,sBAAW,EAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YAC9C,OAAO,MAAM,IAAA,qBAAU,EAAC,GAAG,EAAE,CAC5B,IAAA,sBAAW,EAAC;gBACX,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI;gBACV,GAAG,OAAO;aACV,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,WAAW,CACvB,IAA0B,EAC1B,OAA0B;QAE1B,OAAO,MAAM,IAAA,sBAAW,EAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YACrD,OAAO,MAAM,IAAA,qBAAU,EAAC,GAAG,EAAE,CAC5B,IAAA,2BAAgB,EAAC;gBAChB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,IAAI;gBACV,GAAG,OAAO;aACV,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;CACD;AAjHD,4BAiHC"}
1
+ {"version":3,"file":"basins.js","sourceRoot":"","sources":["../../src/basins.ts"],"names":[],"mappings":";;;AACA,yCAAwC;AAExC,mDAM8B;AAE9B,oEAAwE;AACxE,+CAA8C;AAC9C,mDAA6C;AAC7C,6CAA6C;AAG7C,0EAA0E;AAC1E,SAAS,oBAAoB,CAC5B,MAAgD;IAEhD,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;QACzB,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,mCAAmC;AACnD,CAAC;AAED,0EAA0E;AAC1E,SAAS,oBAAoB,CAC5B,MAA8C;IAE9C,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,mCAAmC;AACnD,CAAC;AAED,sFAAsF;AACtF,SAAS,iBAAiB,CAAC,MAA6C;IACvE,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAC3D,OAAO;QACN,GAAG,MAAM;QACT,aAAa,EAAE,MAAM,CAAC,aAAa;YAClC,CAAC,CAAC;gBACA,GAAG,MAAM,CAAC,aAAa;gBACvB,UAAU,EACT,MAAM,CAAC,aAAa,CAAC,UAAU,KAAK,SAAS;oBAC5C,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;aAC5D;YACF,CAAC,CAAC,MAAM,CAAC,aAAa;QACvB,eAAe,EAAE,oBAAoB,CAAC,MAAM,CAAC,eAAe,CAAC;KAC7D,CAAC;AACH,CAAC;AAED,sFAAsF;AACtF,SAAS,iBAAiB,CAAC,MAAW;IACrC,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAC3D,OAAO;QACN,GAAG,MAAM;QACT,eAAe,EAAE,oBAAoB,CAAC,MAAM,EAAE,eAAe,CAAC;KAC9D,CAAC;AACH,CAAC;AAED,6CAA6C;AAC7C,SAAS,gBAAgB,CAAC,MAA4C;IACrE,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAC3D,OAAO;QACN,GAAG,MAAM;QACT,mBAAmB,EAAE,iBAAiB,CAAC,MAAM,CAAC,mBAAmB,CAAC;KAClE,CAAC;AACH,CAAC;AAED,6CAA6C;AAC7C,SAAS,gBAAgB,CAAC,MAAW;IACpC,OAAO;QACN,GAAG,MAAM;QACT,mBAAmB,EAAE,iBAAiB,CAAC,MAAM,EAAE,mBAAmB,CAAC;KACnE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAa,QAAQ;IACH,MAAM,CAAS;IACf,WAAW,CAAc;IAE1C,YAAY,MAAc,EAAE,WAAwB;QACnD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,IAAI,CAChB,IAA4B,EAC5B,OAA0B;QAE1B,MAAM,QAAQ,GAAG,MAAM,IAAA,sBAAW,EAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YAC/D,OAAO,MAAM,IAAA,qBAAU,EAAC,GAAG,EAAE,CAC5B,IAAA,qBAAU,EAAC;gBACV,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAA,+BAAW,EAAC,IAAI,CAAC;gBACxB,GAAG,OAAO;aACV,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,IAAA,+BAAW,EAA2B,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,OAAO,CACb,cAAc,GAAG,KAAK,EACtB,IAA+B,EAC/B,OAA0B;QAE1B,OAAO,IAAA,sBAAQ,EACd,CAAC,CAAC,EAAE,EAAE,CACL,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CACrB,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU,CAC/C;YACD,OAAO,EAAE,CAAC,CAAC,OAAO;SAClB,CAAC,CAAC,EACJ,IAAI,IAAI,EAAE,EACV,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CACrB,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,MAAM,CAClB,IAA4B,EAC5B,OAA0B;QAE1B,MAAM,YAAY,GAAG,IAAA,uBAAW,GAAE,CAAC;QACnC,mDAAmD;QACnD,MAAM,OAAO,GAAG;YACf,GAAG,IAAI;YACP,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;SACrC,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAA,sBAAW,EAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YAC/D,OAAO,MAAM,IAAA,qBAAU,EAAC,GAAG,EAAE,CAC5B,IAAA,sBAAW,EAAC;gBACX,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAA,+BAAW,EAAC,OAAO,CAAC;gBAC1B,OAAO,EAAE,EAAE,kBAAkB,EAAE,YAAY,EAAE;gBAC7C,GAAG,OAAO;aACV,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,IAAA,+BAAW,EAA4B,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,SAAS,CACrB,IAA+B,EAC/B,OAA0B;QAE1B,MAAM,QAAQ,GAAG,MAAM,IAAA,sBAAW,EAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YAC/D,OAAO,MAAM,IAAA,qBAAU,EAAC,GAAG,EAAE,CAC5B,IAAA,yBAAc,EAAC;gBACd,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI;gBACV,GAAG,OAAO;aACV,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;QACH,4CAA4C;QAC5C,OAAO,gBAAgB,CAAC,IAAA,+BAAW,EAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,MAAM,CAClB,IAA4B,EAC5B,OAA0B;QAE1B,MAAM,IAAA,sBAAW,EAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YAC9C,OAAO,MAAM,IAAA,qBAAU,EAAC,GAAG,EAAE,CAC5B,IAAA,sBAAW,EAAC;gBACX,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI;gBACV,GAAG,OAAO;aACV,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,WAAW,CACvB,IAAiC,EACjC,OAA0B;QAE1B,mDAAmD;QACnD,MAAM,OAAO,GAAG;YACf,GAAG,IAAI;YACP,mBAAmB,EAAE,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC;SAChE,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAA,sBAAW,EAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YAC/D,OAAO,MAAM,IAAA,qBAAU,EAAC,GAAG,EAAE,CAC5B,IAAA,2BAAgB,EAAC;gBAChB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,IAAA,+BAAW,EAAC,OAAO,CAAC;gBAC1B,GAAG,OAAO;aACV,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;QACH,4CAA4C;QAC5C,OAAO,gBAAgB,CAAC,IAAA,+BAAW,EAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,CAAC;CACD;AAnKD,4BAmKC"}
@@ -1,5 +1,5 @@
1
- import { AppendRecord } from "./utils.js";
2
- export interface BatchTransformArgs {
1
+ import { AppendInput, type AppendRecord } from "./types.js";
2
+ export interface BatchTransformOptions {
3
3
  /** Duration in milliseconds to wait before flushing a batch (default: 5ms) */
4
4
  lingerDurationMillis?: number;
5
5
  /** Maximum number of records in a batch (default: 1000, max: 1000) */
@@ -7,21 +7,17 @@ export interface BatchTransformArgs {
7
7
  /** Maximum batch size in metered bytes (default: 1 MiB, max: 1 MiB) */
8
8
  maxBatchBytes?: number;
9
9
  /** Optional fencing token to enforce (remains static across batches) */
10
- fencing_token?: string;
10
+ fencingToken?: string;
11
11
  /** Optional sequence number to match for first batch (auto-increments for subsequent batches) */
12
- match_seq_num?: number;
12
+ matchSeqNum?: number;
13
13
  }
14
- /** Batch output type with optional fencing token and match_seq_num */
15
- export type BatchOutput = {
16
- records: AppendRecord[];
17
- fencing_token?: string;
18
- match_seq_num?: number;
19
- };
14
+ /** Batch output type with optional fencing token and matchSeqNum */
15
+ export type BatchOutput = AppendInput;
20
16
  /**
21
17
  * A TransformStream that batches AppendRecords based on time, record count, and byte size.
22
18
  *
23
19
  * Input: AppendRecord (individual records)
24
- * Output: { records: AppendRecord[], fencing_token?: string, match_seq_num?: number }
20
+ * Output: { records: AppendRecord[], fencingToken?: string, matchSeqNum?: number }
25
21
  *
26
22
  * @example
27
23
  * ```typescript
@@ -29,7 +25,7 @@ export type BatchOutput = {
29
25
  * lingerDurationMillis: 20,
30
26
  * maxBatchRecords: 100,
31
27
  * maxBatchBytes: 256 * 1024,
32
- * match_seq_num: 0 // Optional: auto-increments per batch
28
+ * matchSeqNum: 0 // Optional: auto-increments per batch
33
29
  * });
34
30
  *
35
31
  * // Pipe through the batcher and session to get acks
@@ -37,7 +33,7 @@ export type BatchOutput = {
37
33
  *
38
34
  * // Or use manually
39
35
  * const writer = batcher.writable.getWriter();
40
- * writer.write(AppendRecord.make("foo"));
36
+ * writer.write(AppendRecord.string({ body: "foo" }));
41
37
  * await writer.close();
42
38
  *
43
39
  * for await (const batch of batcher.readable) {
@@ -53,9 +49,9 @@ export declare class BatchTransform extends TransformStream<AppendRecord, BatchO
53
49
  private readonly maxBatchRecords;
54
50
  private readonly maxBatchBytes;
55
51
  private readonly lingerDuration;
56
- private readonly fencing_token?;
57
- private next_match_seq_num?;
58
- constructor(args?: BatchTransformArgs);
52
+ private readonly fencingToken?;
53
+ private nextMatchSeqNum?;
54
+ constructor(args?: BatchTransformOptions);
59
55
  private handleRecord;
60
56
  private flush;
61
57
  private startLingerTimer;
@@ -1 +1 @@
1
- {"version":3,"file":"batch-transform.d.ts","sourceRoot":"","sources":["../../src/batch-transform.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAgB,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,kBAAkB;IAClC,8EAA8E;IAC9E,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iGAAiG;IACjG,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,sEAAsE;AACtE,MAAM,MAAM,WAAW,GAAG;IACzB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,cAAe,SAAQ,eAAe,CAAC,YAAY,EAAE,WAAW,CAAC;IAC7E,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,UAAU,CACZ;IACN,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;IACxC,OAAO,CAAC,kBAAkB,CAAC,CAAS;gBAExB,IAAI,CAAC,EAAE,kBAAkB;IAyDrC,OAAO,CAAC,YAAY;IA4CpB,OAAO,CAAC,KAAK;IAgCb,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,iBAAiB;CAMzB"}
1
+ {"version":3,"file":"batch-transform.d.ts","sourceRoot":"","sources":["../../src/batch-transform.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAG5D,MAAM,WAAW,qBAAqB;IACrC,8EAA8E;IAC9E,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iGAAiG;IACjG,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,oEAAoE;AACpE,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,cAAe,SAAQ,eAAe,CAAC,YAAY,EAAE,WAAW,CAAC;IAC7E,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,UAAU,CACZ;IACN,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAS;IACvC,OAAO,CAAC,eAAe,CAAC,CAAS;gBAErB,IAAI,CAAC,EAAE,qBAAqB;IAyDxC,OAAO,CAAC,YAAY;IA4CpB,OAAO,CAAC,KAAK;IA2Bb,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,iBAAiB;CAMzB"}
@@ -2,12 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BatchTransform = void 0;
4
4
  const error_js_1 = require("./error.js");
5
+ const types_js_1 = require("./types.js");
5
6
  const utils_js_1 = require("./utils.js");
6
7
  /**
7
8
  * A TransformStream that batches AppendRecords based on time, record count, and byte size.
8
9
  *
9
10
  * Input: AppendRecord (individual records)
10
- * Output: { records: AppendRecord[], fencing_token?: string, match_seq_num?: number }
11
+ * Output: { records: AppendRecord[], fencingToken?: string, matchSeqNum?: number }
11
12
  *
12
13
  * @example
13
14
  * ```typescript
@@ -15,7 +16,7 @@ const utils_js_1 = require("./utils.js");
15
16
  * lingerDurationMillis: 20,
16
17
  * maxBatchRecords: 100,
17
18
  * maxBatchBytes: 256 * 1024,
18
- * match_seq_num: 0 // Optional: auto-increments per batch
19
+ * matchSeqNum: 0 // Optional: auto-increments per batch
19
20
  * });
20
21
  *
21
22
  * // Pipe through the batcher and session to get acks
@@ -23,7 +24,7 @@ const utils_js_1 = require("./utils.js");
23
24
  *
24
25
  * // Or use manually
25
26
  * const writer = batcher.writable.getWriter();
26
- * writer.write(AppendRecord.make("foo"));
27
+ * writer.write(AppendRecord.string({ body: "foo" }));
27
28
  * await writer.close();
28
29
  *
29
30
  * for await (const batch of batcher.readable) {
@@ -39,8 +40,8 @@ class BatchTransform extends TransformStream {
39
40
  maxBatchRecords;
40
41
  maxBatchBytes;
41
42
  lingerDuration;
42
- fencing_token;
43
- next_match_seq_num;
43
+ fencingToken;
44
+ nextMatchSeqNum;
44
45
  constructor(args) {
45
46
  let controller;
46
47
  super({
@@ -91,8 +92,8 @@ class BatchTransform extends TransformStream {
91
92
  this.maxBatchRecords = args?.maxBatchRecords ?? 1000;
92
93
  this.maxBatchBytes = args?.maxBatchBytes ?? 1024 * 1024;
93
94
  this.lingerDuration = args?.lingerDurationMillis ?? 5;
94
- this.fencing_token = args?.fencing_token;
95
- this.next_match_seq_num = args?.match_seq_num;
95
+ this.fencingToken = args?.fencingToken;
96
+ this.nextMatchSeqNum = args?.matchSeqNum;
96
97
  }
97
98
  handleRecord(record) {
98
99
  const recordSize = (0, utils_js_1.meteredBytes)(record);
@@ -133,22 +134,17 @@ class BatchTransform extends TransformStream {
133
134
  if (this.currentBatch.length === 0) {
134
135
  return;
135
136
  }
136
- // Auto-increment match_seq_num for next batch
137
- const match_seq_num = this.next_match_seq_num;
138
- if (this.next_match_seq_num !== undefined) {
139
- this.next_match_seq_num += this.currentBatch.length;
137
+ // Auto-increment matchSeqNum for next batch
138
+ const matchSeqNum = this.nextMatchSeqNum;
139
+ if (this.nextMatchSeqNum !== undefined) {
140
+ this.nextMatchSeqNum += this.currentBatch.length;
140
141
  }
141
- // Emit the batch downstream with optional fencing token and match_seq_num
142
+ // Emit the batch downstream with optional fencing token and matchSeqNum
142
143
  if (this.controller) {
143
- const batch = {
144
- records: [...this.currentBatch],
145
- };
146
- if (this.fencing_token !== undefined) {
147
- batch.fencing_token = this.fencing_token;
148
- }
149
- if (match_seq_num !== undefined) {
150
- batch.match_seq_num = match_seq_num;
151
- }
144
+ const batch = types_js_1.AppendInput.create([...this.currentBatch], {
145
+ fencingToken: this.fencingToken,
146
+ matchSeqNum,
147
+ });
152
148
  this.controller.enqueue(batch);
153
149
  }
154
150
  // Reset batch
@@ -1 +1 @@
1
- {"version":3,"file":"batch-transform.js","sourceRoot":"","sources":["../../src/batch-transform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"batch-transform.js","sourceRoot":"","sources":["../../src/batch-transform.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { S2Endpoints, type S2EndpointsInit } from "./endpoints.js";
1
2
  /**
2
3
  * Policy for retrying append operations.
3
4
  *
@@ -16,11 +17,18 @@ export type RetryConfig = {
16
17
  */
17
18
  maxAttempts?: number;
18
19
  /**
19
- * Base delay in milliseconds between retry attempts.
20
- * Fixed delay per attempt with jitter applied.
20
+ * Minimum delay in milliseconds for exponential backoff.
21
+ * The first retry will have a delay in the range [minDelayMillis, 2*minDelayMillis).
21
22
  * @default 100
22
23
  */
23
- retryBackoffDurationMillis?: number;
24
+ minDelayMillis?: number;
25
+ /**
26
+ * Maximum base delay in milliseconds for exponential backoff.
27
+ * Once the exponential backoff reaches this value, it stays capped here.
28
+ * Note: actual delay with jitter can be up to 2*maxDelayMillis.
29
+ * @default 1000
30
+ */
31
+ maxDelayMillis?: number;
24
32
  /**
25
33
  * Policy for retrying append operations.
26
34
  * @default "all"
@@ -33,7 +41,22 @@ export type RetryConfig = {
33
41
  * Used by retrying append sessions. When unset, defaults to 5000ms.
34
42
  */
35
43
  requestTimeoutMillis?: number;
44
+ /**
45
+ * Maximum time in milliseconds to wait for connection establishment.
46
+ * This is a "fail fast" timeout that aborts slow connections early.
47
+ * Connection time counts toward requestTimeoutMillis.
48
+ *
49
+ * Only applies to S2S (HTTP/2) transport when establishing new connections.
50
+ * Reused pooled connections are not subject to this timeout.
51
+ *
52
+ * @default 5000
53
+ */
54
+ connectionTimeoutMillis?: number;
36
55
  };
56
+ export type S2EnvironmentConfig = Partial<S2ClientOptions>;
57
+ export declare class S2Environment {
58
+ static parse(): S2EnvironmentConfig;
59
+ }
37
60
  /**
38
61
  * Configuration for constructing the top-level `S2` client.
39
62
  *
@@ -46,19 +69,15 @@ export type S2ClientOptions = {
46
69
  */
47
70
  accessToken: string;
48
71
  /**
49
- * Base URL for the S2 API.
50
- * Defaults to `https://aws.s2.dev`.
51
- */
52
- baseUrl?: string;
53
- /**
54
- * Function to make a basin-specific base URL.
55
- * Defaults to `https://{basin}.b.aws.s2.dev`.
72
+ * Endpoint configuration for the S2 environment.
73
+ *
74
+ * Defaults to AWS (`aws.s2.dev` and `{basin}.b.aws.s2.dev`) with the API base path inferred as `/v1`.
56
75
  */
57
- makeBasinBaseUrl?: (basin: string) => string;
76
+ endpoints?: S2Endpoints | S2EndpointsInit;
58
77
  /**
59
78
  * Retry configuration for handling transient failures.
60
79
  * Applies to management operations (basins, streams, tokens) and stream operations (read, append).
61
- * @default { maxAttempts: 3, retryBackoffDurationMillis: 100 }
80
+ * @default { maxAttempts: 3, minDelayMillis: 100, maxDelayMillis: 1000, appendRetryPolicy: "all" }
62
81
  */
63
82
  retry?: RetryConfig;
64
83
  };
@@ -71,16 +90,4 @@ export type S2RequestOptions = {
71
90
  */
72
91
  signal?: AbortSignal;
73
92
  };
74
- /**
75
- * Helper type that flattens an endpoint's `body`, `path` and `query` into a
76
- * single object. This lets public methods accept one coherent argument object
77
- * instead of three separate bags.
78
- */
79
- export type DataToObject<T> = (T extends {
80
- body?: infer B;
81
- } ? B extends undefined | never ? {} : B : {}) & (T extends {
82
- path?: infer P;
83
- } ? (P extends undefined | never ? {} : P) : {}) & (T extends {
84
- query?: infer Q;
85
- } ? (Q extends undefined | never ? {} : Q) : {});
86
93
  //# sourceMappingURL=common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/common.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,eAAe,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACzB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAEpC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAEtC;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG;IAC7B;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C;;;;OAIG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC9B;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;CAAE,GACxD,CAAC,SAAS,SAAS,GAAG,KAAK,GAC1B,EAAE,GACF,CAAC,GACF,EAAE,CAAC,GACL,CAAC,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAC5E,CAAC,CAAC,SAAS;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,eAAe,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACzB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAEtC;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;;;;;;;OASG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAE3D,qBAAa,aAAa;WACX,KAAK,IAAI,mBAAmB;CAoB1C;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG;IAC7B;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,SAAS,CAAC,EAAE,WAAW,GAAG,eAAe,CAAC;IAC1C;;;;OAIG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC9B;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC"}
@@ -1,3 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.S2Environment = void 0;
4
+ const endpoints_js_1 = require("./endpoints.js");
5
+ class S2Environment {
6
+ static parse() {
7
+ const config = {};
8
+ const token = process.env.S2_ACCESS_TOKEN;
9
+ if (token) {
10
+ config.accessToken = token;
11
+ }
12
+ const accountEndpoint = process.env.S2_ACCOUNT_ENDPOINT;
13
+ const basinEndpoint = process.env.S2_BASIN_ENDPOINT;
14
+ if (accountEndpoint || basinEndpoint) {
15
+ const endpointsInit = {
16
+ account: accountEndpoint || undefined,
17
+ basin: basinEndpoint || undefined,
18
+ };
19
+ config.endpoints = new endpoints_js_1.S2Endpoints(endpointsInit);
20
+ }
21
+ return config;
22
+ }
23
+ }
24
+ exports.S2Environment = S2Environment;
3
25
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/common.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/common.ts"],"names":[],"mappings":";;;AAAA,iDAAmE;AAiEnE,MAAa,aAAa;IAClB,MAAM,CAAC,KAAK;QAClB,MAAM,MAAM,GAAwB,EAAE,CAAC;QAEvC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QAC1C,IAAI,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;QAC5B,CAAC;QAED,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACxD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACpD,IAAI,eAAe,IAAI,aAAa,EAAE,CAAC;YACtC,MAAM,aAAa,GAAoB;gBACtC,OAAO,EAAE,eAAe,IAAI,SAAS;gBACrC,KAAK,EAAE,aAAa,IAAI,SAAS;aACjC,CAAC;YACF,MAAM,CAAC,SAAS,GAAG,IAAI,0BAAW,CAAC,aAAa,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;CACD;AArBD,sCAqBC"}
@@ -0,0 +1,63 @@
1
+ type Scheme = "http" | "https";
2
+ export type EndpointTemplateInit = {
3
+ /**
4
+ * Endpoint string. May be:
5
+ * - `host`
6
+ * - `host:port`
7
+ * - `https://host[:port][/path]`
8
+ * - `http://host[:port][/path]`
9
+ *
10
+ * For basin endpoints, may include `{basin}` placeholder in hostname and/or path.
11
+ */
12
+ endpoint: string;
13
+ };
14
+ export declare class EndpointTemplate {
15
+ readonly raw: string;
16
+ readonly scheme: Scheme;
17
+ readonly hostTemplate: string;
18
+ readonly port: string;
19
+ readonly pathTemplate: string;
20
+ readonly hasBasinPlaceholder: boolean;
21
+ readonly explicitPathProvided: boolean;
22
+ constructor({ endpoint }: EndpointTemplateInit);
23
+ /**
24
+ * Resolve the template into a base URL string.
25
+ *
26
+ * - If `{basin}` appears in the hostname, it is substituted verbatim (basin names are already validated elsewhere).
27
+ * - If `{basin}` appears in the path/query/hash, it is substituted via `encodeURIComponent`.
28
+ */
29
+ baseUrl(basin?: string): string;
30
+ }
31
+ export type S2EndpointsInit = {
32
+ /**
33
+ * Account endpoint (authority with optional scheme/port, optional path).
34
+ * If no path is present, `/v1` is used.
35
+ */
36
+ account?: string;
37
+ /**
38
+ * Basin endpoint (authority with optional scheme/port, optional path).
39
+ * Supports `{basin}` placeholder anywhere. If no path is present, `/v1` is used.
40
+ */
41
+ basin?: string;
42
+ };
43
+ /**
44
+ * Endpoint configuration for the S2 environment.
45
+ *
46
+ * This mirrors the Rust SDK's endpoint model, with an additional capability:
47
+ * the basin endpoint may include `{basin}` anywhere (hostname and/or path).
48
+ */
49
+ export declare class S2Endpoints {
50
+ readonly account: EndpointTemplate;
51
+ readonly basin: EndpointTemplate;
52
+ /**
53
+ * When true, include `s2-basin: <name>` header on basin-scoped requests.
54
+ *
55
+ * Per project convention: enabled whenever a non-default basin endpoint is provided.
56
+ */
57
+ readonly includeBasinHeader: boolean;
58
+ constructor(init?: S2EndpointsInit);
59
+ accountBaseUrl(): string;
60
+ basinBaseUrl(basin: string): string;
61
+ }
62
+ export {};
63
+ //# sourceMappingURL=endpoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../../src/endpoints.ts"],"names":[],"mappings":"AAAA,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAwC/B,MAAM,MAAM,oBAAoB,GAAG;IAClC;;;;;;;;OAQG;IACH,QAAQ,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,gBAAgB;IAC5B,SAAgB,GAAG,EAAE,MAAM,CAAC;IAC5B,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,YAAY,EAAE,MAAM,CAAC;IACrC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,YAAY,EAAE,MAAM,CAAC;IACrC,SAAgB,mBAAmB,EAAE,OAAO,CAAC;IAC7C,SAAgB,oBAAoB,EAAE,OAAO,CAAC;gBAElC,EAAE,QAAQ,EAAE,EAAE,oBAAoB;IAwC9C;;;;;OAKG;IACI,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;CAYtC;AAED,MAAM,MAAM,eAAe,GAAG;IAC7B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAKF;;;;;GAKG;AACH,qBAAa,WAAW;IACvB,SAAgB,OAAO,EAAE,gBAAgB,CAAC;IAC1C,SAAgB,KAAK,EAAE,gBAAgB,CAAC;IACxC;;;;OAIG;IACH,SAAgB,kBAAkB,EAAE,OAAO,CAAC;gBAEhC,IAAI,CAAC,EAAE,eAAe;IAU3B,cAAc,IAAI,MAAM;IAIxB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAG1C"}