@enbox/dwn-clients 0.4.5 → 0.4.6

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.
@@ -8,9 +8,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { CryptoUtils } from '@enbox/crypto';
11
- import { DataStream } from '@enbox/dwn-sdk-js';
12
11
  import { DwnRpcError } from './dwn-rpc-error.js';
13
12
  import { DwnServerInfoCacheMemory } from './dwn-server-info-cache-memory.js';
13
+ import { normalizeReadableStream } from './readable-stream.js';
14
14
  import { parseReplicationApplyResult } from './replication-apply-result.js';
15
15
  import { RateLimitError } from './rate-limit-error.js';
16
16
  import { sleep } from '@enbox/common';
@@ -77,6 +77,39 @@ function parseRetryAfterMs(response) {
77
77
  }
78
78
  return undefined;
79
79
  }
80
+ function createAttemptInit(init, requestTimeoutMs) {
81
+ const timeoutSignal = AbortSignal.timeout(requestTimeoutMs);
82
+ if ((init === null || init === void 0 ? void 0 : init.signal) === undefined || init.signal === null) {
83
+ return Object.assign(Object.assign({}, init), { signal: timeoutSignal });
84
+ }
85
+ return Object.assign(Object.assign({}, init), { signal: AbortSignal.any([init.signal, timeoutSignal]) });
86
+ }
87
+ function shouldReturnResponse(response, attempt, maxRetriesForRequest) {
88
+ return !RETRYABLE_STATUS_CODES.has(response.status) || attempt === maxRetriesForRequest;
89
+ }
90
+ function shouldRethrowFetchError(error, attempt, maxRetriesForRequest) {
91
+ return !isRetryable(error) || attempt === maxRetriesForRequest;
92
+ }
93
+ function getRetryDelayMs(attempt, baseDelayMs, maxDelayMs, lastResponse) {
94
+ const retryAfterMs = lastResponse !== undefined ? parseRetryAfterMs(lastResponse) : undefined;
95
+ const backoffMs = computeBackoffDelay(attempt, baseDelayMs, maxDelayMs);
96
+ return retryAfterMs === undefined ? backoffMs : Math.max(retryAfterMs, backoffMs);
97
+ }
98
+ /**
99
+ * Mutates the request options and headers with an octet-stream body.
100
+ * Returns whether the body is replayable for transport-level retries.
101
+ */
102
+ function attachDataRequestBody(fetchOpts, requestHeaders, requestBody) {
103
+ requestHeaders['content-type'] = 'application/octet-stream';
104
+ fetchOpts.body = requestBody;
105
+ if (requestBody instanceof ReadableStream) {
106
+ // Required by the Fetch standard for streaming request bodies. The stream is one-shot,
107
+ // so transport-level retries must not replay the same body after a failed attempt.
108
+ fetchOpts.duplex = 'half';
109
+ return false;
110
+ }
111
+ return true;
112
+ }
80
113
  /**
81
114
  * HTTP client that can be used to communicate with Dwn Servers.
82
115
  *
@@ -94,10 +127,6 @@ export class HttpDwnRpcClient {
94
127
  maxDelayMs: (_c = retryOptions === null || retryOptions === void 0 ? void 0 : retryOptions.maxDelayMs) !== null && _c !== void 0 ? _c : DEFAULT_MAX_DELAY_MS,
95
128
  };
96
129
  }
97
- /** Detects whether the current runtime is Bun (vs a browser). */
98
- static isBunRuntime() {
99
- return typeof globalThis.Bun !== 'undefined';
100
- }
101
130
  get transportProtocols() { return ['http:', 'https:']; }
102
131
  sendDwnRequest(request) {
103
132
  return __awaiter(this, void 0, void 0, function* () {
@@ -111,27 +140,14 @@ export class HttpDwnRpcClient {
111
140
  'dwn-request': JSON.stringify(jsonRpcRequest)
112
141
  };
113
142
  const fetchOpts = Object.assign({ method: 'POST', headers: requestHeaders }, (request.signal ? { signal: request.signal } : {}));
114
- if (request.data) {
115
- requestHeaders['content-type'] = 'application/octet-stream';
116
- let requestBody = request.data;
117
- if (requestBody instanceof ReadableStream) {
118
- // Bun's fetch currently fails on some ReadableStream uploads in the sync push path.
119
- // Buffer to a Blob in Bun to avoid the broken path. In browsers, keep the stream
120
- // and set `duplex: 'half'` which the Fetch spec requires for streaming request bodies.
121
- // See: https://developer.chrome.com/docs/capabilities/web-apis/fetch-streaming-requests
122
- if (HttpDwnRpcClient.isBunRuntime()) {
123
- const bodyBytes = yield DataStream.toBytes(requestBody);
124
- requestBody = new Blob([bodyBytes], { type: 'application/octet-stream' });
125
- }
126
- else {
127
- // Browsers require `duplex: 'half'` when the fetch body is a ReadableStream.
128
- // TypeScript's built-in RequestInit does not include `duplex` yet.
129
- fetchOpts.duplex = 'half';
130
- }
131
- }
132
- fetchOpts.body = requestBody;
143
+ let isRequestBodyReplayable = true;
144
+ if (request.data !== undefined) {
145
+ isRequestBodyReplayable = attachDataRequestBody(fetchOpts, requestHeaders, request.data);
133
146
  }
134
- const resp = yield this.fetchWithRetry(request.dwnUrl, fetchOpts, { requestTimeoutMs: request.timeoutMs });
147
+ const resp = yield this.fetchWithRetry(request.dwnUrl, fetchOpts, {
148
+ requestTimeoutMs: request.timeoutMs,
149
+ retryableRequestBody: isRequestBodyReplayable,
150
+ });
135
151
  // After retries are exhausted, a 429 means we're still rate-limited.
136
152
  // Per-IP 429s return plain JSON (not a JSON-RPC envelope), so we must
137
153
  // check the status before attempting JSON-RPC parsing.
@@ -167,21 +183,17 @@ export class HttpDwnRpcClient {
167
183
  }
168
184
  throw new DwnRpcError(code, message, dwnRpcResponse.error.data);
169
185
  }
170
- // Materialise the response body before attaching to the reply.
171
- // Bun has a bug where ReadableStream from fetch resp.body crashes in
172
- // DataStream.toBytes() (reader.releaseLock() is undefined) when the
173
- // stream is later consumed by the local DWN node (e.g. during sync).
174
- // Buffering via arrayBuffer() avoids the broken getReader() path.
175
- // TODO: https://github.com/enboxorg/enbox/issues/90 — remove once Bun ships fix
176
186
  const { reply } = dwnRpcResponse.result;
177
187
  if (hasDataStream) {
178
- const bodyBytes = new Uint8Array(yield resp.arrayBuffer());
179
- const dataStream = DataStream.fromBytes(bodyBytes);
188
+ const dataStream = resp.body;
189
+ if (dataStream === null) {
190
+ throw new Error(`missing data stream in json rpc response. dwn url: ${request.dwnUrl}`);
191
+ }
180
192
  if (reply.record) {
181
- reply.record.data = dataStream;
193
+ reply.record.data = normalizeReadableStream(dataStream);
182
194
  }
183
195
  else if (reply.entry) {
184
- reply.entry.data = dataStream;
196
+ reply.entry.data = normalizeReadableStream(dataStream);
185
197
  }
186
198
  }
187
199
  return reply;
@@ -199,22 +211,13 @@ export class HttpDwnRpcClient {
199
211
  'dwn-request': JSON.stringify(jsonRpcRequest)
200
212
  };
201
213
  const fetchOpts = Object.assign({ method: 'POST', headers: requestHeaders }, (request.signal ? { signal: request.signal } : {}));
202
- if (request.data) {
203
- requestHeaders['content-type'] = 'application/octet-stream';
204
- let requestBody = request.data;
205
- if (requestBody instanceof ReadableStream) {
206
- if (HttpDwnRpcClient.isBunRuntime()) {
207
- const bodyBytes = yield DataStream.toBytes(requestBody);
208
- requestBody = new Blob([bodyBytes], { type: 'application/octet-stream' });
209
- }
210
- else {
211
- fetchOpts.duplex = 'half';
212
- }
213
- }
214
- fetchOpts.body = requestBody;
214
+ let isRequestBodyReplayable = true;
215
+ if (request.data !== undefined) {
216
+ isRequestBodyReplayable = attachDataRequestBody(fetchOpts, requestHeaders, request.data);
215
217
  }
216
218
  const resp = yield this.fetchWithRetry(request.dwnUrl, fetchOpts, {
217
219
  requestTimeoutMs: (_a = request.timeoutMs) !== null && _a !== void 0 ? _a : defaultReplicationApplyTimeoutMs(request.message),
220
+ retryableRequestBody: isRequestBodyReplayable,
218
221
  });
219
222
  if (resp.status === 429) {
220
223
  const retryAfter = Number.parseInt((_b = resp.headers.get('retry-after')) !== null && _b !== void 0 ? _b : '1', 10);
@@ -290,35 +293,29 @@ export class HttpDwnRpcClient {
290
293
  var _a;
291
294
  const { maxRetries, baseDelayMs, maxDelayMs } = this._retryOptions;
292
295
  const requestTimeoutMs = (_a = options.requestTimeoutMs) !== null && _a !== void 0 ? _a : DEFAULT_REQUEST_TIMEOUT_MS;
296
+ const maxRetriesForRequest = options.retryableRequestBody === false ? 0 : maxRetries;
293
297
  let lastError;
294
298
  let lastResponse;
295
- for (let attempt = 0; attempt <= maxRetries; attempt++) {
299
+ for (let attempt = 0; attempt <= maxRetriesForRequest; attempt++) {
296
300
  try {
297
301
  // Apply a per-attempt timeout to prevent hung connections / SSRF.
298
302
  // If the caller already supplied a signal, combine it with the timeout
299
303
  // via AbortSignal.any(); otherwise create a fresh timeout signal.
300
- const timeoutSignal = AbortSignal.timeout(requestTimeoutMs);
301
- const attemptInit = Object.assign(Object.assign({}, init), { signal: (init === null || init === void 0 ? void 0 : init.signal)
302
- ? AbortSignal.any([init.signal, timeoutSignal])
303
- : timeoutSignal });
304
- const response = yield fetch(url, attemptInit);
305
- if (!RETRYABLE_STATUS_CODES.has(response.status) || attempt === maxRetries) {
304
+ const response = yield fetch(url, createAttemptInit(init, requestTimeoutMs));
305
+ if (shouldReturnResponse(response, attempt, maxRetriesForRequest)) {
306
306
  return response;
307
307
  }
308
308
  // Retryable status — back off and try again.
309
309
  lastResponse = response;
310
310
  }
311
311
  catch (error) {
312
- if (!isRetryable(error) || attempt === maxRetries) {
312
+ if (shouldRethrowFetchError(error, attempt, maxRetriesForRequest)) {
313
313
  throw error;
314
314
  }
315
315
  lastError = error;
316
316
  }
317
317
  // Compute the delay, preferring Retry-After when available.
318
- const retryAfterMs = lastResponse ? parseRetryAfterMs(lastResponse) : undefined;
319
- const backoffMs = computeBackoffDelay(attempt, baseDelayMs, maxDelayMs);
320
- const delayMs = retryAfterMs === undefined ? backoffMs : Math.max(retryAfterMs, backoffMs);
321
- yield sleep(delayMs);
318
+ yield sleep(getRetryDelayMs(attempt, baseDelayMs, maxDelayMs, lastResponse));
322
319
  }
323
320
  // Should not reach here, but satisfy the compiler.
324
321
  if (lastResponse) {
@@ -1 +1 @@
1
- {"version":3,"file":"http-dwn-rpc-client.js","sourceRoot":"","sources":["../../src/http-dwn-rpc-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-dwn-rpc-client.js","sourceRoot":"","sources":["../../src/http-dwn-rpc-client.ts"],"names":[],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -7,6 +7,7 @@ export * from './json-rpc.js';
7
7
  export * from './json-rpc-socket.js';
8
8
  export * from './provider-directory-types.js';
9
9
  export * from './rate-limit-error.js';
10
+ export * from './readable-stream.js';
10
11
  export * from './registration-types.js';
11
12
  export * from './rpc-client.js';
12
13
  export * from './server-info-types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,oEAAoE;AACpE,0DAA0D;AAC1D,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,oEAAoE;AACpE,0DAA0D;AAC1D,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,68 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ /**
11
+ * Wraps runtime-provided streams in a standard `ReadableStream` so downstream
12
+ * consumers see consistent reader behavior across Bun and browsers.
13
+ */
14
+ export function normalizeReadableStream(readableStream) {
15
+ const reader = readableStream.getReader();
16
+ let readerReleased = false;
17
+ const releaseReader = () => {
18
+ var _a;
19
+ if (readerReleased) {
20
+ return;
21
+ }
22
+ (_a = reader.releaseLock) === null || _a === void 0 ? void 0 : _a.call(reader);
23
+ readerReleased = true;
24
+ };
25
+ const cancelReader = (reason) => __awaiter(this, void 0, void 0, function* () {
26
+ var _a;
27
+ try {
28
+ yield ((_a = reader.cancel) === null || _a === void 0 ? void 0 : _a.call(reader, reason));
29
+ }
30
+ finally {
31
+ releaseReader();
32
+ }
33
+ });
34
+ return new ReadableStream({
35
+ pull(controller) {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ var _a;
38
+ try {
39
+ const { done, value } = yield reader.read();
40
+ if (done) {
41
+ releaseReader();
42
+ controller.close();
43
+ return;
44
+ }
45
+ controller.enqueue(value);
46
+ }
47
+ catch (error) {
48
+ try {
49
+ yield ((_a = reader.cancel) === null || _a === void 0 ? void 0 : _a.call(reader, error));
50
+ }
51
+ catch (_b) {
52
+ // Preserve the original read error.
53
+ }
54
+ finally {
55
+ releaseReader();
56
+ }
57
+ throw error;
58
+ }
59
+ });
60
+ },
61
+ cancel(reason) {
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ yield cancelReader(reason);
64
+ });
65
+ },
66
+ });
67
+ }
68
+ //# sourceMappingURL=readable-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readable-stream.js","sourceRoot":"","sources":["../../src/readable-stream.ts"],"names":[],"mappings":";;;;;;;;;AAMA;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,cAA0C;IAChF,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAA0B,CAAC;IAClE,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,MAAM,aAAa,GAAG,GAAS,EAAE;;QAC/B,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,MAAA,MAAM,CAAC,WAAW,sDAAI,CAAC;QACvB,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAO,MAAgB,EAAiB,EAAE;;QAC7D,IAAI,CAAC;YACH,MAAM,CAAA,MAAA,MAAM,CAAC,MAAM,uDAAG,MAAM,CAAC,CAAA,CAAC;QAChC,CAAC;gBAAS,CAAC;YACT,aAAa,EAAE,CAAC;QAClB,CAAC;IACH,CAAC,CAAA,CAAC;IAEF,OAAO,IAAI,cAAc,CAAa;QAC9B,IAAI,CAAC,UAAU;;;gBACnB,IAAI,CAAC;oBACH,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;oBAC5C,IAAI,IAAI,EAAE,CAAC;wBACT,aAAa,EAAE,CAAC;wBAChB,UAAU,CAAC,KAAK,EAAE,CAAC;wBACnB,OAAO;oBACT,CAAC;oBAED,UAAU,CAAC,OAAO,CAAC,KAAM,CAAC,CAAC;gBAC7B,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACxB,IAAI,CAAC;wBACH,MAAM,CAAA,MAAA,MAAM,CAAC,MAAM,uDAAG,KAAK,CAAC,CAAA,CAAC;oBAC/B,CAAC;oBAAC,WAAM,CAAC;wBACP,oCAAoC;oBACtC,CAAC;4BAAS,CAAC;wBACT,aAAa,EAAE,CAAC;oBAClB,CAAC;oBACD,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;SAAA;QAEK,MAAM,CAAC,MAAM;;gBACjB,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;SAAA;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -7,6 +7,7 @@ export function parseReplicationApplyResult(value) {
7
7
  }
8
8
  switch (value.kind) {
9
9
  case 'Applied':
10
+ return parseAppliedResult(value);
10
11
  case 'Duplicate':
11
12
  case 'Superseded':
12
13
  return { kind: value.kind };
@@ -29,6 +30,22 @@ export function parseReplicationApplyResult(value) {
29
30
  throw malformedReplicationApplyResult(`unknown result kind ${value.kind}`);
30
31
  }
31
32
  }
33
+ function parseAppliedResult(value) {
34
+ const result = { kind: 'Applied' };
35
+ if (value.ancestryOnly !== undefined) {
36
+ if (value.ancestryOnly !== true) {
37
+ throw malformedReplicationApplyResult('Applied result ancestryOnly must be true when present');
38
+ }
39
+ result.ancestryOnly = true;
40
+ }
41
+ if (value.position !== undefined) {
42
+ if (!isProgressToken(value.position)) {
43
+ throw malformedReplicationApplyResult('Applied result position must be a valid ProgressToken when present');
44
+ }
45
+ result.position = value.position;
46
+ }
47
+ return result;
48
+ }
32
49
  function malformedReplicationApplyResult(detail) {
33
50
  return new DwnRpcError(JsonRpcErrorCodes.InternalError, `malformed dwn.applyReplicatedMessage result: ${detail}`);
34
51
  }
@@ -70,6 +87,15 @@ function isDependencyRef(value) {
70
87
  function isObject(value) {
71
88
  return typeof value === 'object' && value !== null;
72
89
  }
90
+ function isProgressToken(value) {
91
+ if (!isObject(value)) {
92
+ return false;
93
+ }
94
+ return typeof value.streamId === 'string' && value.streamId !== '' &&
95
+ typeof value.epoch === 'string' && value.epoch !== '' &&
96
+ typeof value.position === 'string' && value.position !== '' &&
97
+ (value.messageCid === undefined || (typeof value.messageCid === 'string' && value.messageCid !== ''));
98
+ }
73
99
  function isOptionalString(value) {
74
100
  return value === undefined || typeof value === 'string';
75
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"replication-apply-result.js","sourceRoot":"","sources":["../../src/replication-apply-result.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"replication-apply-result.js","sourceRoot":"","sources":["../../src/replication-apply-result.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,12 @@ import { createJsonRpcAck, createJsonRpcRequest, createJsonRpcSubscriptionReques
16
16
  import { DataStream, Encoder } from '@enbox/dwn-sdk-js';
17
17
  import { DEFAULT_MAX_WS_RAW_RECORD_DATA_BYTES, maxWsJsonRpcPayloadBytes } from './ws-payload-size.js';
18
18
  const DEFAULT_MAX_WS_JSON_RPC_PAYLOAD_BYTES = maxWsJsonRpcPayloadBytes(DEFAULT_MAX_WS_RAW_RECORD_DATA_BYTES);
19
+ function connectionCacheKey(url) {
20
+ return stripTrailingSlash(url.toString());
21
+ }
22
+ function stripTrailingSlash(url) {
23
+ return url.endsWith('/') ? url.slice(0, -1) : url;
24
+ }
19
25
  function shouldReplaceLastCursor(current, candidate) {
20
26
  if (current === undefined) {
21
27
  return true;
@@ -76,24 +82,25 @@ export class WebSocketDwnRpcClient {
76
82
  if (url.protocol !== 'ws:' && url.protocol !== 'wss:') {
77
83
  throw new Error(`Invalid websocket protocol ${url.protocol}`);
78
84
  }
79
- const existing = WebSocketDwnRpcClient.connections.get(url.host);
85
+ const key = connectionCacheKey(url);
86
+ const existing = WebSocketDwnRpcClient.connections.get(key);
80
87
  if (existing !== undefined) {
81
88
  return existing;
82
89
  }
83
- let pending = WebSocketDwnRpcClient.pendingConnections.get(url.host);
90
+ let pending = WebSocketDwnRpcClient.pendingConnections.get(key);
84
91
  if (pending === undefined) {
85
92
  pending = WebSocketDwnRpcClient.createConnection(url)
86
93
  .then((connection) => {
87
- WebSocketDwnRpcClient.connections.set(url.host, connection);
94
+ WebSocketDwnRpcClient.connections.set(key, connection);
88
95
  return connection;
89
96
  })
90
97
  .catch((error) => {
91
- throw new Error(`Error connecting to ${url.host}: ${error.message}`);
98
+ throw new Error(`Error connecting to ${key}: ${error.message}`);
92
99
  })
93
100
  .finally(() => {
94
- WebSocketDwnRpcClient.pendingConnections.delete(url.host);
101
+ WebSocketDwnRpcClient.pendingConnections.delete(key);
95
102
  });
96
- WebSocketDwnRpcClient.pendingConnections.set(url.host, pending);
103
+ WebSocketDwnRpcClient.pendingConnections.set(key, pending);
97
104
  }
98
105
  return pending;
99
106
  });
@@ -103,12 +110,12 @@ export class WebSocketDwnRpcClient {
103
110
  */
104
111
  static createConnection(url) {
105
112
  return __awaiter(this, void 0, void 0, function* () {
106
- const host = url.host;
113
+ const key = connectionCacheKey(url);
107
114
  const subscriptions = new Map();
108
115
  const socket = yield JsonRpcSocket.connect(url.toString(), {
109
116
  onclose: () => {
110
117
  // Remove the stale connection from the map so new requests create a fresh one.
111
- WebSocketDwnRpcClient.connections.delete(host);
118
+ WebSocketDwnRpcClient.connections.delete(key);
112
119
  // Notify all subscription handlers of disconnection.
113
120
  for (const tracked of subscriptions.values()) {
114
121
  tracked.handler({ type: 'disconnected' });
@@ -122,7 +129,7 @@ export class WebSocketDwnRpcClient {
122
129
  onreconnected: () => {
123
130
  // Re-register this connection in the map (it was deleted on close).
124
131
  const conn = { socket, subscriptions, url: url.toString() };
125
- WebSocketDwnRpcClient.connections.set(host, conn);
132
+ WebSocketDwnRpcClient.connections.set(key, conn);
126
133
  // Resubscribe all tracked subscriptions with their last known cursor.
127
134
  WebSocketDwnRpcClient.resubscribeAll(conn);
128
135
  },
@@ -285,7 +292,7 @@ export class WebSocketDwnRpcClient {
285
292
  }
286
293
  }
287
294
  }
288
- // a map of dwn host to WebSocket connection
295
+ // a map of normalized DWN WebSocket endpoint URLs to WebSocket connections
289
296
  WebSocketDwnRpcClient.connections = new Map();
290
297
  WebSocketDwnRpcClient.pendingConnections = new Map();
291
298
  function httpUrlForWsDwnUrl(dwnUrl) {
@@ -1 +1 @@
1
- {"version":3,"file":"web-socket-clients.js","sourceRoot":"","sources":["../../src/web-socket-clients.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-socket-clients.js","sourceRoot":"","sources":["../../src/web-socket-clients.ts"],"names":[],"mappings":"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"}
@@ -23,8 +23,6 @@ export declare class HttpDwnRpcClient implements DwnRpc {
23
23
  private readonly serverInfoCache;
24
24
  private readonly _retryOptions;
25
25
  constructor(serverInfoCache?: DwnServerInfoCache, retryOptions?: HttpRetryOptions);
26
- /** Detects whether the current runtime is Bun (vs a browser). */
27
- static isBunRuntime(): boolean;
28
26
  get transportProtocols(): string[];
29
27
  sendDwnRequest(request: DwnRpcRequest): Promise<DwnRpcResponse>;
30
28
  applyReplicatedMessage(request: DwnReplicationApplyRequest): Promise<ReplicationApplyResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"http-dwn-rpc-client.d.ts","sourceRoot":"","sources":["../../src/http-dwn-rpc-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC5G,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAiC7E;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAuDF;;;;;;GAMG;AACH,qBAAa,gBAAiB,YAAW,MAAM;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IACrD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;gBAE/C,eAAe,CAAC,EAAE,kBAAkB,EAAE,YAAY,CAAC,EAAE,gBAAgB;IASjF,iEAAiE;IACjE,MAAM,CAAC,YAAY,IAAI,OAAO;IAI9B,IAAI,kBAAkB,IAAI,MAAM,EAAE,CAAgC;IAE5D,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IA4G/D,sBAAsB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA2D5F,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA8CxD;;;;OAIG;YACW,cAAc;CAiD7B"}
1
+ {"version":3,"file":"http-dwn-rpc-client.d.ts","sourceRoot":"","sources":["../../src/http-dwn-rpc-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC5G,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAiC7E;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAiGF;;;;;;GAMG;AACH,qBAAa,gBAAiB,YAAW,MAAM;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IACrD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;gBAE/C,eAAe,CAAC,EAAE,kBAAkB,EAAE,YAAY,CAAC,EAAE,gBAAgB;IASjF,IAAI,kBAAkB,IAAI,MAAM,EAAE,CAAgC;IAE5D,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IA0F/D,sBAAsB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAiD5F,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA8CxD;;;;OAIG;YACW,cAAc;CAyC7B"}
@@ -7,6 +7,7 @@ export * from './json-rpc.js';
7
7
  export * from './json-rpc-socket.js';
8
8
  export * from './provider-directory-types.js';
9
9
  export * from './rate-limit-error.js';
10
+ export * from './readable-stream.js';
10
11
  export * from './registration-types.js';
11
12
  export * from './rpc-client.js';
12
13
  export * from './server-info-types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Wraps runtime-provided streams in a standard `ReadableStream` so downstream
3
+ * consumers see consistent reader behavior across Bun and browsers.
4
+ */
5
+ export declare function normalizeReadableStream(readableStream: ReadableStream<Uint8Array>): ReadableStream<Uint8Array>;
6
+ //# sourceMappingURL=readable-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readable-stream.d.ts","sourceRoot":"","sources":["../../src/readable-stream.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,CAgD9G"}
@@ -1 +1 @@
1
- {"version":3,"file":"replication-apply-result.d.ts","sourceRoot":"","sources":["../../src/replication-apply-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAO/E,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CA4BlF"}
1
+ {"version":3,"file":"replication-apply-result.d.ts","sourceRoot":"","sources":["../../src/replication-apply-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgC,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAO9F,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CA6BlF"}
@@ -1 +1 @@
1
- {"version":3,"file":"web-socket-clients.d.ts","sourceRoot":"","sources":["../../src/web-socket-clients.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,MAAM,EACN,aAAa,EACb,cAAc,EAGf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,KAAK,EAIV,sBAAsB,EAGvB,MAAM,mBAAmB,CAAC;AA2D3B,qBAAa,qBAAsB,YAAW,MAAM;IAM/B,OAAO,CAAC,QAAQ,CAAC,aAAa;IALjD,IAAW,kBAAkB,IAAI,MAAM,EAAE,CAA4B;IAErE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAuC;IAC1E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAgD;gBAEtD,aAAa,GAAE,gBAAyC;IAEtF,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAoB/D,sBAAsB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAS5F,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;YAI1C,iCAAiC;mBAU1B,aAAa;IA8BlC;;OAEG;mBACkB,gBAAgB;mBAkChB,cAAc;mBAiBd,sBAAsB;mBA0BtB,mBAAmB;IA2FxC;;;;;OAKG;mBACkB,cAAc;IAoCnC,OAAO,CAAC,MAAM,CAAC,kCAAkC;IAUjD,OAAO,CAAC,MAAM,CAAC,wCAAwC;IAUvD,OAAO,CAAC,MAAM,CAAC,sBAAsB;CAatC"}
1
+ {"version":3,"file":"web-socket-clients.d.ts","sourceRoot":"","sources":["../../src/web-socket-clients.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,MAAM,EACN,aAAa,EACb,cAAc,EAGf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,KAAK,EAIV,sBAAsB,EAGvB,MAAM,mBAAmB,CAAC;AAmE3B,qBAAa,qBAAsB,YAAW,MAAM;IAM/B,OAAO,CAAC,QAAQ,CAAC,aAAa;IALjD,IAAW,kBAAkB,IAAI,MAAM,EAAE,CAA4B;IAErE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAuC;IAC1E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAgD;gBAEtD,aAAa,GAAE,gBAAyC;IAEtF,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAoB/D,sBAAsB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAS5F,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;YAI1C,iCAAiC;mBAU1B,aAAa;IA+BlC;;OAEG;mBACkB,gBAAgB;mBAkChB,cAAc;mBAiBd,sBAAsB;mBA0BtB,mBAAmB;IA2FxC;;;;;OAKG;mBACkB,cAAc;IAoCnC,OAAO,CAAC,MAAM,CAAC,kCAAkC;IAUjD,OAAO,CAAC,MAAM,CAAC,wCAAwC;IAUvD,OAAO,CAAC,MAAM,CAAC,sBAAsB;CAatC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enbox/dwn-clients",
3
- "version": "0.4.5",
3
+ "version": "0.4.6",
4
4
  "type": "module",
5
5
  "main": "./dist/esm/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -43,12 +43,12 @@
43
43
  "access": "public"
44
44
  },
45
45
  "engines": {
46
- "bun": ">=1.0.0"
46
+ "bun": ">=1.3.14"
47
47
  },
48
48
  "dependencies": {
49
49
  "@enbox/common": "0.1.1",
50
50
  "@enbox/crypto": "0.1.1",
51
- "@enbox/dwn-sdk-js": "0.4.0",
51
+ "@enbox/dwn-sdk-js": "0.4.1",
52
52
  "ms": "2.1.3"
53
53
  },
54
54
  "devDependencies": {
@@ -57,7 +57,7 @@
57
57
  "@types/sinon": "17.0.3",
58
58
  "@typescript-eslint/eslint-plugin": "8.32.1",
59
59
  "@typescript-eslint/parser": "8.32.1",
60
- "bun-types": "1.3.10",
60
+ "bun-types": "1.3.14",
61
61
  "eslint": "9.7.0",
62
62
  "sinon": "18.0.0",
63
63
  "typescript": "5.9.3"
@@ -4,9 +4,9 @@ import type { DwnReplicationApplyRequest, DwnRpc, DwnRpcRequest, DwnRpcResponse
4
4
  import type { DwnServerInfoCache, ServerInfo } from './server-info-types.js';
5
5
 
6
6
  import { CryptoUtils } from '@enbox/crypto';
7
- import { DataStream } from '@enbox/dwn-sdk-js';
8
7
  import { DwnRpcError } from './dwn-rpc-error.js';
9
8
  import { DwnServerInfoCacheMemory } from './dwn-server-info-cache-memory.js';
9
+ import { normalizeReadableStream } from './readable-stream.js';
10
10
  import { parseReplicationApplyResult } from './replication-apply-result.js';
11
11
  import { RateLimitError } from './rate-limit-error.js';
12
12
  import { sleep } from '@enbox/common';
@@ -99,6 +99,48 @@ function parseRetryAfterMs(response: Response): number | undefined {
99
99
  return undefined;
100
100
  }
101
101
 
102
+ function createAttemptInit(init: RequestInit | undefined, requestTimeoutMs: number): RequestInit {
103
+ const timeoutSignal = AbortSignal.timeout(requestTimeoutMs);
104
+ if (init?.signal === undefined || init.signal === null) {
105
+ return { ...init, signal: timeoutSignal };
106
+ }
107
+
108
+ return { ...init, signal: AbortSignal.any([init.signal, timeoutSignal]) };
109
+ }
110
+
111
+ function shouldReturnResponse(response: Response, attempt: number, maxRetriesForRequest: number): boolean {
112
+ return !RETRYABLE_STATUS_CODES.has(response.status) || attempt === maxRetriesForRequest;
113
+ }
114
+
115
+ function shouldRethrowFetchError(error: unknown, attempt: number, maxRetriesForRequest: number): boolean {
116
+ return !isRetryable(error) || attempt === maxRetriesForRequest;
117
+ }
118
+
119
+ function getRetryDelayMs(attempt: number, baseDelayMs: number, maxDelayMs: number, lastResponse?: Response): number {
120
+ const retryAfterMs = lastResponse !== undefined ? parseRetryAfterMs(lastResponse) : undefined;
121
+ const backoffMs = computeBackoffDelay(attempt, baseDelayMs, maxDelayMs);
122
+
123
+ return retryAfterMs === undefined ? backoffMs : Math.max(retryAfterMs, backoffMs);
124
+ }
125
+
126
+ /**
127
+ * Mutates the request options and headers with an octet-stream body.
128
+ * Returns whether the body is replayable for transport-level retries.
129
+ */
130
+ function attachDataRequestBody(fetchOpts: RequestInit, requestHeaders: Record<string, string>, requestBody: BodyInit): boolean {
131
+ requestHeaders['content-type'] = 'application/octet-stream';
132
+ fetchOpts.body = requestBody;
133
+
134
+ if (requestBody instanceof ReadableStream) {
135
+ // Required by the Fetch standard for streaming request bodies. The stream is one-shot,
136
+ // so transport-level retries must not replay the same body after a failed attempt.
137
+ (fetchOpts as RequestInit & { duplex: 'half' }).duplex = 'half';
138
+ return false;
139
+ }
140
+
141
+ return true;
142
+ }
143
+
102
144
  /**
103
145
  * HTTP client that can be used to communicate with Dwn Servers.
104
146
  *
@@ -119,11 +161,6 @@ export class HttpDwnRpcClient implements DwnRpc {
119
161
  };
120
162
  }
121
163
 
122
- /** Detects whether the current runtime is Bun (vs a browser). */
123
- static isBunRuntime(): boolean {
124
- return typeof (globalThis as Record<string, unknown>).Bun !== 'undefined';
125
- }
126
-
127
164
  get transportProtocols(): string[] { return ['http:', 'https:']; }
128
165
 
129
166
  async sendDwnRequest(request: DwnRpcRequest): Promise<DwnRpcResponse> {
@@ -147,29 +184,15 @@ export class HttpDwnRpcClient implements DwnRpc {
147
184
  ...(request.signal ? { signal: request.signal } : {}),
148
185
  };
149
186
 
150
- if (request.data) {
151
- requestHeaders['content-type'] = 'application/octet-stream';
152
- let requestBody = request.data;
153
-
154
- if (requestBody instanceof ReadableStream) {
155
- // Bun's fetch currently fails on some ReadableStream uploads in the sync push path.
156
- // Buffer to a Blob in Bun to avoid the broken path. In browsers, keep the stream
157
- // and set `duplex: 'half'` which the Fetch spec requires for streaming request bodies.
158
- // See: https://developer.chrome.com/docs/capabilities/web-apis/fetch-streaming-requests
159
- if (HttpDwnRpcClient.isBunRuntime()) {
160
- const bodyBytes = await DataStream.toBytes(requestBody as ReadableStream<Uint8Array>);
161
- requestBody = new Blob([bodyBytes as BlobPart], { type: 'application/octet-stream' });
162
- } else {
163
- // Browsers require `duplex: 'half'` when the fetch body is a ReadableStream.
164
- // TypeScript's built-in RequestInit does not include `duplex` yet.
165
- (fetchOpts as Record<string, unknown>).duplex = 'half';
166
- }
167
- }
168
-
169
- fetchOpts.body = requestBody;
187
+ let isRequestBodyReplayable = true;
188
+ if (request.data !== undefined) {
189
+ isRequestBodyReplayable = attachDataRequestBody(fetchOpts, requestHeaders, request.data as BodyInit);
170
190
  }
171
191
 
172
- const resp = await this.fetchWithRetry(request.dwnUrl, fetchOpts, { requestTimeoutMs: request.timeoutMs });
192
+ const resp = await this.fetchWithRetry(request.dwnUrl, fetchOpts, {
193
+ requestTimeoutMs : request.timeoutMs,
194
+ retryableRequestBody : isRequestBodyReplayable,
195
+ });
173
196
 
174
197
  // After retries are exhausted, a 429 means we're still rate-limited.
175
198
  // Per-IP 429s return plain JSON (not a JSON-RPC envelope), so we must
@@ -214,20 +237,16 @@ export class HttpDwnRpcClient implements DwnRpc {
214
237
  throw new DwnRpcError(code, message, dwnRpcResponse.error.data);
215
238
  }
216
239
 
217
- // Materialise the response body before attaching to the reply.
218
- // Bun has a bug where ReadableStream from fetch resp.body crashes in
219
- // DataStream.toBytes() (reader.releaseLock() is undefined) when the
220
- // stream is later consumed by the local DWN node (e.g. during sync).
221
- // Buffering via arrayBuffer() avoids the broken getReader() path.
222
- // TODO: https://github.com/enboxorg/enbox/issues/90 — remove once Bun ships fix
223
240
  const { reply } = dwnRpcResponse.result;
224
241
  if (hasDataStream) {
225
- const bodyBytes = new Uint8Array(await resp.arrayBuffer());
226
- const dataStream = DataStream.fromBytes(bodyBytes);
242
+ const dataStream = resp.body;
243
+ if (dataStream === null) {
244
+ throw new Error(`missing data stream in json rpc response. dwn url: ${request.dwnUrl}`);
245
+ }
227
246
  if (reply.record) {
228
- reply.record.data = dataStream;
247
+ reply.record.data = normalizeReadableStream(dataStream);
229
248
  } else if (reply.entry) {
230
- reply.entry.data = dataStream;
249
+ reply.entry.data = normalizeReadableStream(dataStream);
231
250
  }
232
251
  }
233
252
 
@@ -251,24 +270,14 @@ export class HttpDwnRpcClient implements DwnRpc {
251
270
  ...(request.signal ? { signal: request.signal } : {}),
252
271
  };
253
272
 
254
- if (request.data) {
255
- requestHeaders['content-type'] = 'application/octet-stream';
256
- let requestBody = request.data;
257
-
258
- if (requestBody instanceof ReadableStream) {
259
- if (HttpDwnRpcClient.isBunRuntime()) {
260
- const bodyBytes = await DataStream.toBytes(requestBody as ReadableStream<Uint8Array>);
261
- requestBody = new Blob([bodyBytes as BlobPart], { type: 'application/octet-stream' });
262
- } else {
263
- (fetchOpts as Record<string, unknown>).duplex = 'half';
264
- }
265
- }
266
-
267
- fetchOpts.body = requestBody;
273
+ let isRequestBodyReplayable = true;
274
+ if (request.data !== undefined) {
275
+ isRequestBodyReplayable = attachDataRequestBody(fetchOpts, requestHeaders, request.data as BodyInit);
268
276
  }
269
277
 
270
278
  const resp = await this.fetchWithRetry(request.dwnUrl, fetchOpts, {
271
- requestTimeoutMs: request.timeoutMs ?? defaultReplicationApplyTimeoutMs(request.message),
279
+ requestTimeoutMs : request.timeoutMs ?? defaultReplicationApplyTimeoutMs(request.message),
280
+ retryableRequestBody : isRequestBodyReplayable,
272
281
  });
273
282
  if (resp.status === 429) {
274
283
  const retryAfter = Number.parseInt(resp.headers.get('retry-after') ?? '1', 10);
@@ -344,47 +353,39 @@ export class HttpDwnRpcClient implements DwnRpc {
344
353
  * retryable HTTP status codes with exponential backoff and jitter.
345
354
  * Honours the `Retry-After` response header when present.
346
355
  */
347
- private async fetchWithRetry(url: string, init?: RequestInit, options: { requestTimeoutMs?: number } = {}): Promise<Response> {
356
+ private async fetchWithRetry(
357
+ url: string,
358
+ init?: RequestInit,
359
+ options: { requestTimeoutMs?: number; retryableRequestBody?: boolean } = {},
360
+ ): Promise<Response> {
348
361
  const { maxRetries, baseDelayMs, maxDelayMs } = this._retryOptions;
349
362
  const requestTimeoutMs = options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;
363
+ const maxRetriesForRequest = options.retryableRequestBody === false ? 0 : maxRetries;
350
364
 
351
365
  let lastError: unknown;
352
366
  let lastResponse: Response | undefined;
353
367
 
354
- for (let attempt = 0; attempt <= maxRetries; attempt++) {
368
+ for (let attempt = 0; attempt <= maxRetriesForRequest; attempt++) {
355
369
  try {
356
370
  // Apply a per-attempt timeout to prevent hung connections / SSRF.
357
371
  // If the caller already supplied a signal, combine it with the timeout
358
372
  // via AbortSignal.any(); otherwise create a fresh timeout signal.
359
- const timeoutSignal = AbortSignal.timeout(requestTimeoutMs);
360
- const attemptInit: RequestInit = {
361
- ...init,
362
- signal: init?.signal
363
- ? AbortSignal.any([init.signal, timeoutSignal])
364
- : timeoutSignal,
365
- };
366
-
367
- const response = await fetch(url, attemptInit);
368
-
369
- if (!RETRYABLE_STATUS_CODES.has(response.status) || attempt === maxRetries) {
373
+ const response = await fetch(url, createAttemptInit(init, requestTimeoutMs));
374
+ if (shouldReturnResponse(response, attempt, maxRetriesForRequest)) {
370
375
  return response;
371
376
  }
372
377
 
373
378
  // Retryable status — back off and try again.
374
379
  lastResponse = response;
375
380
  } catch (error: unknown) {
376
- if (!isRetryable(error) || attempt === maxRetries) {
381
+ if (shouldRethrowFetchError(error, attempt, maxRetriesForRequest)) {
377
382
  throw error;
378
383
  }
379
384
  lastError = error;
380
385
  }
381
386
 
382
387
  // Compute the delay, preferring Retry-After when available.
383
- const retryAfterMs = lastResponse ? parseRetryAfterMs(lastResponse) : undefined;
384
- const backoffMs = computeBackoffDelay(attempt, baseDelayMs, maxDelayMs);
385
- const delayMs = retryAfterMs === undefined ? backoffMs : Math.max(retryAfterMs, backoffMs);
386
-
387
- await sleep(delayMs);
388
+ await sleep(getRetryDelayMs(attempt, baseDelayMs, maxDelayMs, lastResponse));
388
389
  }
389
390
 
390
391
  // Should not reach here, but satisfy the compiler.
package/src/index.ts CHANGED
@@ -7,6 +7,7 @@ export * from './json-rpc.js';
7
7
  export * from './json-rpc-socket.js';
8
8
  export * from './provider-directory-types.js';
9
9
  export * from './rate-limit-error.js';
10
+ export * from './readable-stream.js';
10
11
  export * from './registration-types.js';
11
12
  export * from './rpc-client.js';
12
13
  export * from './server-info-types.js';
@@ -0,0 +1,59 @@
1
+ type ReadableStreamReader = {
2
+ cancel?: (reason?: unknown) => Promise<void>;
3
+ read(): Promise<{ done: boolean; value?: Uint8Array }>;
4
+ releaseLock?: () => void;
5
+ };
6
+
7
+ /**
8
+ * Wraps runtime-provided streams in a standard `ReadableStream` so downstream
9
+ * consumers see consistent reader behavior across Bun and browsers.
10
+ */
11
+ export function normalizeReadableStream(readableStream: ReadableStream<Uint8Array>): ReadableStream<Uint8Array> {
12
+ const reader = readableStream.getReader() as ReadableStreamReader;
13
+ let readerReleased = false;
14
+
15
+ const releaseReader = (): void => {
16
+ if (readerReleased) {
17
+ return;
18
+ }
19
+
20
+ reader.releaseLock?.();
21
+ readerReleased = true;
22
+ };
23
+
24
+ const cancelReader = async (reason?: unknown): Promise<void> => {
25
+ try {
26
+ await reader.cancel?.(reason);
27
+ } finally {
28
+ releaseReader();
29
+ }
30
+ };
31
+
32
+ return new ReadableStream<Uint8Array>({
33
+ async pull(controller): Promise<void> {
34
+ try {
35
+ const { done, value } = await reader.read();
36
+ if (done) {
37
+ releaseReader();
38
+ controller.close();
39
+ return;
40
+ }
41
+
42
+ controller.enqueue(value!);
43
+ } catch (error: unknown) {
44
+ try {
45
+ await reader.cancel?.(error);
46
+ } catch {
47
+ // Preserve the original read error.
48
+ } finally {
49
+ releaseReader();
50
+ }
51
+ throw error;
52
+ }
53
+ },
54
+
55
+ async cancel(reason): Promise<void> {
56
+ await cancelReader(reason);
57
+ },
58
+ });
59
+ }
@@ -1,4 +1,4 @@
1
- import type { DependencyRef, ReplicationApplyResult } from '@enbox/dwn-sdk-js';
1
+ import type { DependencyRef, ProgressToken, ReplicationApplyResult } from '@enbox/dwn-sdk-js';
2
2
 
3
3
  import { DwnRpcError } from './dwn-rpc-error.js';
4
4
  import { JsonRpcErrorCodes } from './json-rpc.js';
@@ -12,6 +12,7 @@ export function parseReplicationApplyResult(value: unknown): ReplicationApplyRes
12
12
 
13
13
  switch (value.kind) {
14
14
  case 'Applied':
15
+ return parseAppliedResult(value);
15
16
  case 'Duplicate':
16
17
  case 'Superseded':
17
18
  return { kind: value.kind };
@@ -35,6 +36,26 @@ export function parseReplicationApplyResult(value: unknown): ReplicationApplyRes
35
36
  }
36
37
  }
37
38
 
39
+ function parseAppliedResult(value: Record<string, unknown>): Extract<ReplicationApplyResult, { kind: 'Applied' }> {
40
+ const result: Extract<ReplicationApplyResult, { kind: 'Applied' }> = { kind: 'Applied' };
41
+
42
+ if (value.ancestryOnly !== undefined) {
43
+ if (value.ancestryOnly !== true) {
44
+ throw malformedReplicationApplyResult('Applied result ancestryOnly must be true when present');
45
+ }
46
+ result.ancestryOnly = true;
47
+ }
48
+
49
+ if (value.position !== undefined) {
50
+ if (!isProgressToken(value.position)) {
51
+ throw malformedReplicationApplyResult('Applied result position must be a valid ProgressToken when present');
52
+ }
53
+ result.position = value.position;
54
+ }
55
+
56
+ return result;
57
+ }
58
+
38
59
  function malformedReplicationApplyResult(detail: string): DwnRpcError {
39
60
  return new DwnRpcError(
40
61
  JsonRpcErrorCodes.InternalError,
@@ -83,6 +104,17 @@ function isObject(value: unknown): value is Record<string, unknown> {
83
104
  return typeof value === 'object' && value !== null;
84
105
  }
85
106
 
107
+ function isProgressToken(value: unknown): value is ProgressToken {
108
+ if (!isObject(value)) {
109
+ return false;
110
+ }
111
+
112
+ return typeof value.streamId === 'string' && value.streamId !== '' &&
113
+ typeof value.epoch === 'string' && value.epoch !== '' &&
114
+ typeof value.position === 'string' && value.position !== '' &&
115
+ (value.messageCid === undefined || (typeof value.messageCid === 'string' && value.messageCid !== ''));
116
+ }
117
+
86
118
  function isOptionalString(value: unknown): value is string | undefined {
87
119
  return value === undefined || typeof value === 'string';
88
120
  }
@@ -61,6 +61,14 @@ interface SocketConnection {
61
61
  url: string;
62
62
  }
63
63
 
64
+ function connectionCacheKey(url: URL): string {
65
+ return stripTrailingSlash(url.toString());
66
+ }
67
+
68
+ function stripTrailingSlash(url: string): string {
69
+ return url.endsWith('/') ? url.slice(0, -1) : url;
70
+ }
71
+
64
72
  function shouldReplaceLastCursor(current: ProgressToken | undefined, candidate: ProgressToken): boolean {
65
73
  if (current === undefined) {
66
74
  return true;
@@ -75,7 +83,7 @@ function shouldReplaceLastCursor(current: ProgressToken | undefined, candidate:
75
83
 
76
84
  export class WebSocketDwnRpcClient implements DwnRpc {
77
85
  public get transportProtocols(): string[] { return ['ws:', 'wss:']; }
78
- // a map of dwn host to WebSocket connection
86
+ // a map of normalized DWN WebSocket endpoint URLs to WebSocket connections
79
87
  private static readonly connections = new Map<string, SocketConnection>();
80
88
  private static readonly pendingConnections = new Map<string, Promise<SocketConnection>>();
81
89
 
@@ -130,25 +138,26 @@ export class WebSocketDwnRpcClient implements DwnRpc {
130
138
  throw new Error(`Invalid websocket protocol ${url.protocol}`);
131
139
  }
132
140
 
133
- const existing = WebSocketDwnRpcClient.connections.get(url.host);
141
+ const key = connectionCacheKey(url);
142
+ const existing = WebSocketDwnRpcClient.connections.get(key);
134
143
  if (existing !== undefined) {
135
144
  return existing;
136
145
  }
137
146
 
138
- let pending = WebSocketDwnRpcClient.pendingConnections.get(url.host);
147
+ let pending = WebSocketDwnRpcClient.pendingConnections.get(key);
139
148
  if (pending === undefined) {
140
149
  pending = WebSocketDwnRpcClient.createConnection(url)
141
150
  .then((connection) => {
142
- WebSocketDwnRpcClient.connections.set(url.host, connection);
151
+ WebSocketDwnRpcClient.connections.set(key, connection);
143
152
  return connection;
144
153
  })
145
154
  .catch((error: unknown) => {
146
- throw new Error(`Error connecting to ${url.host}: ${(error as Error).message}`);
155
+ throw new Error(`Error connecting to ${key}: ${(error as Error).message}`);
147
156
  })
148
157
  .finally(() => {
149
- WebSocketDwnRpcClient.pendingConnections.delete(url.host);
158
+ WebSocketDwnRpcClient.pendingConnections.delete(key);
150
159
  });
151
- WebSocketDwnRpcClient.pendingConnections.set(url.host, pending);
160
+ WebSocketDwnRpcClient.pendingConnections.set(key, pending);
152
161
  }
153
162
 
154
163
  return pending;
@@ -158,13 +167,13 @@ export class WebSocketDwnRpcClient implements DwnRpc {
158
167
  * Creates a new `SocketConnection` with lifecycle wiring for reconnection.
159
168
  */
160
169
  private static async createConnection(url: URL): Promise<SocketConnection> {
161
- const host = url.host;
170
+ const key = connectionCacheKey(url);
162
171
  const subscriptions = new Map<string, TrackedSubscription>();
163
172
 
164
173
  const socket = await JsonRpcSocket.connect(url.toString(), {
165
174
  onclose: (): void => {
166
175
  // Remove the stale connection from the map so new requests create a fresh one.
167
- WebSocketDwnRpcClient.connections.delete(host);
176
+ WebSocketDwnRpcClient.connections.delete(key);
168
177
 
169
178
  // Notify all subscription handlers of disconnection.
170
179
  for (const tracked of subscriptions.values()) {
@@ -181,7 +190,7 @@ export class WebSocketDwnRpcClient implements DwnRpc {
181
190
  onreconnected: (): void => {
182
191
  // Re-register this connection in the map (it was deleted on close).
183
192
  const conn = { socket, subscriptions, url: url.toString() };
184
- WebSocketDwnRpcClient.connections.set(host, conn);
193
+ WebSocketDwnRpcClient.connections.set(key, conn);
185
194
 
186
195
  // Resubscribe all tracked subscriptions with their last known cursor.
187
196
  WebSocketDwnRpcClient.resubscribeAll(conn);