@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.
- package/README.md +69 -1
- package/dist/cjs/accessTokens.d.ts +3 -2
- package/dist/cjs/accessTokens.d.ts.map +1 -1
- package/dist/cjs/accessTokens.js +22 -37
- package/dist/cjs/accessTokens.js.map +1 -1
- package/dist/cjs/basin.d.ts +4 -3
- package/dist/cjs/basin.d.ts.map +1 -1
- package/dist/cjs/basin.js +16 -6
- package/dist/cjs/basin.js.map +1 -1
- package/dist/cjs/basins.d.ts +10 -10
- package/dist/cjs/basins.d.ts.map +1 -1
- package/dist/cjs/basins.js +36 -64
- package/dist/cjs/basins.js.map +1 -1
- package/dist/cjs/batch-transform.d.ts +1 -1
- package/dist/cjs/batch-transform.d.ts.map +1 -1
- package/dist/cjs/batch-transform.js +36 -5
- package/dist/cjs/batch-transform.js.map +1 -1
- package/dist/cjs/common.d.ts +42 -0
- package/dist/cjs/common.d.ts.map +1 -1
- package/dist/cjs/error.d.ts +40 -2
- package/dist/cjs/error.d.ts.map +1 -1
- package/dist/cjs/error.js +268 -2
- package/dist/cjs/error.js.map +1 -1
- package/dist/cjs/generated/client/types.gen.d.ts +7 -0
- package/dist/cjs/generated/client/types.gen.d.ts.map +1 -1
- package/dist/cjs/generated/client/utils.gen.d.ts +1 -0
- package/dist/cjs/generated/client/utils.gen.d.ts.map +1 -1
- package/dist/cjs/generated/client/utils.gen.js.map +1 -1
- package/dist/cjs/generated/core/types.gen.d.ts +2 -0
- package/dist/cjs/generated/core/types.gen.d.ts.map +1 -1
- package/dist/cjs/index.d.ts +46 -3
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +28 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/result.d.ts +57 -0
- package/dist/cjs/lib/result.d.ts.map +1 -0
- package/dist/cjs/lib/result.js +43 -0
- package/dist/cjs/lib/result.js.map +1 -0
- package/dist/cjs/lib/retry.d.ts +151 -0
- package/dist/cjs/lib/retry.d.ts.map +1 -0
- package/dist/cjs/lib/retry.js +839 -0
- package/dist/cjs/lib/retry.js.map +1 -0
- package/dist/cjs/lib/stream/factory.d.ts +0 -1
- package/dist/cjs/lib/stream/factory.d.ts.map +1 -1
- package/dist/cjs/lib/stream/factory.js +0 -1
- package/dist/cjs/lib/stream/factory.js.map +1 -1
- package/dist/cjs/lib/stream/runtime.d.ts +14 -0
- package/dist/cjs/lib/stream/runtime.d.ts.map +1 -1
- package/dist/cjs/lib/stream/runtime.js +18 -3
- package/dist/cjs/lib/stream/runtime.js.map +1 -1
- package/dist/cjs/lib/stream/transport/fetch/index.d.ts +24 -32
- package/dist/cjs/lib/stream/transport/fetch/index.d.ts.map +1 -1
- package/dist/cjs/lib/stream/transport/fetch/index.js +260 -187
- package/dist/cjs/lib/stream/transport/fetch/index.js.map +1 -1
- package/dist/cjs/lib/stream/transport/fetch/shared.d.ts +1 -2
- package/dist/cjs/lib/stream/transport/fetch/shared.d.ts.map +1 -1
- package/dist/cjs/lib/stream/transport/fetch/shared.js +49 -72
- package/dist/cjs/lib/stream/transport/fetch/shared.js.map +1 -1
- package/dist/cjs/lib/stream/transport/s2s/index.d.ts +0 -1
- package/dist/cjs/lib/stream/transport/s2s/index.d.ts.map +1 -1
- package/dist/cjs/lib/stream/transport/s2s/index.js +312 -352
- package/dist/cjs/lib/stream/transport/s2s/index.js.map +1 -1
- package/dist/cjs/lib/stream/types.d.ts +102 -8
- package/dist/cjs/lib/stream/types.d.ts.map +1 -1
- package/dist/cjs/metrics.d.ts +3 -2
- package/dist/cjs/metrics.d.ts.map +1 -1
- package/dist/cjs/metrics.js +24 -39
- package/dist/cjs/metrics.js.map +1 -1
- package/dist/cjs/s2.d.ts +1 -0
- package/dist/cjs/s2.d.ts.map +1 -1
- package/dist/cjs/s2.js +20 -3
- package/dist/cjs/s2.js.map +1 -1
- package/dist/cjs/stream.d.ts +5 -3
- package/dist/cjs/stream.d.ts.map +1 -1
- package/dist/cjs/stream.js +29 -18
- package/dist/cjs/stream.js.map +1 -1
- package/dist/cjs/streams.d.ts +10 -10
- package/dist/cjs/streams.d.ts.map +1 -1
- package/dist/cjs/streams.js +36 -64
- package/dist/cjs/streams.js.map +1 -1
- package/dist/cjs/utils.d.ts +3 -3
- package/dist/cjs/utils.d.ts.map +1 -1
- package/dist/cjs/utils.js +3 -3
- package/dist/cjs/utils.js.map +1 -1
- package/dist/cjs/version.d.ts +8 -0
- package/dist/cjs/version.d.ts.map +1 -0
- package/dist/cjs/version.js +11 -0
- package/dist/cjs/version.js.map +1 -0
- package/dist/esm/accessTokens.d.ts +3 -2
- package/dist/esm/accessTokens.d.ts.map +1 -1
- package/dist/esm/accessTokens.js +23 -38
- package/dist/esm/accessTokens.js.map +1 -1
- package/dist/esm/basin.d.ts +4 -3
- package/dist/esm/basin.d.ts.map +1 -1
- package/dist/esm/basin.js +16 -6
- package/dist/esm/basin.js.map +1 -1
- package/dist/esm/basins.d.ts +10 -10
- package/dist/esm/basins.d.ts.map +1 -1
- package/dist/esm/basins.js +37 -65
- package/dist/esm/basins.js.map +1 -1
- package/dist/esm/batch-transform.d.ts +1 -1
- package/dist/esm/batch-transform.d.ts.map +1 -1
- package/dist/esm/batch-transform.js +37 -6
- package/dist/esm/batch-transform.js.map +1 -1
- package/dist/esm/common.d.ts +42 -0
- package/dist/esm/common.d.ts.map +1 -1
- package/dist/esm/error.d.ts +40 -2
- package/dist/esm/error.d.ts.map +1 -1
- package/dist/esm/error.js +260 -2
- package/dist/esm/error.js.map +1 -1
- package/dist/esm/generated/client/types.gen.d.ts +7 -0
- package/dist/esm/generated/client/types.gen.d.ts.map +1 -1
- package/dist/esm/generated/client/utils.gen.d.ts +1 -0
- package/dist/esm/generated/client/utils.gen.d.ts.map +1 -1
- package/dist/esm/generated/client/utils.gen.js.map +1 -1
- package/dist/esm/generated/core/types.gen.d.ts +2 -0
- package/dist/esm/generated/core/types.gen.d.ts.map +1 -1
- package/dist/esm/index.d.ts +46 -3
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +23 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/result.d.ts +57 -0
- package/dist/esm/lib/result.d.ts.map +1 -0
- package/dist/esm/lib/result.js +37 -0
- package/dist/esm/lib/result.js.map +1 -0
- package/dist/esm/lib/retry.d.ts +151 -0
- package/dist/esm/lib/retry.d.ts.map +1 -0
- package/dist/esm/lib/retry.js +830 -0
- package/dist/esm/lib/retry.js.map +1 -0
- package/dist/esm/lib/stream/factory.d.ts +0 -1
- package/dist/esm/lib/stream/factory.d.ts.map +1 -1
- package/dist/esm/lib/stream/factory.js +0 -1
- package/dist/esm/lib/stream/factory.js.map +1 -1
- package/dist/esm/lib/stream/runtime.d.ts +14 -0
- package/dist/esm/lib/stream/runtime.d.ts.map +1 -1
- package/dist/esm/lib/stream/runtime.js +23 -3
- package/dist/esm/lib/stream/runtime.js.map +1 -1
- package/dist/esm/lib/stream/transport/fetch/index.d.ts +24 -32
- package/dist/esm/lib/stream/transport/fetch/index.d.ts.map +1 -1
- package/dist/esm/lib/stream/transport/fetch/index.js +260 -187
- package/dist/esm/lib/stream/transport/fetch/index.js.map +1 -1
- package/dist/esm/lib/stream/transport/fetch/shared.d.ts +1 -2
- package/dist/esm/lib/stream/transport/fetch/shared.d.ts.map +1 -1
- package/dist/esm/lib/stream/transport/fetch/shared.js +51 -74
- package/dist/esm/lib/stream/transport/fetch/shared.js.map +1 -1
- package/dist/esm/lib/stream/transport/s2s/index.d.ts +0 -1
- package/dist/esm/lib/stream/transport/s2s/index.d.ts.map +1 -1
- package/dist/esm/lib/stream/transport/s2s/index.js +313 -353
- package/dist/esm/lib/stream/transport/s2s/index.js.map +1 -1
- package/dist/esm/lib/stream/types.d.ts +102 -8
- package/dist/esm/lib/stream/types.d.ts.map +1 -1
- package/dist/esm/metrics.d.ts +3 -2
- package/dist/esm/metrics.d.ts.map +1 -1
- package/dist/esm/metrics.js +25 -40
- package/dist/esm/metrics.js.map +1 -1
- package/dist/esm/s2.d.ts +1 -0
- package/dist/esm/s2.d.ts.map +1 -1
- package/dist/esm/s2.js +20 -3
- package/dist/esm/s2.js.map +1 -1
- package/dist/esm/stream.d.ts +5 -3
- package/dist/esm/stream.d.ts.map +1 -1
- package/dist/esm/stream.js +30 -19
- package/dist/esm/stream.js.map +1 -1
- package/dist/esm/streams.d.ts +10 -10
- package/dist/esm/streams.d.ts.map +1 -1
- package/dist/esm/streams.js +37 -65
- package/dist/esm/streams.js.map +1 -1
- package/dist/esm/utils.d.ts +3 -3
- package/dist/esm/utils.d.ts.map +1 -1
- package/dist/esm/utils.js +2 -2
- package/dist/esm/utils.js.map +1 -1
- package/dist/esm/version.d.ts +8 -0
- package/dist/esm/version.d.ts.map +1 -0
- package/dist/esm/version.js +8 -0
- package/dist/esm/version.js.map +1 -0
- 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 {
|
|
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
|
-
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if (
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
//
|
|
85
|
-
|
|
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
|
-
|
|
92
|
-
|
|
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
|
-
|
|
99
|
-
|
|
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
|
-
|
|
104
|
-
|
|
223
|
+
nextReadPosition() {
|
|
224
|
+
return this._nextReadPosition;
|
|
225
|
+
}
|
|
226
|
+
lastObservedTail() {
|
|
227
|
+
return this._lastObservedTail;
|
|
105
228
|
}
|
|
106
|
-
//
|
|
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
|
-
|
|
122
|
-
await reader.cancel(e);
|
|
242
|
+
return: async (value) => {
|
|
123
243
|
reader.releaseLock();
|
|
124
|
-
return { done: true, value
|
|
244
|
+
return { done: true, value };
|
|
125
245
|
},
|
|
126
|
-
|
|
127
|
-
await reader.cancel("done");
|
|
246
|
+
throw: async (e) => {
|
|
128
247
|
reader.releaseLock();
|
|
129
|
-
|
|
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
|
-
*
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
*
|
|
315
|
+
* Never throws - returns AppendResult discriminated union.
|
|
245
316
|
*/
|
|
246
|
-
submit(records, args
|
|
317
|
+
submit(records, args) {
|
|
318
|
+
// Validate closed state
|
|
247
319
|
if (this.closed) {
|
|
248
|
-
return Promise.
|
|
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.
|
|
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 +=
|
|
335
|
+
batchMeteredSize += meteredBytes(record);
|
|
262
336
|
}
|
|
263
337
|
}
|
|
264
338
|
if (batchMeteredSize > 1024 * 1024) {
|
|
265
|
-
return Promise.
|
|
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
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
298
|
-
|
|
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
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
//
|
|
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.
|
|
386
|
+
pendingResolver.resolve(err(s2Err));
|
|
321
387
|
}
|
|
322
388
|
this.pendingResolvers = [];
|
|
323
|
-
// Clear the queue
|
|
389
|
+
// Clear the queue
|
|
324
390
|
this.queue = [];
|
|
325
|
-
this.
|
|
326
|
-
|
|
327
|
-
|
|
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
|
-
|
|
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
|
|
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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"}
|