awaitly 1.31.1 → 1.32.1

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 (169) hide show
  1. package/dist/adapters.cjs +2 -2
  2. package/dist/adapters.cjs.map +1 -1
  3. package/dist/adapters.d.cts +3 -1
  4. package/dist/adapters.d.ts +3 -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 +3 -1
  10. package/dist/batch.d.ts +3 -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 +3 -1
  16. package/dist/circuit-breaker.d.ts +3 -1
  17. package/dist/circuit-breaker.js +2 -2
  18. package/dist/circuit-breaker.js.map +1 -1
  19. package/dist/conditional.d.cts +3 -1
  20. package/dist/conditional.d.ts +3 -1
  21. package/dist/core.cjs +2 -2
  22. package/dist/core.cjs.map +1 -1
  23. package/dist/core.d.cts +2 -1
  24. package/dist/core.d.ts +2 -1
  25. package/dist/core.js +2 -2
  26. package/dist/core.js.map +1 -1
  27. package/dist/diagnostics.cjs +3 -3
  28. package/dist/diagnostics.cjs.map +1 -1
  29. package/dist/diagnostics.d.cts +3 -1
  30. package/dist/diagnostics.d.ts +3 -1
  31. package/dist/diagnostics.js +3 -3
  32. package/dist/diagnostics.js.map +1 -1
  33. package/dist/durable.cjs +3 -3
  34. package/dist/durable.cjs.map +1 -1
  35. package/dist/durable.d.cts +8 -361
  36. package/dist/durable.d.ts +8 -361
  37. package/dist/durable.js +3 -3
  38. package/dist/durable.js.map +1 -1
  39. package/dist/engine.cjs +11 -0
  40. package/dist/engine.cjs.map +1 -0
  41. package/dist/engine.d.cts +114 -0
  42. package/dist/engine.d.ts +114 -0
  43. package/dist/engine.js +11 -0
  44. package/dist/engine.js.map +1 -0
  45. package/dist/errors-entry-CMH73Eym.d.cts +339 -0
  46. package/dist/errors-entry-DOt5UUl4.d.ts +339 -0
  47. package/dist/errors.cjs +1 -1
  48. package/dist/errors.cjs.map +1 -1
  49. package/dist/errors.d.cts +2 -318
  50. package/dist/errors.d.ts +2 -318
  51. package/dist/errors.js +1 -1
  52. package/dist/errors.js.map +1 -1
  53. package/dist/fetch.cjs +2 -2
  54. package/dist/fetch.cjs.map +1 -1
  55. package/dist/fetch.d.cts +3 -1
  56. package/dist/fetch.d.ts +3 -1
  57. package/dist/fetch.js +2 -2
  58. package/dist/fetch.js.map +1 -1
  59. package/dist/functional.cjs +1 -1
  60. package/dist/functional.cjs.map +1 -1
  61. package/dist/functional.d.cts +2 -0
  62. package/dist/functional.d.ts +2 -0
  63. package/dist/functional.js +1 -1
  64. package/dist/functional.js.map +1 -1
  65. package/dist/{guards-PU64_GKv.d.cts → guards-B79mP5Q8.d.cts} +3 -3
  66. package/dist/{guards-B5lgMJq0.d.ts → guards-BUq6NJCM.d.ts} +3 -3
  67. package/dist/{hitl-Dyiy0R1v.d.cts → hitl-BCqkMAHw.d.cts} +2 -2
  68. package/dist/{hitl-BjeSm1sJ.d.ts → hitl-BZtPx0aU.d.ts} +2 -2
  69. package/dist/hitl.cjs +2 -2
  70. package/dist/hitl.cjs.map +1 -1
  71. package/dist/hitl.d.cts +9 -6
  72. package/dist/hitl.d.ts +9 -6
  73. package/dist/hitl.js +2 -2
  74. package/dist/hitl.js.map +1 -1
  75. package/dist/index-BVUAOWGG.d.ts +417 -0
  76. package/dist/index-CQnpmUcC.d.cts +417 -0
  77. package/dist/index.cjs +1 -1
  78. package/dist/index.cjs.map +1 -1
  79. package/dist/index.d.cts +4 -3
  80. package/dist/index.d.ts +4 -3
  81. package/dist/index.js +1 -1
  82. package/dist/index.js.map +1 -1
  83. package/dist/otel.d.cts +3 -1
  84. package/dist/otel.d.ts +3 -1
  85. package/dist/{persistence-entry-B3ukwbb5.d.ts → persistence-entry-ClFhxd2Q.d.ts} +11 -5
  86. package/dist/{persistence-entry-CgVzswbg.d.cts → persistence-entry-jflY61az.d.cts} +11 -5
  87. package/dist/persistence.d.cts +6 -3
  88. package/dist/persistence.d.ts +6 -3
  89. package/dist/policies.d.cts +3 -1
  90. package/dist/policies.d.ts +3 -1
  91. package/dist/ratelimit.cjs +2 -2
  92. package/dist/ratelimit.cjs.map +1 -1
  93. package/dist/ratelimit.d.cts +3 -1
  94. package/dist/ratelimit.d.ts +3 -1
  95. package/dist/ratelimit.js +2 -2
  96. package/dist/ratelimit.js.map +1 -1
  97. package/dist/reliability.cjs +2 -2
  98. package/dist/reliability.cjs.map +1 -1
  99. package/dist/reliability.d.cts +3 -1
  100. package/dist/reliability.d.ts +3 -1
  101. package/dist/reliability.js +2 -2
  102. package/dist/reliability.js.map +1 -1
  103. package/dist/resolver.cjs +2 -2
  104. package/dist/resolver.cjs.map +1 -1
  105. package/dist/resolver.d.cts +5 -3
  106. package/dist/resolver.d.ts +5 -3
  107. package/dist/resolver.js +2 -2
  108. package/dist/resolver.js.map +1 -1
  109. package/dist/resource.cjs +2 -2
  110. package/dist/resource.cjs.map +1 -1
  111. package/dist/resource.d.cts +3 -1
  112. package/dist/resource.d.ts +3 -1
  113. package/dist/resource.js +2 -2
  114. package/dist/resource.js.map +1 -1
  115. package/dist/result/retry.cjs +1 -1
  116. package/dist/result/retry.cjs.map +1 -1
  117. package/dist/result/retry.d.cts +2 -0
  118. package/dist/result/retry.d.ts +2 -0
  119. package/dist/result/retry.js +1 -1
  120. package/dist/result/retry.js.map +1 -1
  121. package/dist/result.cjs +1 -1
  122. package/dist/result.cjs.map +1 -1
  123. package/dist/result.d.cts +8 -23
  124. package/dist/result.d.ts +8 -23
  125. package/dist/result.js +1 -1
  126. package/dist/result.js.map +1 -1
  127. package/dist/{run-entry-C1uFytM6.d.cts → run-entry-rw7zll_G.d.ts} +16 -45
  128. package/dist/{run-entry-C1uFytM6.d.ts → run-entry-yQu63Yj9.d.cts} +16 -45
  129. package/dist/run.cjs +2 -2
  130. package/dist/run.cjs.map +1 -1
  131. package/dist/run.d.cts +3 -1
  132. package/dist/run.d.ts +3 -1
  133. package/dist/run.js +2 -2
  134. package/dist/run.js.map +1 -1
  135. package/dist/saga.cjs +2 -2
  136. package/dist/saga.cjs.map +1 -1
  137. package/dist/saga.d.cts +3 -1
  138. package/dist/saga.d.ts +3 -1
  139. package/dist/saga.js +2 -2
  140. package/dist/saga.js.map +1 -1
  141. package/dist/singleflight.d.cts +3 -1
  142. package/dist/singleflight.d.ts +3 -1
  143. package/dist/streaming.cjs +4 -4
  144. package/dist/streaming.cjs.map +1 -1
  145. package/dist/streaming.d.cts +5 -3
  146. package/dist/streaming.d.ts +5 -3
  147. package/dist/streaming.js +4 -4
  148. package/dist/streaming.js.map +1 -1
  149. package/dist/testing.cjs +8 -4
  150. package/dist/testing.cjs.map +1 -1
  151. package/dist/testing.d.cts +87 -4
  152. package/dist/testing.d.ts +87 -4
  153. package/dist/testing.js +8 -4
  154. package/dist/testing.js.map +1 -1
  155. package/dist/{types-wa_wTOn3.d.ts → types-CuWK5AlK.d.ts} +1 -1
  156. package/dist/{types-DUWrNIJu.d.cts → types-uR3JpwvF.d.cts} +1 -1
  157. package/dist/webhook.cjs +2 -2
  158. package/dist/webhook.cjs.map +1 -1
  159. package/dist/webhook.d.cts +7 -4
  160. package/dist/webhook.d.ts +7 -4
  161. package/dist/webhook.js +2 -2
  162. package/dist/webhook.js.map +1 -1
  163. package/dist/workflow.cjs +3 -3
  164. package/dist/workflow.cjs.map +1 -1
  165. package/dist/workflow.d.cts +47 -11
  166. package/dist/workflow.d.ts +47 -11
  167. package/dist/workflow.js +3 -3
  168. package/dist/workflow.js.map +1 -1
  169. package/package.json +15 -1
package/dist/adapters.cjs CHANGED
@@ -1,7 +1,7 @@
1
- "use strict";var ie=Object.defineProperty;var Se=Object.getOwnPropertyDescriptor;var Ae=Object.getOwnPropertyNames;var ve=Object.prototype.hasOwnProperty;var _e=(n,s)=>{for(var c in s)ie(n,c,{get:s[c],enumerable:!0})},Pe=(n,s,c,w)=>{if(s&&typeof s=="object"||typeof s=="function")for(let S of Ae(s))!ve.call(n,S)&&S!==c&&ie(n,S,{get:()=>s[S],enumerable:!(w=Se(s,S))||w.enumerable});return n};var Oe=n=>Pe(ie({},"__esModule",{value:!0}),n);var qe={};_e(qe,{fromCallback:()=>Re,fromEvent:()=>ge,isEventEmitterLike:()=>Ce,isEventTimeoutError:()=>Te,isInvalidEmitterError:()=>ke});module.exports=Oe(qe);function Me(n){let s=n.trim().match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h|d)$/i);if(!s)return;let c=parseFloat(s[1]),w=s[2].toLowerCase();return{_tag:"Duration",millis:c*({ms:1,s:1e3,m:6e4,h:36e5,d:864e5}[w]??1)}}var Ie="UNEXPECTED_ERROR";function De(n){return Ie}function K(n){return{ok:!0,value:n}}function D(n,s){let c=s?.cause;return{ok:!1,error:n,...c!==void 0?{cause:c}:{}}}function Ue(n){if(n==null)return"unknown";if(typeof n=="string")return n.trim()||"unknown";if(typeof n=="object"){let s=n;if(typeof s._tag=="string"){let c=s._tag.trim();if(c)return c}if(typeof s.tag=="string"){let c=s.tag.trim();if(c)return c}if(typeof s.code=="string"){let c=s.code.trim();if(c)return c}else if(typeof s.code=="number")return String(s.code);if(n instanceof Error&&n.name){let c=n.name.trim();if(c)return c}}return"unknown"}function Ne(n,s){if(!(!s||!n))return s[n]}function Ke(n){let{intent:s,domain:c,owner:w,tags:S,stateChanges:v,emits:_,calls:y}=n;if(!s&&!c&&!w&&!S?.length&&!v?.length&&!_?.length&&!y?.length)return;let I={};return s&&(I.intent=s),c&&(I.domain=c),w&&(I.owner=w),S?.length&&(I.tags=S),v?.length&&(I.stateChanges=v),_?.length&&(I.emits=_),y?.length&&(I.calls=y),I}function F(n,s,c,w,S){let v=Ue(n),_=Ne(v,s),y={tag:v,origin:c};return _!==void 0&&(y.classification=_),w!==void 0&&(y.attempt=w),S!==void 0&&(y.cumulativeDurationMs=S),y}var z=Symbol.for("step_timeout_marker");function Ee(n){return typeof n!="object"||n===null?!1:n.type==="STEP_TIMEOUT"?!0:z in n}function Fe(n){if(!(typeof n!="object"||n===null)){if(n.type==="STEP_TIMEOUT"){let s=n;return{timeoutMs:s.timeoutMs,stepName:s.stepName,stepKey:s.stepKey,attempt:s.attempt}}if(z in n)return n[z]}}var ye=Symbol("early-exit");function je(n,s){return{[ye]:!0,error:n,meta:s}}function Le(n){return typeof n=="object"&&n!==null&&n[ye]===!0}var fe=Symbol("mapper-exception");function H(n){return{[fe]:!0,thrown:n}}function Ve(n){return typeof n=="object"&&n!==null&&n[fe]===!0}function ue(n,s){let{backoff:c,initialDelay:w,maxDelay:S,jitter:v}=s,_;switch(c){case"fixed":_=w;break;case"linear":_=w*n;break;case"exponential":_=w*Math.pow(2,n-1);break}if(_=Math.min(_,S),v){let y=_*.25*Math.random();_=_+y}return Math.floor(_)}function le(n){return new Promise(s=>setTimeout(s,n))}var me=Symbol("timeout"),te=Symbol("timeout-option");function Be(n){return typeof n=="object"&&n!==null&&n[te]===!0}async function We(n,s,c,w){let S=new AbortController,v=s.onTimeout??"error",_=()=>typeof v=="function"?v({name:c.name,key:c.key,ms:s.ms}):s.error??{type:"STEP_TIMEOUT",stepName:c.name,stepKey:c.key,timeoutMs:s.ms,attempt:c.attempt},y;w?.aborted&&S.abort(w.reason);let I;w&&!w.aborted&&(I=()=>S.abort(w.reason),w.addEventListener("abort",I,{once:!0}));let a=new Promise((x,M)=>{y=setTimeout(()=>{if(v!=="disconnect"&&S.abort(),v==="option"){M({[te]:!0,ms:s.ms});return}M({[me]:!0,error:_()})},s.ms)}),N;s.signal?N=Promise.resolve(n(S.signal)):N=Promise.resolve(n());try{return await Promise.race([N,a])}catch(x){if(typeof x=="object"&&x!==null&&x[te]===!0)throw{[te]:!0,ms:s.ms};if(typeof x=="object"&&x!==null&&x[me]===!0){v==="disconnect"&&N.catch(()=>{});let M=x.error;if(typeof M=="object"&&M!==null&&M.type!=="STEP_TIMEOUT"){let B={timeoutMs:s.ms,stepName:c.name,stepKey:c.key,attempt:c.attempt};z in M?M[z]=B:Object.defineProperty(M,z,{value:B,enumerable:!1,writable:!0,configurable:!1})}throw M}throw x}finally{clearTimeout(y),I&&w&&w.removeEventListener("abort",I)}}var G={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function we(n,s){let{onError:c,onEvent:w,catchUnexpected:S,workflowId:v,workflowName:_,context:y,_workflowSignal:I}=s&&typeof s=="object"?s:{},a=v??crypto.randomUUID(),N=S??De,x=[],M=0,B=p=>p??`step_${++M}`,l=p=>{let j=p.context!==void 0||y===void 0?p:{...p,context:y},q=_!==void 0&&j.workflowName===void 0?{...j,workflowName:_}:j;if(q.type==="step_success"){let Z=q.stepId;for(let ee=x.length-1;ee>=0;ee--){let L=x[ee];if(L.type==="race"&&!L.winnerId){L.winnerId=Z;break}}}w?.(q,y)},U=je,$=p=>Le(p),W=(p,j)=>p,xe=p=>typeof p=="function"?!1:!!(p&&typeof p=="object"&&"ok"in p||p&&typeof p=="object"&&"then"in p&&typeof p.then=="function");try{let j=function(o){let E={};for(let[r,t]of Object.entries(o))if(typeof t=="function")E[r]=t;else if(t&&typeof t=="object"&&"fn"in t)E[r]=t.fn;else throw new TypeError(`step.parallel: operation "${r}" must be a function or { fn, errors? } object`);return E},q=function(o,E){let r=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let t=performance.now(),e=!1;x.push({scopeId:r,type:"parallel"});let i=()=>{if(e)return;e=!0;let u=x.findIndex(m=>m.scopeId===r);u!==-1&&x.splice(u,1),l({type:"scope_end",workflowId:a,scopeId:r,ts:Date.now(),durationMs:performance.now()-t})};l({type:"scope_start",workflowId:a,scopeId:r,scopeType:"parallel",name:o,ts:Date.now()});try{let u=await E();if(i(),!u.ok)throw c?.(u.error,o,y),U(u.error,{origin:"result",resultCause:u.cause});return u.value}catch(u){throw i(),u}})()},Z=function(o,E){let r=Object.keys(o),t=E.name??`Parallel(${r.join(", ")})`,e=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let i=performance.now(),u=!1;x.push({scopeId:e,type:"parallel"});let m=()=>{if(u)return;u=!0;let d=x.findIndex(f=>f.scopeId===e);d!==-1&&x.splice(d,1),l({type:"scope_end",workflowId:a,scopeId:e,ts:Date.now(),durationMs:performance.now()-i})};l({type:"scope_start",workflowId:a,scopeId:e,scopeType:"parallel",name:t,ts:Date.now()});try{let d=await new Promise(k=>{if(r.length===0){k([]);return}let b=!1,O=r.length,R=new Array(r.length);for(let P=0;P<r.length;P++){let g=r[P],h=P;Promise.resolve(o[g]()).catch(C=>D({type:"PROMISE_REJECTED",cause:C},{cause:{type:"PROMISE_REJECTION",reason:C}})).then(C=>{if(!b){if(!C.ok){b=!0,k([{key:g,result:C}]);return}R[h]={key:g,result:C},O--,O===0&&k(R)}})}});m();let f={};for(let{key:k,result:b}of d){if(!b.ok)throw c?.(b.error,k,y),U(b.error,{origin:"result",resultCause:b.cause});f[k]=b.value}return f}catch(d){throw m(),d}})()};var Xe=j,Ye=q,$e=Z;let p=(o,E,r)=>(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 t=r??{},e=Ke(t),i=o,u=t.key??o,m=t.key??o,{description:d,retry:f,timeout:k}=t,b=B(u),O=w,R=O?performance.now():0,g=xe(E)?()=>E:E,C={attempts:Math.max(1,f?.attempts??1),backoff:f?.backoff??G.backoff,initialDelay:f?.initialDelay??G.initialDelay,maxDelay:f?.maxDelay??G.maxDelay,jitter:f?.jitter??G.jitter,retryOn:f?.retryOn??G.retryOn,onRetry:f?.onRetry??G.onRetry};w&&l({type:"step_start",workflowId:a,stepId:b,stepKey:u,name:i,description:d,ts:Date.now(),...e&&{metadata:e}});let J;for(let A=1;A<=C.attempts;A++){let he=O?performance.now():0;try{let T;if(k?T=await We(g,k,{name:i,key:u,attempt:A},I):T=await g(),T.ok){let Y=performance.now()-R;return l({type:"step_success",workflowId:a,stepId:b,stepKey:u,name:i,description:d,ts:Date.now(),durationMs:Y,...e&&{metadata:e}}),m&&l({type:"step_complete",workflowId:a,stepKey:m,name:i,description:d,ts:Date.now(),durationMs:Y,result:T,...e&&{metadata:e}}),T.value}if(J=T,A<C.attempts&&C.retryOn(T.error,A)){let Y=ue(A,C);l({type:"step_retry",workflowId:a,stepId:b,stepKey:u,name:i,ts:Date.now(),attempt:A+1,maxAttempts:C.attempts,delayMs:Y,error:T.error,...e&&{metadata:e},diagnostics:F(T.error,t.errorMeta,"result",A,performance.now()-R)}),C.onRetry(T.error,A,Y),await le(Y);continue}C.attempts>1&&l({type:"step_retries_exhausted",workflowId:a,stepId:b,stepKey:u,name:i,ts:Date.now(),durationMs:performance.now()-R,attempts:A,lastError:T.error,...e&&{metadata:e},diagnostics:F(T.error,t.errorMeta,"result",A,performance.now()-R)});break}catch(T){let Y=performance.now()-he;if(Be(T)){let V=T.ms;l({type:"step_timeout",workflowId:a,stepId:b,stepKey:u,name:i,ts:Date.now(),timeoutMs:V,attempt:A,...e&&{metadata:e},diagnostics:F(T,t.errorMeta,"timeout",A)}),l({type:"step_success",workflowId:a,stepId:b,stepKey:u,name:i,description:d,ts:Date.now(),durationMs:performance.now()-R,...e&&{metadata:e}}),m&&l({type:"step_complete",workflowId:a,stepKey:m,name:i,description:d,ts:Date.now(),durationMs:performance.now()-R,result:K(void 0),...e&&{metadata:e}});return}if($(T))throw l({type:"step_aborted",workflowId:a,stepId:b,stepKey:u,name:i,description:d,ts:Date.now(),durationMs:Y,...e&&{metadata:e}}),T;if(Ee(T)){let V=Fe(T),be=k?.ms??V?.timeoutMs??0;if(l({type:"step_timeout",workflowId:a,stepId:b,stepKey:u,name:i,ts:Date.now(),timeoutMs:be,attempt:A,...e&&{metadata:e},diagnostics:F(T,t.errorMeta,"timeout",A)}),A<C.attempts&&C.retryOn(T,A)){let ae=ue(A,C);l({type:"step_retry",workflowId:a,stepId:b,stepKey:u,name:i,ts:Date.now(),attempt:A+1,maxAttempts:C.attempts,delayMs:ae,error:T,...e&&{metadata:e},diagnostics:F(T,t.errorMeta,"timeout",A,performance.now()-R)}),C.onRetry(T,A,ae),await le(ae);continue}C.attempts>1&&l({type:"step_retries_exhausted",workflowId:a,stepId:b,stepKey:u,name:i,ts:Date.now(),durationMs:performance.now()-R,attempts:A,lastError:T,...e&&{metadata:e},diagnostics:F(T,t.errorMeta,"timeout",A,performance.now()-R)});let se=performance.now()-R;throw l({type:"step_error",workflowId:a,stepId:b,stepKey:u,name:i,description:d,ts:Date.now(),durationMs:se,error:T,...e&&{metadata:e},diagnostics:F(T,t.errorMeta,"timeout",A,se)}),m&&l({type:"step_complete",workflowId:a,stepKey:m,name:i,description:d,ts:Date.now(),durationMs:se,result:D(T,{cause:T}),meta:{origin:"throw",thrown:T},...e&&{metadata:e}}),c?.(T,i,y),U(T,{origin:"throw",thrown:T})}if(A<C.attempts&&C.retryOn(T,A)){let V=ue(A,C);l({type:"step_retry",workflowId:a,stepId:b,stepKey:u,name:i,ts:Date.now(),attempt:A+1,maxAttempts:C.attempts,delayMs:V,error:T,...e&&{metadata:e},diagnostics:F(T,t.errorMeta,"throw",A,performance.now()-R)}),C.onRetry(T,A,V),await le(V);continue}C.attempts>1&&!Ee(T)&&l({type:"step_retries_exhausted",workflowId:a,stepId:b,stepKey:u,name:i,ts:Date.now(),durationMs:performance.now()-R,attempts:A,lastError:T,...e&&{metadata:e},diagnostics:F(T,t.errorMeta,"throw",A,performance.now()-R)});let oe=performance.now()-R,Q;try{Q=N(T)}catch(V){throw H(V)}throw l({type:"step_error",workflowId:a,stepId:b,stepKey:u,name:i,description:d,ts:Date.now(),durationMs:oe,error:Q,...e&&{metadata:e},diagnostics:F(T,t.errorMeta,"throw",A,oe)}),m&&l({type:"step_complete",workflowId:a,stepKey:m,name:i,description:d,ts:Date.now(),durationMs:oe,result:D(Q,{cause:T}),meta:{origin:"throw",thrown:T},...e&&{metadata:e}}),c?.(Q,i,y),U(Q,{origin:"throw",thrown:T})}}let X=J,ne=performance.now()-R,re=W(X.error,{origin:"result",resultCause:X.cause});throw l({type:"step_error",workflowId:a,stepId:b,stepKey:u,name:i,description:d,ts:Date.now(),durationMs:ne,error:re,...e&&{metadata:e},diagnostics:F(X.error,t.errorMeta,"result",C.attempts,ne)}),m&&l({type:"step_complete",workflowId:a,stepKey:m,name:i,description:d,ts:Date.now(),durationMs:ne,result:X,meta:{origin:"result",resultCause:X.cause},...e&&{metadata:e}}),c?.(re,i,y),U(re,{origin:"result",resultCause:X.cause})})();p.try=(o,E,r)=>{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 t=r.key??o,e=o,i=o,u="error"in r?()=>r.error:r.onError,m=w;return(async()=>{let d=m?performance.now():0;w&&l({type:"step_start",workflowId:a,stepId:i,stepKey:t,name:e,ts:Date.now()});try{let f=await E(),k=performance.now()-d;return l({type:"step_success",workflowId:a,stepId:i,stepKey:t,name:e,ts:Date.now(),durationMs:k}),t&&l({type:"step_complete",workflowId:a,stepKey:t,name:e,ts:Date.now(),durationMs:k,result:K(f)}),f}catch(f){let k=u(f),b=performance.now()-d,O=W(k,{origin:"throw",thrown:f});throw l({type:"step_error",workflowId:a,stepId:i,stepKey:t,name:e,ts:Date.now(),durationMs:b,error:O}),t&&l({type:"step_complete",workflowId:a,stepKey:t,name:e,ts:Date.now(),durationMs:b,result:D(k,{cause:f}),meta:{origin:"throw",thrown:f}}),c?.(O,e,y),U(O,{origin:"throw",thrown:f})}})()},p.fromResult=(o,E,r)=>{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 t=r.key??o,e=o,i=o,u="error"in r?()=>r.error:r.onError,m=w;return(async()=>{let d=m?performance.now():0;w&&l({type:"step_start",workflowId:a,stepId:i,stepKey:t,name:e,ts:Date.now()});let f=await E();if(f.ok){let k=performance.now()-d;return l({type:"step_success",workflowId:a,stepId:i,stepKey:t,name:e,ts:Date.now(),durationMs:k}),t&&l({type:"step_complete",workflowId:a,stepKey:t,name:e,ts:Date.now(),durationMs:k,result:K(f.value)}),f.value}else{let k=u(f.error),b=performance.now()-d,O=W(k,{origin:"result",resultCause:f.error});throw l({type:"step_error",workflowId:a,stepId:i,stepKey:t,name:e,ts:Date.now(),durationMs:b,error:O}),t&&l({type:"step_complete",workflowId:a,stepKey:t,name:e,ts:Date.now(),durationMs:b,result:D(k,{cause:f.error}),meta:{origin:"result",resultCause:f.error}}),c?.(O,e,y),U(O,{origin:"result",resultCause:f.error})}})()},p.fromNullable=(o,E,r,t)=>{if(typeof o!="string"||o.length===0)throw new Error('[awaitly] step.fromNullable() requires an explicit string ID as the first argument. Example: step.fromNullable("getUser", () => db.find(id), () => ({ type: "NOT_FOUND" }))');return p(o,async()=>{let e=await E();return e!=null?K(e):D(r())},t)},p.retry=(o,E,r)=>{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 p(o,E,{key:r.key??o,retry:{attempts:r.attempts,backoff:r.backoff,initialDelay:r.initialDelay,maxDelay:r.maxDelay,jitter:r.jitter,retryOn:r.retryOn,onRetry:r.onRetry},timeout:r.timeout})},p.withTimeout=(o,E,r)=>{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 p(o,E,{key:r.key??o,timeout:r})},p.sleep=(o,E,r)=>{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 t=typeof E=="string"?Me(E):E;if(!t)throw new Error(`step.sleep: invalid duration '${E}'`);let e=t.millis,i=r?.signal;return p(o,async()=>{if(I?.aborted||i?.aborted){let u=new Error("Sleep aborted");throw u.name="AbortError",u}return new Promise((u,m)=>{let d={timeoutId:void 0},f=()=>{d.timeoutId&&clearTimeout(d.timeoutId);let k=new Error("Sleep aborted");k.name="AbortError",m(k)};I?.addEventListener("abort",f,{once:!0}),i?.addEventListener("abort",f,{once:!0}),d.timeoutId=setTimeout(()=>{I?.removeEventListener("abort",f),i?.removeEventListener("abort",f),u(K(void 0))},e)})},{key:r?.key??o,description:r?.description})},p.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 E=o[0],r=o[1];if(typeof r=="function")return q(E,r);if(r&&typeof r=="object"&&!Array.isArray(r)){let e=j(r);return Z(e,{name:E})}throw new TypeError("step.parallel(name, ...): second argument must be a function (array form) or an object of operations (object form).")}),p.race=(o,E)=>{let r=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let t=performance.now(),e=!1,i={scopeId:r,type:"race",winnerId:void 0};x.push(i);let u=()=>{if(e)return;e=!0;let m=x.findIndex(d=>d.scopeId===r);m!==-1&&x.splice(m,1),l({type:"scope_end",workflowId:a,scopeId:r,ts:Date.now(),durationMs:performance.now()-t,winnerId:i.winnerId})};l({type:"scope_start",workflowId:a,scopeId:r,scopeType:"race",name:o,ts:Date.now()});try{let m=await E();if(u(),!m.ok)throw c?.(m.error,o,y),U(m.error,{origin:"result",resultCause:m.cause});return m.value}catch(m){throw u(),m}})()},p.allSettled=(o,E)=>{let r=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let t=performance.now(),e=!1;x.push({scopeId:r,type:"allSettled"});let i=()=>{if(e)return;e=!0;let u=x.findIndex(m=>m.scopeId===r);u!==-1&&x.splice(u,1),l({type:"scope_end",workflowId:a,scopeId:r,ts:Date.now(),durationMs:performance.now()-t})};l({type:"scope_start",workflowId:a,scopeId:r,scopeType:"allSettled",name:o,ts:Date.now()});try{let u=await E();if(i(),!u.ok)throw c?.(u.error,o,y),U(u.error,{origin:"result",resultCause:u.cause});return u.value}catch(u){throw i(),u}})()},p.if=(o,E,r)=>r(),p.label=p.if,p.branch=async(o,E)=>{let{condition:r,then:t,else:e}=E;if(r())return await t();if(e)return await e()},p.arm=(o,E)=>({fn:o,errors:E}),p.forEach=async(o,E,r)=>{let t=[],e=r.maxIterations,i=0,u="run"in r,m=Symbol.asyncIterator in E?E:(async function*(){yield*E})();for await(let d of m){if(e!==void 0&&i>=e)break;let f;u?f=await r.run(d,i):f=await r.item.handler(d,i,p),t.push(f),i++}return t},p.item=o=>({__forEachItemHandler:!0,handler:o}),p.dep=(o,E)=>E,p.run=(o,E,r)=>p(o,()=>E,r),p.workflow=(o,E,r)=>p(o,E,r),p.andThen=(o,E,r,t)=>p(o,()=>r(E),t),p.match=async(o,E,r,t)=>p(o,async()=>{let e=await E;return e.ok?K(await r.ok(e.value)):K(await r.err(e.error,e.cause))},t),p.all=p.parallel,p.map=async(o,E,r,t)=>{let e=t?.concurrency??E.length;return p(o,()=>e>=E.length?de(E.map((i,u)=>r(i,u))):(async()=>{let i=[];for(let u=0;u<E.length;u+=e){let m=E.slice(u,u+e),d=await de(m.map((f,k)=>r(f,u+k)));if(!d.ok)return d;i.push(...d.value)}return K(i)})(),{key:t?.key})},p.withFallback=(o,E,r)=>{if(typeof o!="string"||o.length===0)throw new Error('[awaitly] step.withFallback() requires an explicit string ID as the first argument. Example: step.withFallback("getUser", () => fetchUser(id), { fallback: () => fetchFromCache(id) })');let t=r.key??o,e=o,i=B(t),u=w;return(async()=>{let m=u?performance.now():0;w&&l({type:"step_start",workflowId:a,stepId:i,stepKey:t,name:e,ts:Date.now()});let d;try{d=await E()}catch(R){if($(R))throw l({type:"step_aborted",workflowId:a,stepId:i,stepKey:t,name:e,ts:Date.now(),durationMs:performance.now()-m}),R;let P;try{P=N(R)}catch(h){throw H(h)}if(r.on!==void 0&&r.on!==P){let h=performance.now()-m;throw l({type:"step_error",workflowId:a,stepId:i,stepKey:t,name:e,ts:Date.now(),durationMs:h,error:P}),t&&l({type:"step_complete",workflowId:a,stepKey:t,name:e,ts:Date.now(),durationMs:h,result:D(P,{cause:R}),meta:{origin:"throw",thrown:R}}),c?.(P,e,y),U(P,{origin:"throw",thrown:R})}let g;try{g=await r.fallback()}catch(h){if($(h))throw l({type:"step_aborted",workflowId:a,stepId:i,stepKey:t,name:e,ts:Date.now(),durationMs:performance.now()-m}),h;let C;try{C=N(h)}catch(X){throw H(X)}let J=performance.now()-m;throw l({type:"step_error",workflowId:a,stepId:i,stepKey:t,name:e,ts:Date.now(),durationMs:J,error:C}),t&&l({type:"step_complete",workflowId:a,stepKey:t,name:e,ts:Date.now(),durationMs:J,result:D(C,{cause:h}),meta:{origin:"throw",thrown:h}}),c?.(C,e,y),U(C,{origin:"throw",thrown:h})}if(g.ok){let h=performance.now()-m;return l({type:"step_success",workflowId:a,stepId:i,stepKey:t,name:e,ts:Date.now(),durationMs:h}),t&&l({type:"step_complete",workflowId:a,stepKey:t,name:e,ts:Date.now(),durationMs:h,result:g,meta:{origin:"fallback",fallbackUsed:!0,fallbackReason:String(P)}}),g.value}else{let h=performance.now()-m,C=W(g.error,{origin:"result",resultCause:g.cause});throw l({type:"step_error",workflowId:a,stepId:i,stepKey:t,name:e,ts:Date.now(),durationMs:h,error:C}),t&&l({type:"step_complete",workflowId:a,stepKey:t,name:e,ts:Date.now(),durationMs:h,result:g,meta:{origin:"result",resultCause:g.cause}}),c?.(C,e,y),U(C,{origin:"result",resultCause:g.cause})}}if(d.ok){let R=performance.now()-m;return l({type:"step_success",workflowId:a,stepId:i,stepKey:t,name:e,ts:Date.now(),durationMs:R}),t&&l({type:"step_complete",workflowId:a,stepKey:t,name:e,ts:Date.now(),durationMs:R,result:d}),d.value}let f=d.error;if(r.on!==void 0&&r.on!==f){let R=performance.now()-m,P=W(f,{origin:"result",resultCause:d.cause});throw l({type:"step_error",workflowId:a,stepId:i,stepKey:t,name:e,ts:Date.now(),durationMs:R,error:P}),t&&l({type:"step_complete",workflowId:a,stepKey:t,name:e,ts:Date.now(),durationMs:R,result:d,meta:{origin:"result",resultCause:d.cause}}),c?.(P,e,y),U(P,{origin:"result",resultCause:d.cause})}let k;try{k=await r.fallback()}catch(R){if($(R))throw l({type:"step_aborted",workflowId:a,stepId:i,stepKey:t,name:e,ts:Date.now(),durationMs:performance.now()-m}),R;let P;try{P=N(R)}catch(h){throw H(h)}let g=performance.now()-m;throw l({type:"step_error",workflowId:a,stepId:i,stepKey:t,name:e,ts:Date.now(),durationMs:g,error:P}),t&&l({type:"step_complete",workflowId:a,stepKey:t,name:e,ts:Date.now(),durationMs:g,result:D(P,{cause:R}),meta:{origin:"throw",thrown:R}}),c?.(P,e,y),U(P,{origin:"throw",thrown:R})}if(k.ok){let R=performance.now()-m;return l({type:"step_success",workflowId:a,stepId:i,stepKey:t,name:e,ts:Date.now(),durationMs:R}),t&&l({type:"step_complete",workflowId:a,stepKey:t,name:e,ts:Date.now(),durationMs:R,result:k,meta:{origin:"fallback",fallbackUsed:!0,fallbackReason:String(f)}}),k.value}let b=performance.now()-m,O=W(k.error,{origin:"result",resultCause:k.cause});throw l({type:"step_error",workflowId:a,stepId:i,stepKey:t,name:e,ts:Date.now(),durationMs:b,error:O}),t&&l({type:"step_complete",workflowId:a,stepKey:t,name:e,ts:Date.now(),durationMs:b,result:k,meta:{origin:"result",resultCause:k.cause}}),c?.(O,e,y),U(O,{origin:"result",resultCause:k.cause})})()},p.withResource=(o,E)=>{if(typeof o!="string"||o.length===0)throw new Error('[awaitly] step.withResource() requires an explicit string ID as the first argument. Example: step.withResource("useDb", { acquire: () => connect(), use: (db) => query(db), release: (db) => db.close() })');let r=o,t=o,e=B(r),i=w;return(async()=>{let u=i?performance.now():0;w&&l({type:"step_start",workflowId:a,stepId:e,stepKey:r,name:t,ts:Date.now()});let m;try{m=await E.acquire()}catch(g){if($(g))throw l({type:"step_aborted",workflowId:a,stepId:e,stepKey:r,name:t,ts:Date.now(),durationMs:performance.now()-u}),g;let h;try{h=N(g)}catch(J){throw H(J)}let C=performance.now()-u;throw l({type:"step_error",workflowId:a,stepId:e,stepKey:r,name:t,ts:Date.now(),durationMs:C,error:h}),r&&l({type:"step_complete",workflowId:a,stepKey:r,name:t,ts:Date.now(),durationMs:C,result:D(h,{cause:g}),meta:{origin:"throw",thrown:g}}),c?.(h,t,y),U(h,{origin:"throw",thrown:g})}if(!m.ok){let g=performance.now()-u,h=W(m.error,{origin:"result",resultCause:m.cause});throw l({type:"step_error",workflowId:a,stepId:e,stepKey:r,name:t,ts:Date.now(),durationMs:g,error:h}),r&&l({type:"step_complete",workflowId:a,stepKey:r,name:t,ts:Date.now(),durationMs:g,result:m,meta:{origin:"result",resultCause:m.cause}}),c?.(h,t,y),U(h,{origin:"result",resultCause:m.cause})}let d=m.value,f,k,b=!1;try{f=await E.use(d)}catch(g){if($(g)){try{await E.release(d)}catch(h){console.warn(`[awaitly] step.withResource("${o}"): release threw after earlyExit:`,h)}throw g}k=g,b=!0}try{await E.release(d)}catch(g){console.warn(`[awaitly] step.withResource("${o}"): release threw:`,g)}if(b){let g;try{g=N(k)}catch(C){throw H(C)}let h=performance.now()-u;throw l({type:"step_error",workflowId:a,stepId:e,stepKey:r,name:t,ts:Date.now(),durationMs:h,error:g}),r&&l({type:"step_complete",workflowId:a,stepKey:r,name:t,ts:Date.now(),durationMs:h,result:D(g,{cause:k}),meta:{origin:"throw",thrown:k}}),c?.(g,t,y),U(g,{origin:"throw",thrown:k})}let O=f;if(O.ok){let g=performance.now()-u;return l({type:"step_success",workflowId:a,stepId:e,stepKey:r,name:t,ts:Date.now(),durationMs:g}),r&&l({type:"step_complete",workflowId:a,stepKey:r,name:t,ts:Date.now(),durationMs:g,result:O}),O.value}let R=performance.now()-u,P=W(O.error,{origin:"result",resultCause:O.cause});throw l({type:"step_error",workflowId:a,stepId:e,stepKey:r,name:t,ts:Date.now(),durationMs:R,error:P}),r&&l({type:"step_complete",workflowId:a,stepKey:r,name:t,ts:Date.now(),durationMs:R,result:O,meta:{origin:"result",resultCause:O.cause}}),c?.(P,t,y),U(P,{origin:"result",resultCause:O.cause})})()};let L=await n({step:p});if(process.env.NODE_ENV!=="production"&&L!==null&&typeof L=="object"&&"ok"in L&&typeof L.ok=="boolean"){let o=L;(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 le=Object.defineProperty;var Fe=Object.getOwnPropertyDescriptor;var je=Object.getOwnPropertyNames;var Le=Object.prototype.hasOwnProperty;var Be=(e,t)=>{for(var i in t)le(e,i,{get:t[i],enumerable:!0})},Ve=(e,t,i,m)=>{if(t&&typeof t=="object"||typeof t=="function")for(let b of je(t))!Le.call(e,b)&&b!==i&&le(e,b,{get:()=>t[b],enumerable:!(m=Fe(t,b))||m.enumerable});return e};var $e=e=>Ve(le({},"__esModule",{value:!0}),e);var tt={};Be(tt,{fromCallback:()=>Me,fromEvent:()=>Ie,isEventEmitterLike:()=>De,isEventTimeoutError:()=>Pe,isInvalidEmitterError:()=>Oe});module.exports=$e(tt);var ee=class extends Error{_tag};function K(e,t){return class extends ee{_tag=e;constructor(i,m){let b=t?.message?t.message(i??{}):e;if(super(b),this.name=e,Object.setPrototypeOf(this,new.target.prototype),i&&typeof i=="object"){let{_tag:x,name:v,message:w,stack:M,...a}=i,D=Object.prototype.hasOwnProperty.call(a,"cause"),C=D?a.cause:void 0;D&&delete a.cause;let P=m?.cause!==void 0;if(D&&P)throw new TypeError("TaggedError: cannot provide 'cause' in props when also setting ErrorOptions.cause");Object.assign(this,a),D&&(this.cause=C),P&&(this.cause=m?.cause)}else m?.cause!==void 0&&(this.cause=m.cause)}}}Object.defineProperty(K,Symbol.hasInstance,{value:e=>e instanceof ee});(b=>{function e(x){return x instanceof Error}b.isError=e;function t(x){return x instanceof ee}b.isTaggedError=t;function i(x,v){let w=x._tag,M=v[w];return M(x)}b.match=i;function m(x,v,w){let M=x._tag,a=v[M];return a?a(x):w(x)}b.matchPartial=m})(K||={});var we=class extends K("TimeoutError",{message:t=>t.operation?`TimeoutError: ${t.operation} timed out after ${t.ms}ms`:`TimeoutError: Operation timed out after ${t.ms}ms`}){},ye=class extends K("RetryExhaustedError",{message:t=>t.operation?`RetryExhaustedError: ${t.operation} failed after ${t.attempts} attempts`:`RetryExhaustedError: Operation failed after ${t.attempts} attempts`}){},fe=class extends K("RateLimitError",{message:t=>t.limiterName?`RateLimitError: Rate limit exceeded for ${t.limiterName}${t.retryAfterMs?`, retry after ${t.retryAfterMs}ms`:""}`:`RateLimitError: Rate limit exceeded${t.retryAfterMs?`, retry after ${t.retryAfterMs}ms`:""}`}){},Te=class extends K("CircuitBreakerOpenError",{message:t=>`CircuitBreakerOpenError: Circuit ${t.circuitName} is ${t.state??"OPEN"}${t.retryAfterMs?`, retry after ${Math.ceil(t.retryAfterMs/1e3)}s`:""}`}){},ke=class extends K("ValidationError",{message:t=>`ValidationError: Invalid ${t.field} - ${t.reason}`}){},ge=class extends K("NotFoundError",{message:t=>t.id?`NotFoundError: ${t.resource} with id ${t.id} not found`:`NotFoundError: ${t.resource} not found`}){},Re=class extends K("UnauthorizedError",{message:t=>t.reason?`UnauthorizedError: ${t.reason}`:t.action&&t.resource?`UnauthorizedError: Not authorized to ${t.action} ${t.resource}`:"UnauthorizedError: Access denied"}){},xe=class extends K("NetworkError",{message:t=>t.url?`NetworkError: ${t.reason} (${t.url})`:`NetworkError: ${t.reason}`}){},Ce=class extends K("CompensationError",{message:t=>`CompensationError: Failed to compensate step ${t.step}`}){},ne=class extends K("UnexpectedError",{message:t=>`UnexpectedError: ${t.cause instanceof Error?t.cause.message:String(t.cause??"unknown")}`}){};function He(e){let t=e.trim().match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h|d)$/i);if(!t)return;let i=parseFloat(t[1]),m=t[2].toLowerCase();return{_tag:"Duration",millis:i*({ms:1,s:1e3,m:6e4,h:36e5,d:864e5}[m]??1)}}function We(e){return new ne({cause:e})}function F(e){return{ok:!0,value:e}}function U(e,t){let i=t?.cause;return{ok:!1,error:e,...i!==void 0?{cause:i}:{}}}function qe(e){if(e==null)return"unknown";if(typeof e=="string")return e.trim()||"unknown";if(typeof e=="object"){let t=e;if(typeof t._tag=="string"){let i=t._tag.trim();if(i)return i}if(typeof t.tag=="string"){let i=t.tag.trim();if(i)return i}if(typeof t.code=="string"){let i=t.code.trim();if(i)return i}else if(typeof t.code=="number")return String(t.code);if(e instanceof Error&&e.name){let i=e.name.trim();if(i)return i}}return"unknown"}function Ye(e,t){if(!(!t||!e))return t[e]}function Je(e){let{intent:t,domain:i,owner:m,tags:b,stateChanges:x,emits:v,calls:w}=e;if(!t&&!i&&!m&&!b?.length&&!x?.length&&!v?.length&&!w?.length)return;let M={};return t&&(M.intent=t),i&&(M.domain=i),m&&(M.owner=m),b?.length&&(M.tags=b),x?.length&&(M.stateChanges=x),v?.length&&(M.emits=v),w?.length&&(M.calls=w),M}function j(e,t,i,m,b){let x=qe(e),v=Ye(x,t),w={tag:x,origin:i};return v!==void 0&&(w.classification=v),m!==void 0&&(w.attempt=m),b!==void 0&&(w.cumulativeDurationMs=b),w}var Q=Symbol.for("step_timeout_marker");function he(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:Q in e}function ze(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(Q in e)return e[Q]}}var ve=Symbol("early-exit");function Ge(e,t){return{[ve]:!0,error:e,meta:t}}function Xe(e){return typeof e=="object"&&e!==null&&e[ve]===!0}var _e=Symbol("mapper-exception");function G(e){return{[_e]:!0,thrown:e}}function Qe(e){return typeof e=="object"&&e!==null&&e[_e]===!0}function pe(e,t){let{backoff:i,initialDelay:m,maxDelay:b,jitter:x}=t,v;switch(i){case"fixed":v=m;break;case"linear":v=m*e;break;case"exponential":v=m*Math.pow(2,e-1);break}if(v=Math.min(v,b),x){let w=v*.25*Math.random();v=v+w}return Math.floor(v)}function Ee(e){return new Promise(t=>setTimeout(t,e))}var be=Symbol("timeout"),oe=Symbol("timeout-option");function Ze(e){return typeof e=="object"&&e!==null&&e[oe]===!0}async function et(e,t,i,m){let b=new AbortController,x=t.onTimeout??"error",v=()=>typeof x=="function"?x({name:i.name,key:i.key,ms:t.ms}):t.error??{type:"STEP_TIMEOUT",stepName:i.name,stepKey:i.key,timeoutMs:t.ms,attempt:i.attempt},w;m?.aborted&&b.abort(m.reason);let M;m&&!m.aborted&&(M=()=>b.abort(m.reason),m.addEventListener("abort",M,{once:!0}));let a=new Promise((C,P)=>{w=setTimeout(()=>{if(x!=="disconnect"&&b.abort(),x==="option"){P({[oe]:!0,ms:t.ms});return}P({[be]:!0,error:v()})},t.ms)}),D;t.signal?D=Promise.resolve(e(b.signal)):D=Promise.resolve(e());try{return await Promise.race([D,a])}catch(C){if(typeof C=="object"&&C!==null&&C[oe]===!0)throw{[oe]:!0,ms:t.ms};if(typeof C=="object"&&C!==null&&C[be]===!0){x==="disconnect"&&D.catch(()=>{});let P=C.error;if(typeof P=="object"&&P!==null&&P.type!=="STEP_TIMEOUT"){let $={timeoutMs:t.ms,stepName:i.name,stepKey:i.key,attempt:i.attempt};Q in P?P[Q]=$:Object.defineProperty(P,Q,{value:$,enumerable:!1,writable:!0,configurable:!1})}throw P}throw C}finally{clearTimeout(w),M&&m&&m.removeEventListener("abort",M)}}var X={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function Se(e,t){let{onError:i,onEvent:m,catchUnexpected:b,workflowId:x,workflowName:v,context:w,_workflowSignal:M}=t&&typeof t=="object"?t:{},a=x??crypto.randomUUID(),D=b??We,C=[],P=0,$=p=>p??`step_${++P}`,l=p=>{let L=p.context!==void 0||w===void 0?p:{...p,context:w},W=v!==void 0&&L.workflowName===void 0?{...L,workflowName:v}:L;if(W.type==="step_success"){let te=W.stepId;for(let re=C.length-1;re>=0;re--){let B=C[re];if(B.type==="race"&&!B.winnerId){B.winnerId=te;break}}}m?.(W,w)},N=Ge,J=p=>Xe(p),H=(p,L)=>p,Ue=p=>typeof p=="function"?!1:!!(p&&typeof p=="object"&&"ok"in p||p&&typeof p=="object"&&"then"in p&&typeof p.then=="function");try{let L=function(s){let E={};for(let[o,n]of Object.entries(s))if(typeof n=="function")E[o]=n;else if(n&&typeof n=="object"&&"fn"in n)E[o]=n.fn;else throw new TypeError(`step.parallel: operation "${o}" must be a function or { fn, errors? } object`);return E},W=function(s,E){let o=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let n=performance.now(),r=!1;C.push({scopeId:o,type:"parallel"});let u=()=>{if(r)return;r=!0;let c=C.findIndex(d=>d.scopeId===o);c!==-1&&C.splice(c,1),l({type:"scope_end",workflowId:a,scopeId:o,ts:Date.now(),durationMs:performance.now()-n})};l({type:"scope_start",workflowId:a,scopeId:o,scopeType:"parallel",name:s,ts:Date.now()});try{let c=await E();if(u(),!c.ok)throw i?.(c.error,s,w),N(c.error,{origin:"result",resultCause:c.cause});return c.value}catch(c){throw u(),c}})()},te=function(s,E){let o=Object.keys(s),n=E.name??`Parallel(${o.join(", ")})`,r=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let u=performance.now(),c=!1;C.push({scopeId:r,type:"parallel"});let d=()=>{if(c)return;c=!0;let y=C.findIndex(f=>f.scopeId===r);y!==-1&&C.splice(y,1),l({type:"scope_end",workflowId:a,scopeId:r,ts:Date.now(),durationMs:performance.now()-u})};l({type:"scope_start",workflowId:a,scopeId:r,scopeType:"parallel",name:n,ts:Date.now()});try{let y=await new Promise(k=>{if(o.length===0){k([]);return}let A=!1,I=o.length,g=new Array(o.length);for(let O=0;O<o.length;O++){let R=o[O],S=O;Promise.resolve(s[R]()).catch(h=>U({type:"PROMISE_REJECTED",cause:h},{cause:{type:"PROMISE_REJECTION",reason:h}})).then(h=>{if(!A){if(!h.ok){A=!0,k([{key:R,result:h}]);return}g[S]={key:R,result:h},I--,I===0&&k(g)}})}});d();let f={};for(let{key:k,result:A}of y){if(!A.ok)throw i?.(A.error,k,w),N(A.error,{origin:"result",resultCause:A.cause});f[k]=A.value}return f}catch(y){throw d(),y}})()};var rt=L,nt=W,ot=te;let p=(s,E,o)=>(async()=>{if(typeof s!="string"||s.length===0)throw new Error('[awaitly] step() requires an explicit string ID as the first argument. Example: step("fetchUser", () => fetchUser(id))');let n=o??{},r=Je(n),u=s,c=n.key??s,d=n.key??s,{description:y,retry:f,timeout:k}=n,A=$(c),I=m,g=I?performance.now():0,R=Ue(E)?()=>E:E,h={attempts:Math.max(1,f?.attempts??1),backoff:f?.backoff??X.backoff,initialDelay:f?.initialDelay??X.initialDelay,maxDelay:f?.maxDelay??X.maxDelay,jitter:f?.jitter??X.jitter,retryOn:f?.retryOn??X.retryOn,onRetry:f?.onRetry??X.onRetry};m&&l({type:"step_start",workflowId:a,stepId:A,stepKey:c,name:u,description:y,ts:Date.now(),...r&&{metadata:r}});let z;for(let _=1;_<=h.attempts;_++){let Ne=I?performance.now():0;try{let T;if(k?T=await et(R,k,{name:u,key:c,attempt:_},M):T=await R(),T.ok){let Y=performance.now()-g;return l({type:"step_success",workflowId:a,stepId:A,stepKey:c,name:u,description:y,ts:Date.now(),durationMs:Y,...r&&{metadata:r}}),d&&l({type:"step_complete",workflowId:a,stepKey:d,name:u,description:y,ts:Date.now(),durationMs:Y,result:T,...r&&{metadata:r}}),T.value}if(z=T,_<h.attempts&&h.retryOn(T.error,_)){let Y=pe(_,h);l({type:"step_retry",workflowId:a,stepId:A,stepKey:c,name:u,ts:Date.now(),attempt:_+1,maxAttempts:h.attempts,delayMs:Y,error:T.error,...r&&{metadata:r},diagnostics:j(T.error,n.errorMeta,"result",_,performance.now()-g)}),h.onRetry(T.error,_,Y),await Ee(Y);continue}h.attempts>1&&l({type:"step_retries_exhausted",workflowId:a,stepId:A,stepKey:c,name:u,ts:Date.now(),durationMs:performance.now()-g,attempts:_,lastError:T.error,...r&&{metadata:r},diagnostics:j(T.error,n.errorMeta,"result",_,performance.now()-g)});break}catch(T){let Y=performance.now()-Ne;if(Ze(T)){let V=T.ms;l({type:"step_timeout",workflowId:a,stepId:A,stepKey:c,name:u,ts:Date.now(),timeoutMs:V,attempt:_,...r&&{metadata:r},diagnostics:j(T,n.errorMeta,"timeout",_)}),l({type:"step_success",workflowId:a,stepId:A,stepKey:c,name:u,description:y,ts:Date.now(),durationMs:performance.now()-g,...r&&{metadata:r}}),d&&l({type:"step_complete",workflowId:a,stepKey:d,name:u,description:y,ts:Date.now(),durationMs:performance.now()-g,result:F(void 0),...r&&{metadata:r}});return}if(J(T))throw l({type:"step_aborted",workflowId:a,stepId:A,stepKey:c,name:u,description:y,ts:Date.now(),durationMs:Y,...r&&{metadata:r}}),T;if(he(T)){let V=ze(T),Ke=k?.ms??V?.timeoutMs??0;if(l({type:"step_timeout",workflowId:a,stepId:A,stepKey:c,name:u,ts:Date.now(),timeoutMs:Ke,attempt:_,...r&&{metadata:r},diagnostics:j(T,n.errorMeta,"timeout",_)}),_<h.attempts&&h.retryOn(T,_)){let ce=pe(_,h);l({type:"step_retry",workflowId:a,stepId:A,stepKey:c,name:u,ts:Date.now(),attempt:_+1,maxAttempts:h.attempts,delayMs:ce,error:T,...r&&{metadata:r},diagnostics:j(T,n.errorMeta,"timeout",_,performance.now()-g)}),h.onRetry(T,_,ce),await Ee(ce);continue}h.attempts>1&&l({type:"step_retries_exhausted",workflowId:a,stepId:A,stepKey:c,name:u,ts:Date.now(),durationMs:performance.now()-g,attempts:_,lastError:T,...r&&{metadata:r},diagnostics:j(T,n.errorMeta,"timeout",_,performance.now()-g)});let ue=performance.now()-g;throw l({type:"step_error",workflowId:a,stepId:A,stepKey:c,name:u,description:y,ts:Date.now(),durationMs:ue,error:T,...r&&{metadata:r},diagnostics:j(T,n.errorMeta,"timeout",_,ue)}),d&&l({type:"step_complete",workflowId:a,stepKey:d,name:u,description:y,ts:Date.now(),durationMs:ue,result:U(T,{cause:T}),meta:{origin:"throw",thrown:T},...r&&{metadata:r}}),i?.(T,u,w),N(T,{origin:"throw",thrown:T})}if(_<h.attempts&&h.retryOn(T,_)){let V=pe(_,h);l({type:"step_retry",workflowId:a,stepId:A,stepKey:c,name:u,ts:Date.now(),attempt:_+1,maxAttempts:h.attempts,delayMs:V,error:T,...r&&{metadata:r},diagnostics:j(T,n.errorMeta,"throw",_,performance.now()-g)}),h.onRetry(T,_,V),await Ee(V);continue}h.attempts>1&&!he(T)&&l({type:"step_retries_exhausted",workflowId:a,stepId:A,stepKey:c,name:u,ts:Date.now(),durationMs:performance.now()-g,attempts:_,lastError:T,...r&&{metadata:r},diagnostics:j(T,n.errorMeta,"throw",_,performance.now()-g)});let ie=performance.now()-g,Z;try{Z=D(T)}catch(V){throw G(V)}throw l({type:"step_error",workflowId:a,stepId:A,stepKey:c,name:u,description:y,ts:Date.now(),durationMs:ie,error:Z,...r&&{metadata:r},diagnostics:j(T,n.errorMeta,"throw",_,ie)}),d&&l({type:"step_complete",workflowId:a,stepKey:d,name:u,description:y,ts:Date.now(),durationMs:ie,result:U(Z,{cause:T}),meta:{origin:"throw",thrown:T},...r&&{metadata:r}}),i?.(Z,u,w),N(Z,{origin:"throw",thrown:T})}}let q=z,se=performance.now()-g,ae=H(q.error,{origin:"result",resultCause:q.cause});throw l({type:"step_error",workflowId:a,stepId:A,stepKey:c,name:u,description:y,ts:Date.now(),durationMs:se,error:ae,...r&&{metadata:r},diagnostics:j(q.error,n.errorMeta,"result",h.attempts,se)}),d&&l({type:"step_complete",workflowId:a,stepKey:d,name:u,description:y,ts:Date.now(),durationMs:se,result:q,meta:{origin:"result",resultCause:q.cause},...r&&{metadata:r}}),i?.(ae,u,w),N(ae,{origin:"result",resultCause:q.cause})})();p.try=(s,E,o)=>{if(typeof s!="string"||s.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 n=o.key??s,r=s,u=s,c="error"in o?()=>o.error:o.onError,d=m;return(async()=>{let y=d?performance.now():0;m&&l({type:"step_start",workflowId:a,stepId:u,stepKey:n,name:r,ts:Date.now()});try{let f=await E(),k=performance.now()-y;return l({type:"step_success",workflowId:a,stepId:u,stepKey:n,name:r,ts:Date.now(),durationMs:k}),n&&l({type:"step_complete",workflowId:a,stepKey:n,name:r,ts:Date.now(),durationMs:k,result:F(f)}),f}catch(f){let k=c(f),A=performance.now()-y,I=H(k,{origin:"throw",thrown:f});throw l({type:"step_error",workflowId:a,stepId:u,stepKey:n,name:r,ts:Date.now(),durationMs:A,error:I}),n&&l({type:"step_complete",workflowId:a,stepKey:n,name:r,ts:Date.now(),durationMs:A,result:U(k,{cause:f}),meta:{origin:"throw",thrown:f}}),i?.(I,r,w),N(I,{origin:"throw",thrown:f})}})()},p.fromResult=(s,E,o)=>{if(typeof s!="string"||s.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 n=o.key??s,r=s,u=s,c="error"in o?()=>o.error:o.onError,d=m;return(async()=>{let y=d?performance.now():0;m&&l({type:"step_start",workflowId:a,stepId:u,stepKey:n,name:r,ts:Date.now()});let f=await E();if(f.ok){let k=performance.now()-y;return l({type:"step_success",workflowId:a,stepId:u,stepKey:n,name:r,ts:Date.now(),durationMs:k}),n&&l({type:"step_complete",workflowId:a,stepKey:n,name:r,ts:Date.now(),durationMs:k,result:F(f.value)}),f.value}else{let k=c(f.error),A=performance.now()-y,I=H(k,{origin:"result",resultCause:f.error});throw l({type:"step_error",workflowId:a,stepId:u,stepKey:n,name:r,ts:Date.now(),durationMs:A,error:I}),n&&l({type:"step_complete",workflowId:a,stepKey:n,name:r,ts:Date.now(),durationMs:A,result:U(k,{cause:f.error}),meta:{origin:"result",resultCause:f.error}}),i?.(I,r,w),N(I,{origin:"result",resultCause:f.error})}})()},p.fromNullable=(s,E,o,n)=>{if(typeof s!="string"||s.length===0)throw new Error('[awaitly] step.fromNullable() requires an explicit string ID as the first argument. Example: step.fromNullable("getUser", () => db.find(id), () => ({ type: "NOT_FOUND" }))');return p(s,async()=>{let r=await E();return r!=null?F(r):U(o())},n)},p.retry=(s,E,o)=>{if(typeof s!="string"||s.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 p(s,E,{key:o.key??s,retry:{attempts:o.attempts,backoff:o.backoff,initialDelay:o.initialDelay,maxDelay:o.maxDelay,jitter:o.jitter,retryOn:o.retryOn,onRetry:o.onRetry},timeout:o.timeout})},p.withTimeout=(s,E,o)=>{if(typeof s!="string"||s.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 p(s,E,{key:o.key??s,timeout:o})},p.sleep=(s,E,o)=>{if(typeof s!="string"||s.length===0)throw new Error('[awaitly] step.sleep() requires an explicit string ID as the first argument. Example: step.sleep("delay", "5s")');let n=typeof E=="string"?He(E):E;if(!n)throw new Error(`step.sleep: invalid duration '${E}'`);let r=n.millis,u=o?.signal;return p(s,async()=>{if(M?.aborted||u?.aborted){let c=new Error("Sleep aborted");throw c.name="AbortError",c}return new Promise((c,d)=>{let y={timeoutId:void 0},f=()=>{y.timeoutId&&clearTimeout(y.timeoutId);let k=new Error("Sleep aborted");k.name="AbortError",d(k)};M?.addEventListener("abort",f,{once:!0}),u?.addEventListener("abort",f,{once:!0}),y.timeoutId=setTimeout(()=>{M?.removeEventListener("abort",f),u?.removeEventListener("abort",f),c(F(void 0))},r)})},{key:o?.key??s,description:o?.description})},p.parallel=((...s)=>{if(typeof s[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 E=s[0],o=s[1];if(typeof o=="function")return W(E,o);if(o&&typeof o=="object"&&!Array.isArray(o)){let r=L(o);return te(r,{name:E})}throw new TypeError("step.parallel(name, ...): second argument must be a function (array form) or an object of operations (object form).")}),p.race=(s,E)=>{let o=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let n=performance.now(),r=!1,u={scopeId:o,type:"race",winnerId:void 0};C.push(u);let c=()=>{if(r)return;r=!0;let d=C.findIndex(y=>y.scopeId===o);d!==-1&&C.splice(d,1),l({type:"scope_end",workflowId:a,scopeId:o,ts:Date.now(),durationMs:performance.now()-n,winnerId:u.winnerId})};l({type:"scope_start",workflowId:a,scopeId:o,scopeType:"race",name:s,ts:Date.now()});try{let d=await E();if(c(),!d.ok)throw i?.(d.error,s,w),N(d.error,{origin:"result",resultCause:d.cause});return d.value}catch(d){throw c(),d}})()},p.allSettled=(s,E)=>{let o=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let n=performance.now(),r=!1;C.push({scopeId:o,type:"allSettled"});let u=()=>{if(r)return;r=!0;let c=C.findIndex(d=>d.scopeId===o);c!==-1&&C.splice(c,1),l({type:"scope_end",workflowId:a,scopeId:o,ts:Date.now(),durationMs:performance.now()-n})};l({type:"scope_start",workflowId:a,scopeId:o,scopeType:"allSettled",name:s,ts:Date.now()});try{let c=await E();if(u(),!c.ok)throw i?.(c.error,s,w),N(c.error,{origin:"result",resultCause:c.cause});return c.value}catch(c){throw u(),c}})()},p.if=(s,E,o)=>o(),p.label=p.if,p.branch=async(s,E)=>{let{condition:o,then:n,else:r}=E;if(o())return await n();if(r)return await r()},p.arm=(s,E)=>({fn:s,errors:E}),p.forEach=async(s,E,o)=>{let n=[],r=o.maxIterations,u=0,c="run"in o,d=Symbol.asyncIterator in E?E:(async function*(){yield*E})();for await(let y of d){if(r!==void 0&&u>=r)break;let f;c?f=await o.run(y,u):f=await o.item.handler(y,u,p),n.push(f),u++}return n},p.item=s=>({__forEachItemHandler:!0,handler:s}),p.dep=(s,E)=>E,p.run=(s,E,o)=>p(s,()=>E,o),p.workflow=(s,E,o)=>p(s,E,o),p.andThen=(s,E,o,n)=>p(s,()=>o(E),n),p.match=async(s,E,o,n)=>p(s,async()=>{let r=await E;return r.ok?F(await o.ok(r.value)):F(await o.err(r.error,r.cause))},n),p.all=p.parallel,p.map=async(s,E,o,n)=>{let r=n?.concurrency??E.length;return p(s,()=>r>=E.length?Ae(E.map((u,c)=>o(u,c))):(async()=>{let u=[];for(let c=0;c<E.length;c+=r){let d=E.slice(c,c+r),y=await Ae(d.map((f,k)=>o(f,c+k)));if(!y.ok)return y;u.push(...y.value)}return F(u)})(),{key:n?.key})},p.withFallback=(s,E,o)=>{if(typeof s!="string"||s.length===0)throw new Error('[awaitly] step.withFallback() requires an explicit string ID as the first argument. Example: step.withFallback("getUser", () => fetchUser(id), { fallback: () => fetchFromCache(id) })');let n=o.key??s,r=s,u=$(n),c=m;return(async()=>{let d=c?performance.now():0;m&&l({type:"step_start",workflowId:a,stepId:u,stepKey:n,name:r,ts:Date.now()});let y;try{y=await E()}catch(g){if(J(g))throw l({type:"step_aborted",workflowId:a,stepId:u,stepKey:n,name:r,ts:Date.now(),durationMs:performance.now()-d}),g;let O;try{O=D(g)}catch(S){throw G(S)}if(o.on!==void 0&&o.on!==O){let S=performance.now()-d;throw l({type:"step_error",workflowId:a,stepId:u,stepKey:n,name:r,ts:Date.now(),durationMs:S,error:O}),n&&l({type:"step_complete",workflowId:a,stepKey:n,name:r,ts:Date.now(),durationMs:S,result:U(O,{cause:g}),meta:{origin:"throw",thrown:g}}),i?.(O,r,w),N(O,{origin:"throw",thrown:g})}let R;try{R=await o.fallback()}catch(S){if(J(S))throw l({type:"step_aborted",workflowId:a,stepId:u,stepKey:n,name:r,ts:Date.now(),durationMs:performance.now()-d}),S;let h;try{h=D(S)}catch(q){throw G(q)}let z=performance.now()-d;throw l({type:"step_error",workflowId:a,stepId:u,stepKey:n,name:r,ts:Date.now(),durationMs:z,error:h}),n&&l({type:"step_complete",workflowId:a,stepKey:n,name:r,ts:Date.now(),durationMs:z,result:U(h,{cause:S}),meta:{origin:"throw",thrown:S}}),i?.(h,r,w),N(h,{origin:"throw",thrown:S})}if(R.ok){let S=performance.now()-d;return l({type:"step_success",workflowId:a,stepId:u,stepKey:n,name:r,ts:Date.now(),durationMs:S}),n&&l({type:"step_complete",workflowId:a,stepKey:n,name:r,ts:Date.now(),durationMs:S,result:R,meta:{origin:"fallback",fallbackUsed:!0,fallbackReason:String(O)}}),R.value}else{let S=performance.now()-d,h=H(R.error,{origin:"result",resultCause:R.cause});throw l({type:"step_error",workflowId:a,stepId:u,stepKey:n,name:r,ts:Date.now(),durationMs:S,error:h}),n&&l({type:"step_complete",workflowId:a,stepKey:n,name:r,ts:Date.now(),durationMs:S,result:R,meta:{origin:"result",resultCause:R.cause}}),i?.(h,r,w),N(h,{origin:"result",resultCause:R.cause})}}if(y.ok){let g=performance.now()-d;return l({type:"step_success",workflowId:a,stepId:u,stepKey:n,name:r,ts:Date.now(),durationMs:g}),n&&l({type:"step_complete",workflowId:a,stepKey:n,name:r,ts:Date.now(),durationMs:g,result:y}),y.value}let f=y.error;if(o.on!==void 0&&o.on!==f){let g=performance.now()-d,O=H(f,{origin:"result",resultCause:y.cause});throw l({type:"step_error",workflowId:a,stepId:u,stepKey:n,name:r,ts:Date.now(),durationMs:g,error:O}),n&&l({type:"step_complete",workflowId:a,stepKey:n,name:r,ts:Date.now(),durationMs:g,result:y,meta:{origin:"result",resultCause:y.cause}}),i?.(O,r,w),N(O,{origin:"result",resultCause:y.cause})}let k;try{k=await o.fallback()}catch(g){if(J(g))throw l({type:"step_aborted",workflowId:a,stepId:u,stepKey:n,name:r,ts:Date.now(),durationMs:performance.now()-d}),g;let O;try{O=D(g)}catch(S){throw G(S)}let R=performance.now()-d;throw l({type:"step_error",workflowId:a,stepId:u,stepKey:n,name:r,ts:Date.now(),durationMs:R,error:O}),n&&l({type:"step_complete",workflowId:a,stepKey:n,name:r,ts:Date.now(),durationMs:R,result:U(O,{cause:g}),meta:{origin:"throw",thrown:g}}),i?.(O,r,w),N(O,{origin:"throw",thrown:g})}if(k.ok){let g=performance.now()-d;return l({type:"step_success",workflowId:a,stepId:u,stepKey:n,name:r,ts:Date.now(),durationMs:g}),n&&l({type:"step_complete",workflowId:a,stepKey:n,name:r,ts:Date.now(),durationMs:g,result:k,meta:{origin:"fallback",fallbackUsed:!0,fallbackReason:String(f)}}),k.value}let A=performance.now()-d,I=H(k.error,{origin:"result",resultCause:k.cause});throw l({type:"step_error",workflowId:a,stepId:u,stepKey:n,name:r,ts:Date.now(),durationMs:A,error:I}),n&&l({type:"step_complete",workflowId:a,stepKey:n,name:r,ts:Date.now(),durationMs:A,result:k,meta:{origin:"result",resultCause:k.cause}}),i?.(I,r,w),N(I,{origin:"result",resultCause:k.cause})})()},p.withResource=(s,E)=>{if(typeof s!="string"||s.length===0)throw new Error('[awaitly] step.withResource() requires an explicit string ID as the first argument. Example: step.withResource("useDb", { acquire: () => connect(), use: (db) => query(db), release: (db) => db.close() })');let o=s,n=s,r=$(o),u=m;return(async()=>{let c=u?performance.now():0;m&&l({type:"step_start",workflowId:a,stepId:r,stepKey:o,name:n,ts:Date.now()});let d;try{d=await E.acquire()}catch(R){if(J(R))throw l({type:"step_aborted",workflowId:a,stepId:r,stepKey:o,name:n,ts:Date.now(),durationMs:performance.now()-c}),R;let S;try{S=D(R)}catch(z){throw G(z)}let h=performance.now()-c;throw l({type:"step_error",workflowId:a,stepId:r,stepKey:o,name:n,ts:Date.now(),durationMs:h,error:S}),o&&l({type:"step_complete",workflowId:a,stepKey:o,name:n,ts:Date.now(),durationMs:h,result:U(S,{cause:R}),meta:{origin:"throw",thrown:R}}),i?.(S,n,w),N(S,{origin:"throw",thrown:R})}if(!d.ok){let R=performance.now()-c,S=H(d.error,{origin:"result",resultCause:d.cause});throw l({type:"step_error",workflowId:a,stepId:r,stepKey:o,name:n,ts:Date.now(),durationMs:R,error:S}),o&&l({type:"step_complete",workflowId:a,stepKey:o,name:n,ts:Date.now(),durationMs:R,result:d,meta:{origin:"result",resultCause:d.cause}}),i?.(S,n,w),N(S,{origin:"result",resultCause:d.cause})}let y=d.value,f,k,A=!1;try{f=await E.use(y)}catch(R){if(J(R)){try{await E.release(y)}catch(S){console.warn(`[awaitly] step.withResource("${s}"): release threw after earlyExit:`,S)}throw R}k=R,A=!0}try{await E.release(y)}catch(R){console.warn(`[awaitly] step.withResource("${s}"): release threw:`,R)}if(A){let R;try{R=D(k)}catch(h){throw G(h)}let S=performance.now()-c;throw l({type:"step_error",workflowId:a,stepId:r,stepKey:o,name:n,ts:Date.now(),durationMs:S,error:R}),o&&l({type:"step_complete",workflowId:a,stepKey:o,name:n,ts:Date.now(),durationMs:S,result:U(R,{cause:k}),meta:{origin:"throw",thrown:k}}),i?.(R,n,w),N(R,{origin:"throw",thrown:k})}let I=f;if(I.ok){let R=performance.now()-c;return l({type:"step_success",workflowId:a,stepId:r,stepKey:o,name:n,ts:Date.now(),durationMs:R}),o&&l({type:"step_complete",workflowId:a,stepKey:o,name:n,ts:Date.now(),durationMs:R,result:I}),I.value}let g=performance.now()-c,O=H(I.error,{origin:"result",resultCause:I.cause});throw l({type:"step_error",workflowId:a,stepId:r,stepKey:o,name:n,ts:Date.now(),durationMs:g,error:O}),o&&l({type:"step_complete",workflowId:a,stepKey:o,name:n,ts:Date.now(),durationMs:g,result:I,meta:{origin:"result",resultCause:I.cause}}),i?.(O,n,w),N(O,{origin:"result",resultCause:I.cause})})()};let B=await e({step:p});if(process.env.NODE_ENV!=="production"&&B!==null&&typeof B=="object"&&"ok"in B&&typeof B.ok=="boolean"){let s=B;(s.ok===!0&&"value"in s||s.ok===!1&&"error"in s)&&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 K(L)}catch(p){if(Ve(p))throw p.thrown;if($(p)){let q=p.meta.origin==="throw"?p.meta.thrown:p.meta.origin==="result"?p.meta.resultCause:void 0;return D(p.error,{cause:q})}let j=N(p);return c?.(j,"unexpected",y),D(j,{cause:p})}}we.strict=(n,s)=>we(n,s);async function de(n){return n.length===0?K([]):new Promise(s=>{let c=!1,w=n.length,S=new Array(n.length);for(let v=0;v<n.length;v++){let _=v;Promise.resolve(n[_]).catch(y=>D({type:"PROMISE_REJECTED",cause:y},{cause:{type:"PROMISE_REJECTION",reason:y}})).then(y=>{if(!c){if(!y.ok){c=!0,s(y);return}S[_]=y.value,w--,w===0&&s(K(S))}})}})}function Te(n){return typeof n=="object"&&n!==null&&n.type==="EVENT_TIMEOUT"}function ke(n){return typeof n=="object"&&n!==null&&n.type==="INVALID_EMITTER"}function Re(n,s){return new Promise(c=>{try{n((w,S)=>{if(w){let v=s?.onError?s.onError(w):w;c(D(v,{cause:w}))}else c(K(S))})}catch(w){let S=w instanceof Error?w:new Error(String(w)),v=s?.onError?s.onError(S):S;c(D(v,{cause:w}))}})}function ce(n){return typeof n=="object"&&n!==null&&"on"in n&&"off"in n&&typeof n.on=="function"&&typeof n.off=="function"}function pe(n){return typeof n=="object"&&n!==null&&"addEventListener"in n&&"removeEventListener"in n&&typeof n.addEventListener=="function"&&typeof n.removeEventListener=="function"}function ge(n,s,c){return new Promise(w=>{let S,v=!1,_=ce(n)?(x,M)=>n.on(x,M):pe(n)?(x,M)=>n.addEventListener(x,M):null,y=ce(n)?(x,M)=>n.off(x,M):pe(n)?(x,M)=>n.removeEventListener(x,M):null;if(!_||!y){w(D({type:"INVALID_EMITTER",message:"Object does not have on/off or addEventListener/removeEventListener"}));return}let I=(...x)=>{v||(v=!0,N(),w(K(x[0])))},a=(...x)=>{if(v)return;v=!0,N();let M=x[0],B=c?.onError?c.onError(M):M;w(D(B,{cause:M}))},N=()=>{S&&clearTimeout(S),y(s.success,I),s.error&&y(s.error,a)};_(s.success,I),s.error&&_(s.error,a),s.timeout&&(S=setTimeout(()=>{if(v)return;v=!0,N();let x={type:"EVENT_TIMEOUT",event:s.success,timeoutMs:s.timeout};w(D(x))},s.timeout))})}function Ce(n){return ce(n)||pe(n)}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 F(B)}catch(p){if(Qe(p))throw p.thrown;if(J(p)){let W=p.meta.origin==="throw"?p.meta.thrown:p.meta.origin==="result"?p.meta.resultCause:void 0;return U(p.error,{cause:W})}let L=D(p);return i?.(L,"unexpected",w),U(L,{cause:p})}}Se.strict=(e,t)=>Se(e,t);async function Ae(e){return e.length===0?F([]):new Promise(t=>{let i=!1,m=e.length,b=new Array(e.length);for(let x=0;x<e.length;x++){let v=x;Promise.resolve(e[v]).catch(w=>U({type:"PROMISE_REJECTED",cause:w},{cause:{type:"PROMISE_REJECTION",reason:w}})).then(w=>{if(!i){if(!w.ok){i=!0,t(w);return}b[v]=w.value,m--,m===0&&t(F(b))}})}})}function Pe(e){return typeof e=="object"&&e!==null&&e.type==="EVENT_TIMEOUT"}function Oe(e){return typeof e=="object"&&e!==null&&e.type==="INVALID_EMITTER"}function Me(e,t){return new Promise(i=>{try{e((m,b)=>{if(m){let x=t?.onError?t.onError(m):m;i(U(x,{cause:m}))}else i(F(b))})}catch(m){let b=m instanceof Error?m:new Error(String(m)),x=t?.onError?t.onError(b):b;i(U(x,{cause:m}))}})}function me(e){return typeof e=="object"&&e!==null&&"on"in e&&"off"in e&&typeof e.on=="function"&&typeof e.off=="function"}function de(e){return typeof e=="object"&&e!==null&&"addEventListener"in e&&"removeEventListener"in e&&typeof e.addEventListener=="function"&&typeof e.removeEventListener=="function"}function Ie(e,t,i){return new Promise(m=>{let b,x=!1,v=me(e)?(C,P)=>e.on(C,P):de(e)?(C,P)=>e.addEventListener(C,P):null,w=me(e)?(C,P)=>e.off(C,P):de(e)?(C,P)=>e.removeEventListener(C,P):null;if(!v||!w){m(U({type:"INVALID_EMITTER",message:"Object does not have on/off or addEventListener/removeEventListener"}));return}let M=(...C)=>{x||(x=!0,D(),m(F(C[0])))},a=(...C)=>{if(x)return;x=!0,D();let P=C[0],$=i?.onError?i.onError(P):P;m(U($,{cause:P}))},D=()=>{b&&clearTimeout(b),w(t.success,M),t.error&&w(t.error,a)};v(t.success,M),t.error&&v(t.error,a),t.timeout&&(b=setTimeout(()=>{if(x)return;x=!0,D();let C={type:"EVENT_TIMEOUT",event:t.success,timeoutMs:t.timeout};m(U(C))},t.timeout))})}function De(e){return me(e)||de(e)}0&&(module.exports={fromCallback,fromEvent,isEventEmitterLike,isEventTimeoutError,isInvalidEmitterError});
7
7
  //# sourceMappingURL=adapters.cjs.map