@upyo/retry 0.5.0-dev.195 → 0.5.0-dev.197
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/index.cjs +22 -11
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +22 -11
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -219,7 +219,7 @@ var RetryTransport = class {
|
|
|
219
219
|
inFlight.set(index, promise);
|
|
220
220
|
};
|
|
221
221
|
const startLaunch = () => {
|
|
222
|
-
if (launchPromise != null || inputDone || inFlight.size >= this.config.sendMany.maxConcurrent) return;
|
|
222
|
+
if (launchPromise != null || inputDone || hasLaunchError || inFlight.size >= this.config.sendMany.maxConcurrent) return;
|
|
223
223
|
launchPromise = launchNext().catch((error) => {
|
|
224
224
|
launchError = error;
|
|
225
225
|
hasLaunchError = true;
|
|
@@ -239,7 +239,7 @@ var RetryTransport = class {
|
|
|
239
239
|
nextYieldIndex++;
|
|
240
240
|
startLaunch();
|
|
241
241
|
}
|
|
242
|
-
if (hasLaunchError) throw launchError;
|
|
242
|
+
if (hasLaunchError && inFlight.size <= 0) throw launchError;
|
|
243
243
|
startLaunch();
|
|
244
244
|
if (inFlight.size <= 0 && launchPromise == null) break;
|
|
245
245
|
const launch = launchPromise?.then(() => ({ launched: true }));
|
|
@@ -255,13 +255,10 @@ var RetryTransport = class {
|
|
|
255
255
|
controller.abort(new DOMException("The operation was aborted.", "AbortError"));
|
|
256
256
|
launchPromise?.catch(() => {});
|
|
257
257
|
try {
|
|
258
|
-
const closeIterator =
|
|
259
|
-
|
|
260
|
-
};
|
|
261
|
-
|
|
262
|
-
closeIterator().catch(() => {});
|
|
263
|
-
});
|
|
264
|
-
else await closeIterator();
|
|
258
|
+
const closeIterator = () => inputDone ? void 0 : iterator.return?.();
|
|
259
|
+
const closePromise = closeIterator();
|
|
260
|
+
if (pullingInput) closePromise?.catch(() => {});
|
|
261
|
+
else await closePromise;
|
|
265
262
|
} finally {
|
|
266
263
|
combinedSignal.cleanup();
|
|
267
264
|
}
|
|
@@ -270,6 +267,8 @@ var RetryTransport = class {
|
|
|
270
267
|
/**
|
|
271
268
|
* Disposes the wrapped transport when it supports disposal.
|
|
272
269
|
*
|
|
270
|
+
* @throws {unknown} If the wrapped transport's async or sync disposal hook
|
|
271
|
+
* throws or rejects.
|
|
273
272
|
* @since 0.5.0
|
|
274
273
|
*/
|
|
275
274
|
async [Symbol.asyncDispose]() {
|
|
@@ -387,8 +386,20 @@ function getRetryAfterMilliseconds(failure) {
|
|
|
387
386
|
if (isReceiptError(failure)) return failure.retryAfterMilliseconds;
|
|
388
387
|
return failure.errors?.find((error) => error.retryAfterMilliseconds != null)?.retryAfterMilliseconds;
|
|
389
388
|
}
|
|
390
|
-
|
|
391
|
-
|
|
389
|
+
function toAsyncIterator(values) {
|
|
390
|
+
if (Symbol.asyncIterator in values) return values[Symbol.asyncIterator]();
|
|
391
|
+
const iterator = values[Symbol.iterator]();
|
|
392
|
+
return {
|
|
393
|
+
next() {
|
|
394
|
+
return Promise.resolve(iterator.next());
|
|
395
|
+
},
|
|
396
|
+
return(value) {
|
|
397
|
+
return Promise.resolve(iterator.return?.(value) ?? {
|
|
398
|
+
done: true,
|
|
399
|
+
value
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
};
|
|
392
403
|
}
|
|
393
404
|
function toReceiptError(value) {
|
|
394
405
|
return isReceiptError(value) ? value : void 0;
|
package/dist/index.d.cts
CHANGED
|
@@ -232,6 +232,8 @@ declare class RetryTransport<TProviderId extends string = string> implements Tra
|
|
|
232
232
|
/**
|
|
233
233
|
* Disposes the wrapped transport when it supports disposal.
|
|
234
234
|
*
|
|
235
|
+
* @throws {unknown} If the wrapped transport's async or sync disposal hook
|
|
236
|
+
* throws or rejects.
|
|
235
237
|
* @since 0.5.0
|
|
236
238
|
*/
|
|
237
239
|
[Symbol.asyncDispose](): Promise<void>;
|
package/dist/index.d.ts
CHANGED
|
@@ -232,6 +232,8 @@ declare class RetryTransport<TProviderId extends string = string> implements Tra
|
|
|
232
232
|
/**
|
|
233
233
|
* Disposes the wrapped transport when it supports disposal.
|
|
234
234
|
*
|
|
235
|
+
* @throws {unknown} If the wrapped transport's async or sync disposal hook
|
|
236
|
+
* throws or rejects.
|
|
235
237
|
* @since 0.5.0
|
|
236
238
|
*/
|
|
237
239
|
[Symbol.asyncDispose](): Promise<void>;
|
package/dist/index.js
CHANGED
|
@@ -196,7 +196,7 @@ var RetryTransport = class {
|
|
|
196
196
|
inFlight.set(index, promise);
|
|
197
197
|
};
|
|
198
198
|
const startLaunch = () => {
|
|
199
|
-
if (launchPromise != null || inputDone || inFlight.size >= this.config.sendMany.maxConcurrent) return;
|
|
199
|
+
if (launchPromise != null || inputDone || hasLaunchError || inFlight.size >= this.config.sendMany.maxConcurrent) return;
|
|
200
200
|
launchPromise = launchNext().catch((error) => {
|
|
201
201
|
launchError = error;
|
|
202
202
|
hasLaunchError = true;
|
|
@@ -216,7 +216,7 @@ var RetryTransport = class {
|
|
|
216
216
|
nextYieldIndex++;
|
|
217
217
|
startLaunch();
|
|
218
218
|
}
|
|
219
|
-
if (hasLaunchError) throw launchError;
|
|
219
|
+
if (hasLaunchError && inFlight.size <= 0) throw launchError;
|
|
220
220
|
startLaunch();
|
|
221
221
|
if (inFlight.size <= 0 && launchPromise == null) break;
|
|
222
222
|
const launch = launchPromise?.then(() => ({ launched: true }));
|
|
@@ -232,13 +232,10 @@ var RetryTransport = class {
|
|
|
232
232
|
controller.abort(new DOMException("The operation was aborted.", "AbortError"));
|
|
233
233
|
launchPromise?.catch(() => {});
|
|
234
234
|
try {
|
|
235
|
-
const closeIterator =
|
|
236
|
-
|
|
237
|
-
};
|
|
238
|
-
|
|
239
|
-
closeIterator().catch(() => {});
|
|
240
|
-
});
|
|
241
|
-
else await closeIterator();
|
|
235
|
+
const closeIterator = () => inputDone ? void 0 : iterator.return?.();
|
|
236
|
+
const closePromise = closeIterator();
|
|
237
|
+
if (pullingInput) closePromise?.catch(() => {});
|
|
238
|
+
else await closePromise;
|
|
242
239
|
} finally {
|
|
243
240
|
combinedSignal.cleanup();
|
|
244
241
|
}
|
|
@@ -247,6 +244,8 @@ var RetryTransport = class {
|
|
|
247
244
|
/**
|
|
248
245
|
* Disposes the wrapped transport when it supports disposal.
|
|
249
246
|
*
|
|
247
|
+
* @throws {unknown} If the wrapped transport's async or sync disposal hook
|
|
248
|
+
* throws or rejects.
|
|
250
249
|
* @since 0.5.0
|
|
251
250
|
*/
|
|
252
251
|
async [Symbol.asyncDispose]() {
|
|
@@ -364,8 +363,20 @@ function getRetryAfterMilliseconds(failure) {
|
|
|
364
363
|
if (isReceiptError(failure)) return failure.retryAfterMilliseconds;
|
|
365
364
|
return failure.errors?.find((error) => error.retryAfterMilliseconds != null)?.retryAfterMilliseconds;
|
|
366
365
|
}
|
|
367
|
-
|
|
368
|
-
|
|
366
|
+
function toAsyncIterator(values) {
|
|
367
|
+
if (Symbol.asyncIterator in values) return values[Symbol.asyncIterator]();
|
|
368
|
+
const iterator = values[Symbol.iterator]();
|
|
369
|
+
return {
|
|
370
|
+
next() {
|
|
371
|
+
return Promise.resolve(iterator.next());
|
|
372
|
+
},
|
|
373
|
+
return(value) {
|
|
374
|
+
return Promise.resolve(iterator.return?.(value) ?? {
|
|
375
|
+
done: true,
|
|
376
|
+
value
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
};
|
|
369
380
|
}
|
|
370
381
|
function toReceiptError(value) {
|
|
371
382
|
return isReceiptError(value) ? value : void 0;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@upyo/retry",
|
|
3
|
-
"version": "0.5.0-dev.
|
|
3
|
+
"version": "0.5.0-dev.197",
|
|
4
4
|
"description": "Retry and backoff decorator transport for Upyo email library",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"email",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
},
|
|
55
55
|
"sideEffects": false,
|
|
56
56
|
"peerDependencies": {
|
|
57
|
-
"@upyo/core": "0.5.0-dev.
|
|
57
|
+
"@upyo/core": "0.5.0-dev.197+0d26a10d"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"tsdown": "^0.12.7",
|