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
@@ -0,0 +1,4 @@
1
+ export { A as AsyncResult, B as BackoffStrategy, C as CauseOf, d as EmptyInputError, E as Err, e as ErrorOf, f as Errors, i as ExtractCause, h as ExtractError, g as ExtractValue, M as MaybeAsyncResult, O as Ok, P as PromiseRejectedError, c as PromiseRejectionCause, R as Result, o as RetryOptions, l as RunOptions, m as RunOptionsWithCatch, n as RunOptionsWithoutCatch, j as RunStep, r as STEP_TIMEOUT_MARKER, k as ScopeType, a4 as SettledError, S as StepOptions, p as StepTimeoutError, q as StepTimeoutMarkerMeta, T as TimeoutOptions, a as UnexpectedCause, U as UnexpectedError, b as UnexpectedStepFailureCause, z as UnwrapError, W as WorkflowEvent, a5 as all, a6 as allAsync, a7 as allSettled, a8 as allSettledAsync, V as andThen, a9 as any, aa as anyAsync, $ as bimap, t as err, H as from, K as fromNullable, I as fromPromise, y as getStepTimeoutMeta, ad as hydrate, v as isErr, u as isOk, ae as isSerializedResult, x as isStepTimeoutError, w as isUnexpectedError, L as map, N as mapError, _ as mapErrorTry, Z as mapTry, Q as match, s as ok, a0 as orElse, a1 as orElseAsync, ab as partition, a2 as recover, a3 as recoverAsync, ac as run, X as tap, Y as tapError, J as tryAsync, D as unwrap, F as unwrapOr, G as unwrapOrElse } from './core-BuTBsR0x.cjs';
2
+ export { ErrorByTag, PropsOf, TagOf, TaggedError, TaggedErrorBase, TaggedErrorConstructor, TaggedErrorCreateOptions, TaggedErrorOptions } from './tagged-error.cjs';
3
+ export { A as AnyResultFn, f as ApprovalRejected, g as ApprovalStepOptions, C as CausesOfDeps, E as ErrorsOfDeps, P as PendingApproval, R as ResumeState, e as ResumeStateEntry, S as StepCache, b as Workflow, d as WorkflowContext, W as WorkflowOptions, a as WorkflowOptionsStrict, c as WorkflowStrict, o as clearStep, m as createApprovalStep, s as createHITLCollector, j as createStepCollector, h as createWorkflow, r as getPendingApprovals, q as hasPendingApproval, n as injectApproval, l as isApprovalRejected, k as isPendingApproval, i as isStepComplete, p as pendingApproval } from './workflow-entry-RRTlSg_4.cjs';
4
+ export { DurationType as Duration, DurationType, days, hours, isDuration, millis, minutes, seconds, toDays, toHours, toMillis, toMinutes, toSeconds } from './duration.cjs';
@@ -0,0 +1,4 @@
1
+ export { A as AsyncResult, B as BackoffStrategy, C as CauseOf, d as EmptyInputError, E as Err, e as ErrorOf, f as Errors, i as ExtractCause, h as ExtractError, g as ExtractValue, M as MaybeAsyncResult, O as Ok, P as PromiseRejectedError, c as PromiseRejectionCause, R as Result, o as RetryOptions, l as RunOptions, m as RunOptionsWithCatch, n as RunOptionsWithoutCatch, j as RunStep, r as STEP_TIMEOUT_MARKER, k as ScopeType, a4 as SettledError, S as StepOptions, p as StepTimeoutError, q as StepTimeoutMarkerMeta, T as TimeoutOptions, a as UnexpectedCause, U as UnexpectedError, b as UnexpectedStepFailureCause, z as UnwrapError, W as WorkflowEvent, a5 as all, a6 as allAsync, a7 as allSettled, a8 as allSettledAsync, V as andThen, a9 as any, aa as anyAsync, $ as bimap, t as err, H as from, K as fromNullable, I as fromPromise, y as getStepTimeoutMeta, ad as hydrate, v as isErr, u as isOk, ae as isSerializedResult, x as isStepTimeoutError, w as isUnexpectedError, L as map, N as mapError, _ as mapErrorTry, Z as mapTry, Q as match, s as ok, a0 as orElse, a1 as orElseAsync, ab as partition, a2 as recover, a3 as recoverAsync, ac as run, X as tap, Y as tapError, J as tryAsync, D as unwrap, F as unwrapOr, G as unwrapOrElse } from './core-BuTBsR0x.js';
2
+ export { ErrorByTag, PropsOf, TagOf, TaggedError, TaggedErrorBase, TaggedErrorConstructor, TaggedErrorCreateOptions, TaggedErrorOptions } from './tagged-error.js';
3
+ export { A as AnyResultFn, f as ApprovalRejected, g as ApprovalStepOptions, C as CausesOfDeps, E as ErrorsOfDeps, P as PendingApproval, R as ResumeState, e as ResumeStateEntry, S as StepCache, b as Workflow, d as WorkflowContext, W as WorkflowOptions, a as WorkflowOptionsStrict, c as WorkflowStrict, o as clearStep, m as createApprovalStep, s as createHITLCollector, j as createStepCollector, h as createWorkflow, r as getPendingApprovals, q as hasPendingApproval, n as injectApproval, l as isApprovalRejected, k as isPendingApproval, i as isStepComplete, p as pendingApproval } from './workflow-entry-C6nH8ByN.js';
4
+ export { DurationType as Duration, DurationType, days, hours, isDuration, millis, minutes, seconds, toDays, toHours, toMillis, toMinutes, toSeconds } from './duration.js';
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ var h=e=>({ok:!0,value:e}),f=(e,t)=>({ok:!1,error:e,...t?.cause!==void 0?{cause:t.cause}:{}}),be=e=>e.ok,Oe=e=>!e.ok,fe=e=>typeof e=="object"&&e!==null&&e.type==="UNEXPECTED_ERROR",N=Symbol.for("step_timeout_marker");function ie(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:N in e}function ke(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 Te=Symbol("early-exit");function J(e,t){return{[Te]:!0,error:e,meta:t}}function q(e){return typeof e=="object"&&e!==null&&e[Te]===!0}var Re=Symbol("mapper-exception");function Ue(e){return{[Re]:!0,thrown:e}}function Me(e){return typeof e=="object"&&e!==null&&e[Re]===!0}function Ie(e){return typeof e=="string"?{name:e}:e??{}}function ae(e,t){let{backoff:n,initialDelay:p,maxDelay:R,jitter:x}=t,d;switch(n){case"fixed":d=p;break;case"linear":d=p*e;break;case"exponential":d=p*Math.pow(2,e-1);break}if(d=Math.min(d,R),x){let i=d*.25*Math.random();d=d+i}return Math.floor(d)}function ue(e){return new Promise(t=>setTimeout(t,e))}var we=Symbol("timeout");async function Ke(e,t,n){let p=new AbortController,R=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(()=>{p.abort(),m({[we]:!0,error:R})},t.ms)}),i;t.signal?i=Promise.resolve(e(p.signal)):i=Promise.resolve(e());try{return await Promise.race([i,d])}catch(g){if(typeof g=="object"&&g!==null&&g[we]===!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 L={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function B(e,t){let{onError:n,onEvent:p,catchUnexpected:R,workflowId:x,context:d}=t&&typeof t=="object"?t:{},i=x??crypto.randomUUID(),g=!n&&!R,m=[],I=0,D=y=>y??`step_${++I}`,k=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}}}p?.(b,d)},U=J,X=y=>q(y),$=(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,ne=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(T,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),k({type:"scope_end",workflowId:i,scopeId:o,ts:Date.now(),durationMs:performance.now()-s})};k({type:"scope_start",workflowId:i,scopeId:o,scopeType:"parallel",name:T,ts:Date.now()});try{let E=await w();if(u(),!E.ok)throw n?.(E.error,T,d),U(E.error,{origin:"result",resultCause:E.cause});return E.value}catch(E){throw u(),E}})()},O=function(T,w){let o=Object.keys(T),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),k({type:"scope_end",workflowId:i,scopeId:a,ts:Date.now(),durationMs:performance.now()-u})};k({type:"scope_start",workflowId:i,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,G=new Array(o.length);for(let K=0;K<o.length;K++){let H=o[K],re=K;Promise.resolve(T[H]()).catch(A=>f({type:"PROMISE_REJECTED",cause:A},{cause:{type:"PROMISE_REJECTION",reason:A}})).then(A=>{if(!_){if(!A.ok){_=!0,P([{key:H,result:A}]);return}G[re]={key:H,result:A},v--,v===0&&P(G)}})}});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 V=b,S=O;let y=(T,w)=>(async()=>{let o=Ie(w),{name:s,key:a,retry:u,timeout:E}=o,r=D(a),c=p,l=c?performance.now():0;if(!(typeof T=="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??L.backoff,initialDelay:u?.initialDelay??L.initialDelay,maxDelay:u?.maxDelay??L.maxDelay,jitter:u?.jitter??L.jitter,retryOn:u?.retryOn??L.retryOn,onRetry:u?.onRetry??L.onRetry};p&&k({type:"step_start",workflowId:i,stepId:r,stepKey:a,name:s,ts:Date.now()});let G;for(let A=1;A<=v.attempts;A++){let _e=c?performance.now():0;try{let C;if(typeof T=="function"?E?C=await Ke(T,E,{name:s,key:a,attempt:A}):C=await T():C=await T,C.ok){let F=performance.now()-l;return k({type:"step_success",workflowId:i,stepId:r,stepKey:a,name:s,ts:Date.now(),durationMs:F}),a&&k({type:"step_complete",workflowId:i,stepKey:a,name:s,ts:Date.now(),durationMs:F,result:C}),C.value}if(G=C,A<v.attempts&&v.retryOn(C.error,A)){let F=ae(A,v);k({type:"step_retry",workflowId:i,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 ue(F);continue}v.attempts>1&&k({type:"step_retries_exhausted",workflowId:i,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()-_e;if(X(C))throw k({type:"step_aborted",workflowId:i,stepId:r,stepKey:a,name:s,ts:Date.now(),durationMs:F}),C;if(ie(C)){let M=ke(C),oe=E?.ms??M?.timeoutMs??0;if(k({type:"step_timeout",workflowId:i,stepId:r,stepKey:a,name:s,ts:Date.now(),timeoutMs:oe,attempt:A}),A<v.attempts&&v.retryOn(C,A)){let se=ae(A,v);k({type:"step_retry",workflowId:i,stepId:r,stepKey:a,name:s,ts:Date.now(),attempt:A+1,maxAttempts:v.attempts,delayMs:se,error:C}),v.onRetry(C,A,se),await ue(se);continue}v.attempts>1&&k({type:"step_retries_exhausted",workflowId:i,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=ae(A,v);k({type:"step_retry",workflowId:i,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 ue(M);continue}v.attempts>1&&!ie(C)&&k({type:"step_retries_exhausted",workflowId:i,stepId:r,stepKey:a,name:s,ts:Date.now(),durationMs:performance.now()-l,attempts:A,lastError:C});let Z=performance.now()-l;if(R){let M;try{M=R(C)}catch(oe){throw Ue(oe)}throw k({type:"step_error",workflowId:i,stepId:r,stepKey:a,name:s,ts:Date.now(),durationMs:Z,error:M}),a&&k({type:"step_complete",workflowId:i,stepKey:a,name:s,ts:Date.now(),durationMs:Z,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 k({type:"step_error",workflowId:i,stepId:r,stepKey:a,name:s,ts:Date.now(),durationMs:Z,error:M}),a&&k({type:"step_complete",workflowId:i,stepKey:a,name:s,ts:Date.now(),durationMs:Z,result:f(M,{cause:C}),meta:{origin:"throw",thrown:C}}),C}}}let K=G,H=performance.now()-l,re=$(K.error,{origin:"result",resultCause:K.cause});throw k({type:"step_error",workflowId:i,stepId:r,stepKey:a,name:s,ts:Date.now(),durationMs:H,error:re}),a&&k({type:"step_complete",workflowId:i,stepKey:a,name:s,ts:Date.now(),durationMs:H,result:K,meta:{origin:"result",resultCause:K.cause}}),n?.(K.error,s,d),U(K.error,{origin:"result",resultCause:K.cause})})();y.try=(T,w)=>{let o=w.name,s=w.key,a=D(s),u="error"in w?()=>w.error:w.onError,E=p;return(async()=>{let r=E?performance.now():0;p&&k({type:"step_start",workflowId:i,stepId:a,stepKey:s,name:o,ts:Date.now()});try{let c=await T(),l=performance.now()-r;return k({type:"step_success",workflowId:i,stepId:a,stepKey:s,name:o,ts:Date.now(),durationMs:l}),s&&k({type:"step_complete",workflowId:i,stepKey:s,name:o,ts:Date.now(),durationMs:l,result:h(c)}),c}catch(c){let l=u(c),P=performance.now()-r,_=$(l,{origin:"throw",thrown:c});throw k({type:"step_error",workflowId:i,stepId:a,stepKey:s,name:o,ts:Date.now(),durationMs:P,error:_}),s&&k({type:"step_complete",workflowId:i,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=(T,w)=>{let o=w.name,s=w.key,a=D(s),u="error"in w?()=>w.error:w.onError,E=p;return(async()=>{let r=E?performance.now():0;p&&k({type:"step_start",workflowId:i,stepId:a,stepKey:s,name:o,ts:Date.now()});let c=await T();if(c.ok){let l=performance.now()-r;return k({type:"step_success",workflowId:i,stepId:a,stepKey:s,name:o,ts:Date.now(),durationMs:l}),s&&k({type:"step_complete",workflowId:i,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,_=$(l,{origin:"result",resultCause:c.error});throw k({type:"step_error",workflowId:i,stepId:a,stepKey:s,name:o,ts:Date.now(),durationMs:P,error:_}),s&&k({type:"step_complete",workflowId:i,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=(T,w)=>y(T,{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=(T,w)=>y(T,{name:w.name,key:w.key,timeout:w}),y.parallel=((...T)=>{if(typeof T[0]=="string"){let w=T[0],o=T[1];return b(w,o)}else{let w=T[0],o=T[1]??{};return O(w,o)}}),y.race=(T,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),k({type:"scope_end",workflowId:i,scopeId:o,ts:Date.now(),durationMs:performance.now()-s,winnerId:u.winnerId})};k({type:"scope_start",workflowId:i,scopeId:o,scopeType:"race",name:T,ts:Date.now()});try{let r=await w();if(E(),!r.ok)throw n?.(r.error,T,d),U(r.error,{origin:"result",resultCause:r.cause});return r.value}catch(r){throw E(),r}})()},y.allSettled=(T,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),k({type:"scope_end",workflowId:i,scopeId:o,ts:Date.now(),durationMs:performance.now()-s})};k({type:"scope_start",workflowId:i,scopeId:o,scopeType:"allSettled",name:T,ts:Date.now()});try{let E=await w();if(u(),!E.ok)throw n?.(E.error,T,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(Me(y))throw y.thrown;if(X(y)){let O=y.meta.origin==="throw"?y.meta.thrown:y.meta.resultCause;if(R||n)return f(y.error,{cause:O});if(fe(y.error))return f(y.error,{cause:O});let W=ne(y);return f(W,{cause:O})}if(R){let O=R(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})}}B.strict=(e,t)=>B(e,t);var Q=class extends Error{constructor(n,p){super(`Unwrap called on an error result: ${String(n)}`);this.error=n;this.cause=p;this.name="UnwrapError"}},We=e=>{if(e.ok)return e.value;throw new Q(e.error,e.cause)},je=(e,t)=>e.ok?e.value:t,Fe=(e,t)=>e.ok?e.value:t(e.error,e.cause);function Ne(e,t){try{return h(e())}catch(n){return t?f(t(n),{cause:n}):f(n)}}async function Ve(e,t){try{return h(await e)}catch(n){return t?f(t(n),{cause:n}):f(n)}}async function He(e,t){try{return h(await e())}catch(n){return t?f(t(n),{cause:n}):f(n)}}function Le(e,t){return e!=null?h(e):f(t())}function Be(e,t){return e.ok?h(t(e.value)):e}function Xe(e,t){return e.ok?e:f(t(e.error),{cause:e.cause})}function $e(e,t){return e.ok?t.ok(e.value):t.err(e.error,e.cause)}function Ge(e,t){return e.ok?t(e.value):e}function Je(e,t){return e.ok&&t(e.value),e}function qe(e,t){return e.ok||t(e.error,e.cause),e}function Ye(e,t,n){if(!e.ok)return e;try{return h(t(e.value))}catch(p){return f(n(p),{cause:p})}}function ze(e,t,n){if(e.ok)return e;try{return f(t(e.error),{cause:e.cause})}catch(p){return f(n(p),{cause:p})}}function Ze(e,t,n){return e.ok?h(t(e.value)):f(n(e.error),{cause:e.cause})}function Qe(e,t){return e.ok?e:t(e.error,e.cause)}async function et(e,t){let n=await e;return n.ok?n:t(n.error,n.cause)}function tt(e,t){return e.ok?h(e.value):h(t(e.error,e.cause))}async function nt(e,t){let n=await e;return n.ok?h(n.value):h(await t(n.error,n.cause))}function xe(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 rt(e){return xe(e)!==null}function ot(e){let t=[];for(let n of e){if(!n.ok)return n;t.push(n.value)}return h(t)}async function st(e){return e.length===0?h([]):new Promise(t=>{let n=!1,p=e.length,R=new Array(e.length);for(let x=0;x<e.length;x++){let d=x;Promise.resolve(e[d]).catch(i=>f({type:"PROMISE_REJECTED",cause:i},{cause:{type:"PROMISE_REJECTION",reason:i}})).then(i=>{if(!n){if(!i.ok){n=!0,t(i);return}R[d]=i.value,p--,p===0&&t(h(R))}})}})}function at(e){let t=[],n=[];for(let p of e)p.ok?t.push(p.value):n.push({error:p.error,cause:p.cause});return n.length>0?f(n):h(t)}function ut(e){let t=[],n=[];for(let p of e)p.ok?t.push(p.value):n.push(p.error);return{values:t,errors:n}}function it(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 pt(e){return e.length===0?f({type:"EMPTY_INPUT",message:"anyAsync() requires at least one Result"}):new Promise(t=>{let n=!1,p=e.length,R=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}R||(R=d),p--,p===0&&t(R)}})})}async function ct(e){let t=await Promise.all(e.map(R=>Promise.resolve(R).then(x=>({status:"result",result:x})).catch(x=>({status:"rejected",error:{type:"PROMISE_REJECTED",cause:x},cause:{type:"PROMISE_REJECTION",reason:x}})))),n=[],p=[];for(let R of t)R.status==="rejected"?p.push({error:R.error,cause:R.cause}):R.result.ok?n.push(R.result.value):p.push({error:R.result.error,cause:R.result.cause});return p.length>0?f(p):h(n)}var Y=class extends Error{_tag};function ee(e,t){return class extends Y{_tag=e;constructor(n,p){let R=t?.message?t.message(n??{}):e;if(super(R),this.name=e,Object.setPrototypeOf(this,new.target.prototype),n&&typeof n=="object"){let{_tag:x,name:d,message:i,stack:g,...m}=n,I=Object.prototype.hasOwnProperty.call(m,"cause"),D=I?m.cause:void 0;I&&delete m.cause;let k=p?.cause!==void 0;if(I&&k)throw new TypeError("TaggedError: cannot provide 'cause' in props when also setting ErrorOptions.cause");Object.assign(this,m),I&&(this.cause=D),k&&(this.cause=p?.cause)}else p?.cause!==void 0&&(this.cause=p.cause)}}}Object.defineProperty(ee,Symbol.hasInstance,{value:e=>e instanceof Y});(R=>{function e(x){return x instanceof Error}R.isError=e;function t(x){return x instanceof Y}R.isTaggedError=t;function n(x,d){let i=x._tag,g=d[i];return g(x)}R.match=n;function p(x,d,i){let g=x._tag,m=d[g];return m?m(x):i(x)}R.matchPartial=p})(ee||={});function lt(){let e=new Map;return{handleEvent:t=>{ce(t)&&e.set(t.stepKey,{result:t.result,meta:t.meta})},getState:()=>({steps:new Map(e)}),clear:()=>e.clear()}}function Et(e){return typeof e=="object"&&e!==null&&e.__cachedMeta===!0}function te(e,t,n){return f(e,{cause:{__cachedMeta:!0,originalCause:n,meta:t}})}function pe(e){return Et(e)?e.meta:{origin:"result",resultCause:e}}function yt(e,t){async function n(p,R){let x=typeof R=="function",d=x?p:void 0,i=x?R:p,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)},k=t?.shouldRun,U=t?.catchUnexpected;if(k){let o=performance.now();try{let s=await k(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 X=t?.onBeforeStart;if(X){let o=performance.now();try{let s=await X(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 $=Date.now(),ne=performance.now();D({type:"workflow_start",workflowId:g,ts:$});let V=t?.resumeState,S=t?.cache;if(V&&!S&&(S=new Map),V&&S){let o=typeof V=="function"?await V():V;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,te(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=pe(l.cause);throw J(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&&q(l)){let P=l,_=P.meta.origin==="result"?P.meta.resultCause:P.meta.thrown,v=te(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=pe(c.cause);throw J(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&&q(c)){let l=c,P=l.meta.origin==="result"?l.meta.resultCause:l.meta.thrown,_=te(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=pe(c.cause);throw J(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&&q(c)){let l=c,P=l.meta.origin==="result"?l.meta.resultCause:l.meta.thrown,_=te(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=>i(W(o),e,d,I):o=>i(W(o),e,I),T;if(t?.strict===!0){let o=t;T=await B.strict(j,{onError:o.onError,onEvent:o.onEvent,catchUnexpected:o.catchUnexpected,workflowId:g,context:m})}else{let o=t;T=await B(j,{onError:o?.onError??(()=>{}),onEvent:o?.onEvent,workflowId:g,context:m})}let w=performance.now()-ne;return T.ok?D({type:"workflow_success",workflowId:g,ts:Date.now(),durationMs:w}):D({type:"workflow_error",workflowId:g,ts:Date.now(),durationMs:w,error:T.error}),T}return n}function ce(e){return e.type==="step_complete"}function z(e){return typeof e=="object"&&e!==null&&e.type==="PENDING_APPROVAL"}function dt(e){return typeof e=="object"&&e!==null&&e.type==="APPROVAL_REJECTED"}function mt(e,t){return f({type:"PENDING_APPROVAL",stepKey:e,reason:t?.reason,metadata:t?.metadata})}function wt(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 ft(e,t){let n=new Map(e.steps);return n.set(t.stepKey,{result:h(t.value)}),{steps:n}}function kt(e,t){let n=new Map(e.steps);return n.delete(t),{steps:n}}function Tt(e,t){let n=e.steps.get(t);return!n||n.result.ok?!1:z(n.result.error)}function Rt(e){let t=[];for(let[n,p]of e.steps)!p.result.ok&&z(p.result.error)&&t.push(n);return t}function xt(){let e=new Map;return{handleEvent:t=>{ce(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&&z(t.result.error))return!0;return!1},getPendingApprovals:()=>{let t=[];for(let[n,p]of e)!p.result.ok&&z(p.result.error)&&t.push({stepKey:n,error:p.result.error});return t},injectApproval:(t,n)=>(e.set(t,{result:h(n)}),{steps:new Map(e)})}}function le(e){return{_tag:"Duration",millis:e}}function Ee(e){return{_tag:"Duration",millis:e*1e3}}function ye(e){return{_tag:"Duration",millis:e*60*1e3}}function de(e){return{_tag:"Duration",millis:e*60*60*1e3}}function me(e){return{_tag:"Duration",millis:e*24*60*60*1e3}}var gt={_tag:"Duration",millis:0},Ct={_tag:"Duration",millis:1/0};function ge(e){return e.millis}function Ce(e){return e.millis/1e3}function Se(e){return e.millis/(60*1e3)}function he(e){return e.millis/(3600*1e3)}function Ae(e){return e.millis/(1440*60*1e3)}function St(e,t){return{_tag:"Duration",millis:e.millis+t.millis}}function ht(e,t){return{_tag:"Duration",millis:Math.max(0,e.millis-t.millis)}}function At(e,t){return{_tag:"Duration",millis:e.millis*t}}function Pt(e,t){return{_tag:"Duration",millis:e.millis/t}}function vt(e,t){return e.millis<t.millis}function Dt(e,t){return e.millis<=t.millis}function _t(e,t){return e.millis>t.millis}function bt(e,t){return e.millis>=t.millis}function Ot(e,t){return e.millis===t.millis}function Pe(e,t){return e.millis<=t.millis?e:t}function ve(e,t){return e.millis>=t.millis?e:t}function Ut(e,t,n){return Pe(ve(e,t),n)}function Mt(e){return e.millis===0}function It(e){return e.millis===1/0}function Kt(e){return Number.isFinite(e.millis)&&e.millis>0}function De(e){return typeof e=="object"&&e!==null&&"_tag"in e&&e._tag==="Duration"&&"millis"in e&&typeof e.millis=="number"}function Wt(e){let t=e.millis;if(t===1/0)return"\u221E";if(t===0)return"0ms";let n=Math.floor(t/(1440*60*1e3)),p=Math.floor(t%(1440*60*1e3)/(3600*1e3)),R=Math.floor(t%(3600*1e3)/(60*1e3)),x=Math.floor(t%(60*1e3)/1e3),d=t%1e3,i=[];return n>0&&i.push(`${n}d`),p>0&&i.push(`${p}h`),R>0&&i.push(`${R}m`),x>0&&i.push(`${x}s`),d>0&&i.length===0&&i.push(`${d}ms`),i.join(" ")||"0ms"}function jt(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 le(n);case"s":return Ee(n);case"m":return ye(n);case"h":return de(n);case"d":return me(n);default:return}}var Ft={millis:le,seconds:Ee,minutes:ye,hours:de,days:me,zero:gt,infinity:Ct,toMillis:ge,toSeconds:Ce,toMinutes:Se,toHours:he,toDays:Ae,add:St,subtract:ht,multiply:At,divide:Pt,lessThan:vt,lessThanOrEqual:Dt,greaterThan:_t,greaterThanOrEqual:bt,equals:Ot,min:Pe,max:ve,clamp:Ut,isZero:Mt,isInfinite:It,isFinite:Kt,isDuration:De,format:Wt,parse:jt};export{Ft as Duration,N as STEP_TIMEOUT_MARKER,ee as TaggedError,Q as UnwrapError,ot as all,st as allAsync,at as allSettled,ct as allSettledAsync,Ge as andThen,it as any,pt as anyAsync,Ze as bimap,kt as clearStep,wt as createApprovalStep,xt as createHITLCollector,lt as createStepCollector,yt as createWorkflow,me as days,f as err,Ne as from,Le as fromNullable,Ve as fromPromise,Rt as getPendingApprovals,ke as getStepTimeoutMeta,Tt as hasPendingApproval,de as hours,xe as hydrate,ft as injectApproval,dt as isApprovalRejected,De as isDuration,Oe as isErr,be as isOk,z as isPendingApproval,rt as isSerializedResult,ce as isStepComplete,ie as isStepTimeoutError,fe as isUnexpectedError,Be as map,Xe as mapError,ze as mapErrorTry,Ye as mapTry,$e as match,le as millis,ye as minutes,h as ok,Qe as orElse,et as orElseAsync,ut as partition,mt as pendingApproval,tt as recover,nt as recoverAsync,B as run,Ee as seconds,Je as tap,qe as tapError,Ae as toDays,he as toHours,ge as toMillis,Se as toMinutes,Ce as toSeconds,He as tryAsync,We as unwrap,je as unwrapOr,Fe as unwrapOrElse};
2
+ //# sourceMappingURL=index.js.map