@creejs/commons-retrier 2.1.13 → 2.1.15
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/cjs/index-dev.cjs +25 -21
- package/dist/cjs/index-dev.cjs.map +1 -1
- package/dist/cjs/index-min.cjs +1 -1
- package/dist/cjs/index-min.cjs.map +1 -1
- package/dist/esm/index-dev.js +25 -21
- package/dist/esm/index-dev.js.map +1 -1
- package/dist/esm/index-min.js +1 -1
- package/dist/esm/index-min.js.map +1 -1
- package/dist/umd/index.dev.js +25 -21
- package/dist/umd/index.dev.js.map +1 -1
- package/dist/umd/index.min.js +1 -1
- package/dist/umd/index.min.js.map +1 -1
- package/package.json +1 -1
package/dist/esm/index-dev.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var
|
|
1
|
+
let r$1 = class r extends Error{static isAggregatedErrorLike(t){return t&&Array.isArray(t.errors)}static isAggregatedError(t){return t instanceof r}constructor(t,r){super(t),this.errors=r??[];}addError(t){this.errors.push(t);}removeError(t){const r=this.errors.indexOf(t);return -1!==r&&(this.errors.splice(r,1),true)}};var e$1={constructorName:n$1,defaults:function(t,...r){if(null==t)throw new TypeError('"target" must not be null or undefined');for(const e of r)if(null!=e)for(const r in e) void 0===t[r]&&(t[r]=e[r]);return t},extend:o$1,extends:o$1,equals:function(t,r){if(t===r)return true;if("function"==typeof t?.equals)return t.equals(r);if("function"==typeof r?.equals)return r.equals(t);return false},isBrowser:i$1,isNode:function(){return !i$1()},cloneToPlainObject:function(t){if(null==t)return t;if("object"!=typeof t)throw new Error("Only Object allowed to clone");return {...t}},deepCloneToPlainObject:function(t){if(null==t)return t;if("object"!=typeof t)throw new Error("Only Object allowed to clone");return JSON.parse(JSON.stringify(t))}};function n$1(t){return t?.constructor?.name}function o$1(t,...r){if(null==t)throw new TypeError('"target" must not be null or undefined');for(const e of r)if(null!=e)for(const r in e)t[r]=e[r];return t}function i$1(){return "undefined"!=typeof window&&"undefined"!=typeof document}var s$1={isArray:u$1,isBoolean:f$1,isBuffer:function(t){return null!=t&&Buffer.isBuffer(t)},isFunction:a$1,isInstance:c$1,isIterable:function(t){return null!=t&&"function"==typeof t[Symbol.iterator]},isDate:function(t){return null!=t&&t instanceof Date},isError:function(t){return null!=t&&t instanceof Error},isMap:function(t){return null!=t&&"object"==typeof t&&t.constructor===Map},isWeakMap:function(t){return null!=t&&"object"==typeof t&&t.constructor===WeakMap},isNumber:d$1,isPositive:y,isNegative:h$1,isNotNegative:p$1,isNil:l$1,isNullOrUndefined:function(t){return null==t},isNull:g$1,isUndefined:w$1,isPlainObject:b$1,isObject:m$1,isPromise:A,isRegExp:function(t){return null!=t&&"object"==typeof t&&t.constructor===RegExp},isSet:function(t){return null!=t&&"object"==typeof t&&t.constructor===Set},isWeakSet:function(t){return null!=t&&"object"==typeof t&&t.constructor===WeakSet},isStream:function(t){return null!=t&&"function"==typeof t.pipe},isString:E,isSymbol:N,isPrimitive:function(t){return null!==t&&("string"==typeof t||"number"==typeof t||"boolean"==typeof t)},isInt8Array:v$1,isUint8Array:O$1,isUint8ClampedArray:j,isInt16Array:P,isUint16Array:x,isInt32Array:S,isUint32Array:U,isFloat32Array:T,isFloat64Array:B,isBigInt64Array:I,isBigUint64Array:k$1,isTypedArray:$,isArrayBuffer:L$1};function u$1(t){return Array.isArray(t)}function f$1(t){return "boolean"==typeof t}function a$1(t){return "function"==typeof t}function c$1(t){return null!=t&&"object"==typeof t&&!b$1(t)}function l$1(t){return null==t}function y(t){return !!d$1(t)&&t>0}function p$1(t){return !!d$1(t)&&t>=0}function h$1(t){return !!d$1(t)&&t<0}function g$1(t){return null===t}function w$1(t){return void 0===t}function d$1(t){return null!=t&&"number"==typeof t}function m$1(t){return null!=t&&"object"==typeof t}function b$1(t){return null!==t&&"object"==typeof t&&(t.constructor===Object||void 0===t.constructor)}function A(t){return null!=t&&"function"==typeof t.then}function E(t){return null!=t&&"string"==typeof t}function N(t){return null!=t&&"symbol"==typeof t}function $(t){return ArrayBuffer.isView(t)&&t.constructor!==DataView}function v$1(t){return t instanceof Int8Array}function O$1(t){return t instanceof Uint8Array}function j(t){return t instanceof Uint8ClampedArray}function P(t){return t instanceof Int16Array}function x(t){return t instanceof Uint16Array}function S(t){return t instanceof Int32Array}function U(t){return t instanceof Uint32Array}function T(t){return t instanceof Float32Array}function B(t){return t instanceof Float64Array}function I(t){return t instanceof BigInt64Array}function k$1(t){return t instanceof BigUint64Array}function L$1(t){return t instanceof ArrayBuffer}var F={assertNumber:D,assertPositive:M,assertNotNegative:J,assertFunction:W,assertNotNil:V,assertString:q};function C(t,r){if(!Array.isArray(t))throw new Error(`${r?'"'+r+'" ':""}Not Array: type=${typeof t} value=${X(t)}`)}function q(t,r){if(!E(t))throw new Error(`${r?'"'+r+'" ':""}Not String: type=${typeof t} value=${X(t)}`)}function D(t,r){if(!d$1(t))throw new Error(`${r?'"'+r+'" ':""}Not Number: type=${typeof t} value=${X(t)}`)}function M(t,r){if(!y(t))throw new Error(`${r?'"'+r+'" ':""}Not Positive: ${t}`)}function J(t,r){if(!p$1(t))throw new Error(`${r?'"'+r+'" ':""}Not "0 or Positive": ${t}`)}function W(t,r){if(!a$1(t))throw new Error(`${r?'"'+r+'" ':""}Not Function: type=${typeof t} value=${X(t)}`)}function H(t,r){if(!A(t))throw new Error(`${r?'"'+r+'" ':""}Not Promise: type=${typeof t} value=${X(t)}`)}function V(t,r){if(l$1(t))throw new Error((r?'"'+r+'" ':"")+"Should Not Nil")}function X(t){if(null===t)return "null";if(void 0===t)return "undefined";let r;try{r=JSON.stringify(t);}catch(e){r=t.toString();}return r}var tt={any:function(t){if(C(t),0===t.length)throw new Error("Empty Tasks");const e=rt(),n=[];for(let o=0;o<t.length;o++){const i=t[o];let u;if(s$1.isPromise(i))u=i;else {if(!s$1.isFunction(i)){n.push(new Error(`Invalid Task at index ${o}/${t.length-1}: ${i}`));continue}u=nt(i);}u.then(t=>{e.resolve(t);}).catch(o=>{n.push(o),n.length>=t.length&&e.reject(new r$1("All Tasks Failed",n));});}n.length===t.length&&e.reject(new r$1("All Tasks Failed",n));return e.promise},defer:rt,delay:function(t,r){s$1.isNumber(t)?(r=t,t=Promise.resolve()):null==t&&null==r&&(r=1,t=Promise.resolve());null!=t&&H(t),D(r=r??1e3);const e=rt(),n=Date.now();return t.then((...t)=>{const o=Date.now()-n;o<r?setTimeout(()=>e.resolve(...t),r-o):e.resolve(...t);}).catch(t=>{const o=Date.now()-n;o<r?setTimeout(()=>e.reject(t),r-o):e.reject(t);}),e.promise},timeout:function(t,r,e){H(t),D(r=r??1);const n=rt(r,e),o=Date.now();return t.then((...t)=>{Date.now()-o<=r?n.resolve(...t):n.reject(new Error(e??`Promise Timeout: ${r}ms`));}).catch(t=>{!n.resolved&&!n.rejected&&n.reject(t);}),n.promise},allSettled:et,returnValuePromised:nt,series:async function(t){C(t);const r=[];for(const e of t)if(W(e),s$1.isFunction(e))r.push(await nt(e));else {if(!s$1.isPromise(e))throw new Error(`Invalid Task: ${e}`);r.push(await e);}return r},seriesAllSettled:async function(t){C(t);const r=[];for(const e of t){W(e);try{r.push({ok:!0,result:await e()});}catch(t){r.push({ok:false,result:t});}}return r},parallel:async function(t,r=5){if(C(t),D(r),r<=0)throw new Error(`Invalid maxParallel: ${r}, should > 0`);t.forEach(t=>W(t));const e=[];if(t.length<=r){const r=await Promise.all(t.map(t=>nt(t)));return e.push(...r),e}const n=[];for(const o of t)if(W(o),n.push(o),n.length>=r){const t=await Promise.all(n.map(t=>nt(t)));e.push(...t),n.length=0;}if(n.length>0&&n.length<r){const t=await Promise.all(n.map(t=>nt(t)));e.push(...t);}return e},parallelAny:async function(t,e=5){if(C(t,"tasks"),D(e),0===t.length)throw new Error("Empty Tasks");if(e<=0)throw new Error(`Invalid maxParallel: ${e}, should > 0`);const n=[];let o=0,i=0;const u=rt();function f(){if(o>=t.length)return;if(i>e)return;const a=t[o++];let c;if(i++,s$1.isPromise(a))c=a;else {if(!s$1.isFunction(a))return n.push(new TypeError(`Invalid task: ${a}`)),void f();c=nt(a);}c.then(t=>{u.resolve(t);}).catch(e=>{n.push(e),n.length>=t.length&&u.pending?u.reject(new r$1("All Tasks Failed",n)):f();}).finally(()=>{i--;});}for(;i<e;)f();return u.promise},parallelAllSettled:async function(t,r=5){if(C(t),D(r),r<=0)throw new Error(`Invalid maxParallel: ${r}, should > 0`);t.forEach(t=>W(t));const e=[];if(t.length<=r){const r=await et(t.map(t=>nt(t)));return e.push(...r),e}const n=[];for(const o of t)if(n.push(o),n.length>=r){const t=await et(n.map(t=>nt(t)));e.push(...t),n.length=0;}if(n.length>0&&n.length<r){const t=await et(n.map(t=>nt(t)));e.push(...t);}return e},wait:function(t){J(t);const r={};let e;return r.timerHandler=e=setTimeout(()=>{clearTimeout(e),r._resolve();},t),r.promise=new Promise((t,n)=>{r._resolve=r=>{null!=e&&clearTimeout(e),t(r);};}),r.wakeup=()=>{r._resolve();},r}};function rt(t=-1,r){D(t);const e={};let n;return e.pending=true,e.canceled=false,e.rejected=false,e.resolved=false,t>=0&&(e.timerCleared=false,e.timerHandler=n=setTimeout(()=>{clearTimeout(n),e.timerCleared=true,e.reject(new Error(r??`Promise Timeout: ${t}ms`));},t)),e.promise=new Promise((t,r)=>{e.resolve=r=>{e.resolved||e.rejected||e.canceled||(null!=n&&(clearTimeout(n),e.timerCleared=true),e.pending=false,e.canceled=false,e.rejected=false,e.resolved=true,t(r));},e.reject=t=>{e.resolved||e.rejected||e.canceled||(null!=n&&(clearTimeout(n),e.timerCleared=true),e.pending=false,e.canceled=false,e.resolved=false,e.rejected=true,r(t));};}),e.cancel=e.promise.cancel=t=>{e.resolved||e.rejected||e.canceled||(null!=n&&(clearTimeout(n),e.timerCleared=true),e.reject(t??new Error("Cancelled")),e.canceled=e.promise.canceled=true);},e}async function et(t){C(t);const r=await Promise.allSettled(t),e=[];for(const t of r)"fulfilled"===t.status&&e.push({ok:true,result:t.value}),"rejected"===t.status&&e.push({ok:false,result:t.reason});return e}function nt(t){try{const r=t();return s$1.isPromise(r)?r:Promise.resolve(r)}catch(t){return Promise.reject(t)}}new TextDecoder;new TextEncoder;
|
|
2
2
|
|
|
3
3
|
// module vars
|
|
4
4
|
const DefaultMinInterval = 50;
|
|
@@ -8,8 +8,8 @@ const DefaultMaxRetries = 3;
|
|
|
8
8
|
// internal
|
|
9
9
|
|
|
10
10
|
// module vars
|
|
11
|
-
const { assertPositive: assertPositive$5, assertNotNegative: assertNotNegative$3 } =
|
|
12
|
-
const { isNumber } =
|
|
11
|
+
const { assertPositive: assertPositive$5, assertNotNegative: assertNotNegative$3 } = F;
|
|
12
|
+
const { isNumber } = s$1;
|
|
13
13
|
|
|
14
14
|
class Policy {
|
|
15
15
|
/**
|
|
@@ -150,7 +150,7 @@ class Policy {
|
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
-
var e={isFunction:t,isNil:s};function t(e){return "function"==typeof e}function s(e){return null==e}function n(e){return null!=e&&"string"==typeof e}var r={assertNumber:function(e,t){if(!function(e){return null!=e&&"number"==typeof e}(e))throw new Error(`${t?'"'+t+'" ':"
|
|
153
|
+
var e={isFunction:t,isNil:s};function t(e){return "function"==typeof e}function s(e){return null==e}function n(e){return null!=e&&"string"==typeof e}var r={assertNumber:function(e,t){if(!function(e){return null!=e&&"number"==typeof e}(e))throw new Error(`${t?'"'+t+'" ':""}Not Number: type=${typeof e} value=${i(e)}`)},assertFunction:function(e,s){if(!t(e))throw new Error(`${s?'"'+s+'" ':""}Not Function: type=${typeof e} value=${i(e)}`)},assertNotNil:function(e,t){if(s(e))throw new Error((t?'"'+t+'" ':"")+"Should Not Nil")},assertString:function(e,t){if(!n(e))throw new Error(`${t?'"'+t+'" ':""}Not String: type=${typeof e} value=${i(e)}`)},assertStringOrSymbol:function(e,t){if(!n(e)&&!function(e){return null!=e&&"symbol"==typeof e}(e))throw new Error(`${t?'"'+t+'" ':""}Not String or Symbol: type=${typeof e} value=${i(e)}`)}};function i(e){let t;try{t=JSON.stringify(e);}catch(s){t=e.toString();}return t}new TextDecoder,new TextEncoder;const l="DOwner$#$",{assertFunction:a,assertNotNil:o}=r;class c{constructor(e,t,s=false){o(e,"event"),a(t,"callback"),this._event=e,this._callback=t,this._isOnce=!!s,this._owner=void 0;}set owner(e){this._owner=e;}get owner(){return this._owner===l?void 0:this._owner}get event(){return this._event}get isOnce(){return this._isOnce}isSameCallback(e){return this._callback===e}get callback(){return this._callback}invoke(...e){try{return this._callback(...e)}finally{if(this._isOnce)try{this._event._remove(this);}catch(e){console.warn(e);}}}listener(...e){return this.invoke(...e)}}const{isFunction:h,isNil:u}=e,{assertStringOrSymbol:_,assertFunction:f}=r;class m{static get DefaultOwner(){return l}constructor(e){_(e,"eventName"),this._name=e,this._callbacks=new Set,this._listeners=[],this._callback2Listeners=new Map,this._listener2Owner=new Map,this._owner2Listeners=new Map;}get name(){return this._name}isEmpty(){return 0===this._callbacks.size}rawListeners(){return [...this._listeners]}listenerCount(e){return null==e?this._listeners.length:this._callback2Listeners.get(e)?.size??0}callbacks(){return [...this.rawListeners().map(e=>e.callback)]}emit(...e){if(0===this._listeners.length)return false;for(const t of [...this._listeners])t.invoke(...e);return true}emitOwner(e,...t){if(0===this._listeners.length)return false;const s=this._owner2Listeners.get(e);if(null==s)return false;for(const e of [...s])e.invoke(...t);return true}hasListener(e){return !!h(e)&&this._callbacks.has(e)}hasOwner(e){return !u(e)&&this._owner2Listeners.has(e)}addListener(e,t){return this._addListener(e,t,false,false)}prependListener(e,t){return this._addListener(e,t,false,true)}addOnceListener(e,t){return this._addListener(e,t,true,false)}prependOnceListener(e,t){return this._addListener(e,t,true,true)}_addListener(e,t,s,n){if(u(e))return false;f(e),this._callbacks.has(e)||this._callbacks.add(e),t=t??l;const r=new c(this,e,s);r.owner=t,n?this._listeners.unshift(r):this._listeners.push(r),this._listener2Owner.set(r,t);let i=this._callback2Listeners.get(e);null==i&&(i=new Set,this._callback2Listeners.set(e,i)),i.add(r);let a=this._owner2Listeners.get(t);return null==a&&(a=new Set,this._owner2Listeners.set(t,a)),a.add(r),true}removeListener(e){if(u(e))return false;if(!this._callbacks.has(e))return false;this._callbacks.delete(e);const t=this._callback2Listeners.get(e);if(null==t)return false;this._callback2Listeners.delete(e);for(const e of t){ -1!==this._listeners.indexOf(e)&&this._listeners.splice(this._listeners.indexOf(e),1);const t=this._listener2Owner.get(e);if(null==t)continue;this._listener2Owner.delete(e);const s=this._owner2Listeners.get(t);null!=s&&(s.delete(e),0===s.size&&this._owner2Listeners.delete(t));}return true}_remove(e){const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1);const{callback:s}=e,n=this._callback2Listeners.get(s);null!=n&&(n.delete(e),0===n.size&&(this._callback2Listeners.delete(s),this._callbacks.delete(s)));const r=this._listener2Owner.get(e);if(null==r)return;this._listener2Owner.delete(e);const i=this._owner2Listeners.get(r);null!=i&&(i.delete(e),0===i.size&&this._owner2Listeners.delete(r));}removeAllListeners(e){if(u(e))return this._callbacks.clear(),this._listeners.length=0,this._callback2Listeners.clear(),this._listener2Owner.clear(),this._owner2Listeners.clear(),this;const t=this._owner2Listeners.get(e);if(null==t)return this;this._owner2Listeners.delete(e);for(const e of t){ -1!==this._listeners.indexOf(e)&&this._listeners.splice(this._listeners.indexOf(e),1),this._listener2Owner.delete(e);const{callback:t}=e,s=this._callback2Listeners.get(t);null!=s&&(s.delete(e),0===s.size&&(this._callback2Listeners.delete(t),this._callbacks.delete(t)));}return this}}const{isNil:d}=e,{assertString:w,assertFunction:L,assertNumber:v,assertStringOrSymbol:g,assertNotNil:p}=r,b=["on","once","addListener","prependListener","prependOnceListener","off","offAll","offOwner","removeAllListeners","removeListener","emit","emitOwner","setMaxListeners","getMaxListeners","hasOwner","listeners","listenerCount","eventNames","rawListeners"];let O=10;class k{static mixin(e){const t=new k;e.__emitter=t;for(const s of b){const n=t[s];e[s]=n.bind(t);}return e}static get defaultMaxListeners(){return O}static set defaultMaxListeners(e){v(e),O=e??10;}constructor(){this._name2Event=new Map,this._maxListeners=O;}addListener(e,t,s){return this.on(e,t,s)}prependListener(e,t,s){w(e),L(t),this._checkMaxListeners(e);return this._getOrCreateEvent(e).prependListener(t,s),this}prependOnceListener(e,t,s){w(e),L(t),this._checkMaxListeners(e);return this._getOrCreateEvent(e).prependOnceListener(t,s),this}emit(e,...t){const s=this._name2Event.get(e);return null!=s&&!s.isEmpty()&&(s.emit(...t),true)}emitOwner(e,t,...s){if(null==t)throw new Error('Missing "owner"');const n=this._name2Event.get(e);return null!=n&&!n.isEmpty()&&(n.emitOwner(t,...s),true)}eventNames(){return [...this._name2Event.keys()]}getMaxListeners(){return this._maxListeners}listenerCount(e,t){g(e,"eventName");const s=this._name2Event.get(e);return null==s||s.isEmpty()?0:s.listenerCount(t)}listeners(e){g(e,"eventName");const t=this._name2Event.get(e);return null==t||t.isEmpty()?[]:t.callbacks()}off(e,t){const s=this._name2Event.get(e);return null==s?this:(s.removeListener(t),s.isEmpty()?(this._name2Event.delete(e),this):this)}offAll(e,t){g(e,"eventName");const s=this._name2Event.get(e);return null==s?this:(s.removeAllListeners(t),s.isEmpty()?(this._name2Event.delete(e),this):this)}offOwner(e){p(e,"owner");const t=[...this._name2Event.values()];for(const s of t)s.removeAllListeners(e),s.isEmpty()&&this._name2Event.delete(s.name);return this}on(e,t,s){w(e),L(t),this._checkMaxListeners(e);return this._getOrCreateEvent(e).addListener(t,s),this}_checkMaxListeners(e){let t=0;0!==this._maxListeners&&this._maxListeners!==1/0&&(t=this.listenerCount(e))>=this._maxListeners&&console.warn(`maxlistenersexceededwarning: Possible EventEmitter memory leak detected. ${t} ${e} listeners added to [${this}]. Use emitter.setMaxListeners() to increase limit`);}once(e,t,s){w(e),L(t);return this._getOrCreateEvent(e).addOnceListener(t,s),this}rawListeners(e){return this._name2Event.get(e)?.rawListeners()||[]}removeAllListeners(e,t){return this.offAll(e,t)}removeListener(e,t){return this.off(e,t)}setMaxListeners(e){if(v(e),e<0)throw new RangeError("maxListeners must >=0");return this._maxListeners=e,this}_getOrCreateEvent(e){if(this._name2Event.has(e))return this._name2Event.get(e);const t=new m(e);return this._name2Event.set(e,t),t}hasOwner(e){if(d(e))return false;for(const t of this._name2Event.values())if(t.hasOwner(e))return true;return false}}
|
|
154
154
|
|
|
155
155
|
const Start = 'start'; // retry started
|
|
156
156
|
const Stop = 'stop'; // retry stopped
|
|
@@ -177,7 +177,7 @@ var Event = {
|
|
|
177
177
|
// 3rd
|
|
178
178
|
// internal
|
|
179
179
|
// module vars
|
|
180
|
-
const { assertPositive: assertPositive$4 } =
|
|
180
|
+
const { assertPositive: assertPositive$4 } = F;
|
|
181
181
|
class FixedIntervalPolicy extends Policy {
|
|
182
182
|
/**
|
|
183
183
|
* Creates a fixed interval retry policy with the specified interval.
|
|
@@ -212,7 +212,7 @@ class FixedIntervalPolicy extends Policy {
|
|
|
212
212
|
// 3rd
|
|
213
213
|
// internal
|
|
214
214
|
// module vars
|
|
215
|
-
const { assertPositive: assertPositive$3 } =
|
|
215
|
+
const { assertPositive: assertPositive$3 } = F;
|
|
216
216
|
class FixedIncreasePolicy extends Policy {
|
|
217
217
|
/**
|
|
218
218
|
* each call to _next() increases the interval by "increasement".
|
|
@@ -249,7 +249,7 @@ class FixedIncreasePolicy extends Policy {
|
|
|
249
249
|
// 3rd
|
|
250
250
|
// internal
|
|
251
251
|
// module vars
|
|
252
|
-
const { assertPositive: assertPositive$2 } =
|
|
252
|
+
const { assertPositive: assertPositive$2 } = F;
|
|
253
253
|
|
|
254
254
|
class FactoreIncreasePolicy extends Policy {
|
|
255
255
|
/**
|
|
@@ -293,7 +293,7 @@ class FactoreIncreasePolicy extends Policy {
|
|
|
293
293
|
// 3rd
|
|
294
294
|
// internal
|
|
295
295
|
// module vars
|
|
296
|
-
const { assertPositive: assertPositive$1 } =
|
|
296
|
+
const { assertPositive: assertPositive$1 } = F;
|
|
297
297
|
|
|
298
298
|
class ShuttlePolicy extends Policy {
|
|
299
299
|
/**
|
|
@@ -338,7 +338,7 @@ class ShuttlePolicy extends Policy {
|
|
|
338
338
|
|
|
339
339
|
// internal
|
|
340
340
|
// module vars
|
|
341
|
-
const { assertNotNegative: assertNotNegative$2 } =
|
|
341
|
+
const { assertNotNegative: assertNotNegative$2 } = F;
|
|
342
342
|
/**
|
|
343
343
|
* @class FixedBackoff
|
|
344
344
|
*/
|
|
@@ -358,7 +358,7 @@ class FixedBackoff extends FixedIntervalPolicy {
|
|
|
358
358
|
// internal
|
|
359
359
|
|
|
360
360
|
// module vars
|
|
361
|
-
const { assertNotNegative: assertNotNegative$1 } =
|
|
361
|
+
const { assertNotNegative: assertNotNegative$1 } = F;
|
|
362
362
|
/**
|
|
363
363
|
* @class ExponentialBackoffPolicy
|
|
364
364
|
*/
|
|
@@ -376,7 +376,7 @@ class ExponentialBackoffPolicy extends FactoreIncreasePolicy {
|
|
|
376
376
|
|
|
377
377
|
// internal
|
|
378
378
|
// module vars
|
|
379
|
-
const { assertNotNegative } =
|
|
379
|
+
const { assertNotNegative } = F;
|
|
380
380
|
/**
|
|
381
381
|
* @class LinearBackoff
|
|
382
382
|
*/
|
|
@@ -400,7 +400,7 @@ class LinearBackoff extends FixedIncreasePolicy {
|
|
|
400
400
|
*/
|
|
401
401
|
|
|
402
402
|
// module vars
|
|
403
|
-
const { assertNotNil, assertFunction: assertFunction$1 } =
|
|
403
|
+
const { assertNotNil, assertFunction: assertFunction$1 } = F;
|
|
404
404
|
class Task {
|
|
405
405
|
/**
|
|
406
406
|
* Creates a new Task instance.
|
|
@@ -500,8 +500,8 @@ class AlwaysTask extends Task {
|
|
|
500
500
|
*/
|
|
501
501
|
|
|
502
502
|
// module vars
|
|
503
|
-
const { assertPositive, assertString, assertFunction, assertNumber } =
|
|
504
|
-
const { isNil } =
|
|
503
|
+
const { assertPositive, assertString, assertFunction, assertNumber } = F;
|
|
504
|
+
const { isNil } = s$1;
|
|
505
505
|
const TaskTimoutFlag = '!#@%$&^*';
|
|
506
506
|
|
|
507
507
|
/**
|
|
@@ -702,7 +702,7 @@ class Retrier {
|
|
|
702
702
|
* @param {number} [fixedInterval=1000] - The fixed interval in milliseconds between retry attempts. Defaults to 1000ms if not provided.
|
|
703
703
|
*/
|
|
704
704
|
constructor (fixedInterval) {
|
|
705
|
-
|
|
705
|
+
k.mixin(this);
|
|
706
706
|
/**
|
|
707
707
|
* @type {Policy}
|
|
708
708
|
*/
|
|
@@ -1030,7 +1030,7 @@ class Retrier {
|
|
|
1030
1030
|
let lastError;
|
|
1031
1031
|
// @ts-ignore
|
|
1032
1032
|
this.emit(Event.Start, startAt);
|
|
1033
|
-
this._taskingFlag =
|
|
1033
|
+
this._taskingFlag = tt.defer();
|
|
1034
1034
|
let latency = null;
|
|
1035
1035
|
|
|
1036
1036
|
/**
|
|
@@ -1070,7 +1070,7 @@ class Retrier {
|
|
|
1070
1070
|
const nextDelay = this._policy.generate(this._currentRetries);
|
|
1071
1071
|
try {
|
|
1072
1072
|
try {
|
|
1073
|
-
await
|
|
1073
|
+
await tt.timeout(task.execute(this._currentRetries, latency, nextDelay), this._taskTimeout, TaskTimoutFlag);
|
|
1074
1074
|
} catch (err) {
|
|
1075
1075
|
// @ts-ignore
|
|
1076
1076
|
if (err.message === TaskTimoutFlag) {
|
|
@@ -1112,7 +1112,7 @@ class Retrier {
|
|
|
1112
1112
|
break
|
|
1113
1113
|
}
|
|
1114
1114
|
// use Waiter to introduce the ability to wakeup at any time
|
|
1115
|
-
this._sleepWaiter =
|
|
1115
|
+
this._sleepWaiter = tt.wait(nextDelay);
|
|
1116
1116
|
await this._sleepWaiter.promise;
|
|
1117
1117
|
// await PromiseUtils.delay(nextDelay)
|
|
1118
1118
|
}
|
|
@@ -1123,6 +1123,10 @@ class Retrier {
|
|
|
1123
1123
|
// @ts-ignore
|
|
1124
1124
|
this.emit(Event.Completed, this._currentRetries, spent);
|
|
1125
1125
|
});
|
|
1126
|
+
if (AlwaysTask.isAlwaysTask(this._task)) {
|
|
1127
|
+
return // always task, resolve with <void>
|
|
1128
|
+
}
|
|
1129
|
+
// normal retry task, return the task's result
|
|
1126
1130
|
return this._taskingFlag.promise
|
|
1127
1131
|
}
|
|
1128
1132
|
|
|
@@ -1135,7 +1139,7 @@ class Retrier {
|
|
|
1135
1139
|
return
|
|
1136
1140
|
}
|
|
1137
1141
|
if (this._sleepWaiter != null) {
|
|
1138
|
-
this._sleepWaiter.
|
|
1142
|
+
this._sleepWaiter.wakeup();
|
|
1139
1143
|
}
|
|
1140
1144
|
}
|
|
1141
1145
|
|
|
@@ -1154,7 +1158,7 @@ class Retrier {
|
|
|
1154
1158
|
// @ts-ignore
|
|
1155
1159
|
return this._breakFlag.promise
|
|
1156
1160
|
}
|
|
1157
|
-
this._breakFlag =
|
|
1161
|
+
this._breakFlag = tt.defer();
|
|
1158
1162
|
/** @type {Error|undefined} */
|
|
1159
1163
|
this._breakReason = reason ?? new Error('Manually Stop');
|
|
1160
1164
|
// @ts-ignore
|
|
@@ -1516,7 +1520,7 @@ var RetrierFactory = {
|
|
|
1516
1520
|
* ...
|
|
1517
1521
|
* ```
|
|
1518
1522
|
*/
|
|
1519
|
-
|
|
1523
|
+
e$1.defaults(Retrier, RetrierFactory);
|
|
1520
1524
|
|
|
1521
1525
|
/**
|
|
1522
1526
|
* default export to support
|