awaitly 1.0.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/LICENSE +21 -0
- package/README.md +1278 -0
- package/dist/batch.cjs +2 -0
- package/dist/batch.cjs.map +1 -0
- package/dist/batch.d.cts +197 -0
- package/dist/batch.d.ts +197 -0
- package/dist/batch.js +2 -0
- package/dist/batch.js.map +1 -0
- package/dist/circuit-breaker.cjs +2 -0
- package/dist/circuit-breaker.cjs.map +1 -0
- package/dist/circuit-breaker.d.cts +208 -0
- package/dist/circuit-breaker.d.ts +208 -0
- package/dist/circuit-breaker.js +2 -0
- package/dist/circuit-breaker.js.map +1 -0
- package/dist/conditional.cjs +2 -0
- package/dist/conditional.cjs.map +1 -0
- package/dist/conditional.d.cts +249 -0
- package/dist/conditional.d.ts +249 -0
- package/dist/conditional.js +2 -0
- package/dist/conditional.js.map +1 -0
- package/dist/core-BuTBsR0x.d.cts +2325 -0
- package/dist/core-BuTBsR0x.d.ts +2325 -0
- package/dist/core.cjs +2 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.d.cts +3 -0
- package/dist/core.d.ts +3 -0
- package/dist/core.js +2 -0
- package/dist/core.js.map +1 -0
- package/dist/devtools.cjs +11 -0
- package/dist/devtools.cjs.map +1 -0
- package/dist/devtools.d.cts +176 -0
- package/dist/devtools.d.ts +176 -0
- package/dist/devtools.js +11 -0
- package/dist/devtools.js.map +1 -0
- package/dist/duration.cjs +2 -0
- package/dist/duration.cjs.map +1 -0
- package/dist/duration.d.cts +246 -0
- package/dist/duration.d.ts +246 -0
- package/dist/duration.js +2 -0
- package/dist/duration.js.map +1 -0
- package/dist/hitl.cjs +2 -0
- package/dist/hitl.cjs.map +1 -0
- package/dist/hitl.d.cts +337 -0
- package/dist/hitl.d.ts +337 -0
- package/dist/hitl.js +2 -0
- package/dist/hitl.js.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/match.cjs +2 -0
- package/dist/match.cjs.map +1 -0
- package/dist/match.d.cts +209 -0
- package/dist/match.d.ts +209 -0
- package/dist/match.js +2 -0
- package/dist/match.js.map +1 -0
- package/dist/otel.cjs +2 -0
- package/dist/otel.cjs.map +1 -0
- package/dist/otel.d.cts +185 -0
- package/dist/otel.d.ts +185 -0
- package/dist/otel.js +2 -0
- package/dist/otel.js.map +1 -0
- package/dist/persistence.cjs +2 -0
- package/dist/persistence.cjs.map +1 -0
- package/dist/persistence.d.cts +572 -0
- package/dist/persistence.d.ts +572 -0
- package/dist/persistence.js +2 -0
- package/dist/persistence.js.map +1 -0
- package/dist/policies.cjs +2 -0
- package/dist/policies.cjs.map +1 -0
- package/dist/policies.d.cts +378 -0
- package/dist/policies.d.ts +378 -0
- package/dist/policies.js +2 -0
- package/dist/policies.js.map +1 -0
- package/dist/ratelimit.cjs +2 -0
- package/dist/ratelimit.cjs.map +1 -0
- package/dist/ratelimit.d.cts +279 -0
- package/dist/ratelimit.d.ts +279 -0
- package/dist/ratelimit.js +2 -0
- package/dist/ratelimit.js.map +1 -0
- package/dist/reliability.cjs +2 -0
- package/dist/reliability.cjs.map +1 -0
- package/dist/reliability.d.cts +5 -0
- package/dist/reliability.d.ts +5 -0
- package/dist/reliability.js +2 -0
- package/dist/reliability.js.map +1 -0
- package/dist/resource.cjs +2 -0
- package/dist/resource.cjs.map +1 -0
- package/dist/resource.d.cts +171 -0
- package/dist/resource.d.ts +171 -0
- package/dist/resource.js +2 -0
- package/dist/resource.js.map +1 -0
- package/dist/retry.cjs +2 -0
- package/dist/retry.cjs.map +1 -0
- package/dist/retry.d.cts +2 -0
- package/dist/retry.d.ts +2 -0
- package/dist/retry.js +2 -0
- package/dist/retry.js.map +1 -0
- package/dist/saga.cjs +2 -0
- package/dist/saga.cjs.map +1 -0
- package/dist/saga.d.cts +231 -0
- package/dist/saga.d.ts +231 -0
- package/dist/saga.js +2 -0
- package/dist/saga.js.map +1 -0
- package/dist/schedule.cjs +2 -0
- package/dist/schedule.cjs.map +1 -0
- package/dist/schedule.d.cts +387 -0
- package/dist/schedule.d.ts +387 -0
- package/dist/schedule.js +2 -0
- package/dist/schedule.js.map +1 -0
- package/dist/tagged-error.cjs +2 -0
- package/dist/tagged-error.cjs.map +1 -0
- package/dist/tagged-error.d.cts +252 -0
- package/dist/tagged-error.d.ts +252 -0
- package/dist/tagged-error.js +2 -0
- package/dist/tagged-error.js.map +1 -0
- package/dist/testing.cjs +2 -0
- package/dist/testing.cjs.map +1 -0
- package/dist/testing.d.cts +228 -0
- package/dist/testing.d.ts +228 -0
- package/dist/testing.js +2 -0
- package/dist/testing.js.map +1 -0
- package/dist/visualize.cjs +1573 -0
- package/dist/visualize.cjs.map +1 -0
- package/dist/visualize.d.cts +1415 -0
- package/dist/visualize.d.ts +1415 -0
- package/dist/visualize.js +1573 -0
- package/dist/visualize.js.map +1 -0
- package/dist/webhook.cjs +2 -0
- package/dist/webhook.cjs.map +1 -0
- package/dist/webhook.d.cts +469 -0
- package/dist/webhook.d.ts +469 -0
- package/dist/webhook.js +2 -0
- package/dist/webhook.js.map +1 -0
- package/dist/workflow-entry-C6nH8ByN.d.ts +858 -0
- package/dist/workflow-entry-RRTlSg_4.d.cts +858 -0
- package/dist/workflow.cjs +2 -0
- package/dist/workflow.cjs.map +1 -0
- package/dist/workflow.d.cts +2 -0
- package/dist/workflow.d.ts +2 -0
- package/dist/workflow.js +2 -0
- package/dist/workflow.js.map +1 -0
- package/docs/advanced.md +1548 -0
- package/docs/api.md +513 -0
- package/docs/coming-from-neverthrow.md +1013 -0
- package/docs/match.md +417 -0
- package/docs/pino-logging-example.md +396 -0
- package/docs/policies.md +508 -0
- package/docs/resource-management.md +509 -0
- package/docs/schedule.md +467 -0
- package/docs/tagged-error.md +785 -0
- package/docs/visualization.md +430 -0
- package/docs/visualize-examples.md +330 -0
- package/package.json +227 -0
package/dist/workflow.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var I=s=>({ok:!0,value:s}),h=(s,c)=>({ok:!1,error:s,...c?.cause!==void 0?{cause:c.cause}:{}});var Ee=s=>typeof s=="object"&&s!==null&&s.type==="UNEXPECTED_ERROR",j=Symbol.for("step_timeout_marker");function oe(s){return typeof s!="object"||s===null?!1:s.type==="STEP_TIMEOUT"?!0:j in s}function ae(s){if(!(typeof s!="object"||s===null)){if(s.type==="STEP_TIMEOUT"){let c=s;return{timeoutMs:c.timeoutMs,stepName:c.stepName,stepKey:c.stepKey,attempt:c.attempt}}if(j in s)return s[j]}}var pe=Symbol("early-exit");function Y(s,c){return{[pe]:!0,error:s,meta:c}}function $(s){return typeof s=="object"&&s!==null&&s[pe]===!0}var ie=Symbol("mapper-exception");function ye(s){return{[ie]:!0,thrown:s}}function we(s){return typeof s=="object"&&s!==null&&s[ie]===!0}function ke(s){return typeof s=="string"?{name:s}:s??{}}function ne(s,c){let{backoff:C,initialDelay:_,maxDelay:U,jitter:M}=c,R;switch(C){case"fixed":R=_;break;case"linear":R=_*s;break;case"exponential":R=_*Math.pow(2,s-1);break}if(R=Math.min(R,U),M){let l=R*.25*Math.random();R=R+l}return Math.floor(R)}function re(s){return new Promise(c=>setTimeout(c,s))}var ue=Symbol("timeout");async function me(s,c,C){let _=new AbortController,U=c.error??{type:"STEP_TIMEOUT",stepName:C.name,stepKey:C.key,timeoutMs:c.ms,attempt:C.attempt},M,R=new Promise((f,k)=>{M=setTimeout(()=>{_.abort(),k({[ue]:!0,error:U})},c.ms)}),l;c.signal?l=Promise.resolve(s(_.signal)):l=Promise.resolve(s());try{return await Promise.race([l,R])}catch(f){if(typeof f=="object"&&f!==null&&f[ue]===!0){let k=f.error;if(typeof k=="object"&&k!==null&&k.type!=="STEP_TIMEOUT"){let N={timeoutMs:c.ms,stepName:C.name,stepKey:C.key,attempt:C.attempt};j in k?k[j]=N:Object.defineProperty(k,j,{value:N,enumerable:!1,writable:!0,configurable:!1})}throw k}throw f}finally{clearTimeout(M)}}var X={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function B(s,c){let{onError:C,onEvent:_,catchUnexpected:U,workflowId:M,context:R}=c&&typeof c=="object"?c:{},l=M??crypto.randomUUID(),f=!C&&!U,k=[],N=0,A=i=>i??`step_${++N}`,y=i=>{let v=i.context!==void 0||R===void 0?i:{...i,context:R};if(v.type==="step_success"){let P=v.stepId;for(let K=k.length-1;K>=0;K--){let W=k[K];if(W.type==="race"&&!W.winnerId){W.winnerId=P;break}}}_?.(v,R)},O=Y,G=i=>$(i),J=(i,v)=>f?v?.origin==="result"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:i,...v.resultCause!==void 0?{cause:v.resultCause}:{}}}:v?.origin==="throw"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"throw",error:i,thrown:v.thrown}}:{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:i}}:i,Q=i=>({type:"UNEXPECTED_ERROR",cause:i.meta.origin==="result"?{type:"STEP_FAILURE",origin:"result",error:i.error,...i.meta.resultCause!==void 0?{cause:i.meta.resultCause}:{}}:{type:"STEP_FAILURE",origin:"throw",error:i.error,thrown:i.meta.thrown}});try{let v=function(w,E){let t=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let n=performance.now(),r=!1;k.push({scopeId:t,type:"parallel"});let o=()=>{if(r)return;r=!0;let p=k.findIndex(e=>e.scopeId===t);p!==-1&&k.splice(p,1),y({type:"scope_end",workflowId:l,scopeId:t,ts:Date.now(),durationMs:performance.now()-n})};y({type:"scope_start",workflowId:l,scopeId:t,scopeType:"parallel",name:w,ts:Date.now()});try{let p=await E();if(o(),!p.ok)throw C?.(p.error,w,R),O(p.error,{origin:"result",resultCause:p.cause});return p.value}catch(p){throw o(),p}})()},P=function(w,E){let t=Object.keys(w),n=E.name??`Parallel(${t.join(", ")})`,r=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let o=performance.now(),p=!1;k.push({scopeId:r,type:"parallel"});let e=()=>{if(p)return;p=!0;let u=k.findIndex(a=>a.scopeId===r);u!==-1&&k.splice(u,1),y({type:"scope_end",workflowId:l,scopeId:r,ts:Date.now(),durationMs:performance.now()-o})};y({type:"scope_start",workflowId:l,scopeId:r,scopeType:"parallel",name:n,ts:Date.now()});try{let u=await new Promise(x=>{if(t.length===0){x([]);return}let g=!1,S=t.length,H=new Array(t.length);for(let D=0;D<t.length;D++){let L=t[D],Z=D;Promise.resolve(w[L]()).catch(T=>h({type:"PROMISE_REJECTED",cause:T},{cause:{type:"PROMISE_REJECTION",reason:T}})).then(T=>{if(!g){if(!T.ok){g=!0,x([{key:L,result:T}]);return}H[Z]={key:L,result:T},S--,S===0&&x(H)}})}});e();let a={};for(let{key:x,result:g}of u){if(!g.ok)throw C?.(g.error,x,R),O(g.error,{origin:"result",resultCause:g.cause});a[x]=g.value}return a}catch(u){throw e(),u}})()};var V=v,d=P;let i=(w,E)=>(async()=>{let t=ke(E),{name:n,key:r,retry:o,timeout:p}=t,e=A(r),u=_,a=u?performance.now():0;if(!(typeof w=="function")){if(o&&o.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(p)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 S={attempts:Math.max(1,o?.attempts??1),backoff:o?.backoff??X.backoff,initialDelay:o?.initialDelay??X.initialDelay,maxDelay:o?.maxDelay??X.maxDelay,jitter:o?.jitter??X.jitter,retryOn:o?.retryOn??X.retryOn,onRetry:o?.onRetry??X.onRetry};_&&y({type:"step_start",workflowId:l,stepId:e,stepKey:r,name:n,ts:Date.now()});let H;for(let T=1;T<=S.attempts;T++){let le=u?performance.now():0;try{let m;if(typeof w=="function"?p?m=await me(w,p,{name:n,key:r,attempt:T}):m=await w():m=await w,m.ok){let F=performance.now()-a;return y({type:"step_success",workflowId:l,stepId:e,stepKey:r,name:n,ts:Date.now(),durationMs:F}),r&&y({type:"step_complete",workflowId:l,stepKey:r,name:n,ts:Date.now(),durationMs:F,result:m}),m.value}if(H=m,T<S.attempts&&S.retryOn(m.error,T)){let F=ne(T,S);y({type:"step_retry",workflowId:l,stepId:e,stepKey:r,name:n,ts:Date.now(),attempt:T+1,maxAttempts:S.attempts,delayMs:F,error:m.error}),S.onRetry(m.error,T,F),await re(F);continue}S.attempts>1&&y({type:"step_retries_exhausted",workflowId:l,stepId:e,stepKey:r,name:n,ts:Date.now(),durationMs:performance.now()-a,attempts:T,lastError:m.error});break}catch(m){let F=performance.now()-le;if(G(m))throw y({type:"step_aborted",workflowId:l,stepId:e,stepKey:r,name:n,ts:Date.now(),durationMs:F}),m;if(oe(m)){let b=ae(m),ee=p?.ms??b?.timeoutMs??0;if(y({type:"step_timeout",workflowId:l,stepId:e,stepKey:r,name:n,ts:Date.now(),timeoutMs:ee,attempt:T}),T<S.attempts&&S.retryOn(m,T)){let te=ne(T,S);y({type:"step_retry",workflowId:l,stepId:e,stepKey:r,name:n,ts:Date.now(),attempt:T+1,maxAttempts:S.attempts,delayMs:te,error:m}),S.onRetry(m,T,te),await re(te);continue}S.attempts>1&&y({type:"step_retries_exhausted",workflowId:l,stepId:e,stepKey:r,name:n,ts:Date.now(),durationMs:performance.now()-a,attempts:T,lastError:m})}if(T<S.attempts&&S.retryOn(m,T)){let b=ne(T,S);y({type:"step_retry",workflowId:l,stepId:e,stepKey:r,name:n,ts:Date.now(),attempt:T+1,maxAttempts:S.attempts,delayMs:b,error:m}),S.onRetry(m,T,b),await re(b);continue}S.attempts>1&&!oe(m)&&y({type:"step_retries_exhausted",workflowId:l,stepId:e,stepKey:r,name:n,ts:Date.now(),durationMs:performance.now()-a,attempts:T,lastError:m});let q=performance.now()-a;if(U){let b;try{b=U(m)}catch(ee){throw ye(ee)}throw y({type:"step_error",workflowId:l,stepId:e,stepKey:r,name:n,ts:Date.now(),durationMs:q,error:b}),r&&y({type:"step_complete",workflowId:l,stepKey:r,name:n,ts:Date.now(),durationMs:q,result:h(b,{cause:m}),meta:{origin:"throw",thrown:m}}),C?.(b,n,R),O(b,{origin:"throw",thrown:m})}else{let b={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:m}};throw y({type:"step_error",workflowId:l,stepId:e,stepKey:r,name:n,ts:Date.now(),durationMs:q,error:b}),r&&y({type:"step_complete",workflowId:l,stepKey:r,name:n,ts:Date.now(),durationMs:q,result:h(b,{cause:m}),meta:{origin:"throw",thrown:m}}),m}}}let D=H,L=performance.now()-a,Z=J(D.error,{origin:"result",resultCause:D.cause});throw y({type:"step_error",workflowId:l,stepId:e,stepKey:r,name:n,ts:Date.now(),durationMs:L,error:Z}),r&&y({type:"step_complete",workflowId:l,stepKey:r,name:n,ts:Date.now(),durationMs:L,result:D,meta:{origin:"result",resultCause:D.cause}}),C?.(D.error,n,R),O(D.error,{origin:"result",resultCause:D.cause})})();i.try=(w,E)=>{let t=E.name,n=E.key,r=A(n),o="error"in E?()=>E.error:E.onError,p=_;return(async()=>{let e=p?performance.now():0;_&&y({type:"step_start",workflowId:l,stepId:r,stepKey:n,name:t,ts:Date.now()});try{let u=await w(),a=performance.now()-e;return y({type:"step_success",workflowId:l,stepId:r,stepKey:n,name:t,ts:Date.now(),durationMs:a}),n&&y({type:"step_complete",workflowId:l,stepKey:n,name:t,ts:Date.now(),durationMs:a,result:I(u)}),u}catch(u){let a=o(u),x=performance.now()-e,g=J(a,{origin:"throw",thrown:u});throw y({type:"step_error",workflowId:l,stepId:r,stepKey:n,name:t,ts:Date.now(),durationMs:x,error:g}),n&&y({type:"step_complete",workflowId:l,stepKey:n,name:t,ts:Date.now(),durationMs:x,result:h(a,{cause:u}),meta:{origin:"throw",thrown:u}}),C?.(a,t,R),O(a,{origin:"throw",thrown:u})}})()},i.fromResult=(w,E)=>{let t=E.name,n=E.key,r=A(n),o="error"in E?()=>E.error:E.onError,p=_;return(async()=>{let e=p?performance.now():0;_&&y({type:"step_start",workflowId:l,stepId:r,stepKey:n,name:t,ts:Date.now()});let u=await w();if(u.ok){let a=performance.now()-e;return y({type:"step_success",workflowId:l,stepId:r,stepKey:n,name:t,ts:Date.now(),durationMs:a}),n&&y({type:"step_complete",workflowId:l,stepKey:n,name:t,ts:Date.now(),durationMs:a,result:I(u.value)}),u.value}else{let a=o(u.error),x=performance.now()-e,g=J(a,{origin:"result",resultCause:u.error});throw y({type:"step_error",workflowId:l,stepId:r,stepKey:n,name:t,ts:Date.now(),durationMs:x,error:g}),n&&y({type:"step_complete",workflowId:l,stepKey:n,name:t,ts:Date.now(),durationMs:x,result:h(a,{cause:u.error}),meta:{origin:"result",resultCause:u.error}}),C?.(a,t,R),O(a,{origin:"result",resultCause:u.error})}})()},i.retry=(w,E)=>i(w,{name:E.name,key:E.key,retry:{attempts:E.attempts,backoff:E.backoff,initialDelay:E.initialDelay,maxDelay:E.maxDelay,jitter:E.jitter,retryOn:E.retryOn,onRetry:E.onRetry},timeout:E.timeout}),i.withTimeout=(w,E)=>i(w,{name:E.name,key:E.key,timeout:E}),i.parallel=((...w)=>{if(typeof w[0]=="string"){let E=w[0],t=w[1];return v(E,t)}else{let E=w[0],t=w[1]??{};return P(E,t)}}),i.race=(w,E)=>{let t=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let n=performance.now(),r=!1,o={scopeId:t,type:"race",winnerId:void 0};k.push(o);let p=()=>{if(r)return;r=!0;let e=k.findIndex(u=>u.scopeId===t);e!==-1&&k.splice(e,1),y({type:"scope_end",workflowId:l,scopeId:t,ts:Date.now(),durationMs:performance.now()-n,winnerId:o.winnerId})};y({type:"scope_start",workflowId:l,scopeId:t,scopeType:"race",name:w,ts:Date.now()});try{let e=await E();if(p(),!e.ok)throw C?.(e.error,w,R),O(e.error,{origin:"result",resultCause:e.cause});return e.value}catch(e){throw p(),e}})()},i.allSettled=(w,E)=>{let t=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let n=performance.now(),r=!1;k.push({scopeId:t,type:"allSettled"});let o=()=>{if(r)return;r=!0;let p=k.findIndex(e=>e.scopeId===t);p!==-1&&k.splice(p,1),y({type:"scope_end",workflowId:l,scopeId:t,ts:Date.now(),durationMs:performance.now()-n})};y({type:"scope_start",workflowId:l,scopeId:t,scopeType:"allSettled",name:w,ts:Date.now()});try{let p=await E();if(o(),!p.ok)throw C?.(p.error,w,R),O(p.error,{origin:"result",resultCause:p.cause});return p.value}catch(p){throw o(),p}})()};let W=await s(i);return I(W)}catch(i){if(we(i))throw i.thrown;if(G(i)){let P=i.meta.origin==="throw"?i.meta.thrown:i.meta.resultCause;if(U||C)return h(i.error,{cause:P});if(Ee(i.error))return h(i.error,{cause:P});let K=Q(i);return h(K,{cause:P})}if(U){let P=U(i);return C?.(P,"unexpected",R),h(P,{cause:i})}let v={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:i}};return C?.(v,"unexpected",R),h(v,{cause:i})}}B.strict=(s,c)=>B(s,c);function fe(){let s=new Map;return{handleEvent:c=>{ce(c)&&s.set(c.stepKey,{result:c.result,meta:c.meta})},getState:()=>({steps:new Map(s)}),clear:()=>s.clear()}}function de(s){return typeof s=="object"&&s!==null&&s.__cachedMeta===!0}function z(s,c,C){return h(s,{cause:{__cachedMeta:!0,originalCause:C,meta:c}})}function se(s){return de(s)?s.meta:{origin:"result",resultCause:s}}function Te(s,c){async function C(_,U){let M=typeof U=="function",R=M?_:void 0,l=M?U:_,f=crypto.randomUUID(),k=c?.createContext?.(),N={workflowId:f,onEvent:c?.onEvent,context:k!==void 0?k:void 0},A=t=>{let n=t.context!==void 0||k===void 0?t:{...t,context:k};c?.onEvent?.(n,k)},y=c?.shouldRun,O=c?.catchUnexpected;if(y){let t=performance.now();try{let n=await y(f,k),r=performance.now()-t;if(A({type:"hook_should_run",workflowId:f,ts:Date.now(),durationMs:r,result:n,skipped:!n}),!n){let o=new Error("Workflow skipped by shouldRun hook");if(O){let e=O(o);return h(e)}return h({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:o}})}}catch(n){let r=performance.now()-t;if(A({type:"hook_should_run_error",workflowId:f,ts:Date.now(),durationMs:r,error:n}),O){let p=O(n);return h(p)}return h({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:n}})}}let G=c?.onBeforeStart;if(G){let t=performance.now();try{let n=await G(f,k),r=performance.now()-t;if(A({type:"hook_before_start",workflowId:f,ts:Date.now(),durationMs:r,result:n,skipped:!n}),!n){let o=new Error("Workflow skipped by onBeforeStart hook");if(O){let e=O(o);return h(e)}return h({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:o}})}}catch(n){let r=performance.now()-t;if(A({type:"hook_before_start_error",workflowId:f,ts:Date.now(),durationMs:r,error:n}),O){let p=O(n);return h(p)}return h({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:n}})}}let J=Date.now(),Q=performance.now();A({type:"workflow_start",workflowId:f,ts:J});let V=c?.resumeState,d=c?.cache;if(V&&!d&&(d=new Map),V&&d){let t=typeof V=="function"?await V():V;for(let[n,r]of t.steps){let{result:o,meta:p}=r;if(o.ok)d.set(n,o);else{let e=p??{origin:"result",resultCause:o.cause};d.set(n,z(o.error,e,o.cause))}}}let i=t=>typeof t=="string"?{name:t}:t??{},v=c?.onAfterStep,P=async(t,n)=>{if(!v)return;let r=performance.now();try{await v(t,n,f,k);let o=performance.now()-r;A({type:"hook_after_step",workflowId:f,stepKey:t,ts:Date.now(),durationMs:o})}catch(o){let p=performance.now()-r;throw A({type:"hook_after_step_error",workflowId:f,stepKey:t,ts:Date.now(),durationMs:p,error:o}),o}},K=t=>{if(!d&&!v)return t;let n=async(r,o)=>{let{name:p,key:e}=i(o);if(e&&d&&d.has(e)){A({type:"step_cache_hit",workflowId:f,stepKey:e,name:p,ts:Date.now()});let a=d.get(e);if(a.ok)return a.value;let x=se(a.cause);throw Y(a.error,x)}e&&d&&A({type:"step_cache_miss",workflowId:f,stepKey:e,name:p,ts:Date.now()});let u=typeof r=="function"?r:()=>r;try{let a=await t(u,o);return e&&(d&&d.set(e,I(a)),await P(e,I(a))),a}catch(a){if(e&&$(a)){let x=a,g=x.meta.origin==="result"?x.meta.resultCause:x.meta.thrown,S=z(x.error,x.meta,g);d&&d.set(e,S),await P(e,S)}throw a}};return n.try=async(r,o)=>{let{name:p,key:e}=o;if(e&&d&&d.has(e)){A({type:"step_cache_hit",workflowId:f,stepKey:e,name:p,ts:Date.now()});let u=d.get(e);if(u.ok)return u.value;let a=se(u.cause);throw Y(u.error,a)}e&&d&&A({type:"step_cache_miss",workflowId:f,stepKey:e,name:p,ts:Date.now()});try{let u=await t.try(r,o);return e&&(d&&d.set(e,I(u)),await P(e,I(u))),u}catch(u){if(e&&$(u)){let a=u,x=a.meta.origin==="result"?a.meta.resultCause:a.meta.thrown,g=z(a.error,a.meta,x);d&&d.set(e,g),await P(e,g)}throw u}},n.fromResult=async(r,o)=>{let{name:p,key:e}=o;if(e&&d&&d.has(e)){A({type:"step_cache_hit",workflowId:f,stepKey:e,name:p,ts:Date.now()});let u=d.get(e);if(u.ok)return u.value;let a=se(u.cause);throw Y(u.error,a)}e&&d&&A({type:"step_cache_miss",workflowId:f,stepKey:e,name:p,ts:Date.now()});try{let u=await t.fromResult(r,o);return e&&(d&&d.set(e,I(u)),await P(e,I(u))),u}catch(u){if(e&&$(u)){let a=u,x=a.meta.origin==="result"?a.meta.resultCause:a.meta.thrown,g=z(a.error,a.meta,x);d&&d.set(e,g),await P(e,g)}throw u}},n.parallel=t.parallel,n.race=t.race,n.allSettled=t.allSettled,n.retry=(r,o)=>n(r,{name:o.name,key:o.key,retry:{attempts:o.attempts,backoff:o.backoff,initialDelay:o.initialDelay,maxDelay:o.maxDelay,jitter:o.jitter,retryOn:o.retryOn,onRetry:o.onRetry},timeout:o.timeout}),n.withTimeout=(r,o)=>n(r,{name:o.name,key:o.key,timeout:o}),n},W=M?t=>l(K(t),s,R,N):t=>l(K(t),s,N),w;if(c?.strict===!0){let t=c;w=await B.strict(W,{onError:t.onError,onEvent:t.onEvent,catchUnexpected:t.catchUnexpected,workflowId:f,context:k})}else{let t=c;w=await B(W,{onError:t?.onError??(()=>{}),onEvent:t?.onEvent,workflowId:f,context:k})}let E=performance.now()-Q;return w.ok?A({type:"workflow_success",workflowId:f,ts:Date.now(),durationMs:E}):A({type:"workflow_error",workflowId:f,ts:Date.now(),durationMs:E,error:w.error}),w}return C}function ce(s){return s.type==="step_complete"}export{j as STEP_TIMEOUT_MARKER,fe as createStepCollector,Te as createWorkflow,ae as getStepTimeoutMeta,ce as isStepComplete,oe as isStepTimeoutError,B as run};
|
|
2
|
+
//# sourceMappingURL=workflow.js.map
|