@creejs/commons-retrier 2.1.28 → 2.1.30
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 +1 -1
- package/dist/cjs/index-dev.cjs.map +1 -1
- package/dist/cjs/index-min.cjs.map +1 -1
- package/dist/esm/index-dev.js +1 -1
- package/dist/esm/index-dev.js.map +1 -1
- package/dist/esm/index-min.js.map +1 -1
- package/dist/umd/index.dev.js +1 -1
- package/dist/umd/index.dev.js.map +1 -1
- package/dist/umd/index.min.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-dev.js","sources":["../../../lang/dist/esm/index-min.js","../../lib/constants.js","../../lib/policy.js","../../../events/dist/esm/index-min.js","../../lib/event.js","../../lib/policy/fixed-interval-policy.js","../../lib/policy/fixed-increase-policy.js","../../lib/policy/factor-increase-policy.js","../../lib/policy/shuttle-policy.js","../../lib/policy/fixed-backoff.js","../../lib/policy/exponential-backoff.js","../../lib/policy/linear-backoff.js","../../lib/task.js","../../lib/alway-task.js","../../lib/forever-task.js","../../lib/retrier.js","../../lib/retrier-factory.js","../../lib/index.js"],"sourcesContent":["const t={NOT_FOUND:404,NOT_SUPPORTED:505,NOT_IMPL:501};class r extends Error{static get Code(){return t}static isErrorLike(t){return null!=t&&(\"_\"===t._type&&\"number\"==typeof t.code)}static timeout(t,e){return new r(`Timeout ${e}ms: ${t}`,504)}static preconditionFailed(t){return new r(`Not Matched: ${t}`,412)}static notFound(t){return new r(`Not Found: ${t}`,404)}static notImpled(){return new r(\"Not Impled Yet\",501)}static notSupported(t){return new r(\"Not Supported:\"+t,505)}static isNotSupported(t){return 505===t?.code}constructor(t,r){super(t),this._type=\"_\",this.code=r}}class e extends Error{static isAggregatedErrorLike(t){return t&&Array.isArray(t.errors)}static isAggregatedError(t){return t instanceof e}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),!0)}}var n={get:function(t,r,e){if(null==t)return e;if(\"string\"!=typeof r)throw new Error('\"path\" must be a string');const n=r.split(\".\");let o=t;for(const t of n){if(void 0===o[t])return e;o=o[t]}return o},constructorName:o,defaults:function(t,...r){if(null==t)throw new TypeError('\"target\" Should Not Nil');for(const e of r)if(null!=e)for(const r in e)void 0===t[r]&&(t[r]=e[r]);return t},extend:i,extends:i,equals:function(t,r){if(t===r)return!0;if(\"function\"==typeof t?.equals)return t.equals(r);if(\"function\"==typeof r?.equals)return r.equals(t);return!1},isBrowser:s,isNode:function(){return!s()},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 o(t){return t?.constructor?.name}function i(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 s(){return\"undefined\"!=typeof window&&\"undefined\"!=typeof document}var u={isArray:f,isBoolean:a,isBuffer:function(t){return null!=t&&Buffer.isBuffer(t)},isFunction:c,isInstance:l,isIterable:y,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:b,isPositive:h,isNegative:w,isNotNegative:g,isNil:p,isNullOrUndefined:function(t){return null==t},isNull:d,isUndefined:m,isPlainObject:E,isObject:A,isPromise:N,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:$,isSymbol:v,isPrimitive:function(t){return null!==t&&(\"string\"==typeof t||\"number\"==typeof t||\"boolean\"==typeof t)},isInt8Array:P,isUint8Array:j,isUint8ClampedArray:S,isInt16Array:x,isUint16Array:U,isInt32Array:I,isUint32Array:T,isFloat32Array:B,isFloat64Array:k,isBigInt64Array:L,isBigUint64Array:F,isTypedArray:O,isArrayBuffer:C};function f(t){return Array.isArray(t)}function a(t){return\"boolean\"==typeof t}function c(t){return\"function\"==typeof t}function l(t){return null!=t&&\"object\"==typeof t&&!E(t)}function y(t){return null!=t&&\"function\"==typeof t[Symbol.iterator]}function p(t){return null==t}function h(t){return!!b(t)&&t>0}function g(t){return!!b(t)&&t>=0}function w(t){return!!b(t)&&t<0}function d(t){return null===t}function m(t){return void 0===t}function b(t){return null!=t&&\"number\"==typeof t}function A(t){return null!=t&&\"object\"==typeof t}function E(t){return null!==t&&\"object\"==typeof t&&(t.constructor===Object||void 0===t.constructor)}function N(t){return null!=t&&\"function\"==typeof t.then}function $(t){return null!=t&&\"string\"==typeof t}function v(t){return null!=t&&\"symbol\"==typeof t}function O(t){return ArrayBuffer.isView(t)&&t.constructor!==DataView}function P(t){return t instanceof Int8Array}function j(t){return t instanceof Uint8Array}function S(t){return t instanceof Uint8ClampedArray}function x(t){return t instanceof Int16Array}function U(t){return t instanceof Uint16Array}function I(t){return t instanceof Int32Array}function T(t){return t instanceof Uint32Array}function B(t){return t instanceof Float32Array}function k(t){return t instanceof Float64Array}function L(t){return t instanceof BigInt64Array}function F(t){return t instanceof BigUint64Array}function C(t){return t instanceof ArrayBuffer}var M={assertNumber:_,assertPositive:R,assertNegative:function(t,r){if(!w(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Negative: ${t}`)},assertNotNegative:J,assertBoolean:function(t,r){if(!a(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Boolean: type=${typeof t} value=${tt(t)}`)},assertObject:W,assertPlainObject:function(t,r){if(!E(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not PlainObject: type=${typeof t} value=${tt(t)}`)},assertSymbol:function(t,r){if(!v(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Symbol: type=${typeof t} value=${tt(t)}`)},assertFunction:z,assertInstance:function(t,r){if(!l(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Class Instance: type=${typeof t} value=${tt(t)}`)},assertPromise:H,assertNil:function(t,r){if(!p(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Neither Null nor Undefined: type=${typeof t} value=${tt(t)}`)},assertNotNil:V,assertNull:function(t,r){if(!d(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Null: type=${typeof t} value=${tt(t)}`)},assertNotNull:function(t,r){if(d(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Should Not Null\")},assertUndefined:function(t,r){if(!m(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Undefined: type=${typeof t} value=${tt(t)}`)},assertString:q,assertArray:D,assertStringOrSymbol:function(t,r){if(!$(t)&&!v(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not String or Symbol: type=${typeof t} value=${tt(t)}`)},assertInt8Array:function(t,r){if(P(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not Int8Array\")},assertUint8Array:function(t,r){if(j(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not Uint8Array\")},assertUint8ClampedArray:function(t,r){if(S(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not Uint8ClampedArray\")},assertInt16Array:function(t,r){if(x(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not Int16Array\")},assertUint16Array:function(t,r){if(U(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not Uint16Array\")},assertInt32Array:function(t,r){if(I(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not Int32Array\")},assertUint32Array:function(t,r){if(T(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not Uint32Array\")},assertFloat32Array:function(t,r){if(B(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not Float32Array\")},assertFloat64Array:function(t,r){if(k(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not Float64Array\")},assertBigInt64Array:function(t,r){if(L(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not BigInt64Array\")},assertBigUint64Array:function(t,r){if(F(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not BigUint64Array\")},assertTypedArray:function(t,r){if(O(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not TypedArray\")},assertArrayBuffer:G,assertIterable:function(t,r){if(!y(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not Iterable\")}};function D(t,r){if(!Array.isArray(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Array: type=${typeof t} value=${tt(t)}`)}function q(t,r){if(!$(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not String: type=${typeof t} value=${tt(t)}`)}function _(t,r){if(!b(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Number: type=${typeof t} value=${tt(t)}`)}function R(t,r){if(!h(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Positive: ${t}`)}function J(t,r){if(!g(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not \"0 or Positive\": ${t}`)}function W(t,r){if(!A(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Object: type=${typeof t} value=${tt(t)}`)}function z(t,r){if(!c(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Function: type=${typeof t} value=${tt(t)}`)}function H(t,r){if(!N(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Promise: type=${typeof t} value=${tt(t)}`)}function V(t,r){if(p(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Should Not Nil\")}function G(t,r){if(!C(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not ArrayBuffer\")}var K={isEmpty:Y,assertNotEmpty:Q,isBlank:X,assertNotBlank:function(t,r){if(X(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Is Blank: ${t}`)},capitalize:function(t){if(q(t),0===t.length)return t;const r=t.charAt(0),e=r.toUpperCase();return r===e?t:e+t.slice(1)},decapitalize:function(t){if(q(t),0===t.length)return t;const r=t.charAt(0),e=r.toLowerCase();return r===e?t:e+t.slice(1)},splitWithFixedLength:function(t,r,e=\" \"){if(q(t),_(r),q(e),0===t.length)return[];if(r<=0)throw new Error(\"length muse >=0\");if(t.length<r)return[t.padEnd(r,e)];const n=[];for(let o=0;o<t.length;o+=r){const i=t.substring(o,o+r);n.push(i.padEnd(r,e))}return n},split:function(t,...r){q(t);if(0===t.length)return[];const e=[...r];0===r.length&&r.push(\",\");const n=Z(t,...e);if(0===n.length)return[];const o=[];let i=\"\",s=0;for(const{marker:r,index:e}of n)i=t.substring(s,e),o.push(i),s=e+r.length;return i=t.substring(s),o.push(i),o},findMarkerPositions:function(t,...r){if(q(t),0===r.length)throw new Error(\"At least one marker must be provided\");const e=[];for(const n of new Set(r)){if(Y(n))continue;q(n);let r=t.indexOf(n);for(;-1!==r;)e.push({marker:n,index:r}),r=t.indexOf(n,r+n.length)}return e.sort((t,r)=>t.index-r.index),e},findMarkerPositionsRegex:Z,substringBefore:function(t,r){if(q(t),q(r),0===t.length||0===r.length)return;const e=t.indexOf(r);if(-1===e)return;return t.substring(0,e)},substringBeforeLast:function(t,r){if(q(t),q(r),0===t.length||0===r.length)return;const e=t.lastIndexOf(r);if(-1===e)return;return t.substring(0,e)},substringAfter:function(t,r){if(q(t),q(r),0===t.length||0===r.length)return;const e=t.indexOf(r);if(-1===e)return;return t.substring(e+r.length)},substringAfterLast:function(t,r){if(q(t),q(r),0===t.length||0===r.length)return;const e=t.lastIndexOf(r);if(-1===e)return;return t.substring(e+r.length)},substringBetween:function(t,r,e){Q(t),Q(r),Q(e);const n=t.indexOf(r);if(-1===n)return;const o=t.indexOf(e,n+r.length);if(-1===o)return;return t.substring(n+r.length,o)},substringBetweenGreedy:function(t,r,e){Q(t),Q(r),Q(e);const n=t.indexOf(r);if(-1===n)return;const o=t.lastIndexOf(e);if(-1===o||o<=n)return;return t.substring(n+r.length,o)},substringsBetween:function(t,r,e){Q(t),Q(r),Q(e);const n=[];let o=0;for(;;){const i=t.indexOf(r,o);if(-1===i)break;const s=t.indexOf(e,i+r.length);if(-1===s)break;n.push(t.substring(i+r.length,s)),o=s+e.length}return n},safeToString:tt};function Y(t){return null==t||(q(t),0===t.length)}function Q(t,r){if(Y(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}IsEmpty String: ${t}`)}function X(t){return null==t||(q(t),0===t.trim().length)}function Z(t,...r){if(q(t),0===r.length)throw new Error(\"At least one marker must be provided\");const e=[...new Set(r.filter(t=>null!=t))].map(t=>(q(t),t.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\"))),n=new RegExp(e.map(t=>`(${t})`).join(\"|\"),\"g\"),o=[];let i=null;for(;null!==(i=n.exec(t));){for(let t=1;t<i.length;t++)if(i[t]){o.push({marker:r[t-1],index:i.index});break}0===i[0].length&&n.lastIndex++}return o}function tt(t){if(null===t)return\"null\";if(void 0===t)return\"undefined\";const r=typeof t;if(\"string\"===r)return t;if(\"symbol\"===r)return`Symbol(${t.description})`;if(\"function\"===r)return`Function ${t.name}(){}`;if(t instanceof String)return t.toString();if(Number.isNaN(t))return\"NaN\";if(t===1/0)return\"Infinity\";if(t===-1/0)return\"-Infinity\";if(t instanceof Error)return`${t.constructor.name}: ${t.message}`;if(t instanceof Promise)return\"Promise\";if(t instanceof Set)return`Set: ${tt(Array.from(t))}`;if(t instanceof Map)return`Map: ${tt(Array.from(t.entries()))}`;if(t instanceof RegExp)return t.toString();if(Array.isArray(t))return`[${t.map(tt).join(\", \")}]`;let e;try{e=JSON.stringify(t)}catch(r){e=t.toString()}return e}var rt={quiet:function(t,r){z(t);try{const e=t();return N(e)?e.catch(t=>{r&&r.isErrorEnabled()&&r.error(\"quiet() with async error:\",t)}):e}catch(t){r&&r.isErrorEnabled()&&r.error(\"quiet() with sync error:\",t)}},quietKeepError:function(t,r){z(t),D(r);try{const e=t();return N(e)?e.catch(t=>r.push(t)):e}catch(t){r.push(t)}}},et={any:function(t){if(D(t),0===t.length)throw new Error(\"Empty Tasks\");const r=nt(),n=[];for(let o=0;o<t.length;o++){const i=t[o];let s;if(u.isPromise(i))s=i;else{if(!u.isFunction(i)){n.push(new Error(`Invalid Task at index ${o}/${t.length-1}: ${i}`));continue}s=it(i)}s.then(t=>{r.resolve(t)}).catch(o=>{n.push(o),n.length>=t.length&&r.reject(new e(\"All Tasks Failed\",n))})}n.length===t.length&&r.reject(new e(\"All Tasks Failed\",n));return r.promise},defer:nt,delay:function(t,r){u.isNumber(t)?(r=t,t=Promise.resolve()):null==t&&null==r&&(r=1,t=Promise.resolve());null!=t&&H(t),_(r=r??1e3);const e=nt(),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),_(r=r??1);const n=nt(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:ot,returnValuePromised:it,series:async function(t){D(t);const r=[];for(const e of t)if(z(e),u.isFunction(e))r.push(await it(e));else{if(!u.isPromise(e))throw new Error(`Invalid Task: ${e}`);r.push(await e)}return r},seriesAllSettled:async function(t){D(t);const r=[];for(const e of t){z(e);try{r.push({ok:!0,result:await e()})}catch(t){r.push({ok:!1,result:t})}}return r},parallel:async function(t,r=5){if(D(t),_(r),r<=0)throw new Error(`Invalid maxParallel: ${r}, should > 0`);t.forEach(t=>z(t));const e=[];if(t.length<=r){const r=await Promise.all(t.map(t=>it(t)));return e.push(...r),e}const n=[];for(const o of t)if(z(o),n.push(o),n.length>=r){const t=await Promise.all(n.map(t=>it(t)));e.push(...t),n.length=0}if(n.length>0&&n.length<r){const t=await Promise.all(n.map(t=>it(t)));e.push(...t)}return e},parallelAny:async function(t,r=5,n){if(D(t,\"tasks\"),_(r),0===t.length)throw new Error(\"Empty Tasks\");if(r<=0)throw new Error(`Invalid maxParallel: ${r}, should > 0`);const o=[];let i=0,s=0;const f=nt();function a(){if(i>=t.length)return;if(s>r)return;const c=t[i++];let l;s++,l=u.isPromise(c)?c:u.isFunction(c)?it(c):Promise.reject(new TypeError(`Invalid task: ${typeof c}, Only Promise or Function allowed`)),l.then(t=>{s--,f.resolve(t)}).catch(r=>{o.push(r),o.length>=t.length&&f.pending?f.reject(new e(n??\"All Tasks Failed\",o)):(s--,a())})}const c=Math.min(t.length,r);for(let t=0;t<c;t++)a();return f.promise},parallelAllSettled:async function(t,r=5){if(D(t),_(r),r<=0)throw new Error(`Invalid maxParallel: ${r}, should > 0`);t.forEach(t=>z(t));const e=[];if(t.length<=r){const r=await ot(t.map(t=>it(t)));return e.push(...r),e}const n=[];for(const o of t)if(n.push(o),n.length>=r){const t=await ot(n.map(t=>it(t)));e.push(...t),n.length=0}if(n.length>0&&n.length<r){const t=await ot(n.map(t=>it(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 nt(t=-1,r){_(t);const e={};let n;return e.pending=!0,e.canceled=!1,e.rejected=!1,e.resolved=!1,t>=0&&(e.timerCleared=!1,e.timerHandler=n=setTimeout(()=>{clearTimeout(n),e.timerCleared=!0,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=!0),e.pending=!1,e.canceled=!1,e.rejected=!1,e.resolved=!0,t(r))},e.reject=t=>{e.resolved||e.rejected||e.canceled||(null!=n&&(clearTimeout(n),e.timerCleared=!0),e.pending=!1,e.canceled=!1,e.resolved=!1,e.rejected=!0,r(t))}}),e.cancel=e.promise.cancel=t=>{e.resolved||e.rejected||e.canceled||(null!=n&&(clearTimeout(n),e.timerCleared=!0),e.reject(t??new Error(\"Cancelled\")),e.canceled=e.promise.canceled=!0)},e}async function ot(t){D(t);const r=await Promise.allSettled(t),e=[];for(const t of r)\"fulfilled\"===t.status&&e.push({ok:!0,result:t.value}),\"rejected\"===t.status&&e.push({ok:!1,result:t.reason});return e}function it(t){try{const r=t();return u.isPromise(r)?r:Promise.resolve(r)}catch(t){return Promise.reject(t)}}const{isPlainObject:st}=u;var ut={proxy:ft,newProxyInstance:function(t,r,e,n=!0){const o=ft(t,e,n);return Reflect.construct(o,r??[])}};function ft(t,r,e=!0){if(\"function\"!=typeof t)throw new TypeError(`Not Class: type=${typeof t}, value=${JSON.stringify(t)}`);if(null!=r){if(!st(r))throw new TypeError(`Not PropertyHandler: type=${typeof r}, value=${JSON.stringify(r)}`);const{get:t,set:e}=r;if(null!=t&&\"function\"!=typeof t)throw new TypeError(`Not PropertyHandler.get: type=${typeof t}, value=${JSON.stringify(t)}`);if(null!=e&&\"function\"!=typeof e)throw new TypeError(`Not PropertyHandler.set: type=${typeof e}, value=${JSON.stringify(e)}`)}const n={construct(t,n,o){const i=Reflect.construct(t,n);return new Proxy(e?Object.preventExtensions(i):i,r??{})}};return new Proxy(t,n)}var at={proxy:function(t,r,e=!0){if(p(t)||!A(t)||f(t))throw new TypeError(`Not Object: type=${typeof t}, value=${JSON.stringify(t)}`);return new Proxy(e?Object.preventExtensions(t):t,r??{})}};function ct(t){W(t,\"obj\");const r=new Set;let e=t;for(;e&&e!==Object.prototype;){const n=Object.getOwnPropertyNames(e);for(const e of n)\"constructor\"!==e&&\"function\"==typeof t[e]&&r.add(e);e=Object.getPrototypeOf(e)}return[...new Set(r)]}var lt={getMethodsOfClass:function(t){z(t,\"cls\");const r=new Set;let e=t.prototype;for(;e&&e!==Object.prototype;){const t=Object.getOwnPropertyNames(e);for(const n of t)\"constructor\"!==n&&\"function\"==typeof e[n]&&r.add(n);e=Object.getPrototypeOf(e)}return[...new Set(r)]},getStaticMethodsOfClass:function(t){z(t,\"cls\");const r=new Set;let e=t;for(;e&&e!==Object.getPrototypeOf(Object);){const t=Object.getOwnPropertyNames(e);for(const n of t)\"function\"==typeof e[n]&&r.add(n);e=Object.getPrototypeOf(e)}return[...r]},getMethods:ct,getMethodsOfObject:ct},yt={startsWith:function(t,r){V(t,\"src\"),V(r,\"searching\");return ht(t.subarray(0,r.length),r)},isSameType:pt,equals:ht};function pt(t,r){return V(t,\"src\"),V(r,\"target\"),o(t)===o(r)}function ht(t,r){if(V(t,\"src\"),V(r,\"target\"),!pt(t,r))return!1;if(t.byteLength!==r.byteLength)return!1;const e=new DataView(t.buffer,t.byteOffset,t.byteLength),n=new DataView(r.buffer,r.byteOffset,r.byteLength);for(let r=0;r<t.byteLength;r++)if(e.getUint8(r)!==n.getUint8(r))return!1;return!0}var gt={readString:function(t,r=0,e){if(G(t),J(r),r>=t.byteLength)return;let n=null;null!=e?(R(e),n=r+e>=t.byteLength?new Uint8Array(t,r):new Uint8Array(t,r,e)):n=new Uint8Array(t,r);return wt.decode(n)},writeString:function(t,r,e=0){G(t,\"buffer\"),q(r,\"str\"),J(e,\"offset\");const n=dt.encode(r),o=n.byteLength;if(e+o>t.byteLength)throw new Error(`offset + str.byteLength > buffer.byteLength:${e+o} > ${t.byteLength}`);new Uint8Array(t,e,n.byteLength).set(n)},writeArrayBuffer:function(t,r,e=0,n=0,o){G(t),G(r),_(e),_(n);const i=t.byteLength;if(e<-1*i)e=0;else if(e<0)e+=i;else if(e>=i)throw new Error(`Out of target Bounds: targetOffset(${e}) >= targetLength(${i})`);const s=r.byteLength;if(n<-1*s)n=0;else if(n<0)n+=s;else if(n>=s)throw new Error(`Out of data Bounds: dataOffset(${n}) >= dataArrayBufferLength(${s})`);null!=o&&(R(o,\"dataLength\"),n+o>s&&(o=void 0));const u=new Uint8Array(r,n,o);if(u.byteLength>i-e)throw new Error(`Out of target Bounds: from targetOffset(${e}), No Space to store dataArrayBuffer(${n}, ${o??\"NoLimit\"})`);new Uint8Array(t).set(u,e)}};const wt=new TextDecoder,dt=new TextEncoder;const mt=1e6;var bt={s2ns:1e9,ms2ns:mt,timestamp:function(){if(\"undefined\"!=typeof performance&&\"number\"==typeof performance.timeOrigin){const t=performance.timeOrigin,r=performance.now();return Math.ceil((t+r)/mt)}return Date.now()},timestamp64:At,lapseNano:Et,lapseMillis:Nt,timeoutNano:function(t,r){return Et(t)>r},timeoutMillis:function(t,r){return Nt(t)>r}};function At(){if(\"undefined\"!=typeof performance&&\"number\"==typeof performance.timeOrigin){const t=performance.timeOrigin,r=performance.now();return BigInt((t+r)*mt)}return BigInt(Date.now()*mt)}function Et(t,r){return(r??At())-t}function Nt(t,r){r=r??At();return BigInt(r-t)/BigInt(mt)}var $t={first:function(t,r){return D(t,\"arr\"),t[0]??r},chunk:function(t,r){if(D(t,\"array\"),R(r,\"size\"),t.length<=r)return t;const e=[];let n=0;for(;n<t.length;)e.push(t.slice(n,r+n)),n+=r;return e},last:function(t,r){return D(t,\"arr\"),t[t.length-1]??r},equals:function(t,r,e){if(!Array.isArray(t)||!Array.isArray(r))return!1;if(t.length!==r.length)return!1;for(let n=0;n<t.length;n++)if(e){if(0!==e(t[n],r[n]))return!1}else if(t[n]!==r[n])return!1;return!0},equalsIgnoreOrder:function(t,r,e){if(!Array.isArray(t)||!Array.isArray(r))return!1;if(t.length!==r.length)return!1;t.sort(e),r.sort(e);for(let n=0;n<t.length;n++)if(e){if(0!==e(t[n],r[n]))return!1}else if(t[n]!==r[n])return!1;return!0}};var vt={length:function(t){if(M.assertIterable(t),void 0!==t.length)return t.length;if(void 0!==t.size)return t.size;let r=0;for(const e of t)r++;return r}},Ot={_Error:r,AggregatedError:e,LangUtils:n,StringUtils:K,TypeUtils:u,TypeAssert:M,ExecUtils:rt,PromiseUtils:et,Lang:n,Type:u,Exec:rt,ClassProxyUtils:ut,InstanceProxyUtils:at,ReflectUtils:lt,TypedArrayUtils:yt,ArrayBufferUtils:gt,TimeUtils:bt,ArrayUtils:$t,IteratorUtils:vt};export{e as AggregatedError,gt as ArrayBufferUtils,$t as ArrayUtils,ut as ClassProxyUtils,rt as Exec,rt as ExecUtils,at as InstanceProxyUtils,vt as IteratorUtils,n as Lang,n as LangUtils,et as PromiseUtils,lt as ReflectUtils,K as StringUtils,bt as TimeUtils,u as Type,M as TypeAssert,u as TypeUtils,yt as TypedArrayUtils,r as _Error,Ot as default};\n//# sourceMappingURL=index-min.js.map\n","// module vars\nexport const DefaultMinInterval = 50\nexport const DefaultMaxInterval = 30 * 1000 // 30s\nexport const DefaultMaxRetries = 3\nexport default {\n DefaultMinInterval,\n DefaultMaxInterval,\n DefaultMaxRetries\n}\n","// internal\nimport { TypeAssert, TypeUtils } from '@creejs/commons-lang'\n// owned\nimport { DefaultMaxInterval, DefaultMinInterval } from './constants.js'\n\n// module vars\nconst { assertPositive, assertNotNegative } = TypeAssert\nconst { isNumber } = TypeUtils\n\nexport default class Policy {\n /**\n * Creates a new Policy instance with specified retry bounds.\n */\n constructor () {\n this._min = DefaultMinInterval\n this._max = DefaultMaxInterval\n this._nextInterval = this._min\n this._jitter = 0\n }\n\n get jitter () {\n return this._jitter\n }\n\n set jitter (jitter) {\n assertNotNegative(jitter, 'jitter')\n this._jitter = jitter\n }\n\n /**\n * Copies settings to target policy.\n * 1. range\n * 2. nextInterval value\n * @param {Policy} targetPolicy - The policy to modify.\n */\n copyPolicySettingTo (targetPolicy) {\n targetPolicy.range(this._min, this._max)\n targetPolicy._nextInterval = this._nextInterval\n }\n\n /**\n * Sets a fixed interval retry policy.\n }\n\n /**\n * Sets the minimum and maximum intervals for retries.\n * @param {number} min - Minimum delay in milliseconds (must be positive and less than max)\n * @param {number} max - Maximum delay in milliseconds (must be positive and greater than min)\n * @returns {this} Returns the Retrier instance for chaining\n * @throws {Error} If min is not less than max or if values are not positive\n */\n range (min, max) {\n assertPositive(min, 'min')\n assertPositive(max, 'max')\n if (min >= max) {\n throw new Error('min must < max')\n }\n this._min = min\n if (this._nextInterval < this._min) {\n this._nextInterval = this._min\n }\n this._max = max\n if (this._nextInterval > this._max) {\n this._nextInterval = this._max\n }\n return this\n }\n\n /**\n * Sets the minimum retry delay in milliseconds.\n * 1. will change currentInterval to min\n * @param {number} min - The minimum delay (must be positive and less than max).\n * @returns {this} The retrier instance for chaining.\n * @throws {Error} If min is not positive or is greater than/equal to max.\n */\n min (min) {\n assertPositive(min, 'min')\n if (min >= this._max) {\n throw new Error('min must < max')\n }\n this._min = min\n if (this._nextInterval < this._min) {\n this._nextInterval = this._min\n }\n return this\n }\n\n /**\n * Sets the maximum retry retry delay in milliseconds.\n * @param {number} max - The maximum delay (must be positive and greater than min).\n * @throws {Error} If max is not greater than min.\n * @returns {this} The retrier instance for chaining.\n */\n max (max) {\n assertPositive(max, 'max')\n if (max <= this._min) {\n throw new Error('max must > min')\n }\n this._max = max\n if (this._nextInterval > this._max) {\n this._nextInterval = this._max\n }\n return this\n }\n\n reset () {\n this._nextInterval = this._min\n return this\n }\n\n /**\n * Interval ms of next execution\n * @param {number} retries current retry times\n * @returns {number}\n */\n generate (retries) {\n const rtnVal = this._nextInterval\n this._increase(retries)\n return rtnVal\n }\n\n /**\n * @param {number} retries current retry times\n * @returns {number}\n */\n _increase (retries) {\n const generated = this._next(retries)\n if (!isNumber(generated)) {\n throw new Error('Generated Next Interval Not Number')\n }\n const nextInterval = this._jitter <= 0 ? generated : generated + Math.floor(Math.random() * this._jitter)\n if (nextInterval < this._min) {\n return (this._nextInterval = this._min)\n } else if (nextInterval > this._max) {\n return (this._nextInterval = this._max)\n }\n return (this._nextInterval = nextInterval)\n }\n\n /**\n * subclass should implement this method\n * @param {number} retries current retry times\n * @returns {number} The interval in milliseconds to wait before the next retry attempt.\n * @protected\n */\n _next (retries) {\n throw new Error('Not Impled Yet')\n }\n}\nexport { Policy }\n","var e={isFunction:t,isNil:n};function t(e){return\"function\"==typeof e}function n(e){return null==e}function s(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,n){if(!t(e))throw new Error(`${n?'\"'+n+'\" ':\"\"}Not Function: type=${typeof e} value=${i(e)}`)},assertNotNil:function(e,t){if(n(e))throw new Error((t?'\"'+t+'\" ':\"\")+\"Should Not Nil\")},assertString:function(e,t){if(!s(e))throw new Error(`${t?'\"'+t+'\" ':\"\"}Not String: type=${typeof e} value=${i(e)}`)},assertStringOrSymbol:function(e,t){if(!s(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){if(null===e)return\"null\";if(void 0===e)return\"undefined\";const t=typeof e;if(\"string\"===t)return e;if(\"symbol\"===t)return`Symbol(${e.description})`;if(\"function\"===t)return`Function ${e.name}(){}`;if(e instanceof String)return e.toString();if(Number.isNaN(e))return\"NaN\";if(e===1/0)return\"Infinity\";if(e===-1/0)return\"-Infinity\";if(e instanceof Error)return`${e.constructor.name}: ${e.message}`;if(e instanceof Promise)return\"Promise\";if(e instanceof Set)return`Set: ${i(Array.from(e))}`;if(e instanceof Map)return`Map: ${i(Array.from(e.entries()))}`;if(e instanceof RegExp)return e.toString();if(Array.isArray(e))return`[${e.map(i).join(\", \")}]`;let n;try{n=JSON.stringify(e)}catch(t){n=e.toString()}return n}new TextDecoder,new TextEncoder;const l=\"DOwner$#$\",{assertFunction:a,assertNotNil:o}=r;class c{constructor(e,t,n=!1){o(e,\"event\"),a(t,\"callback\"),this._event=e,this._callback=t,this._isOnce=!!n,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!1;for(const t of[...this._listeners])t.invoke(...e);return!0}emitOwner(e,...t){if(0===this._listeners.length)return!1;const n=this._owner2Listeners.get(e);if(null==n)return!1;for(const e of[...n])e.invoke(...t);return!0}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,!1,!1)}prependListener(e,t){return this._addListener(e,t,!1,!0)}addOnceListener(e,t){return this._addListener(e,t,!0,!1)}prependOnceListener(e,t){return this._addListener(e,t,!0,!0)}_addListener(e,t,n,s){if(u(e))return!1;f(e),this._callbacks.has(e)||this._callbacks.add(e),t=t??l;const r=new c(this,e,n);r.owner=t,s?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),!0}removeListener(e){if(u(e))return!1;if(!this._callbacks.has(e))return!1;this._callbacks.delete(e);const t=this._callback2Listeners.get(e);if(null==t)return!1;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 n=this._owner2Listeners.get(t);null!=n&&(n.delete(e),0===n.size&&this._owner2Listeners.delete(t))}return!0}_remove(e){const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1);const{callback:n}=e,s=this._callback2Listeners.get(n);null!=s&&(s.delete(e),0===s.size&&(this._callback2Listeners.delete(n),this._callbacks.delete(n)));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,n=this._callback2Listeners.get(t);null!=n&&(n.delete(e),0===n.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 n of b){const s=t[n];e[n]=s.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,n){return this.on(e,t,n)}prependListener(e,t,n){w(e),L(t),this._checkMaxListeners(e);return this._getOrCreateEvent(e).prependListener(t,n),this}prependOnceListener(e,t,n){w(e),L(t),this._checkMaxListeners(e);return this._getOrCreateEvent(e).prependOnceListener(t,n),this}emit(e,...t){const n=this._name2Event.get(e);return null!=n&&!n.isEmpty()&&(n.emit(...t),!0)}emitOwner(e,t,...n){if(null==t)throw new Error('Missing \"owner\"');const s=this._name2Event.get(e);return null!=s&&!s.isEmpty()&&(s.emitOwner(t,...n),!0)}eventNames(){return[...this._name2Event.keys()]}getMaxListeners(){return this._maxListeners}listenerCount(e,t){g(e,\"eventName\");const n=this._name2Event.get(e);return null==n||n.isEmpty()?0:n.listenerCount(t)}listeners(e){g(e,\"eventName\");const t=this._name2Event.get(e);return null==t||t.isEmpty()?[]:t.callbacks()}off(e,t){const n=this._name2Event.get(e);return null==n?this:(n.removeListener(t),n.isEmpty()?(this._name2Event.delete(e),this):this)}offAll(e,t){g(e,\"eventName\");const n=this._name2Event.get(e);return null==n?this:(n.removeAllListeners(t),n.isEmpty()?(this._name2Event.delete(e),this):this)}offOwner(e){p(e,\"owner\");const t=[...this._name2Event.values()];for(const n of t)n.removeAllListeners(e),n.isEmpty()&&this._name2Event.delete(n.name);return this}on(e,t,n){w(e),L(t),this._checkMaxListeners(e);return this._getOrCreateEvent(e).addListener(t,n),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,n){w(e),L(t);return this._getOrCreateEvent(e).addOnceListener(t,n),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!1;for(const t of this._name2Event.values())if(t.hasOwner(e))return!0;return!1}}export{k as EventEmitter,k as default};\n//# sourceMappingURL=index-min.js.map\n","export const Start = 'start' // retry started\nexport const Stop = 'stop' // retry stopped\nexport const Retry = 'retry' // one retry began\nexport const Success = 'success' // one task running succeeded\nexport const Failure = 'failure' // one task ran failed\nexport const Timeout = 'timeout' // total timeout\nexport const TaskTimeout = 'task-timeout' // one task timed out\nexport const Completed = 'complete' // all retries completed\nexport const MaxRetries = 'max-retries' // Reach the max retries\n\nexport default {\n Start,\n Retry,\n Success,\n Failure,\n Timeout,\n TaskTimeout,\n Stop,\n Completed,\n MaxRetries\n}\n","// 3rd\n// internal\nimport { TypeAssert } from '@creejs/commons-lang'\n// owned\nimport Policy from '../policy.js'\n// module vars\nconst { assertPositive } = TypeAssert\nexport default class FixedIntervalPolicy extends Policy {\n /**\n * Creates a fixed interval retry policy with the specified interval.\n * @param {number} interval - The fixed interval (in milliseconds) between retry attempts.\n */\n constructor (interval) {\n super()\n this.interval = interval\n }\n\n /**\n * @param {number} interval - The fixed interval (in milliseconds) between retry attempts.\n */\n set interval (interval) {\n assertPositive(interval, 'interval')\n this._interval = interval\n this._nextInterval = interval\n this._min = interval\n this._max = interval\n }\n\n /**\n * @returns {number}\n */\n get interval () {\n // @ts-ignore not possible be undefined\n return this._interval\n }\n\n /**\n * Interval ms of next execution\n * @param {number} retries\n * @returns {number}\n * @throws {Error} Always throws \"Not Implemented Yet\" error.\n */\n _next (retries) {\n return this.interval\n }\n}\n\nexport { FixedIntervalPolicy as FixedIntervalPolicyType }\n","// 3rd\n// internal\nimport { TypeAssert } from '@creejs/commons-lang'\n// owned\nimport Policy from '../policy.js'\n// module vars\nconst { assertPositive } = TypeAssert\nexport default class FixedIncreasePolicy extends Policy {\n /**\n * each call to _next() increases the interval by \"increasement\".\n * @param {number} increasement - The fixed interval (in milliseconds) between retry attempts.\n */\n constructor (increasement) {\n super()\n assertPositive(increasement, 'increasement')\n this._increasement = increasement\n }\n\n set increasement (increasement) {\n assertPositive(increasement, 'increasement')\n this._increasement = increasement\n }\n\n get increasement () {\n return this._increasement\n }\n\n /**\n * Interval ms of next execution\n * @param {number} retries\n * @returns {number}\n */\n _next (retries) {\n if (this._nextInterval >= this._max) {\n return this._max\n }\n return this._nextInterval + this.increasement\n }\n}\nexport { FixedIncreasePolicy as FixedIncreasePolicyType }\n","// 3rd\n// internal\nimport { TypeAssert } from '@creejs/commons-lang'\n// owned\nimport Policy from '../policy.js'\n// module vars\nconst { assertPositive } = TypeAssert\n\nexport default class FactoreIncreasePolicy extends Policy {\n /**\n * each call to _next() increases the interval by lastInterval * factor\n * @param {number} factor - the increasement factor, >= 1\n */\n constructor (factor) {\n super()\n assertPositive(factor, 'factor')\n if (factor < 1) {\n throw new Error('factor must be >= 1')\n }\n this._factor = factor\n }\n\n set factor (factor) {\n assertPositive(factor, 'factor')\n if (factor < 1) {\n throw new Error('factor must be >= 1')\n }\n this._factor = factor\n }\n\n get factor () {\n return this._factor\n }\n\n /**\n * Interval ms of next execution\n * @param {number} retries\n * @returns {number}\n */\n _next (retries) {\n if (this._nextInterval >= this._max) {\n return this._max\n }\n return this._nextInterval * this.factor\n }\n}\nexport { FactoreIncreasePolicy as FactoreIncreasePolicyType }\n","// 3rd\n// internal\nimport { TypeAssert } from '@creejs/commons-lang'\n\n// owned\nimport Policy from '../policy.js'\n// module vars\nconst { assertPositive } = TypeAssert\n\nexport default class ShuttlePolicy extends Policy {\n /**\n * the inteval value shuttles between min and max\n * @param {number} stepLength - the step length to change\n */\n constructor (stepLength) {\n super()\n assertPositive(stepLength, 'stepLength')\n this._stepLength = stepLength\n this.increasement = stepLength\n }\n\n set stepLength (stepLength) {\n assertPositive(stepLength, 'stepLength')\n this._stepLength = stepLength\n this.increasement = stepLength\n }\n\n get stepLength () {\n return this._stepLength\n }\n\n /**\n * Interval ms of next execution\n * @param {number} retries\n * @returns {number}\n * @throws {Error} Always throws \"Not Implemented Yet\" error.\n */\n _next (retries) {\n const nextInterval = this._nextInterval + this.increasement\n if (nextInterval >= this._max) {\n this.increasement = -this.stepLength\n return this._max\n } else if (nextInterval <= this._min) {\n this.increasement = this.stepLength\n return this._min\n }\n return nextInterval\n }\n}\n\nexport { ShuttlePolicy as ShuttlePolicyType }\n","// internal\nimport { TypeAssert } from '@creejs/commons-lang'\n// owned\nimport FixedInterval from './fixed-interval-policy.js'\n// module vars\nconst { assertNotNegative } = TypeAssert\n/**\n * @class FixedBackoff\n */\nexport default class FixedBackoff extends FixedInterval {\n /**\n * Creates a fixed backoff policy with optional jitter.\n * @param {number} fixedInterval - The fixed interval between retries in milliseconds.\n * @param {number} [jitter=500] - The maximum random jitter to add to the interval in milliseconds.\n */\n constructor (fixedInterval, jitter = 500) {\n super(fixedInterval)\n assertNotNegative(jitter, 'jitter')\n this._jitter = jitter ?? 500\n }\n}\n\nexport { FixedBackoff as FixedBackoffType }\n","// internal\nimport { TypeAssert } from '@creejs/commons-lang'\n// owned\nimport FactoreIncreasePolicy from './factor-increase-policy.js'\n\n// module vars\nconst { assertNotNegative } = TypeAssert\n/**\n * @class ExponentialBackoffPolicy\n */\nexport default class ExponentialBackoffPolicy extends FactoreIncreasePolicy {\n /**\n * Creates an exponential backoff policy with optional jitter.\n * @param {number} [jitter=500] - Maximum jitter in milliseconds to add to backoff intervals.\n */\n constructor (jitter = 500) {\n super(2)\n assertNotNegative(jitter, 'jitter')\n this._jitter = jitter ?? 500\n }\n}\n\nexport { ExponentialBackoffPolicy as ExponentialBackoffPolicyType }\n","// internal\nimport { TypeAssert } from '@creejs/commons-lang'\n// owned\nimport FixedIncreasePolicy from './fixed-increase-policy.js'\n// module vars\nconst { assertNotNegative } = TypeAssert\n/**\n * @class LinearBackoff\n */\nexport default class LinearBackoff extends FixedIncreasePolicy {\n /**\n * Creates a linear backoff policy with optional jitter.\n * @param {number} increasement - The base increasement value for backoff.\n * @param {number} [jitter=500] - The maximum jitter value to add to backoff (default: 500).\n */\n constructor (increasement, jitter = 500) {\n super(increasement)\n assertNotNegative(jitter, 'jitter')\n this._jitter = jitter ?? 500\n }\n}\n\nexport { LinearBackoff as LinearBackoffType }\n","import { TypeAssert } from '@creejs/commons-lang'\n// owned\n\n/**\n * @typedef {import('./retrier.js').default} Retrier\n */\n\n// module vars\nconst { assertNotNil, assertFunction } = TypeAssert\nexport default class Task {\n /**\n * Creates a new Task instance.\n * @param {Retrier} retrier - The retrier instance.\n * @param {Function} task - The function to be executed as the task.\n */\n constructor (retrier, task) {\n assertNotNil(retrier, 'retrier')\n assertFunction(task, 'task')\n this.retrier = retrier\n this.task = task\n this.result = undefined\n /** @type {Error|undefined} */\n this.error = undefined\n }\n\n get failed () {\n return this.error != null\n }\n\n get succeeded () {\n return this.error == null\n }\n\n /**\n * Executes the task with the given retry parameters.\n * 1. if execution throw error, keep error in this.error\n * 2. if execution return value, keep it in this.result\n * 3. always return Promise<void>\n * @param {number} retries - The number of retries attempted so far.\n * @param {number} latence - The current latency ms.\n * @param {number} nextInterval - The next interval ms.\n * @returns {Promise<void>} The result of the task execution.\n */\n async execute (retries, latence, nextInterval) {\n try {\n this.result = await this.task(retries, latence, nextInterval)\n this.error = undefined\n } catch (e) {\n this.error = e instanceof Error ? e : new Error(String(e))\n }\n }\n\n dispose () {\n // @ts-ignore\n this.retrier = undefined\n }\n}\n\nexport { Task as TaskType }\n","// owned\nimport Task from './task.js'\n\n/**\n * @typedef {import('./retrier.js').default} Retrier\n */\n\nexport default class AlwaysTask extends Task {\n /**\n * Checks if the given task is an instance of AlwaysTask.\n * @param {*} task - The task to check.\n * @returns {boolean} True if the task is an instance of AlwaysTask, false otherwise.\n */\n static isAlwaysTask (task) {\n return task instanceof AlwaysTask\n }\n\n /**\n * Creates an AlwaysTask instance.\n * @param {Retrier} retrier - The retrier instance to use for retry logic\n * @param {Function} task - The task function to execute\n * @param {boolean} resetRetryPolicyAfterSuccess - Whether to reset retry policy after successful execution\n */\n constructor (retrier, task, resetRetryPolicyAfterSuccess) {\n super(retrier, task)\n this.resetPolicy = resetRetryPolicyAfterSuccess\n }\n\n /**\n * Executes the task with the given retry parameters.\n * @param {number} retries - The number of retries attempted so far.\n * @param {number} latence - The current latency ms.\n * @param {number} nextInterval - The next interval ms.\n * @returns {Promise<*>} The result of the task execution.\n */\n async execute (retries, latence, nextInterval) {\n await super.execute(retries, latence, nextInterval)\n if (this.succeeded && this.resetPolicy) {\n this.retrier.resetRetryPolicy()\n }\n }\n}\n\nexport { AlwaysTask as AlwaysTaskType }\n","// owned\nimport Task from './task.js'\n\n/**\n * @typedef {import('./retrier.js').default} Retrier\n */\n\n/**\n * The task will execute forever despite of failure or success.\n * 1. Ignore Retrier total timeout setting\n * 2. Ignore Retrier max retries setting\n */\nexport default class ForeverTask extends Task {\n /**\n * Checks if the given task is an instance of ForeverTask.\n * @param {*} task - The task to check.\n * @returns {boolean} True if the task is an instance of ForeverTask, false otherwise.\n */\n static isForeverTask (task) {\n return task instanceof ForeverTask\n }\n\n /**\n * Creates an ForeverTask instance.\n * @param {Retrier} retrier - The retrier instance to use for retry logic\n * @param {Function} task - The task function to execute\n * @param {boolean} resetRetryPolicyAfterSuccess - Whether to reset retry policy after successful execution\n */\n constructor (retrier, task, resetRetryPolicyAfterSuccess) {\n super(retrier, task)\n this.resetPolicy = resetRetryPolicyAfterSuccess\n }\n\n /**\n * Executes the task with the given retry parameters.\n * @param {number} retries - The number of retries attempted so far.\n * @param {number} latence - The current latency ms.\n * @param {number} nextInterval - The next interval ms.\n * @returns {Promise<*>} The result of the task execution.\n */\n async execute (retries, latence, nextInterval) {\n await super.execute(retries, latence, nextInterval)\n if (this.succeeded && this.resetPolicy) {\n this.retrier.resetRetryPolicy()\n }\n }\n}\n\nexport { ForeverTask as AlwaysTaskType }\n","// internal\nimport { TypeAssert, TypeUtils, PromiseUtils } from '@creejs/commons-lang'\nimport { EventEmitter } from '@creejs/commons-events'\n\n// owned\nimport Event from './event.js'\nimport { DefaultMaxRetries } from './constants.js'\nimport FixedIntervalPolicy from './policy/fixed-interval-policy.js'\nimport FixedIncreasePolicy from './policy/fixed-increase-policy.js'\nimport FactoreIncreasePolicy from './policy/factor-increase-policy.js'\nimport ShuttlePolicy from './policy/shuttle-policy.js'\nimport FixedBackoff from './policy/fixed-backoff.js'\nimport ExponentialBackoffPolicy from './policy/exponential-backoff.js'\nimport LinearBackoff from './policy/linear-backoff.js'\nimport Task from './task.js'\nimport AlwaysTask from './alway-task.js'\nimport ForeverTask from './forever-task.js'\n\n/**\n * @typedef {import('./policy.js').default} Policy\n * @typedef {import('@creejs/commons-lang/types/promise-utils').Deferred} Deferred\n */\n\n// module vars\nconst { assertPositive, assertString, assertFunction, assertNumber } = TypeAssert\nconst { isNil } = TypeUtils\nconst TaskTimoutFlag = '!#@%$&^*'\n\n/**\n * @extends EventEmitter\n */\nexport default class Retrier {\n/**\n * Creates a new Retrier instance with the specified name.\n * @param {string} name - The name to assign to the retrier.\n * @returns {Retrier} A new Retrier instance with the given name.\n */\n static naming (name) {\n const retrier = new Retrier()\n retrier.name(name)\n return retrier\n }\n\n /**\n * Creates and returns a Retrier instance configured for infinite retries.\n * @returns {Retrier} A Retrier instance with infinite retry behavior.\n */\n static infinite () {\n const retrier = new Retrier()\n retrier.infinite()\n return retrier\n }\n\n /**\n * Creates a retrier configured to attempt an operation a specified number of times.\n * @param {number} times - The maximum number of retry attempts.\n * @returns {Retrier} A configured Retrier instance with the specified max retries.\n */\n static times (times) {\n const retrier = new Retrier()\n retrier.times(times)\n return retrier\n }\n\n /**\n * Alias for times.\n * @param {number} maxRetries - The maximum number of retry attempts.\n * @returns {Retrier} A configured Retrier instance with the specified max retries.\n */\n static maxRetries (maxRetries) {\n const retrier = new Retrier()\n retrier.maxRetries(maxRetries)\n return retrier\n }\n\n /**\n * Sets the minimum Interval for the retrier and returns the instance.\n * @param {number} min - The minimum Interval in milliseconds.\n * @returns {Retrier} The retrier instance with updated minimum Interval.\n */\n static min (min) {\n const retrier = new Retrier()\n retrier.min(min)\n return retrier\n }\n\n /**\n * Sets the maximum Interval for the retrier and returns the instance.\n * @param {number} max - The maximum Interval in milliseconds.\n * @returns {Retrier} The retrier instance with updated maximum Interval.\n */\n static max (max) {\n const retrier = new Retrier()\n retrier.max(max)\n return retrier\n }\n\n /**\n * Creates a retrier with the specified Interval range.\n * @param {number} min - Minimum Interval.\n * @param {number} max - Maximum Interval.\n * @returns {Retrier} A new Retrier instance configured with specified Interval range.\n */\n static range (min, max) {\n const retrier = new Retrier()\n retrier.range(min, max)\n return retrier\n }\n\n /**\n * Creates a retrier with a fixed interval between attempts.\n * @param {number} fixedInterval - The fixed interval in milliseconds between retry attempts.\n * @returns {Retrier} A new Retrier instance configured with the specified fixed interval.\n */\n static fixedInterval (fixedInterval) {\n const retrier = new Retrier()\n retrier.fixedInterval(fixedInterval)\n return retrier\n }\n\n /**\n * Creates a retrier with a fixed backoff strategy.\n * @param {number} fixedInterval - The fixed interval between retries in milliseconds.\n * @param {number} [jitter=500] - The maximum jitter to add to the interval in milliseconds.\n * @returns {Retrier} A retrier instance configured with fixed backoff.\n */\n static fixedBackoff (fixedInterval, jitter = 500) {\n const retrier = new Retrier()\n retrier.fixedBackoff(fixedInterval, jitter)\n return retrier\n }\n\n /**\n * Creates a retrier with a fixed increase strategy.\n * @param {number} increasement - The fixed amount to increase on each retry.\n * @returns {Retrier} A retrier instance configured with fixed increase.\n */\n static fixedIncrease (increasement) {\n const retrier = new Retrier()\n retrier.fixedIncrease(increasement)\n return retrier\n }\n\n /**\n * Creates a retrier with a fixed increase strategy.\n * @param {number} increasement - The fixed amount to increase on each retry.\n * @param {number} [jitter=500] - The maximum jitter to add to the interval in milliseconds.\n * @returns {Retrier} A retrier instance configured with fixed increase.\n */\n static linearBackoff (increasement, jitter = 500) {\n const retrier = new Retrier()\n retrier.linearBackoff(increasement, jitter)\n return retrier\n }\n\n /**\n * Creates a new Retrier instance with factor-increase strategy.\n * @param {number} factor - The factor by which to increase the interval on each retry.\n * @returns {Retrier} A new Retrier instance with factor-increase strategy.\n */\n static factorIncrease (factor) {\n const retrier = new Retrier()\n retrier.factorIncrease(factor)\n return retrier\n }\n\n /**\n * Creates a new Retrier instance with exponential-backoff strategy.\n * @param {number} [jitter=500]\n * @returns {Retrier} A new Retrier instance\n */\n static exponentialBackoff (jitter = 500) {\n const retrier = new Retrier()\n retrier.exponentialBackoff(jitter)\n return retrier\n }\n\n /**\n * Creates a Retrier instance with a shuttle-interval strategt.\n * @param {number} stepLength - The interval step length of each change\n * @returns {Retrier} A configured Retrier instance with shuttle-interval strategt.\n */\n static shuttleInterval (stepLength) {\n const retrier = new Retrier()\n retrier.shuttleInterval(stepLength)\n return retrier\n }\n\n /**\n * Creates a Retrier instance with a total-opertion timeout.\n * @param {number} timeout - The timeout value in milliseconds.\n * @returns {Retrier} A Retrier instance configured with the given timeout.\n */\n static timeout (timeout) {\n const retrier = new Retrier()\n retrier.timeout(timeout)\n return retrier\n }\n\n /**\n * Creates a retrier instance with a single-task timeout.\n * @param {number} timeout - The timeout duration in milliseconds for the retrier task.\n * @returns {Retrier} A Retrier instance configured with the given task timeout.\n */\n static taskTimeout (timeout) {\n const retrier = new Retrier()\n retrier.taskTimeout(timeout)\n return retrier\n }\n\n /**\n * Creates a new Retrier instance, sets the task to be retried, and starts the retry process.\n * @param {Function} task - The asynchronous task static to be retried.\n * @returns {Promise<*>} A promise that resolves when the retry process completes.\n */\n static start (task) {\n const retrier = new Retrier()\n retrier.task(task)\n return retrier.start()\n }\n\n /**\n * Creates a new Retrier instance with a fixed interval policy.\n * @param {number} [fixedInterval=1000] - The fixed interval in milliseconds between retry attempts. Defaults to 1000ms if not provided.\n */\n constructor (fixedInterval) {\n EventEmitter.mixin(this)\n /**\n * @type {Policy}\n */\n this._policy = new FixedIntervalPolicy(fixedInterval ?? 1000)\n this._maxRetries = DefaultMaxRetries\n this._currentRetries = 1\n /**\n * Timetou for total operation\n * @type {number}\n */\n this._timeout = 120000 // 120s\n /**\n * Timetou for single task\n */\n this._taskTimeout = 2000 // 20s\n this._name = 'unamed' // Retrier name\n\n /**\n * A Deferred Object as Singal to prevent Task concurrent start\n * @type {Deferred|undefined}\n */\n this._taskingFlag = undefined\n\n /**\n * A Deferred Object as Singal to prevent Task concurrent stop\n * @type {Deferred|undefined}\n */\n this._breakFlag = undefined\n /**\n * Reason for break\n * @type {Error|undefined}\n */\n this._breakReason = undefined\n }\n\n get running () {\n return !isNil(this._taskingFlag)\n }\n\n /**\n * Sets the name of the retrier.\n * @param {string} retrierName - The name to assign to the retrier.\n * @returns {this} The retrier instance for chaining.\n */\n name (retrierName) {\n assertString(retrierName, 'name')\n this._assertChangeable(retrierName)\n this._name = retrierName\n return this\n }\n\n /**\n * Sets the retry attempts to be infinite by setting max retries to maximum safe integer.\n * @returns {this} The retrier instance for chaining.\n */\n infinite () {\n this._assertChangeable('infinite')\n this._maxRetries = Infinity\n return this\n }\n\n /**\n * Sets the maximum number of retry attempts.\n * @param {number} times - The maximum number of retries.\n * @returns {this} The Retrier instance for chaining.\n */\n times (times) {\n this._assertChangeable('times')\n return this.maxRetries(times)\n }\n\n /**\n * Sets the maximum number of retry attempts.\n * @param {number} maxRetries - The maximum number of retries (must be positive).\n * @returns {this} The retrier instance for chaining.\n */\n maxRetries (maxRetries) {\n assertPositive(maxRetries, 'maxRetries')\n this._assertChangeable('maxRetries')\n this._maxRetries = maxRetries\n return this\n }\n\n /**\n * Sets the minimum retry delay in milliseconds.\n * @param {number} min - The minimum delay (must be positive and less than max).\n * @returns {this} The retrier instance for chaining.\n * @throws {Error} If min is not positive or is greater than/equal to max.\n */\n min (min) {\n this._assertChangeable('min')\n this._policy.min(min)\n return this\n }\n\n /**\n * Sets the maximum retry retry delay in milliseconds.\n * @param {number} max - The maximum delay (must be positive and greater than min).\n * @throws {Error} If max is not greater than min.\n * @returns {this} The retrier instance for chaining.\n */\n max (max) {\n this._assertChangeable('max')\n this._policy.max(max)\n return this\n }\n\n /**\n * Sets the minimum and maximum intervals for retries.\n * @param {number} min - Minimum delay in milliseconds (must be positive and less than max)\n * @param {number} max - Maximum delay in milliseconds (must be positive and greater than min)\n * @returns {Retrier} Returns the Retrier instance for chaining\n * @throws {Error} If min is not less than max or if values are not positive\n */\n range (min, max) {\n this._assertChangeable('range')\n this._policy.range(min, max)\n return this\n }\n\n /**\n * Sets a fixed interval retry policy.\n * @param {number} fixedInterval - The fixed interval in milliseconds between retries.\n * @returns {Retrier} The Retrier instance for chaining.\n */\n fixedInterval (fixedInterval) {\n this._assertChangeable('fixedInterval')\n const oldPolicy = this._policy\n if (oldPolicy instanceof FixedIntervalPolicy) {\n oldPolicy.interval = fixedInterval\n return this\n }\n const newPolicy = new FixedIntervalPolicy(fixedInterval)\n oldPolicy?.copyPolicySettingTo(newPolicy)\n newPolicy.reset()\n this._policy = newPolicy\n return this\n }\n\n /**\n * sets a fixed backoff strategy.\n * @param {number} fixedInterval - The fixed interval between retries in milliseconds.\n * @param {number} [jitter=500] - The maximum jitter to add to the interval in milliseconds.\n * @returns {Retrier} A retrier instance configured with fixed backoff.\n */\n fixedBackoff (fixedInterval, jitter = 500) {\n this._assertChangeable('fixedBackoff')\n const oldPolicy = this._policy\n if (oldPolicy instanceof FixedIntervalPolicy) {\n oldPolicy.interval = fixedInterval\n oldPolicy.jitter = jitter\n return this\n }\n const newPolicy = new FixedBackoff(fixedInterval, jitter)\n oldPolicy?.copyPolicySettingTo(newPolicy)\n newPolicy.reset()\n this._policy = newPolicy\n return this\n }\n\n /**\n * Sets a fixed increase policy for retry intervals.\n * @param {number} increasement - The fixed amount to increase the interval by on each retry.\n * @returns {this} The retrier instance for chaining.\n */\n fixedIncrease (increasement) {\n this._assertChangeable('fixedIncrease')\n const oldPolicy = this._policy\n if (oldPolicy instanceof FixedIncreasePolicy) {\n oldPolicy.increasement = increasement\n return this\n }\n const newPolicy = new FixedIncreasePolicy(increasement)\n oldPolicy?.copyPolicySettingTo(newPolicy)\n newPolicy.reset()\n this._policy = newPolicy\n return this\n }\n\n /**\n * Sets a fixed increase policy for retry intervals.\n * @param {number} increasement - The fixed amount to increase the interval by on each retry.\n * @param {number} [jitter=500] - The maximum jitter to add to the interval in milliseconds.\n * @returns {this} The retrier instance for chaining.\n */\n linearBackoff (increasement, jitter = 500) {\n this._assertChangeable('linearBackoff')\n const oldPolicy = this._policy\n if (oldPolicy instanceof LinearBackoff) {\n oldPolicy.increasement = increasement\n oldPolicy.jitter = jitter\n return this\n }\n const newPolicy = new LinearBackoff(increasement, jitter)\n oldPolicy?.copyPolicySettingTo(newPolicy)\n newPolicy.reset()\n this._policy = newPolicy\n return this\n }\n\n /**\n * Sets a fixed increase factor for retry delays.\n * @param {number} factor - The multiplier for delay increase between retries.\n * @returns {this} The retrier instance for method chaining.\n */\n factorIncrease (factor) {\n this._assertChangeable('factorIncrease')\n const oldPolicy = this._policy\n if (oldPolicy instanceof FactoreIncreasePolicy) {\n oldPolicy.factor = factor\n return this\n }\n const newPolicy = new FactoreIncreasePolicy(factor)\n oldPolicy?.copyPolicySettingTo(newPolicy)\n newPolicy.reset()\n this._policy = newPolicy\n return this\n }\n\n /**\n * Creates a new Retrier instance with exponential-backoff strategy.\n * @param {number} [jitter]\n * @returns {Retrier} A new Retrier instance\n */\n exponentialBackoff (jitter = 500) {\n this._assertChangeable('exponentialBackoff')\n const oldPolicy = this._policy\n if (oldPolicy instanceof ExponentialBackoffPolicy) {\n oldPolicy.jitter = jitter\n return this\n }\n const newPolicy = new ExponentialBackoffPolicy(jitter)\n oldPolicy?.copyPolicySettingTo(newPolicy)\n newPolicy.reset()\n this._policy = newPolicy\n return this\n }\n\n /**\n * Sets a shuttle retry policy with the given step length.\n * @param {number} stepLength - The interval between retry attempts.\n * @returns {this} The Retrier instance for chaining.\n */\n shuttleInterval (stepLength) {\n this._assertChangeable('shuttleInterval')\n const oldPolicy = this._policy\n if (oldPolicy instanceof ShuttlePolicy) {\n oldPolicy.stepLength = stepLength\n return this\n }\n const newPolicy = new ShuttlePolicy(stepLength)\n oldPolicy?.copyPolicySettingTo(newPolicy)\n newPolicy.reset()\n this._policy = newPolicy\n return this\n }\n\n /**\n * Sets the timeout duration for each Task execution.\n * 1. must > 0\n * @param {number} timeout - The timeout duration in milliseconds.\n * @returns {this} The retrier instance for chaining.\n */\n taskTimeout (timeout) {\n assertPositive(timeout, 'taskTimeout')\n this._assertChangeable('taskTimeout')\n this._taskTimeout = timeout\n return this\n }\n\n /**\n * Sets the timeout duration for all retries.\n * 1. <= 0 - no timeout\n * 2. \\> 0 - timeout duration in milliseconds\n * @param {number} timeout - The timeout duration in milliseconds.\n * @returns {this} The retrier instance for chaining.\n */\n timeout (timeout) {\n assertNumber(timeout, 'timeout')\n this._assertChangeable('timeout')\n this._timeout = timeout\n return this\n }\n\n /**\n * Disables the timeout for the retrier.\n * @returns {this} The retrier instance for chaining.\n */\n noTimeout () {\n this._assertChangeable('noTimeout')\n this._timeout = 0\n return this\n }\n\n /**\n * Sets the task function to be retried.\n * @param {Function} task - The function to be executed and retried on failure.\n * @returns {this} Returns the retrier instance for chaining.\n */\n task (task) {\n assertFunction(task, 'task')\n this._assertChangeable('task')\n this._task = new Task(this, task)\n return this\n }\n\n /**\n * alias of {@linkcode Retrier.task()}\n * @param {Function} task - The function to be executed and retried\n * @return {this}\n */\n retry (task) {\n this._assertChangeable('retry')\n this.task(task)\n return this\n }\n\n /**\n * Executes the given task, and never stop\n * 1. if the task fails, will retry it after the interval generated by RetryPolicy\n * 2. if the task succeeds, reset RetryPolicy to Minimum Interval and continue to run the task\n * @param {Function} task - The async function to execute and retry.\n * @param {boolean} [resetAfterSuccess=true] - Whether to reset retry counters after success.\n * @returns {this} The Retrier instance for chaining.\n */\n always (task, resetAfterSuccess = true) {\n this._assertChangeable('always')\n this._task = new AlwaysTask(this, task, resetAfterSuccess)\n return this\n }\n\n /**\n *The task will execute forever despite of failure or success.\n * 1. call notimeout(), override and ignore Retrier total timeout setting\n * 2. call infinite(), override and ignore Retrier max retries setting\n * @param {Function} task\n * @param {boolean} [resetAfterSuccess=true]\n * @returns\n */\n forever (task, resetAfterSuccess = true) {\n this._assertChangeable('forever')\n this.noTimeout()\n this.infinite()\n this._task = new ForeverTask(this, task, resetAfterSuccess)\n return this\n }\n\n /**\n * Starts the retry process.\n * @returns {Promise<*>}\n */\n async start () {\n if (this._task == null) {\n throw new Error('No Task to Retry')\n }\n if (this._taskingFlag != null) {\n return this._taskingFlag.promise\n }\n this._taskingFlag = PromiseUtils.defer()\n\n if (ForeverTask.isForeverTask(this._task)) {\n // DO NOT care ForeverTask's result\n this._executeForeverTask(this._task)\n this._taskingFlag.resolve()\n } else {\n // Resovle taskingFlag.promise in method _executeEndableTask()\n this._executeEndableTask(this._task)\n }\n return this._taskingFlag.promise\n }\n\n /**\n * Force an execution immediately.\n */\n wakeup () {\n if (!this.running) {\n this.start()\n return\n }\n if (this._sleepWaiter != null) {\n this._sleepWaiter.wakeup()\n }\n }\n\n /**\n * Stops the retrier with an optional reason. If already stopping, returns the existing break promise.\n * @param {Error} [reason] - Optional reason for stopping (defaults to 'Manually Stop' error).\n * @returns {Promise<void>} A promise that resolves when the retrier has fully stopped.\n */\n async stop (reason) {\n // @ts-ignore\n this.emit(Event.Stop, reason)\n if (this._taskingFlag == null) {\n return // no task running\n }\n if (this._breakFlag != null) {\n // @ts-ignore\n return this._breakFlag.promise\n }\n // kick off\n if (this._sleepWaiter != null) {\n this._sleepWaiter.wakeup()\n }\n this._breakFlag = PromiseUtils.defer()\n /** @type {Error|undefined} */\n this._breakReason = reason ?? new Error('Manually Stop')\n // @ts-ignore\n this.once(Event.Completed, () => {\n this._breakFlag?.resolve()\n })\n\n this._breakFlag.promise.finally(() => {\n this._breakFlag = undefined\n this._breakReason = undefined\n this._taskingFlag = undefined\n })\n return this._breakFlag.promise\n }\n\n /**\n * Resets the retry policy to its initial state.\n */\n resetRetryPolicy () {\n this._policy.reset()\n }\n\n /**\n * Registers a listener function to be called on \"retry\" events.\n * @param {Function} listener - The callback function\n * @returns {this}\n */\n onRetry (listener) {\n // @ts-ignore\n this.on(Event.Retry, listener)\n return this\n }\n\n /**\n * Registers a listener for \"error\" events.\n * @param {Function} listener - The callback function\n * @returns {this}\n */\n onError (listener) {\n // @ts-ignore\n this.on(Event.Error, listener)\n return this\n }\n\n /**\n * Registers a listener for \"failure\" events.\n * @param {Function} listener - The callback function\n * @returns {this}\n */\n onFailure (listener) {\n // @ts-ignore\n this.on(Event.Failure, listener)\n return this\n }\n\n /**\n * Registers a listener for \"success\" events.\n * @param {Function} listener - The callback function\n * @returns {this}\n */\n onSuccess (listener) {\n // @ts-ignore\n this.on(Event.Success, listener)\n return this\n }\n\n /**\n * Registers a listener for \"start\" events.\n * @param {Function} listener - The callback function\n * @returns {this}\n */\n onStart (listener) {\n // @ts-ignore\n this.on(Event.Start, listener)\n return this\n }\n\n /**\n * Registers a listener for \"stop\" events.\n * @param {Function} listener - The callback function\n * @returns {this}\n */\n onStop (listener) {\n // @ts-ignore\n this.on(Event.Stop, listener)\n return this\n }\n\n /**\n * Registers a listener for \"timeout\" events.\n * @param {Function} listener - The callback function\n */\n onTimeout (listener) {\n // @ts-ignore\n this.on(Event.Timeout, listener)\n return this\n }\n\n /**\n * Registers a listener for \"task-timeout\" events.\n * @param {Function} listener - The callback function\n * @returns {this}\n */\n onTaskTimeout (listener) {\n // @ts-ignore\n this.on(Event.TaskTimeout, listener)\n return this\n }\n\n /**\n * Registers a listener for \"completed\" events.\n * @param {Function} listener - The callback function\n */\n onCompleted (listener) {\n // @ts-ignore\n this.on(Event.Completed, listener)\n return this\n }\n\n /**\n * Registers a listener for the 'MaxRetries' event.\n * @param {Function} listener - The callback function to be executed when max retries are reached.\n * @returns {this}\n */\n onMaxRetries (listener) {\n // @ts-ignore\n this.on(Event.MaxRetries, listener)\n return this\n }\n\n /**\n *\n * @param {Task} task\n * @returns {Promise<void>}\n */\n async _executeForeverTask (task) {\n if (this._taskingFlag == null) {\n throw new Error('Must be called in start()')\n }\n const startAt = Date.now()\n // @ts-ignore\n this.emit(Event.Start, startAt)\n let latency = null\n\n while (true) {\n // need to stop?\n if (this._breakFlag != null) {\n const spent = Date.now() - startAt\n // @ts-ignore\n this.emit(Event.Completed, this._currentRetries, spent)\n break\n }\n latency = Date.now() - startAt\n // @ts-ignore\n this.emit(Event.Retry, this._currentRetries, latency)\n const nextDelay = this._policy.generate(this._currentRetries)\n try {\n try {\n await PromiseUtils.timeout(task.execute(this._currentRetries, latency, nextDelay), this._taskTimeout, TaskTimoutFlag)\n } catch (err) {\n // @ts-ignore\n if (err.message === TaskTimoutFlag) {\n // @ts-ignore\n this.emit(Event.TaskTimeout, this._currentRetries, latency, this._taskTimeout)\n }\n throw err\n }\n // @ts-ignore\n if (task.failed) {\n throw task.error\n }\n const rtnVal = task.result\n // @ts-ignore\n this.emit(Event.Success, rtnVal, this._currentRetries, latency)\n // continue to run the task\n } catch (e) {\n // @ts-ignore\n this.emit(Event.Failure, e, this._currentRetries, latency)\n }\n // compute next retry counter\n ++this._currentRetries\n // use Waiter to introduce the ability to wakeup at any time\n this._sleepWaiter = PromiseUtils.wait(nextDelay)\n await this._sleepWaiter.promise\n }\n }\n\n /**\n * @param {Task} task\n * @returns {Promise<any>}\n */\n async _executeEndableTask (task) {\n if (this._taskingFlag == null) {\n throw new Error('Must be called in start()')\n }\n const startAt = Date.now()\n /** @type {Error|undefined} */\n let lastError\n // @ts-ignore\n this.emit(Event.Start, startAt)\n let latency = null\n\n /**\n * DO NOT worry about \"while(true)\", we will not be trapped in an infinite loop.\n *\n * \"async\" keyword ensures:\n * 1. call start(), will enfore the first loop executed\n * 2. when first \"await\" is encountered, \"while(true)\" loop hanged to wait\n * 3. \"async\" will return a Promise when \"while(true)\" loop hanged\n * 4. Returned \"async\" wrapper Promise, it is NOT \"this._taskingFlag.promise\"\n */\n while (true) {\n // need to stop?\n if (this._breakFlag != null) {\n this._taskingFlag.reject(this._breakReason ?? new Error('Have Been Broken'))\n break\n }\n\n latency = Date.now() - startAt\n\n // total timeout?\n if (!isInfinite(this._timeout) && latency >= this._timeout) { // total timeout\n // @ts-ignore\n this.emit(Event.Timeout, this._currentRetries, latency, this._timeout)\n // always task, treat as success, resolve the whole promise with <void>\n if (AlwaysTask.isAlwaysTask(this._task)) {\n this._taskingFlag.resolve()\n break\n }\n this._taskingFlag.reject(lastError ?? new Error(`Timeout \"${this._timeout}\" Exceeded`))\n break\n }\n\n // @ts-ignore\n this.emit(Event.Retry, this._currentRetries, latency)\n const nextDelay = this._policy.generate(this._currentRetries)\n try {\n try {\n await PromiseUtils.timeout(task.execute(this._currentRetries, latency, nextDelay), this._taskTimeout, TaskTimoutFlag)\n } catch (err) {\n // @ts-ignore\n if (err.message === TaskTimoutFlag) {\n // @ts-ignore\n this.emit(Event.TaskTimeout, this._currentRetries, latency, this._taskTimeout)\n }\n throw err\n }\n // @ts-ignore\n if (task.failed) {\n lastError = task.error\n throw task.error\n }\n const rtnVal = task.result\n // @ts-ignore\n this.emit(Event.Success, rtnVal, this._currentRetries, latency)\n\n // Not AwaysTask, we can finish all the retries with success\n if (!AlwaysTask.isAlwaysTask(task)) {\n this._taskingFlag.resolve(rtnVal)\n break\n }\n // AwaysTask, continue to run the task\n } catch (e) {\n // @ts-ignore\n this.emit(Event.Failure, e, this._currentRetries, latency)\n }\n const nextRetries = ++this._currentRetries\n // next retry, max retries reached?\n if (this._currentRetries > this._maxRetries) {\n // @ts-ignore\n this.emit(Event.MaxRetries, nextRetries, this._maxRetries)\n // always task, treat as success, resolve the whole promise with <void>\n if (AlwaysTask.isAlwaysTask(task)) {\n this._taskingFlag.resolve()\n break\n }\n this._taskingFlag.reject(lastError ?? new Error(`Max Retries Exceeded, Retring ${this._currentRetries} times > max ${this._maxRetries}`))\n break\n }\n // use Waiter to introduce the ability to wakeup at any time\n this._sleepWaiter = PromiseUtils.wait(nextDelay)\n await this._sleepWaiter.promise\n // await PromiseUtils.delay(nextDelay)\n }\n this._taskingFlag.promise.finally(() => {\n this.resetRetryPolicy()\n this._taskingFlag = undefined\n const spent = Date.now() - startAt\n // @ts-ignore\n this.emit(Event.Completed, this._currentRetries, spent)\n })\n if (AlwaysTask.isAlwaysTask(this._task)) {\n return // always task, resolve with <void>\n }\n // normal retry task, return the task's result\n return this._taskingFlag.promise\n }\n\n /**\n * Assert if can change param's value\n * @param {string} param\n */\n _assertChangeable (param) {\n if (this._taskingFlag != null) {\n throw new Error(`No Change \"${param}\" After Retrier Started`)\n }\n }\n}\n\n/**\n * Checks if a value represents infinity or a non-positive number.\n * @param {number} value - The value to check\n * @returns {boolean} True if the value is <= 0 or Infinity, false otherwise\n */\nfunction isInfinite (value) {\n return value <= 0 || value === Infinity\n}\n\nexport { Retrier }\n","// owned\nimport Retrier from './retrier.js'\n/**\n * Creates a new Retrier instance with the specified name.\n * @param {string} name - The name to assign to the retrier.\n * @returns {Retrier} A new Retrier instance with the given name.\n */\nfunction name (name) {\n const retrier = new Retrier()\n retrier.name(name)\n return retrier\n}\n\n/**\n * Creates and returns a Retrier instance configured for infinite retries.\n * @returns {Retrier} A Retrier instance with infinite retry behavior.\n */\nfunction infinite () {\n const retrier = new Retrier()\n retrier.infinite()\n return retrier\n}\n\n/**\n * Creates a retrier configured to attempt an operation a specified number of times.\n * @param {number} times - The maximum number of retry attempts.\n * @returns {Retrier} A configured Retrier instance with the specified max retries.\n */\nfunction times (times) {\n const retrier = new Retrier()\n retrier.times(times)\n return retrier\n}\n\n/**\n * Alias for times.\n * @param {number} maxRetries - The maximum number of retry attempts.\n * @returns {Retrier} A configured Retrier instance with the specified max retries.\n */\nfunction maxRetries (maxRetries) {\n const retrier = new Retrier()\n retrier.maxRetries(maxRetries)\n return retrier\n}\n\n/**\n * Sets the minimum Interval for the retrier and returns the instance.\n * @param {number} min - The minimum Interval in milliseconds.\n * @returns {Retrier} The retrier instance with updated minimum Interval.\n */\nfunction min (min) {\n const retrier = new Retrier()\n retrier.min(min)\n return retrier\n}\n\n/**\n * Sets the maximum Interval for the retrier and returns the instance.\n * @param {number} max - The maximum Interval in milliseconds.\n * @returns {Retrier} The retrier instance with updated maximum Interval.\n */\nfunction max (max) {\n const retrier = new Retrier()\n retrier.max(max)\n return retrier\n}\n\n/**\n * Creates a retrier with the specified Interval range.\n * @param {number} min - Minimum Interval.\n * @param {number} max - Maximum Interval.\n * @returns {Retrier} A new Retrier instance configured with specified Interval range.\n */\nfunction range (min, max) {\n const retrier = new Retrier()\n retrier.range(min, max)\n return retrier\n}\n\n/**\n * Creates a retrier with a fixed interval between attempts.\n * @param {number} fixedInterval - The fixed interval in milliseconds between retry attempts.\n * @returns {Retrier} A new Retrier instance configured with the specified fixed interval.\n */\nfunction fixedInterval (fixedInterval) {\n const retrier = new Retrier()\n retrier.fixedInterval(fixedInterval)\n return retrier\n}\n\n/**\n * Creates a retrier with a fixed backoff strategy.\n * @param {number} fixedInterval - The fixed interval between retries in milliseconds.\n * @param {number} [jitter=500] - The maximum jitter to add to the interval in milliseconds.\n * @returns {Retrier} A retrier instance configured with fixed backoff.\n */\nfunction fixedBackoff (fixedInterval, jitter = 500) {\n const retrier = new Retrier()\n retrier.fixedBackoff(fixedInterval, jitter)\n return retrier\n}\n\n/**\n * Creates a retrier with a fixed increase strategy.\n * @param {number} increasement - The fixed amount to increase on each retry.\n * @returns {Retrier} A retrier instance configured with fixed increase.\n */\nfunction fixedIncrease (increasement) {\n const retrier = new Retrier()\n retrier.fixedIncrease(increasement)\n return retrier\n}\n\n/**\n * Creates a retrier with a fixed increase strategy.\n * @param {number} increasement - The fixed amount to increase on each retry.\n * @param {number} [jitter=500] - The maximum jitter to add to the interval in milliseconds.\n * @returns {Retrier} A retrier instance configured with fixed increase.\n */\nfunction linearBackoff (increasement, jitter = 500) {\n const retrier = new Retrier()\n retrier.linearBackoff(increasement, jitter)\n return retrier\n}\n\n/**\n * Creates a new Retrier instance with factor-increase strategy.\n * @param {number} factor - The factor by which to increase the interval on each retry.\n * @returns {Retrier} A new Retrier instance with factor-increase strategy.\n */\nfunction factorIncrease (factor) {\n const retrier = new Retrier()\n retrier.factorIncrease(factor)\n return retrier\n}\n\n/**\n * Creates a new Retrier instance with exponential-backoff strategy.\n * @param {number} [jitter=500]\n * @returns {Retrier} A new Retrier instance\n */\nfunction exponentialBackoff (jitter = 500) {\n const retrier = new Retrier()\n retrier.exponentialBackoff(jitter)\n return retrier\n}\n\n/**\n * Creates a Retrier instance with a shuttle-interval strategt.\n * @param {number} stepLength - The interval step length of each change\n * @returns {Retrier} A configured Retrier instance with shuttle-interval strategt.\n */\nfunction shuttleInterval (stepLength) {\n const retrier = new Retrier()\n retrier.shuttleInterval(stepLength)\n return retrier\n}\n\n/**\n * Creates a Retrier instance with a total-opertion timeout.\n * @param {number} timeout - The timeout value in milliseconds.\n * @returns {Retrier} A Retrier instance configured with the given timeout.\n */\nfunction timeout (timeout) {\n const retrier = new Retrier()\n retrier.timeout(timeout)\n return retrier\n}\n\n/**\n * Creates a retrier instance with a single-task timeout.\n * @param {number} timeout - The timeout duration in milliseconds for the retrier task.\n * @returns {Retrier} A Retrier instance configured with the given task timeout.\n */\nfunction taskTimeout (timeout) {\n const retrier = new Retrier()\n retrier.taskTimeout(timeout)\n return retrier\n}\n\n/**\n * Creates a new Retrier instance, sets the task to be retried, and starts the retry process.\n * @param {Function} task - The asynchronous task function to be retried.\n * @returns {Promise<*>} A promise that resolves when the retry process completes.\n */\nfunction start (task) {\n const retrier = new Retrier()\n retrier.task(task)\n return retrier.start()\n}\n\n/**\n *\n * @param {Function} task\n * @returns {Retrier}\n */\nfunction retry (task) {\n const retrier = new Retrier()\n retrier.retry(task)\n return retrier\n}\n\n/**\n *\n * @param {Function} task\n * @returns {Retrier}\n */\nfunction always (task) {\n const retrier = new Retrier()\n retrier.always(task)\n return retrier\n}\n\n/**\n *\n * @param {Function} task\n * @returns {Retrier}\n */\nfunction forever (task) {\n const retrier = new Retrier()\n retrier.forever(task)\n return retrier\n}\n\n// default export\nexport default {\n retry,\n always,\n forever,\n name,\n infinite,\n times,\n maxRetries,\n min,\n max,\n range,\n fixedInterval,\n fixedBackoff,\n fixedIncrease,\n linearBackoff,\n factorIncrease,\n exponentialBackoff,\n shuttleInterval,\n timeout,\n taskTimeout,\n start\n}\n\n// named export\nexport {\n name,\n infinite,\n times,\n maxRetries,\n min,\n max,\n range,\n fixedInterval,\n fixedBackoff,\n fixedIncrease,\n linearBackoff,\n factorIncrease,\n exponentialBackoff,\n shuttleInterval,\n timeout,\n taskTimeout,\n start\n}\n","// 3rd\nimport { LangUtils } from '@creejs/commons-lang'\n\n// owned\nimport Policy from './policy.js'\nimport Retrier from './retrier.js'\nimport Event from './event.js'\nimport RetrierFactory from './retrier-factory.js'\n\n/**\n * Add all factory methods to Retrier as static methods.\n * Now we can create do something like this:\n * ```\n * Retrier.name('myRetrier')\n * Retrier.infinite()\n * ...\n * ```\n */\nLangUtils.defaults(Retrier, RetrierFactory)\n\n/**\n * default export to support\n * 1. import CommonsRetrier from '@creejs/commons-retrier'\n */\nexport default {\n Policy,\n Retrier,\n Event,\n RetrierFactory,\n ...RetrierFactory\n}\n\n/**\n * named export to support\n * 1. import { Retrier } from '@creejs/commons-retrier'\n * 2. import * as CommonsRetrier from '@creejs/commons-retrier'\n */\nexport {\n Policy,\n Retrier,\n Event,\n RetrierFactory\n}\nexport * from './retrier-factory.js'\n"],"names":["n","o","i","s","u","f","a","c","l","b","h","w","g","p","d","m","v","k","L","O","_","e","assertPositive","assertNotNegative","TypeAssert","TypeUtils","FixedInterval","assertFunction","EventEmitter","PromiseUtils","LangUtils"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-dev.js","sources":["../../../lang/dist/esm/index-min.js","../../lib/constants.js","../../lib/policy.js","../../../events/dist/esm/index-min.js","../../lib/event.js","../../lib/policy/fixed-interval-policy.js","../../lib/policy/fixed-increase-policy.js","../../lib/policy/factor-increase-policy.js","../../lib/policy/shuttle-policy.js","../../lib/policy/fixed-backoff.js","../../lib/policy/exponential-backoff.js","../../lib/policy/linear-backoff.js","../../lib/task.js","../../lib/alway-task.js","../../lib/forever-task.js","../../lib/retrier.js","../../lib/retrier-factory.js","../../lib/index.js"],"sourcesContent":["const t={NOT_FOUND:404,NOT_SUPPORTED:505,NOT_IMPL:501};class r extends Error{static get Code(){return t}static isErrorLike(t){return null!=t&&(\"_\"===t._type&&\"number\"==typeof t.code)}static timeout(t,e){return new r(`Timeout ${e}ms: ${t}`,504)}static preconditionFailed(t){return new r(`Not Matched: ${t}`,412)}static notFound(t){return new r(`Not Found: ${t}`,404)}static notImpled(){return new r(\"Not Impled Yet\",501)}static notSupported(t){return new r(\"Not Supported:\"+t,505)}static isNotSupported(t){return 505===t?.code}constructor(t,r){super(t),this._type=\"_\",this.code=r}}class e extends Error{static isAggregatedErrorLike(t){return t&&Array.isArray(t.errors)}static isAggregatedError(t){return t instanceof e}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),!0)}}var n={get:function(t,r,e){if(null==t)return e;if(\"string\"!=typeof r)throw new Error('\"path\" must be a string');const n=r.split(\".\");let o=t;for(const t of n){if(void 0===o[t])return e;o=o[t]}return o},constructorName:o,defaults:function(t,...r){if(null==t)throw new TypeError('\"target\" Should Not Nil');for(const e of r)if(null!=e)for(const r in e)void 0===t[r]&&(t[r]=e[r]);return t},extend:i,extends:i,equals:function(t,r){if(t===r)return!0;if(\"function\"==typeof t?.equals)return t.equals(r);if(\"function\"==typeof r?.equals)return r.equals(t);return!1},isBrowser:s,isNode:function(){return!s()},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 o(t){return t?.constructor?.name}function i(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 s(){return\"undefined\"!=typeof window&&\"undefined\"!=typeof document}var u={isArray:f,isBoolean:a,isBuffer:function(t){return null!=t&&Buffer.isBuffer(t)},isFunction:c,isInstance:l,isIterable:y,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:b,isPositive:h,isNegative:w,isNotNegative:g,isNil:p,isNullOrUndefined:function(t){return null==t},isNull:d,isUndefined:m,isPlainObject:E,isObject:A,isPromise:N,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:$,isSymbol:O,isPrimitive:function(t){return null!==t&&(\"string\"==typeof t||\"number\"==typeof t||\"boolean\"==typeof t)},isInt8Array:P,isUint8Array:j,isUint8ClampedArray:S,isInt16Array:x,isUint16Array:U,isInt32Array:I,isUint32Array:T,isFloat32Array:B,isFloat64Array:k,isBigInt64Array:L,isBigUint64Array:F,isTypedArray:v,isArrayBuffer:C};function f(t){return Array.isArray(t)}function a(t){return\"boolean\"==typeof t}function c(t){return\"function\"==typeof t}function l(t){return null!=t&&\"object\"==typeof t&&!E(t)}function y(t){return null!=t&&\"function\"==typeof t[Symbol.iterator]}function p(t){return null==t}function h(t){return!!b(t)&&t>0}function g(t){return!!b(t)&&t>=0}function w(t){return!!b(t)&&t<0}function d(t){return null===t}function m(t){return void 0===t}function b(t){return null!=t&&\"number\"==typeof t}function A(t){return null!=t&&\"object\"==typeof t}function E(t){return null!==t&&\"object\"==typeof t&&(t.constructor===Object||void 0===t.constructor)}function N(t){return null!=t&&\"function\"==typeof t.then}function $(t){return null!=t&&\"string\"==typeof t}function O(t){return null!=t&&\"symbol\"==typeof t}function v(t){return ArrayBuffer.isView(t)&&t.constructor!==DataView}function P(t){return t instanceof Int8Array}function j(t){return t instanceof Uint8Array}function S(t){return t instanceof Uint8ClampedArray}function x(t){return t instanceof Int16Array}function U(t){return t instanceof Uint16Array}function I(t){return t instanceof Int32Array}function T(t){return t instanceof Uint32Array}function B(t){return t instanceof Float32Array}function k(t){return t instanceof Float64Array}function L(t){return t instanceof BigInt64Array}function F(t){return t instanceof BigUint64Array}function C(t){return t instanceof ArrayBuffer}var M={assertNumber:_,assertPositive:R,assertNegative:function(t,r){if(!w(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Negative: ${t}`)},assertNotNegative:J,assertBoolean:function(t,r){if(!a(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Boolean: type=${typeof t} value=${tt(t)}`)},assertObject:W,assertPlainObject:function(t,r){if(!E(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not PlainObject: type=${typeof t} value=${tt(t)}`)},assertSymbol:function(t,r){if(!O(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Symbol: type=${typeof t} value=${tt(t)}`)},assertFunction:H,assertInstance:function(t,r){if(!l(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Class Instance: type=${typeof t} value=${tt(t)}`)},assertPromise:V,assertNil:function(t,r){if(!p(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Neither Null nor Undefined: type=${typeof t} value=${tt(t)}`)},assertNotNil:z,assertNull:function(t,r){if(!d(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Null: type=${typeof t} value=${tt(t)}`)},assertNotNull:function(t,r){if(d(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Should Not Null\")},assertUndefined:function(t,r){if(!m(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Undefined: type=${typeof t} value=${tt(t)}`)},assertString:q,assertArray:D,assertStringOrSymbol:function(t,r){if(!$(t)&&!O(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not String or Symbol: type=${typeof t} value=${tt(t)}`)},assertInt8Array:function(t,r){if(P(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not Int8Array\")},assertUint8Array:function(t,r){if(j(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not Uint8Array\")},assertUint8ClampedArray:function(t,r){if(S(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not Uint8ClampedArray\")},assertInt16Array:function(t,r){if(x(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not Int16Array\")},assertUint16Array:function(t,r){if(U(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not Uint16Array\")},assertInt32Array:function(t,r){if(I(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not Int32Array\")},assertUint32Array:function(t,r){if(T(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not Uint32Array\")},assertFloat32Array:function(t,r){if(B(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not Float32Array\")},assertFloat64Array:function(t,r){if(k(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not Float64Array\")},assertBigInt64Array:function(t,r){if(L(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not BigInt64Array\")},assertBigUint64Array:function(t,r){if(F(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not BigUint64Array\")},assertTypedArray:function(t,r){if(v(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not TypedArray\")},assertArrayBuffer:G,assertIterable:function(t,r){if(!y(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not Iterable\")}};function D(t,r){if(!Array.isArray(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Array: type=${typeof t} value=${tt(t)}`)}function q(t,r){if(!$(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not String: type=${typeof t} value=${tt(t)}`)}function _(t,r){if(!b(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Number: type=${typeof t} value=${tt(t)}`)}function R(t,r){if(!h(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Positive: ${t}`)}function J(t,r){if(!g(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not \"0 or Positive\": ${t}`)}function W(t,r){if(!A(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Object: type=${typeof t} value=${tt(t)}`)}function H(t,r){if(!c(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Function: type=${typeof t} value=${tt(t)}`)}function V(t,r){if(!N(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Not Promise: type=${typeof t} value=${tt(t)}`)}function z(t,r){if(p(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Should Not Nil\")}function G(t,r){if(!C(t))throw new Error((r?'\"'+r+'\" ':\"\")+\"Not ArrayBuffer\")}var K={isEmpty:Y,assertNotEmpty:Q,isBlank:X,assertNotBlank:function(t,r){if(X(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}Is Blank: ${t}`)},capitalize:function(t){if(q(t),0===t.length)return t;const r=t.charAt(0),e=r.toUpperCase();return r===e?t:e+t.slice(1)},decapitalize:function(t){if(q(t),0===t.length)return t;const r=t.charAt(0),e=r.toLowerCase();return r===e?t:e+t.slice(1)},splitWithFixedLength:function(t,r,e=\" \"){if(q(t),_(r),q(e),0===t.length)return[];if(r<=0)throw new Error(\"length muse >=0\");if(t.length<r)return[t.padEnd(r,e)];const n=[];for(let o=0;o<t.length;o+=r){const i=t.substring(o,o+r);n.push(i.padEnd(r,e))}return n},split:function(t,...r){q(t);if(0===t.length)return[];const e=[...r];0===r.length&&r.push(\",\");const n=Z(t,...e);if(0===n.length)return[];const o=[];let i=\"\",s=0;for(const{marker:r,index:e}of n)i=t.substring(s,e),o.push(i),s=e+r.length;return i=t.substring(s),o.push(i),o},findMarkerPositions:function(t,...r){if(q(t),0===r.length)throw new Error(\"At least one marker must be provided\");const e=[];for(const n of new Set(r)){if(Y(n))continue;q(n);let r=t.indexOf(n);for(;-1!==r;)e.push({marker:n,index:r}),r=t.indexOf(n,r+n.length)}return e.sort((t,r)=>t.index-r.index),e},findMarkerPositionsRegex:Z,substringBefore:function(t,r){if(q(t),q(r),0===t.length||0===r.length)return;const e=t.indexOf(r);if(-1===e)return;return t.substring(0,e)},substringBeforeLast:function(t,r){if(q(t),q(r),0===t.length||0===r.length)return;const e=t.lastIndexOf(r);if(-1===e)return;return t.substring(0,e)},substringAfter:function(t,r){if(q(t),q(r),0===t.length||0===r.length)return;const e=t.indexOf(r);if(-1===e)return;return t.substring(e+r.length)},substringAfterLast:function(t,r){if(q(t),q(r),0===t.length||0===r.length)return;const e=t.lastIndexOf(r);if(-1===e)return;return t.substring(e+r.length)},substringBetween:function(t,r,e){Q(t),Q(r),Q(e);const n=t.indexOf(r);if(-1===n)return;const o=t.indexOf(e,n+r.length);if(-1===o)return;return t.substring(n+r.length,o)},substringBetweenGreedy:function(t,r,e){Q(t),Q(r),Q(e);const n=t.indexOf(r);if(-1===n)return;const o=t.lastIndexOf(e);if(-1===o||o<=n)return;return t.substring(n+r.length,o)},substringsBetween:function(t,r,e){Q(t),Q(r),Q(e);const n=[];let o=0;for(;;){const i=t.indexOf(r,o);if(-1===i)break;const s=t.indexOf(e,i+r.length);if(-1===s)break;n.push(t.substring(i+r.length,s)),o=s+e.length}return n},safeToString:tt};function Y(t){return null==t||(q(t),0===t.length)}function Q(t,r){if(Y(t))throw new Error(`${r?'\"'+r+'\" ':\"\"}IsEmpty String: ${t}`)}function X(t){return null==t||(q(t),0===t.trim().length)}function Z(t,...r){if(q(t),0===r.length)throw new Error(\"At least one marker must be provided\");const e=[...new Set(r.filter(t=>null!=t))].map(t=>(q(t),t.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\"))),n=new RegExp(e.map(t=>`(${t})`).join(\"|\"),\"g\"),o=[];let i=null;for(;null!==(i=n.exec(t));){for(let t=1;t<i.length;t++)if(i[t]){o.push({marker:r[t-1],index:i.index});break}0===i[0].length&&n.lastIndex++}return o}function tt(t){if(null===t)return\"null\";if(void 0===t)return\"undefined\";const r=typeof t;if(\"string\"===r)return t;if(\"symbol\"===r)return`Symbol(${t.description})`;if(\"function\"===r)return`Function ${t.name}(){}`;if(t instanceof String)return t.toString();if(Number.isNaN(t))return\"NaN\";if(t===1/0)return\"Infinity\";if(t===-1/0)return\"-Infinity\";if(t instanceof Error)return`${t.constructor.name}: ${t.message}`;if(t instanceof Promise)return\"Promise\";if(t instanceof Set)return`Set: ${tt(Array.from(t))}`;if(t instanceof Map)return`Map: ${tt(Array.from(t.entries()))}`;if(t instanceof RegExp)return t.toString();if(Array.isArray(t))return`[${t.map(tt).join(\", \")}]`;let e;try{e=JSON.stringify(t)}catch(r){e=t.toString()}return e}var rt={quiet:function(t,r){H(t);try{const e=t();return N(e)?e.catch(t=>{r&&r.isErrorEnabled()&&r.error(\"quiet() with async error:\",t)}):e}catch(t){r&&r.isErrorEnabled()&&r.error(\"quiet() with sync error:\",t)}},quietKeepError:function(t,r){H(t),D(r);try{const e=t();return N(e)?e.catch(t=>r.push(t)):e}catch(t){r.push(t)}}},et={any:function(t){if(D(t),0===t.length)throw new Error(\"Empty Tasks\");const r=nt(),n=[];for(let o=0;o<t.length;o++){const i=t[o];let s;if(u.isPromise(i))s=i;else{if(!u.isFunction(i)){n.push(new Error(`Invalid Task at index ${o}/${t.length-1}: ${i}`));continue}s=it(i)}s.then(t=>{r.resolve(t)}).catch(o=>{n.push(o),n.length>=t.length&&r.reject(new e(\"All Tasks Failed\",n))})}n.length===t.length&&r.reject(new e(\"All Tasks Failed\",n));return r.promise},defer:nt,delay:function(t,r){u.isNumber(t)?(r=t,t=Promise.resolve()):null==t&&null==r&&(r=1,t=Promise.resolve());null!=t&&V(t),_(r=r??1e3);const e=nt(),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){V(t),_(r=r??1);const n=nt(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:ot,returnValuePromised:it,series:async function(t){D(t);const r=[];for(const e of t)if(H(e),u.isFunction(e))r.push(await it(e));else{if(!u.isPromise(e))throw new Error(`Invalid Task: ${e}`);r.push(await e)}return r},seriesAllSettled:async function(t){D(t);const r=[];for(const e of t){H(e);try{r.push({ok:!0,result:await e()})}catch(t){r.push({ok:!1,result:t})}}return r},parallel:async function(t,r=5){if(D(t),_(r),r<=0)throw new Error(`Invalid maxParallel: ${r}, should > 0`);t.forEach(t=>H(t));const e=[];if(t.length<=r){const r=await Promise.all(t.map(t=>it(t)));return e.push(...r),e}const n=[];for(const o of t)if(H(o),n.push(o),n.length>=r){const t=await Promise.all(n.map(t=>it(t)));e.push(...t),n.length=0}if(n.length>0&&n.length<r){const t=await Promise.all(n.map(t=>it(t)));e.push(...t)}return e},parallelAny:async function(t,r=5,n){if(D(t,\"tasks\"),_(r),0===t.length)throw new Error(\"Empty Tasks\");if(r<=0)throw new Error(`Invalid maxParallel: ${r}, should > 0`);const o=[];let i=0,s=0;const f=nt();function a(){if(i>=t.length)return;if(s>r)return;const c=t[i++];let l;s++,l=u.isPromise(c)?c:u.isFunction(c)?it(c):Promise.reject(new TypeError(`Invalid task: ${typeof c}, Only Promise or Function allowed`)),l.then(t=>{s--,f.resolve(t)}).catch(r=>{o.push(r),o.length>=t.length&&f.pending?f.reject(new e(n??\"All Tasks Failed\",o)):(s--,a())})}const c=Math.min(t.length,r);for(let t=0;t<c;t++)a();return f.promise},parallelAllSettled:async function(t,r=5){if(D(t),_(r),r<=0)throw new Error(`Invalid maxParallel: ${r}, should > 0`);t.forEach(t=>H(t));const e=[];if(t.length<=r){const r=await ot(t.map(t=>it(t)));return e.push(...r),e}const n=[];for(const o of t)if(n.push(o),n.length>=r){const t=await ot(n.map(t=>it(t)));e.push(...t),n.length=0}if(n.length>0&&n.length<r){const t=await ot(n.map(t=>it(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 nt(t=-1,r){_(t);const e={};let n;return e.pending=!0,e.canceled=!1,e.rejected=!1,e.resolved=!1,t>=0&&(e.timerCleared=!1,e.timerHandler=n=setTimeout(()=>{clearTimeout(n),e.timerCleared=!0,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=!0),e.pending=!1,e.canceled=!1,e.rejected=!1,e.resolved=!0,t(r))},e.reject=t=>{e.resolved||e.rejected||e.canceled||(null!=n&&(clearTimeout(n),e.timerCleared=!0),e.pending=!1,e.canceled=!1,e.resolved=!1,e.rejected=!0,r(t))}}),e.cancel=e.promise.cancel=t=>{e.resolved||e.rejected||e.canceled||(null!=n&&(clearTimeout(n),e.timerCleared=!0),e.reject(t??new Error(\"Cancelled\")),e.canceled=e.promise.canceled=!0)},e}async function ot(t){D(t);const r=await Promise.allSettled(t),e=[];for(const t of r)\"fulfilled\"===t.status&&e.push({ok:!0,result:t.value}),\"rejected\"===t.status&&e.push({ok:!1,result:t.reason});return e}function it(t){try{const r=t();return u.isPromise(r)?r:Promise.resolve(r)}catch(t){return Promise.reject(t)}}const{isPlainObject:st}=u;var ut={proxy:ft,newProxyInstance:function(t,r,e,n=!0){const o=ft(t,e,n);return Reflect.construct(o,r??[])}};function ft(t,r,e=!0){if(\"function\"!=typeof t)throw new TypeError(`Not Class: type=${typeof t}, value=${JSON.stringify(t)}`);if(null!=r){if(!st(r))throw new TypeError(`Not PropertyHandler: type=${typeof r}, value=${JSON.stringify(r)}`);const{get:t,set:e}=r;if(null!=t&&\"function\"!=typeof t)throw new TypeError(`Not PropertyHandler.get: type=${typeof t}, value=${JSON.stringify(t)}`);if(null!=e&&\"function\"!=typeof e)throw new TypeError(`Not PropertyHandler.set: type=${typeof e}, value=${JSON.stringify(e)}`)}const n={construct(t,n,o){const i=Reflect.construct(t,n);return new Proxy(e?Object.preventExtensions(i):i,r??{})}};return new Proxy(t,n)}var at={proxy:function(t,r,e=!0){if(p(t)||!A(t)||f(t))throw new TypeError(`Not Object: type=${typeof t}, value=${JSON.stringify(t)}`);return new Proxy(e?Object.preventExtensions(t):t,r??{})}};function ct(t){W(t,\"obj\");const r=new Set;let e=t;for(;e&&e!==Object.prototype;){const n=Object.getOwnPropertyNames(e);for(const e of n)\"constructor\"!==e&&\"function\"==typeof t[e]&&r.add(e);e=Object.getPrototypeOf(e)}return[...new Set(r)]}var lt={getMethodsOfClass:function(t){H(t,\"cls\");const r=new Set;let e=t.prototype;for(;e&&e!==Object.prototype;){const t=Object.getOwnPropertyNames(e);for(const n of t)\"constructor\"!==n&&\"function\"==typeof e[n]&&r.add(n);e=Object.getPrototypeOf(e)}return[...new Set(r)]},getStaticMethodsOfClass:function(t){H(t,\"cls\");const r=new Set;let e=t;for(;e&&e!==Object.getPrototypeOf(Object);){const t=Object.getOwnPropertyNames(e);for(const n of t)\"function\"==typeof e[n]&&r.add(n);e=Object.getPrototypeOf(e)}return[...r]},getMethods:ct,getMethodsOfObject:ct},yt={startsWith:function(t,r){z(t,\"src\"),z(r,\"searching\");return ht(t.subarray(0,r.length),r)},isSameType:pt,equals:ht};function pt(t,r){return z(t,\"src\"),z(r,\"target\"),o(t)===o(r)}function ht(t,r){if(z(t,\"src\"),z(r,\"target\"),!pt(t,r))return!1;if(t.byteLength!==r.byteLength)return!1;const e=new DataView(t.buffer,t.byteOffset,t.byteLength),n=new DataView(r.buffer,r.byteOffset,r.byteLength);for(let r=0;r<t.byteLength;r++)if(e.getUint8(r)!==n.getUint8(r))return!1;return!0}var gt={readString:function(t,r=0,e){if(G(t),J(r),r>=t.byteLength)return;let n=null;null!=e?(R(e),n=r+e>=t.byteLength?new Uint8Array(t,r):new Uint8Array(t,r,e)):n=new Uint8Array(t,r);return wt.decode(n)},writeString:function(t,r,e=0){G(t,\"buffer\"),q(r,\"str\"),J(e,\"offset\");const n=dt.encode(r),o=n.byteLength;if(e+o>t.byteLength)throw new Error(`offset + str.byteLength > buffer.byteLength:${e+o} > ${t.byteLength}`);new Uint8Array(t,e,n.byteLength).set(n)},writeArrayBuffer:function(t,r,e=0,n=0,o){G(t),G(r),_(e),_(n);const i=t.byteLength;if(e<-1*i)e=0;else if(e<0)e+=i;else if(e>=i)throw new Error(`Out of target Bounds: targetOffset(${e}) >= targetLength(${i})`);const s=r.byteLength;if(n<-1*s)n=0;else if(n<0)n+=s;else if(n>=s)throw new Error(`Out of data Bounds: dataOffset(${n}) >= dataArrayBufferLength(${s})`);null!=o&&(R(o,\"dataLength\"),n+o>s&&(o=void 0));const u=new Uint8Array(r,n,o);if(u.byteLength>i-e)throw new Error(`Out of target Bounds: from targetOffset(${e}), No Space to store dataArrayBuffer(${n}, ${o??\"NoLimit\"})`);new Uint8Array(t).set(u,e)}};const wt=new TextDecoder,dt=new TextEncoder;const mt=1e6;var bt={s2ns:1e9,ms2ns:mt,timestamp:function(){if(\"undefined\"!=typeof performance&&\"number\"==typeof performance.timeOrigin){const t=performance.timeOrigin,r=performance.now();return Math.ceil((t+r)/mt)}return Date.now()},timestamp64:At,lapseNano:Et,lapseMillis:Nt,timeoutNano:function(t,r){return Et(t)>r},timeoutMillis:function(t,r){return Nt(t)>r}};function At(){if(\"undefined\"!=typeof performance&&\"number\"==typeof performance.timeOrigin){const t=performance.timeOrigin,r=performance.now();return BigInt((t+r)*mt)}return BigInt(Date.now()*mt)}function Et(t,r){return(r??At())-t}function Nt(t,r){r=r??At();return BigInt(r-t)/BigInt(mt)}var $t={first:function(t,r){return D(t,\"arr\"),t[0]??r},chunk:function(t,r){if(D(t,\"array\"),R(r,\"size\"),t.length<=r)return t;const e=[];let n=0;for(;n<t.length;)e.push(t.slice(n,r+n)),n+=r;return e},last:function(t,r){return D(t,\"arr\"),t[t.length-1]??r},equals:function(t,r,e){if(!Array.isArray(t)||!Array.isArray(r))return!1;if(t.length!==r.length)return!1;for(let n=0;n<t.length;n++)if(e){if(0!==e(t[n],r[n]))return!1}else if(t[n]!==r[n])return!1;return!0},equalsIgnoreOrder:function(t,r,e){if(!Array.isArray(t)||!Array.isArray(r))return!1;if(t.length!==r.length)return!1;t.sort(e),r.sort(e);for(let n=0;n<t.length;n++)if(e){if(0!==e(t[n],r[n]))return!1}else if(t[n]!==r[n])return!1;return!0}};var Ot={take:function(t,r){const e=[];let n;for(let o=0;o<r&&!(n=t.next()).done;o++)e.push(n.value);return e}},vt={_Error:r,AggregatedError:e,LangUtils:n,StringUtils:K,TypeUtils:u,TypeAssert:M,ExecUtils:rt,PromiseUtils:et,Lang:n,Type:u,Exec:rt,ClassProxyUtils:ut,InstanceProxyUtils:at,ReflectUtils:lt,TypedArrayUtils:yt,ArrayBufferUtils:gt,TimeUtils:bt,ArrayUtils:$t,IteratorUtils:Ot};export{e as AggregatedError,gt as ArrayBufferUtils,$t as ArrayUtils,ut as ClassProxyUtils,rt as Exec,rt as ExecUtils,at as InstanceProxyUtils,Ot as IteratorUtils,n as Lang,n as LangUtils,et as PromiseUtils,lt as ReflectUtils,K as StringUtils,bt as TimeUtils,u as Type,M as TypeAssert,u as TypeUtils,yt as TypedArrayUtils,r as _Error,vt as default};\n//# sourceMappingURL=index-min.js.map\n","// module vars\nexport const DefaultMinInterval = 50\nexport const DefaultMaxInterval = 30 * 1000 // 30s\nexport const DefaultMaxRetries = 3\nexport default {\n DefaultMinInterval,\n DefaultMaxInterval,\n DefaultMaxRetries\n}\n","// internal\nimport { TypeAssert, TypeUtils } from '@creejs/commons-lang'\n// owned\nimport { DefaultMaxInterval, DefaultMinInterval } from './constants.js'\n\n// module vars\nconst { assertPositive, assertNotNegative } = TypeAssert\nconst { isNumber } = TypeUtils\n\nexport default class Policy {\n /**\n * Creates a new Policy instance with specified retry bounds.\n */\n constructor () {\n this._min = DefaultMinInterval\n this._max = DefaultMaxInterval\n this._nextInterval = this._min\n this._jitter = 0\n }\n\n get jitter () {\n return this._jitter\n }\n\n set jitter (jitter) {\n assertNotNegative(jitter, 'jitter')\n this._jitter = jitter\n }\n\n /**\n * Copies settings to target policy.\n * 1. range\n * 2. nextInterval value\n * @param {Policy} targetPolicy - The policy to modify.\n */\n copyPolicySettingTo (targetPolicy) {\n targetPolicy.range(this._min, this._max)\n targetPolicy._nextInterval = this._nextInterval\n }\n\n /**\n * Sets a fixed interval retry policy.\n }\n\n /**\n * Sets the minimum and maximum intervals for retries.\n * @param {number} min - Minimum delay in milliseconds (must be positive and less than max)\n * @param {number} max - Maximum delay in milliseconds (must be positive and greater than min)\n * @returns {this} Returns the Retrier instance for chaining\n * @throws {Error} If min is not less than max or if values are not positive\n */\n range (min, max) {\n assertPositive(min, 'min')\n assertPositive(max, 'max')\n if (min >= max) {\n throw new Error('min must < max')\n }\n this._min = min\n if (this._nextInterval < this._min) {\n this._nextInterval = this._min\n }\n this._max = max\n if (this._nextInterval > this._max) {\n this._nextInterval = this._max\n }\n return this\n }\n\n /**\n * Sets the minimum retry delay in milliseconds.\n * 1. will change currentInterval to min\n * @param {number} min - The minimum delay (must be positive and less than max).\n * @returns {this} The retrier instance for chaining.\n * @throws {Error} If min is not positive or is greater than/equal to max.\n */\n min (min) {\n assertPositive(min, 'min')\n if (min >= this._max) {\n throw new Error('min must < max')\n }\n this._min = min\n if (this._nextInterval < this._min) {\n this._nextInterval = this._min\n }\n return this\n }\n\n /**\n * Sets the maximum retry retry delay in milliseconds.\n * @param {number} max - The maximum delay (must be positive and greater than min).\n * @throws {Error} If max is not greater than min.\n * @returns {this} The retrier instance for chaining.\n */\n max (max) {\n assertPositive(max, 'max')\n if (max <= this._min) {\n throw new Error('max must > min')\n }\n this._max = max\n if (this._nextInterval > this._max) {\n this._nextInterval = this._max\n }\n return this\n }\n\n reset () {\n this._nextInterval = this._min\n return this\n }\n\n /**\n * Interval ms of next execution\n * @param {number} retries current retry times\n * @returns {number}\n */\n generate (retries) {\n const rtnVal = this._nextInterval\n this._increase(retries)\n return rtnVal\n }\n\n /**\n * @param {number} retries current retry times\n * @returns {number}\n */\n _increase (retries) {\n const generated = this._next(retries)\n if (!isNumber(generated)) {\n throw new Error('Generated Next Interval Not Number')\n }\n const nextInterval = this._jitter <= 0 ? generated : generated + Math.floor(Math.random() * this._jitter)\n if (nextInterval < this._min) {\n return (this._nextInterval = this._min)\n } else if (nextInterval > this._max) {\n return (this._nextInterval = this._max)\n }\n return (this._nextInterval = nextInterval)\n }\n\n /**\n * subclass should implement this method\n * @param {number} retries current retry times\n * @returns {number} The interval in milliseconds to wait before the next retry attempt.\n * @protected\n */\n _next (retries) {\n throw new Error('Not Impled Yet')\n }\n}\nexport { Policy }\n","var e={isFunction:t,isNil:n};function t(e){return\"function\"==typeof e}function n(e){return null==e}function s(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,n){if(!t(e))throw new Error(`${n?'\"'+n+'\" ':\"\"}Not Function: type=${typeof e} value=${i(e)}`)},assertNotNil:function(e,t){if(n(e))throw new Error((t?'\"'+t+'\" ':\"\")+\"Should Not Nil\")},assertString:function(e,t){if(!s(e))throw new Error(`${t?'\"'+t+'\" ':\"\"}Not String: type=${typeof e} value=${i(e)}`)},assertStringOrSymbol:function(e,t){if(!s(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){if(null===e)return\"null\";if(void 0===e)return\"undefined\";const t=typeof e;if(\"string\"===t)return e;if(\"symbol\"===t)return`Symbol(${e.description})`;if(\"function\"===t)return`Function ${e.name}(){}`;if(e instanceof String)return e.toString();if(Number.isNaN(e))return\"NaN\";if(e===1/0)return\"Infinity\";if(e===-1/0)return\"-Infinity\";if(e instanceof Error)return`${e.constructor.name}: ${e.message}`;if(e instanceof Promise)return\"Promise\";if(e instanceof Set)return`Set: ${i(Array.from(e))}`;if(e instanceof Map)return`Map: ${i(Array.from(e.entries()))}`;if(e instanceof RegExp)return e.toString();if(Array.isArray(e))return`[${e.map(i).join(\", \")}]`;let n;try{n=JSON.stringify(e)}catch(t){n=e.toString()}return n}new TextDecoder,new TextEncoder;const l=\"DOwner$#$\",{assertFunction:a,assertNotNil:o}=r;class c{constructor(e,t,n=!1){o(e,\"event\"),a(t,\"callback\"),this._event=e,this._callback=t,this._isOnce=!!n,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!1;for(const t of[...this._listeners])t.invoke(...e);return!0}emitOwner(e,...t){if(0===this._listeners.length)return!1;const n=this._owner2Listeners.get(e);if(null==n)return!1;for(const e of[...n])e.invoke(...t);return!0}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,!1,!1)}prependListener(e,t){return this._addListener(e,t,!1,!0)}addOnceListener(e,t){return this._addListener(e,t,!0,!1)}prependOnceListener(e,t){return this._addListener(e,t,!0,!0)}_addListener(e,t,n,s){if(u(e))return!1;f(e),this._callbacks.has(e)||this._callbacks.add(e),t=t??l;const r=new c(this,e,n);r.owner=t,s?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),!0}removeListener(e){if(u(e))return!1;if(!this._callbacks.has(e))return!1;this._callbacks.delete(e);const t=this._callback2Listeners.get(e);if(null==t)return!1;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 n=this._owner2Listeners.get(t);null!=n&&(n.delete(e),0===n.size&&this._owner2Listeners.delete(t))}return!0}_remove(e){const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1);const{callback:n}=e,s=this._callback2Listeners.get(n);null!=s&&(s.delete(e),0===s.size&&(this._callback2Listeners.delete(n),this._callbacks.delete(n)));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,n=this._callback2Listeners.get(t);null!=n&&(n.delete(e),0===n.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 n of b){const s=t[n];e[n]=s.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,n){return this.on(e,t,n)}prependListener(e,t,n){w(e),L(t),this._checkMaxListeners(e);return this._getOrCreateEvent(e).prependListener(t,n),this}prependOnceListener(e,t,n){w(e),L(t),this._checkMaxListeners(e);return this._getOrCreateEvent(e).prependOnceListener(t,n),this}emit(e,...t){const n=this._name2Event.get(e);return null!=n&&!n.isEmpty()&&(n.emit(...t),!0)}emitOwner(e,t,...n){if(null==t)throw new Error('Missing \"owner\"');const s=this._name2Event.get(e);return null!=s&&!s.isEmpty()&&(s.emitOwner(t,...n),!0)}eventNames(){return[...this._name2Event.keys()]}getMaxListeners(){return this._maxListeners}listenerCount(e,t){g(e,\"eventName\");const n=this._name2Event.get(e);return null==n||n.isEmpty()?0:n.listenerCount(t)}listeners(e){g(e,\"eventName\");const t=this._name2Event.get(e);return null==t||t.isEmpty()?[]:t.callbacks()}off(e,t){const n=this._name2Event.get(e);return null==n?this:(n.removeListener(t),n.isEmpty()?(this._name2Event.delete(e),this):this)}offAll(e,t){g(e,\"eventName\");const n=this._name2Event.get(e);return null==n?this:(n.removeAllListeners(t),n.isEmpty()?(this._name2Event.delete(e),this):this)}offOwner(e){p(e,\"owner\");const t=[...this._name2Event.values()];for(const n of t)n.removeAllListeners(e),n.isEmpty()&&this._name2Event.delete(n.name);return this}on(e,t,n){w(e),L(t),this._checkMaxListeners(e);return this._getOrCreateEvent(e).addListener(t,n),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,n){w(e),L(t);return this._getOrCreateEvent(e).addOnceListener(t,n),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!1;for(const t of this._name2Event.values())if(t.hasOwner(e))return!0;return!1}}export{k as EventEmitter,k as default};\n//# sourceMappingURL=index-min.js.map\n","export const Start = 'start' // retry started\nexport const Stop = 'stop' // retry stopped\nexport const Retry = 'retry' // one retry began\nexport const Success = 'success' // one task running succeeded\nexport const Failure = 'failure' // one task ran failed\nexport const Timeout = 'timeout' // total timeout\nexport const TaskTimeout = 'task-timeout' // one task timed out\nexport const Completed = 'complete' // all retries completed\nexport const MaxRetries = 'max-retries' // Reach the max retries\n\nexport default {\n Start,\n Retry,\n Success,\n Failure,\n Timeout,\n TaskTimeout,\n Stop,\n Completed,\n MaxRetries\n}\n","// 3rd\n// internal\nimport { TypeAssert } from '@creejs/commons-lang'\n// owned\nimport Policy from '../policy.js'\n// module vars\nconst { assertPositive } = TypeAssert\nexport default class FixedIntervalPolicy extends Policy {\n /**\n * Creates a fixed interval retry policy with the specified interval.\n * @param {number} interval - The fixed interval (in milliseconds) between retry attempts.\n */\n constructor (interval) {\n super()\n this.interval = interval\n }\n\n /**\n * @param {number} interval - The fixed interval (in milliseconds) between retry attempts.\n */\n set interval (interval) {\n assertPositive(interval, 'interval')\n this._interval = interval\n this._nextInterval = interval\n this._min = interval\n this._max = interval\n }\n\n /**\n * @returns {number}\n */\n get interval () {\n // @ts-ignore not possible be undefined\n return this._interval\n }\n\n /**\n * Interval ms of next execution\n * @param {number} retries\n * @returns {number}\n * @throws {Error} Always throws \"Not Implemented Yet\" error.\n */\n _next (retries) {\n return this.interval\n }\n}\n\nexport { FixedIntervalPolicy as FixedIntervalPolicyType }\n","// 3rd\n// internal\nimport { TypeAssert } from '@creejs/commons-lang'\n// owned\nimport Policy from '../policy.js'\n// module vars\nconst { assertPositive } = TypeAssert\nexport default class FixedIncreasePolicy extends Policy {\n /**\n * each call to _next() increases the interval by \"increasement\".\n * @param {number} increasement - The fixed interval (in milliseconds) between retry attempts.\n */\n constructor (increasement) {\n super()\n assertPositive(increasement, 'increasement')\n this._increasement = increasement\n }\n\n set increasement (increasement) {\n assertPositive(increasement, 'increasement')\n this._increasement = increasement\n }\n\n get increasement () {\n return this._increasement\n }\n\n /**\n * Interval ms of next execution\n * @param {number} retries\n * @returns {number}\n */\n _next (retries) {\n if (this._nextInterval >= this._max) {\n return this._max\n }\n return this._nextInterval + this.increasement\n }\n}\nexport { FixedIncreasePolicy as FixedIncreasePolicyType }\n","// 3rd\n// internal\nimport { TypeAssert } from '@creejs/commons-lang'\n// owned\nimport Policy from '../policy.js'\n// module vars\nconst { assertPositive } = TypeAssert\n\nexport default class FactoreIncreasePolicy extends Policy {\n /**\n * each call to _next() increases the interval by lastInterval * factor\n * @param {number} factor - the increasement factor, >= 1\n */\n constructor (factor) {\n super()\n assertPositive(factor, 'factor')\n if (factor < 1) {\n throw new Error('factor must be >= 1')\n }\n this._factor = factor\n }\n\n set factor (factor) {\n assertPositive(factor, 'factor')\n if (factor < 1) {\n throw new Error('factor must be >= 1')\n }\n this._factor = factor\n }\n\n get factor () {\n return this._factor\n }\n\n /**\n * Interval ms of next execution\n * @param {number} retries\n * @returns {number}\n */\n _next (retries) {\n if (this._nextInterval >= this._max) {\n return this._max\n }\n return this._nextInterval * this.factor\n }\n}\nexport { FactoreIncreasePolicy as FactoreIncreasePolicyType }\n","// 3rd\n// internal\nimport { TypeAssert } from '@creejs/commons-lang'\n\n// owned\nimport Policy from '../policy.js'\n// module vars\nconst { assertPositive } = TypeAssert\n\nexport default class ShuttlePolicy extends Policy {\n /**\n * the inteval value shuttles between min and max\n * @param {number} stepLength - the step length to change\n */\n constructor (stepLength) {\n super()\n assertPositive(stepLength, 'stepLength')\n this._stepLength = stepLength\n this.increasement = stepLength\n }\n\n set stepLength (stepLength) {\n assertPositive(stepLength, 'stepLength')\n this._stepLength = stepLength\n this.increasement = stepLength\n }\n\n get stepLength () {\n return this._stepLength\n }\n\n /**\n * Interval ms of next execution\n * @param {number} retries\n * @returns {number}\n * @throws {Error} Always throws \"Not Implemented Yet\" error.\n */\n _next (retries) {\n const nextInterval = this._nextInterval + this.increasement\n if (nextInterval >= this._max) {\n this.increasement = -this.stepLength\n return this._max\n } else if (nextInterval <= this._min) {\n this.increasement = this.stepLength\n return this._min\n }\n return nextInterval\n }\n}\n\nexport { ShuttlePolicy as ShuttlePolicyType }\n","// internal\nimport { TypeAssert } from '@creejs/commons-lang'\n// owned\nimport FixedInterval from './fixed-interval-policy.js'\n// module vars\nconst { assertNotNegative } = TypeAssert\n/**\n * @class FixedBackoff\n */\nexport default class FixedBackoff extends FixedInterval {\n /**\n * Creates a fixed backoff policy with optional jitter.\n * @param {number} fixedInterval - The fixed interval between retries in milliseconds.\n * @param {number} [jitter=500] - The maximum random jitter to add to the interval in milliseconds.\n */\n constructor (fixedInterval, jitter = 500) {\n super(fixedInterval)\n assertNotNegative(jitter, 'jitter')\n this._jitter = jitter ?? 500\n }\n}\n\nexport { FixedBackoff as FixedBackoffType }\n","// internal\nimport { TypeAssert } from '@creejs/commons-lang'\n// owned\nimport FactoreIncreasePolicy from './factor-increase-policy.js'\n\n// module vars\nconst { assertNotNegative } = TypeAssert\n/**\n * @class ExponentialBackoffPolicy\n */\nexport default class ExponentialBackoffPolicy extends FactoreIncreasePolicy {\n /**\n * Creates an exponential backoff policy with optional jitter.\n * @param {number} [jitter=500] - Maximum jitter in milliseconds to add to backoff intervals.\n */\n constructor (jitter = 500) {\n super(2)\n assertNotNegative(jitter, 'jitter')\n this._jitter = jitter ?? 500\n }\n}\n\nexport { ExponentialBackoffPolicy as ExponentialBackoffPolicyType }\n","// internal\nimport { TypeAssert } from '@creejs/commons-lang'\n// owned\nimport FixedIncreasePolicy from './fixed-increase-policy.js'\n// module vars\nconst { assertNotNegative } = TypeAssert\n/**\n * @class LinearBackoff\n */\nexport default class LinearBackoff extends FixedIncreasePolicy {\n /**\n * Creates a linear backoff policy with optional jitter.\n * @param {number} increasement - The base increasement value for backoff.\n * @param {number} [jitter=500] - The maximum jitter value to add to backoff (default: 500).\n */\n constructor (increasement, jitter = 500) {\n super(increasement)\n assertNotNegative(jitter, 'jitter')\n this._jitter = jitter ?? 500\n }\n}\n\nexport { LinearBackoff as LinearBackoffType }\n","import { TypeAssert } from '@creejs/commons-lang'\n// owned\n\n/**\n * @typedef {import('./retrier.js').default} Retrier\n */\n\n// module vars\nconst { assertNotNil, assertFunction } = TypeAssert\nexport default class Task {\n /**\n * Creates a new Task instance.\n * @param {Retrier} retrier - The retrier instance.\n * @param {Function} task - The function to be executed as the task.\n */\n constructor (retrier, task) {\n assertNotNil(retrier, 'retrier')\n assertFunction(task, 'task')\n this.retrier = retrier\n this.task = task\n this.result = undefined\n /** @type {Error|undefined} */\n this.error = undefined\n }\n\n get failed () {\n return this.error != null\n }\n\n get succeeded () {\n return this.error == null\n }\n\n /**\n * Executes the task with the given retry parameters.\n * 1. if execution throw error, keep error in this.error\n * 2. if execution return value, keep it in this.result\n * 3. always return Promise<void>\n * @param {number} retries - The number of retries attempted so far.\n * @param {number} latence - The current latency ms.\n * @param {number} nextInterval - The next interval ms.\n * @returns {Promise<void>} The result of the task execution.\n */\n async execute (retries, latence, nextInterval) {\n try {\n this.result = await this.task(retries, latence, nextInterval)\n this.error = undefined\n } catch (e) {\n this.error = e instanceof Error ? e : new Error(String(e))\n }\n }\n\n dispose () {\n // @ts-ignore\n this.retrier = undefined\n }\n}\n\nexport { Task as TaskType }\n","// owned\nimport Task from './task.js'\n\n/**\n * @typedef {import('./retrier.js').default} Retrier\n */\n\nexport default class AlwaysTask extends Task {\n /**\n * Checks if the given task is an instance of AlwaysTask.\n * @param {*} task - The task to check.\n * @returns {boolean} True if the task is an instance of AlwaysTask, false otherwise.\n */\n static isAlwaysTask (task) {\n return task instanceof AlwaysTask\n }\n\n /**\n * Creates an AlwaysTask instance.\n * @param {Retrier} retrier - The retrier instance to use for retry logic\n * @param {Function} task - The task function to execute\n * @param {boolean} resetRetryPolicyAfterSuccess - Whether to reset retry policy after successful execution\n */\n constructor (retrier, task, resetRetryPolicyAfterSuccess) {\n super(retrier, task)\n this.resetPolicy = resetRetryPolicyAfterSuccess\n }\n\n /**\n * Executes the task with the given retry parameters.\n * @param {number} retries - The number of retries attempted so far.\n * @param {number} latence - The current latency ms.\n * @param {number} nextInterval - The next interval ms.\n * @returns {Promise<*>} The result of the task execution.\n */\n async execute (retries, latence, nextInterval) {\n await super.execute(retries, latence, nextInterval)\n if (this.succeeded && this.resetPolicy) {\n this.retrier.resetRetryPolicy()\n }\n }\n}\n\nexport { AlwaysTask as AlwaysTaskType }\n","// owned\nimport Task from './task.js'\n\n/**\n * @typedef {import('./retrier.js').default} Retrier\n */\n\n/**\n * The task will execute forever despite of failure or success.\n * 1. Ignore Retrier total timeout setting\n * 2. Ignore Retrier max retries setting\n */\nexport default class ForeverTask extends Task {\n /**\n * Checks if the given task is an instance of ForeverTask.\n * @param {*} task - The task to check.\n * @returns {boolean} True if the task is an instance of ForeverTask, false otherwise.\n */\n static isForeverTask (task) {\n return task instanceof ForeverTask\n }\n\n /**\n * Creates an ForeverTask instance.\n * @param {Retrier} retrier - The retrier instance to use for retry logic\n * @param {Function} task - The task function to execute\n * @param {boolean} resetRetryPolicyAfterSuccess - Whether to reset retry policy after successful execution\n */\n constructor (retrier, task, resetRetryPolicyAfterSuccess) {\n super(retrier, task)\n this.resetPolicy = resetRetryPolicyAfterSuccess\n }\n\n /**\n * Executes the task with the given retry parameters.\n * @param {number} retries - The number of retries attempted so far.\n * @param {number} latence - The current latency ms.\n * @param {number} nextInterval - The next interval ms.\n * @returns {Promise<*>} The result of the task execution.\n */\n async execute (retries, latence, nextInterval) {\n await super.execute(retries, latence, nextInterval)\n if (this.succeeded && this.resetPolicy) {\n this.retrier.resetRetryPolicy()\n }\n }\n}\n\nexport { ForeverTask as AlwaysTaskType }\n","// internal\nimport { TypeAssert, TypeUtils, PromiseUtils } from '@creejs/commons-lang'\nimport { EventEmitter } from '@creejs/commons-events'\n\n// owned\nimport Event from './event.js'\nimport { DefaultMaxRetries } from './constants.js'\nimport FixedIntervalPolicy from './policy/fixed-interval-policy.js'\nimport FixedIncreasePolicy from './policy/fixed-increase-policy.js'\nimport FactoreIncreasePolicy from './policy/factor-increase-policy.js'\nimport ShuttlePolicy from './policy/shuttle-policy.js'\nimport FixedBackoff from './policy/fixed-backoff.js'\nimport ExponentialBackoffPolicy from './policy/exponential-backoff.js'\nimport LinearBackoff from './policy/linear-backoff.js'\nimport Task from './task.js'\nimport AlwaysTask from './alway-task.js'\nimport ForeverTask from './forever-task.js'\n\n/**\n * @typedef {import('./policy.js').default} Policy\n * @typedef {import('@creejs/commons-lang/types/promise-utils').Deferred} Deferred\n */\n\n// module vars\nconst { assertPositive, assertString, assertFunction, assertNumber } = TypeAssert\nconst { isNil } = TypeUtils\nconst TaskTimoutFlag = '!#@%$&^*'\n\n/**\n * @extends EventEmitter\n */\nexport default class Retrier {\n/**\n * Creates a new Retrier instance with the specified name.\n * @param {string} name - The name to assign to the retrier.\n * @returns {Retrier} A new Retrier instance with the given name.\n */\n static naming (name) {\n const retrier = new Retrier()\n retrier.name(name)\n return retrier\n }\n\n /**\n * Creates and returns a Retrier instance configured for infinite retries.\n * @returns {Retrier} A Retrier instance with infinite retry behavior.\n */\n static infinite () {\n const retrier = new Retrier()\n retrier.infinite()\n return retrier\n }\n\n /**\n * Creates a retrier configured to attempt an operation a specified number of times.\n * @param {number} times - The maximum number of retry attempts.\n * @returns {Retrier} A configured Retrier instance with the specified max retries.\n */\n static times (times) {\n const retrier = new Retrier()\n retrier.times(times)\n return retrier\n }\n\n /**\n * Alias for times.\n * @param {number} maxRetries - The maximum number of retry attempts.\n * @returns {Retrier} A configured Retrier instance with the specified max retries.\n */\n static maxRetries (maxRetries) {\n const retrier = new Retrier()\n retrier.maxRetries(maxRetries)\n return retrier\n }\n\n /**\n * Sets the minimum Interval for the retrier and returns the instance.\n * @param {number} min - The minimum Interval in milliseconds.\n * @returns {Retrier} The retrier instance with updated minimum Interval.\n */\n static min (min) {\n const retrier = new Retrier()\n retrier.min(min)\n return retrier\n }\n\n /**\n * Sets the maximum Interval for the retrier and returns the instance.\n * @param {number} max - The maximum Interval in milliseconds.\n * @returns {Retrier} The retrier instance with updated maximum Interval.\n */\n static max (max) {\n const retrier = new Retrier()\n retrier.max(max)\n return retrier\n }\n\n /**\n * Creates a retrier with the specified Interval range.\n * @param {number} min - Minimum Interval.\n * @param {number} max - Maximum Interval.\n * @returns {Retrier} A new Retrier instance configured with specified Interval range.\n */\n static range (min, max) {\n const retrier = new Retrier()\n retrier.range(min, max)\n return retrier\n }\n\n /**\n * Creates a retrier with a fixed interval between attempts.\n * @param {number} fixedInterval - The fixed interval in milliseconds between retry attempts.\n * @returns {Retrier} A new Retrier instance configured with the specified fixed interval.\n */\n static fixedInterval (fixedInterval) {\n const retrier = new Retrier()\n retrier.fixedInterval(fixedInterval)\n return retrier\n }\n\n /**\n * Creates a retrier with a fixed backoff strategy.\n * @param {number} fixedInterval - The fixed interval between retries in milliseconds.\n * @param {number} [jitter=500] - The maximum jitter to add to the interval in milliseconds.\n * @returns {Retrier} A retrier instance configured with fixed backoff.\n */\n static fixedBackoff (fixedInterval, jitter = 500) {\n const retrier = new Retrier()\n retrier.fixedBackoff(fixedInterval, jitter)\n return retrier\n }\n\n /**\n * Creates a retrier with a fixed increase strategy.\n * @param {number} increasement - The fixed amount to increase on each retry.\n * @returns {Retrier} A retrier instance configured with fixed increase.\n */\n static fixedIncrease (increasement) {\n const retrier = new Retrier()\n retrier.fixedIncrease(increasement)\n return retrier\n }\n\n /**\n * Creates a retrier with a fixed increase strategy.\n * @param {number} increasement - The fixed amount to increase on each retry.\n * @param {number} [jitter=500] - The maximum jitter to add to the interval in milliseconds.\n * @returns {Retrier} A retrier instance configured with fixed increase.\n */\n static linearBackoff (increasement, jitter = 500) {\n const retrier = new Retrier()\n retrier.linearBackoff(increasement, jitter)\n return retrier\n }\n\n /**\n * Creates a new Retrier instance with factor-increase strategy.\n * @param {number} factor - The factor by which to increase the interval on each retry.\n * @returns {Retrier} A new Retrier instance with factor-increase strategy.\n */\n static factorIncrease (factor) {\n const retrier = new Retrier()\n retrier.factorIncrease(factor)\n return retrier\n }\n\n /**\n * Creates a new Retrier instance with exponential-backoff strategy.\n * @param {number} [jitter=500]\n * @returns {Retrier} A new Retrier instance\n */\n static exponentialBackoff (jitter = 500) {\n const retrier = new Retrier()\n retrier.exponentialBackoff(jitter)\n return retrier\n }\n\n /**\n * Creates a Retrier instance with a shuttle-interval strategt.\n * @param {number} stepLength - The interval step length of each change\n * @returns {Retrier} A configured Retrier instance with shuttle-interval strategt.\n */\n static shuttleInterval (stepLength) {\n const retrier = new Retrier()\n retrier.shuttleInterval(stepLength)\n return retrier\n }\n\n /**\n * Creates a Retrier instance with a total-opertion timeout.\n * @param {number} timeout - The timeout value in milliseconds.\n * @returns {Retrier} A Retrier instance configured with the given timeout.\n */\n static timeout (timeout) {\n const retrier = new Retrier()\n retrier.timeout(timeout)\n return retrier\n }\n\n /**\n * Creates a retrier instance with a single-task timeout.\n * @param {number} timeout - The timeout duration in milliseconds for the retrier task.\n * @returns {Retrier} A Retrier instance configured with the given task timeout.\n */\n static taskTimeout (timeout) {\n const retrier = new Retrier()\n retrier.taskTimeout(timeout)\n return retrier\n }\n\n /**\n * Creates a new Retrier instance, sets the task to be retried, and starts the retry process.\n * @param {Function} task - The asynchronous task static to be retried.\n * @returns {Promise<*>} A promise that resolves when the retry process completes.\n */\n static start (task) {\n const retrier = new Retrier()\n retrier.task(task)\n return retrier.start()\n }\n\n /**\n * Creates a new Retrier instance with a fixed interval policy.\n * @param {number} [fixedInterval=1000] - The fixed interval in milliseconds between retry attempts. Defaults to 1000ms if not provided.\n */\n constructor (fixedInterval) {\n EventEmitter.mixin(this)\n /**\n * @type {Policy}\n */\n this._policy = new FixedIntervalPolicy(fixedInterval ?? 1000)\n this._maxRetries = DefaultMaxRetries\n this._currentRetries = 1\n /**\n * Timetou for total operation\n * @type {number}\n */\n this._timeout = 120000 // 120s\n /**\n * Timetou for single task\n */\n this._taskTimeout = 2000 // 20s\n this._name = 'unamed' // Retrier name\n\n /**\n * A Deferred Object as Singal to prevent Task concurrent start\n * @type {Deferred|undefined}\n */\n this._taskingFlag = undefined\n\n /**\n * A Deferred Object as Singal to prevent Task concurrent stop\n * @type {Deferred|undefined}\n */\n this._breakFlag = undefined\n /**\n * Reason for break\n * @type {Error|undefined}\n */\n this._breakReason = undefined\n }\n\n get running () {\n return !isNil(this._taskingFlag)\n }\n\n /**\n * Sets the name of the retrier.\n * @param {string} retrierName - The name to assign to the retrier.\n * @returns {this} The retrier instance for chaining.\n */\n name (retrierName) {\n assertString(retrierName, 'name')\n this._assertChangeable(retrierName)\n this._name = retrierName\n return this\n }\n\n /**\n * Sets the retry attempts to be infinite by setting max retries to maximum safe integer.\n * @returns {this} The retrier instance for chaining.\n */\n infinite () {\n this._assertChangeable('infinite')\n this._maxRetries = Infinity\n return this\n }\n\n /**\n * Sets the maximum number of retry attempts.\n * @param {number} times - The maximum number of retries.\n * @returns {this} The Retrier instance for chaining.\n */\n times (times) {\n this._assertChangeable('times')\n return this.maxRetries(times)\n }\n\n /**\n * Sets the maximum number of retry attempts.\n * @param {number} maxRetries - The maximum number of retries (must be positive).\n * @returns {this} The retrier instance for chaining.\n */\n maxRetries (maxRetries) {\n assertPositive(maxRetries, 'maxRetries')\n this._assertChangeable('maxRetries')\n this._maxRetries = maxRetries\n return this\n }\n\n /**\n * Sets the minimum retry delay in milliseconds.\n * @param {number} min - The minimum delay (must be positive and less than max).\n * @returns {this} The retrier instance for chaining.\n * @throws {Error} If min is not positive or is greater than/equal to max.\n */\n min (min) {\n this._assertChangeable('min')\n this._policy.min(min)\n return this\n }\n\n /**\n * Sets the maximum retry retry delay in milliseconds.\n * @param {number} max - The maximum delay (must be positive and greater than min).\n * @throws {Error} If max is not greater than min.\n * @returns {this} The retrier instance for chaining.\n */\n max (max) {\n this._assertChangeable('max')\n this._policy.max(max)\n return this\n }\n\n /**\n * Sets the minimum and maximum intervals for retries.\n * @param {number} min - Minimum delay in milliseconds (must be positive and less than max)\n * @param {number} max - Maximum delay in milliseconds (must be positive and greater than min)\n * @returns {Retrier} Returns the Retrier instance for chaining\n * @throws {Error} If min is not less than max or if values are not positive\n */\n range (min, max) {\n this._assertChangeable('range')\n this._policy.range(min, max)\n return this\n }\n\n /**\n * Sets a fixed interval retry policy.\n * @param {number} fixedInterval - The fixed interval in milliseconds between retries.\n * @returns {Retrier} The Retrier instance for chaining.\n */\n fixedInterval (fixedInterval) {\n this._assertChangeable('fixedInterval')\n const oldPolicy = this._policy\n if (oldPolicy instanceof FixedIntervalPolicy) {\n oldPolicy.interval = fixedInterval\n return this\n }\n const newPolicy = new FixedIntervalPolicy(fixedInterval)\n oldPolicy?.copyPolicySettingTo(newPolicy)\n newPolicy.reset()\n this._policy = newPolicy\n return this\n }\n\n /**\n * sets a fixed backoff strategy.\n * @param {number} fixedInterval - The fixed interval between retries in milliseconds.\n * @param {number} [jitter=500] - The maximum jitter to add to the interval in milliseconds.\n * @returns {Retrier} A retrier instance configured with fixed backoff.\n */\n fixedBackoff (fixedInterval, jitter = 500) {\n this._assertChangeable('fixedBackoff')\n const oldPolicy = this._policy\n if (oldPolicy instanceof FixedIntervalPolicy) {\n oldPolicy.interval = fixedInterval\n oldPolicy.jitter = jitter\n return this\n }\n const newPolicy = new FixedBackoff(fixedInterval, jitter)\n oldPolicy?.copyPolicySettingTo(newPolicy)\n newPolicy.reset()\n this._policy = newPolicy\n return this\n }\n\n /**\n * Sets a fixed increase policy for retry intervals.\n * @param {number} increasement - The fixed amount to increase the interval by on each retry.\n * @returns {this} The retrier instance for chaining.\n */\n fixedIncrease (increasement) {\n this._assertChangeable('fixedIncrease')\n const oldPolicy = this._policy\n if (oldPolicy instanceof FixedIncreasePolicy) {\n oldPolicy.increasement = increasement\n return this\n }\n const newPolicy = new FixedIncreasePolicy(increasement)\n oldPolicy?.copyPolicySettingTo(newPolicy)\n newPolicy.reset()\n this._policy = newPolicy\n return this\n }\n\n /**\n * Sets a fixed increase policy for retry intervals.\n * @param {number} increasement - The fixed amount to increase the interval by on each retry.\n * @param {number} [jitter=500] - The maximum jitter to add to the interval in milliseconds.\n * @returns {this} The retrier instance for chaining.\n */\n linearBackoff (increasement, jitter = 500) {\n this._assertChangeable('linearBackoff')\n const oldPolicy = this._policy\n if (oldPolicy instanceof LinearBackoff) {\n oldPolicy.increasement = increasement\n oldPolicy.jitter = jitter\n return this\n }\n const newPolicy = new LinearBackoff(increasement, jitter)\n oldPolicy?.copyPolicySettingTo(newPolicy)\n newPolicy.reset()\n this._policy = newPolicy\n return this\n }\n\n /**\n * Sets a fixed increase factor for retry delays.\n * @param {number} factor - The multiplier for delay increase between retries.\n * @returns {this} The retrier instance for method chaining.\n */\n factorIncrease (factor) {\n this._assertChangeable('factorIncrease')\n const oldPolicy = this._policy\n if (oldPolicy instanceof FactoreIncreasePolicy) {\n oldPolicy.factor = factor\n return this\n }\n const newPolicy = new FactoreIncreasePolicy(factor)\n oldPolicy?.copyPolicySettingTo(newPolicy)\n newPolicy.reset()\n this._policy = newPolicy\n return this\n }\n\n /**\n * Creates a new Retrier instance with exponential-backoff strategy.\n * @param {number} [jitter]\n * @returns {Retrier} A new Retrier instance\n */\n exponentialBackoff (jitter = 500) {\n this._assertChangeable('exponentialBackoff')\n const oldPolicy = this._policy\n if (oldPolicy instanceof ExponentialBackoffPolicy) {\n oldPolicy.jitter = jitter\n return this\n }\n const newPolicy = new ExponentialBackoffPolicy(jitter)\n oldPolicy?.copyPolicySettingTo(newPolicy)\n newPolicy.reset()\n this._policy = newPolicy\n return this\n }\n\n /**\n * Sets a shuttle retry policy with the given step length.\n * @param {number} stepLength - The interval between retry attempts.\n * @returns {this} The Retrier instance for chaining.\n */\n shuttleInterval (stepLength) {\n this._assertChangeable('shuttleInterval')\n const oldPolicy = this._policy\n if (oldPolicy instanceof ShuttlePolicy) {\n oldPolicy.stepLength = stepLength\n return this\n }\n const newPolicy = new ShuttlePolicy(stepLength)\n oldPolicy?.copyPolicySettingTo(newPolicy)\n newPolicy.reset()\n this._policy = newPolicy\n return this\n }\n\n /**\n * Sets the timeout duration for each Task execution.\n * 1. must > 0\n * @param {number} timeout - The timeout duration in milliseconds.\n * @returns {this} The retrier instance for chaining.\n */\n taskTimeout (timeout) {\n assertPositive(timeout, 'taskTimeout')\n this._assertChangeable('taskTimeout')\n this._taskTimeout = timeout\n return this\n }\n\n /**\n * Sets the timeout duration for all retries.\n * 1. <= 0 - no timeout\n * 2. \\> 0 - timeout duration in milliseconds\n * @param {number} timeout - The timeout duration in milliseconds.\n * @returns {this} The retrier instance for chaining.\n */\n timeout (timeout) {\n assertNumber(timeout, 'timeout')\n this._assertChangeable('timeout')\n this._timeout = timeout\n return this\n }\n\n /**\n * Disables the timeout for the retrier.\n * @returns {this} The retrier instance for chaining.\n */\n noTimeout () {\n this._assertChangeable('noTimeout')\n this._timeout = 0\n return this\n }\n\n /**\n * Sets the task function to be retried.\n * @param {Function} task - The function to be executed and retried on failure.\n * @returns {this} Returns the retrier instance for chaining.\n */\n task (task) {\n assertFunction(task, 'task')\n this._assertChangeable('task')\n this._task = new Task(this, task)\n return this\n }\n\n /**\n * alias of {@linkcode Retrier.task()}\n * @param {Function} task - The function to be executed and retried\n * @return {this}\n */\n retry (task) {\n this._assertChangeable('retry')\n this.task(task)\n return this\n }\n\n /**\n * Executes the given task, and never stop\n * 1. if the task fails, will retry it after the interval generated by RetryPolicy\n * 2. if the task succeeds, reset RetryPolicy to Minimum Interval and continue to run the task\n * @param {Function} task - The async function to execute and retry.\n * @param {boolean} [resetAfterSuccess=true] - Whether to reset retry counters after success.\n * @returns {this} The Retrier instance for chaining.\n */\n always (task, resetAfterSuccess = true) {\n this._assertChangeable('always')\n this._task = new AlwaysTask(this, task, resetAfterSuccess)\n return this\n }\n\n /**\n *The task will execute forever despite of failure or success.\n * 1. call notimeout(), override and ignore Retrier total timeout setting\n * 2. call infinite(), override and ignore Retrier max retries setting\n * @param {Function} task\n * @param {boolean} [resetAfterSuccess=true]\n * @returns\n */\n forever (task, resetAfterSuccess = true) {\n this._assertChangeable('forever')\n this.noTimeout()\n this.infinite()\n this._task = new ForeverTask(this, task, resetAfterSuccess)\n return this\n }\n\n /**\n * Starts the retry process.\n * @returns {Promise<*>}\n */\n async start () {\n if (this._task == null) {\n throw new Error('No Task to Retry')\n }\n if (this._taskingFlag != null) {\n return this._taskingFlag.promise\n }\n this._taskingFlag = PromiseUtils.defer()\n\n if (ForeverTask.isForeverTask(this._task)) {\n // DO NOT care ForeverTask's result\n this._executeForeverTask(this._task)\n this._taskingFlag.resolve()\n } else {\n // Resovle taskingFlag.promise in method _executeEndableTask()\n this._executeEndableTask(this._task)\n }\n return this._taskingFlag.promise\n }\n\n /**\n * Force an execution immediately.\n */\n wakeup () {\n if (!this.running) {\n this.start()\n return\n }\n if (this._sleepWaiter != null) {\n this._sleepWaiter.wakeup()\n }\n }\n\n /**\n * Stops the retrier with an optional reason. If already stopping, returns the existing break promise.\n * @param {Error} [reason] - Optional reason for stopping (defaults to 'Manually Stop' error).\n * @returns {Promise<void>} A promise that resolves when the retrier has fully stopped.\n */\n async stop (reason) {\n // @ts-ignore\n this.emit(Event.Stop, reason)\n if (this._taskingFlag == null) {\n return // no task running\n }\n if (this._breakFlag != null) {\n // @ts-ignore\n return this._breakFlag.promise\n }\n // kick off\n if (this._sleepWaiter != null) {\n this._sleepWaiter.wakeup()\n }\n this._breakFlag = PromiseUtils.defer()\n /** @type {Error|undefined} */\n this._breakReason = reason ?? new Error('Manually Stop')\n // @ts-ignore\n this.once(Event.Completed, () => {\n this._breakFlag?.resolve()\n })\n\n this._breakFlag.promise.finally(() => {\n this._breakFlag = undefined\n this._breakReason = undefined\n this._taskingFlag = undefined\n })\n return this._breakFlag.promise\n }\n\n /**\n * Resets the retry policy to its initial state.\n */\n resetRetryPolicy () {\n this._policy.reset()\n }\n\n /**\n * Registers a listener function to be called on \"retry\" events.\n * @param {Function} listener - The callback function\n * @returns {this}\n */\n onRetry (listener) {\n // @ts-ignore\n this.on(Event.Retry, listener)\n return this\n }\n\n /**\n * Registers a listener for \"error\" events.\n * @param {Function} listener - The callback function\n * @returns {this}\n */\n onError (listener) {\n // @ts-ignore\n this.on(Event.Error, listener)\n return this\n }\n\n /**\n * Registers a listener for \"failure\" events.\n * @param {Function} listener - The callback function\n * @returns {this}\n */\n onFailure (listener) {\n // @ts-ignore\n this.on(Event.Failure, listener)\n return this\n }\n\n /**\n * Registers a listener for \"success\" events.\n * @param {Function} listener - The callback function\n * @returns {this}\n */\n onSuccess (listener) {\n // @ts-ignore\n this.on(Event.Success, listener)\n return this\n }\n\n /**\n * Registers a listener for \"start\" events.\n * @param {Function} listener - The callback function\n * @returns {this}\n */\n onStart (listener) {\n // @ts-ignore\n this.on(Event.Start, listener)\n return this\n }\n\n /**\n * Registers a listener for \"stop\" events.\n * @param {Function} listener - The callback function\n * @returns {this}\n */\n onStop (listener) {\n // @ts-ignore\n this.on(Event.Stop, listener)\n return this\n }\n\n /**\n * Registers a listener for \"timeout\" events.\n * @param {Function} listener - The callback function\n */\n onTimeout (listener) {\n // @ts-ignore\n this.on(Event.Timeout, listener)\n return this\n }\n\n /**\n * Registers a listener for \"task-timeout\" events.\n * @param {Function} listener - The callback function\n * @returns {this}\n */\n onTaskTimeout (listener) {\n // @ts-ignore\n this.on(Event.TaskTimeout, listener)\n return this\n }\n\n /**\n * Registers a listener for \"completed\" events.\n * @param {Function} listener - The callback function\n */\n onCompleted (listener) {\n // @ts-ignore\n this.on(Event.Completed, listener)\n return this\n }\n\n /**\n * Registers a listener for the 'MaxRetries' event.\n * @param {Function} listener - The callback function to be executed when max retries are reached.\n * @returns {this}\n */\n onMaxRetries (listener) {\n // @ts-ignore\n this.on(Event.MaxRetries, listener)\n return this\n }\n\n /**\n *\n * @param {Task} task\n * @returns {Promise<void>}\n */\n async _executeForeverTask (task) {\n if (this._taskingFlag == null) {\n throw new Error('Must be called in start()')\n }\n const startAt = Date.now()\n // @ts-ignore\n this.emit(Event.Start, startAt)\n let latency = null\n\n while (true) {\n // need to stop?\n if (this._breakFlag != null) {\n const spent = Date.now() - startAt\n // @ts-ignore\n this.emit(Event.Completed, this._currentRetries, spent)\n break\n }\n latency = Date.now() - startAt\n // @ts-ignore\n this.emit(Event.Retry, this._currentRetries, latency)\n const nextDelay = this._policy.generate(this._currentRetries)\n try {\n try {\n await PromiseUtils.timeout(task.execute(this._currentRetries, latency, nextDelay), this._taskTimeout, TaskTimoutFlag)\n } catch (err) {\n // @ts-ignore\n if (err.message === TaskTimoutFlag) {\n // @ts-ignore\n this.emit(Event.TaskTimeout, this._currentRetries, latency, this._taskTimeout)\n }\n throw err\n }\n // @ts-ignore\n if (task.failed) {\n throw task.error\n }\n const rtnVal = task.result\n // @ts-ignore\n this.emit(Event.Success, rtnVal, this._currentRetries, latency)\n // continue to run the task\n } catch (e) {\n // @ts-ignore\n this.emit(Event.Failure, e, this._currentRetries, latency)\n }\n // compute next retry counter\n ++this._currentRetries\n // use Waiter to introduce the ability to wakeup at any time\n this._sleepWaiter = PromiseUtils.wait(nextDelay)\n await this._sleepWaiter.promise\n }\n }\n\n /**\n * @param {Task} task\n * @returns {Promise<any>}\n */\n async _executeEndableTask (task) {\n if (this._taskingFlag == null) {\n throw new Error('Must be called in start()')\n }\n const startAt = Date.now()\n /** @type {Error|undefined} */\n let lastError\n // @ts-ignore\n this.emit(Event.Start, startAt)\n let latency = null\n\n /**\n * DO NOT worry about \"while(true)\", we will not be trapped in an infinite loop.\n *\n * \"async\" keyword ensures:\n * 1. call start(), will enfore the first loop executed\n * 2. when first \"await\" is encountered, \"while(true)\" loop hanged to wait\n * 3. \"async\" will return a Promise when \"while(true)\" loop hanged\n * 4. Returned \"async\" wrapper Promise, it is NOT \"this._taskingFlag.promise\"\n */\n while (true) {\n // need to stop?\n if (this._breakFlag != null) {\n this._taskingFlag.reject(this._breakReason ?? new Error('Have Been Broken'))\n break\n }\n\n latency = Date.now() - startAt\n\n // total timeout?\n if (!isInfinite(this._timeout) && latency >= this._timeout) { // total timeout\n // @ts-ignore\n this.emit(Event.Timeout, this._currentRetries, latency, this._timeout)\n // always task, treat as success, resolve the whole promise with <void>\n if (AlwaysTask.isAlwaysTask(this._task)) {\n this._taskingFlag.resolve()\n break\n }\n this._taskingFlag.reject(lastError ?? new Error(`Timeout \"${this._timeout}\" Exceeded`))\n break\n }\n\n // @ts-ignore\n this.emit(Event.Retry, this._currentRetries, latency)\n const nextDelay = this._policy.generate(this._currentRetries)\n try {\n try {\n await PromiseUtils.timeout(task.execute(this._currentRetries, latency, nextDelay), this._taskTimeout, TaskTimoutFlag)\n } catch (err) {\n // @ts-ignore\n if (err.message === TaskTimoutFlag) {\n // @ts-ignore\n this.emit(Event.TaskTimeout, this._currentRetries, latency, this._taskTimeout)\n }\n throw err\n }\n // @ts-ignore\n if (task.failed) {\n lastError = task.error\n throw task.error\n }\n const rtnVal = task.result\n // @ts-ignore\n this.emit(Event.Success, rtnVal, this._currentRetries, latency)\n\n // Not AwaysTask, we can finish all the retries with success\n if (!AlwaysTask.isAlwaysTask(task)) {\n this._taskingFlag.resolve(rtnVal)\n break\n }\n // AwaysTask, continue to run the task\n } catch (e) {\n // @ts-ignore\n this.emit(Event.Failure, e, this._currentRetries, latency)\n }\n const nextRetries = ++this._currentRetries\n // next retry, max retries reached?\n if (this._currentRetries > this._maxRetries) {\n // @ts-ignore\n this.emit(Event.MaxRetries, nextRetries, this._maxRetries)\n // always task, treat as success, resolve the whole promise with <void>\n if (AlwaysTask.isAlwaysTask(task)) {\n this._taskingFlag.resolve()\n break\n }\n this._taskingFlag.reject(lastError ?? new Error(`Max Retries Exceeded, Retring ${this._currentRetries} times > max ${this._maxRetries}`))\n break\n }\n // use Waiter to introduce the ability to wakeup at any time\n this._sleepWaiter = PromiseUtils.wait(nextDelay)\n await this._sleepWaiter.promise\n // await PromiseUtils.delay(nextDelay)\n }\n this._taskingFlag.promise.finally(() => {\n this.resetRetryPolicy()\n this._taskingFlag = undefined\n const spent = Date.now() - startAt\n // @ts-ignore\n this.emit(Event.Completed, this._currentRetries, spent)\n })\n if (AlwaysTask.isAlwaysTask(this._task)) {\n return // always task, resolve with <void>\n }\n // normal retry task, return the task's result\n return this._taskingFlag.promise\n }\n\n /**\n * Assert if can change param's value\n * @param {string} param\n */\n _assertChangeable (param) {\n if (this._taskingFlag != null) {\n throw new Error(`No Change \"${param}\" After Retrier Started`)\n }\n }\n}\n\n/**\n * Checks if a value represents infinity or a non-positive number.\n * @param {number} value - The value to check\n * @returns {boolean} True if the value is <= 0 or Infinity, false otherwise\n */\nfunction isInfinite (value) {\n return value <= 0 || value === Infinity\n}\n\nexport { Retrier }\n","// owned\nimport Retrier from './retrier.js'\n/**\n * Creates a new Retrier instance with the specified name.\n * @param {string} name - The name to assign to the retrier.\n * @returns {Retrier} A new Retrier instance with the given name.\n */\nfunction name (name) {\n const retrier = new Retrier()\n retrier.name(name)\n return retrier\n}\n\n/**\n * Creates and returns a Retrier instance configured for infinite retries.\n * @returns {Retrier} A Retrier instance with infinite retry behavior.\n */\nfunction infinite () {\n const retrier = new Retrier()\n retrier.infinite()\n return retrier\n}\n\n/**\n * Creates a retrier configured to attempt an operation a specified number of times.\n * @param {number} times - The maximum number of retry attempts.\n * @returns {Retrier} A configured Retrier instance with the specified max retries.\n */\nfunction times (times) {\n const retrier = new Retrier()\n retrier.times(times)\n return retrier\n}\n\n/**\n * Alias for times.\n * @param {number} maxRetries - The maximum number of retry attempts.\n * @returns {Retrier} A configured Retrier instance with the specified max retries.\n */\nfunction maxRetries (maxRetries) {\n const retrier = new Retrier()\n retrier.maxRetries(maxRetries)\n return retrier\n}\n\n/**\n * Sets the minimum Interval for the retrier and returns the instance.\n * @param {number} min - The minimum Interval in milliseconds.\n * @returns {Retrier} The retrier instance with updated minimum Interval.\n */\nfunction min (min) {\n const retrier = new Retrier()\n retrier.min(min)\n return retrier\n}\n\n/**\n * Sets the maximum Interval for the retrier and returns the instance.\n * @param {number} max - The maximum Interval in milliseconds.\n * @returns {Retrier} The retrier instance with updated maximum Interval.\n */\nfunction max (max) {\n const retrier = new Retrier()\n retrier.max(max)\n return retrier\n}\n\n/**\n * Creates a retrier with the specified Interval range.\n * @param {number} min - Minimum Interval.\n * @param {number} max - Maximum Interval.\n * @returns {Retrier} A new Retrier instance configured with specified Interval range.\n */\nfunction range (min, max) {\n const retrier = new Retrier()\n retrier.range(min, max)\n return retrier\n}\n\n/**\n * Creates a retrier with a fixed interval between attempts.\n * @param {number} fixedInterval - The fixed interval in milliseconds between retry attempts.\n * @returns {Retrier} A new Retrier instance configured with the specified fixed interval.\n */\nfunction fixedInterval (fixedInterval) {\n const retrier = new Retrier()\n retrier.fixedInterval(fixedInterval)\n return retrier\n}\n\n/**\n * Creates a retrier with a fixed backoff strategy.\n * @param {number} fixedInterval - The fixed interval between retries in milliseconds.\n * @param {number} [jitter=500] - The maximum jitter to add to the interval in milliseconds.\n * @returns {Retrier} A retrier instance configured with fixed backoff.\n */\nfunction fixedBackoff (fixedInterval, jitter = 500) {\n const retrier = new Retrier()\n retrier.fixedBackoff(fixedInterval, jitter)\n return retrier\n}\n\n/**\n * Creates a retrier with a fixed increase strategy.\n * @param {number} increasement - The fixed amount to increase on each retry.\n * @returns {Retrier} A retrier instance configured with fixed increase.\n */\nfunction fixedIncrease (increasement) {\n const retrier = new Retrier()\n retrier.fixedIncrease(increasement)\n return retrier\n}\n\n/**\n * Creates a retrier with a fixed increase strategy.\n * @param {number} increasement - The fixed amount to increase on each retry.\n * @param {number} [jitter=500] - The maximum jitter to add to the interval in milliseconds.\n * @returns {Retrier} A retrier instance configured with fixed increase.\n */\nfunction linearBackoff (increasement, jitter = 500) {\n const retrier = new Retrier()\n retrier.linearBackoff(increasement, jitter)\n return retrier\n}\n\n/**\n * Creates a new Retrier instance with factor-increase strategy.\n * @param {number} factor - The factor by which to increase the interval on each retry.\n * @returns {Retrier} A new Retrier instance with factor-increase strategy.\n */\nfunction factorIncrease (factor) {\n const retrier = new Retrier()\n retrier.factorIncrease(factor)\n return retrier\n}\n\n/**\n * Creates a new Retrier instance with exponential-backoff strategy.\n * @param {number} [jitter=500]\n * @returns {Retrier} A new Retrier instance\n */\nfunction exponentialBackoff (jitter = 500) {\n const retrier = new Retrier()\n retrier.exponentialBackoff(jitter)\n return retrier\n}\n\n/**\n * Creates a Retrier instance with a shuttle-interval strategt.\n * @param {number} stepLength - The interval step length of each change\n * @returns {Retrier} A configured Retrier instance with shuttle-interval strategt.\n */\nfunction shuttleInterval (stepLength) {\n const retrier = new Retrier()\n retrier.shuttleInterval(stepLength)\n return retrier\n}\n\n/**\n * Creates a Retrier instance with a total-opertion timeout.\n * @param {number} timeout - The timeout value in milliseconds.\n * @returns {Retrier} A Retrier instance configured with the given timeout.\n */\nfunction timeout (timeout) {\n const retrier = new Retrier()\n retrier.timeout(timeout)\n return retrier\n}\n\n/**\n * Creates a retrier instance with a single-task timeout.\n * @param {number} timeout - The timeout duration in milliseconds for the retrier task.\n * @returns {Retrier} A Retrier instance configured with the given task timeout.\n */\nfunction taskTimeout (timeout) {\n const retrier = new Retrier()\n retrier.taskTimeout(timeout)\n return retrier\n}\n\n/**\n * Creates a new Retrier instance, sets the task to be retried, and starts the retry process.\n * @param {Function} task - The asynchronous task function to be retried.\n * @returns {Promise<*>} A promise that resolves when the retry process completes.\n */\nfunction start (task) {\n const retrier = new Retrier()\n retrier.task(task)\n return retrier.start()\n}\n\n/**\n *\n * @param {Function} task\n * @returns {Retrier}\n */\nfunction retry (task) {\n const retrier = new Retrier()\n retrier.retry(task)\n return retrier\n}\n\n/**\n *\n * @param {Function} task\n * @returns {Retrier}\n */\nfunction always (task) {\n const retrier = new Retrier()\n retrier.always(task)\n return retrier\n}\n\n/**\n *\n * @param {Function} task\n * @returns {Retrier}\n */\nfunction forever (task) {\n const retrier = new Retrier()\n retrier.forever(task)\n return retrier\n}\n\n// default export\nexport default {\n retry,\n always,\n forever,\n name,\n infinite,\n times,\n maxRetries,\n min,\n max,\n range,\n fixedInterval,\n fixedBackoff,\n fixedIncrease,\n linearBackoff,\n factorIncrease,\n exponentialBackoff,\n shuttleInterval,\n timeout,\n taskTimeout,\n start\n}\n\n// named export\nexport {\n name,\n infinite,\n times,\n maxRetries,\n min,\n max,\n range,\n fixedInterval,\n fixedBackoff,\n fixedIncrease,\n linearBackoff,\n factorIncrease,\n exponentialBackoff,\n shuttleInterval,\n timeout,\n taskTimeout,\n start\n}\n","// 3rd\nimport { LangUtils } from '@creejs/commons-lang'\n\n// owned\nimport Policy from './policy.js'\nimport Retrier from './retrier.js'\nimport Event from './event.js'\nimport RetrierFactory from './retrier-factory.js'\n\n/**\n * Add all factory methods to Retrier as static methods.\n * Now we can create do something like this:\n * ```\n * Retrier.name('myRetrier')\n * Retrier.infinite()\n * ...\n * ```\n */\nLangUtils.defaults(Retrier, RetrierFactory)\n\n/**\n * default export to support\n * 1. import CommonsRetrier from '@creejs/commons-retrier'\n */\nexport default {\n Policy,\n Retrier,\n Event,\n RetrierFactory,\n ...RetrierFactory\n}\n\n/**\n * named export to support\n * 1. import { Retrier } from '@creejs/commons-retrier'\n * 2. import * as CommonsRetrier from '@creejs/commons-retrier'\n */\nexport {\n Policy,\n Retrier,\n Event,\n RetrierFactory\n}\nexport * from './retrier-factory.js'\n"],"names":["n","o","i","s","u","f","a","c","l","b","h","w","g","p","d","m","O","k","L","v","_","e","assertPositive","assertNotNegative","TypeAssert","TypeUtils","FixedInterval","assertFunction","EventEmitter","PromiseUtils","LangUtils"],"mappings":"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"}
|