@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.
- package/dist/esm/http-dwn-rpc-client.js +57 -60
- package/dist/esm/http-dwn-rpc-client.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/readable-stream.js +68 -0
- package/dist/esm/readable-stream.js.map +1 -0
- package/dist/esm/replication-apply-result.js +26 -0
- package/dist/esm/replication-apply-result.js.map +1 -1
- package/dist/esm/web-socket-clients.js +17 -10
- package/dist/esm/web-socket-clients.js.map +1 -1
- package/dist/types/http-dwn-rpc-client.d.ts +0 -2
- package/dist/types/http-dwn-rpc-client.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/readable-stream.d.ts +6 -0
- package/dist/types/readable-stream.d.ts.map +1 -0
- package/dist/types/replication-apply-result.d.ts.map +1 -1
- package/dist/types/web-socket-clients.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/http-dwn-rpc-client.ts +72 -71
- package/src/index.ts +1 -0
- package/src/readable-stream.ts +59 -0
- package/src/replication-apply-result.ts +33 -1
- package/src/web-socket-clients.ts +19 -10
|
@@ -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
|
-
|
|
115
|
-
|
|
116
|
-
|
|
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, {
|
|
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
|
|
179
|
-
|
|
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
|
-
|
|
203
|
-
|
|
204
|
-
|
|
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 <=
|
|
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
|
|
301
|
-
|
|
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 (
|
|
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
|
-
|
|
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":";;;;;;;;;AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEnF,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,oEAAoE;AACpE,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,0DAA0D;AAC1D,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC,6CAA6C;AAC7C,MAAM,oBAAoB,GAAG,KAAM,CAAC;AAEpC,8EAA8E;AAC9E,MAAM,0BAA0B,GAAG,KAAM,CAAC;AAE1C,4EAA4E;AAC5E,MAAM,yCAAyC,GAAG,MAAO,CAAC;AAE1D,uDAAuD;AACvD,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAcvE;;;GAGG;AACH,SAAS,WAAW,CAAC,KAAe,EAAE,QAAmB;IACvD,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;QAC/B,2FAA2F;QAC3F,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,OAAe,EAAE,WAAmB,EAAE,UAAkB;IACnF,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;IAClF,kEAAkE;IAClE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;IACnD,OAAO,SAAS,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC;AACxF,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,QAAkB;IAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACvD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,gCAAgC;IAChC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QAC3C,OAAO,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,oBAAoB;IACpB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5C,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,OAAO,gBAAgB;IAI3B,YAAY,eAAoC,EAAE,YAA+B;;QAC/E,IAAI,CAAC,eAAe,GAAG,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,IAAI,wBAAwB,EAAE,CAAC;QACzE,IAAI,CAAC,aAAa,GAAG;YACnB,UAAU,EAAI,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,UAAU,mCAAI,mBAAmB;YAC7D,WAAW,EAAG,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,WAAW,mCAAI,qBAAqB;YAChE,UAAU,EAAI,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,UAAU,mCAAI,oBAAoB;SAC/D,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,MAAM,CAAC,YAAY;QACjB,OAAO,OAAQ,UAAsC,CAAC,GAAG,KAAK,WAAW,CAAC;IAC5E,CAAC;IAED,IAAI,kBAAkB,KAAe,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE5D,cAAc,CAAC,OAAsB;;;YACzC,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC;YAC3C,MAAM,cAAc,GAAG,oBAAoB,CAAC,SAAS,EAAE,oBAAoB,EAAE;gBAC3E,MAAM,EAAI,OAAO,CAAC,SAAS;gBAC3B,OAAO,EAAG,OAAO,CAAC,OAAO;aAC1B,CAAC,CAAC;YAEH,MAAM,cAAc,GAA2B;gBAC7C,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;aAC9C,CAAC;YAEF,MAAM,SAAS,mBACb,MAAM,EAAI,MAAM,EAChB,OAAO,EAAG,cAAc,IAKrB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACtD,CAAC;YAEF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,cAAc,CAAC,cAAc,CAAC,GAAG,0BAA0B,CAAC;gBAC5D,IAAI,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;gBAE/B,IAAI,WAAW,YAAY,cAAc,EAAE,CAAC;oBAC1C,oFAAoF;oBACpF,iFAAiF;oBACjF,uFAAuF;oBACvF,wFAAwF;oBACxF,IAAI,gBAAgB,CAAC,YAAY,EAAE,EAAE,CAAC;wBACpC,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,WAAyC,CAAC,CAAC;wBACtF,WAAW,GAAG,IAAI,IAAI,CAAC,CAAC,SAAqB,CAAC,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC;oBACxF,CAAC;yBAAM,CAAC;wBACN,6EAA6E;wBAC7E,mEAAmE;wBAClE,SAAqC,CAAC,MAAM,GAAG,MAAM,CAAC;oBACzD,CAAC;gBACH,CAAC;gBAED,SAAS,CAAC,IAAI,GAAG,WAAW,CAAC;YAC/B,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;YAE3G,qEAAqE;YACrE,sEAAsE;YACtE,uDAAuD;YACvD,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACxB,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,mCAAI,GAAG,EAAE,EAAE,CAAC,CAAC;gBACxE,MAAM,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;YACvC,CAAC;YAED,IAAI,cAA+B,CAAC;YAEpC,4EAA4E;YAC5E,4EAA4E;YAC5E,wCAAwC;YACxC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAEvD,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,eAAe,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAE,CAAoB,CAAC;gBAExF,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;oBAC5B,MAAM,IAAI,KAAK,CAAC,+CAA+C,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBACnF,CAAC;gBAED,cAAc,GAAG,eAAe,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;gBACvC,MAAM,eAAe,GAAG,SAAS,CAAC,YAAY,CAAoB,CAAC;gBAEnE,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;oBAC5B,MAAM,IAAI,KAAK,CAAC,+CAA+C,OAAO,CAAC,MAAM,aAAa,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC3G,CAAC;gBAED,cAAc,GAAG,eAAe,CAAC;YACnC,CAAC;YAED,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;gBACzB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC;gBAC/C,IAAI,IAAI,KAAK,iBAAiB,CAAC,eAAe,EAAE,CAAC;oBAC/C,MAAM,UAAU,GAAG,MAAA,MAAA,cAAc,CAAC,KAAK,CAAC,IAAI,0CAAE,aAAa,mCAAI,CAAC,CAAC;oBACjE,MAAM,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;gBACvC,CAAC;gBACD,MAAM,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClE,CAAC;YAED,+DAA+D;YAC/D,qEAAqE;YACrE,oEAAoE;YACpE,qEAAqE;YACrE,kEAAkE;YAClE,gFAAgF;YAChF,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC;YACxC,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC3D,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBACnD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBACjB,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC;gBACjC,CAAC;qBAAM,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBACvB,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;gBAChC,CAAC;YACH,CAAC;YAED,OAAO,KAAuB,CAAC;QACjC,CAAC;KAAA;IAEK,sBAAsB,CAAC,OAAmC;;;YAC9D,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC;YAC3C,MAAM,cAAc,GAAG,oBAAoB,CAAC,SAAS,EAAE,4BAA4B,EAAE;gBACnF,MAAM,EAAI,OAAO,CAAC,SAAS;gBAC3B,OAAO,EAAG,OAAO,CAAC,OAAO;aAC1B,CAAC,CAAC;YAEH,MAAM,cAAc,GAA2B;gBAC7C,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;aAC9C,CAAC;YAEF,MAAM,SAAS,mBACb,MAAM,EAAI,MAAM,EAChB,OAAO,EAAG,cAAc,IACrB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACtD,CAAC;YAEF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,cAAc,CAAC,cAAc,CAAC,GAAG,0BAA0B,CAAC;gBAC5D,IAAI,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;gBAE/B,IAAI,WAAW,YAAY,cAAc,EAAE,CAAC;oBAC1C,IAAI,gBAAgB,CAAC,YAAY,EAAE,EAAE,CAAC;wBACpC,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,WAAyC,CAAC,CAAC;wBACtF,WAAW,GAAG,IAAI,IAAI,CAAC,CAAC,SAAqB,CAAC,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC;oBACxF,CAAC;yBAAM,CAAC;wBACL,SAAqC,CAAC,MAAM,GAAG,MAAM,CAAC;oBACzD,CAAC;gBACH,CAAC;gBAED,SAAS,CAAC,IAAI,GAAG,WAAW,CAAC;YAC/B,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE;gBAChE,gBAAgB,EAAE,MAAA,OAAO,CAAC,SAAS,mCAAI,gCAAgC,CAAC,OAAO,CAAC,OAAO,CAAC;aACzF,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACxB,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,mCAAI,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC/E,MAAM,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;YACvC,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YACvC,MAAM,eAAe,GAAG,SAAS,CAAC,YAAY,CAAoB,CAAC;YACnE,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,+CAA+C,OAAO,CAAC,MAAM,aAAa,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3G,CAAC;YAED,IAAI,eAAe,CAAC,KAAK,EAAE,CAAC;gBAC1B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC;gBAChD,IAAI,IAAI,KAAK,iBAAiB,CAAC,eAAe,EAAE,CAAC;oBAC/C,MAAM,UAAU,GAAG,MAAA,MAAA,eAAe,CAAC,KAAK,CAAC,IAAI,0CAAE,aAAa,mCAAI,CAAC,CAAC;oBAClE,MAAM,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;gBACvC,CAAC;gBACD,MAAM,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACnE,CAAC;YAED,OAAO,2BAA2B,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpE,CAAC;KAAA;IAEK,aAAa,CAAC,MAAc;;;YAChC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC1D,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,UAAU,CAAC;YACpB,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;YAE5B,yCAAyC;YACzC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC;YAE9E,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC3D,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBAC5B,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,mCAAI,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC5E,MAAM,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;gBACvC,CAAC;gBACD,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;oBAChB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAgB,CAAC;oBAEpD,MAAM,UAAU,GAAe;wBAC7B,WAAW,EAAgB,OAAO,CAAC,WAAW;wBAC9C,WAAW,EAAgB,OAAO,CAAC,WAAW;wBAC9C,YAAY,EAAe,OAAO,CAAC,YAAY;wBAC/C,wBAAwB,EAAG,OAAO,CAAC,wBAAwB;wBAC3D,MAAM,EAAqB,OAAO,CAAC,MAAM;wBACzC,UAAU,EAAiB,OAAO,CAAC,UAAU;wBAC7C,GAAG,EAAwB,OAAO,CAAC,GAAG;wBACtC,OAAO,EAAoB,OAAO,CAAC,OAAO;wBAC1C,gBAAgB,EAAW,OAAO,CAAC,gBAAgB;qBACpD,CAAC;oBACF,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;oBAE7C,OAAO,UAAU,CAAC;gBACpB,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,SAAS,QAAQ,CAAC,MAAM,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,oDAAoD,GAAG,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1G,CAAC;QACH,CAAC;KAAA;IAED,8EAA8E;IAC9E,cAAc;IACd,8EAA8E;IAE9E;;;;OAIG;IACW,cAAc;6DAAC,GAAW,EAAE,IAAkB,EAAE,UAAyC,EAAE;;YACvG,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;YACnE,MAAM,gBAAgB,GAAG,MAAA,OAAO,CAAC,gBAAgB,mCAAI,0BAA0B,CAAC;YAEhF,IAAI,SAAkB,CAAC;YACvB,IAAI,YAAkC,CAAC;YAEvC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;gBACvD,IAAI,CAAC;oBACH,kEAAkE;oBAClE,uEAAuE;oBACvE,kEAAkE;oBAClE,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;oBAC5D,MAAM,WAAW,mCACZ,IAAI,KACP,MAAM,EAAE,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM;4BAClB,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;4BAC/C,CAAC,CAAC,aAAa,GAClB,CAAC;oBAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;oBAE/C,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;wBAC3E,OAAO,QAAQ,CAAC;oBAClB,CAAC;oBAED,6CAA6C;oBAC7C,YAAY,GAAG,QAAQ,CAAC;gBAC1B,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACxB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;wBAClD,MAAM,KAAK,CAAC;oBACd,CAAC;oBACD,SAAS,GAAG,KAAK,CAAC;gBACpB,CAAC;gBAED,4DAA4D;gBAC5D,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAChF,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;gBACxE,MAAM,OAAO,GAAG,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;gBAE3F,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;YAED,mDAAmD;YACnD,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,YAAY,CAAC;YACtB,CAAC;YACD,MAAM,SAAS,CAAC;QAClB,CAAC;KAAA;CACF;AAED,SAAS,gCAAgC,CAAC,OAA8C;;IACtF,MAAM,QAAQ,GAAG,MAAC,OAAmD,CAAC,UAAU,0CAAE,QAAQ,CAAC;IAC3F,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,GAAG,OAAS;QACzD,CAAC,CAAC,yCAAyC;QAC3C,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC"}
|
|
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';
|
package/dist/esm/index.js.map
CHANGED
|
@@ -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":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAC,CAAC;AAExF,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACvD,MAAM,+BAA+B,CAAC,6CAA6C,CAAC,CAAC;IACvF,CAAC;IAED,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,SAAS,CAAC;
|
|
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
|
|
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(
|
|
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(
|
|
94
|
+
WebSocketDwnRpcClient.connections.set(key, connection);
|
|
88
95
|
return connection;
|
|
89
96
|
})
|
|
90
97
|
.catch((error) => {
|
|
91
|
-
throw new Error(`Error connecting to ${
|
|
98
|
+
throw new Error(`Error connecting to ${key}: ${error.message}`);
|
|
92
99
|
})
|
|
93
100
|
.finally(() => {
|
|
94
|
-
WebSocketDwnRpcClient.pendingConnections.delete(
|
|
101
|
+
WebSocketDwnRpcClient.pendingConnections.delete(key);
|
|
95
102
|
});
|
|
96
|
-
WebSocketDwnRpcClient.pendingConnections.set(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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;
|
|
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"}
|
package/dist/types/index.d.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';
|
|
@@ -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,
|
|
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;
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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, {
|
|
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
|
|
226
|
-
|
|
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
|
-
|
|
255
|
-
|
|
256
|
-
|
|
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(
|
|
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 <=
|
|
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
|
|
360
|
-
|
|
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 (
|
|
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
|
-
|
|
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
|
|
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
|
|
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(
|
|
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(
|
|
151
|
+
WebSocketDwnRpcClient.connections.set(key, connection);
|
|
143
152
|
return connection;
|
|
144
153
|
})
|
|
145
154
|
.catch((error: unknown) => {
|
|
146
|
-
throw new Error(`Error connecting to ${
|
|
155
|
+
throw new Error(`Error connecting to ${key}: ${(error as Error).message}`);
|
|
147
156
|
})
|
|
148
157
|
.finally(() => {
|
|
149
|
-
WebSocketDwnRpcClient.pendingConnections.delete(
|
|
158
|
+
WebSocketDwnRpcClient.pendingConnections.delete(key);
|
|
150
159
|
});
|
|
151
|
-
WebSocketDwnRpcClient.pendingConnections.set(
|
|
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
|
|
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(
|
|
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(
|
|
193
|
+
WebSocketDwnRpcClient.connections.set(key, conn);
|
|
185
194
|
|
|
186
195
|
// Resubscribe all tracked subscriptions with their last known cursor.
|
|
187
196
|
WebSocketDwnRpcClient.resubscribeAll(conn);
|