dcl-catalyst-client 22.0.0 → 22.0.1-38482794215.commit-a4a4e71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -0
- package/dist/client/CatalystClient.d.ts.map +1 -1
- package/dist/client/CatalystClient.js +2 -1
- package/dist/client/CatalystClient.js.map +1 -1
- package/dist/client/ContentClient.d.ts +10 -2
- package/dist/client/ContentClient.d.ts.map +1 -1
- package/dist/client/ContentClient.js +500 -10
- package/dist/client/ContentClient.js.map +1 -1
- package/dist/client/index.d.ts +1 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +6 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/types.d.ts +75 -0
- package/dist/client/types.d.ts.map +1 -1
- package/dist/client/utils/batching.d.ts +20 -0
- package/dist/client/utils/batching.d.ts.map +1 -0
- package/dist/client/utils/batching.js +39 -0
- package/dist/client/utils/batching.js.map +1 -0
- package/dist/client/utils/errors.d.ts +43 -0
- package/dist/client/utils/errors.d.ts.map +1 -0
- package/dist/client/utils/errors.js +66 -0
- package/dist/client/utils/errors.js.map +1 -0
- package/dist/client/utils/upload-progress.d.ts +57 -0
- package/dist/client/utils/upload-progress.d.ts.map +1 -0
- package/dist/client/utils/upload-progress.js +246 -0
- package/dist/client/utils/upload-progress.js.map +1 -0
- package/dist/contracts-snapshots/data.d.ts.map +1 -1
- package/dist/contracts-snapshots/data.js +7 -1
- package/dist/contracts-snapshots/data.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -3,7 +3,94 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.createContentClient = exports.downloadContent = void 0;
|
|
4
4
|
const hashing_1 = require("@dcl/hashing");
|
|
5
5
|
const Helper_1 = require("./utils/Helper");
|
|
6
|
+
const batching_1 = require("./utils/batching");
|
|
7
|
+
const errors_1 = require("./utils/errors");
|
|
6
8
|
const retry_1 = require("./utils/retry");
|
|
9
|
+
const upload_progress_1 = require("./utils/upload-progress");
|
|
10
|
+
// Resolves after `ms`, or early once `signal` aborts.
|
|
11
|
+
function delay(ms, signal) {
|
|
12
|
+
return new Promise((resolve) => {
|
|
13
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted)
|
|
14
|
+
return resolve();
|
|
15
|
+
const done = () => {
|
|
16
|
+
clearTimeout(timer);
|
|
17
|
+
signal === null || signal === void 0 ? void 0 : signal.removeEventListener('abort', done);
|
|
18
|
+
resolve();
|
|
19
|
+
};
|
|
20
|
+
const timer = setTimeout(done, ms);
|
|
21
|
+
signal === null || signal === void 0 ? void 0 : signal.addEventListener('abort', done, { once: true });
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
// The default @dcl/fetch-component honors `abortController` but overwrites `signal`, so requests get
|
|
25
|
+
// a per-request controller linked to `signal`. Call `dispose` once the request settles.
|
|
26
|
+
function linkAbortController(signal) {
|
|
27
|
+
const abortController = new AbortController();
|
|
28
|
+
const onAbort = () => abortController.abort();
|
|
29
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted)
|
|
30
|
+
abortController.abort();
|
|
31
|
+
else
|
|
32
|
+
signal === null || signal === void 0 ? void 0 : signal.addEventListener('abort', onAbort, { once: true });
|
|
33
|
+
return { abortController, dispose: () => signal === null || signal === void 0 ? void 0 : signal.removeEventListener('abort', onAbort) };
|
|
34
|
+
}
|
|
35
|
+
function assertOption(name, value, min) {
|
|
36
|
+
if (!Number.isInteger(value) || value < min) {
|
|
37
|
+
throw new RangeError(`options.${name} must be an integer >= ${min}, got ${value}.`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function abortedByCaller() {
|
|
41
|
+
return new Error('The partial deployment was aborted by the caller.');
|
|
42
|
+
}
|
|
43
|
+
// Ceiling for the exponential resume backoff, so a caller-tuned maxResumeAttempts can't grow
|
|
44
|
+
// 2^attempt into effectively-hung multi-hour sleeps.
|
|
45
|
+
const MAX_RESUME_BACKOFF_MS = 60000;
|
|
46
|
+
// Retryable per ADR-325 besides 5xx: processing deadline, replacement conflict, throttling.
|
|
47
|
+
const RETRYABLE_STATUSES = new Set([408, 409, 429]);
|
|
48
|
+
// Combines several abort signals into one that aborts as soon as any of them does. Used so a request
|
|
49
|
+
// honors both the caller's cancellation signal and deployPartial's internal first-200-wins controller.
|
|
50
|
+
// (Hand-rolled rather than AbortSignal.any, which is only available on Node >= 20.3.)
|
|
51
|
+
//
|
|
52
|
+
// `dispose` detaches the listeners from the source signals. Call it when the combined signal is no
|
|
53
|
+
// longer needed: sources like a caller-provided signal can outlive many sessions, and undisposed
|
|
54
|
+
// listeners would accumulate on them (Node warns past ~10 listeners on one signal).
|
|
55
|
+
function combineSignals(signals) {
|
|
56
|
+
const present = signals.filter((signal) => !!signal);
|
|
57
|
+
if (present.length <= 1) {
|
|
58
|
+
return { signal: present[0], dispose: () => { } };
|
|
59
|
+
}
|
|
60
|
+
const controller = new AbortController();
|
|
61
|
+
const abort = () => controller.abort();
|
|
62
|
+
for (const signal of present) {
|
|
63
|
+
if (signal.aborted) {
|
|
64
|
+
controller.abort();
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
signal.addEventListener('abort', abort, { once: true });
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
signal: controller.signal,
|
|
71
|
+
dispose: () => {
|
|
72
|
+
for (const signal of present) {
|
|
73
|
+
signal.removeEventListener('abort', abort);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
// Parse an HTTP `Retry-After` value (delta-seconds, or an HTTP date) into milliseconds. Returns
|
|
79
|
+
// undefined when absent or unparseable, so the caller falls back to its exponential backoff.
|
|
80
|
+
function parseRetryAfterMs(headerValue) {
|
|
81
|
+
if (!headerValue) {
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
const seconds = Number(headerValue);
|
|
85
|
+
if (Number.isFinite(seconds)) {
|
|
86
|
+
return Math.max(0, seconds * 1000);
|
|
87
|
+
}
|
|
88
|
+
const dateMs = Date.parse(headerValue);
|
|
89
|
+
if (!Number.isNaN(dateMs)) {
|
|
90
|
+
return Math.max(0, dateMs - Date.now());
|
|
91
|
+
}
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
7
94
|
async function downloadContent(fetcher, baseUrl, contentHash, options) {
|
|
8
95
|
const { attempts = 3, retryDelay = 500 } = options ? options : {};
|
|
9
96
|
const timeout = (options === null || options === void 0 ? void 0 : options.timeout) ? { timeout: options.timeout } : {};
|
|
@@ -24,8 +111,21 @@ async function downloadContent(fetcher, baseUrl, contentHash, options) {
|
|
|
24
111
|
exports.downloadContent = downloadContent;
|
|
25
112
|
function createContentClient(options) {
|
|
26
113
|
const { fetcher, logger } = options;
|
|
114
|
+
// A throwing progress callback must not fail a deployment or, from the throttle timer, crash the process.
|
|
115
|
+
function guardProgress(onUploadProgress) {
|
|
116
|
+
return (progress) => {
|
|
117
|
+
try {
|
|
118
|
+
onUploadProgress(progress);
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
logger === null || logger === void 0 ? void 0 : logger.warn('The onUploadProgress callback threw:', error);
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
}
|
|
27
125
|
const contentUrl = (0, Helper_1.sanitizeUrl)(options.url);
|
|
28
126
|
const defaultParallelConfig = options === null || options === void 0 ? void 0 : options.parallelConfig;
|
|
127
|
+
// Off once the fetcher rejects a streamed body, so later uploads send the plain form.
|
|
128
|
+
let streamingUploads = !!options.streamingUploads && (0, upload_progress_1.supportsStreamingUpload)();
|
|
29
129
|
async function fetchFromMultipleServersRace(urls, path, requestOptions) {
|
|
30
130
|
const controller = new AbortController();
|
|
31
131
|
const signal = controller.signal;
|
|
@@ -96,28 +196,417 @@ function createContentClient(options) {
|
|
|
96
196
|
emptyResults
|
|
97
197
|
};
|
|
98
198
|
}
|
|
99
|
-
|
|
199
|
+
// Builds the multipart body shared by full and partial deployments. Appends the fixed fields
|
|
200
|
+
// (entityId, the `partial` flag when set, and the auth chain) BEFORE any file part, so streaming
|
|
201
|
+
// multipart parsers see them early, then appends one file part per hash in `fileHashes`.
|
|
202
|
+
function buildDeploymentForm(deployData, fileHashes, partial) {
|
|
100
203
|
// Use the web-standard FormData/Blob (global in browsers and Node >= 18). When this form is
|
|
101
204
|
// used as a request body, native fetch (and node-fetch v3) set the multipart Content-Type with
|
|
102
205
|
// the boundary automatically, so the deployment works without a node-fetch-specific fetcher.
|
|
103
206
|
const form = new FormData();
|
|
104
207
|
form.append('entityId', deployData.entityId);
|
|
208
|
+
if (partial) {
|
|
209
|
+
form.append('partial', 'true');
|
|
210
|
+
}
|
|
105
211
|
(0, Helper_1.addModelToFormData)(deployData.authChain, form, 'authChain');
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
if (
|
|
212
|
+
for (const fileHash of fileHashes) {
|
|
213
|
+
const file = deployData.files.get(fileHash);
|
|
214
|
+
if (file) {
|
|
109
215
|
form.append(fileHash, new Blob([file]), fileHash);
|
|
110
216
|
}
|
|
111
217
|
}
|
|
112
218
|
return form;
|
|
113
219
|
}
|
|
220
|
+
async function hashesToDeploy(deployData, options) {
|
|
221
|
+
const alreadyUploadedHashes = await hashesAlreadyOnServer(Array.from(deployData.files.keys()), options);
|
|
222
|
+
return Array.from(deployData.files.keys()).filter((fileHash) => !alreadyUploadedHashes.has(fileHash) || fileHash === deployData.entityId);
|
|
223
|
+
}
|
|
224
|
+
async function buildEntityFormDataForDeployment(deployData, options) {
|
|
225
|
+
return buildDeploymentForm(deployData, await hashesToDeploy(deployData, options), false);
|
|
226
|
+
}
|
|
227
|
+
function fileBytesOf(deployData, hashes) {
|
|
228
|
+
var _a, _b;
|
|
229
|
+
let total = 0;
|
|
230
|
+
for (const hash of hashes)
|
|
231
|
+
total += (_b = (_a = deployData.files.get(hash)) === null || _a === void 0 ? void 0 : _a.byteLength) !== null && _b !== void 0 ? _b : 0;
|
|
232
|
+
return total;
|
|
233
|
+
}
|
|
234
|
+
// POSTs a deployment form. With an upload tracker, the body is streamed and counted where possible.
|
|
235
|
+
async function postDeploymentForm(url, form, requestOptions, upload) {
|
|
236
|
+
const plainOptions = (0, Helper_1.mergeRequestOptions)(requestOptions, { body: form, method: 'POST' });
|
|
237
|
+
if (!upload) {
|
|
238
|
+
return fetcher.fetch(url, plainOptions);
|
|
239
|
+
}
|
|
240
|
+
const progress = upload.tracker.request(upload.fileBytes, streamingUploads);
|
|
241
|
+
try {
|
|
242
|
+
if (streamingUploads) {
|
|
243
|
+
const counting = await (0, upload_progress_1.createCountingBody)(url, form, progress.streamed, upload.signal);
|
|
244
|
+
try {
|
|
245
|
+
return await fetcher.fetch(url, {
|
|
246
|
+
...requestOptions,
|
|
247
|
+
headers: (0, upload_progress_1.withBodyHeaders)(requestOptions.headers, counting.headers),
|
|
248
|
+
body: counting.body,
|
|
249
|
+
method: 'POST',
|
|
250
|
+
duplex: 'half'
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
// A fetcher that drops `duplex` makes Node reject the stream before sending anything.
|
|
255
|
+
if (!(0, upload_progress_1.isDuplexUnsupportedError)(error))
|
|
256
|
+
throw error;
|
|
257
|
+
streamingUploads = false;
|
|
258
|
+
progress.unstreamed();
|
|
259
|
+
}
|
|
260
|
+
finally {
|
|
261
|
+
counting.dispose();
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
const response = await fetcher.fetch(url, plainOptions);
|
|
265
|
+
progress.delivered();
|
|
266
|
+
return response;
|
|
267
|
+
}
|
|
268
|
+
finally {
|
|
269
|
+
progress.end();
|
|
270
|
+
}
|
|
271
|
+
}
|
|
114
272
|
async function deploy(deployData, options) {
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
|
|
273
|
+
const { onUploadProgress, ...requestOptions } = options !== null && options !== void 0 ? options : {};
|
|
274
|
+
if (!onUploadProgress) {
|
|
275
|
+
const form = buildDeploymentForm(deployData, await hashesToDeploy(deployData, requestOptions), false);
|
|
276
|
+
return postDeploymentForm(`${contentUrl}/entities`, form, requestOptions);
|
|
277
|
+
}
|
|
278
|
+
const tracker = (0, upload_progress_1.createUploadProgressTracker)(guardProgress(onUploadProgress));
|
|
279
|
+
return (0, upload_progress_1.trackUpload)(tracker, async () => {
|
|
280
|
+
var _a, _b;
|
|
281
|
+
tracker.checking(fileBytesOf(deployData, deployData.files.keys()));
|
|
282
|
+
const fileHashes = await hashesToDeploy(deployData, requestOptions);
|
|
283
|
+
const form = buildDeploymentForm(deployData, fileHashes, false);
|
|
284
|
+
const fileBytes = fileBytesOf(deployData, fileHashes);
|
|
285
|
+
tracker.plan(fileBytes);
|
|
286
|
+
const signal = (_a = requestOptions.signal) !== null && _a !== void 0 ? _a : (_b = requestOptions.abortController) === null || _b === void 0 ? void 0 : _b.signal;
|
|
287
|
+
return postDeploymentForm(`${contentUrl}/entities`, form, requestOptions, { tracker, fileBytes, signal });
|
|
288
|
+
},
|
|
289
|
+
// An error response (e.g. an early 413) resolves too, but must not report the upload as complete.
|
|
290
|
+
(response) => (response === null || response === void 0 ? void 0 : response.ok) !== false);
|
|
291
|
+
}
|
|
292
|
+
async function deployPartial(deployData, options) {
|
|
293
|
+
const tracker = (options === null || options === void 0 ? void 0 : options.onUploadProgress) && (0, upload_progress_1.createUploadProgressTracker)(guardProgress(options.onUploadProgress));
|
|
294
|
+
return (0, upload_progress_1.trackUpload)(tracker, () => uploadPartial(deployData, options, tracker));
|
|
295
|
+
}
|
|
296
|
+
async function uploadPartial(deployData, options, tracker) {
|
|
297
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
298
|
+
const maxBatchSizeBytes = (_a = options === null || options === void 0 ? void 0 : options.maxBatchSizeBytes) !== null && _a !== void 0 ? _a : batching_1.DEFAULT_MAX_BATCH_SIZE_BYTES;
|
|
299
|
+
const concurrency = (_b = options === null || options === void 0 ? void 0 : options.concurrency) !== null && _b !== void 0 ? _b : 2;
|
|
300
|
+
const maxResumeAttempts = (_c = options === null || options === void 0 ? void 0 : options.maxResumeAttempts) !== null && _c !== void 0 ? _c : 3;
|
|
301
|
+
const resumeDelay = (_d = options === null || options === void 0 ? void 0 : options.resumeDelay) !== null && _d !== void 0 ? _d : 1000;
|
|
302
|
+
const onProgress = options === null || options === void 0 ? void 0 : options.onProgress;
|
|
303
|
+
assertOption('maxBatchSizeBytes', maxBatchSizeBytes, 1);
|
|
304
|
+
assertOption('concurrency', concurrency, 1);
|
|
305
|
+
assertOption('maxResumeAttempts', maxResumeAttempts, 0);
|
|
306
|
+
if (!Number.isFinite(resumeDelay) || resumeDelay < 0) {
|
|
307
|
+
throw new RangeError(`options.resumeDelay must be a finite number >= 0, got ${resumeDelay}.`);
|
|
308
|
+
}
|
|
309
|
+
const entityId = deployData.entityId;
|
|
310
|
+
const allContentHashes = Array.from(deployData.files.keys()).filter((hash) => hash !== entityId);
|
|
311
|
+
const sizeOf = (hash) => { var _a, _b; return (_b = (_a = deployData.files.get(hash)) === null || _a === void 0 ? void 0 : _a.byteLength) !== null && _b !== void 0 ? _b : 0; };
|
|
312
|
+
const totalBytes = allContentHashes.reduce((acc, hash) => acc + sizeOf(hash), 0);
|
|
313
|
+
// Request options without the partial-specific keys or the abort signal (combined per round).
|
|
314
|
+
const requestBase = {
|
|
315
|
+
headers: options === null || options === void 0 ? void 0 : options.headers,
|
|
316
|
+
timeout: options === null || options === void 0 ? void 0 : options.timeout,
|
|
317
|
+
attempts: options === null || options === void 0 ? void 0 : options.attempts,
|
|
318
|
+
retryDelay: options === null || options === void 0 ? void 0 : options.retryDelay
|
|
319
|
+
};
|
|
320
|
+
// The caller's cancellation signal, honored on every request of every session.
|
|
321
|
+
const callerSignal = (_e = options === null || options === void 0 ? void 0 : options.signal) !== null && _e !== void 0 ? _e : (_f = options === null || options === void 0 ? void 0 : options.abortController) === null || _f === void 0 ? void 0 : _f.signal;
|
|
322
|
+
// A server that predates partial deployments runs the staging request through the full deploy
|
|
323
|
+
// pipeline and rejects the missing content. Match either server's phrasing: worlds-content-server
|
|
324
|
+
// says "neither present in the storage...", and catalyst (via @dcl/content-validator) says
|
|
325
|
+
// "referenced in the entity but was not uploaded or previously available".
|
|
326
|
+
const notSupportedPattern = /neither present in the storage|was not uploaded or previously available/i;
|
|
327
|
+
const classify4xx = (status, body) => {
|
|
328
|
+
if (notSupportedPattern.test(body)) {
|
|
329
|
+
return new errors_1.PartialDeploymentNotSupportedError(`The server does not support partial deployments (it validated a staging request as a full deployment). ` +
|
|
330
|
+
`Use deploy() for this server. Server response: ${body}`, status, body);
|
|
331
|
+
}
|
|
332
|
+
return new errors_1.PartialDeploymentValidationError(`The partial deployment was rejected: ${body}`, status, body);
|
|
333
|
+
};
|
|
334
|
+
// Upload state shared across rounds. The latest 202 `missing` list is authoritative (ADR-325).
|
|
335
|
+
let entityStaged = false;
|
|
336
|
+
let latestMissing;
|
|
337
|
+
let missingUpdatedThisRound = false;
|
|
338
|
+
let uploadedBytes = 0;
|
|
339
|
+
let completedBatches = 0;
|
|
340
|
+
let totalBatches = 1;
|
|
341
|
+
const bytesOf = (hashes) => fileBytesOf(deployData, hashes);
|
|
342
|
+
const reportProgress = () => {
|
|
343
|
+
try {
|
|
344
|
+
onProgress === null || onProgress === void 0 ? void 0 : onProgress({ uploadedBytes, totalBytes, completedBatches, totalBatches });
|
|
345
|
+
}
|
|
346
|
+
catch (error) {
|
|
347
|
+
// A faulty progress callback must not break the deployment.
|
|
348
|
+
logger === null || logger === void 0 ? void 0 : logger.warn('The partial deployment onProgress callback threw:', error);
|
|
349
|
+
}
|
|
350
|
+
};
|
|
351
|
+
// Sends one request. Throws a terminal DeploymentError for a non-retryable 4xx, and a
|
|
352
|
+
// RetryablePartialDeploymentError for 408, 409, 429 and 5xx; network errors propagate as-is.
|
|
353
|
+
const sendRequest = async (fileHashes, signal) => {
|
|
354
|
+
var _a, _b, _c;
|
|
355
|
+
const form = buildDeploymentForm(deployData, fileHashes, true);
|
|
356
|
+
const { abortController, dispose } = linkAbortController(signal);
|
|
357
|
+
try {
|
|
358
|
+
const requestOptions = (0, Helper_1.mergeRequestOptions)(requestBase, { abortController });
|
|
359
|
+
const upload = tracker && { tracker, fileBytes: bytesOf(fileHashes), signal: abortController.signal };
|
|
360
|
+
// The query flag lets the server tell a batch from a regular deployment before reading the body.
|
|
361
|
+
const response = await postDeploymentForm(`${contentUrl}/entities?partial=true`, form, requestOptions, upload);
|
|
362
|
+
if (response.status === 200) {
|
|
363
|
+
// The server published: an unreadable or aborted body read still means success.
|
|
364
|
+
let result;
|
|
365
|
+
try {
|
|
366
|
+
result = (await response.json());
|
|
367
|
+
}
|
|
368
|
+
catch (_d) {
|
|
369
|
+
result = { creationTimestamp: Date.now() };
|
|
370
|
+
}
|
|
371
|
+
return { kind: 'deployed', result };
|
|
372
|
+
}
|
|
373
|
+
if (response.status === 202) {
|
|
374
|
+
if (fileHashes.includes(entityId)) {
|
|
375
|
+
entityStaged = true;
|
|
376
|
+
}
|
|
377
|
+
let missing;
|
|
378
|
+
try {
|
|
379
|
+
const parsed = (_a = ((await response.json()))) === null || _a === void 0 ? void 0 : _a.missing;
|
|
380
|
+
missing = Array.isArray(parsed)
|
|
381
|
+
? parsed.filter((hash) => typeof hash === 'string')
|
|
382
|
+
: undefined;
|
|
383
|
+
}
|
|
384
|
+
catch (_e) {
|
|
385
|
+
// No diagnosis available; the round falls back to re-sending what it sent.
|
|
386
|
+
}
|
|
387
|
+
if (missing) {
|
|
388
|
+
// A hash the caller never provided can never be uploaded.
|
|
389
|
+
const undeliverable = missing.filter((hash) => !deployData.files.has(hash));
|
|
390
|
+
if (undeliverable.length > 0) {
|
|
391
|
+
throw new errors_1.PartialDeploymentValidationError(`The server is still missing content the deployment does not include: ${undeliverable.join(', ')}. These hashes are referenced by the entity but absent from the provided files.`);
|
|
392
|
+
}
|
|
393
|
+
latestMissing = missing;
|
|
394
|
+
missingUpdatedThisRound = true;
|
|
395
|
+
uploadedBytes = Math.max(uploadedBytes, totalBytes - bytesOf(missing));
|
|
396
|
+
}
|
|
397
|
+
else {
|
|
398
|
+
uploadedBytes = Math.min(totalBytes, uploadedBytes + bytesOf(fileHashes.filter((hash) => hash !== entityId)));
|
|
399
|
+
}
|
|
400
|
+
completedBatches++;
|
|
401
|
+
reportProgress();
|
|
402
|
+
return { kind: 'incomplete' };
|
|
403
|
+
}
|
|
404
|
+
const body = await response.text().catch(() => '');
|
|
405
|
+
if (RETRYABLE_STATUSES.has(response.status) || response.status >= 500) {
|
|
406
|
+
const retryAfterMs = parseRetryAfterMs((_c = (_b = response.headers) === null || _b === void 0 ? void 0 : _b.get('retry-after')) !== null && _c !== void 0 ? _c : undefined);
|
|
407
|
+
throw new errors_1.RetryablePartialDeploymentError(`Server responded with status ${response.status}: ${body}`, retryAfterMs, response.status, body);
|
|
408
|
+
}
|
|
409
|
+
throw classify4xx(response.status, body);
|
|
410
|
+
}
|
|
411
|
+
finally {
|
|
412
|
+
dispose();
|
|
413
|
+
}
|
|
414
|
+
};
|
|
415
|
+
// Files are never split, so a file above the request cap can't be delivered.
|
|
416
|
+
const assertDeliverable = (hashes) => {
|
|
417
|
+
for (const hash of hashes) {
|
|
418
|
+
const size = sizeOf(hash);
|
|
419
|
+
if (size > maxBatchSizeBytes) {
|
|
420
|
+
throw new errors_1.PartialDeploymentValidationError(`The file '${hash}' (${size} bytes) exceeds the maximum request size of ` +
|
|
421
|
+
`${maxBatchSizeBytes} bytes and files cannot be split across requests. If your infrastructure ` +
|
|
422
|
+
`allows larger requests, raise options.maxBatchSizeBytes.`);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
};
|
|
426
|
+
// Uploads `hashes` once: the entity file rides the first request until the server has staged it, then
|
|
427
|
+
// the rest go through a bounded worker pool. First 200 wins; a terminal error aborts the rest.
|
|
428
|
+
const runRound = async (hashes) => {
|
|
429
|
+
var _a, _b;
|
|
430
|
+
if (callerSignal === null || callerSignal === void 0 ? void 0 : callerSignal.aborted) {
|
|
431
|
+
throw abortedByCaller();
|
|
432
|
+
}
|
|
433
|
+
missingUpdatedThisRound = false;
|
|
434
|
+
const files = new Map();
|
|
435
|
+
for (const hash of hashes)
|
|
436
|
+
files.set(hash, deployData.files.get(hash));
|
|
437
|
+
const batches = (0, batching_1.splitIntoBatches)(files, maxBatchSizeBytes);
|
|
438
|
+
totalBatches = Math.max(1, completedBatches + batches.length);
|
|
439
|
+
let remaining = batches;
|
|
440
|
+
if (!entityStaged) {
|
|
441
|
+
const first = await sendRequest([entityId, ...((_b = (_a = batches[0]) === null || _a === void 0 ? void 0 : _a.hashes) !== null && _b !== void 0 ? _b : [])], callerSignal);
|
|
442
|
+
if (first.kind === 'deployed') {
|
|
443
|
+
return first;
|
|
444
|
+
}
|
|
445
|
+
remaining = batches.slice(1);
|
|
446
|
+
}
|
|
447
|
+
else if (batches.length === 0) {
|
|
448
|
+
// Nothing left to send but not published yet: an empty batch lets the server re-check and publish.
|
|
449
|
+
remaining = [{ hashes: [], sizeBytes: 0 }];
|
|
450
|
+
totalBatches = completedBatches + 1;
|
|
451
|
+
}
|
|
452
|
+
const controller = new AbortController();
|
|
453
|
+
// Combined once per round and disposed after the pool drains, so a long-lived caller signal doesn't
|
|
454
|
+
// accumulate listeners.
|
|
455
|
+
const { signal: roundSignal, dispose: disposeRoundSignal } = combineSignals([callerSignal, controller.signal]);
|
|
456
|
+
let deployed;
|
|
457
|
+
let terminalError;
|
|
458
|
+
let nextIndex = 0;
|
|
459
|
+
const worker = async () => {
|
|
460
|
+
while (!deployed && !terminalError) {
|
|
461
|
+
const index = nextIndex++;
|
|
462
|
+
if (index >= remaining.length) {
|
|
463
|
+
return;
|
|
464
|
+
}
|
|
465
|
+
try {
|
|
466
|
+
const outcome = await sendRequest(remaining[index].hashes, roundSignal);
|
|
467
|
+
if (outcome.kind === 'deployed') {
|
|
468
|
+
// The first 200 wins; a sibling's body read cut short by the abort keeps it.
|
|
469
|
+
deployed !== null && deployed !== void 0 ? deployed : (deployed = outcome.result);
|
|
470
|
+
controller.abort();
|
|
471
|
+
return;
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
catch (error) {
|
|
475
|
+
if (error instanceof errors_1.DeploymentError) {
|
|
476
|
+
terminalError = error;
|
|
477
|
+
controller.abort();
|
|
478
|
+
return;
|
|
479
|
+
}
|
|
480
|
+
// A sibling won or the round was aborted: this request was cancelled on purpose.
|
|
481
|
+
if (deployed || controller.signal.aborted) {
|
|
482
|
+
return;
|
|
483
|
+
}
|
|
484
|
+
throw error;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
};
|
|
488
|
+
const workers = Array.from({ length: Math.min(concurrency, Math.max(1, remaining.length)) }, () => worker());
|
|
489
|
+
let roundError;
|
|
490
|
+
try {
|
|
491
|
+
await Promise.all(workers);
|
|
492
|
+
}
|
|
493
|
+
catch (error) {
|
|
494
|
+
// Captured so a concurrent win still takes precedence over a sibling's retryable failure.
|
|
495
|
+
roundError = error;
|
|
496
|
+
}
|
|
497
|
+
finally {
|
|
498
|
+
// Cancel in-flight siblings and let them unwind before the next round starts.
|
|
499
|
+
controller.abort();
|
|
500
|
+
await Promise.allSettled(workers);
|
|
501
|
+
disposeRoundSignal();
|
|
502
|
+
}
|
|
503
|
+
if (deployed) {
|
|
504
|
+
return { kind: 'deployed', result: deployed };
|
|
505
|
+
}
|
|
506
|
+
if (terminalError) {
|
|
507
|
+
throw terminalError;
|
|
508
|
+
}
|
|
509
|
+
if (roundError) {
|
|
510
|
+
throw roundError;
|
|
511
|
+
}
|
|
512
|
+
return { kind: 'incomplete' };
|
|
513
|
+
};
|
|
514
|
+
if (callerSignal === null || callerSignal === void 0 ? void 0 : callerSignal.aborted) {
|
|
515
|
+
throw abortedByCaller();
|
|
516
|
+
}
|
|
517
|
+
// /available-content only plans the first round; afterwards the server's `missing` list drives uploads.
|
|
518
|
+
if (allContentHashes.length > 0)
|
|
519
|
+
tracker === null || tracker === void 0 ? void 0 : tracker.checking(bytesOf(deployData.files.keys()));
|
|
520
|
+
let alreadyOnServer = new Set();
|
|
521
|
+
if (allContentHashes.length > 0) {
|
|
522
|
+
const { abortController, dispose } = linkAbortController(callerSignal);
|
|
523
|
+
try {
|
|
524
|
+
alreadyOnServer = await hashesAlreadyOnServer(allContentHashes, { ...requestBase, abortController });
|
|
525
|
+
}
|
|
526
|
+
catch (error) {
|
|
527
|
+
throw (callerSignal === null || callerSignal === void 0 ? void 0 : callerSignal.aborted) ? abortedByCaller() : error;
|
|
528
|
+
}
|
|
529
|
+
finally {
|
|
530
|
+
dispose();
|
|
531
|
+
}
|
|
532
|
+
if (callerSignal === null || callerSignal === void 0 ? void 0 : callerSignal.aborted) {
|
|
533
|
+
throw abortedByCaller();
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
let toSend = allContentHashes.filter((hash) => !alreadyOnServer.has(hash));
|
|
537
|
+
uploadedBytes = totalBytes - bytesOf(toSend);
|
|
538
|
+
let failures = 0;
|
|
539
|
+
let stalledRounds = 0;
|
|
540
|
+
let lastError;
|
|
541
|
+
// Progress means a new low in the server's missing count, so an oscillating list can't loop forever.
|
|
542
|
+
let fewestMissing = toSend.length;
|
|
543
|
+
const madeProgress = () => {
|
|
544
|
+
if (!missingUpdatedThisRound || !latestMissing || latestMissing.length >= fewestMissing) {
|
|
545
|
+
return false;
|
|
546
|
+
}
|
|
547
|
+
fewestMissing = latestMissing.length;
|
|
548
|
+
failures = 0;
|
|
549
|
+
stalledRounds = 0;
|
|
550
|
+
return true;
|
|
551
|
+
};
|
|
552
|
+
for (;;) {
|
|
553
|
+
try {
|
|
554
|
+
assertDeliverable(toSend);
|
|
555
|
+
// Every round adds what it sends, so re-sent content grows the upload total.
|
|
556
|
+
tracker === null || tracker === void 0 ? void 0 : tracker.plan(bytesOf(toSend) + (entityStaged ? 0 : sizeOf(entityId)));
|
|
557
|
+
const outcome = await runRound(toSend);
|
|
558
|
+
if (outcome.kind === 'deployed') {
|
|
559
|
+
// The publishing 200 carries no progress of its own, and siblings it cancelled were no longer needed.
|
|
560
|
+
totalBatches = Math.max(totalBatches, completedBatches + 1);
|
|
561
|
+
completedBatches = totalBatches;
|
|
562
|
+
uploadedBytes = totalBytes;
|
|
563
|
+
reportProgress();
|
|
564
|
+
return outcome.result;
|
|
565
|
+
}
|
|
566
|
+
const next = missingUpdatedThisRound && latestMissing ? latestMissing : toSend;
|
|
567
|
+
if (!madeProgress()) {
|
|
568
|
+
stalledRounds++;
|
|
569
|
+
}
|
|
570
|
+
if (stalledRounds > maxResumeAttempts) {
|
|
571
|
+
throw new errors_1.DeploymentError(`The partial deployment did not finalize: the server still reports ${next.length} missing file(s) after ` +
|
|
572
|
+
`${stalledRounds} round(s) without progress.`);
|
|
573
|
+
}
|
|
574
|
+
toSend = next;
|
|
575
|
+
}
|
|
576
|
+
catch (error) {
|
|
577
|
+
if (error instanceof errors_1.DeploymentError) {
|
|
578
|
+
throw error;
|
|
579
|
+
}
|
|
580
|
+
// A caller abort takes effect as a failed request; surface it instead of retrying.
|
|
581
|
+
if (callerSignal === null || callerSignal === void 0 ? void 0 : callerSignal.aborted) {
|
|
582
|
+
throw error;
|
|
583
|
+
}
|
|
584
|
+
lastError = error;
|
|
585
|
+
// Batches staged before the failure count as progress and refill the retry budget.
|
|
586
|
+
madeProgress();
|
|
587
|
+
if (failures >= maxResumeAttempts) {
|
|
588
|
+
break;
|
|
589
|
+
}
|
|
590
|
+
// Exponential backoff with a Retry-After floor, capped but never below the caller's resumeDelay.
|
|
591
|
+
const retryAfterMs = error instanceof errors_1.RetryablePartialDeploymentError ? (_g = error.retryAfterMs) !== null && _g !== void 0 ? _g : 0 : 0;
|
|
592
|
+
const maxBackoffMs = Math.max(resumeDelay, MAX_RESUME_BACKOFF_MS);
|
|
593
|
+
// Retrying before Retry-After can't succeed, so a longer wait ends the call with the server's reason.
|
|
594
|
+
if (retryAfterMs > maxBackoffMs) {
|
|
595
|
+
throw new errors_1.PartialDeploymentRetryLaterError(`${error instanceof Error ? error.message : String(error)} Retry in ${Math.ceil(retryAfterMs / 1000)} s.`, retryAfterMs, error.status, error.responseBody);
|
|
596
|
+
}
|
|
597
|
+
const backoff = Math.min(Math.max(resumeDelay * 2 ** failures, retryAfterMs), maxBackoffMs);
|
|
598
|
+
failures++;
|
|
599
|
+
await delay(backoff, callerSignal);
|
|
600
|
+
if (callerSignal === null || callerSignal === void 0 ? void 0 : callerSignal.aborted) {
|
|
601
|
+
throw abortedByCaller();
|
|
602
|
+
}
|
|
603
|
+
if (latestMissing) {
|
|
604
|
+
toSend = latestMissing;
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
const lastRetryable = lastError instanceof errors_1.RetryablePartialDeploymentError ? lastError : undefined;
|
|
609
|
+
throw new errors_1.DeploymentError(`The partial deployment failed after ${failures + 1} attempt(s): ${lastError instanceof Error ? lastError.message : String(lastError)}`, lastRetryable === null || lastRetryable === void 0 ? void 0 : lastRetryable.status, lastRetryable === null || lastRetryable === void 0 ? void 0 : lastRetryable.responseBody);
|
|
121
610
|
}
|
|
122
611
|
async function fetchEntitiesByPointers(pointers, options) {
|
|
123
612
|
if (pointers.length === 0) {
|
|
@@ -209,6 +698,7 @@ function createContentClient(options) {
|
|
|
209
698
|
return downloadContent(fetcher, contentUrl + '/contents', contentHash, options);
|
|
210
699
|
},
|
|
211
700
|
deploy,
|
|
701
|
+
deployPartial,
|
|
212
702
|
isContentAvailable,
|
|
213
703
|
checkPointerConsistency
|
|
214
704
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentClient.js","sourceRoot":"","sources":["../../src/client/ContentClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ContentClient.js","sourceRoot":"","sources":["../../src/client/ContentClient.ts"],"names":[],"mappings":"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"}
|
package/dist/client/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './utils/DeploymentBuilder';
|
|
2
|
+
export { DeploymentError, PartialDeploymentNotSupportedError, PartialDeploymentRetryLaterError, PartialDeploymentValidationError } from './utils/errors';
|
|
2
3
|
export * from './CatalystClient';
|
|
3
4
|
export * from './ContentClient';
|
|
4
5
|
export * from './LambdasClient';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,OAAO,EACL,eAAe,EACf,kCAAkC,EAClC,gCAAgC,EAChC,gCAAgC,EACjC,MAAM,gBAAgB,CAAA;AACvB,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA"}
|