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
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var re=Object.defineProperty;var ke=Object.getOwnPropertyDescriptor;var me=Object.getOwnPropertyNames;var fe=Object.prototype.hasOwnProperty;var de=(r,p)=>{for(var T in p)re(r,T,{get:p[T],enumerable:!0})},Te=(r,p,T,h)=>{if(p&&typeof p=="object"||typeof p=="function")for(let v of me(p))!fe.call(r,v)&&v!==T&&re(r,v,{get:()=>p[v],enumerable:!(h=ke(p,v))||h.enumerable});return r};var Re=r=>Te(re({},"__esModule",{value:!0}),r);var ve={};de(ve,{STEP_TIMEOUT_MARKER:()=>N,createStepCollector:()=>Ee,createWorkflow:()=>ye,getStepTimeoutMeta:()=>ue,isStepComplete:()=>pe,isStepTimeoutError:()=>z,run:()=>V});module.exports=Re(ve);var I=r=>({ok:!0,value:r}),A=(r,p)=>({ok:!1,error:r,...p?.cause!==void 0?{cause:p.cause}:{}});var Ce=r=>typeof r=="object"&&r!==null&&r.type==="UNEXPECTED_ERROR",N=Symbol.for("step_timeout_marker");function z(r){return typeof r!="object"||r===null?!1:r.type==="STEP_TIMEOUT"?!0:N in r}function ue(r){if(!(typeof r!="object"||r===null)){if(r.type==="STEP_TIMEOUT"){let p=r;return{timeoutMs:p.timeoutMs,stepName:p.stepName,stepKey:p.stepKey,attempt:p.attempt}}if(N in r)return r[N]}}var ce=Symbol("early-exit");function Y(r,p){return{[ce]:!0,error:r,meta:p}}function $(r){return typeof r=="object"&&r!==null&&r[ce]===!0}var le=Symbol("mapper-exception");function xe(r){return{[le]:!0,thrown:r}}function Se(r){return typeof r=="object"&&r!==null&&r[le]===!0}function ge(r){return typeof r=="string"?{name:r}:r??{}}function oe(r,p){let{backoff:T,initialDelay:h,maxDelay:v,jitter:M}=p,C;switch(T){case"fixed":C=h;break;case"linear":C=h*r;break;case"exponential":C=h*Math.pow(2,r-1);break}if(C=Math.min(C,v),M){let l=C*.25*Math.random();C=C+l}return Math.floor(C)}function se(r){return new Promise(p=>setTimeout(p,r))}var ie=Symbol("timeout");async function he(r,p,T){let h=new AbortController,v=p.error??{type:"STEP_TIMEOUT",stepName:T.name,stepKey:T.key,timeoutMs:p.ms,attempt:T.attempt},M,C=new Promise((f,k)=>{M=setTimeout(()=>{h.abort(),k({[ie]:!0,error:v})},p.ms)}),l;p.signal?l=Promise.resolve(r(h.signal)):l=Promise.resolve(r());try{return await Promise.race([l,C])}catch(f){if(typeof f=="object"&&f!==null&&f[ie]===!0){let k=f.error;if(typeof k=="object"&&k!==null&&k.type!=="STEP_TIMEOUT"){let j={timeoutMs:p.ms,stepName:T.name,stepKey:T.key,attempt:T.attempt};N in k?k[N]=j:Object.defineProperty(k,N,{value:j,enumerable:!1,writable:!0,configurable:!1})}throw k}throw f}finally{clearTimeout(M)}}var B={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function V(r,p){let{onError:T,onEvent:h,catchUnexpected:v,workflowId:M,context:C}=p&&typeof p=="object"?p:{},l=M??crypto.randomUUID(),f=!T&&!v,k=[],j=0,P=c=>c??`step_${++j}`,y=c=>{let _=c.context!==void 0||C===void 0?c:{...c,context:C};if(_.type==="step_success"){let O=_.stepId;for(let K=k.length-1;K>=0;K--){let W=k[K];if(W.type==="race"&&!W.winnerId){W.winnerId=O;break}}}h?.(_,C)},b=Y,G=c=>$(c),J=(c,_)=>f?_?.origin==="result"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:c,..._.resultCause!==void 0?{cause:_.resultCause}:{}}}:_?.origin==="throw"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"throw",error:c,thrown:_.thrown}}:{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:c}}:c,Z=c=>({type:"UNEXPECTED_ERROR",cause:c.meta.origin==="result"?{type:"STEP_FAILURE",origin:"result",error:c.error,...c.meta.resultCause!==void 0?{cause:c.meta.resultCause}:{}}:{type:"STEP_FAILURE",origin:"throw",error:c.error,thrown:c.meta.thrown}});try{let _=function(w,E){let t=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let n=performance.now(),o=!1;k.push({scopeId:t,type:"parallel"});let s=()=>{if(o)return;o=!0;let i=k.findIndex(e=>e.scopeId===t);i!==-1&&k.splice(i,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 i=await E();if(s(),!i.ok)throw T?.(i.error,w,C),b(i.error,{origin:"result",resultCause:i.cause});return i.value}catch(i){throw s(),i}})()},O=function(w,E){let t=Object.keys(w),n=E.name??`Parallel(${t.join(", ")})`,o=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let s=performance.now(),i=!1;k.push({scopeId:o,type:"parallel"});let e=()=>{if(i)return;i=!0;let u=k.findIndex(a=>a.scopeId===o);u!==-1&&k.splice(u,1),y({type:"scope_end",workflowId:l,scopeId:o,ts:Date.now(),durationMs:performance.now()-s})};y({type:"scope_start",workflowId:l,scopeId:o,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 X=t[D],ee=D;Promise.resolve(w[X]()).catch(R=>A({type:"PROMISE_REJECTED",cause:R},{cause:{type:"PROMISE_REJECTION",reason:R}})).then(R=>{if(!g){if(!R.ok){g=!0,x([{key:X,result:R}]);return}H[ee]={key:X,result:R},S--,S===0&&x(H)}})}});e();let a={};for(let{key:x,result:g}of u){if(!g.ok)throw T?.(g.error,x,C),b(g.error,{origin:"result",resultCause:g.cause});a[x]=g.value}return a}catch(u){throw e(),u}})()};var L=_,d=O;let c=(w,E)=>(async()=>{let t=ge(E),{name:n,key:o,retry:s,timeout:i}=t,e=P(o),u=h,a=u?performance.now():0;if(!(typeof w=="function")){if(s&&s.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(i)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,s?.attempts??1),backoff:s?.backoff??B.backoff,initialDelay:s?.initialDelay??B.initialDelay,maxDelay:s?.maxDelay??B.maxDelay,jitter:s?.jitter??B.jitter,retryOn:s?.retryOn??B.retryOn,onRetry:s?.onRetry??B.onRetry};h&&y({type:"step_start",workflowId:l,stepId:e,stepKey:o,name:n,ts:Date.now()});let H;for(let R=1;R<=S.attempts;R++){let we=u?performance.now():0;try{let m;if(typeof w=="function"?i?m=await he(w,i,{name:n,key:o,attempt:R}):m=await w():m=await w,m.ok){let F=performance.now()-a;return y({type:"step_success",workflowId:l,stepId:e,stepKey:o,name:n,ts:Date.now(),durationMs:F}),o&&y({type:"step_complete",workflowId:l,stepKey:o,name:n,ts:Date.now(),durationMs:F,result:m}),m.value}if(H=m,R<S.attempts&&S.retryOn(m.error,R)){let F=oe(R,S);y({type:"step_retry",workflowId:l,stepId:e,stepKey:o,name:n,ts:Date.now(),attempt:R+1,maxAttempts:S.attempts,delayMs:F,error:m.error}),S.onRetry(m.error,R,F),await se(F);continue}S.attempts>1&&y({type:"step_retries_exhausted",workflowId:l,stepId:e,stepKey:o,name:n,ts:Date.now(),durationMs:performance.now()-a,attempts:R,lastError:m.error});break}catch(m){let F=performance.now()-we;if(G(m))throw y({type:"step_aborted",workflowId:l,stepId:e,stepKey:o,name:n,ts:Date.now(),durationMs:F}),m;if(z(m)){let U=ue(m),te=i?.ms??U?.timeoutMs??0;if(y({type:"step_timeout",workflowId:l,stepId:e,stepKey:o,name:n,ts:Date.now(),timeoutMs:te,attempt:R}),R<S.attempts&&S.retryOn(m,R)){let ne=oe(R,S);y({type:"step_retry",workflowId:l,stepId:e,stepKey:o,name:n,ts:Date.now(),attempt:R+1,maxAttempts:S.attempts,delayMs:ne,error:m}),S.onRetry(m,R,ne),await se(ne);continue}S.attempts>1&&y({type:"step_retries_exhausted",workflowId:l,stepId:e,stepKey:o,name:n,ts:Date.now(),durationMs:performance.now()-a,attempts:R,lastError:m})}if(R<S.attempts&&S.retryOn(m,R)){let U=oe(R,S);y({type:"step_retry",workflowId:l,stepId:e,stepKey:o,name:n,ts:Date.now(),attempt:R+1,maxAttempts:S.attempts,delayMs:U,error:m}),S.onRetry(m,R,U),await se(U);continue}S.attempts>1&&!z(m)&&y({type:"step_retries_exhausted",workflowId:l,stepId:e,stepKey:o,name:n,ts:Date.now(),durationMs:performance.now()-a,attempts:R,lastError:m});let q=performance.now()-a;if(v){let U;try{U=v(m)}catch(te){throw xe(te)}throw y({type:"step_error",workflowId:l,stepId:e,stepKey:o,name:n,ts:Date.now(),durationMs:q,error:U}),o&&y({type:"step_complete",workflowId:l,stepKey:o,name:n,ts:Date.now(),durationMs:q,result:A(U,{cause:m}),meta:{origin:"throw",thrown:m}}),T?.(U,n,C),b(U,{origin:"throw",thrown:m})}else{let U={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:m}};throw y({type:"step_error",workflowId:l,stepId:e,stepKey:o,name:n,ts:Date.now(),durationMs:q,error:U}),o&&y({type:"step_complete",workflowId:l,stepKey:o,name:n,ts:Date.now(),durationMs:q,result:A(U,{cause:m}),meta:{origin:"throw",thrown:m}}),m}}}let D=H,X=performance.now()-a,ee=J(D.error,{origin:"result",resultCause:D.cause});throw y({type:"step_error",workflowId:l,stepId:e,stepKey:o,name:n,ts:Date.now(),durationMs:X,error:ee}),o&&y({type:"step_complete",workflowId:l,stepKey:o,name:n,ts:Date.now(),durationMs:X,result:D,meta:{origin:"result",resultCause:D.cause}}),T?.(D.error,n,C),b(D.error,{origin:"result",resultCause:D.cause})})();c.try=(w,E)=>{let t=E.name,n=E.key,o=P(n),s="error"in E?()=>E.error:E.onError,i=h;return(async()=>{let e=i?performance.now():0;h&&y({type:"step_start",workflowId:l,stepId:o,stepKey:n,name:t,ts:Date.now()});try{let u=await w(),a=performance.now()-e;return y({type:"step_success",workflowId:l,stepId:o,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=s(u),x=performance.now()-e,g=J(a,{origin:"throw",thrown:u});throw y({type:"step_error",workflowId:l,stepId:o,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:A(a,{cause:u}),meta:{origin:"throw",thrown:u}}),T?.(a,t,C),b(a,{origin:"throw",thrown:u})}})()},c.fromResult=(w,E)=>{let t=E.name,n=E.key,o=P(n),s="error"in E?()=>E.error:E.onError,i=h;return(async()=>{let e=i?performance.now():0;h&&y({type:"step_start",workflowId:l,stepId:o,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:o,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=s(u.error),x=performance.now()-e,g=J(a,{origin:"result",resultCause:u.error});throw y({type:"step_error",workflowId:l,stepId:o,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:A(a,{cause:u.error}),meta:{origin:"result",resultCause:u.error}}),T?.(a,t,C),b(a,{origin:"result",resultCause:u.error})}})()},c.retry=(w,E)=>c(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}),c.withTimeout=(w,E)=>c(w,{name:E.name,key:E.key,timeout:E}),c.parallel=((...w)=>{if(typeof w[0]=="string"){let E=w[0],t=w[1];return _(E,t)}else{let E=w[0],t=w[1]??{};return O(E,t)}}),c.race=(w,E)=>{let t=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let n=performance.now(),o=!1,s={scopeId:t,type:"race",winnerId:void 0};k.push(s);let i=()=>{if(o)return;o=!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:s.winnerId})};y({type:"scope_start",workflowId:l,scopeId:t,scopeType:"race",name:w,ts:Date.now()});try{let e=await E();if(i(),!e.ok)throw T?.(e.error,w,C),b(e.error,{origin:"result",resultCause:e.cause});return e.value}catch(e){throw i(),e}})()},c.allSettled=(w,E)=>{let t=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let n=performance.now(),o=!1;k.push({scopeId:t,type:"allSettled"});let s=()=>{if(o)return;o=!0;let i=k.findIndex(e=>e.scopeId===t);i!==-1&&k.splice(i,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 i=await E();if(s(),!i.ok)throw T?.(i.error,w,C),b(i.error,{origin:"result",resultCause:i.cause});return i.value}catch(i){throw s(),i}})()};let W=await r(c);return I(W)}catch(c){if(Se(c))throw c.thrown;if(G(c)){let O=c.meta.origin==="throw"?c.meta.thrown:c.meta.resultCause;if(v||T)return A(c.error,{cause:O});if(Ce(c.error))return A(c.error,{cause:O});let K=Z(c);return A(K,{cause:O})}if(v){let O=v(c);return T?.(O,"unexpected",C),A(O,{cause:c})}let _={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:c}};return T?.(_,"unexpected",C),A(_,{cause:c})}}V.strict=(r,p)=>V(r,p);function Ee(){let r=new Map;return{handleEvent:p=>{pe(p)&&r.set(p.stepKey,{result:p.result,meta:p.meta})},getState:()=>({steps:new Map(r)}),clear:()=>r.clear()}}function Ae(r){return typeof r=="object"&&r!==null&&r.__cachedMeta===!0}function Q(r,p,T){return A(r,{cause:{__cachedMeta:!0,originalCause:T,meta:p}})}function ae(r){return Ae(r)?r.meta:{origin:"result",resultCause:r}}function ye(r,p){async function T(h,v){let M=typeof v=="function",C=M?h:void 0,l=M?v:h,f=crypto.randomUUID(),k=p?.createContext?.(),j={workflowId:f,onEvent:p?.onEvent,context:k!==void 0?k:void 0},P=t=>{let n=t.context!==void 0||k===void 0?t:{...t,context:k};p?.onEvent?.(n,k)},y=p?.shouldRun,b=p?.catchUnexpected;if(y){let t=performance.now();try{let n=await y(f,k),o=performance.now()-t;if(P({type:"hook_should_run",workflowId:f,ts:Date.now(),durationMs:o,result:n,skipped:!n}),!n){let s=new Error("Workflow skipped by shouldRun hook");if(b){let e=b(s);return A(e)}return A({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:s}})}}catch(n){let o=performance.now()-t;if(P({type:"hook_should_run_error",workflowId:f,ts:Date.now(),durationMs:o,error:n}),b){let i=b(n);return A(i)}return A({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:n}})}}let G=p?.onBeforeStart;if(G){let t=performance.now();try{let n=await G(f,k),o=performance.now()-t;if(P({type:"hook_before_start",workflowId:f,ts:Date.now(),durationMs:o,result:n,skipped:!n}),!n){let s=new Error("Workflow skipped by onBeforeStart hook");if(b){let e=b(s);return A(e)}return A({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:s}})}}catch(n){let o=performance.now()-t;if(P({type:"hook_before_start_error",workflowId:f,ts:Date.now(),durationMs:o,error:n}),b){let i=b(n);return A(i)}return A({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:n}})}}let J=Date.now(),Z=performance.now();P({type:"workflow_start",workflowId:f,ts:J});let L=p?.resumeState,d=p?.cache;if(L&&!d&&(d=new Map),L&&d){let t=typeof L=="function"?await L():L;for(let[n,o]of t.steps){let{result:s,meta:i}=o;if(s.ok)d.set(n,s);else{let e=i??{origin:"result",resultCause:s.cause};d.set(n,Q(s.error,e,s.cause))}}}let c=t=>typeof t=="string"?{name:t}:t??{},_=p?.onAfterStep,O=async(t,n)=>{if(!_)return;let o=performance.now();try{await _(t,n,f,k);let s=performance.now()-o;P({type:"hook_after_step",workflowId:f,stepKey:t,ts:Date.now(),durationMs:s})}catch(s){let i=performance.now()-o;throw P({type:"hook_after_step_error",workflowId:f,stepKey:t,ts:Date.now(),durationMs:i,error:s}),s}},K=t=>{if(!d&&!_)return t;let n=async(o,s)=>{let{name:i,key:e}=c(s);if(e&&d&&d.has(e)){P({type:"step_cache_hit",workflowId:f,stepKey:e,name:i,ts:Date.now()});let a=d.get(e);if(a.ok)return a.value;let x=ae(a.cause);throw Y(a.error,x)}e&&d&&P({type:"step_cache_miss",workflowId:f,stepKey:e,name:i,ts:Date.now()});let u=typeof o=="function"?o:()=>o;try{let a=await t(u,s);return e&&(d&&d.set(e,I(a)),await O(e,I(a))),a}catch(a){if(e&&$(a)){let x=a,g=x.meta.origin==="result"?x.meta.resultCause:x.meta.thrown,S=Q(x.error,x.meta,g);d&&d.set(e,S),await O(e,S)}throw a}};return n.try=async(o,s)=>{let{name:i,key:e}=s;if(e&&d&&d.has(e)){P({type:"step_cache_hit",workflowId:f,stepKey:e,name:i,ts:Date.now()});let u=d.get(e);if(u.ok)return u.value;let a=ae(u.cause);throw Y(u.error,a)}e&&d&&P({type:"step_cache_miss",workflowId:f,stepKey:e,name:i,ts:Date.now()});try{let u=await t.try(o,s);return e&&(d&&d.set(e,I(u)),await O(e,I(u))),u}catch(u){if(e&&$(u)){let a=u,x=a.meta.origin==="result"?a.meta.resultCause:a.meta.thrown,g=Q(a.error,a.meta,x);d&&d.set(e,g),await O(e,g)}throw u}},n.fromResult=async(o,s)=>{let{name:i,key:e}=s;if(e&&d&&d.has(e)){P({type:"step_cache_hit",workflowId:f,stepKey:e,name:i,ts:Date.now()});let u=d.get(e);if(u.ok)return u.value;let a=ae(u.cause);throw Y(u.error,a)}e&&d&&P({type:"step_cache_miss",workflowId:f,stepKey:e,name:i,ts:Date.now()});try{let u=await t.fromResult(o,s);return e&&(d&&d.set(e,I(u)),await O(e,I(u))),u}catch(u){if(e&&$(u)){let a=u,x=a.meta.origin==="result"?a.meta.resultCause:a.meta.thrown,g=Q(a.error,a.meta,x);d&&d.set(e,g),await O(e,g)}throw u}},n.parallel=t.parallel,n.race=t.race,n.allSettled=t.allSettled,n.retry=(o,s)=>n(o,{name:s.name,key:s.key,retry:{attempts:s.attempts,backoff:s.backoff,initialDelay:s.initialDelay,maxDelay:s.maxDelay,jitter:s.jitter,retryOn:s.retryOn,onRetry:s.onRetry},timeout:s.timeout}),n.withTimeout=(o,s)=>n(o,{name:s.name,key:s.key,timeout:s}),n},W=M?t=>l(K(t),r,C,j):t=>l(K(t),r,j),w;if(p?.strict===!0){let t=p;w=await V.strict(W,{onError:t.onError,onEvent:t.onEvent,catchUnexpected:t.catchUnexpected,workflowId:f,context:k})}else{let t=p;w=await V(W,{onError:t?.onError??(()=>{}),onEvent:t?.onEvent,workflowId:f,context:k})}let E=performance.now()-Z;return w.ok?P({type:"workflow_success",workflowId:f,ts:Date.now(),durationMs:E}):P({type:"workflow_error",workflowId:f,ts:Date.now(),durationMs:E,error:w.error}),w}return T}function pe(r){return r.type==="step_complete"}0&&(module.exports={STEP_TIMEOUT_MARKER,createStepCollector,createWorkflow,getStepTimeoutMeta,isStepComplete,isStepTimeoutError,run});
|
|
2
|
+
//# sourceMappingURL=workflow.cjs.map
|