@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,14 +3,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.S2Stream = void 0;
4
4
  const error_js_1 = require("./error.js");
5
5
  const index_js_1 = require("./generated/index.js");
6
+ const mappers_js_1 = require("./internal/mappers.js");
6
7
  const retry_js_1 = require("./lib/retry.js");
7
8
  const factory_js_1 = require("./lib/stream/factory.js");
8
9
  const shared_js_1 = require("./lib/stream/transport/fetch/shared.js");
10
+ /**
11
+ * Basin-scoped stream helper for append/read operations.
12
+ *
13
+ * Created via {@link S2Basin.stream}. Provides direct methods plus factories for read/append sessions.
14
+ */
9
15
  class S2Stream {
10
16
  client;
11
17
  transportConfig;
12
18
  retryConfig;
13
19
  _transport;
20
+ closed = false;
21
+ closePromise;
14
22
  name;
15
23
  constructor(name, client, transportConfig, retryConfig) {
16
24
  this.name = name;
@@ -22,25 +30,33 @@ class S2Stream {
22
30
  * Get or create the transport instance
23
31
  */
24
32
  async getTransport() {
33
+ this.ensureOpen();
25
34
  if (!this._transport) {
26
35
  this._transport = await (0, factory_js_1.createSessionTransport)(this.transportConfig);
27
36
  }
28
37
  return this._transport;
29
38
  }
39
+ ensureOpen() {
40
+ if (this.closed) {
41
+ throw new error_js_1.S2Error({ message: "S2Stream is closed" });
42
+ }
43
+ }
30
44
  /**
31
45
  * Check the tail of the stream.
32
46
  *
33
47
  * Returns the next sequence number and timestamp to be assigned (`tail`).
34
48
  */
35
49
  async checkTail(options) {
50
+ this.ensureOpen();
36
51
  return await (0, retry_js_1.withRetries)(this.retryConfig, async () => {
37
- return await (0, error_js_1.withS2Data)(() => (0, index_js_1.checkTail)({
52
+ const response = await (0, error_js_1.withS2Data)(() => (0, index_js_1.checkTail)({
38
53
  client: this.client,
39
54
  path: {
40
55
  stream: this.name,
41
56
  },
42
57
  ...options,
43
58
  }));
59
+ return (0, mappers_js_1.fromAPITailResponse)(response);
44
60
  });
45
61
  }
46
62
  /**
@@ -51,33 +67,45 @@ class S2Stream {
51
67
  * - Non-streaming reads are bounded by `count` and `bytes` (defaults 1000 and 1 MiB).
52
68
  * - Use `readSession` for streaming reads
53
69
  */
54
- async read(args, options) {
70
+ async read(input, options) {
71
+ this.ensureOpen();
72
+ const { as, ...requestOptions } = options ?? {};
55
73
  return await (0, retry_js_1.withRetries)(this.retryConfig, async () => {
56
- return await (0, shared_js_1.streamRead)(this.name, this.client, args, options);
74
+ // Convert ReadInput to ReadArgs using mapper
75
+ const readArgs = {
76
+ ...(0, mappers_js_1.toAPIReadQuery)(input),
77
+ as,
78
+ };
79
+ const genBatch = await (0, shared_js_1.streamRead)(this.name, this.client, readArgs, requestOptions);
80
+ // Convert from API to SDK ReadBatch
81
+ return (as === "bytes"
82
+ ? (0, mappers_js_1.fromAPIReadBatchBytes)(genBatch)
83
+ : (0, mappers_js_1.fromAPIReadBatchString)(genBatch));
57
84
  });
58
85
  }
59
86
  /**
60
- * Append one or more records to the stream.
87
+ * Append a batch of records to the stream.
61
88
  *
62
89
  * - Automatically base64-encodes when format is "bytes".
63
- * - Supports conditional appends via `fencing_token` and `match_seq_num`.
90
+ * - Supports conditional appends via `fencingToken` and `matchSeqNum` in the input.
64
91
  * - Returns the acknowledged range and the stream tail after the append.
92
+ * - All records in a batch must use the same format (either all string or all bytes).
65
93
  *
66
- * All records in a single append call must use the same format (either all string or all bytes).
94
+ * Use {@link AppendInput.create} to construct a validated AppendInput.
67
95
  * For high-throughput sequential appends, use `appendSession()` instead.
68
96
  *
69
- * @param records The record(s) to append
70
- * @param args Optional append arguments (fencing_token, match_seq_num)
97
+ * @param input The append input containing records and optional conditions
71
98
  * @param options Optional request options
72
99
  */
73
- async append(records, args, options) {
100
+ async append(input, options) {
101
+ this.ensureOpen();
74
102
  return await (0, retry_js_1.withRetries)(this.retryConfig, async () => {
75
- return await (0, shared_js_1.streamAppend)(this.name, this.client, records, args, options);
103
+ return await (0, shared_js_1.streamAppend)(this.name, this.client, input, options);
76
104
  }, (config, error) => {
77
105
  if ((config.appendRetryPolicy ?? "all") === "noSideEffects") {
78
106
  // Allow retry only when the append is naturally idempotent by containing
79
107
  // a match_seq_num condition.
80
- return !!args?.match_seq_num;
108
+ return input.matchSeqNum !== undefined;
81
109
  }
82
110
  else {
83
111
  return true;
@@ -90,9 +118,16 @@ class S2Stream {
90
118
  * Use the returned session as an async iterable or as a readable stream.
91
119
  * When `as: "bytes"` is provided, bodies and headers are decoded to `Uint8Array`.
92
120
  */
93
- async readSession(args, options) {
121
+ async readSession(input, options) {
122
+ this.ensureOpen();
123
+ const { as, ...requestOptions } = options ?? {};
94
124
  const transport = await this.getTransport();
95
- return await transport.makeReadSession(this.name, args, options);
125
+ // Convert ReadInput to ReadArgs using mapper
126
+ const readArgs = {
127
+ ...(0, mappers_js_1.toAPIReadQuery)(input),
128
+ as,
129
+ };
130
+ return await transport.makeReadSession(this.name, readArgs, requestOptions);
96
131
  }
97
132
  /**
98
133
  * Create an append session that guarantees ordering of submissions.
@@ -104,9 +139,38 @@ class S2Stream {
104
139
  * @param requestOptions Optional request options
105
140
  */
106
141
  async appendSession(sessionOptions, requestOptions) {
142
+ this.ensureOpen();
107
143
  const transport = await this.getTransport();
108
144
  return await transport.makeAppendSession(this.name, sessionOptions, requestOptions);
109
145
  }
146
+ async close() {
147
+ if (this.closePromise) {
148
+ return this.closePromise;
149
+ }
150
+ this.closePromise = (async () => {
151
+ if (this.closed) {
152
+ return;
153
+ }
154
+ this.closed = true;
155
+ if (this._transport) {
156
+ try {
157
+ await this._transport.close();
158
+ }
159
+ finally {
160
+ this._transport = undefined;
161
+ }
162
+ }
163
+ })();
164
+ try {
165
+ await this.closePromise;
166
+ }
167
+ finally {
168
+ this.closePromise = undefined;
169
+ }
170
+ }
171
+ async [Symbol.asyncDispose]() {
172
+ await this.close();
173
+ }
110
174
  }
111
175
  exports.S2Stream = S2Stream;
112
176
  //# sourceMappingURL=stream.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,11 @@
1
- import type { DataToObject, RetryConfig, S2RequestOptions } from "./common.js";
1
+ import type { RetryConfig, S2RequestOptions } from "./common.js";
2
2
  import type { Client } from "./generated/client/types.gen.js";
3
- import { type CreateStreamData, type CreateStreamResponse, type DeleteStreamData, type GetStreamConfigData, type ListStreamsData, type ListStreamsResponse, type ReconfigureStreamData, type ReconfigureStreamResponse, type StreamConfig } from "./generated/index.js";
4
- export interface ListStreamsArgs extends DataToObject<ListStreamsData> {
5
- }
6
- export interface CreateStreamArgs extends DataToObject<CreateStreamData> {
7
- }
8
- export interface GetStreamConfigArgs extends DataToObject<GetStreamConfigData> {
9
- }
10
- export interface DeleteStreamArgs extends DataToObject<DeleteStreamData> {
11
- }
12
- export interface ReconfigureStreamArgs extends DataToObject<ReconfigureStreamData> {
13
- }
3
+ import type * as Types from "./types.js";
4
+ /**
5
+ * Basin-scoped helper for listing and configuring streams.
6
+ *
7
+ * Access via {@link S2Basin.streams}. Methods inherit the basin's retry configuration.
8
+ */
14
9
  export declare class S2Streams {
15
10
  private readonly client;
16
11
  private readonly retryConfig?;
@@ -19,34 +14,49 @@ export declare class S2Streams {
19
14
  * List streams in the basin.
20
15
  *
21
16
  * @param args.prefix Return streams whose names start with the given prefix
22
- * @param args.start_after Name to start after (for pagination)
17
+ * @param args.startAfter Name to start after (for pagination)
23
18
  * @param args.limit Max results (up to 1000)
24
19
  */
25
- list(args?: ListStreamsArgs, options?: S2RequestOptions): Promise<ListStreamsResponse>;
20
+ list(args?: Types.ListStreamsInput, options?: S2RequestOptions): Promise<Types.ListStreamsResponse>;
21
+ /**
22
+ * List all streams in the basin with automatic pagination.
23
+ * Returns a lazy async iterable that fetches pages as needed.
24
+ *
25
+ * @param includeDeleted - Include deleted streams (default: false)
26
+ * @param args - Optional filtering options: `prefix` to filter by name prefix, `limit` for max results per page
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * for await (const stream of basin.streams.listAll({ prefix: "events-" })) {
31
+ * console.log(stream.name);
32
+ * }
33
+ * ```
34
+ */
35
+ listAll(includeDeleted?: boolean, args?: Types.ListAllStreamsInput, options?: S2RequestOptions): AsyncIterable<Types.StreamInfo>;
26
36
  /**
27
37
  * Create a stream.
28
38
  *
29
39
  * @param args.stream Stream name (1-512 bytes, unique within the basin)
30
- * @param args.config Stream configuration (retention, storage class, timestamping, delete-on-empty)
40
+ * @param args.config Stream configuration (retentionPolicy, storageClass, timestamping, deleteOnEmpty)
31
41
  */
32
- create(args: CreateStreamArgs, options?: S2RequestOptions): Promise<CreateStreamResponse>;
42
+ create(args: Types.CreateStreamInput, options?: S2RequestOptions): Promise<Types.CreateStreamResponse>;
33
43
  /**
34
44
  * Get stream configuration.
35
45
  *
36
46
  * @param args.stream Stream name
37
47
  */
38
- getConfig(args: GetStreamConfigArgs, options?: S2RequestOptions): Promise<StreamConfig>;
48
+ getConfig(args: Types.GetStreamConfigInput, options?: S2RequestOptions): Promise<Types.StreamConfig>;
39
49
  /**
40
50
  * Delete a stream.
41
51
  *
42
52
  * @param args.stream Stream name
43
53
  */
44
- delete(args: DeleteStreamArgs, options?: S2RequestOptions): Promise<void>;
54
+ delete(args: Types.DeleteStreamInput, options?: S2RequestOptions): Promise<void>;
45
55
  /**
46
56
  * Reconfigure a stream.
47
57
  *
48
58
  * @param args Configuration for the stream to reconfigure (including stream name and fields to change)
49
59
  */
50
- reconfigure(args: ReconfigureStreamArgs, options?: S2RequestOptions): Promise<ReconfigureStreamResponse>;
60
+ reconfigure(args: Types.ReconfigureStreamInput, options?: S2RequestOptions): Promise<Types.ReconfigureStreamResponse>;
51
61
  }
52
62
  //# sourceMappingURL=streams.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"streams.d.ts","sourceRoot":"","sources":["../../src/streams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAEzB,KAAK,gBAAgB,EAErB,KAAK,mBAAmB,EAExB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EAExB,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAE9B,KAAK,YAAY,EACjB,MAAM,sBAAsB,CAAC;AAG9B,MAAM,WAAW,eAAgB,SAAQ,YAAY,CAAC,eAAe,CAAC;CAAG;AACzE,MAAM,WAAW,gBAAiB,SAAQ,YAAY,CAAC,gBAAgB,CAAC;CAAG;AAC3E,MAAM,WAAW,mBAChB,SAAQ,YAAY,CAAC,mBAAmB,CAAC;CAAG;AAC7C,MAAM,WAAW,gBAAiB,SAAQ,YAAY,CAAC,gBAAgB,CAAC;CAAG;AAC3E,MAAM,WAAW,qBAChB,SAAQ,YAAY,CAAC,qBAAqB,CAAC;CAAG;AAE/C,qBAAa,SAAS;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAc;gBAE/B,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW;IAKrD;;;;;;OAMG;IACU,IAAI,CAChB,IAAI,CAAC,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,mBAAmB,CAAC;IAY/B;;;;;OAKG;IACU,MAAM,CAClB,IAAI,EAAE,gBAAgB,EACtB,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,oBAAoB,CAAC;IAYhC;;;;OAIG;IACU,SAAS,CACrB,IAAI,EAAE,mBAAmB,EACzB,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,YAAY,CAAC;IAYxB;;;;OAIG;IACU,MAAM,CAClB,IAAI,EAAE,gBAAgB,EACtB,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC;IAYhB;;;;OAIG;IACU,WAAW,CACvB,IAAI,EAAE,qBAAqB,EAC3B,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,yBAAyB,CAAC;CAYrC"}
1
+ {"version":3,"file":"streams.d.ts","sourceRoot":"","sources":["../../src/streams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAa9D,OAAO,KAAK,KAAK,KAAK,MAAM,YAAY,CAAC;AAkEzC;;;;GAIG;AACH,qBAAa,SAAS;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAc;gBAE/B,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW;IAKrD;;;;;;OAMG;IACU,IAAI,CAChB,IAAI,CAAC,EAAE,KAAK,CAAC,gBAAgB,EAC7B,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC;IAiBrC;;;;;;;;;;;;;OAaG;IACI,OAAO,CACb,cAAc,UAAQ,EACtB,IAAI,CAAC,EAAE,KAAK,CAAC,mBAAmB,EAChC,OAAO,CAAC,EAAE,gBAAgB,GACxB,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC;IAYlC;;;;;OAKG;IACU,MAAM,CAClB,IAAI,EAAE,KAAK,CAAC,iBAAiB,EAC7B,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC;IAoBtC;;;;OAIG;IACU,SAAS,CACrB,IAAI,EAAE,KAAK,CAAC,oBAAoB,EAChC,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;IAc9B;;;;OAIG;IACU,MAAM,CAClB,IAAI,EAAE,KAAK,CAAC,iBAAiB,EAC7B,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC;IAYhB;;;;OAIG;IACU,WAAW,CACvB,IAAI,EAAE,KAAK,CAAC,sBAAsB,EAClC,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC;CAoB3C"}
@@ -3,7 +3,75 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.S2Streams = 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
+ function toDate(value) {
11
+ if (value === null)
12
+ return null;
13
+ if (value === undefined)
14
+ return undefined;
15
+ return new Date(value);
16
+ }
17
+ function transformStreamInfo(stream) {
18
+ return {
19
+ ...stream,
20
+ createdAt: toDate(stream.createdAt),
21
+ deletedAt: toDate(stream.deletedAt),
22
+ };
23
+ }
24
+ /** Convert SDK RetentionPolicy (ageSecs) to API RetentionPolicy (age). */
25
+ function toAPIRetentionPolicy(policy) {
26
+ if (policy === null)
27
+ return null;
28
+ if (policy === undefined)
29
+ return undefined;
30
+ if ("ageSecs" in policy) {
31
+ return { age: Math.floor(policy.ageSecs) };
32
+ }
33
+ return policy; // { infinite: ... } passes through
34
+ }
35
+ /** Convert API RetentionPolicy (age) to SDK RetentionPolicy (ageSecs). */
36
+ function toSDKRetentionPolicy(policy) {
37
+ if (policy === null)
38
+ return null;
39
+ if (policy === undefined)
40
+ return undefined;
41
+ if ("age" in policy) {
42
+ return { ageSecs: policy.age };
43
+ }
44
+ return policy; // { infinite: ... } passes through
45
+ }
46
+ /** Convert SDK StreamConfig to API format (handles retentionPolicy.ageSecs → age). */
47
+ function toAPIStreamConfig(config) {
48
+ if (config === null || config === undefined)
49
+ return config;
50
+ return {
51
+ ...config,
52
+ deleteOnEmpty: config.deleteOnEmpty
53
+ ? {
54
+ ...config.deleteOnEmpty,
55
+ minAgeSecs: config.deleteOnEmpty.minAgeSecs === undefined
56
+ ? undefined
57
+ : Math.max(0, Math.floor(config.deleteOnEmpty.minAgeSecs)),
58
+ }
59
+ : config.deleteOnEmpty,
60
+ retentionPolicy: toAPIRetentionPolicy(config.retentionPolicy),
61
+ };
62
+ }
63
+ /** Convert API StreamConfig to SDK format (handles retentionPolicy.age → ageSecs). */
64
+ function toSDKStreamConfig(config) {
65
+ return {
66
+ ...config,
67
+ retentionPolicy: toSDKRetentionPolicy(config?.retentionPolicy),
68
+ };
69
+ }
70
+ /**
71
+ * Basin-scoped helper for listing and configuring streams.
72
+ *
73
+ * Access via {@link S2Basin.streams}. Methods inherit the basin's retry configuration.
74
+ */
7
75
  class S2Streams {
8
76
  client;
9
77
  retryConfig;
@@ -15,32 +83,65 @@ class S2Streams {
15
83
  * List streams in the basin.
16
84
  *
17
85
  * @param args.prefix Return streams whose names start with the given prefix
18
- * @param args.start_after Name to start after (for pagination)
86
+ * @param args.startAfter Name to start after (for pagination)
19
87
  * @param args.limit Max results (up to 1000)
20
88
  */
21
89
  async list(args, options) {
22
- return await (0, retry_js_1.withRetries)(this.retryConfig, async () => {
90
+ const response = await (0, retry_js_1.withRetries)(this.retryConfig, async () => {
23
91
  return await (0, error_js_1.withS2Data)(() => (0, index_js_1.listStreams)({
24
92
  client: this.client,
25
- query: args,
93
+ query: (0, case_transform_js_1.toSnakeCase)(args),
26
94
  ...options,
27
95
  }));
28
96
  });
97
+ const camelCased = (0, case_transform_js_1.toCamelCase)(response);
98
+ return {
99
+ ...camelCased,
100
+ streams: camelCased.streams.map(transformStreamInfo),
101
+ };
102
+ }
103
+ /**
104
+ * List all streams in the basin with automatic pagination.
105
+ * Returns a lazy async iterable that fetches pages as needed.
106
+ *
107
+ * @param includeDeleted - Include deleted streams (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 stream of basin.streams.listAll({ prefix: "events-" })) {
113
+ * console.log(stream.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.streams.filter((s) => includeDeleted || !s.deletedAt),
120
+ hasMore: r.hasMore,
121
+ })), args ?? {}, (stream) => stream.name);
29
122
  }
30
123
  /**
31
124
  * Create a stream.
32
125
  *
33
126
  * @param args.stream Stream name (1-512 bytes, unique within the basin)
34
- * @param args.config Stream configuration (retention, storage class, timestamping, delete-on-empty)
127
+ * @param args.config Stream configuration (retentionPolicy, storageClass, timestamping, deleteOnEmpty)
35
128
  */
36
129
  async create(args, options) {
37
- return await (0, retry_js_1.withRetries)(this.retryConfig, async () => {
130
+ const requestToken = (0, base64_js_1.randomToken)();
131
+ // Convert SDK config to API format (ageSecs → age)
132
+ const apiArgs = {
133
+ ...args,
134
+ config: toAPIStreamConfig(args.config),
135
+ };
136
+ const response = await (0, retry_js_1.withRetries)(this.retryConfig, async () => {
38
137
  return await (0, error_js_1.withS2Data)(() => (0, index_js_1.createStream)({
39
138
  client: this.client,
40
- body: args,
139
+ body: (0, case_transform_js_1.toSnakeCase)(apiArgs),
140
+ headers: { "s2-request-token": requestToken },
41
141
  ...options,
42
142
  }));
43
143
  });
144
+ return (0, case_transform_js_1.toCamelCase)(response);
44
145
  }
45
146
  /**
46
147
  * Get stream configuration.
@@ -48,13 +149,15 @@ class S2Streams {
48
149
  * @param args.stream Stream name
49
150
  */
50
151
  async getConfig(args, options) {
51
- return await (0, retry_js_1.withRetries)(this.retryConfig, async () => {
152
+ const response = await (0, retry_js_1.withRetries)(this.retryConfig, async () => {
52
153
  return await (0, error_js_1.withS2Data)(() => (0, index_js_1.getStreamConfig)({
53
154
  client: this.client,
54
155
  path: args,
55
156
  ...options,
56
157
  }));
57
158
  });
159
+ // Convert API format to SDK (age → ageSecs)
160
+ return toSDKStreamConfig((0, case_transform_js_1.toCamelCase)(response));
58
161
  }
59
162
  /**
60
163
  * Delete a stream.
@@ -76,14 +179,22 @@ class S2Streams {
76
179
  * @param args Configuration for the stream to reconfigure (including stream name and fields to change)
77
180
  */
78
181
  async reconfigure(args, options) {
79
- return await (0, retry_js_1.withRetries)(this.retryConfig, async () => {
182
+ // Convert SDK config to API format (ageSecs age)
183
+ const apiArgs = {
184
+ ...args,
185
+ retentionPolicy: toAPIRetentionPolicy(args.retentionPolicy),
186
+ };
187
+ const response = await (0, retry_js_1.withRetries)(this.retryConfig, async () => {
80
188
  return await (0, error_js_1.withS2Data)(() => (0, index_js_1.reconfigureStream)({
81
189
  client: this.client,
82
190
  path: args,
83
- body: args,
191
+ body: (0, case_transform_js_1.toSnakeCase)(apiArgs),
84
192
  ...options,
85
193
  }));
86
194
  });
195
+ // Convert API format to SDK (age → ageSecs)
196
+ const camelCased = (0, case_transform_js_1.toCamelCase)(response);
197
+ return toSDKStreamConfig(camelCased);
87
198
  }
88
199
  }
89
200
  exports.S2Streams = S2Streams;
@@ -1 +1 @@
1
- {"version":3,"file":"streams.js","sourceRoot":"","sources":["../../src/streams.ts"],"names":[],"mappings":";;;AACA,yCAAwC;AAExC,mDAe8B;AAC9B,6CAA6C;AAU7C,MAAa,SAAS;IACJ,MAAM,CAAS;IACf,WAAW,CAAe;IAE3C,YAAY,MAAc,EAAE,WAAyB;QACpD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,IAAI,CAChB,IAAsB,EACtB,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,KAAK,EAAE,IAAI;gBACX,GAAG,OAAO;aACV,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,MAAM,CAClB,IAAsB,EACtB,OAA0B;QAE1B,OAAO,MAAM,IAAA,sBAAW,EAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YACrD,OAAO,MAAM,IAAA,qBAAU,EAAC,GAAG,EAAE,CAC5B,IAAA,uBAAY,EAAC;gBACZ,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,IAAyB,EACzB,OAA0B;QAE1B,OAAO,MAAM,IAAA,sBAAW,EAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YACrD,OAAO,MAAM,IAAA,qBAAU,EAAC,GAAG,EAAE,CAC5B,IAAA,0BAAe,EAAC;gBACf,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,IAAsB,EACtB,OAA0B;QAE1B,MAAM,IAAA,sBAAW,EAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YAC9C,OAAO,MAAM,IAAA,qBAAU,EAAC,GAAG,EAAE,CAC5B,IAAA,uBAAY,EAAC;gBACZ,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,IAA2B,EAC3B,OAA0B;QAE1B,OAAO,MAAM,IAAA,sBAAW,EAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YACrD,OAAO,MAAM,IAAA,qBAAU,EAAC,GAAG,EAAE,CAC5B,IAAA,4BAAiB,EAAC;gBACjB,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;AAhHD,8BAgHC"}
1
+ {"version":3,"file":"streams.js","sourceRoot":"","sources":["../../src/streams.ts"],"names":[],"mappings":"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"}