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.
Files changed (156) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1278 -0
  3. package/dist/batch.cjs +2 -0
  4. package/dist/batch.cjs.map +1 -0
  5. package/dist/batch.d.cts +197 -0
  6. package/dist/batch.d.ts +197 -0
  7. package/dist/batch.js +2 -0
  8. package/dist/batch.js.map +1 -0
  9. package/dist/circuit-breaker.cjs +2 -0
  10. package/dist/circuit-breaker.cjs.map +1 -0
  11. package/dist/circuit-breaker.d.cts +208 -0
  12. package/dist/circuit-breaker.d.ts +208 -0
  13. package/dist/circuit-breaker.js +2 -0
  14. package/dist/circuit-breaker.js.map +1 -0
  15. package/dist/conditional.cjs +2 -0
  16. package/dist/conditional.cjs.map +1 -0
  17. package/dist/conditional.d.cts +249 -0
  18. package/dist/conditional.d.ts +249 -0
  19. package/dist/conditional.js +2 -0
  20. package/dist/conditional.js.map +1 -0
  21. package/dist/core-BuTBsR0x.d.cts +2325 -0
  22. package/dist/core-BuTBsR0x.d.ts +2325 -0
  23. package/dist/core.cjs +2 -0
  24. package/dist/core.cjs.map +1 -0
  25. package/dist/core.d.cts +3 -0
  26. package/dist/core.d.ts +3 -0
  27. package/dist/core.js +2 -0
  28. package/dist/core.js.map +1 -0
  29. package/dist/devtools.cjs +11 -0
  30. package/dist/devtools.cjs.map +1 -0
  31. package/dist/devtools.d.cts +176 -0
  32. package/dist/devtools.d.ts +176 -0
  33. package/dist/devtools.js +11 -0
  34. package/dist/devtools.js.map +1 -0
  35. package/dist/duration.cjs +2 -0
  36. package/dist/duration.cjs.map +1 -0
  37. package/dist/duration.d.cts +246 -0
  38. package/dist/duration.d.ts +246 -0
  39. package/dist/duration.js +2 -0
  40. package/dist/duration.js.map +1 -0
  41. package/dist/hitl.cjs +2 -0
  42. package/dist/hitl.cjs.map +1 -0
  43. package/dist/hitl.d.cts +337 -0
  44. package/dist/hitl.d.ts +337 -0
  45. package/dist/hitl.js +2 -0
  46. package/dist/hitl.js.map +1 -0
  47. package/dist/index.cjs +2 -0
  48. package/dist/index.cjs.map +1 -0
  49. package/dist/index.d.cts +4 -0
  50. package/dist/index.d.ts +4 -0
  51. package/dist/index.js +2 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/match.cjs +2 -0
  54. package/dist/match.cjs.map +1 -0
  55. package/dist/match.d.cts +209 -0
  56. package/dist/match.d.ts +209 -0
  57. package/dist/match.js +2 -0
  58. package/dist/match.js.map +1 -0
  59. package/dist/otel.cjs +2 -0
  60. package/dist/otel.cjs.map +1 -0
  61. package/dist/otel.d.cts +185 -0
  62. package/dist/otel.d.ts +185 -0
  63. package/dist/otel.js +2 -0
  64. package/dist/otel.js.map +1 -0
  65. package/dist/persistence.cjs +2 -0
  66. package/dist/persistence.cjs.map +1 -0
  67. package/dist/persistence.d.cts +572 -0
  68. package/dist/persistence.d.ts +572 -0
  69. package/dist/persistence.js +2 -0
  70. package/dist/persistence.js.map +1 -0
  71. package/dist/policies.cjs +2 -0
  72. package/dist/policies.cjs.map +1 -0
  73. package/dist/policies.d.cts +378 -0
  74. package/dist/policies.d.ts +378 -0
  75. package/dist/policies.js +2 -0
  76. package/dist/policies.js.map +1 -0
  77. package/dist/ratelimit.cjs +2 -0
  78. package/dist/ratelimit.cjs.map +1 -0
  79. package/dist/ratelimit.d.cts +279 -0
  80. package/dist/ratelimit.d.ts +279 -0
  81. package/dist/ratelimit.js +2 -0
  82. package/dist/ratelimit.js.map +1 -0
  83. package/dist/reliability.cjs +2 -0
  84. package/dist/reliability.cjs.map +1 -0
  85. package/dist/reliability.d.cts +5 -0
  86. package/dist/reliability.d.ts +5 -0
  87. package/dist/reliability.js +2 -0
  88. package/dist/reliability.js.map +1 -0
  89. package/dist/resource.cjs +2 -0
  90. package/dist/resource.cjs.map +1 -0
  91. package/dist/resource.d.cts +171 -0
  92. package/dist/resource.d.ts +171 -0
  93. package/dist/resource.js +2 -0
  94. package/dist/resource.js.map +1 -0
  95. package/dist/retry.cjs +2 -0
  96. package/dist/retry.cjs.map +1 -0
  97. package/dist/retry.d.cts +2 -0
  98. package/dist/retry.d.ts +2 -0
  99. package/dist/retry.js +2 -0
  100. package/dist/retry.js.map +1 -0
  101. package/dist/saga.cjs +2 -0
  102. package/dist/saga.cjs.map +1 -0
  103. package/dist/saga.d.cts +231 -0
  104. package/dist/saga.d.ts +231 -0
  105. package/dist/saga.js +2 -0
  106. package/dist/saga.js.map +1 -0
  107. package/dist/schedule.cjs +2 -0
  108. package/dist/schedule.cjs.map +1 -0
  109. package/dist/schedule.d.cts +387 -0
  110. package/dist/schedule.d.ts +387 -0
  111. package/dist/schedule.js +2 -0
  112. package/dist/schedule.js.map +1 -0
  113. package/dist/tagged-error.cjs +2 -0
  114. package/dist/tagged-error.cjs.map +1 -0
  115. package/dist/tagged-error.d.cts +252 -0
  116. package/dist/tagged-error.d.ts +252 -0
  117. package/dist/tagged-error.js +2 -0
  118. package/dist/tagged-error.js.map +1 -0
  119. package/dist/testing.cjs +2 -0
  120. package/dist/testing.cjs.map +1 -0
  121. package/dist/testing.d.cts +228 -0
  122. package/dist/testing.d.ts +228 -0
  123. package/dist/testing.js +2 -0
  124. package/dist/testing.js.map +1 -0
  125. package/dist/visualize.cjs +1573 -0
  126. package/dist/visualize.cjs.map +1 -0
  127. package/dist/visualize.d.cts +1415 -0
  128. package/dist/visualize.d.ts +1415 -0
  129. package/dist/visualize.js +1573 -0
  130. package/dist/visualize.js.map +1 -0
  131. package/dist/webhook.cjs +2 -0
  132. package/dist/webhook.cjs.map +1 -0
  133. package/dist/webhook.d.cts +469 -0
  134. package/dist/webhook.d.ts +469 -0
  135. package/dist/webhook.js +2 -0
  136. package/dist/webhook.js.map +1 -0
  137. package/dist/workflow-entry-C6nH8ByN.d.ts +858 -0
  138. package/dist/workflow-entry-RRTlSg_4.d.cts +858 -0
  139. package/dist/workflow.cjs +2 -0
  140. package/dist/workflow.cjs.map +1 -0
  141. package/dist/workflow.d.cts +2 -0
  142. package/dist/workflow.d.ts +2 -0
  143. package/dist/workflow.js +2 -0
  144. package/dist/workflow.js.map +1 -0
  145. package/docs/advanced.md +1548 -0
  146. package/docs/api.md +513 -0
  147. package/docs/coming-from-neverthrow.md +1013 -0
  148. package/docs/match.md +417 -0
  149. package/docs/pino-logging-example.md +396 -0
  150. package/docs/policies.md +508 -0
  151. package/docs/resource-management.md +509 -0
  152. package/docs/schedule.md +467 -0
  153. package/docs/tagged-error.md +785 -0
  154. package/docs/visualization.md +430 -0
  155. package/docs/visualize-examples.md +330 -0
  156. package/package.json +227 -0
package/dist/index.cjs ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";var ye=Object.defineProperty;var Tt=Object.getOwnPropertyDescriptor;var Rt=Object.getOwnPropertyNames;var xt=Object.prototype.hasOwnProperty;var gt=(e,t)=>{for(var n in t)ye(e,n,{get:t[n],enumerable:!0})},Ct=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let k of Rt(t))!xt.call(e,k)&&k!==n&&ye(e,k,{get:()=>t[k],enumerable:!(i=Tt(t,k))||i.enumerable});return e};var St=e=>Ct(ye({},"__esModule",{value:!0}),e);var Gt={};gt(Gt,{Duration:()=>ft,STEP_TIMEOUT_MARKER:()=>N,TaggedError:()=>Q,UnwrapError:()=>q,all:()=>Ze,allAsync:()=>Qe,allSettled:()=>et,allSettledAsync:()=>ot,andThen:()=>Ve,any:()=>nt,anyAsync:()=>rt,bimap:()=>$e,clearStep:()=>lt,createApprovalStep:()=>pt,createHITLCollector:()=>dt,createStepCollector:()=>st,createWorkflow:()=>at,days:()=>ie,err:()=>f,from:()=>Me,fromNullable:()=>We,fromPromise:()=>Ie,getPendingApprovals:()=>yt,getStepTimeoutMeta:()=>fe,hasPendingApproval:()=>Et,hours:()=>ue,hydrate:()=>ke,injectApproval:()=>ct,isApprovalRejected:()=>ut,isDuration:()=>he,isErr:()=>ve,isOk:()=>Pe,isPendingApproval:()=>X,isSerializedResult:()=>ze,isStepComplete:()=>re,isStepTimeoutError:()=>te,isUnexpectedError:()=>we,map:()=>je,mapError:()=>Fe,mapErrorTry:()=>Xe,mapTry:()=>Be,match:()=>Ne,millis:()=>oe,minutes:()=>ae,ok:()=>h,orElse:()=>Ge,orElseAsync:()=>Je,partition:()=>tt,pendingApproval:()=>it,recover:()=>qe,recoverAsync:()=>Ye,run:()=>V,seconds:()=>se,tap:()=>He,tapError:()=>Le,toDays:()=>Se,toHours:()=>Ce,toMillis:()=>Re,toMinutes:()=>ge,toSeconds:()=>xe,tryAsync:()=>Ke,unwrap:()=>be,unwrapOr:()=>Oe,unwrapOrElse:()=>Ue});module.exports=St(Gt);var h=e=>({ok:!0,value:e}),f=(e,t)=>({ok:!1,error:e,...t?.cause!==void 0?{cause:t.cause}:{}}),Pe=e=>e.ok,ve=e=>!e.ok,we=e=>typeof e=="object"&&e!==null&&e.type==="UNEXPECTED_ERROR",N=Symbol.for("step_timeout_marker");function te(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:N in e}function fe(e){if(!(typeof e!="object"||e===null)){if(e.type==="STEP_TIMEOUT"){let t=e;return{timeoutMs:t.timeoutMs,stepName:t.stepName,stepKey:t.stepKey,attempt:t.attempt}}if(N in e)return e[N]}}var De=Symbol("early-exit");function Y(e,t){return{[De]:!0,error:e,meta:t}}function z(e){return typeof e=="object"&&e!==null&&e[De]===!0}var _e=Symbol("mapper-exception");function ht(e){return{[_e]:!0,thrown:e}}function At(e){return typeof e=="object"&&e!==null&&e[_e]===!0}function Pt(e){return typeof e=="string"?{name:e}:e??{}}function de(e,t){let{backoff:n,initialDelay:i,maxDelay:k,jitter:x}=t,d;switch(n){case"fixed":d=i;break;case"linear":d=i*e;break;case"exponential":d=i*Math.pow(2,e-1);break}if(d=Math.min(d,k),x){let p=d*.25*Math.random();d=d+p}return Math.floor(d)}function me(e){return new Promise(t=>setTimeout(t,e))}var Ae=Symbol("timeout");async function vt(e,t,n){let i=new AbortController,k=t.error??{type:"STEP_TIMEOUT",stepName:n.name,stepKey:n.key,timeoutMs:t.ms,attempt:n.attempt},x,d=new Promise((g,m)=>{x=setTimeout(()=>{i.abort(),m({[Ae]:!0,error:k})},t.ms)}),p;t.signal?p=Promise.resolve(e(i.signal)):p=Promise.resolve(e());try{return await Promise.race([p,d])}catch(g){if(typeof g=="object"&&g!==null&&g[Ae]===!0){let m=g.error;if(typeof m=="object"&&m!==null&&m.type!=="STEP_TIMEOUT"){let I={timeoutMs:t.ms,stepName:n.name,stepKey:n.key,attempt:n.attempt};N in m?m[N]=I:Object.defineProperty(m,N,{value:I,enumerable:!1,writable:!0,configurable:!1})}throw m}throw g}finally{clearTimeout(x)}}var B={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function V(e,t){let{onError:n,onEvent:i,catchUnexpected:k,workflowId:x,context:d}=t&&typeof t=="object"?t:{},p=x??crypto.randomUUID(),g=!n&&!k,m=[],I=0,D=y=>y??`step_${++I}`,T=y=>{let b=y.context!==void 0||d===void 0?y:{...y,context:d};if(b.type==="step_success"){let O=b.stepId;for(let W=m.length-1;W>=0;W--){let j=m[W];if(j.type==="race"&&!j.winnerId){j.winnerId=O;break}}}i?.(b,d)},U=Y,$=y=>z(y),G=(y,b)=>g?b?.origin==="result"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:y,...b.resultCause!==void 0?{cause:b.resultCause}:{}}}:b?.origin==="throw"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"throw",error:y,thrown:b.thrown}}:{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:y}}:y,pe=y=>({type:"UNEXPECTED_ERROR",cause:y.meta.origin==="result"?{type:"STEP_FAILURE",origin:"result",error:y.error,...y.meta.resultCause!==void 0?{cause:y.meta.resultCause}:{}}:{type:"STEP_FAILURE",origin:"throw",error:y.error,thrown:y.meta.thrown}});try{let b=function(R,w){let o=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let s=performance.now(),a=!1;m.push({scopeId:o,type:"parallel"});let u=()=>{if(a)return;a=!0;let E=m.findIndex(r=>r.scopeId===o);E!==-1&&m.splice(E,1),T({type:"scope_end",workflowId:p,scopeId:o,ts:Date.now(),durationMs:performance.now()-s})};T({type:"scope_start",workflowId:p,scopeId:o,scopeType:"parallel",name:R,ts:Date.now()});try{let E=await w();if(u(),!E.ok)throw n?.(E.error,R,d),U(E.error,{origin:"result",resultCause:E.cause});return E.value}catch(E){throw u(),E}})()},O=function(R,w){let o=Object.keys(R),s=w.name??`Parallel(${o.join(", ")})`,a=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let u=performance.now(),E=!1;m.push({scopeId:a,type:"parallel"});let r=()=>{if(E)return;E=!0;let c=m.findIndex(l=>l.scopeId===a);c!==-1&&m.splice(c,1),T({type:"scope_end",workflowId:p,scopeId:a,ts:Date.now(),durationMs:performance.now()-u})};T({type:"scope_start",workflowId:p,scopeId:a,scopeType:"parallel",name:s,ts:Date.now()});try{let c=await new Promise(P=>{if(o.length===0){P([]);return}let _=!1,v=o.length,J=new Array(o.length);for(let K=0;K<o.length;K++){let L=o[K],ce=K;Promise.resolve(R[L]()).catch(A=>f({type:"PROMISE_REJECTED",cause:A},{cause:{type:"PROMISE_REJECTION",reason:A}})).then(A=>{if(!_){if(!A.ok){_=!0,P([{key:L,result:A}]);return}J[ce]={key:L,result:A},v--,v===0&&P(J)}})}});r();let l={};for(let{key:P,result:_}of c){if(!_.ok)throw n?.(_.error,P,d),U(_.error,{origin:"result",resultCause:_.cause});l[P]=_.value}return l}catch(c){throw r(),c}})()};var H=b,S=O;let y=(R,w)=>(async()=>{let o=Pt(w),{name:s,key:a,retry:u,timeout:E}=o,r=D(a),c=i,l=c?performance.now():0;if(!(typeof R=="function")){if(u&&u.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 v={attempts:Math.max(1,u?.attempts??1),backoff:u?.backoff??B.backoff,initialDelay:u?.initialDelay??B.initialDelay,maxDelay:u?.maxDelay??B.maxDelay,jitter:u?.jitter??B.jitter,retryOn:u?.retryOn??B.retryOn,onRetry:u?.onRetry??B.onRetry};i&&T({type:"step_start",workflowId:p,stepId:r,stepKey:a,name:s,ts:Date.now()});let J;for(let A=1;A<=v.attempts;A++){let kt=c?performance.now():0;try{let C;if(typeof R=="function"?E?C=await vt(R,E,{name:s,key:a,attempt:A}):C=await R():C=await R,C.ok){let F=performance.now()-l;return T({type:"step_success",workflowId:p,stepId:r,stepKey:a,name:s,ts:Date.now(),durationMs:F}),a&&T({type:"step_complete",workflowId:p,stepKey:a,name:s,ts:Date.now(),durationMs:F,result:C}),C.value}if(J=C,A<v.attempts&&v.retryOn(C.error,A)){let F=de(A,v);T({type:"step_retry",workflowId:p,stepId:r,stepKey:a,name:s,ts:Date.now(),attempt:A+1,maxAttempts:v.attempts,delayMs:F,error:C.error}),v.onRetry(C.error,A,F),await me(F);continue}v.attempts>1&&T({type:"step_retries_exhausted",workflowId:p,stepId:r,stepKey:a,name:s,ts:Date.now(),durationMs:performance.now()-l,attempts:A,lastError:C.error});break}catch(C){let F=performance.now()-kt;if($(C))throw T({type:"step_aborted",workflowId:p,stepId:r,stepKey:a,name:s,ts:Date.now(),durationMs:F}),C;if(te(C)){let M=fe(C),le=E?.ms??M?.timeoutMs??0;if(T({type:"step_timeout",workflowId:p,stepId:r,stepKey:a,name:s,ts:Date.now(),timeoutMs:le,attempt:A}),A<v.attempts&&v.retryOn(C,A)){let Ee=de(A,v);T({type:"step_retry",workflowId:p,stepId:r,stepKey:a,name:s,ts:Date.now(),attempt:A+1,maxAttempts:v.attempts,delayMs:Ee,error:C}),v.onRetry(C,A,Ee),await me(Ee);continue}v.attempts>1&&T({type:"step_retries_exhausted",workflowId:p,stepId:r,stepKey:a,name:s,ts:Date.now(),durationMs:performance.now()-l,attempts:A,lastError:C})}if(A<v.attempts&&v.retryOn(C,A)){let M=de(A,v);T({type:"step_retry",workflowId:p,stepId:r,stepKey:a,name:s,ts:Date.now(),attempt:A+1,maxAttempts:v.attempts,delayMs:M,error:C}),v.onRetry(C,A,M),await me(M);continue}v.attempts>1&&!te(C)&&T({type:"step_retries_exhausted",workflowId:p,stepId:r,stepKey:a,name:s,ts:Date.now(),durationMs:performance.now()-l,attempts:A,lastError:C});let ee=performance.now()-l;if(k){let M;try{M=k(C)}catch(le){throw ht(le)}throw T({type:"step_error",workflowId:p,stepId:r,stepKey:a,name:s,ts:Date.now(),durationMs:ee,error:M}),a&&T({type:"step_complete",workflowId:p,stepKey:a,name:s,ts:Date.now(),durationMs:ee,result:f(M,{cause:C}),meta:{origin:"throw",thrown:C}}),n?.(M,s,d),U(M,{origin:"throw",thrown:C})}else{let M={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:C}};throw T({type:"step_error",workflowId:p,stepId:r,stepKey:a,name:s,ts:Date.now(),durationMs:ee,error:M}),a&&T({type:"step_complete",workflowId:p,stepKey:a,name:s,ts:Date.now(),durationMs:ee,result:f(M,{cause:C}),meta:{origin:"throw",thrown:C}}),C}}}let K=J,L=performance.now()-l,ce=G(K.error,{origin:"result",resultCause:K.cause});throw T({type:"step_error",workflowId:p,stepId:r,stepKey:a,name:s,ts:Date.now(),durationMs:L,error:ce}),a&&T({type:"step_complete",workflowId:p,stepKey:a,name:s,ts:Date.now(),durationMs:L,result:K,meta:{origin:"result",resultCause:K.cause}}),n?.(K.error,s,d),U(K.error,{origin:"result",resultCause:K.cause})})();y.try=(R,w)=>{let o=w.name,s=w.key,a=D(s),u="error"in w?()=>w.error:w.onError,E=i;return(async()=>{let r=E?performance.now():0;i&&T({type:"step_start",workflowId:p,stepId:a,stepKey:s,name:o,ts:Date.now()});try{let c=await R(),l=performance.now()-r;return T({type:"step_success",workflowId:p,stepId:a,stepKey:s,name:o,ts:Date.now(),durationMs:l}),s&&T({type:"step_complete",workflowId:p,stepKey:s,name:o,ts:Date.now(),durationMs:l,result:h(c)}),c}catch(c){let l=u(c),P=performance.now()-r,_=G(l,{origin:"throw",thrown:c});throw T({type:"step_error",workflowId:p,stepId:a,stepKey:s,name:o,ts:Date.now(),durationMs:P,error:_}),s&&T({type:"step_complete",workflowId:p,stepKey:s,name:o,ts:Date.now(),durationMs:P,result:f(l,{cause:c}),meta:{origin:"throw",thrown:c}}),n?.(l,o,d),U(l,{origin:"throw",thrown:c})}})()},y.fromResult=(R,w)=>{let o=w.name,s=w.key,a=D(s),u="error"in w?()=>w.error:w.onError,E=i;return(async()=>{let r=E?performance.now():0;i&&T({type:"step_start",workflowId:p,stepId:a,stepKey:s,name:o,ts:Date.now()});let c=await R();if(c.ok){let l=performance.now()-r;return T({type:"step_success",workflowId:p,stepId:a,stepKey:s,name:o,ts:Date.now(),durationMs:l}),s&&T({type:"step_complete",workflowId:p,stepKey:s,name:o,ts:Date.now(),durationMs:l,result:h(c.value)}),c.value}else{let l=u(c.error),P=performance.now()-r,_=G(l,{origin:"result",resultCause:c.error});throw T({type:"step_error",workflowId:p,stepId:a,stepKey:s,name:o,ts:Date.now(),durationMs:P,error:_}),s&&T({type:"step_complete",workflowId:p,stepKey:s,name:o,ts:Date.now(),durationMs:P,result:f(l,{cause:c.error}),meta:{origin:"result",resultCause:c.error}}),n?.(l,o,d),U(l,{origin:"result",resultCause:c.error})}})()},y.retry=(R,w)=>y(R,{name:w.name,key:w.key,retry:{attempts:w.attempts,backoff:w.backoff,initialDelay:w.initialDelay,maxDelay:w.maxDelay,jitter:w.jitter,retryOn:w.retryOn,onRetry:w.onRetry},timeout:w.timeout}),y.withTimeout=(R,w)=>y(R,{name:w.name,key:w.key,timeout:w}),y.parallel=((...R)=>{if(typeof R[0]=="string"){let w=R[0],o=R[1];return b(w,o)}else{let w=R[0],o=R[1]??{};return O(w,o)}}),y.race=(R,w)=>{let o=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let s=performance.now(),a=!1,u={scopeId:o,type:"race",winnerId:void 0};m.push(u);let E=()=>{if(a)return;a=!0;let r=m.findIndex(c=>c.scopeId===o);r!==-1&&m.splice(r,1),T({type:"scope_end",workflowId:p,scopeId:o,ts:Date.now(),durationMs:performance.now()-s,winnerId:u.winnerId})};T({type:"scope_start",workflowId:p,scopeId:o,scopeType:"race",name:R,ts:Date.now()});try{let r=await w();if(E(),!r.ok)throw n?.(r.error,R,d),U(r.error,{origin:"result",resultCause:r.cause});return r.value}catch(r){throw E(),r}})()},y.allSettled=(R,w)=>{let o=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let s=performance.now(),a=!1;m.push({scopeId:o,type:"allSettled"});let u=()=>{if(a)return;a=!0;let E=m.findIndex(r=>r.scopeId===o);E!==-1&&m.splice(E,1),T({type:"scope_end",workflowId:p,scopeId:o,ts:Date.now(),durationMs:performance.now()-s})};T({type:"scope_start",workflowId:p,scopeId:o,scopeType:"allSettled",name:R,ts:Date.now()});try{let E=await w();if(u(),!E.ok)throw n?.(E.error,R,d),U(E.error,{origin:"result",resultCause:E.cause});return E.value}catch(E){throw u(),E}})()};let j=await e(y);return h(j)}catch(y){if(At(y))throw y.thrown;if($(y)){let O=y.meta.origin==="throw"?y.meta.thrown:y.meta.resultCause;if(k||n)return f(y.error,{cause:O});if(we(y.error))return f(y.error,{cause:O});let W=pe(y);return f(W,{cause:O})}if(k){let O=k(y);return n?.(O,"unexpected",d),f(O,{cause:y})}let b={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:y}};return n?.(b,"unexpected",d),f(b,{cause:y})}}V.strict=(e,t)=>V(e,t);var q=class extends Error{constructor(n,i){super(`Unwrap called on an error result: ${String(n)}`);this.error=n;this.cause=i;this.name="UnwrapError"}},be=e=>{if(e.ok)return e.value;throw new q(e.error,e.cause)},Oe=(e,t)=>e.ok?e.value:t,Ue=(e,t)=>e.ok?e.value:t(e.error,e.cause);function Me(e,t){try{return h(e())}catch(n){return t?f(t(n),{cause:n}):f(n)}}async function Ie(e,t){try{return h(await e)}catch(n){return t?f(t(n),{cause:n}):f(n)}}async function Ke(e,t){try{return h(await e())}catch(n){return t?f(t(n),{cause:n}):f(n)}}function We(e,t){return e!=null?h(e):f(t())}function je(e,t){return e.ok?h(t(e.value)):e}function Fe(e,t){return e.ok?e:f(t(e.error),{cause:e.cause})}function Ne(e,t){return e.ok?t.ok(e.value):t.err(e.error,e.cause)}function Ve(e,t){return e.ok?t(e.value):e}function He(e,t){return e.ok&&t(e.value),e}function Le(e,t){return e.ok||t(e.error,e.cause),e}function Be(e,t,n){if(!e.ok)return e;try{return h(t(e.value))}catch(i){return f(n(i),{cause:i})}}function Xe(e,t,n){if(e.ok)return e;try{return f(t(e.error),{cause:e.cause})}catch(i){return f(n(i),{cause:i})}}function $e(e,t,n){return e.ok?h(t(e.value)):f(n(e.error),{cause:e.cause})}function Ge(e,t){return e.ok?e:t(e.error,e.cause)}async function Je(e,t){let n=await e;return n.ok?n:t(n.error,n.cause)}function qe(e,t){return e.ok?h(e.value):h(t(e.error,e.cause))}async function Ye(e,t){let n=await e;return n.ok?h(n.value):h(await t(n.error,n.cause))}function ke(e){return e!==null&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&(e.ok===!0&&"value"in e||e.ok===!1&&"error"in e)?e:null}function ze(e){return ke(e)!==null}function Ze(e){let t=[];for(let n of e){if(!n.ok)return n;t.push(n.value)}return h(t)}async function Qe(e){return e.length===0?h([]):new Promise(t=>{let n=!1,i=e.length,k=new Array(e.length);for(let x=0;x<e.length;x++){let d=x;Promise.resolve(e[d]).catch(p=>f({type:"PROMISE_REJECTED",cause:p},{cause:{type:"PROMISE_REJECTION",reason:p}})).then(p=>{if(!n){if(!p.ok){n=!0,t(p);return}k[d]=p.value,i--,i===0&&t(h(k))}})}})}function et(e){let t=[],n=[];for(let i of e)i.ok?t.push(i.value):n.push({error:i.error,cause:i.cause});return n.length>0?f(n):h(t)}function tt(e){let t=[],n=[];for(let i of e)i.ok?t.push(i.value):n.push(i.error);return{values:t,errors:n}}function nt(e){if(e.length===0)return f({type:"EMPTY_INPUT",message:"any() requires at least one Result"});let t=null;for(let n of e){if(n.ok)return n;t||(t=n)}return t}async function rt(e){return e.length===0?f({type:"EMPTY_INPUT",message:"anyAsync() requires at least one Result"}):new Promise(t=>{let n=!1,i=e.length,k=null;for(let x of e)Promise.resolve(x).catch(d=>f({type:"PROMISE_REJECTED",cause:d},{cause:{type:"PROMISE_REJECTION",reason:d}})).then(d=>{if(!n){if(d.ok){n=!0,t(d);return}k||(k=d),i--,i===0&&t(k)}})})}async function ot(e){let t=await Promise.all(e.map(k=>Promise.resolve(k).then(x=>({status:"result",result:x})).catch(x=>({status:"rejected",error:{type:"PROMISE_REJECTED",cause:x},cause:{type:"PROMISE_REJECTION",reason:x}})))),n=[],i=[];for(let k of t)k.status==="rejected"?i.push({error:k.error,cause:k.cause}):k.result.ok?n.push(k.result.value):i.push({error:k.result.error,cause:k.result.cause});return i.length>0?f(i):h(n)}var Z=class extends Error{_tag};function Q(e,t){return class extends Z{_tag=e;constructor(n,i){let k=t?.message?t.message(n??{}):e;if(super(k),this.name=e,Object.setPrototypeOf(this,new.target.prototype),n&&typeof n=="object"){let{_tag:x,name:d,message:p,stack:g,...m}=n,I=Object.prototype.hasOwnProperty.call(m,"cause"),D=I?m.cause:void 0;I&&delete m.cause;let T=i?.cause!==void 0;if(I&&T)throw new TypeError("TaggedError: cannot provide 'cause' in props when also setting ErrorOptions.cause");Object.assign(this,m),I&&(this.cause=D),T&&(this.cause=i?.cause)}else i?.cause!==void 0&&(this.cause=i.cause)}}}Object.defineProperty(Q,Symbol.hasInstance,{value:e=>e instanceof Z});(k=>{function e(x){return x instanceof Error}k.isError=e;function t(x){return x instanceof Z}k.isTaggedError=t;function n(x,d){let p=x._tag,g=d[p];return g(x)}k.match=n;function i(x,d,p){let g=x._tag,m=d[g];return m?m(x):p(x)}k.matchPartial=i})(Q||={});function st(){let e=new Map;return{handleEvent:t=>{re(t)&&e.set(t.stepKey,{result:t.result,meta:t.meta})},getState:()=>({steps:new Map(e)}),clear:()=>e.clear()}}function Dt(e){return typeof e=="object"&&e!==null&&e.__cachedMeta===!0}function ne(e,t,n){return f(e,{cause:{__cachedMeta:!0,originalCause:n,meta:t}})}function Te(e){return Dt(e)?e.meta:{origin:"result",resultCause:e}}function at(e,t){async function n(i,k){let x=typeof k=="function",d=x?i:void 0,p=x?k:i,g=crypto.randomUUID(),m=t?.createContext?.(),I={workflowId:g,onEvent:t?.onEvent,context:m!==void 0?m:void 0},D=o=>{let s=o.context!==void 0||m===void 0?o:{...o,context:m};t?.onEvent?.(s,m)},T=t?.shouldRun,U=t?.catchUnexpected;if(T){let o=performance.now();try{let s=await T(g,m),a=performance.now()-o;if(D({type:"hook_should_run",workflowId:g,ts:Date.now(),durationMs:a,result:s,skipped:!s}),!s){let u=new Error("Workflow skipped by shouldRun hook");if(U){let r=U(u);return f(r)}return f({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:u}})}}catch(s){let a=performance.now()-o;if(D({type:"hook_should_run_error",workflowId:g,ts:Date.now(),durationMs:a,error:s}),U){let E=U(s);return f(E)}return f({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:s}})}}let $=t?.onBeforeStart;if($){let o=performance.now();try{let s=await $(g,m),a=performance.now()-o;if(D({type:"hook_before_start",workflowId:g,ts:Date.now(),durationMs:a,result:s,skipped:!s}),!s){let u=new Error("Workflow skipped by onBeforeStart hook");if(U){let r=U(u);return f(r)}return f({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:u}})}}catch(s){let a=performance.now()-o;if(D({type:"hook_before_start_error",workflowId:g,ts:Date.now(),durationMs:a,error:s}),U){let E=U(s);return f(E)}return f({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:s}})}}let G=Date.now(),pe=performance.now();D({type:"workflow_start",workflowId:g,ts:G});let H=t?.resumeState,S=t?.cache;if(H&&!S&&(S=new Map),H&&S){let o=typeof H=="function"?await H():H;for(let[s,a]of o.steps){let{result:u,meta:E}=a;if(u.ok)S.set(s,u);else{let r=E??{origin:"result",resultCause:u.cause};S.set(s,ne(u.error,r,u.cause))}}}let y=o=>typeof o=="string"?{name:o}:o??{},b=t?.onAfterStep,O=async(o,s)=>{if(!b)return;let a=performance.now();try{await b(o,s,g,m);let u=performance.now()-a;D({type:"hook_after_step",workflowId:g,stepKey:o,ts:Date.now(),durationMs:u})}catch(u){let E=performance.now()-a;throw D({type:"hook_after_step_error",workflowId:g,stepKey:o,ts:Date.now(),durationMs:E,error:u}),u}},W=o=>{if(!S&&!b)return o;let s=async(a,u)=>{let{name:E,key:r}=y(u);if(r&&S&&S.has(r)){D({type:"step_cache_hit",workflowId:g,stepKey:r,name:E,ts:Date.now()});let l=S.get(r);if(l.ok)return l.value;let P=Te(l.cause);throw Y(l.error,P)}r&&S&&D({type:"step_cache_miss",workflowId:g,stepKey:r,name:E,ts:Date.now()});let c=typeof a=="function"?a:()=>a;try{let l=await o(c,u);return r&&(S&&S.set(r,h(l)),await O(r,h(l))),l}catch(l){if(r&&z(l)){let P=l,_=P.meta.origin==="result"?P.meta.resultCause:P.meta.thrown,v=ne(P.error,P.meta,_);S&&S.set(r,v),await O(r,v)}throw l}};return s.try=async(a,u)=>{let{name:E,key:r}=u;if(r&&S&&S.has(r)){D({type:"step_cache_hit",workflowId:g,stepKey:r,name:E,ts:Date.now()});let c=S.get(r);if(c.ok)return c.value;let l=Te(c.cause);throw Y(c.error,l)}r&&S&&D({type:"step_cache_miss",workflowId:g,stepKey:r,name:E,ts:Date.now()});try{let c=await o.try(a,u);return r&&(S&&S.set(r,h(c)),await O(r,h(c))),c}catch(c){if(r&&z(c)){let l=c,P=l.meta.origin==="result"?l.meta.resultCause:l.meta.thrown,_=ne(l.error,l.meta,P);S&&S.set(r,_),await O(r,_)}throw c}},s.fromResult=async(a,u)=>{let{name:E,key:r}=u;if(r&&S&&S.has(r)){D({type:"step_cache_hit",workflowId:g,stepKey:r,name:E,ts:Date.now()});let c=S.get(r);if(c.ok)return c.value;let l=Te(c.cause);throw Y(c.error,l)}r&&S&&D({type:"step_cache_miss",workflowId:g,stepKey:r,name:E,ts:Date.now()});try{let c=await o.fromResult(a,u);return r&&(S&&S.set(r,h(c)),await O(r,h(c))),c}catch(c){if(r&&z(c)){let l=c,P=l.meta.origin==="result"?l.meta.resultCause:l.meta.thrown,_=ne(l.error,l.meta,P);S&&S.set(r,_),await O(r,_)}throw c}},s.parallel=o.parallel,s.race=o.race,s.allSettled=o.allSettled,s.retry=(a,u)=>s(a,{name:u.name,key:u.key,retry:{attempts:u.attempts,backoff:u.backoff,initialDelay:u.initialDelay,maxDelay:u.maxDelay,jitter:u.jitter,retryOn:u.retryOn,onRetry:u.onRetry},timeout:u.timeout}),s.withTimeout=(a,u)=>s(a,{name:u.name,key:u.key,timeout:u}),s},j=x?o=>p(W(o),e,d,I):o=>p(W(o),e,I),R;if(t?.strict===!0){let o=t;R=await V.strict(j,{onError:o.onError,onEvent:o.onEvent,catchUnexpected:o.catchUnexpected,workflowId:g,context:m})}else{let o=t;R=await V(j,{onError:o?.onError??(()=>{}),onEvent:o?.onEvent,workflowId:g,context:m})}let w=performance.now()-pe;return R.ok?D({type:"workflow_success",workflowId:g,ts:Date.now(),durationMs:w}):D({type:"workflow_error",workflowId:g,ts:Date.now(),durationMs:w,error:R.error}),R}return n}function re(e){return e.type==="step_complete"}function X(e){return typeof e=="object"&&e!==null&&e.type==="PENDING_APPROVAL"}function ut(e){return typeof e=="object"&&e!==null&&e.type==="APPROVAL_REJECTED"}function it(e,t){return f({type:"PENDING_APPROVAL",stepKey:e,reason:t?.reason,metadata:t?.metadata})}function pt(e){return async()=>{let t=await e.checkApproval();switch(t.status){case"pending":return f({type:"PENDING_APPROVAL",stepKey:e.key,reason:e.pendingReason,metadata:e.metadata});case"rejected":return f({type:"APPROVAL_REJECTED",stepKey:e.key,reason:t.reason});case"approved":return h(t.value)}}}function ct(e,t){let n=new Map(e.steps);return n.set(t.stepKey,{result:h(t.value)}),{steps:n}}function lt(e,t){let n=new Map(e.steps);return n.delete(t),{steps:n}}function Et(e,t){let n=e.steps.get(t);return!n||n.result.ok?!1:X(n.result.error)}function yt(e){let t=[];for(let[n,i]of e.steps)!i.result.ok&&X(i.result.error)&&t.push(n);return t}function dt(){let e=new Map;return{handleEvent:t=>{re(t)&&e.set(t.stepKey,{result:t.result,meta:t.meta})},getState:()=>({steps:new Map(e)}),clear:()=>e.clear(),hasPendingApprovals:()=>{for(let t of e.values())if(!t.result.ok&&X(t.result.error))return!0;return!1},getPendingApprovals:()=>{let t=[];for(let[n,i]of e)!i.result.ok&&X(i.result.error)&&t.push({stepKey:n,error:i.result.error});return t},injectApproval:(t,n)=>(e.set(t,{result:h(n)}),{steps:new Map(e)})}}function oe(e){return{_tag:"Duration",millis:e}}function se(e){return{_tag:"Duration",millis:e*1e3}}function ae(e){return{_tag:"Duration",millis:e*60*1e3}}function ue(e){return{_tag:"Duration",millis:e*60*60*1e3}}function ie(e){return{_tag:"Duration",millis:e*24*60*60*1e3}}var _t={_tag:"Duration",millis:0},bt={_tag:"Duration",millis:1/0};function Re(e){return e.millis}function xe(e){return e.millis/1e3}function ge(e){return e.millis/(60*1e3)}function Ce(e){return e.millis/(3600*1e3)}function Se(e){return e.millis/(1440*60*1e3)}function Ot(e,t){return{_tag:"Duration",millis:e.millis+t.millis}}function Ut(e,t){return{_tag:"Duration",millis:Math.max(0,e.millis-t.millis)}}function Mt(e,t){return{_tag:"Duration",millis:e.millis*t}}function It(e,t){return{_tag:"Duration",millis:e.millis/t}}function Kt(e,t){return e.millis<t.millis}function Wt(e,t){return e.millis<=t.millis}function jt(e,t){return e.millis>t.millis}function Ft(e,t){return e.millis>=t.millis}function Nt(e,t){return e.millis===t.millis}function mt(e,t){return e.millis<=t.millis?e:t}function wt(e,t){return e.millis>=t.millis?e:t}function Vt(e,t,n){return mt(wt(e,t),n)}function Ht(e){return e.millis===0}function Lt(e){return e.millis===1/0}function Bt(e){return Number.isFinite(e.millis)&&e.millis>0}function he(e){return typeof e=="object"&&e!==null&&"_tag"in e&&e._tag==="Duration"&&"millis"in e&&typeof e.millis=="number"}function Xt(e){let t=e.millis;if(t===1/0)return"\u221E";if(t===0)return"0ms";let n=Math.floor(t/(1440*60*1e3)),i=Math.floor(t%(1440*60*1e3)/(3600*1e3)),k=Math.floor(t%(3600*1e3)/(60*1e3)),x=Math.floor(t%(60*1e3)/1e3),d=t%1e3,p=[];return n>0&&p.push(`${n}d`),i>0&&p.push(`${i}h`),k>0&&p.push(`${k}m`),x>0&&p.push(`${x}s`),d>0&&p.length===0&&p.push(`${d}ms`),p.join(" ")||"0ms"}function $t(e){let t=e.trim().match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h|d)$/i);if(!t)return;let n=parseFloat(t[1]);switch(t[2].toLowerCase()){case"ms":return oe(n);case"s":return se(n);case"m":return ae(n);case"h":return ue(n);case"d":return ie(n);default:return}}var ft={millis:oe,seconds:se,minutes:ae,hours:ue,days:ie,zero:_t,infinity:bt,toMillis:Re,toSeconds:xe,toMinutes:ge,toHours:Ce,toDays:Se,add:Ot,subtract:Ut,multiply:Mt,divide:It,lessThan:Kt,lessThanOrEqual:Wt,greaterThan:jt,greaterThanOrEqual:Ft,equals:Nt,min:mt,max:wt,clamp:Vt,isZero:Ht,isInfinite:Lt,isFinite:Bt,isDuration:he,format:Xt,parse:$t};0&&(module.exports={Duration,STEP_TIMEOUT_MARKER,TaggedError,UnwrapError,all,allAsync,allSettled,allSettledAsync,andThen,any,anyAsync,bimap,clearStep,createApprovalStep,createHITLCollector,createStepCollector,createWorkflow,days,err,from,fromNullable,fromPromise,getPendingApprovals,getStepTimeoutMeta,hasPendingApproval,hours,hydrate,injectApproval,isApprovalRejected,isDuration,isErr,isOk,isPendingApproval,isSerializedResult,isStepComplete,isStepTimeoutError,isUnexpectedError,map,mapError,mapErrorTry,mapTry,match,millis,minutes,ok,orElse,orElseAsync,partition,pendingApproval,recover,recoverAsync,run,seconds,tap,tapError,toDays,toHours,toMillis,toMinutes,toSeconds,tryAsync,unwrap,unwrapOr,unwrapOrElse});
2
+ //# sourceMappingURL=index.cjs.map