@jagreehal/workflow 1.9.0 → 1.11.0
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/batch.cjs +1 -1
- package/dist/batch.cjs.map +1 -1
- package/dist/batch.js +1 -1
- package/dist/batch.js.map +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +49 -24
- package/dist/core.d.ts +49 -24
- package/dist/core.js +1 -1
- package/dist/core.js.map +1 -1
- package/dist/index.cjs +5 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/resource.cjs +1 -1
- package/dist/resource.cjs.map +1 -1
- package/dist/resource.js +1 -1
- package/dist/resource.js.map +1 -1
- package/dist/workflow.cjs +1 -1
- package/dist/workflow.cjs.map +1 -1
- package/dist/workflow.d.cts +2 -2
- package/dist/workflow.d.ts +2 -2
- package/dist/workflow.js +1 -1
- package/dist/workflow.js.map +1 -1
- package/package.json +9 -9
package/dist/batch.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var J=Object.defineProperty;var le=Object.getOwnPropertyDescriptor;var pe=Object.getOwnPropertyNames;var Ee=Object.prototype.hasOwnProperty;var ye=(e,u)=>{for(var m in u)J(e,m,{get:u[m],enumerable:!0})},me=(e,u,m,x)=>{if(u&&typeof u=="object"||typeof u=="function")for(let d of pe(u))!Ee.call(e,d)&&d!==m&&J(e,d,{get:()=>u[d],enumerable:!(x=le(u,d))||x.enumerable});return e};var we=e=>me(J({},"__esModule",{value:!0}),e);var ve={};ye(ve,{batchPresets:()=>Pe,isBatchProcessingError:()=>ie,isInvalidBatchConfigError:()=>he,processInBatches:()=>Ae});module.exports=we(ve);var V=e=>({ok:!0,value:e}),b=(e,u)=>({ok:!1,error:e,...u?.cause!==void 0?{cause:u.cause}:{}});var Te=e=>typeof e=="object"&&e!==null&&e.type==="UNEXPECTED_ERROR",z=Symbol.for("step_timeout_marker");function ne(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:z in e}function fe(e){if(!(typeof e!="object"||e===null)){if(e.type==="STEP_TIMEOUT"){let u=e;return{timeoutMs:u.timeoutMs,stepName:u.stepName,stepKey:u.stepKey,attempt:u.attempt}}if(z in e)return e[z]}}var se=Symbol("early-exit");function de(e,u){return{[se]:!0,error:e,meta:u}}function ke(e){return typeof e=="object"&&e!==null&&e[se]===!0}var ue=Symbol("mapper-exception");function Re(e){return{[ue]:!0,thrown:e}}function Ce(e){return typeof e=="object"&&e!==null&&e[ue]===!0}function xe(e){return typeof e=="string"?{name:e}:e??{}}function Z(e,u){let{backoff:m,initialDelay:x,maxDelay:d,jitter:g}=u,l;switch(m){case"fixed":l=x;break;case"linear":l=x*e;break;case"exponential":l=x*Math.pow(2,e-1);break}if(l=Math.min(l,d),g){let n=l*.25*Math.random();l=l+n}return Math.floor(l)}function ee(e){return new Promise(u=>setTimeout(u,e))}var re=Symbol("timeout");async function ge(e,u,m){let x=new AbortController,d=u.error??{type:"STEP_TIMEOUT",stepName:m.name,stepKey:m.key,timeoutMs:u.ms,attempt:m.attempt},g,l=new Promise((P,a)=>{g=setTimeout(()=>{x.abort(),a({[re]:!0,error:d})},u.ms)}),n;u.signal?n=Promise.resolve(e(x.signal)):n=Promise.resolve(e());try{return await Promise.race([n,l])}catch(P){if(typeof P=="object"&&P!==null&&P[re]===!0){let a=P.error;if(typeof a=="object"&&a!==null&&a.type!=="STEP_TIMEOUT"){let h={timeoutMs:u.ms,stepName:m.name,stepKey:m.key,attempt:m.attempt};z in a?a[z]=h:Object.defineProperty(a,z,{value:h,enumerable:!1,writable:!0,configurable:!1})}throw a}throw P}finally{clearTimeout(g)}}var B={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function oe(e,u){let{onError:m,onEvent:x,catchUnexpected:d,workflowId:g,context:l}=u&&typeof u=="object"?u:{},n=g??crypto.randomUUID(),P=!m&&!d,a=[],h=0,U=t=>t??`step_${++h}`,o=t=>{let S=t.context!==void 0||l===void 0?t:{...t,context:l};if(S.type==="step_success"){let M=S.stepId;for(let F=a.length-1;F>=0;F--){let q=a[F];if(q.type==="race"&&!q.winnerId){q.winnerId=M;break}}}x?.(S,l)},A=de,K=t=>ke(t),N=(t,S)=>P?S?.origin==="result"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:t,...S.resultCause!==void 0?{cause:S.resultCause}:{}}}:S?.origin==="throw"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"throw",error:t,thrown:S.thrown}}:{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:t}}:t,X=t=>t.origin==="result"?t.resultCause:t.thrown,G=t=>({type:"UNEXPECTED_ERROR",cause:t.meta.origin==="result"?{type:"STEP_FAILURE",origin:"result",error:t.error,...t.meta.resultCause!==void 0?{cause:t.meta.resultCause}:{}}:{type:"STEP_FAILURE",origin:"throw",error:t.error,thrown:t.meta.thrown}});try{let S=function(w,c){let i=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let r=performance.now(),s=!1;a.push({scopeId:i,type:"parallel"});let R=()=>{if(s)return;s=!0;let E=a.findIndex(p=>p.scopeId===i);E!==-1&&a.splice(E,1),o({type:"scope_end",workflowId:n,scopeId:i,ts:Date.now(),durationMs:performance.now()-r})};o({type:"scope_start",workflowId:n,scopeId:i,scopeType:"parallel",name:w,ts:Date.now()});try{let E=await c();if(R(),!E.ok)throw m?.(E.error,w,l),A(E.error,{origin:"result",resultCause:E.cause});return E.value}catch(E){throw R(),E}})()},M=function(w,c){let i=Object.keys(w),r=c.name??`Parallel(${i.join(", ")})`,s=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let R=performance.now(),E=!1;a.push({scopeId:s,type:"parallel"});let p=()=>{if(E)return;E=!0;let T=a.findIndex(k=>k.scopeId===s);T!==-1&&a.splice(T,1),o({type:"scope_end",workflowId:n,scopeId:s,ts:Date.now(),durationMs:performance.now()-R})};o({type:"scope_start",workflowId:n,scopeId:s,scopeType:"parallel",name:r,ts:Date.now()});try{let T=await new Promise(_=>{if(i.length===0){_([]);return}let I=!1,C=i.length,Q=new Array(i.length);for(let O=0;O<i.length;O++){let j=i[O],$=O;Promise.resolve(w[j]()).catch(f=>b({type:"PROMISE_REJECTED",cause:f},{cause:{type:"PROMISE_REJECTION",reason:f}})).then(f=>{if(!I){if(!f.ok){I=!0,_([{key:j,result:f}]);return}Q[$]={key:j,result:f},C--,C===0&&_(Q)}})}});p();let k={};for(let{key:_,result:I}of T){if(!I.ok)throw m?.(I.error,_,l),A(I.error,{origin:"result",resultCause:I.cause});k[_]=I.value}return k}catch(T){throw p(),T}})()};var D=S,te=M;let t=(w,c)=>(async()=>{let i=xe(c),{name:r,key:s,retry:R,timeout:E}=i,p=U(s),T=x,k=T?performance.now():0;if(!(typeof w=="function")){if(R&&R.attempts>1)throw new Error("step: retry options require a function operation. Direct Promise/Result values cannot be re-executed on retry. Wrap your operation in a function: step(() => yourOperation, { retry: {...} })");if(E)throw new Error("step: timeout options require a function operation. Direct Promise/Result values cannot be wrapped with timeout after they've started. Wrap your operation in a function: step(() => yourOperation, { timeout: {...} })")}let C={attempts:Math.max(1,R?.attempts??1),backoff:R?.backoff??B.backoff,initialDelay:R?.initialDelay??B.initialDelay,maxDelay:R?.maxDelay??B.maxDelay,jitter:R?.jitter??B.jitter,retryOn:R?.retryOn??B.retryOn,onRetry:R?.onRetry??B.onRetry};x&&o({type:"step_start",workflowId:n,stepId:p,stepKey:s,name:r,ts:Date.now()});let Q;for(let f=1;f<=C.attempts;f++){let ce=T?performance.now():0;try{let y;if(typeof w=="function"?E?y=await ge(w,E,{name:r,key:s,attempt:f}):y=await w():y=await w,y.ok){let L=performance.now()-k;return o({type:"step_success",workflowId:n,stepId:p,stepKey:s,name:r,ts:Date.now(),durationMs:L}),s&&o({type:"step_complete",workflowId:n,stepKey:s,name:r,ts:Date.now(),durationMs:L,result:y}),y.value}if(Q=y,f<C.attempts&&C.retryOn(y.error,f)){let L=Z(f,C);o({type:"step_retry",workflowId:n,stepId:p,stepKey:s,name:r,ts:Date.now(),attempt:f+1,maxAttempts:C.attempts,delayMs:L,error:y.error}),C.onRetry(y.error,f,L),await ee(L);continue}C.attempts>1&&o({type:"step_retries_exhausted",workflowId:n,stepId:p,stepKey:s,name:r,ts:Date.now(),durationMs:performance.now()-k,attempts:f,lastError:y.error});break}catch(y){let L=performance.now()-ce;if(K(y))throw o({type:"step_aborted",workflowId:n,stepId:p,stepKey:s,name:r,ts:Date.now(),durationMs:L}),y;if(ne(y)){let v=fe(y),H=E?.ms??v?.timeoutMs??0;if(o({type:"step_timeout",workflowId:n,stepId:p,stepKey:s,name:r,ts:Date.now(),timeoutMs:H,attempt:f}),f<C.attempts&&C.retryOn(y,f)){let Y=Z(f,C);o({type:"step_retry",workflowId:n,stepId:p,stepKey:s,name:r,ts:Date.now(),attempt:f+1,maxAttempts:C.attempts,delayMs:Y,error:y}),C.onRetry(y,f,Y),await ee(Y);continue}C.attempts>1&&o({type:"step_retries_exhausted",workflowId:n,stepId:p,stepKey:s,name:r,ts:Date.now(),durationMs:performance.now()-k,attempts:f,lastError:y})}if(f<C.attempts&&C.retryOn(y,f)){let v=Z(f,C);o({type:"step_retry",workflowId:n,stepId:p,stepKey:s,name:r,ts:Date.now(),attempt:f+1,maxAttempts:C.attempts,delayMs:v,error:y}),C.onRetry(y,f,v),await ee(v);continue}C.attempts>1&&!ne(y)&&o({type:"step_retries_exhausted",workflowId:n,stepId:p,stepKey:s,name:r,ts:Date.now(),durationMs:performance.now()-k,attempts:f,lastError:y});let W=performance.now()-k;if(d){let v;try{v=d(y)}catch(H){throw Re(H)}throw o({type:"step_error",workflowId:n,stepId:p,stepKey:s,name:r,ts:Date.now(),durationMs:W,error:v}),s&&o({type:"step_complete",workflowId:n,stepKey:s,name:r,ts:Date.now(),durationMs:W,result:b(v,{cause:y}),meta:{origin:"throw",thrown:y}}),m?.(v,r,l),A(v,{origin:"throw",thrown:y})}else{let v={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:y}};throw o({type:"step_error",workflowId:n,stepId:p,stepKey:s,name:r,ts:Date.now(),durationMs:W,error:v}),s&&o({type:"step_complete",workflowId:n,stepKey:s,name:r,ts:Date.now(),durationMs:W,result:b(v,{cause:y}),meta:{origin:"throw",thrown:y}}),y}}}let O=Q,j=performance.now()-k,$=N(O.error,{origin:"result",resultCause:O.cause});throw o({type:"step_error",workflowId:n,stepId:p,stepKey:s,name:r,ts:Date.now(),durationMs:j,error:$}),s&&o({type:"step_complete",workflowId:n,stepKey:s,name:r,ts:Date.now(),durationMs:j,result:O,meta:{origin:"result",resultCause:O.cause}}),m?.(O.error,r,l),A(O.error,{origin:"result",resultCause:O.cause})})();t.try=(w,c)=>{let i=c.name,r=c.key,s=U(r),R="error"in c?()=>c.error:c.onError,E=x;return(async()=>{let p=E?performance.now():0;x&&o({type:"step_start",workflowId:n,stepId:s,stepKey:r,name:i,ts:Date.now()});try{let T=await w(),k=performance.now()-p;return o({type:"step_success",workflowId:n,stepId:s,stepKey:r,name:i,ts:Date.now(),durationMs:k}),r&&o({type:"step_complete",workflowId:n,stepKey:r,name:i,ts:Date.now(),durationMs:k,result:V(T)}),T}catch(T){let k=R(T),_=performance.now()-p,I=N(k,{origin:"throw",thrown:T});throw o({type:"step_error",workflowId:n,stepId:s,stepKey:r,name:i,ts:Date.now(),durationMs:_,error:I}),r&&o({type:"step_complete",workflowId:n,stepKey:r,name:i,ts:Date.now(),durationMs:_,result:b(k,{cause:T}),meta:{origin:"throw",thrown:T}}),m?.(k,i,l),A(k,{origin:"throw",thrown:T})}})()},t.fromResult=(w,c)=>{let i=c.name,r=c.key,s=U(r),R="error"in c?()=>c.error:c.onError,E=x;return(async()=>{let p=E?performance.now():0;x&&o({type:"step_start",workflowId:n,stepId:s,stepKey:r,name:i,ts:Date.now()});let T=await w();if(T.ok){let k=performance.now()-p;return o({type:"step_success",workflowId:n,stepId:s,stepKey:r,name:i,ts:Date.now(),durationMs:k}),r&&o({type:"step_complete",workflowId:n,stepKey:r,name:i,ts:Date.now(),durationMs:k,result:V(T.value)}),T.value}else{let k=R(T.error),_=performance.now()-p,I=N(k,{origin:"result",resultCause:T.error});throw o({type:"step_error",workflowId:n,stepId:s,stepKey:r,name:i,ts:Date.now(),durationMs:_,error:I}),r&&o({type:"step_complete",workflowId:n,stepKey:r,name:i,ts:Date.now(),durationMs:_,result:b(k,{cause:T.error}),meta:{origin:"result",resultCause:T.error}}),m?.(k,i,l),A(k,{origin:"result",resultCause:T.error})}})()},t.retry=(w,c)=>t(w,{name:c.name,key:c.key,retry:{attempts:c.attempts,backoff:c.backoff,initialDelay:c.initialDelay,maxDelay:c.maxDelay,jitter:c.jitter,retryOn:c.retryOn,onRetry:c.onRetry},timeout:c.timeout}),t.withTimeout=(w,c)=>t(w,{name:c.name,key:c.key,timeout:c}),t.parallel=((...w)=>{if(typeof w[0]=="string"){let c=w[0],i=w[1];return S(c,i)}else{let c=w[0],i=w[1]??{};return M(c,i)}}),t.race=(w,c)=>{let i=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let r=performance.now(),s=!1,R={scopeId:i,type:"race",winnerId:void 0};a.push(R);let E=()=>{if(s)return;s=!0;let p=a.findIndex(T=>T.scopeId===i);p!==-1&&a.splice(p,1),o({type:"scope_end",workflowId:n,scopeId:i,ts:Date.now(),durationMs:performance.now()-r,winnerId:R.winnerId})};o({type:"scope_start",workflowId:n,scopeId:i,scopeType:"race",name:w,ts:Date.now()});try{let p=await c();if(E(),!p.ok)throw m?.(p.error,w,l),A(p.error,{origin:"result",resultCause:p.cause});return p.value}catch(p){throw E(),p}})()},t.allSettled=(w,c)=>{let i=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let r=performance.now(),s=!1;a.push({scopeId:i,type:"allSettled"});let R=()=>{if(s)return;s=!0;let E=a.findIndex(p=>p.scopeId===i);E!==-1&&a.splice(E,1),o({type:"scope_end",workflowId:n,scopeId:i,ts:Date.now(),durationMs:performance.now()-r})};o({type:"scope_start",workflowId:n,scopeId:i,scopeType:"allSettled",name:w,ts:Date.now()});try{let E=await c();if(R(),!E.ok)throw m?.(E.error,w,l),A(E.error,{origin:"result",resultCause:E.cause});return E.value}catch(E){throw R(),E}})()};let q=await e(t);return V(q)}catch(t){if(Ce(t))throw t.thrown;if(K(t)){let M=X(t.meta);if(d||m)return b(t.error,{cause:M});if(Te(t.error))return b(t.error,{cause:M});let F=G(t);return b(F,{cause:M})}if(d){let M=d(t);return m?.(M,"unexpected",l),b(M,{cause:t})}let S={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:t}};return m?.(S,"unexpected",l),b(S,{cause:t})}}oe.strict=(e,u)=>oe(e,u);function Se(e){return typeof e=="object"&&e!==null&&e.type==="QUEUE_FULL"}function ae(e,u){let{maxConcurrent:m,strategy:x="queue",maxQueueSize:d=1/0}=u,g=0,l=[];async function n(){if(g<m){g++;return}if(x==="reject")throw{type:"QUEUE_FULL",limiterName:e,queueSize:l.length,maxQueueSize:d};if(l.length>=d)throw{type:"QUEUE_FULL",limiterName:e,queueSize:l.length,maxQueueSize:d};return new Promise((a,h)=>{l.push({resolve:a,reject:h})})}function P(){g--,l.length>0&&g<m&&(g++,l.shift()?.resolve())}return{async execute(a){await n();try{return await a()}finally{P()}},async executeAll(a){let h=new Array(a.length),U=[];for(let o=0;o<a.length;o++){let A=o,K=this.execute(a[A]).then(N=>{h[A]=N});U.push(K)}return await Promise.all(U),h},async executeResult(a){try{await n()}catch(h){if(Se(h))return b(h);throw h}try{return await a()}finally{P()}},getStats(){return{activeCount:g,maxConcurrent:m,queueSize:l.length,maxQueueSize:d}},reset(){for(g=0;l.length>0;)l.shift()?.reject(new Error("Limiter reset"))}}}function ie(e){return typeof e=="object"&&e!==null&&e.type==="BATCH_PROCESSING_ERROR"}function he(e){return typeof e=="object"&&e!==null&&e.type==="INVALID_BATCH_CONFIG"}var be=e=>new Promise(u=>setTimeout(u,e));async function Ae(e,u,m,x){let{batchSize:d,concurrency:g,batchDelayMs:l=0}=m,{afterBatch:n,onProgress:P}=x??{};if(!Number.isInteger(d)||d<1)return b({type:"INVALID_BATCH_CONFIG",reason:"batchSize must be a positive integer",field:"batchSize",value:d});if(!Number.isInteger(g)||g<1)return b({type:"INVALID_BATCH_CONFIG",reason:"concurrency must be a positive integer",field:"concurrency",value:g});if(e.length===0)return V([]);let a=[],h=Math.ceil(e.length/d),U=ae("batch-processor",{maxConcurrent:g});for(let o=0;o<h;o++){let A=o*d,K=Math.min(A+d,e.length),N=e.slice(A,K),X=o+1,G=N.map((D,te)=>async()=>{let t=A+te,S=await u(D,t);if(!S.ok)throw{type:"BATCH_PROCESSING_ERROR",error:S.error,itemIndex:t,batchNumber:X};return S.value});try{let D=await U.executeAll(G);a.push(...D)}catch(D){if(ie(D))return b(D);throw D}if(P?.({batch:X,totalBatches:h,processed:a.length,total:e.length,percent:Math.round(a.length/e.length*100)}),n){let D=await n();if(!D.ok)return b({type:"BATCH_PROCESSING_ERROR",error:D.error,batchNumber:X})}l>0&&o<h-1&&await be(l)}return V(a)}var Pe={conservative:{batchSize:20,concurrency:3,batchDelayMs:50},balanced:{batchSize:50,concurrency:5,batchDelayMs:10},aggressive:{batchSize:100,concurrency:10,batchDelayMs:0}};0&&(module.exports={batchPresets,isBatchProcessingError,isInvalidBatchConfigError,processInBatches});
|
|
1
|
+
"use strict";var Y=Object.defineProperty;var ce=Object.getOwnPropertyDescriptor;var le=Object.getOwnPropertyNames;var pe=Object.prototype.hasOwnProperty;var Ee=(e,u)=>{for(var m in u)Y(e,m,{get:u[m],enumerable:!0})},ye=(e,u,m,x)=>{if(u&&typeof u=="object"||typeof u=="function")for(let d of le(u))!pe.call(e,d)&&d!==m&&Y(e,d,{get:()=>u[d],enumerable:!(x=ce(u,d))||x.enumerable});return e};var me=e=>ye(Y({},"__esModule",{value:!0}),e);var Pe={};Ee(Pe,{batchPresets:()=>Ae,isBatchProcessingError:()=>ae,isInvalidBatchConfigError:()=>Se,processInBatches:()=>be});module.exports=me(Pe);var V=e=>({ok:!0,value:e}),b=(e,u)=>({ok:!1,error:e,...u?.cause!==void 0?{cause:u.cause}:{}});var we=e=>typeof e=="object"&&e!==null&&e.type==="UNEXPECTED_ERROR",z=Symbol.for("step_timeout_marker");function te(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:z in e}function Te(e){if(!(typeof e!="object"||e===null)){if(e.type==="STEP_TIMEOUT"){let u=e;return{timeoutMs:u.timeoutMs,stepName:u.stepName,stepKey:u.stepKey,attempt:u.attempt}}if(z in e)return e[z]}}var oe=Symbol("early-exit");function fe(e,u){return{[oe]:!0,error:e,meta:u}}function de(e){return typeof e=="object"&&e!==null&&e[oe]===!0}var se=Symbol("mapper-exception");function ke(e){return{[se]:!0,thrown:e}}function Re(e){return typeof e=="object"&&e!==null&&e[se]===!0}function Ce(e){return typeof e=="string"?{name:e}:e??{}}function J(e,u){let{backoff:m,initialDelay:x,maxDelay:d,jitter:g}=u,l;switch(m){case"fixed":l=x;break;case"linear":l=x*e;break;case"exponential":l=x*Math.pow(2,e-1);break}if(l=Math.min(l,d),g){let t=l*.25*Math.random();l=l+t}return Math.floor(l)}function Z(e){return new Promise(u=>setTimeout(u,e))}var ne=Symbol("timeout");async function xe(e,u,m){let x=new AbortController,d=u.error??{type:"STEP_TIMEOUT",stepName:m.name,stepKey:m.key,timeoutMs:u.ms,attempt:m.attempt},g,l=new Promise((_,a)=>{g=setTimeout(()=>{x.abort(),a({[ne]:!0,error:d})},u.ms)}),t;u.signal?t=Promise.resolve(e(x.signal)):t=Promise.resolve(e());try{return await Promise.race([t,l])}catch(_){if(typeof _=="object"&&_!==null&&_[ne]===!0){let a=_.error;if(typeof a=="object"&&a!==null&&a.type!=="STEP_TIMEOUT"){let h={timeoutMs:u.ms,stepName:m.name,stepKey:m.key,attempt:m.attempt};z in a?a[z]=h:Object.defineProperty(a,z,{value:h,enumerable:!1,writable:!0,configurable:!1})}throw a}throw _}finally{clearTimeout(g)}}var B={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function re(e,u){let{onError:m,onEvent:x,catchUnexpected:d,workflowId:g,context:l}=u&&typeof u=="object"?u:{},t=g??crypto.randomUUID(),_=!m&&!d,a=[],h=0,U=n=>n??`step_${++h}`,o=n=>{let S=n.context!==void 0||l===void 0?n:{...n,context:l};if(S.type==="step_success"){let P=S.stepId;for(let K=a.length-1;K>=0;K--){let q=a[K];if(q.type==="race"&&!q.winnerId){q.winnerId=P;break}}}x?.(S,l)},A=fe,F=n=>de(n),N=(n,S)=>_?S?.origin==="result"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:n,...S.resultCause!==void 0?{cause:S.resultCause}:{}}}:S?.origin==="throw"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"throw",error:n,thrown:S.thrown}}:{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:n}}:n,X=n=>({type:"UNEXPECTED_ERROR",cause:n.meta.origin==="result"?{type:"STEP_FAILURE",origin:"result",error:n.error,...n.meta.resultCause!==void 0?{cause:n.meta.resultCause}:{}}:{type:"STEP_FAILURE",origin:"throw",error:n.error,thrown:n.meta.thrown}});try{let S=function(w,c){let i=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let r=performance.now(),s=!1;a.push({scopeId:i,type:"parallel"});let R=()=>{if(s)return;s=!0;let E=a.findIndex(p=>p.scopeId===i);E!==-1&&a.splice(E,1),o({type:"scope_end",workflowId:t,scopeId:i,ts:Date.now(),durationMs:performance.now()-r})};o({type:"scope_start",workflowId:t,scopeId:i,scopeType:"parallel",name:w,ts:Date.now()});try{let E=await c();if(R(),!E.ok)throw m?.(E.error,w,l),A(E.error,{origin:"result",resultCause:E.cause});return E.value}catch(E){throw R(),E}})()},P=function(w,c){let i=Object.keys(w),r=c.name??`Parallel(${i.join(", ")})`,s=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let R=performance.now(),E=!1;a.push({scopeId:s,type:"parallel"});let p=()=>{if(E)return;E=!0;let T=a.findIndex(k=>k.scopeId===s);T!==-1&&a.splice(T,1),o({type:"scope_end",workflowId:t,scopeId:s,ts:Date.now(),durationMs:performance.now()-R})};o({type:"scope_start",workflowId:t,scopeId:s,scopeType:"parallel",name:r,ts:Date.now()});try{let T=await new Promise(I=>{if(i.length===0){I([]);return}let M=!1,C=i.length,Q=new Array(i.length);for(let O=0;O<i.length;O++){let j=i[O],G=O;Promise.resolve(w[j]()).catch(f=>b({type:"PROMISE_REJECTED",cause:f},{cause:{type:"PROMISE_REJECTION",reason:f}})).then(f=>{if(!M){if(!f.ok){M=!0,I([{key:j,result:f}]);return}Q[G]={key:j,result:f},C--,C===0&&I(Q)}})}});p();let k={};for(let{key:I,result:M}of T){if(!M.ok)throw m?.(M.error,I,l),A(M.error,{origin:"result",resultCause:M.cause});k[I]=M.value}return k}catch(T){throw p(),T}})()};var ee=S,D=P;let n=(w,c)=>(async()=>{let i=Ce(c),{name:r,key:s,retry:R,timeout:E}=i,p=U(s),T=x,k=T?performance.now():0;if(!(typeof w=="function")){if(R&&R.attempts>1)throw new Error("step: retry options require a function operation. Direct Promise/Result values cannot be re-executed on retry. Wrap your operation in a function: step(() => yourOperation, { retry: {...} })");if(E)throw new Error("step: timeout options require a function operation. Direct Promise/Result values cannot be wrapped with timeout after they've started. Wrap your operation in a function: step(() => yourOperation, { timeout: {...} })")}let C={attempts:Math.max(1,R?.attempts??1),backoff:R?.backoff??B.backoff,initialDelay:R?.initialDelay??B.initialDelay,maxDelay:R?.maxDelay??B.maxDelay,jitter:R?.jitter??B.jitter,retryOn:R?.retryOn??B.retryOn,onRetry:R?.onRetry??B.onRetry};x&&o({type:"step_start",workflowId:t,stepId:p,stepKey:s,name:r,ts:Date.now()});let Q;for(let f=1;f<=C.attempts;f++){let ie=T?performance.now():0;try{let y;if(typeof w=="function"?E?y=await xe(w,E,{name:r,key:s,attempt:f}):y=await w():y=await w,y.ok){let L=performance.now()-k;return o({type:"step_success",workflowId:t,stepId:p,stepKey:s,name:r,ts:Date.now(),durationMs:L}),s&&o({type:"step_complete",workflowId:t,stepKey:s,name:r,ts:Date.now(),durationMs:L,result:y}),y.value}if(Q=y,f<C.attempts&&C.retryOn(y.error,f)){let L=J(f,C);o({type:"step_retry",workflowId:t,stepId:p,stepKey:s,name:r,ts:Date.now(),attempt:f+1,maxAttempts:C.attempts,delayMs:L,error:y.error}),C.onRetry(y.error,f,L),await Z(L);continue}C.attempts>1&&o({type:"step_retries_exhausted",workflowId:t,stepId:p,stepKey:s,name:r,ts:Date.now(),durationMs:performance.now()-k,attempts:f,lastError:y.error});break}catch(y){let L=performance.now()-ie;if(F(y))throw o({type:"step_aborted",workflowId:t,stepId:p,stepKey:s,name:r,ts:Date.now(),durationMs:L}),y;if(te(y)){let v=Te(y),$=E?.ms??v?.timeoutMs??0;if(o({type:"step_timeout",workflowId:t,stepId:p,stepKey:s,name:r,ts:Date.now(),timeoutMs:$,attempt:f}),f<C.attempts&&C.retryOn(y,f)){let H=J(f,C);o({type:"step_retry",workflowId:t,stepId:p,stepKey:s,name:r,ts:Date.now(),attempt:f+1,maxAttempts:C.attempts,delayMs:H,error:y}),C.onRetry(y,f,H),await Z(H);continue}C.attempts>1&&o({type:"step_retries_exhausted",workflowId:t,stepId:p,stepKey:s,name:r,ts:Date.now(),durationMs:performance.now()-k,attempts:f,lastError:y})}if(f<C.attempts&&C.retryOn(y,f)){let v=J(f,C);o({type:"step_retry",workflowId:t,stepId:p,stepKey:s,name:r,ts:Date.now(),attempt:f+1,maxAttempts:C.attempts,delayMs:v,error:y}),C.onRetry(y,f,v),await Z(v);continue}C.attempts>1&&!te(y)&&o({type:"step_retries_exhausted",workflowId:t,stepId:p,stepKey:s,name:r,ts:Date.now(),durationMs:performance.now()-k,attempts:f,lastError:y});let W=performance.now()-k;if(d){let v;try{v=d(y)}catch($){throw ke($)}throw o({type:"step_error",workflowId:t,stepId:p,stepKey:s,name:r,ts:Date.now(),durationMs:W,error:v}),s&&o({type:"step_complete",workflowId:t,stepKey:s,name:r,ts:Date.now(),durationMs:W,result:b(v,{cause:y}),meta:{origin:"throw",thrown:y}}),m?.(v,r,l),A(v,{origin:"throw",thrown:y})}else{let v={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:y}};throw o({type:"step_error",workflowId:t,stepId:p,stepKey:s,name:r,ts:Date.now(),durationMs:W,error:v}),s&&o({type:"step_complete",workflowId:t,stepKey:s,name:r,ts:Date.now(),durationMs:W,result:b(v,{cause:y}),meta:{origin:"throw",thrown:y}}),y}}}let O=Q,j=performance.now()-k,G=N(O.error,{origin:"result",resultCause:O.cause});throw o({type:"step_error",workflowId:t,stepId:p,stepKey:s,name:r,ts:Date.now(),durationMs:j,error:G}),s&&o({type:"step_complete",workflowId:t,stepKey:s,name:r,ts:Date.now(),durationMs:j,result:O,meta:{origin:"result",resultCause:O.cause}}),m?.(O.error,r,l),A(O.error,{origin:"result",resultCause:O.cause})})();n.try=(w,c)=>{let i=c.name,r=c.key,s=U(r),R="error"in c?()=>c.error:c.onError,E=x;return(async()=>{let p=E?performance.now():0;x&&o({type:"step_start",workflowId:t,stepId:s,stepKey:r,name:i,ts:Date.now()});try{let T=await w(),k=performance.now()-p;return o({type:"step_success",workflowId:t,stepId:s,stepKey:r,name:i,ts:Date.now(),durationMs:k}),r&&o({type:"step_complete",workflowId:t,stepKey:r,name:i,ts:Date.now(),durationMs:k,result:V(T)}),T}catch(T){let k=R(T),I=performance.now()-p,M=N(k,{origin:"throw",thrown:T});throw o({type:"step_error",workflowId:t,stepId:s,stepKey:r,name:i,ts:Date.now(),durationMs:I,error:M}),r&&o({type:"step_complete",workflowId:t,stepKey:r,name:i,ts:Date.now(),durationMs:I,result:b(k,{cause:T}),meta:{origin:"throw",thrown:T}}),m?.(k,i,l),A(k,{origin:"throw",thrown:T})}})()},n.fromResult=(w,c)=>{let i=c.name,r=c.key,s=U(r),R="error"in c?()=>c.error:c.onError,E=x;return(async()=>{let p=E?performance.now():0;x&&o({type:"step_start",workflowId:t,stepId:s,stepKey:r,name:i,ts:Date.now()});let T=await w();if(T.ok){let k=performance.now()-p;return o({type:"step_success",workflowId:t,stepId:s,stepKey:r,name:i,ts:Date.now(),durationMs:k}),r&&o({type:"step_complete",workflowId:t,stepKey:r,name:i,ts:Date.now(),durationMs:k,result:V(T.value)}),T.value}else{let k=R(T.error),I=performance.now()-p,M=N(k,{origin:"result",resultCause:T.error});throw o({type:"step_error",workflowId:t,stepId:s,stepKey:r,name:i,ts:Date.now(),durationMs:I,error:M}),r&&o({type:"step_complete",workflowId:t,stepKey:r,name:i,ts:Date.now(),durationMs:I,result:b(k,{cause:T.error}),meta:{origin:"result",resultCause:T.error}}),m?.(k,i,l),A(k,{origin:"result",resultCause:T.error})}})()},n.retry=(w,c)=>n(w,{name:c.name,key:c.key,retry:{attempts:c.attempts,backoff:c.backoff,initialDelay:c.initialDelay,maxDelay:c.maxDelay,jitter:c.jitter,retryOn:c.retryOn,onRetry:c.onRetry},timeout:c.timeout}),n.withTimeout=(w,c)=>n(w,{name:c.name,key:c.key,timeout:c}),n.parallel=((...w)=>{if(typeof w[0]=="string"){let c=w[0],i=w[1];return S(c,i)}else{let c=w[0],i=w[1]??{};return P(c,i)}}),n.race=(w,c)=>{let i=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let r=performance.now(),s=!1,R={scopeId:i,type:"race",winnerId:void 0};a.push(R);let E=()=>{if(s)return;s=!0;let p=a.findIndex(T=>T.scopeId===i);p!==-1&&a.splice(p,1),o({type:"scope_end",workflowId:t,scopeId:i,ts:Date.now(),durationMs:performance.now()-r,winnerId:R.winnerId})};o({type:"scope_start",workflowId:t,scopeId:i,scopeType:"race",name:w,ts:Date.now()});try{let p=await c();if(E(),!p.ok)throw m?.(p.error,w,l),A(p.error,{origin:"result",resultCause:p.cause});return p.value}catch(p){throw E(),p}})()},n.allSettled=(w,c)=>{let i=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let r=performance.now(),s=!1;a.push({scopeId:i,type:"allSettled"});let R=()=>{if(s)return;s=!0;let E=a.findIndex(p=>p.scopeId===i);E!==-1&&a.splice(E,1),o({type:"scope_end",workflowId:t,scopeId:i,ts:Date.now(),durationMs:performance.now()-r})};o({type:"scope_start",workflowId:t,scopeId:i,scopeType:"allSettled",name:w,ts:Date.now()});try{let E=await c();if(R(),!E.ok)throw m?.(E.error,w,l),A(E.error,{origin:"result",resultCause:E.cause});return E.value}catch(E){throw R(),E}})()};let q=await e(n);return V(q)}catch(n){if(Re(n))throw n.thrown;if(F(n)){let P=n.meta.origin==="throw"?n.meta.thrown:n.meta.resultCause;if(d||m)return b(n.error,{cause:P});if(we(n.error))return b(n.error,{cause:P});let K=X(n);return b(K,{cause:P})}if(d){let P=d(n);return m?.(P,"unexpected",l),b(P,{cause:n})}let S={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:n}};return m?.(S,"unexpected",l),b(S,{cause:n})}}re.strict=(e,u)=>re(e,u);function ge(e){return typeof e=="object"&&e!==null&&e.type==="QUEUE_FULL"}function ue(e,u){let{maxConcurrent:m,strategy:x="queue",maxQueueSize:d=1/0}=u,g=0,l=[];async function t(){if(g<m){g++;return}if(x==="reject")throw{type:"QUEUE_FULL",limiterName:e,queueSize:l.length,maxQueueSize:d};if(l.length>=d)throw{type:"QUEUE_FULL",limiterName:e,queueSize:l.length,maxQueueSize:d};return new Promise((a,h)=>{l.push({resolve:a,reject:h})})}function _(){g--,l.length>0&&g<m&&(g++,l.shift()?.resolve())}return{async execute(a){await t();try{return await a()}finally{_()}},async executeAll(a){let h=new Array(a.length),U=[];for(let o=0;o<a.length;o++){let A=o,F=this.execute(a[A]).then(N=>{h[A]=N});U.push(F)}return await Promise.all(U),h},async executeResult(a){try{await t()}catch(h){if(ge(h))return b(h);throw h}try{return await a()}finally{_()}},getStats(){return{activeCount:g,maxConcurrent:m,queueSize:l.length,maxQueueSize:d}},reset(){for(g=0;l.length>0;)l.shift()?.reject(new Error("Limiter reset"))}}}function ae(e){return typeof e=="object"&&e!==null&&e.type==="BATCH_PROCESSING_ERROR"}function Se(e){return typeof e=="object"&&e!==null&&e.type==="INVALID_BATCH_CONFIG"}var he=e=>new Promise(u=>setTimeout(u,e));async function be(e,u,m,x){let{batchSize:d,concurrency:g,batchDelayMs:l=0}=m,{afterBatch:t,onProgress:_}=x??{};if(!Number.isInteger(d)||d<1)return b({type:"INVALID_BATCH_CONFIG",reason:"batchSize must be a positive integer",field:"batchSize",value:d});if(!Number.isInteger(g)||g<1)return b({type:"INVALID_BATCH_CONFIG",reason:"concurrency must be a positive integer",field:"concurrency",value:g});if(e.length===0)return V([]);let a=[],h=Math.ceil(e.length/d),U=ue("batch-processor",{maxConcurrent:g});for(let o=0;o<h;o++){let A=o*d,F=Math.min(A+d,e.length),N=e.slice(A,F),X=o+1,ee=N.map((D,n)=>async()=>{let S=A+n,P=await u(D,S);if(!P.ok)throw{type:"BATCH_PROCESSING_ERROR",error:P.error,itemIndex:S,batchNumber:X};return P.value});try{let D=await U.executeAll(ee);a.push(...D)}catch(D){if(ae(D))return b(D);throw D}if(_?.({batch:X,totalBatches:h,processed:a.length,total:e.length,percent:Math.round(a.length/e.length*100)}),t){let D=await t();if(!D.ok)return b({type:"BATCH_PROCESSING_ERROR",error:D.error,batchNumber:X})}l>0&&o<h-1&&await he(l)}return V(a)}var Ae={conservative:{batchSize:20,concurrency:3,batchDelayMs:50},balanced:{batchSize:50,concurrency:5,batchDelayMs:10},aggressive:{batchSize:100,concurrency:10,batchDelayMs:0}};0&&(module.exports={batchPresets,isBatchProcessingError,isInvalidBatchConfigError,processInBatches});
|
|
2
2
|
//# sourceMappingURL=batch.cjs.map
|