@s2-dev/streamstore 0.17.6 → 0.18.1

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 (176) hide show
  1. package/README.md +69 -1
  2. package/dist/cjs/accessTokens.d.ts +3 -2
  3. package/dist/cjs/accessTokens.d.ts.map +1 -1
  4. package/dist/cjs/accessTokens.js +22 -37
  5. package/dist/cjs/accessTokens.js.map +1 -1
  6. package/dist/cjs/basin.d.ts +4 -3
  7. package/dist/cjs/basin.d.ts.map +1 -1
  8. package/dist/cjs/basin.js +16 -6
  9. package/dist/cjs/basin.js.map +1 -1
  10. package/dist/cjs/basins.d.ts +10 -10
  11. package/dist/cjs/basins.d.ts.map +1 -1
  12. package/dist/cjs/basins.js +36 -64
  13. package/dist/cjs/basins.js.map +1 -1
  14. package/dist/cjs/batch-transform.d.ts +1 -1
  15. package/dist/cjs/batch-transform.d.ts.map +1 -1
  16. package/dist/cjs/batch-transform.js +36 -5
  17. package/dist/cjs/batch-transform.js.map +1 -1
  18. package/dist/cjs/common.d.ts +42 -0
  19. package/dist/cjs/common.d.ts.map +1 -1
  20. package/dist/cjs/error.d.ts +40 -2
  21. package/dist/cjs/error.d.ts.map +1 -1
  22. package/dist/cjs/error.js +268 -2
  23. package/dist/cjs/error.js.map +1 -1
  24. package/dist/cjs/generated/client/types.gen.d.ts +7 -0
  25. package/dist/cjs/generated/client/types.gen.d.ts.map +1 -1
  26. package/dist/cjs/generated/client/utils.gen.d.ts +1 -0
  27. package/dist/cjs/generated/client/utils.gen.d.ts.map +1 -1
  28. package/dist/cjs/generated/client/utils.gen.js.map +1 -1
  29. package/dist/cjs/generated/core/types.gen.d.ts +2 -0
  30. package/dist/cjs/generated/core/types.gen.d.ts.map +1 -1
  31. package/dist/cjs/index.d.ts +46 -3
  32. package/dist/cjs/index.d.ts.map +1 -1
  33. package/dist/cjs/index.js +28 -2
  34. package/dist/cjs/index.js.map +1 -1
  35. package/dist/cjs/lib/result.d.ts +57 -0
  36. package/dist/cjs/lib/result.d.ts.map +1 -0
  37. package/dist/cjs/lib/result.js +43 -0
  38. package/dist/cjs/lib/result.js.map +1 -0
  39. package/dist/cjs/lib/retry.d.ts +151 -0
  40. package/dist/cjs/lib/retry.d.ts.map +1 -0
  41. package/dist/cjs/lib/retry.js +839 -0
  42. package/dist/cjs/lib/retry.js.map +1 -0
  43. package/dist/cjs/lib/stream/factory.d.ts +0 -1
  44. package/dist/cjs/lib/stream/factory.d.ts.map +1 -1
  45. package/dist/cjs/lib/stream/factory.js +0 -1
  46. package/dist/cjs/lib/stream/factory.js.map +1 -1
  47. package/dist/cjs/lib/stream/runtime.d.ts +14 -0
  48. package/dist/cjs/lib/stream/runtime.d.ts.map +1 -1
  49. package/dist/cjs/lib/stream/runtime.js +18 -3
  50. package/dist/cjs/lib/stream/runtime.js.map +1 -1
  51. package/dist/cjs/lib/stream/transport/fetch/index.d.ts +24 -32
  52. package/dist/cjs/lib/stream/transport/fetch/index.d.ts.map +1 -1
  53. package/dist/cjs/lib/stream/transport/fetch/index.js +260 -187
  54. package/dist/cjs/lib/stream/transport/fetch/index.js.map +1 -1
  55. package/dist/cjs/lib/stream/transport/fetch/shared.d.ts +1 -2
  56. package/dist/cjs/lib/stream/transport/fetch/shared.d.ts.map +1 -1
  57. package/dist/cjs/lib/stream/transport/fetch/shared.js +49 -72
  58. package/dist/cjs/lib/stream/transport/fetch/shared.js.map +1 -1
  59. package/dist/cjs/lib/stream/transport/s2s/index.d.ts +0 -1
  60. package/dist/cjs/lib/stream/transport/s2s/index.d.ts.map +1 -1
  61. package/dist/cjs/lib/stream/transport/s2s/index.js +312 -352
  62. package/dist/cjs/lib/stream/transport/s2s/index.js.map +1 -1
  63. package/dist/cjs/lib/stream/types.d.ts +102 -8
  64. package/dist/cjs/lib/stream/types.d.ts.map +1 -1
  65. package/dist/cjs/metrics.d.ts +3 -2
  66. package/dist/cjs/metrics.d.ts.map +1 -1
  67. package/dist/cjs/metrics.js +24 -39
  68. package/dist/cjs/metrics.js.map +1 -1
  69. package/dist/cjs/s2.d.ts +1 -0
  70. package/dist/cjs/s2.d.ts.map +1 -1
  71. package/dist/cjs/s2.js +20 -3
  72. package/dist/cjs/s2.js.map +1 -1
  73. package/dist/cjs/stream.d.ts +5 -3
  74. package/dist/cjs/stream.d.ts.map +1 -1
  75. package/dist/cjs/stream.js +29 -18
  76. package/dist/cjs/stream.js.map +1 -1
  77. package/dist/cjs/streams.d.ts +10 -10
  78. package/dist/cjs/streams.d.ts.map +1 -1
  79. package/dist/cjs/streams.js +36 -64
  80. package/dist/cjs/streams.js.map +1 -1
  81. package/dist/cjs/utils.d.ts +3 -3
  82. package/dist/cjs/utils.d.ts.map +1 -1
  83. package/dist/cjs/utils.js +3 -3
  84. package/dist/cjs/utils.js.map +1 -1
  85. package/dist/cjs/version.d.ts +8 -0
  86. package/dist/cjs/version.d.ts.map +1 -0
  87. package/dist/cjs/version.js +11 -0
  88. package/dist/cjs/version.js.map +1 -0
  89. package/dist/esm/accessTokens.d.ts +3 -2
  90. package/dist/esm/accessTokens.d.ts.map +1 -1
  91. package/dist/esm/accessTokens.js +23 -38
  92. package/dist/esm/accessTokens.js.map +1 -1
  93. package/dist/esm/basin.d.ts +4 -3
  94. package/dist/esm/basin.d.ts.map +1 -1
  95. package/dist/esm/basin.js +16 -6
  96. package/dist/esm/basin.js.map +1 -1
  97. package/dist/esm/basins.d.ts +10 -10
  98. package/dist/esm/basins.d.ts.map +1 -1
  99. package/dist/esm/basins.js +37 -65
  100. package/dist/esm/basins.js.map +1 -1
  101. package/dist/esm/batch-transform.d.ts +1 -1
  102. package/dist/esm/batch-transform.d.ts.map +1 -1
  103. package/dist/esm/batch-transform.js +37 -6
  104. package/dist/esm/batch-transform.js.map +1 -1
  105. package/dist/esm/common.d.ts +42 -0
  106. package/dist/esm/common.d.ts.map +1 -1
  107. package/dist/esm/error.d.ts +40 -2
  108. package/dist/esm/error.d.ts.map +1 -1
  109. package/dist/esm/error.js +260 -2
  110. package/dist/esm/error.js.map +1 -1
  111. package/dist/esm/generated/client/types.gen.d.ts +7 -0
  112. package/dist/esm/generated/client/types.gen.d.ts.map +1 -1
  113. package/dist/esm/generated/client/utils.gen.d.ts +1 -0
  114. package/dist/esm/generated/client/utils.gen.d.ts.map +1 -1
  115. package/dist/esm/generated/client/utils.gen.js.map +1 -1
  116. package/dist/esm/generated/core/types.gen.d.ts +2 -0
  117. package/dist/esm/generated/core/types.gen.d.ts.map +1 -1
  118. package/dist/esm/index.d.ts +46 -3
  119. package/dist/esm/index.d.ts.map +1 -1
  120. package/dist/esm/index.js +23 -1
  121. package/dist/esm/index.js.map +1 -1
  122. package/dist/esm/lib/result.d.ts +57 -0
  123. package/dist/esm/lib/result.d.ts.map +1 -0
  124. package/dist/esm/lib/result.js +37 -0
  125. package/dist/esm/lib/result.js.map +1 -0
  126. package/dist/esm/lib/retry.d.ts +151 -0
  127. package/dist/esm/lib/retry.d.ts.map +1 -0
  128. package/dist/esm/lib/retry.js +830 -0
  129. package/dist/esm/lib/retry.js.map +1 -0
  130. package/dist/esm/lib/stream/factory.d.ts +0 -1
  131. package/dist/esm/lib/stream/factory.d.ts.map +1 -1
  132. package/dist/esm/lib/stream/factory.js +0 -1
  133. package/dist/esm/lib/stream/factory.js.map +1 -1
  134. package/dist/esm/lib/stream/runtime.d.ts +14 -0
  135. package/dist/esm/lib/stream/runtime.d.ts.map +1 -1
  136. package/dist/esm/lib/stream/runtime.js +23 -3
  137. package/dist/esm/lib/stream/runtime.js.map +1 -1
  138. package/dist/esm/lib/stream/transport/fetch/index.d.ts +24 -32
  139. package/dist/esm/lib/stream/transport/fetch/index.d.ts.map +1 -1
  140. package/dist/esm/lib/stream/transport/fetch/index.js +260 -187
  141. package/dist/esm/lib/stream/transport/fetch/index.js.map +1 -1
  142. package/dist/esm/lib/stream/transport/fetch/shared.d.ts +1 -2
  143. package/dist/esm/lib/stream/transport/fetch/shared.d.ts.map +1 -1
  144. package/dist/esm/lib/stream/transport/fetch/shared.js +51 -74
  145. package/dist/esm/lib/stream/transport/fetch/shared.js.map +1 -1
  146. package/dist/esm/lib/stream/transport/s2s/index.d.ts +0 -1
  147. package/dist/esm/lib/stream/transport/s2s/index.d.ts.map +1 -1
  148. package/dist/esm/lib/stream/transport/s2s/index.js +313 -353
  149. package/dist/esm/lib/stream/transport/s2s/index.js.map +1 -1
  150. package/dist/esm/lib/stream/types.d.ts +102 -8
  151. package/dist/esm/lib/stream/types.d.ts.map +1 -1
  152. package/dist/esm/metrics.d.ts +3 -2
  153. package/dist/esm/metrics.d.ts.map +1 -1
  154. package/dist/esm/metrics.js +25 -40
  155. package/dist/esm/metrics.js.map +1 -1
  156. package/dist/esm/s2.d.ts +1 -0
  157. package/dist/esm/s2.d.ts.map +1 -1
  158. package/dist/esm/s2.js +20 -3
  159. package/dist/esm/s2.js.map +1 -1
  160. package/dist/esm/stream.d.ts +5 -3
  161. package/dist/esm/stream.d.ts.map +1 -1
  162. package/dist/esm/stream.js +30 -19
  163. package/dist/esm/stream.js.map +1 -1
  164. package/dist/esm/streams.d.ts +10 -10
  165. package/dist/esm/streams.d.ts.map +1 -1
  166. package/dist/esm/streams.js +37 -65
  167. package/dist/esm/streams.js.map +1 -1
  168. package/dist/esm/utils.d.ts +3 -3
  169. package/dist/esm/utils.d.ts.map +1 -1
  170. package/dist/esm/utils.js +2 -2
  171. package/dist/esm/utils.js.map +1 -1
  172. package/dist/esm/version.d.ts +8 -0
  173. package/dist/esm/version.d.ts.map +1 -0
  174. package/dist/esm/version.js +8 -0
  175. package/dist/esm/version.js.map +1 -0
  176. package/package.json +7 -4
@@ -1,53 +1,104 @@
1
+ import createDebug from "debug";
1
2
  import { RangeNotSatisfiableError, S2Error } from "../../../../error.js";
2
3
  import { createClient, createConfig, } from "../../../../generated/client/index.js";
3
4
  import { read } from "../../../../generated/index.js";
4
- import { meteredSizeBytes } from "../../../../utils.js";
5
+ import { meteredBytes } from "../../../../utils.js";
5
6
  import { decodeFromBase64 } from "../../../base64.js";
6
7
  import { EventStream } from "../../../event-stream.js";
7
8
  import * as Redacted from "../../../redacted.js";
9
+ import { err, errClose, ok, okClose } from "../../../result.js";
10
+ import { RetryAppendSession as AppendSessionImpl, RetryReadSession as ReadSessionImpl, } from "../../../retry.js";
11
+ import { canSetUserAgentHeader, DEFAULT_USER_AGENT } from "../../runtime.js";
8
12
  import { streamAppend } from "./shared.js";
9
- export class FetchReadSession extends EventStream {
13
+ const debug = createDebug("s2:fetch");
14
+ export class FetchReadSession extends ReadableStream {
10
15
  static async create(client, name, args, options) {
16
+ debug("FetchReadSession.create stream=%s args=%o", name, args);
11
17
  const { as, ...queryParams } = args ?? {};
12
- const response = await read({
13
- client,
14
- path: {
15
- stream: name,
16
- },
17
- headers: {
18
- accept: "text/event-stream",
19
- ...(as === "bytes" ? { "s2-format": "base64" } : {}),
20
- },
21
- query: queryParams,
22
- parseAs: "stream",
23
- ...options,
24
- });
25
- if (response.error) {
26
- if ("message" in response.error) {
27
- throw new S2Error({
28
- message: response.error.message,
29
- code: response.error.code ?? undefined,
30
- status: response.response.status,
31
- });
18
+ try {
19
+ const response = await read({
20
+ client,
21
+ path: {
22
+ stream: name,
23
+ },
24
+ headers: {
25
+ accept: "text/event-stream",
26
+ ...(as === "bytes" ? { "s2-format": "base64" } : {}),
27
+ },
28
+ query: queryParams,
29
+ parseAs: "stream",
30
+ ...options,
31
+ });
32
+ if (response.error) {
33
+ // Convert error to S2Error and return error session
34
+ const status = response.response.status;
35
+ const error = "message" in response.error
36
+ ? new S2Error({
37
+ message: response.error.message,
38
+ code: response.error.code ?? undefined,
39
+ status,
40
+ })
41
+ : status === 416
42
+ ? new RangeNotSatisfiableError({
43
+ status,
44
+ })
45
+ : new S2Error({
46
+ message: response.response.statusText ?? "Request failed",
47
+ status,
48
+ });
49
+ return FetchReadSession.createErrorSession(error);
32
50
  }
33
- else {
34
- // special case for 416 - Range Not Satisfiable
35
- throw new RangeNotSatisfiableError({
36
- status: response.response.status,
51
+ if (!response.response.body) {
52
+ const error = new S2Error({
53
+ message: "No body in SSE response",
54
+ code: "INVALID_RESPONSE",
55
+ status: 502,
56
+ origin: "sdk",
37
57
  });
58
+ return FetchReadSession.createErrorSession(error);
38
59
  }
60
+ const format = (args?.as ?? "string");
61
+ return new FetchReadSession(response.response.body, format);
39
62
  }
40
- if (!response.response.body) {
41
- throw new S2Error({
42
- message: "No body in SSE response",
43
- });
63
+ catch (error) {
64
+ // Catch any thrown errors (network failures, DNS errors, etc.)
65
+ const s2Error = error instanceof S2Error
66
+ ? error
67
+ : new S2Error({
68
+ message: String(error),
69
+ status: 502, // Bad Gateway - network/fetch failure
70
+ });
71
+ return FetchReadSession.createErrorSession(s2Error);
44
72
  }
45
- const format = (args?.as ?? "string");
46
- return new FetchReadSession(response.response.body, format);
47
73
  }
48
- _lastReadPosition = undefined;
74
+ /**
75
+ * Create a session that immediately emits an error result and closes.
76
+ * Used when errors occur during session creation.
77
+ */
78
+ static createErrorSession(error) {
79
+ // Create a custom instance that extends ReadableStream and emits error immediately
80
+ const stream = new ReadableStream({
81
+ start(controller) {
82
+ controller.enqueue({ ok: false, error });
83
+ controller.close();
84
+ },
85
+ });
86
+ // Copy methods from stream to create a proper FetchReadSession
87
+ const session = Object.assign(Object.create(FetchReadSession.prototype), stream);
88
+ session._nextReadPosition = undefined;
89
+ session._lastObservedTail = undefined;
90
+ return session;
91
+ }
92
+ _nextReadPosition = undefined;
93
+ _lastObservedTail = undefined;
49
94
  constructor(stream, format) {
50
- super(stream, (msg) => {
95
+ // Track error from parser
96
+ let parserError = null;
97
+ // Track last ping time for timeout detection (20s without a ping = timeout)
98
+ let lastPingTimeMs = performance.now();
99
+ const PING_TIMEOUT_MS = 20000; // 20 seconds
100
+ // Create EventStream that parses SSE and yields records
101
+ const eventStream = new EventStream(stream, (msg) => {
51
102
  // Parse SSE events according to the S2 protocol
52
103
  if (msg.event === "batch" && msg.data) {
53
104
  const rawBatch = JSON.parse(msg.data);
@@ -76,34 +127,106 @@ export class FetchReadSession extends EventStream {
76
127
  }
77
128
  })();
78
129
  if (batch.tail) {
79
- this._lastReadPosition = batch.tail;
130
+ this._lastObservedTail = batch.tail;
131
+ }
132
+ let lastRecord = batch.records?.at(-1);
133
+ if (lastRecord) {
134
+ this._nextReadPosition = {
135
+ seq_num: lastRecord.seq_num + 1,
136
+ timestamp: lastRecord.timestamp,
137
+ };
80
138
  }
81
139
  return { done: false, batch: true, value: batch.records ?? [] };
82
140
  }
83
141
  if (msg.event === "error") {
84
- // Handle error events
85
- throw new S2Error({ message: msg.data ?? "Unknown error" });
142
+ // Store error and signal end of stream
143
+ // SSE error events are server errors - treat as 503 (Service Unavailable) for retry logic
144
+ debug("parse event error");
145
+ parserError = new S2Error({
146
+ message: msg.data ?? "Unknown error",
147
+ status: 503,
148
+ });
149
+ return { done: true };
86
150
  }
151
+ lastPingTimeMs = performance.now();
87
152
  // Skip ping events and other events
88
153
  return { done: false };
89
154
  });
90
- }
91
- lastReadPosition() {
92
- return this._lastReadPosition;
93
- }
94
- }
95
- class AcksStream extends ReadableStream {
96
- constructor(setController) {
155
+ // Wrap the EventStream to convert records to ReadResult and check for errors
156
+ const reader = eventStream.getReader();
157
+ let done = false;
97
158
  super({
98
- start: (controller) => {
99
- setController(controller);
159
+ pull: async (controller) => {
160
+ if (done) {
161
+ controller.close();
162
+ return;
163
+ }
164
+ // Check for ping timeout before reading
165
+ const now = performance.now();
166
+ const timeSinceLastPingMs = now - lastPingTimeMs;
167
+ if (timeSinceLastPingMs > PING_TIMEOUT_MS) {
168
+ const timeoutError = new S2Error({
169
+ message: `No ping received for ${Math.floor(timeSinceLastPingMs / 1000)}s (timeout: ${PING_TIMEOUT_MS / 1000}s)`,
170
+ status: 408, // Request Timeout
171
+ code: "TIMEOUT",
172
+ });
173
+ debug("ping timeout detected, elapsed=%dms", timeSinceLastPingMs);
174
+ controller.enqueue({ ok: false, error: timeoutError });
175
+ done = true;
176
+ controller.close();
177
+ return;
178
+ }
179
+ try {
180
+ // Calculate remaining time until timeout
181
+ const remainingTimeMs = PING_TIMEOUT_MS - timeSinceLastPingMs;
182
+ // Race reader.read() against timeout
183
+ // This ensures we don't wait forever if server stops sending events
184
+ const result = await Promise.race([
185
+ reader.read(),
186
+ new Promise((_, reject) => setTimeout(() => {
187
+ const elapsed = performance.now() - lastPingTimeMs;
188
+ reject(new S2Error({
189
+ message: `No ping received for ${Math.floor(elapsed / 1000)}s (timeout: ${PING_TIMEOUT_MS / 1000}s)`,
190
+ status: 408,
191
+ code: "TIMEOUT",
192
+ }));
193
+ }, remainingTimeMs)),
194
+ ]);
195
+ if (result.done) {
196
+ done = true;
197
+ // Check if stream ended due to error
198
+ if (parserError) {
199
+ controller.enqueue({ ok: false, error: parserError });
200
+ }
201
+ controller.close();
202
+ }
203
+ else {
204
+ // Emit successful result
205
+ controller.enqueue({ ok: true, value: result.value });
206
+ }
207
+ }
208
+ catch (error) {
209
+ // Convert unexpected errors to S2Error and emit as error result
210
+ const s2Err = error instanceof S2Error
211
+ ? error
212
+ : new S2Error({ message: String(error), status: 500 });
213
+ controller.enqueue({ ok: false, error: s2Err });
214
+ done = true;
215
+ controller.close();
216
+ }
217
+ },
218
+ cancel: async () => {
219
+ await eventStream.cancel();
100
220
  },
101
221
  });
102
222
  }
103
- async [Symbol.asyncDispose]() {
104
- await this.cancel("disposed");
223
+ nextReadPosition() {
224
+ return this._nextReadPosition;
225
+ }
226
+ lastObservedTail() {
227
+ return this._lastObservedTail;
105
228
  }
106
- // Polyfill for older browsers
229
+ // Implement AsyncIterable (for await...of support)
107
230
  [Symbol.asyncIterator]() {
108
231
  const fn = ReadableStream.prototype[Symbol.asyncIterator];
109
232
  if (typeof fn === "function")
@@ -112,177 +235,130 @@ class AcksStream extends ReadableStream {
112
235
  return {
113
236
  next: async () => {
114
237
  const r = await reader.read();
115
- if (r.done) {
116
- reader.releaseLock();
238
+ if (r.done)
117
239
  return { done: true, value: undefined };
118
- }
119
240
  return { done: false, value: r.value };
120
241
  },
121
- throw: async (e) => {
122
- await reader.cancel(e);
242
+ return: async (value) => {
123
243
  reader.releaseLock();
124
- return { done: true, value: undefined };
244
+ return { done: true, value };
125
245
  },
126
- return: async () => {
127
- await reader.cancel("done");
246
+ throw: async (e) => {
128
247
  reader.releaseLock();
129
- return { done: true, value: undefined };
248
+ throw e;
130
249
  },
131
250
  [Symbol.asyncIterator]() {
132
251
  return this;
133
252
  },
134
253
  };
135
254
  }
255
+ // Implement AsyncDisposable
256
+ async [Symbol.asyncDispose]() {
257
+ await this.cancel();
258
+ }
136
259
  }
260
+ // Removed AcksStream - transport sessions no longer expose streams
137
261
  /**
138
- * Session for appending records to a stream.
139
- * Queues append requests and ensures only one is in-flight at a time.
262
+ * Fetch-based transport session for appending records via HTTP/1.1.
263
+ * Queues append requests and ensures only one is in-flight at a time (single-flight).
264
+ * No backpressure, no retry logic, no streams - just submit/close with value-encoded errors.
140
265
  */
141
266
  export class FetchAppendSession {
142
- _lastAckedPosition = undefined;
143
267
  queue = [];
144
268
  pendingResolvers = [];
145
269
  inFlight = false;
146
270
  options;
147
271
  stream;
148
- acksController;
149
- _readable;
150
- _writable;
151
272
  closed = false;
152
273
  processingPromise = null;
153
- queuedBytes = 0;
154
- maxQueuedBytes;
155
- waitingForCapacity = [];
156
274
  client;
157
- readable;
158
- writable;
159
275
  static async create(stream, transportConfig, sessionOptions, requestOptions) {
160
276
  return new FetchAppendSession(stream, transportConfig, sessionOptions, requestOptions);
161
277
  }
162
278
  constructor(stream, transportConfig, sessionOptions, requestOptions) {
163
279
  this.options = requestOptions;
164
280
  this.stream = stream;
165
- this.maxQueuedBytes = sessionOptions?.maxQueuedBytes ?? 10 * 1024 * 1024; // 10 MiB default
281
+ const headers = {};
282
+ if (transportConfig.basinName) {
283
+ headers["s2-basin"] = transportConfig.basinName;
284
+ }
285
+ if (canSetUserAgentHeader()) {
286
+ headers["user-agent"] = DEFAULT_USER_AGENT;
287
+ }
166
288
  this.client = createClient(createConfig({
167
289
  baseUrl: transportConfig.baseUrl,
168
290
  auth: () => Redacted.value(transportConfig.accessToken),
291
+ headers: headers,
169
292
  }));
170
- // Create the readable stream for acks
171
- this._readable = new AcksStream((controller) => {
172
- this.acksController = controller;
173
- });
174
- this.readable = this._readable;
175
- // Create the writable stream
176
- let writableController;
177
- this._writable = new WritableStream({
178
- start: (controller) => {
179
- writableController = controller;
180
- },
181
- write: async (chunk) => {
182
- // Calculate batch size
183
- let batchMeteredSize = 0;
184
- for (const record of chunk.records) {
185
- batchMeteredSize += meteredSizeBytes(record);
186
- }
187
- // Wait for capacity if needed
188
- while (this.queuedBytes + batchMeteredSize > this.maxQueuedBytes &&
189
- !this.closed) {
190
- await new Promise((resolve) => {
191
- this.waitingForCapacity.push(resolve);
192
- });
193
- }
194
- // Submit the batch
195
- this.submit(chunk.records, {
196
- fencing_token: chunk.fencing_token ?? undefined,
197
- match_seq_num: chunk.match_seq_num ?? undefined,
198
- }, batchMeteredSize);
199
- },
200
- close: async () => {
201
- this.closed = true;
202
- await this.waitForDrain();
203
- },
204
- abort: async (reason) => {
205
- this.closed = true;
206
- this.queue = [];
207
- this.queuedBytes = 0;
208
- // Reject all pending promises
209
- const error = new S2Error({
210
- message: `AppendSession was aborted: ${reason}`,
211
- });
212
- for (const resolver of this.pendingResolvers) {
213
- resolver.reject(error);
214
- }
215
- this.pendingResolvers = [];
216
- // Reject all waiting for capacity
217
- for (const resolver of this.waitingForCapacity) {
218
- resolver();
219
- }
220
- this.waitingForCapacity = [];
221
- },
222
- });
223
- this.writable = this._writable;
224
- }
225
- async [Symbol.asyncDispose]() {
226
- await this.close();
227
- }
228
- /**
229
- * Get a stream of acknowledgements for appends.
230
- */
231
- acks() {
232
- return this._readable;
233
293
  }
234
294
  /**
235
295
  * Close the append session.
236
296
  * Waits for all pending appends to complete before resolving.
297
+ * Never throws - returns CloseResult.
237
298
  */
238
299
  async close() {
239
- await this.writable.close();
300
+ try {
301
+ this.closed = true;
302
+ await this.waitForDrain();
303
+ return okClose();
304
+ }
305
+ catch (error) {
306
+ const s2Err = error instanceof S2Error
307
+ ? error
308
+ : new S2Error({ message: String(error), status: 500 });
309
+ return errClose(s2Err);
310
+ }
240
311
  }
241
312
  /**
242
313
  * Submit an append request to the session.
243
314
  * The request will be queued and sent when no other request is in-flight.
244
- * Returns a promise that resolves when the append is acknowledged or rejects on error.
315
+ * Never throws - returns AppendResult discriminated union.
245
316
  */
246
- submit(records, args, precalculatedSize) {
317
+ submit(records, args) {
318
+ // Validate closed state
247
319
  if (this.closed) {
248
- return Promise.reject(new S2Error({ message: "AppendSession is closed" }));
320
+ return Promise.resolve(err(new S2Error({ message: "AppendSession is closed", status: 400 })));
249
321
  }
250
322
  const recordsArray = Array.isArray(records) ? records : [records];
251
- // Validate batch size limits
323
+ // Validate batch size limits (non-retryable 400-level error)
252
324
  if (recordsArray.length > 1000) {
253
- return Promise.reject(new S2Error({
325
+ return Promise.resolve(err(new S2Error({
254
326
  message: `Batch of ${recordsArray.length} exceeds maximum batch size of 1000 records`,
255
- }));
327
+ status: 400,
328
+ code: "INVALID_ARGUMENT",
329
+ })));
256
330
  }
257
331
  // Validate metered size (use precalculated if provided)
258
- let batchMeteredSize = precalculatedSize ?? 0;
332
+ let batchMeteredSize = args?.precalculatedSize ?? 0;
259
333
  if (batchMeteredSize === 0) {
260
334
  for (const record of recordsArray) {
261
- batchMeteredSize += meteredSizeBytes(record);
335
+ batchMeteredSize += meteredBytes(record);
262
336
  }
263
337
  }
264
338
  if (batchMeteredSize > 1024 * 1024) {
265
- return Promise.reject(new S2Error({
339
+ return Promise.resolve(err(new S2Error({
266
340
  message: `Batch size ${batchMeteredSize} bytes exceeds maximum of 1 MiB (1048576 bytes)`,
267
- }));
341
+ status: 400,
342
+ code: "INVALID_ARGUMENT",
343
+ })));
268
344
  }
269
- return new Promise((resolve, reject) => {
345
+ return new Promise((resolve) => {
270
346
  this.queue.push({
271
347
  records: recordsArray,
272
348
  fencing_token: args?.fencing_token,
273
349
  match_seq_num: args?.match_seq_num,
274
- meteredSize: batchMeteredSize,
275
350
  });
276
- this.queuedBytes += batchMeteredSize;
277
- this.pendingResolvers.push({ resolve, reject });
351
+ this.pendingResolvers.push({ resolve });
278
352
  // Start processing if not already running
279
353
  if (!this.processingPromise) {
280
- this.processingPromise = this.processLoop();
354
+ // Attach a catch to avoid unhandled rejection warnings on hard failures
355
+ this.processingPromise = this.processLoop().catch(() => { });
281
356
  }
282
357
  });
283
358
  }
284
359
  /**
285
360
  * Main processing loop that sends queued requests one at a time.
361
+ * Single-flight: only one request in progress at a time.
286
362
  */
287
363
  async processLoop() {
288
364
  while (this.queue.length > 0) {
@@ -294,41 +370,27 @@ export class FetchAppendSession {
294
370
  fencing_token: args.fencing_token,
295
371
  match_seq_num: args.match_seq_num,
296
372
  }, this.options);
297
- this._lastAckedPosition = ack;
298
- // Emit ack to the acks stream if it exists
299
- if (this.acksController) {
300
- this.acksController.enqueue(ack);
301
- }
302
- // Resolve the promise for this request
303
- resolver.resolve(ack);
304
- // Release capacity and wake up waiting writers
305
- this.queuedBytes -= args.meteredSize;
306
- while (this.waitingForCapacity.length > 0) {
307
- const waiter = this.waitingForCapacity.shift();
308
- waiter();
309
- // Only wake one at a time - let them check capacity again
310
- break;
311
- }
373
+ // Resolve with success result
374
+ resolver.resolve(ok(ack));
312
375
  }
313
376
  catch (error) {
314
- this.inFlight = false;
315
- this.processingPromise = null;
316
- // Reject the promise for this request
317
- resolver.reject(error);
318
- // Reject all remaining pending promises
377
+ // Convert error to S2Error and resolve with error result
378
+ const s2Err = error instanceof S2Error
379
+ ? error
380
+ : new S2Error({ message: String(error), status: 502 });
381
+ // Resolve this request with error
382
+ resolver.resolve(err(s2Err));
383
+ // Resolve all remaining pending promises with the same error
384
+ // (transport failure affects all queued requests)
319
385
  for (const pendingResolver of this.pendingResolvers) {
320
- pendingResolver.reject(error);
386
+ pendingResolver.resolve(err(s2Err));
321
387
  }
322
388
  this.pendingResolvers = [];
323
- // Clear the queue and reset queued bytes
389
+ // Clear the queue
324
390
  this.queue = [];
325
- this.queuedBytes = 0;
326
- // Wake up all waiting writers (they'll see the closed state or retry)
327
- for (const waiter of this.waitingForCapacity) {
328
- waiter();
329
- }
330
- this.waitingForCapacity = [];
331
- // Do not rethrow here to avoid unhandled rejection; callers already received rejection
391
+ this.inFlight = false;
392
+ this.processingPromise = null;
393
+ return;
332
394
  }
333
395
  this.inFlight = false;
334
396
  }
@@ -343,13 +405,6 @@ export class FetchAppendSession {
343
405
  while (this.queue.length > 0 || this.inFlight) {
344
406
  await new Promise((resolve) => setTimeout(resolve, 10));
345
407
  }
346
- // Close the acks stream if it exists
347
- if (this.acksController) {
348
- this.acksController.close();
349
- }
350
- }
351
- lastAckedPosition() {
352
- return this._lastAckedPosition;
353
408
  }
354
409
  }
355
410
  /**
@@ -360,17 +415,35 @@ export class FetchTransport {
360
415
  client;
361
416
  transportConfig;
362
417
  constructor(config) {
418
+ const headers = {};
419
+ if (config.basinName) {
420
+ headers["s2-basin"] = config.basinName;
421
+ }
422
+ if (canSetUserAgentHeader()) {
423
+ headers["user-agent"] = DEFAULT_USER_AGENT;
424
+ }
363
425
  this.client = createClient(createConfig({
364
426
  baseUrl: config.baseUrl,
365
427
  auth: () => Redacted.value(config.accessToken),
428
+ headers: headers,
366
429
  }));
367
430
  this.transportConfig = config;
368
431
  }
369
432
  async makeAppendSession(stream, sessionOptions, requestOptions) {
370
- return FetchAppendSession.create(stream, this.transportConfig, sessionOptions, requestOptions);
433
+ // Fetch transport intentionally enforces single-flight submission (HTTP/1.1)
434
+ // This ensures only one batch is in-flight at a time, regardless of user setting.
435
+ const opts = {
436
+ ...sessionOptions,
437
+ maxInflightBatches: 1,
438
+ };
439
+ return AppendSessionImpl.create((myOptions) => {
440
+ return FetchAppendSession.create(stream, this.transportConfig, myOptions, requestOptions);
441
+ }, opts, this.transportConfig.retry);
371
442
  }
372
443
  async makeReadSession(stream, args, options) {
373
- return FetchReadSession.create(this.client, stream, args, options);
444
+ return ReadSessionImpl.create((myArgs) => {
445
+ return FetchReadSession.create(this.client, stream, myArgs, options);
446
+ }, args, this.transportConfig.retry);
374
447
  }
375
448
  }
376
449
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/lib/stream/transport/fetch/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/lib/stream/transport/fetch/index.ts"],"names":[],"mappings":"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"}