awaitly 1.31.0 → 1.32.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.
- package/dist/adapters.cjs +2 -2
- package/dist/adapters.cjs.map +1 -1
- package/dist/adapters.d.cts +3 -1
- package/dist/adapters.d.ts +3 -1
- package/dist/adapters.js +2 -2
- package/dist/adapters.js.map +1 -1
- package/dist/batch.cjs +2 -2
- package/dist/batch.cjs.map +1 -1
- package/dist/batch.d.cts +3 -1
- package/dist/batch.d.ts +3 -1
- package/dist/batch.js +2 -2
- package/dist/batch.js.map +1 -1
- package/dist/circuit-breaker.cjs +2 -2
- package/dist/circuit-breaker.cjs.map +1 -1
- package/dist/circuit-breaker.d.cts +3 -1
- package/dist/circuit-breaker.d.ts +3 -1
- package/dist/circuit-breaker.js +2 -2
- package/dist/circuit-breaker.js.map +1 -1
- package/dist/conditional.d.cts +3 -1
- package/dist/conditional.d.ts +3 -1
- package/dist/core.cjs +2 -2
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +2 -1
- package/dist/core.d.ts +2 -1
- package/dist/core.js +2 -2
- package/dist/core.js.map +1 -1
- package/dist/diagnostics.cjs +8 -0
- package/dist/diagnostics.cjs.map +1 -0
- package/dist/diagnostics.d.cts +67 -0
- package/dist/diagnostics.d.ts +67 -0
- package/dist/diagnostics.js +8 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/durable.cjs +3 -3
- package/dist/durable.cjs.map +1 -1
- package/dist/durable.d.cts +8 -361
- package/dist/durable.d.ts +8 -361
- package/dist/durable.js +3 -3
- package/dist/durable.js.map +1 -1
- package/dist/engine.cjs +11 -0
- package/dist/engine.cjs.map +1 -0
- package/dist/engine.d.cts +114 -0
- package/dist/engine.d.ts +114 -0
- package/dist/engine.js +11 -0
- package/dist/engine.js.map +1 -0
- package/dist/errors-entry-CMH73Eym.d.cts +339 -0
- package/dist/errors-entry-DOt5UUl4.d.ts +339 -0
- package/dist/errors.cjs +1 -1
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.d.cts +2 -318
- package/dist/errors.d.ts +2 -318
- package/dist/errors.js +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/fetch.cjs +2 -2
- package/dist/fetch.cjs.map +1 -1
- package/dist/fetch.d.cts +3 -1
- package/dist/fetch.d.ts +3 -1
- package/dist/fetch.js +2 -2
- package/dist/fetch.js.map +1 -1
- package/dist/functional.cjs +1 -1
- package/dist/functional.cjs.map +1 -1
- package/dist/functional.d.cts +2 -0
- package/dist/functional.d.ts +2 -0
- package/dist/functional.js +1 -1
- package/dist/functional.js.map +1 -1
- package/dist/{guards-Cujq_17E.d.cts → guards-B79mP5Q8.d.cts} +3 -3
- package/dist/{guards-rK0_ZPJk.d.ts → guards-BUq6NJCM.d.ts} +3 -3
- package/dist/{hitl-Cqyu9HqC.d.cts → hitl-BCqkMAHw.d.cts} +2 -2
- package/dist/{hitl-DtewAZuT.d.ts → hitl-BZtPx0aU.d.ts} +2 -2
- package/dist/hitl.cjs +2 -2
- package/dist/hitl.cjs.map +1 -1
- package/dist/hitl.d.cts +9 -6
- package/dist/hitl.d.ts +9 -6
- package/dist/hitl.js +2 -2
- package/dist/hitl.js.map +1 -1
- package/dist/index-BVUAOWGG.d.ts +417 -0
- package/dist/index-CQnpmUcC.d.cts +417 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -3
- package/dist/index.d.ts +4 -3
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/otel.cjs +1 -1
- package/dist/otel.cjs.map +1 -1
- package/dist/otel.d.cts +3 -1
- package/dist/otel.d.ts +3 -1
- package/dist/otel.js +1 -1
- package/dist/otel.js.map +1 -1
- package/dist/{persistence-entry-BlWCtxSV.d.ts → persistence-entry-ClFhxd2Q.d.ts} +11 -5
- package/dist/{persistence-entry-D4z7BXV_.d.cts → persistence-entry-jflY61az.d.cts} +11 -5
- package/dist/persistence.d.cts +6 -3
- package/dist/persistence.d.ts +6 -3
- package/dist/policies.d.cts +3 -1
- package/dist/policies.d.ts +3 -1
- package/dist/ratelimit.cjs +2 -2
- package/dist/ratelimit.cjs.map +1 -1
- package/dist/ratelimit.d.cts +3 -1
- package/dist/ratelimit.d.ts +3 -1
- package/dist/ratelimit.js +2 -2
- package/dist/ratelimit.js.map +1 -1
- package/dist/reliability.cjs +2 -2
- package/dist/reliability.cjs.map +1 -1
- package/dist/reliability.d.cts +3 -1
- package/dist/reliability.d.ts +3 -1
- package/dist/reliability.js +2 -2
- package/dist/reliability.js.map +1 -1
- package/dist/resolver.cjs +2 -2
- package/dist/resolver.cjs.map +1 -1
- package/dist/resolver.d.cts +5 -3
- package/dist/resolver.d.ts +5 -3
- package/dist/resolver.js +2 -2
- package/dist/resolver.js.map +1 -1
- package/dist/resource.cjs +2 -2
- package/dist/resource.cjs.map +1 -1
- package/dist/resource.d.cts +3 -1
- package/dist/resource.d.ts +3 -1
- package/dist/resource.js +2 -2
- package/dist/resource.js.map +1 -1
- package/dist/result/retry.cjs +1 -1
- package/dist/result/retry.cjs.map +1 -1
- package/dist/result/retry.d.cts +2 -0
- package/dist/result/retry.d.ts +2 -0
- package/dist/result/retry.js +1 -1
- package/dist/result/retry.js.map +1 -1
- package/dist/result.cjs +1 -1
- package/dist/result.cjs.map +1 -1
- package/dist/result.d.cts +8 -23
- package/dist/result.d.ts +8 -23
- package/dist/result.js +1 -1
- package/dist/result.js.map +1 -1
- package/dist/{run-entry-CFLkUvqw.d.cts → run-entry-rw7zll_G.d.ts} +183 -45
- package/dist/{run-entry-CFLkUvqw.d.ts → run-entry-yQu63Yj9.d.cts} +183 -45
- package/dist/run.cjs +2 -2
- package/dist/run.cjs.map +1 -1
- package/dist/run.d.cts +3 -1
- package/dist/run.d.ts +3 -1
- package/dist/run.js +2 -2
- package/dist/run.js.map +1 -1
- package/dist/saga.cjs +2 -2
- package/dist/saga.cjs.map +1 -1
- package/dist/saga.d.cts +3 -1
- package/dist/saga.d.ts +3 -1
- package/dist/saga.js +2 -2
- package/dist/saga.js.map +1 -1
- package/dist/singleflight.d.cts +3 -1
- package/dist/singleflight.d.ts +3 -1
- package/dist/streaming.cjs +4 -4
- package/dist/streaming.cjs.map +1 -1
- package/dist/streaming.d.cts +5 -3
- package/dist/streaming.d.ts +5 -3
- package/dist/streaming.js +4 -4
- package/dist/streaming.js.map +1 -1
- package/dist/testing.cjs +8 -4
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.d.cts +87 -4
- package/dist/testing.d.ts +87 -4
- package/dist/testing.js +8 -4
- package/dist/testing.js.map +1 -1
- package/dist/{types-DiG4vCyB.d.ts → types-CuWK5AlK.d.ts} +1 -1
- package/dist/{types-Dmw78_CL.d.cts → types-uR3JpwvF.d.cts} +1 -1
- package/dist/webhook.cjs +2 -2
- package/dist/webhook.cjs.map +1 -1
- package/dist/webhook.d.cts +7 -4
- package/dist/webhook.d.ts +7 -4
- package/dist/webhook.js +2 -2
- package/dist/webhook.js.map +1 -1
- package/dist/workflow.cjs +3 -3
- package/dist/workflow.cjs.map +1 -1
- package/dist/workflow.d.cts +47 -11
- package/dist/workflow.d.ts +47 -11
- package/dist/workflow.js +3 -3
- package/dist/workflow.js.map +1 -1
- package/package.json +21 -2
package/dist/adapters.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";var re=Object.defineProperty;var be=Object.getOwnPropertyDescriptor;var he=Object.getOwnPropertyNames;var Se=Object.prototype.hasOwnProperty;var Ae=(r,E)=>{for(var y in E)re(r,y,{get:E[y],enumerable:!0})},ve=(r,E,y,d)=>{if(E&&typeof E=="object"||typeof E=="function")for(let S of he(E))!Se.call(r,S)&&S!==y&&re(r,S,{get:()=>E[S],enumerable:!(d=be(E,S))||d.enumerable});return r};var Pe=r=>ve(re({},"__esModule",{value:!0}),r);var je={};Ae(je,{fromCallback:()=>Te,fromEvent:()=>ke,isEventEmitterLike:()=>Re,isEventTimeoutError:()=>de,isInvalidEmitterError:()=>fe});module.exports=Pe(je);function _e(r){let E=r.trim().match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h|d)$/i);if(!E)return;let y=parseFloat(E[1]),d=E[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}function N(r){return{ok:!0,value:r}}function M(r,E){let y=E?.cause;return{ok:!1,error:r,...y!==void 0?{cause:y}:{}}}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 E=r;return{timeoutMs:E.timeoutMs,stepName:E.stepName,stepKey:E.stepKey,attempt:E.attempt}}if(H in r)return r[H]}}var we=Symbol("early-exit");function De(r,E){return{[we]:!0,error:r,meta:E}}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,E){let{backoff:y,initialDelay:d,maxDelay:S,jitter:A}=E,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(E=>setTimeout(E,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,E,y,d){let S=new AbortController,A=E.onTimeout??"error",I=()=>typeof A=="function"?A({name:y.name,key:y.key,ms:E.ms}):E.error??{type:"STEP_TIMEOUT",stepName:y.name,stepKey:y.key,timeoutMs:E.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:E.ms});return}v({[pe]:!0,error:I()})},E.ms)}),U;E.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:E.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:E.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,E){let{onError:y,onEvent:d,catchUnexpected:S,workflowId:A,workflowName:I,context:g,_workflowSignal:K}=E&&typeof E=="object"?E:{},s=A??crypto.randomUUID(),U=S??Ie,R=[],v=0,B=u=>u??`step_${++v}`,a=u=>{let F=u.context!==void 0||g===void 0?u:{...u,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)},D=De,Y=u=>Ue(u),W=(u,F)=>u,ge=u=>typeof u=="function"?!1:!!(u&&typeof u=="object"&&"ok"in u||u&&typeof u=="object"&&"then"in u&&typeof u.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 i=()=>{if(t)return;t=!0;let l=R.findIndex(p=>p.scopeId===e);l!==-1&&R.splice(l,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 l=await c();if(i(),!l.ok)throw y?.(l.error,o,g),D(l.error,{origin:"result",resultCause:l.cause});return l.value}catch(l){throw i(),l}})()},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 i=performance.now(),l=!1;R.push({scopeId:t,type:"parallel"});let p=()=>{if(l)return;l=!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()-i})};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 _=!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(P=>M({type:"PROMISE_REJECTED",cause:P},{cause:{type:"PROMISE_REJECTION",reason:P}})).then(P=>{if(!_){if(!P.ok){_=!0,m([{key:k,result:P}]);return}b[w]={key:k,result:P},x--,x===0&&m(b)}})}});p();let T={};for(let{key:m,result:_}of f){if(!_.ok)throw y?.(_.error,m,g),D(_.error,{origin:"result",resultCause:_.cause});T[m]=_.value}return T}catch(f){throw p(),f}})()};var Le=F,Ve=q,Be=z;let u=(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,i=n.key??o,l=n.key??o,{description:p,retry:f,timeout:T}=n,m=B(i),_=d,x=_?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:i,name:t,description:p,ts:Date.now()});let P;for(let O=1;O<=w.attempts;O++){let Ce=_?performance.now():0;try{let C;if(T?C=await Fe(h,T,{name:t,key:i,attempt:O},K):C=await h(),C.ok){let X=performance.now()-x;return a({type:"step_success",workflowId:s,stepId:m,stepKey:i,name:t,description:p,ts:Date.now(),durationMs:X}),l&&a({type:"step_complete",workflowId:s,stepKey:l,name:t,description:p,ts:Date.now(),durationMs:X,result:C}),C.value}if(P=C,O<w.attempts&&w.retryOn(C.error,O)){let X=oe(O,w);a({type:"step_retry",workflowId:s,stepId:m,stepKey:i,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:i,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:i,name:t,ts:Date.now(),timeoutMs:V,attempt:O}),a({type:"step_success",workflowId:s,stepId:m,stepKey:i,name:t,description:p,ts:Date.now(),durationMs:performance.now()-x}),l&&a({type:"step_complete",workflowId:s,stepKey:l,name:t,description:p,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:i,name:t,description:p,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:i,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:i,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:i,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:i,name:t,description:p,ts:Date.now(),durationMs:le,error:C}),l&&a({type:"step_complete",workflowId:s,stepKey:l,name:t,description:p,ts:Date.now(),durationMs:le,result:M(C,{cause:C}),meta:{origin:"throw",thrown:C}}),y?.(C,t,g),D(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:i,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:i,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:i,name:t,description:p,ts:Date.now(),durationMs:ie,error:G}),l&&a({type:"step_complete",workflowId:s,stepKey:l,name:t,description:p,ts:Date.now(),durationMs:ie,result:M(G,{cause:C}),meta:{origin:"throw",thrown:C}}),y?.(G,t,g),D(G,{origin:"throw",thrown:C})}}let L=P,Z=performance.now()-x,te=W(L.error,{origin:"result",resultCause:L.cause});throw a({type:"step_error",workflowId:s,stepId:m,stepKey:i,name:t,description:p,ts:Date.now(),durationMs:Z,error:te}),l&&a({type:"step_complete",workflowId:s,stepKey:l,name:t,description:p,ts:Date.now(),durationMs:Z,result:L,meta:{origin:"result",resultCause:L.cause}}),y?.(te,t,g),D(te,{origin:"result",resultCause:L.cause})})();u.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,i=o,l="error"in e?()=>e.error:e.onError,p=d;return(async()=>{let f=p?performance.now():0;d&&a({type:"step_start",workflowId:s,stepId:i,stepKey:n,name:t,ts:Date.now()});try{let T=await c(),m=performance.now()-f;return a({type:"step_success",workflowId:s,stepId:i,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=l(T),_=performance.now()-f,x=W(m,{origin:"throw",thrown:T});throw a({type:"step_error",workflowId:s,stepId:i,stepKey:n,name:t,ts:Date.now(),durationMs:_,error:x}),n&&a({type:"step_complete",workflowId:s,stepKey:n,name:t,ts:Date.now(),durationMs:_,result:M(m,{cause:T}),meta:{origin:"throw",thrown:T}}),y?.(x,t,g),D(x,{origin:"throw",thrown:T})}})()},u.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,i=o,l="error"in e?()=>e.error:e.onError,p=d;return(async()=>{let f=p?performance.now():0;d&&a({type:"step_start",workflowId:s,stepId:i,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:i,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=l(T.error),_=performance.now()-f,x=W(m,{origin:"result",resultCause:T.error});throw a({type:"step_error",workflowId:s,stepId:i,stepKey:n,name:t,ts:Date.now(),durationMs:_,error:x}),n&&a({type:"step_complete",workflowId:s,stepKey:n,name:t,ts:Date.now(),durationMs:_,result:M(m,{cause:T.error}),meta:{origin:"result",resultCause:T.error}}),y?.(x,t,g),D(x,{origin:"result",resultCause:T.error})}})()},u.fromNullable=(o,c,e,n)=>{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 u(o,async()=>{let t=await c();return t!=null?N(t):M(e())},n)},u.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 u(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})},u.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 u(o,c,{key:e.key??o,timeout:e})},u.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"?_e(c):c;if(!n)throw new Error(`step.sleep: invalid duration '${c}'`);let t=n.millis,i=e?.signal;return u(o,async()=>{if(K?.aborted||i?.aborted){let l=new Error("Sleep aborted");throw l.name="AbortError",l}return new Promise((l,p)=>{let f={timeoutId:void 0},T=()=>{f.timeoutId&&clearTimeout(f.timeoutId);let m=new Error("Sleep aborted");m.name="AbortError",p(m)};K?.addEventListener("abort",T,{once:!0}),i?.addEventListener("abort",T,{once:!0}),f.timeoutId=setTimeout(()=>{K?.removeEventListener("abort",T),i?.removeEventListener("abort",T),l(N(void 0))},t)})},{key:e?.key??o,description:e?.description})},u.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).")}),u.race=(o,c)=>{let e=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let n=performance.now(),t=!1,i={scopeId:e,type:"race",winnerId:void 0};R.push(i);let l=()=>{if(t)return;t=!0;let p=R.findIndex(f=>f.scopeId===e);p!==-1&&R.splice(p,1),a({type:"scope_end",workflowId:s,scopeId:e,ts:Date.now(),durationMs:performance.now()-n,winnerId:i.winnerId})};a({type:"scope_start",workflowId:s,scopeId:e,scopeType:"race",name:o,ts:Date.now()});try{let p=await c();if(l(),!p.ok)throw y?.(p.error,o,g),D(p.error,{origin:"result",resultCause:p.cause});return p.value}catch(p){throw l(),p}})()},u.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 i=()=>{if(t)return;t=!0;let l=R.findIndex(p=>p.scopeId===e);l!==-1&&R.splice(l,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 l=await c();if(i(),!l.ok)throw y?.(l.error,o,g),D(l.error,{origin:"result",resultCause:l.cause});return l.value}catch(l){throw i(),l}})()},u.if=(o,c,e)=>e(),u.label=u.if,u.branch=async(o,c)=>{let{condition:e,then:n,else:t}=c;if(e())return await n();if(t)return await t()},u.arm=(o,c)=>({fn:o,errors:c}),u.forEach=async(o,c,e)=>{let n=[],t=e.maxIterations,i=0,l="run"in e,p=Symbol.asyncIterator in c?c:(async function*(){yield*c})();for await(let f of p){if(t!==void 0&&i>=t)break;let T;l?T=await e.run(f,i):T=await e.item.handler(f,i,u),n.push(T),i++}return n},u.item=o=>({__forEachItemHandler:!0,handler:o}),u.dep=(o,c)=>c,u.run=(o,c,e)=>u(o,()=>c,e),u.workflow=(o,c,e)=>u(o,c,e),u.andThen=(o,c,e,n)=>u(o,()=>e(c),n),u.match=async(o,c,e,n)=>u(o,async()=>{let t=await c;return t.ok?N(await e.ok(t.value)):N(await e.err(t.error,t.cause))},n),u.all=u.parallel,u.map=async(o,c,e,n)=>{let t=n?.concurrency??c.length;return u(o,()=>t>=c.length?me(c.map((i,l)=>e(i,l))):(async()=>{let i=[];for(let l=0;l<c.length;l+=t){let p=c.slice(l,l+t),f=await me(p.map((T,m)=>e(T,l+m)));if(!f.ok)return f;i.push(...f.value)}return N(i)})(),{key:n?.key})},u.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,i=B(n),l=d;return(async()=>{let p=l?performance.now():0;d&&a({type:"step_start",workflowId:s,stepId:i,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:i,stepKey:n,name:t,ts:Date.now(),durationMs:performance.now()-p}),b;let h;try{h=U(b)}catch(w){throw $(w)}if(e.on!==void 0&&e.on!==h){let w=performance.now()-p;throw a({type:"step_error",workflowId:s,stepId:i,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:M(h,{cause:b}),meta:{origin:"throw",thrown:b}}),y?.(h,t,g),D(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:i,stepKey:n,name:t,ts:Date.now(),durationMs:performance.now()-p}),w;let P;try{P=U(w)}catch(Z){throw $(Z)}let L=performance.now()-p;throw a({type:"step_error",workflowId:s,stepId:i,stepKey:n,name:t,ts:Date.now(),durationMs:L,error:P}),n&&a({type:"step_complete",workflowId:s,stepKey:n,name:t,ts:Date.now(),durationMs:L,result:M(P,{cause:w}),meta:{origin:"throw",thrown:w}}),y?.(P,t,g),D(P,{origin:"throw",thrown:w})}if(k.ok){let w=performance.now()-p;return a({type:"step_success",workflowId:s,stepId:i,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()-p,P=W(k.error,{origin:"result",resultCause:k.cause});throw a({type:"step_error",workflowId:s,stepId:i,stepKey:n,name:t,ts:Date.now(),durationMs:w,error:P}),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?.(P,t,g),D(P,{origin:"result",resultCause:k.cause})}}if(f.ok){let b=performance.now()-p;return a({type:"step_success",workflowId:s,stepId:i,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()-p,h=W(T,{origin:"result",resultCause:f.cause});throw a({type:"step_error",workflowId:s,stepId:i,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),D(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:i,stepKey:n,name:t,ts:Date.now(),durationMs:performance.now()-p}),b;let h;try{h=U(b)}catch(w){throw $(w)}let k=performance.now()-p;throw a({type:"step_error",workflowId:s,stepId:i,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:M(h,{cause:b}),meta:{origin:"throw",thrown:b}}),y?.(h,t,g),D(h,{origin:"throw",thrown:b})}if(m.ok){let b=performance.now()-p;return a({type:"step_success",workflowId:s,stepId:i,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 _=performance.now()-p,x=W(m.error,{origin:"result",resultCause:m.cause});throw a({type:"step_error",workflowId:s,stepId:i,stepKey:n,name:t,ts:Date.now(),durationMs:_,error:x}),n&&a({type:"step_complete",workflowId:s,stepKey:n,name:t,ts:Date.now(),durationMs:_,result:m,meta:{origin:"result",resultCause:m.cause}}),y?.(x,t,g),D(x,{origin:"result",resultCause:m.cause})})()},u.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),i=d;return(async()=>{let l=i?performance.now():0;d&&a({type:"step_start",workflowId:s,stepId:t,stepKey:e,name:n,ts:Date.now()});let p;try{p=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()-l}),k;let w;try{w=U(k)}catch(L){throw $(L)}let P=performance.now()-l;throw a({type:"step_error",workflowId:s,stepId:t,stepKey:e,name:n,ts:Date.now(),durationMs:P,error:w}),e&&a({type:"step_complete",workflowId:s,stepKey:e,name:n,ts:Date.now(),durationMs:P,result:M(w,{cause:k}),meta:{origin:"throw",thrown:k}}),y?.(w,n,g),D(w,{origin:"throw",thrown:k})}if(!p.ok){let k=performance.now()-l,w=W(p.error,{origin:"result",resultCause:p.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:p,meta:{origin:"result",resultCause:p.cause}}),y?.(w,n,g),D(w,{origin:"result",resultCause:p.cause})}let f=p.value,T,m,_=!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,_=!0}try{await c.release(f)}catch(k){console.warn(`[awaitly] step.withResource("${o}"): release threw:`,k)}if(_){let k;try{k=U(m)}catch(P){throw $(P)}let w=performance.now()-l;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:M(k,{cause:m}),meta:{origin:"throw",thrown:m}}),y?.(k,n,g),D(k,{origin:"throw",thrown:m})}let x=T;if(x.ok){let k=performance.now()-l;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()-l,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),D(h,{origin:"result",resultCause:x.cause})})()};let j=await r({step:u});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().
|
|
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
|
|
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
|