awaitly 1.22.0 → 1.24.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 (125) hide show
  1. package/dist/adapters.cjs +2 -2
  2. package/dist/adapters.cjs.map +1 -1
  3. package/dist/adapters.d.cts +1 -1
  4. package/dist/adapters.d.ts +1 -1
  5. package/dist/adapters.js +2 -2
  6. package/dist/adapters.js.map +1 -1
  7. package/dist/batch.cjs +2 -2
  8. package/dist/batch.cjs.map +1 -1
  9. package/dist/batch.d.cts +1 -1
  10. package/dist/batch.d.ts +1 -1
  11. package/dist/batch.js +2 -2
  12. package/dist/batch.js.map +1 -1
  13. package/dist/circuit-breaker.cjs +2 -2
  14. package/dist/circuit-breaker.cjs.map +1 -1
  15. package/dist/circuit-breaker.d.cts +2 -2
  16. package/dist/circuit-breaker.d.ts +2 -2
  17. package/dist/circuit-breaker.js +2 -2
  18. package/dist/circuit-breaker.js.map +1 -1
  19. package/dist/conditional.cjs.map +1 -1
  20. package/dist/conditional.d.cts +6 -6
  21. package/dist/conditional.d.ts +6 -6
  22. package/dist/conditional.js.map +1 -1
  23. package/dist/core.cjs +2 -2
  24. package/dist/core.cjs.map +1 -1
  25. package/dist/core.d.cts +1 -1
  26. package/dist/core.d.ts +1 -1
  27. package/dist/core.js +2 -2
  28. package/dist/core.js.map +1 -1
  29. package/dist/durable.cjs +8 -8
  30. package/dist/durable.cjs.map +1 -1
  31. package/dist/durable.d.cts +11 -7
  32. package/dist/durable.d.ts +11 -7
  33. package/dist/durable.js +8 -8
  34. package/dist/durable.js.map +1 -1
  35. package/dist/fetch.cjs +2 -2
  36. package/dist/fetch.cjs.map +1 -1
  37. package/dist/fetch.d.cts +1 -1
  38. package/dist/fetch.d.ts +1 -1
  39. package/dist/fetch.js +2 -2
  40. package/dist/fetch.js.map +1 -1
  41. package/dist/{guards-DvUWiITu.d.ts → guards-Cg0d1jA2.d.ts} +2 -2
  42. package/dist/{guards-BXh4zOGR.d.cts → guards-DVUntnPp.d.cts} +2 -2
  43. package/dist/{hitl-Cb1Ty-GU.d.cts → hitl-ZSFjNG4K.d.ts} +8 -8
  44. package/dist/{hitl-CpmRFmpq.d.ts → hitl-njf91vlE.d.cts} +8 -8
  45. package/dist/hitl.cjs +2 -2
  46. package/dist/hitl.cjs.map +1 -1
  47. package/dist/hitl.d.cts +17 -9
  48. package/dist/hitl.d.ts +17 -9
  49. package/dist/hitl.js +2 -2
  50. package/dist/hitl.js.map +1 -1
  51. package/dist/index.cjs.map +1 -1
  52. package/dist/index.d.cts +1 -1
  53. package/dist/index.d.ts +1 -1
  54. package/dist/index.js.map +1 -1
  55. package/dist/otel.cjs.map +1 -1
  56. package/dist/otel.d.cts +2 -2
  57. package/dist/otel.d.ts +2 -2
  58. package/dist/otel.js.map +1 -1
  59. package/dist/{persistence-entry-D9pTLFwG.d.cts → persistence-entry-DLN39Ehz.d.cts} +21 -12
  60. package/dist/{persistence-entry-BZfyoFcV.d.ts → persistence-entry-DZZM4w8a.d.ts} +21 -12
  61. package/dist/persistence.d.cts +3 -3
  62. package/dist/persistence.d.ts +3 -3
  63. package/dist/policies.d.cts +1 -1
  64. package/dist/policies.d.ts +1 -1
  65. package/dist/ratelimit.cjs +2 -2
  66. package/dist/ratelimit.cjs.map +1 -1
  67. package/dist/ratelimit.d.cts +2 -2
  68. package/dist/ratelimit.d.ts +2 -2
  69. package/dist/ratelimit.js +2 -2
  70. package/dist/ratelimit.js.map +1 -1
  71. package/dist/reliability.cjs +2 -2
  72. package/dist/reliability.cjs.map +1 -1
  73. package/dist/reliability.d.cts +1 -1
  74. package/dist/reliability.d.ts +1 -1
  75. package/dist/reliability.js +2 -2
  76. package/dist/reliability.js.map +1 -1
  77. package/dist/resource.cjs +2 -2
  78. package/dist/resource.cjs.map +1 -1
  79. package/dist/resource.d.cts +1 -1
  80. package/dist/resource.d.ts +1 -1
  81. package/dist/resource.js +2 -2
  82. package/dist/resource.js.map +1 -1
  83. package/dist/{run-entry-B3qpn1JX.d.cts → run-entry-D3dGlWjB.d.cts} +131 -5
  84. package/dist/{run-entry-B3qpn1JX.d.ts → run-entry-D3dGlWjB.d.ts} +131 -5
  85. package/dist/run.cjs +2 -2
  86. package/dist/run.cjs.map +1 -1
  87. package/dist/run.d.cts +1 -1
  88. package/dist/run.d.ts +1 -1
  89. package/dist/run.js +2 -2
  90. package/dist/run.js.map +1 -1
  91. package/dist/saga.cjs +2 -2
  92. package/dist/saga.cjs.map +1 -1
  93. package/dist/saga.d.cts +13 -8
  94. package/dist/saga.d.ts +13 -8
  95. package/dist/saga.js +2 -2
  96. package/dist/saga.js.map +1 -1
  97. package/dist/singleflight.d.cts +1 -1
  98. package/dist/singleflight.d.ts +1 -1
  99. package/dist/streaming.cjs +4 -4
  100. package/dist/streaming.cjs.map +1 -1
  101. package/dist/streaming.d.cts +4 -4
  102. package/dist/streaming.d.ts +4 -4
  103. package/dist/streaming.js +4 -4
  104. package/dist/streaming.js.map +1 -1
  105. package/dist/testing.cjs +3 -3
  106. package/dist/testing.cjs.map +1 -1
  107. package/dist/testing.d.cts +19 -9
  108. package/dist/testing.d.ts +19 -9
  109. package/dist/testing.js +4 -4
  110. package/dist/testing.js.map +1 -1
  111. package/dist/{types-VsQ2CkKS.d.ts → types-DHOi5HAT.d.ts} +1 -1
  112. package/dist/{types-DPALEegK.d.cts → types-No1-vnRh.d.cts} +1 -1
  113. package/dist/webhook.cjs +2 -2
  114. package/dist/webhook.cjs.map +1 -1
  115. package/dist/webhook.d.cts +21 -9
  116. package/dist/webhook.d.ts +21 -9
  117. package/dist/webhook.js +2 -2
  118. package/dist/webhook.js.map +1 -1
  119. package/dist/workflow.cjs +8 -8
  120. package/dist/workflow.cjs.map +1 -1
  121. package/dist/workflow.d.cts +13 -13
  122. package/dist/workflow.d.ts +13 -13
  123. package/dist/workflow.js +8 -8
  124. package/dist/workflow.js.map +1 -1
  125. package/package.json +1 -1
package/dist/adapters.cjs CHANGED
@@ -1,7 +1,7 @@
1
- "use strict";var ee=Object.defineProperty;var xe=Object.getOwnPropertyDescriptor;var ge=Object.getOwnPropertyNames;var be=Object.prototype.hasOwnProperty;var Se=(e,s)=>{for(var T in s)ee(e,T,{get:s[T],enumerable:!0})},he=(e,s,T,m)=>{if(s&&typeof s=="object"||typeof s=="function")for(let k of ge(s))!be.call(e,k)&&k!==T&&ee(e,k,{get:()=>s[k],enumerable:!(m=xe(s,k))||m.enumerable});return e};var Ae=e=>he(ee({},"__esModule",{value:!0}),e);var Ke={};Se(Ke,{fromCallback:()=>we,fromEvent:()=>de,isEventEmitterLike:()=>Te,isEventTimeoutError:()=>me,isInvalidEmitterError:()=>ye});module.exports=Ae(Ke);function ve(e){let s=e.trim().match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h|d)$/i);if(!s)return;let T=parseFloat(s[1]),m=s[2].toLowerCase();return{_tag:"Duration",millis:T*({ms:1,s:1e3,m:6e4,h:36e5,d:864e5}[m]??1)}}var L=e=>({ok:!0,value:e}),A=(e,s)=>({ok:!1,error:e,...s?.cause!==void 0?{cause:s.cause}:{}});var Pe=e=>typeof e=="object"&&e!==null&&e.type==="UNEXPECTED_ERROR";var Y=Symbol.for("step_timeout_marker");function ne(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:Y in e}function Oe(e){if(!(typeof e!="object"||e===null)){if(e.type==="STEP_TIMEOUT"){let s=e;return{timeoutMs:s.timeoutMs,stepName:s.stepName,stepKey:s.stepKey,attempt:s.attempt}}if(Y in e)return e[Y]}}var ce=Symbol("early-exit");function _e(e,s){return{[ce]:!0,error:e,meta:s}}function Ie(e){return typeof e=="object"&&e!==null&&e[ce]===!0}var Ee=Symbol("mapper-exception");function Me(e){return{[Ee]:!0,thrown:e}}function De(e){return typeof e=="object"&&e!==null&&e[Ee]===!0}function te(e,s){let{backoff:T,initialDelay:m,maxDelay:k,jitter:S}=s,h;switch(T){case"fixed":h=m;break;case"linear":h=m*e;break;case"exponential":h=m*Math.pow(2,e-1);break}if(h=Math.min(h,k),S){let x=h*.25*Math.random();h=h+x}return Math.floor(h)}function re(e){return new Promise(s=>setTimeout(s,e))}var le=Symbol("timeout"),q=Symbol("timeout-option");function Ue(e){return typeof e=="object"&&e!==null&&e[q]===!0}async function Ne(e,s,T,m){let k=new AbortController,S=s.onTimeout??"error",h=()=>typeof S=="function"?S({name:T.name,key:T.key,ms:s.ms}):s.error??{type:"STEP_TIMEOUT",stepName:T.name,stepKey:T.key,timeoutMs:s.ms,attempt:T.attempt},x;m?.aborted&&k.abort(m.reason);let M;m&&!m.aborted&&(M=()=>k.abort(m.reason),m.addEventListener("abort",M,{once:!0}));let i=new Promise((y,C)=>{x=setTimeout(()=>{if(S!=="disconnect"&&k.abort(),S==="option"){C({[q]:!0,ms:s.ms});return}C({[le]:!0,error:h()})},s.ms)}),D;s.signal?D=Promise.resolve(e(k.signal)):D=Promise.resolve(e());try{return await Promise.race([D,i])}catch(y){if(typeof y=="object"&&y!==null&&y[q]===!0)throw{[q]:!0,ms:s.ms};if(typeof y=="object"&&y!==null&&y[le]===!0){S==="disconnect"&&D.catch(()=>{});let C=y.error;if(typeof C=="object"&&C!==null&&C.type!=="STEP_TIMEOUT"){let B={timeoutMs:s.ms,stepName:T.name,stepKey:T.key,attempt:T.attempt};Y in C?C[Y]=B:Object.defineProperty(C,Y,{value:B,enumerable:!1,writable:!0,configurable:!1})}throw C}throw y}finally{clearTimeout(x),M&&m&&m.removeEventListener("abort",M)}}var X={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function pe(e,s){let{onError:T,onEvent:m,catchUnexpected:k,workflowId:S,workflowName:h,context:x,_workflowSignal:M}=s&&typeof s=="object"?s:{},i=S??crypto.randomUUID(),D=!T&&!k,y=[],C=0,B=t=>t??`step_${++C}`,w=t=>{let _=t.context!==void 0||x===void 0?t:{...t,context:x},I=h!==void 0&&_.workflowName===void 0?{..._,workflowName:h}:_;if(I.type==="step_success"){let W=I.stepId;for(let H=y.length-1;H>=0;H--){let U=y[H];if(U.type==="race"&&!U.winnerId){U.winnerId=W;break}}}m?.(I,x)},N=_e,ue=t=>Ie(t),G=(t,_)=>D?_?.origin==="result"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:t,..._.resultCause!==void 0?{cause:_.resultCause}:{}}}:_?.origin==="throw"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"throw",error:t,thrown:_.thrown}}:{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:t}}:t,fe=t=>({type:"UNEXPECTED_ERROR",cause:t.meta.origin==="result"?{type:"STEP_FAILURE",origin:"result",error:t.error,...t.meta.resultCause!==void 0?{cause:t.meta.resultCause}:{}}:{type:"STEP_FAILURE",origin:"throw",error:t.error,thrown:t.meta.thrown}}),ke=t=>typeof t=="function"?!1:!!(t&&typeof t=="object"&&"ok"in t||t&&typeof t=="object"&&"then"in t&&typeof t.then=="function");try{let _=function(o){let c={};for(let[n,p]of Object.entries(o))if(typeof p=="function")c[n]=p;else if(p&&typeof p=="object"&&"fn"in p)c[n]=p.fn;else throw new TypeError(`step.parallel: operation "${n}" must be a function or { fn, errors? } object`);return c},I=function(o,c){let n=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let p=performance.now(),r=!1;y.push({scopeId:n,type:"parallel"});let a=()=>{if(r)return;r=!0;let u=y.findIndex(d=>d.scopeId===n);u!==-1&&y.splice(u,1),w({type:"scope_end",workflowId:i,scopeId:n,ts:Date.now(),durationMs:performance.now()-p})};w({type:"scope_start",workflowId:i,scopeId:n,scopeType:"parallel",name:o,ts:Date.now()});try{let u=await c();if(a(),!u.ok)throw T?.(u.error,o,x),N(u.error,{origin:"result",resultCause:u.cause});return u.value}catch(u){throw a(),u}})()},W=function(o,c){let n=Object.keys(o),p=c.name??`Parallel(${n.join(", ")})`,r=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let a=performance.now(),u=!1;y.push({scopeId:r,type:"parallel"});let d=()=>{if(u)return;u=!0;let R=y.findIndex(f=>f.scopeId===r);R!==-1&&y.splice(R,1),w({type:"scope_end",workflowId:i,scopeId:r,ts:Date.now(),durationMs:performance.now()-a})};w({type:"scope_start",workflowId:i,scopeId:r,scopeType:"parallel",name:p,ts:Date.now()});try{let R=await new Promise(l=>{if(n.length===0){l([]);return}let v=!1,P=n.length,z=new Array(n.length);for(let j=0;j<n.length;j++){let J=n[j],b=j;Promise.resolve(o[J]()).catch(K=>A({type:"PROMISE_REJECTED",cause:K},{cause:{type:"PROMISE_REJECTION",reason:K}})).then(K=>{if(!v){if(!K.ok){v=!0,l([{key:J,result:K}]);return}z[b]={key:J,result:K},P--,P===0&&l(z)}})}});d();let f={};for(let{key:l,result:v}of R){if(!v.ok)throw T?.(v.error,l,x),N(v.error,{origin:"result",resultCause:v.cause});f[l]=v.value}return f}catch(R){throw d(),R}})()};var Fe=_,Le=I,je=W;let t=(o,c,n)=>(async()=>{if(typeof o!="string"||o.length===0)throw new Error('[awaitly] step() requires an explicit string ID as the first argument. Example: step("fetchUser", () => fetchUser(id))');let p=n??{},r=o,a=p.key??o,u=p.key??o,{description:d,retry:R,timeout:f}=p,l=B(a),v=m,P=v?performance.now():0,j=ke(c)?()=>c:c,b={attempts:Math.max(1,R?.attempts??1),backoff:R?.backoff??X.backoff,initialDelay:R?.initialDelay??X.initialDelay,maxDelay:R?.maxDelay??X.maxDelay,jitter:R?.jitter??X.jitter,retryOn:R?.retryOn??X.retryOn,onRetry:R?.onRetry??X.onRetry};m&&w({type:"step_start",workflowId:i,stepId:l,stepKey:a,name:r,description:d,ts:Date.now()});let K;for(let g=1;g<=b.attempts;g++){let Ce=v?performance.now():0;try{let E;if(f?E=await Ne(j,f,{name:r,key:a,attempt:g},M):E=await j(),E.ok){let F=performance.now()-P;return w({type:"step_success",workflowId:i,stepId:l,stepKey:a,name:r,description:d,ts:Date.now(),durationMs:F}),u&&w({type:"step_complete",workflowId:i,stepKey:u,name:r,description:d,ts:Date.now(),durationMs:F,result:E}),E.value}if(K=E,g<b.attempts&&b.retryOn(E.error,g)){let F=te(g,b);w({type:"step_retry",workflowId:i,stepId:l,stepKey:a,name:r,ts:Date.now(),attempt:g+1,maxAttempts:b.attempts,delayMs:F,error:E.error}),b.onRetry(E.error,g,F),await re(F);continue}b.attempts>1&&w({type:"step_retries_exhausted",workflowId:i,stepId:l,stepKey:a,name:r,ts:Date.now(),durationMs:performance.now()-P,attempts:g,lastError:E.error});break}catch(E){let F=performance.now()-Ce;if(Ue(E)){let O=E.ms;w({type:"step_timeout",workflowId:i,stepId:l,stepKey:a,name:r,ts:Date.now(),timeoutMs:O,attempt:g}),w({type:"step_success",workflowId:i,stepId:l,stepKey:a,name:r,description:d,ts:Date.now(),durationMs:performance.now()-P}),u&&w({type:"step_complete",workflowId:i,stepKey:u,name:r,description:d,ts:Date.now(),durationMs:performance.now()-P,result:L(void 0)});return}if(ue(E))throw w({type:"step_aborted",workflowId:i,stepId:l,stepKey:a,name:r,description:d,ts:Date.now(),durationMs:F}),E;if(ne(E)){let O=Oe(E),Q=f?.ms??O?.timeoutMs??0;if(w({type:"step_timeout",workflowId:i,stepId:l,stepKey:a,name:r,ts:Date.now(),timeoutMs:Q,attempt:g}),g<b.attempts&&b.retryOn(E,g)){let Z=te(g,b);w({type:"step_retry",workflowId:i,stepId:l,stepKey:a,name:r,ts:Date.now(),attempt:g+1,maxAttempts:b.attempts,delayMs:Z,error:E}),b.onRetry(E,g,Z),await re(Z);continue}b.attempts>1&&w({type:"step_retries_exhausted",workflowId:i,stepId:l,stepKey:a,name:r,ts:Date.now(),durationMs:performance.now()-P,attempts:g,lastError:E});let ie=performance.now()-P;throw w({type:"step_error",workflowId:i,stepId:l,stepKey:a,name:r,description:d,ts:Date.now(),durationMs:ie,error:E}),u&&w({type:"step_complete",workflowId:i,stepKey:u,name:r,description:d,ts:Date.now(),durationMs:ie,result:A(E,{cause:E}),meta:{origin:"throw",thrown:E}}),T?.(E,r,x),N(E,{origin:"throw",thrown:E})}if(g<b.attempts&&b.retryOn(E,g)){let O=te(g,b);w({type:"step_retry",workflowId:i,stepId:l,stepKey:a,name:r,ts:Date.now(),attempt:g+1,maxAttempts:b.attempts,delayMs:O,error:E}),b.onRetry(E,g,O),await re(O);continue}b.attempts>1&&!ne(E)&&w({type:"step_retries_exhausted",workflowId:i,stepId:l,stepKey:a,name:r,ts:Date.now(),durationMs:performance.now()-P,attempts:g,lastError:E});let $=performance.now()-P;if(k){let O;try{O=k(E)}catch(Q){throw Me(Q)}throw w({type:"step_error",workflowId:i,stepId:l,stepKey:a,name:r,description:d,ts:Date.now(),durationMs:$,error:O}),u&&w({type:"step_complete",workflowId:i,stepKey:u,name:r,description:d,ts:Date.now(),durationMs:$,result:A(O,{cause:E}),meta:{origin:"throw",thrown:E}}),T?.(O,r,x),N(O,{origin:"throw",thrown:E})}else{let O={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:E}};throw w({type:"step_error",workflowId:i,stepId:l,stepKey:a,name:r,description:d,ts:Date.now(),durationMs:$,error:O}),u&&w({type:"step_complete",workflowId:i,stepKey:u,name:r,description:d,ts:Date.now(),durationMs:$,result:A(O,{cause:E}),meta:{origin:"throw",thrown:E}}),E}}}let V=K,ae=performance.now()-P,Re=G(V.error,{origin:"result",resultCause:V.cause});throw w({type:"step_error",workflowId:i,stepId:l,stepKey:a,name:r,description:d,ts:Date.now(),durationMs:ae,error:Re}),u&&w({type:"step_complete",workflowId:i,stepKey:u,name:r,description:d,ts:Date.now(),durationMs:ae,result:V,meta:{origin:"result",resultCause:V.cause}}),T?.(V.error,r,x),N(V.error,{origin:"result",resultCause:V.cause})})();t.try=(o,c,n)=>{if(typeof o!="string"||o.length===0)throw new Error('[awaitly] step.try() requires an explicit string ID as the first argument. Example: step.try("parse", () => JSON.parse(str), { error: "PARSE_ERROR" })');let p=n.key??o,r=o,a=o,u="error"in n?()=>n.error:n.onError,d=m;return(async()=>{let R=d?performance.now():0;m&&w({type:"step_start",workflowId:i,stepId:a,stepKey:p,name:r,ts:Date.now()});try{let f=await c(),l=performance.now()-R;return w({type:"step_success",workflowId:i,stepId:a,stepKey:p,name:r,ts:Date.now(),durationMs:l}),p&&w({type:"step_complete",workflowId:i,stepKey:p,name:r,ts:Date.now(),durationMs:l,result:L(f)}),f}catch(f){let l=u(f),v=performance.now()-R,P=G(l,{origin:"throw",thrown:f});throw w({type:"step_error",workflowId:i,stepId:a,stepKey:p,name:r,ts:Date.now(),durationMs:v,error:P}),p&&w({type:"step_complete",workflowId:i,stepKey:p,name:r,ts:Date.now(),durationMs:v,result:A(l,{cause:f}),meta:{origin:"throw",thrown:f}}),T?.(l,r,x),N(l,{origin:"throw",thrown:f})}})()},t.fromResult=(o,c,n)=>{if(typeof o!="string"||o.length===0)throw new Error('[awaitly] step.fromResult() requires an explicit string ID as the first argument. Example: step.fromResult("callProvider", () => callProvider(input), { onError: (e) => ({ type: "FAILED" }) })');let p=n.key??o,r=o,a=o,u="error"in n?()=>n.error:n.onError,d=m;return(async()=>{let R=d?performance.now():0;m&&w({type:"step_start",workflowId:i,stepId:a,stepKey:p,name:r,ts:Date.now()});let f=await c();if(f.ok){let l=performance.now()-R;return w({type:"step_success",workflowId:i,stepId:a,stepKey:p,name:r,ts:Date.now(),durationMs:l}),p&&w({type:"step_complete",workflowId:i,stepKey:p,name:r,ts:Date.now(),durationMs:l,result:L(f.value)}),f.value}else{let l=u(f.error),v=performance.now()-R,P=G(l,{origin:"result",resultCause:f.error});throw w({type:"step_error",workflowId:i,stepId:a,stepKey:p,name:r,ts:Date.now(),durationMs:v,error:P}),p&&w({type:"step_complete",workflowId:i,stepKey:p,name:r,ts:Date.now(),durationMs:v,result:A(l,{cause:f.error}),meta:{origin:"result",resultCause:f.error}}),T?.(l,r,x),N(l,{origin:"result",resultCause:f.error})}})()},t.retry=(o,c,n)=>{if(typeof o!="string"||o.length===0)throw new Error('[awaitly] step.retry() requires an explicit string ID as the first argument. Example: step.retry("fetchData", () => fetchData(), { attempts: 3 })');return t(o,c,{key:n.key??o,retry:{attempts:n.attempts,backoff:n.backoff,initialDelay:n.initialDelay,maxDelay:n.maxDelay,jitter:n.jitter,retryOn:n.retryOn,onRetry:n.onRetry},timeout:n.timeout})},t.withTimeout=(o,c,n)=>{if(typeof o!="string"||o.length===0)throw new Error('[awaitly] step.withTimeout() requires an explicit string ID as the first argument. Example: step.withTimeout("slowOp", () => slowOp(), { ms: 5000 })');return t(o,c,{key:n.key??o,timeout:n})},t.sleep=(o,c,n)=>{if(typeof o!="string"||o.length===0)throw new Error('[awaitly] step.sleep() requires an explicit string ID as the first argument. Example: step.sleep("delay", "5s")');let p=typeof c=="string"?ve(c):c;if(!p)throw new Error(`step.sleep: invalid duration '${c}'`);let r=p.millis,a=n?.signal;return t(o,async()=>{if(M?.aborted||a?.aborted){let u=new Error("Sleep aborted");throw u.name="AbortError",u}return new Promise((u,d)=>{let R={timeoutId:void 0},f=()=>{R.timeoutId&&clearTimeout(R.timeoutId);let l=new Error("Sleep aborted");l.name="AbortError",d(l)};M?.addEventListener("abort",f,{once:!0}),a?.addEventListener("abort",f,{once:!0}),R.timeoutId=setTimeout(()=>{M?.removeEventListener("abort",f),a?.removeEventListener("abort",f),u(L(void 0))},r)})},{key:n?.key??o,description:n?.description})},t.parallel=((...o)=>{if(typeof o[0]!="string")throw new TypeError("step.parallel(name, ...): first argument must be a string (step name). Example: step.parallel('Fetch data', { user: () => fetchUser(), posts: () => fetchPosts() })");let c=o[0],n=o[1];if(typeof n=="function")return I(c,n);if(n&&typeof n=="object"&&!Array.isArray(n)){let r=_(n);return W(r,{name:c})}throw new TypeError("step.parallel(name, ...): second argument must be a function (array form) or an object of operations (object form).")}),t.race=(o,c)=>{let n=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let p=performance.now(),r=!1,a={scopeId:n,type:"race",winnerId:void 0};y.push(a);let u=()=>{if(r)return;r=!0;let d=y.findIndex(R=>R.scopeId===n);d!==-1&&y.splice(d,1),w({type:"scope_end",workflowId:i,scopeId:n,ts:Date.now(),durationMs:performance.now()-p,winnerId:a.winnerId})};w({type:"scope_start",workflowId:i,scopeId:n,scopeType:"race",name:o,ts:Date.now()});try{let d=await c();if(u(),!d.ok)throw T?.(d.error,o,x),N(d.error,{origin:"result",resultCause:d.cause});return d.value}catch(d){throw u(),d}})()},t.allSettled=(o,c)=>{let n=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let p=performance.now(),r=!1;y.push({scopeId:n,type:"allSettled"});let a=()=>{if(r)return;r=!0;let u=y.findIndex(d=>d.scopeId===n);u!==-1&&y.splice(u,1),w({type:"scope_end",workflowId:i,scopeId:n,ts:Date.now(),durationMs:performance.now()-p})};w({type:"scope_start",workflowId:i,scopeId:n,scopeType:"allSettled",name:o,ts:Date.now()});try{let u=await c();if(a(),!u.ok)throw T?.(u.error,o,x),N(u.error,{origin:"result",resultCause:u.cause});return u.value}catch(u){throw a(),u}})()},t.if=(o,c,n)=>n(),t.label=t.if,t.branch=async(o,c)=>{let{condition:n,then:p,else:r}=c;if(n())return await p();if(r)return await r()},t.arm=(o,c)=>({fn:o,errors:c}),t.forEach=async(o,c,n)=>{let p=[],r=n.maxIterations,a=0,u="run"in n,d=Symbol.asyncIterator in c?c:(async function*(){yield*c})();for await(let R of d){if(r!==void 0&&a>=r)break;let f;u?f=await n.run(R,a):f=await n.item.handler(R,a,t),p.push(f),a++}return p},t.item=o=>({__forEachItemHandler:!0,handler:o}),t.dep=(o,c)=>c;let U=await e(t);if(process.env.NODE_ENV!=="production"&&U!==null&&typeof U=="object"&&"ok"in U&&typeof U.ok=="boolean"){let o=U;(o.ok===!0&&"value"in o||o.ok===!1&&"error"in o)&&console.warn(`awaitly: Workflow executor returned a Result-like object. Return raw values, not ok() or err().
1
+ "use strict";var ee=Object.defineProperty;var ge=Object.getOwnPropertyDescriptor;var Se=Object.getOwnPropertyNames;var be=Object.prototype.hasOwnProperty;var he=(e,s)=>{for(var y in s)ee(e,y,{get:s[y],enumerable:!0})},Ae=(e,s,y,E)=>{if(s&&typeof s=="object"||typeof s=="function")for(let R of Se(s))!be.call(e,R)&&R!==y&&ee(e,R,{get:()=>s[R],enumerable:!(E=ge(s,R))||E.enumerable});return e};var ve=e=>Ae(ee({},"__esModule",{value:!0}),e);var Fe={};he(Fe,{fromCallback:()=>de,fromEvent:()=>Te,isEventEmitterLike:()=>fe,isEventTimeoutError:()=>ye,isInvalidEmitterError:()=>we});module.exports=ve(Fe);function Pe(e){let s=e.trim().match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h|d)$/i);if(!s)return;let y=parseFloat(s[1]),E=s[2].toLowerCase();return{_tag:"Duration",millis:y*({ms:1,s:1e3,m:6e4,h:36e5,d:864e5}[E]??1)}}var M=e=>({ok:!0,value:e}),A=(e,s)=>({ok:!1,error:e,...s?.cause!==void 0?{cause:s.cause}:{}});var Oe=e=>typeof e=="object"&&e!==null&&e.type==="UNEXPECTED_ERROR";var Y=Symbol.for("step_timeout_marker");function ne(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:Y in e}function _e(e){if(!(typeof e!="object"||e===null)){if(e.type==="STEP_TIMEOUT"){let s=e;return{timeoutMs:s.timeoutMs,stepName:s.stepName,stepKey:s.stepKey,attempt:s.attempt}}if(Y in e)return e[Y]}}var Ee=Symbol("early-exit");function Ie(e,s){return{[Ee]:!0,error:e,meta:s}}function Me(e){return typeof e=="object"&&e!==null&&e[Ee]===!0}var me=Symbol("mapper-exception");function Ue(e){return{[me]:!0,thrown:e}}function De(e){return typeof e=="object"&&e!==null&&e[me]===!0}function te(e,s){let{backoff:y,initialDelay:E,maxDelay:R,jitter:x}=s,b;switch(y){case"fixed":b=E;break;case"linear":b=E*e;break;case"exponential":b=E*Math.pow(2,e-1);break}if(b=Math.min(b,R),x){let C=b*.25*Math.random();b=b+C}return Math.floor(b)}function re(e){return new Promise(s=>setTimeout(s,e))}var pe=Symbol("timeout"),q=Symbol("timeout-option");function Ne(e){return typeof e=="object"&&e!==null&&e[q]===!0}async function Ke(e,s,y,E){let R=new AbortController,x=s.onTimeout??"error",b=()=>typeof x=="function"?x({name:y.name,key:y.key,ms:s.ms}):s.error??{type:"STEP_TIMEOUT",stepName:y.name,stepKey:y.key,timeoutMs:s.ms,attempt:y.attempt},C;E?.aborted&&R.abort(E.reason);let U;E&&!E.aborted&&(U=()=>R.abort(E.reason),E.addEventListener("abort",U,{once:!0}));let c=new Promise((d,g)=>{C=setTimeout(()=>{if(x!=="disconnect"&&R.abort(),x==="option"){g({[q]:!0,ms:s.ms});return}g({[pe]:!0,error:b()})},s.ms)}),D;s.signal?D=Promise.resolve(e(R.signal)):D=Promise.resolve(e());try{return await Promise.race([D,c])}catch(d){if(typeof d=="object"&&d!==null&&d[q]===!0)throw{[q]:!0,ms:s.ms};if(typeof d=="object"&&d!==null&&d[pe]===!0){x==="disconnect"&&D.catch(()=>{});let g=d.error;if(typeof g=="object"&&g!==null&&g.type!=="STEP_TIMEOUT"){let B={timeoutMs:s.ms,stepName:y.name,stepKey:y.key,attempt:y.attempt};Y in g?g[Y]=B:Object.defineProperty(g,Y,{value:B,enumerable:!1,writable:!0,configurable:!1})}throw g}throw d}finally{clearTimeout(C),U&&E&&E.removeEventListener("abort",U)}}var X={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function le(e,s){let{onError:y,onEvent:E,catchUnexpected:R,workflowId:x,workflowName:b,context:C,_workflowSignal:U}=s&&typeof s=="object"?s:{},c=x??crypto.randomUUID(),D=!y&&!R,d=[],g=0,B=t=>t??`step_${++g}`,T=t=>{let _=t.context!==void 0||C===void 0?t:{...t,context:C},I=b!==void 0&&_.workflowName===void 0?{..._,workflowName:b}:_;if(I.type==="step_success"){let W=I.stepId;for(let H=d.length-1;H>=0;H--){let N=d[H];if(N.type==="race"&&!N.winnerId){N.winnerId=W;break}}}E?.(I,C)},K=Ie,ue=t=>Me(t),G=(t,_)=>D?_?.origin==="result"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:t,..._.resultCause!==void 0?{cause:_.resultCause}:{}}}:_?.origin==="throw"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"throw",error:t,thrown:_.thrown}}:{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:t}}:t,ke=t=>({type:"UNEXPECTED_ERROR",cause:t.meta.origin==="result"?{type:"STEP_FAILURE",origin:"result",error:t.error,...t.meta.resultCause!==void 0?{cause:t.meta.resultCause}:{}}:{type:"STEP_FAILURE",origin:"throw",error:t.error,thrown:t.meta.thrown}}),Re=t=>typeof t=="function"?!1:!!(t&&typeof t=="object"&&"ok"in t||t&&typeof t=="object"&&"then"in t&&typeof t.then=="function");try{let _=function(o){let a={};for(let[n,p]of Object.entries(o))if(typeof p=="function")a[n]=p;else if(p&&typeof p=="object"&&"fn"in p)a[n]=p.fn;else throw new TypeError(`step.parallel: operation "${n}" must be a function or { fn, errors? } object`);return a},I=function(o,a){let n=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let p=performance.now(),r=!1;d.push({scopeId:n,type:"parallel"});let i=()=>{if(r)return;r=!0;let u=d.findIndex(m=>m.scopeId===n);u!==-1&&d.splice(u,1),T({type:"scope_end",workflowId:c,scopeId:n,ts:Date.now(),durationMs:performance.now()-p})};T({type:"scope_start",workflowId:c,scopeId:n,scopeType:"parallel",name:o,ts:Date.now()});try{let u=await a();if(i(),!u.ok)throw y?.(u.error,o,C),K(u.error,{origin:"result",resultCause:u.cause});return u.value}catch(u){throw i(),u}})()},W=function(o,a){let n=Object.keys(o),p=a.name??`Parallel(${n.join(", ")})`,r=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let i=performance.now(),u=!1;d.push({scopeId:r,type:"parallel"});let m=()=>{if(u)return;u=!0;let k=d.findIndex(f=>f.scopeId===r);k!==-1&&d.splice(k,1),T({type:"scope_end",workflowId:c,scopeId:r,ts:Date.now(),durationMs:performance.now()-i})};T({type:"scope_start",workflowId:c,scopeId:r,scopeType:"parallel",name:p,ts:Date.now()});try{let k=await new Promise(l=>{if(n.length===0){l([]);return}let v=!1,P=n.length,z=new Array(n.length);for(let j=0;j<n.length;j++){let J=n[j],h=j;Promise.resolve(o[J]()).catch(F=>A({type:"PROMISE_REJECTED",cause:F},{cause:{type:"PROMISE_REJECTION",reason:F}})).then(F=>{if(!v){if(!F.ok){v=!0,l([{key:J,result:F}]);return}z[h]={key:J,result:F},P--,P===0&&l(z)}})}});m();let f={};for(let{key:l,result:v}of k){if(!v.ok)throw y?.(v.error,l,C),K(v.error,{origin:"result",resultCause:v.cause});f[l]=v.value}return f}catch(k){throw m(),k}})()};var Le=_,je=I,Ve=W;let t=(o,a,n)=>(async()=>{if(typeof o!="string"||o.length===0)throw new Error('[awaitly] step() requires an explicit string ID as the first argument. Example: step("fetchUser", () => fetchUser(id))');let p=n??{},r=o,i=p.key??o,u=p.key??o,{description:m,retry:k,timeout:f}=p,l=B(i),v=E,P=v?performance.now():0,j=Re(a)?()=>a:a,h={attempts:Math.max(1,k?.attempts??1),backoff:k?.backoff??X.backoff,initialDelay:k?.initialDelay??X.initialDelay,maxDelay:k?.maxDelay??X.maxDelay,jitter:k?.jitter??X.jitter,retryOn:k?.retryOn??X.retryOn,onRetry:k?.onRetry??X.onRetry};E&&T({type:"step_start",workflowId:c,stepId:l,stepKey:i,name:r,description:m,ts:Date.now()});let F;for(let S=1;S<=h.attempts;S++){let xe=v?performance.now():0;try{let w;if(f?w=await Ke(j,f,{name:r,key:i,attempt:S},U):w=await j(),w.ok){let L=performance.now()-P;return T({type:"step_success",workflowId:c,stepId:l,stepKey:i,name:r,description:m,ts:Date.now(),durationMs:L}),u&&T({type:"step_complete",workflowId:c,stepKey:u,name:r,description:m,ts:Date.now(),durationMs:L,result:w}),w.value}if(F=w,S<h.attempts&&h.retryOn(w.error,S)){let L=te(S,h);T({type:"step_retry",workflowId:c,stepId:l,stepKey:i,name:r,ts:Date.now(),attempt:S+1,maxAttempts:h.attempts,delayMs:L,error:w.error}),h.onRetry(w.error,S,L),await re(L);continue}h.attempts>1&&T({type:"step_retries_exhausted",workflowId:c,stepId:l,stepKey:i,name:r,ts:Date.now(),durationMs:performance.now()-P,attempts:S,lastError:w.error});break}catch(w){let L=performance.now()-xe;if(Ne(w)){let O=w.ms;T({type:"step_timeout",workflowId:c,stepId:l,stepKey:i,name:r,ts:Date.now(),timeoutMs:O,attempt:S}),T({type:"step_success",workflowId:c,stepId:l,stepKey:i,name:r,description:m,ts:Date.now(),durationMs:performance.now()-P}),u&&T({type:"step_complete",workflowId:c,stepKey:u,name:r,description:m,ts:Date.now(),durationMs:performance.now()-P,result:M(void 0)});return}if(ue(w))throw T({type:"step_aborted",workflowId:c,stepId:l,stepKey:i,name:r,description:m,ts:Date.now(),durationMs:L}),w;if(ne(w)){let O=_e(w),Q=f?.ms??O?.timeoutMs??0;if(T({type:"step_timeout",workflowId:c,stepId:l,stepKey:i,name:r,ts:Date.now(),timeoutMs:Q,attempt:S}),S<h.attempts&&h.retryOn(w,S)){let Z=te(S,h);T({type:"step_retry",workflowId:c,stepId:l,stepKey:i,name:r,ts:Date.now(),attempt:S+1,maxAttempts:h.attempts,delayMs:Z,error:w}),h.onRetry(w,S,Z),await re(Z);continue}h.attempts>1&&T({type:"step_retries_exhausted",workflowId:c,stepId:l,stepKey:i,name:r,ts:Date.now(),durationMs:performance.now()-P,attempts:S,lastError:w});let ie=performance.now()-P;throw T({type:"step_error",workflowId:c,stepId:l,stepKey:i,name:r,description:m,ts:Date.now(),durationMs:ie,error:w}),u&&T({type:"step_complete",workflowId:c,stepKey:u,name:r,description:m,ts:Date.now(),durationMs:ie,result:A(w,{cause:w}),meta:{origin:"throw",thrown:w}}),y?.(w,r,C),K(w,{origin:"throw",thrown:w})}if(S<h.attempts&&h.retryOn(w,S)){let O=te(S,h);T({type:"step_retry",workflowId:c,stepId:l,stepKey:i,name:r,ts:Date.now(),attempt:S+1,maxAttempts:h.attempts,delayMs:O,error:w}),h.onRetry(w,S,O),await re(O);continue}h.attempts>1&&!ne(w)&&T({type:"step_retries_exhausted",workflowId:c,stepId:l,stepKey:i,name:r,ts:Date.now(),durationMs:performance.now()-P,attempts:S,lastError:w});let $=performance.now()-P;if(R){let O;try{O=R(w)}catch(Q){throw Ue(Q)}throw T({type:"step_error",workflowId:c,stepId:l,stepKey:i,name:r,description:m,ts:Date.now(),durationMs:$,error:O}),u&&T({type:"step_complete",workflowId:c,stepKey:u,name:r,description:m,ts:Date.now(),durationMs:$,result:A(O,{cause:w}),meta:{origin:"throw",thrown:w}}),y?.(O,r,C),K(O,{origin:"throw",thrown:w})}else{let O={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:w}};throw T({type:"step_error",workflowId:c,stepId:l,stepKey:i,name:r,description:m,ts:Date.now(),durationMs:$,error:O}),u&&T({type:"step_complete",workflowId:c,stepKey:u,name:r,description:m,ts:Date.now(),durationMs:$,result:A(O,{cause:w}),meta:{origin:"throw",thrown:w}}),w}}}let V=F,ae=performance.now()-P,Ce=G(V.error,{origin:"result",resultCause:V.cause});throw T({type:"step_error",workflowId:c,stepId:l,stepKey:i,name:r,description:m,ts:Date.now(),durationMs:ae,error:Ce}),u&&T({type:"step_complete",workflowId:c,stepKey:u,name:r,description:m,ts:Date.now(),durationMs:ae,result:V,meta:{origin:"result",resultCause:V.cause}}),y?.(V.error,r,C),K(V.error,{origin:"result",resultCause:V.cause})})();t.try=(o,a,n)=>{if(typeof o!="string"||o.length===0)throw new Error('[awaitly] step.try() requires an explicit string ID as the first argument. Example: step.try("parse", () => JSON.parse(str), { error: "PARSE_ERROR" })');let p=n.key??o,r=o,i=o,u="error"in n?()=>n.error:n.onError,m=E;return(async()=>{let k=m?performance.now():0;E&&T({type:"step_start",workflowId:c,stepId:i,stepKey:p,name:r,ts:Date.now()});try{let f=await a(),l=performance.now()-k;return T({type:"step_success",workflowId:c,stepId:i,stepKey:p,name:r,ts:Date.now(),durationMs:l}),p&&T({type:"step_complete",workflowId:c,stepKey:p,name:r,ts:Date.now(),durationMs:l,result:M(f)}),f}catch(f){let l=u(f),v=performance.now()-k,P=G(l,{origin:"throw",thrown:f});throw T({type:"step_error",workflowId:c,stepId:i,stepKey:p,name:r,ts:Date.now(),durationMs:v,error:P}),p&&T({type:"step_complete",workflowId:c,stepKey:p,name:r,ts:Date.now(),durationMs:v,result:A(l,{cause:f}),meta:{origin:"throw",thrown:f}}),y?.(l,r,C),K(l,{origin:"throw",thrown:f})}})()},t.fromResult=(o,a,n)=>{if(typeof o!="string"||o.length===0)throw new Error('[awaitly] step.fromResult() requires an explicit string ID as the first argument. Example: step.fromResult("callProvider", () => callProvider(input), { onError: (e) => ({ type: "FAILED" }) })');let p=n.key??o,r=o,i=o,u="error"in n?()=>n.error:n.onError,m=E;return(async()=>{let k=m?performance.now():0;E&&T({type:"step_start",workflowId:c,stepId:i,stepKey:p,name:r,ts:Date.now()});let f=await a();if(f.ok){let l=performance.now()-k;return T({type:"step_success",workflowId:c,stepId:i,stepKey:p,name:r,ts:Date.now(),durationMs:l}),p&&T({type:"step_complete",workflowId:c,stepKey:p,name:r,ts:Date.now(),durationMs:l,result:M(f.value)}),f.value}else{let l=u(f.error),v=performance.now()-k,P=G(l,{origin:"result",resultCause:f.error});throw T({type:"step_error",workflowId:c,stepId:i,stepKey:p,name:r,ts:Date.now(),durationMs:v,error:P}),p&&T({type:"step_complete",workflowId:c,stepKey:p,name:r,ts:Date.now(),durationMs:v,result:A(l,{cause:f.error}),meta:{origin:"result",resultCause:f.error}}),y?.(l,r,C),K(l,{origin:"result",resultCause:f.error})}})()},t.retry=(o,a,n)=>{if(typeof o!="string"||o.length===0)throw new Error('[awaitly] step.retry() requires an explicit string ID as the first argument. Example: step.retry("fetchData", () => fetchData(), { attempts: 3 })');return t(o,a,{key:n.key??o,retry:{attempts:n.attempts,backoff:n.backoff,initialDelay:n.initialDelay,maxDelay:n.maxDelay,jitter:n.jitter,retryOn:n.retryOn,onRetry:n.onRetry},timeout:n.timeout})},t.withTimeout=(o,a,n)=>{if(typeof o!="string"||o.length===0)throw new Error('[awaitly] step.withTimeout() requires an explicit string ID as the first argument. Example: step.withTimeout("slowOp", () => slowOp(), { ms: 5000 })');return t(o,a,{key:n.key??o,timeout:n})},t.sleep=(o,a,n)=>{if(typeof o!="string"||o.length===0)throw new Error('[awaitly] step.sleep() requires an explicit string ID as the first argument. Example: step.sleep("delay", "5s")');let p=typeof a=="string"?Pe(a):a;if(!p)throw new Error(`step.sleep: invalid duration '${a}'`);let r=p.millis,i=n?.signal;return t(o,async()=>{if(U?.aborted||i?.aborted){let u=new Error("Sleep aborted");throw u.name="AbortError",u}return new Promise((u,m)=>{let k={timeoutId:void 0},f=()=>{k.timeoutId&&clearTimeout(k.timeoutId);let l=new Error("Sleep aborted");l.name="AbortError",m(l)};U?.addEventListener("abort",f,{once:!0}),i?.addEventListener("abort",f,{once:!0}),k.timeoutId=setTimeout(()=>{U?.removeEventListener("abort",f),i?.removeEventListener("abort",f),u(M(void 0))},r)})},{key:n?.key??o,description:n?.description})},t.parallel=((...o)=>{if(typeof o[0]!="string")throw new TypeError("step.parallel(name, ...): first argument must be a string (step name). Example: step.parallel('Fetch data', { user: () => fetchUser(), posts: () => fetchPosts() })");let a=o[0],n=o[1];if(typeof n=="function")return I(a,n);if(n&&typeof n=="object"&&!Array.isArray(n)){let r=_(n);return W(r,{name:a})}throw new TypeError("step.parallel(name, ...): second argument must be a function (array form) or an object of operations (object form).")}),t.race=(o,a)=>{let n=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let p=performance.now(),r=!1,i={scopeId:n,type:"race",winnerId:void 0};d.push(i);let u=()=>{if(r)return;r=!0;let m=d.findIndex(k=>k.scopeId===n);m!==-1&&d.splice(m,1),T({type:"scope_end",workflowId:c,scopeId:n,ts:Date.now(),durationMs:performance.now()-p,winnerId:i.winnerId})};T({type:"scope_start",workflowId:c,scopeId:n,scopeType:"race",name:o,ts:Date.now()});try{let m=await a();if(u(),!m.ok)throw y?.(m.error,o,C),K(m.error,{origin:"result",resultCause:m.cause});return m.value}catch(m){throw u(),m}})()},t.allSettled=(o,a)=>{let n=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let p=performance.now(),r=!1;d.push({scopeId:n,type:"allSettled"});let i=()=>{if(r)return;r=!0;let u=d.findIndex(m=>m.scopeId===n);u!==-1&&d.splice(u,1),T({type:"scope_end",workflowId:c,scopeId:n,ts:Date.now(),durationMs:performance.now()-p})};T({type:"scope_start",workflowId:c,scopeId:n,scopeType:"allSettled",name:o,ts:Date.now()});try{let u=await a();if(i(),!u.ok)throw y?.(u.error,o,C),K(u.error,{origin:"result",resultCause:u.cause});return u.value}catch(u){throw i(),u}})()},t.if=(o,a,n)=>n(),t.label=t.if,t.branch=async(o,a)=>{let{condition:n,then:p,else:r}=a;if(n())return await p();if(r)return await r()},t.arm=(o,a)=>({fn:o,errors:a}),t.forEach=async(o,a,n)=>{let p=[],r=n.maxIterations,i=0,u="run"in n,m=Symbol.asyncIterator in a?a:(async function*(){yield*a})();for await(let k of m){if(r!==void 0&&i>=r)break;let f;u?f=await n.run(k,i):f=await n.item.handler(k,i,t),p.push(f),i++}return p},t.item=o=>({__forEachItemHandler:!0,handler:o}),t.dep=(o,a)=>a,t.run=(o,a,n)=>t(o,()=>a,n),t.andThen=(o,a,n,p)=>t(o,()=>n(a),p),t.match=async(o,a,n,p)=>t(o,async()=>{let r=await a;return r.ok?M(await n.ok(r.value)):M(await n.err(r.error,r.cause))},p),t.all=t.parallel,t.map=async(o,a,n,p)=>{let r=p?.concurrency??a.length;return t(o,()=>r>=a.length?ce(a.map((i,u)=>n(i,u))):(async()=>{let i=[];for(let u=0;u<a.length;u+=r){let m=a.slice(u,u+r),k=await ce(m.map((f,l)=>n(f,u+l)));if(!k.ok)return k;i.push(...k.value)}return M(i)})(),{key:p?.key})};let N=await e({step:t});if(process.env.NODE_ENV!=="production"&&N!==null&&typeof N=="object"&&"ok"in N&&typeof N.ok=="boolean"){let o=N;(o.ok===!0&&"value"in o||o.ok===!1&&"error"in o)&&console.warn(`awaitly: Workflow executor returned a Result-like object. Return raw values, not ok() or err().
2
2
 
3
3
  Incorrect: return ok({ data });
4
4
  Correct: return { data };
5
5
 
6
- See: https://jagreehal.github.io/awaitly/guides/troubleshooting/#returning-ok-from-workflow-executor-double-wrapping`)}return L(U)}catch(t){if(De(t))throw t.thrown;if(ue(t)){let I=t.meta.origin==="throw"?t.meta.thrown:t.meta.resultCause;if(k||T)return A(t.error,{cause:I});if(Pe(t.error))return A(t.error,{cause:I});if(ne(t.error))return A(t.error,{cause:I});let W=fe(t);return A(W,{cause:I})}if(k){let I=k(t);return T?.(I,"unexpected",x),A(I,{cause:t})}let _={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:t}};return T?.(_,"unexpected",x),A(_,{cause:t})}}pe.strict=(e,s)=>pe(e,s);function me(e){return typeof e=="object"&&e!==null&&e.type==="EVENT_TIMEOUT"}function ye(e){return typeof e=="object"&&e!==null&&e.type==="INVALID_EMITTER"}function we(e,s){return new Promise(T=>{try{e((m,k)=>{if(m){let S=s?.onError?s.onError(m):m;T(A(S,{cause:m}))}else T(L(k))})}catch(m){let k=m instanceof Error?m:new Error(String(m)),S=s?.onError?s.onError(k):k;T(A(S,{cause:m}))}})}function oe(e){return typeof e=="object"&&e!==null&&"on"in e&&"off"in e&&typeof e.on=="function"&&typeof e.off=="function"}function se(e){return typeof e=="object"&&e!==null&&"addEventListener"in e&&"removeEventListener"in e&&typeof e.addEventListener=="function"&&typeof e.removeEventListener=="function"}function de(e,s,T){return new Promise(m=>{let k,S=!1,h=oe(e)?(y,C)=>e.on(y,C):se(e)?(y,C)=>e.addEventListener(y,C):null,x=oe(e)?(y,C)=>e.off(y,C):se(e)?(y,C)=>e.removeEventListener(y,C):null;if(!h||!x){m(A({type:"INVALID_EMITTER",message:"Object does not have on/off or addEventListener/removeEventListener"}));return}let M=(...y)=>{S||(S=!0,D(),m(L(y[0])))},i=(...y)=>{if(S)return;S=!0,D();let C=y[0],B=T?.onError?T.onError(C):C;m(A(B,{cause:C}))},D=()=>{k&&clearTimeout(k),x(s.success,M),s.error&&x(s.error,i)};h(s.success,M),s.error&&h(s.error,i),s.timeout&&(k=setTimeout(()=>{if(S)return;S=!0,D();let y={type:"EVENT_TIMEOUT",event:s.success,timeoutMs:s.timeout};m(A(y))},s.timeout))})}function Te(e){return oe(e)||se(e)}0&&(module.exports={fromCallback,fromEvent,isEventEmitterLike,isEventTimeoutError,isInvalidEmitterError});
6
+ See: https://jagreehal.github.io/awaitly/guides/troubleshooting/#returning-ok-from-workflow-executor-double-wrapping`)}return M(N)}catch(t){if(De(t))throw t.thrown;if(ue(t)){let I=t.meta.origin==="throw"?t.meta.thrown:t.meta.resultCause;if(R||y)return A(t.error,{cause:I});if(Oe(t.error))return A(t.error,{cause:I});if(ne(t.error))return A(t.error,{cause:I});let W=ke(t);return A(W,{cause:I})}if(R){let I=R(t);return y?.(I,"unexpected",C),A(I,{cause:t})}let _={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:t}};return y?.(_,"unexpected",C),A(_,{cause:t})}}le.strict=(e,s)=>le(e,s);async function ce(e){return e.length===0?M([]):new Promise(s=>{let y=!1,E=e.length,R=new Array(e.length);for(let x=0;x<e.length;x++){let b=x;Promise.resolve(e[b]).catch(C=>A({type:"PROMISE_REJECTED",cause:C},{cause:{type:"PROMISE_REJECTION",reason:C}})).then(C=>{if(!y){if(!C.ok){y=!0,s(C);return}R[b]=C.value,E--,E===0&&s(M(R))}})}})}function ye(e){return typeof e=="object"&&e!==null&&e.type==="EVENT_TIMEOUT"}function we(e){return typeof e=="object"&&e!==null&&e.type==="INVALID_EMITTER"}function de(e,s){return new Promise(y=>{try{e((E,R)=>{if(E){let x=s?.onError?s.onError(E):E;y(A(x,{cause:E}))}else y(M(R))})}catch(E){let R=E instanceof Error?E:new Error(String(E)),x=s?.onError?s.onError(R):R;y(A(x,{cause:E}))}})}function oe(e){return typeof e=="object"&&e!==null&&"on"in e&&"off"in e&&typeof e.on=="function"&&typeof e.off=="function"}function se(e){return typeof e=="object"&&e!==null&&"addEventListener"in e&&"removeEventListener"in e&&typeof e.addEventListener=="function"&&typeof e.removeEventListener=="function"}function Te(e,s,y){return new Promise(E=>{let R,x=!1,b=oe(e)?(d,g)=>e.on(d,g):se(e)?(d,g)=>e.addEventListener(d,g):null,C=oe(e)?(d,g)=>e.off(d,g):se(e)?(d,g)=>e.removeEventListener(d,g):null;if(!b||!C){E(A({type:"INVALID_EMITTER",message:"Object does not have on/off or addEventListener/removeEventListener"}));return}let U=(...d)=>{x||(x=!0,D(),E(M(d[0])))},c=(...d)=>{if(x)return;x=!0,D();let g=d[0],B=y?.onError?y.onError(g):g;E(A(B,{cause:g}))},D=()=>{R&&clearTimeout(R),C(s.success,U),s.error&&C(s.error,c)};b(s.success,U),s.error&&b(s.error,c),s.timeout&&(R=setTimeout(()=>{if(x)return;x=!0,D();let d={type:"EVENT_TIMEOUT",event:s.success,timeoutMs:s.timeout};E(A(d))},s.timeout))})}function fe(e){return oe(e)||se(e)}0&&(module.exports={fromCallback,fromEvent,isEventEmitterLike,isEventTimeoutError,isInvalidEmitterError});
7
7
  //# sourceMappingURL=adapters.cjs.map