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