awaitly 1.31.1 → 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 +3 -3
- package/dist/diagnostics.cjs.map +1 -1
- package/dist/diagnostics.d.cts +3 -1
- package/dist/diagnostics.d.ts +3 -1
- package/dist/diagnostics.js +3 -3
- package/dist/diagnostics.js.map +1 -1
- 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-PU64_GKv.d.cts → guards-B79mP5Q8.d.cts} +3 -3
- package/dist/{guards-B5lgMJq0.d.ts → guards-BUq6NJCM.d.ts} +3 -3
- package/dist/{hitl-Dyiy0R1v.d.cts → hitl-BCqkMAHw.d.cts} +2 -2
- package/dist/{hitl-BjeSm1sJ.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.d.cts +3 -1
- package/dist/otel.d.ts +3 -1
- package/dist/{persistence-entry-B3ukwbb5.d.ts → persistence-entry-ClFhxd2Q.d.ts} +11 -5
- package/dist/{persistence-entry-CgVzswbg.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-C1uFytM6.d.cts → run-entry-rw7zll_G.d.ts} +16 -45
- package/dist/{run-entry-C1uFytM6.d.ts → run-entry-yQu63Yj9.d.cts} +16 -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-wa_wTOn3.d.ts → types-CuWK5AlK.d.ts} +1 -1
- package/dist/{types-DUWrNIJu.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 +15 -1
package/dist/conditional.d.cts
CHANGED
package/dist/conditional.d.ts
CHANGED
package/dist/core.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";var me=Object.defineProperty;var ht=Object.getOwnPropertyDescriptor;var bt=Object.getOwnPropertyNames;var St=Object.prototype.hasOwnProperty;var Ot=(e,t)=>{for(var n in t)me(e,n,{get:t[n],enumerable:!0})},_t=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let T of bt(t))!St.call(e,T)&&T!==n&&me(e,T,{get:()=>t[T],enumerable:!(i=ht(t,T))||i.enumerable});return e};var At=e=>_t(me({},"__esModule",{value:!0}),e);var Ft={};Ot(Ft,{AWAITLY_CANCELLED:()=>Ue,AWAITLY_TIMEOUT:()=>Ne,AWAITLY_UNEXPECTED:()=>De,Match:()=>kt,PROMISE_REJECTED:()=>Ie,TaggedError:()=>ne,UNEXPECTED_ERROR:()=>ee,UnwrapError:()=>Z,all:()=>Et,allAsync:()=>ae,allSettled:()=>mt,allSettledAsync:()=>ft,andThen:()=>nt,any:()=>wt,anyAsync:()=>Tt,bimap:()=>ut,err:()=>A,exhaustive:()=>he,extractErrorTag:()=>fe,extractStepMetadata:()=>ke,from:()=>Je,fromNullable:()=>Qe,fromPromise:()=>Ge,hydrate:()=>Re,isErr:()=>Fe,isOk:()=>je,isOneOf:()=>_e,isSerializedResult:()=>dt,isTag:()=>Oe,isUnexpectedError:()=>Te,lookupErrorClassification:()=>ge,map:()=>Ze,mapError:()=>et,mapErrorTry:()=>at,mapTry:()=>st,match:()=>tt,matchError:()=>Be,matchOrElse:()=>ie,matchTag:()=>xe,matchTags:()=>Ce,matchValue:()=>Ae,matchWhen:()=>Se,ok:()=>v,orElse:()=>it,orElseAsync:()=>pt,orElseValue:()=>be,partition:()=>yt,recover:()=>lt,recoverAsync:()=>ct,runOrNull:()=>Ye,runOrThrow:()=>qe,runOrThrowAsync:()=>Xe,runOrUndefined:()=>$e,tags:()=>Ke,tap:()=>rt,tapError:()=>ot,tryAsync:()=>ze,unwrap:()=>ue,unwrapOr:()=>Ve,unwrapOrElse:()=>We});module.exports=At(Ft);function Pt(e){let t=e.trim().match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h|d)$/i);if(!t)return;let n=parseFloat(t[1]),i=t[2].toLowerCase();return{_tag:"Duration",millis:n*({ms:1,s:1e3,m:6e4,h:36e5,d:864e5}[i]??1)}}var ee="UNEXPECTED_ERROR",Ie="PROMISE_REJECTED",De="AWAITLY_UNEXPECTED",Ue="AWAITLY_CANCELLED",Ne="AWAITLY_TIMEOUT",Ke=(...e)=>e;function Mt(e){return ee}function v(e){return{ok:!0,value:e}}function A(e,t){let n=t?.cause;return{ok:!1,error:e,...n!==void 0?{cause:n}:{}}}var je=e=>e.ok,Fe=e=>!e.ok,Te=e=>e===ee||typeof e=="object"&&e!==null&&e.type==="UNEXPECTED_ERROR";function Be(e,t){if(e==="UNEXPECTED_ERROR"){let n={type:ee,cause:{type:"UNCAUGHT_EXCEPTION",thrown:e}};return t.UNEXPECTED_ERROR(n)}return Te(e)?t.UNEXPECTED_ERROR(e):t[e](e)}function fe(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 n=t._tag.trim();if(n)return n}if(typeof t.tag=="string"){let n=t.tag.trim();if(n)return n}if(typeof t.code=="string"){let n=t.code.trim();if(n)return n}else if(typeof t.code=="number")return String(t.code);if(e instanceof Error&&e.name){let n=e.name.trim();if(n)return n}}return"unknown"}function ge(e,t){if(!(!t||!e))return t[e]}function ke(e){let{intent:t,domain:n,owner:i,tags:T,stateChanges:C,emits:b,calls:y}=e;if(!t&&!n&&!i&&!T?.length&&!C?.length&&!b?.length&&!y?.length)return;let D={};return t&&(D.intent=t),n&&(D.domain=n),i&&(D.owner=i),T?.length&&(D.tags=T),C?.length&&(D.stateChanges=C),b?.length&&(D.emits=b),y?.length&&(D.calls=y),D}function j(e,t,n,i,T){let C=fe(e),b=ge(C,t),y={tag:C,origin:n};return b!==void 0&&(y.classification=b),i!==void 0&&(y.attempt=i),T!==void 0&&(y.cumulativeDurationMs=T),y}var z=Symbol.for("step_timeout_marker");function Pe(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:z in e}function vt(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(z in e)return e[z]}}var He=Symbol("early-exit");function It(e,t){return{[He]:!0,error:e,meta:t}}function Dt(e){return typeof e=="object"&&e!==null&&e[He]===!0}var Le=Symbol("mapper-exception");function J(e){return{[Le]:!0,thrown:e}}function Ut(e){return typeof e=="object"&&e!==null&&e[Le]===!0}function ye(e,t){let{backoff:n,initialDelay:i,maxDelay:T,jitter:C}=t,b;switch(n){case"fixed":b=i;break;case"linear":b=i*e;break;case"exponential":b=i*Math.pow(2,e-1);break}if(b=Math.min(b,T),C){let y=b*.25*Math.random();b=b+y}return Math.floor(b)}function we(e){return new Promise(t=>setTimeout(t,e))}var Me=Symbol("timeout"),se=Symbol("timeout-option");function Nt(e){return typeof e=="object"&&e!==null&&e[se]===!0}async function Kt(e,t,n,i){let T=new AbortController,C=t.onTimeout??"error",b=()=>typeof C=="function"?C({name:n.name,key:n.key,ms:t.ms}):t.error??{type:"STEP_TIMEOUT",stepName:n.name,stepKey:n.key,timeoutMs:t.ms,attempt:n.attempt},y;i?.aborted&&T.abort(i.reason);let D;i&&!i.aborted&&(D=()=>T.abort(i.reason),i.addEventListener("abort",D,{once:!0}));let u=new Promise((P,K)=>{y=setTimeout(()=>{if(C!=="disconnect"&&T.abort(),C==="option"){K({[se]:!0,ms:t.ms});return}K({[Me]:!0,error:b()})},t.ms)}),N;t.signal?N=Promise.resolve(e(T.signal)):N=Promise.resolve(e());try{return await Promise.race([N,u])}catch(P){if(typeof P=="object"&&P!==null&&P[se]===!0)throw{[se]:!0,ms:t.ms};if(typeof P=="object"&&P!==null&&P[Me]===!0){C==="disconnect"&&N.catch(()=>{});let K=P.error;if(typeof K=="object"&&K!==null&&K.type!=="STEP_TIMEOUT"){let $={timeoutMs:t.ms,stepName:n.name,stepKey:n.key,attempt:n.attempt};z in K?K[z]=$:Object.defineProperty(K,z,{value:$,enumerable:!1,writable:!0,configurable:!1})}throw K}throw P}finally{clearTimeout(y),D&&i&&i.removeEventListener("abort",D)}}var G={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function ve(e,t){let{onError:n,onEvent:i,catchUnexpected:T,workflowId:C,workflowName:b,context:y,_workflowSignal:D}=t&&typeof t=="object"?t:{},u=C??crypto.randomUUID(),N=T??Mt,P=[],K=0,$=d=>d??`step_${++K}`,c=d=>{let F=d.context!==void 0||y===void 0?d:{...d,context:y},V=b!==void 0&&F.workflowName===void 0?{...F,workflowName:b}:F;if(V.type==="step_success"){let re=V.stepId;for(let oe=P.length-1;oe>=0;oe--){let B=P[oe];if(B.type==="race"&&!B.winnerId){B.winnerId=re;break}}}i?.(V,y)},U=It,X=d=>Dt(d),L=(d,F)=>d,Rt=d=>typeof d=="function"?!1:!!(d&&typeof d=="object"&&"ok"in d||d&&typeof d=="object"&&"then"in d&&typeof d.then=="function");try{let F=function(a){let E={};for(let[s,o]of Object.entries(a))if(typeof o=="function")E[s]=o;else if(o&&typeof o=="object"&&"fn"in o)E[s]=o.fn;else throw new TypeError(`step.parallel: operation "${s}" must be a function or { fn, errors? } object`);return E},V=function(a,E){let s=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let o=performance.now(),r=!1;P.push({scopeId:s,type:"parallel"});let p=()=>{if(r)return;r=!0;let l=P.findIndex(m=>m.scopeId===s);l!==-1&&P.splice(l,1),c({type:"scope_end",workflowId:u,scopeId:s,ts:Date.now(),durationMs:performance.now()-o})};c({type:"scope_start",workflowId:u,scopeId:s,scopeType:"parallel",name:a,ts:Date.now()});try{let l=await E();if(p(),!l.ok)throw n?.(l.error,a,y),U(l.error,{origin:"result",resultCause:l.cause});return l.value}catch(l){throw p(),l}})()},re=function(a,E){let s=Object.keys(a),o=E.name??`Parallel(${s.join(", ")})`,r=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let p=performance.now(),l=!1;P.push({scopeId:r,type:"parallel"});let m=()=>{if(l)return;l=!0;let w=P.findIndex(f=>f.scopeId===r);w!==-1&&P.splice(w,1),c({type:"scope_end",workflowId:u,scopeId:r,ts:Date.now(),durationMs:performance.now()-p})};c({type:"scope_start",workflowId:u,scopeId:r,scopeType:"parallel",name:o,ts:Date.now()});try{let w=await new Promise(k=>{if(s.length===0){k([]);return}let O=!1,I=s.length,R=new Array(s.length);for(let M=0;M<s.length;M++){let x=s[M],S=M;Promise.resolve(a[x]()).catch(h=>A({type:"PROMISE_REJECTED",cause:h},{cause:{type:"PROMISE_REJECTION",reason:h}})).then(h=>{if(!O){if(!h.ok){O=!0,k([{key:x,result:h}]);return}R[S]={key:x,result:h},I--,I===0&&k(R)}})}});m();let f={};for(let{key:k,result:O}of w){if(!O.ok)throw n?.(O.error,k,y),U(O.error,{origin:"result",resultCause:O.cause});f[k]=O.value}return f}catch(w){throw m(),w}})()};var Bt=F,Ht=V,Lt=re;let d=(a,E,s)=>(async()=>{if(typeof a!="string"||a.length===0)throw new Error('[awaitly] step() requires an explicit string ID as the first argument. Example: step("fetchUser", () => fetchUser(id))');let o=s??{},r=ke(o),p=a,l=o.key??a,m=o.key??a,{description:w,retry:f,timeout:k}=o,O=$(l),I=i,R=I?performance.now():0,x=Rt(E)?()=>E:E,h={attempts:Math.max(1,f?.attempts??1),backoff:f?.backoff??G.backoff,initialDelay:f?.initialDelay??G.initialDelay,maxDelay:f?.maxDelay??G.maxDelay,jitter:f?.jitter??G.jitter,retryOn:f?.retryOn??G.retryOn,onRetry:f?.onRetry??G.onRetry};i&&c({type:"step_start",workflowId:u,stepId:O,stepKey:l,name:p,description:w,ts:Date.now(),...r&&{metadata:r}});let Y;for(let _=1;_<=h.attempts;_++){let xt=I?performance.now():0;try{let g;if(k?g=await Kt(x,k,{name:p,key:l,attempt:_},D):g=await x(),g.ok){let q=performance.now()-R;return c({type:"step_success",workflowId:u,stepId:O,stepKey:l,name:p,description:w,ts:Date.now(),durationMs:q,...r&&{metadata:r}}),m&&c({type:"step_complete",workflowId:u,stepKey:m,name:p,description:w,ts:Date.now(),durationMs:q,result:g,...r&&{metadata:r}}),g.value}if(Y=g,_<h.attempts&&h.retryOn(g.error,_)){let q=ye(_,h);c({type:"step_retry",workflowId:u,stepId:O,stepKey:l,name:p,ts:Date.now(),attempt:_+1,maxAttempts:h.attempts,delayMs:q,error:g.error,...r&&{metadata:r},diagnostics:j(g.error,o.errorMeta,"result",_,performance.now()-R)}),h.onRetry(g.error,_,q),await we(q);continue}h.attempts>1&&c({type:"step_retries_exhausted",workflowId:u,stepId:O,stepKey:l,name:p,ts:Date.now(),durationMs:performance.now()-R,attempts:_,lastError:g.error,...r&&{metadata:r},diagnostics:j(g.error,o.errorMeta,"result",_,performance.now()-R)});break}catch(g){let q=performance.now()-xt;if(Nt(g)){let H=g.ms;c({type:"step_timeout",workflowId:u,stepId:O,stepKey:l,name:p,ts:Date.now(),timeoutMs:H,attempt:_,...r&&{metadata:r},diagnostics:j(g,o.errorMeta,"timeout",_)}),c({type:"step_success",workflowId:u,stepId:O,stepKey:l,name:p,description:w,ts:Date.now(),durationMs:performance.now()-R,...r&&{metadata:r}}),m&&c({type:"step_complete",workflowId:u,stepKey:m,name:p,description:w,ts:Date.now(),durationMs:performance.now()-R,result:v(void 0),...r&&{metadata:r}});return}if(X(g))throw c({type:"step_aborted",workflowId:u,stepId:O,stepKey:l,name:p,description:w,ts:Date.now(),durationMs:q,...r&&{metadata:r}}),g;if(Pe(g)){let H=vt(g),Ct=k?.ms??H?.timeoutMs??0;if(c({type:"step_timeout",workflowId:u,stepId:O,stepKey:l,name:p,ts:Date.now(),timeoutMs:Ct,attempt:_,...r&&{metadata:r},diagnostics:j(g,o.errorMeta,"timeout",_)}),_<h.attempts&&h.retryOn(g,_)){let Ee=ye(_,h);c({type:"step_retry",workflowId:u,stepId:O,stepKey:l,name:p,ts:Date.now(),attempt:_+1,maxAttempts:h.attempts,delayMs:Ee,error:g,...r&&{metadata:r},diagnostics:j(g,o.errorMeta,"timeout",_,performance.now()-R)}),h.onRetry(g,_,Ee),await we(Ee);continue}h.attempts>1&&c({type:"step_retries_exhausted",workflowId:u,stepId:O,stepKey:l,name:p,ts:Date.now(),durationMs:performance.now()-R,attempts:_,lastError:g,...r&&{metadata:r},diagnostics:j(g,o.errorMeta,"timeout",_,performance.now()-R)});let de=performance.now()-R;throw c({type:"step_error",workflowId:u,stepId:O,stepKey:l,name:p,description:w,ts:Date.now(),durationMs:de,error:g,...r&&{metadata:r},diagnostics:j(g,o.errorMeta,"timeout",_,de)}),m&&c({type:"step_complete",workflowId:u,stepKey:m,name:p,description:w,ts:Date.now(),durationMs:de,result:A(g,{cause:g}),meta:{origin:"throw",thrown:g},...r&&{metadata:r}}),n?.(g,p,y),U(g,{origin:"throw",thrown:g})}if(_<h.attempts&&h.retryOn(g,_)){let H=ye(_,h);c({type:"step_retry",workflowId:u,stepId:O,stepKey:l,name:p,ts:Date.now(),attempt:_+1,maxAttempts:h.attempts,delayMs:H,error:g,...r&&{metadata:r},diagnostics:j(g,o.errorMeta,"throw",_,performance.now()-R)}),h.onRetry(g,_,H),await we(H);continue}h.attempts>1&&!Pe(g)&&c({type:"step_retries_exhausted",workflowId:u,stepId:O,stepKey:l,name:p,ts:Date.now(),durationMs:performance.now()-R,attempts:_,lastError:g,...r&&{metadata:r},diagnostics:j(g,o.errorMeta,"throw",_,performance.now()-R)});let ce=performance.now()-R,Q;try{Q=N(g)}catch(H){throw J(H)}throw c({type:"step_error",workflowId:u,stepId:O,stepKey:l,name:p,description:w,ts:Date.now(),durationMs:ce,error:Q,...r&&{metadata:r},diagnostics:j(g,o.errorMeta,"throw",_,ce)}),m&&c({type:"step_complete",workflowId:u,stepKey:m,name:p,description:w,ts:Date.now(),durationMs:ce,result:A(Q,{cause:g}),meta:{origin:"throw",thrown:g},...r&&{metadata:r}}),n?.(Q,p,y),U(Q,{origin:"throw",thrown:g})}}let W=Y,pe=performance.now()-R,le=L(W.error,{origin:"result",resultCause:W.cause});throw c({type:"step_error",workflowId:u,stepId:O,stepKey:l,name:p,description:w,ts:Date.now(),durationMs:pe,error:le,...r&&{metadata:r},diagnostics:j(W.error,o.errorMeta,"result",h.attempts,pe)}),m&&c({type:"step_complete",workflowId:u,stepKey:m,name:p,description:w,ts:Date.now(),durationMs:pe,result:W,meta:{origin:"result",resultCause:W.cause},...r&&{metadata:r}}),n?.(le,p,y),U(le,{origin:"result",resultCause:W.cause})})();d.try=(a,E,s)=>{if(typeof a!="string"||a.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 o=s.key??a,r=a,p=a,l="error"in s?()=>s.error:s.onError,m=i;return(async()=>{let w=m?performance.now():0;i&&c({type:"step_start",workflowId:u,stepId:p,stepKey:o,name:r,ts:Date.now()});try{let f=await E(),k=performance.now()-w;return c({type:"step_success",workflowId:u,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:k}),o&&c({type:"step_complete",workflowId:u,stepKey:o,name:r,ts:Date.now(),durationMs:k,result:v(f)}),f}catch(f){let k=l(f),O=performance.now()-w,I=L(k,{origin:"throw",thrown:f});throw c({type:"step_error",workflowId:u,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:O,error:I}),o&&c({type:"step_complete",workflowId:u,stepKey:o,name:r,ts:Date.now(),durationMs:O,result:A(k,{cause:f}),meta:{origin:"throw",thrown:f}}),n?.(I,r,y),U(I,{origin:"throw",thrown:f})}})()},d.fromResult=(a,E,s)=>{if(typeof a!="string"||a.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 o=s.key??a,r=a,p=a,l="error"in s?()=>s.error:s.onError,m=i;return(async()=>{let w=m?performance.now():0;i&&c({type:"step_start",workflowId:u,stepId:p,stepKey:o,name:r,ts:Date.now()});let f=await E();if(f.ok){let k=performance.now()-w;return c({type:"step_success",workflowId:u,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:k}),o&&c({type:"step_complete",workflowId:u,stepKey:o,name:r,ts:Date.now(),durationMs:k,result:v(f.value)}),f.value}else{let k=l(f.error),O=performance.now()-w,I=L(k,{origin:"result",resultCause:f.error});throw c({type:"step_error",workflowId:u,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:O,error:I}),o&&c({type:"step_complete",workflowId:u,stepKey:o,name:r,ts:Date.now(),durationMs:O,result:A(k,{cause:f.error}),meta:{origin:"result",resultCause:f.error}}),n?.(I,r,y),U(I,{origin:"result",resultCause:f.error})}})()},d.fromNullable=(a,E,s,o)=>{if(typeof a!="string"||a.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 d(a,async()=>{let r=await E();return r!=null?v(r):A(s())},o)},d.retry=(a,E,s)=>{if(typeof a!="string"||a.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 d(a,E,{key:s.key??a,retry:{attempts:s.attempts,backoff:s.backoff,initialDelay:s.initialDelay,maxDelay:s.maxDelay,jitter:s.jitter,retryOn:s.retryOn,onRetry:s.onRetry},timeout:s.timeout})},d.withTimeout=(a,E,s)=>{if(typeof a!="string"||a.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 d(a,E,{key:s.key??a,timeout:s})},d.sleep=(a,E,s)=>{if(typeof a!="string"||a.length===0)throw new Error('[awaitly] step.sleep() requires an explicit string ID as the first argument. Example: step.sleep("delay", "5s")');let o=typeof E=="string"?Pt(E):E;if(!o)throw new Error(`step.sleep: invalid duration '${E}'`);let r=o.millis,p=s?.signal;return d(a,async()=>{if(D?.aborted||p?.aborted){let l=new Error("Sleep aborted");throw l.name="AbortError",l}return new Promise((l,m)=>{let w={timeoutId:void 0},f=()=>{w.timeoutId&&clearTimeout(w.timeoutId);let k=new Error("Sleep aborted");k.name="AbortError",m(k)};D?.addEventListener("abort",f,{once:!0}),p?.addEventListener("abort",f,{once:!0}),w.timeoutId=setTimeout(()=>{D?.removeEventListener("abort",f),p?.removeEventListener("abort",f),l(v(void 0))},r)})},{key:s?.key??a,description:s?.description})},d.parallel=((...a)=>{if(typeof a[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=a[0],s=a[1];if(typeof s=="function")return V(E,s);if(s&&typeof s=="object"&&!Array.isArray(s)){let r=F(s);return re(r,{name:E})}throw new TypeError("step.parallel(name, ...): second argument must be a function (array form) or an object of operations (object form).")}),d.race=(a,E)=>{let s=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let o=performance.now(),r=!1,p={scopeId:s,type:"race",winnerId:void 0};P.push(p);let l=()=>{if(r)return;r=!0;let m=P.findIndex(w=>w.scopeId===s);m!==-1&&P.splice(m,1),c({type:"scope_end",workflowId:u,scopeId:s,ts:Date.now(),durationMs:performance.now()-o,winnerId:p.winnerId})};c({type:"scope_start",workflowId:u,scopeId:s,scopeType:"race",name:a,ts:Date.now()});try{let m=await E();if(l(),!m.ok)throw n?.(m.error,a,y),U(m.error,{origin:"result",resultCause:m.cause});return m.value}catch(m){throw l(),m}})()},d.allSettled=(a,E)=>{let s=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let o=performance.now(),r=!1;P.push({scopeId:s,type:"allSettled"});let p=()=>{if(r)return;r=!0;let l=P.findIndex(m=>m.scopeId===s);l!==-1&&P.splice(l,1),c({type:"scope_end",workflowId:u,scopeId:s,ts:Date.now(),durationMs:performance.now()-o})};c({type:"scope_start",workflowId:u,scopeId:s,scopeType:"allSettled",name:a,ts:Date.now()});try{let l=await E();if(p(),!l.ok)throw n?.(l.error,a,y),U(l.error,{origin:"result",resultCause:l.cause});return l.value}catch(l){throw p(),l}})()},d.if=(a,E,s)=>s(),d.label=d.if,d.branch=async(a,E)=>{let{condition:s,then:o,else:r}=E;if(s())return await o();if(r)return await r()},d.arm=(a,E)=>({fn:a,errors:E}),d.forEach=async(a,E,s)=>{let o=[],r=s.maxIterations,p=0,l="run"in s,m=Symbol.asyncIterator in E?E:(async function*(){yield*E})();for await(let w of m){if(r!==void 0&&p>=r)break;let f;l?f=await s.run(w,p):f=await s.item.handler(w,p,d),o.push(f),p++}return o},d.item=a=>({__forEachItemHandler:!0,handler:a}),d.dep=(a,E)=>E,d.run=(a,E,s)=>d(a,()=>E,s),d.workflow=(a,E,s)=>d(a,E,s),d.andThen=(a,E,s,o)=>d(a,()=>s(E),o),d.match=async(a,E,s,o)=>d(a,async()=>{let r=await E;return r.ok?v(await s.ok(r.value)):v(await s.err(r.error,r.cause))},o),d.all=d.parallel,d.map=async(a,E,s,o)=>{let r=o?.concurrency??E.length;return d(a,()=>r>=E.length?ae(E.map((p,l)=>s(p,l))):(async()=>{let p=[];for(let l=0;l<E.length;l+=r){let m=E.slice(l,l+r),w=await ae(m.map((f,k)=>s(f,l+k)));if(!w.ok)return w;p.push(...w.value)}return v(p)})(),{key:o?.key})},d.withFallback=(a,E,s)=>{if(typeof a!="string"||a.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 o=s.key??a,r=a,p=$(o),l=i;return(async()=>{let m=l?performance.now():0;i&&c({type:"step_start",workflowId:u,stepId:p,stepKey:o,name:r,ts:Date.now()});let w;try{w=await E()}catch(R){if(X(R))throw c({type:"step_aborted",workflowId:u,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:performance.now()-m}),R;let M;try{M=N(R)}catch(S){throw J(S)}if(s.on!==void 0&&s.on!==M){let S=performance.now()-m;throw c({type:"step_error",workflowId:u,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:S,error:M}),o&&c({type:"step_complete",workflowId:u,stepKey:o,name:r,ts:Date.now(),durationMs:S,result:A(M,{cause:R}),meta:{origin:"throw",thrown:R}}),n?.(M,r,y),U(M,{origin:"throw",thrown:R})}let x;try{x=await s.fallback()}catch(S){if(X(S))throw c({type:"step_aborted",workflowId:u,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:performance.now()-m}),S;let h;try{h=N(S)}catch(W){throw J(W)}let Y=performance.now()-m;throw c({type:"step_error",workflowId:u,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:Y,error:h}),o&&c({type:"step_complete",workflowId:u,stepKey:o,name:r,ts:Date.now(),durationMs:Y,result:A(h,{cause:S}),meta:{origin:"throw",thrown:S}}),n?.(h,r,y),U(h,{origin:"throw",thrown:S})}if(x.ok){let S=performance.now()-m;return c({type:"step_success",workflowId:u,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:S}),o&&c({type:"step_complete",workflowId:u,stepKey:o,name:r,ts:Date.now(),durationMs:S,result:x,meta:{origin:"fallback",fallbackUsed:!0,fallbackReason:String(M)}}),x.value}else{let S=performance.now()-m,h=L(x.error,{origin:"result",resultCause:x.cause});throw c({type:"step_error",workflowId:u,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:S,error:h}),o&&c({type:"step_complete",workflowId:u,stepKey:o,name:r,ts:Date.now(),durationMs:S,result:x,meta:{origin:"result",resultCause:x.cause}}),n?.(h,r,y),U(h,{origin:"result",resultCause:x.cause})}}if(w.ok){let R=performance.now()-m;return c({type:"step_success",workflowId:u,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:R}),o&&c({type:"step_complete",workflowId:u,stepKey:o,name:r,ts:Date.now(),durationMs:R,result:w}),w.value}let f=w.error;if(s.on!==void 0&&s.on!==f){let R=performance.now()-m,M=L(f,{origin:"result",resultCause:w.cause});throw c({type:"step_error",workflowId:u,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:R,error:M}),o&&c({type:"step_complete",workflowId:u,stepKey:o,name:r,ts:Date.now(),durationMs:R,result:w,meta:{origin:"result",resultCause:w.cause}}),n?.(M,r,y),U(M,{origin:"result",resultCause:w.cause})}let k;try{k=await s.fallback()}catch(R){if(X(R))throw c({type:"step_aborted",workflowId:u,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:performance.now()-m}),R;let M;try{M=N(R)}catch(S){throw J(S)}let x=performance.now()-m;throw c({type:"step_error",workflowId:u,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:x,error:M}),o&&c({type:"step_complete",workflowId:u,stepKey:o,name:r,ts:Date.now(),durationMs:x,result:A(M,{cause:R}),meta:{origin:"throw",thrown:R}}),n?.(M,r,y),U(M,{origin:"throw",thrown:R})}if(k.ok){let R=performance.now()-m;return c({type:"step_success",workflowId:u,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:R}),o&&c({type:"step_complete",workflowId:u,stepKey:o,name:r,ts:Date.now(),durationMs:R,result:k,meta:{origin:"fallback",fallbackUsed:!0,fallbackReason:String(f)}}),k.value}let O=performance.now()-m,I=L(k.error,{origin:"result",resultCause:k.cause});throw c({type:"step_error",workflowId:u,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:O,error:I}),o&&c({type:"step_complete",workflowId:u,stepKey:o,name:r,ts:Date.now(),durationMs:O,result:k,meta:{origin:"result",resultCause:k.cause}}),n?.(I,r,y),U(I,{origin:"result",resultCause:k.cause})})()},d.withResource=(a,E)=>{if(typeof a!="string"||a.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 s=a,o=a,r=$(s),p=i;return(async()=>{let l=p?performance.now():0;i&&c({type:"step_start",workflowId:u,stepId:r,stepKey:s,name:o,ts:Date.now()});let m;try{m=await E.acquire()}catch(x){if(X(x))throw c({type:"step_aborted",workflowId:u,stepId:r,stepKey:s,name:o,ts:Date.now(),durationMs:performance.now()-l}),x;let S;try{S=N(x)}catch(Y){throw J(Y)}let h=performance.now()-l;throw c({type:"step_error",workflowId:u,stepId:r,stepKey:s,name:o,ts:Date.now(),durationMs:h,error:S}),s&&c({type:"step_complete",workflowId:u,stepKey:s,name:o,ts:Date.now(),durationMs:h,result:A(S,{cause:x}),meta:{origin:"throw",thrown:x}}),n?.(S,o,y),U(S,{origin:"throw",thrown:x})}if(!m.ok){let x=performance.now()-l,S=L(m.error,{origin:"result",resultCause:m.cause});throw c({type:"step_error",workflowId:u,stepId:r,stepKey:s,name:o,ts:Date.now(),durationMs:x,error:S}),s&&c({type:"step_complete",workflowId:u,stepKey:s,name:o,ts:Date.now(),durationMs:x,result:m,meta:{origin:"result",resultCause:m.cause}}),n?.(S,o,y),U(S,{origin:"result",resultCause:m.cause})}let w=m.value,f,k,O=!1;try{f=await E.use(w)}catch(x){if(X(x)){try{await E.release(w)}catch(S){console.warn(`[awaitly] step.withResource("${a}"): release threw after earlyExit:`,S)}throw x}k=x,O=!0}try{await E.release(w)}catch(x){console.warn(`[awaitly] step.withResource("${a}"): release threw:`,x)}if(O){let x;try{x=N(k)}catch(h){throw J(h)}let S=performance.now()-l;throw c({type:"step_error",workflowId:u,stepId:r,stepKey:s,name:o,ts:Date.now(),durationMs:S,error:x}),s&&c({type:"step_complete",workflowId:u,stepKey:s,name:o,ts:Date.now(),durationMs:S,result:A(x,{cause:k}),meta:{origin:"throw",thrown:k}}),n?.(x,o,y),U(x,{origin:"throw",thrown:k})}let I=f;if(I.ok){let x=performance.now()-l;return c({type:"step_success",workflowId:u,stepId:r,stepKey:s,name:o,ts:Date.now(),durationMs:x}),s&&c({type:"step_complete",workflowId:u,stepKey:s,name:o,ts:Date.now(),durationMs:x,result:I}),I.value}let R=performance.now()-l,M=L(I.error,{origin:"result",resultCause:I.cause});throw c({type:"step_error",workflowId:u,stepId:r,stepKey:s,name:o,ts:Date.now(),durationMs:R,error:M}),s&&c({type:"step_complete",workflowId:u,stepKey:s,name:o,ts:Date.now(),durationMs:R,result:I,meta:{origin:"result",resultCause:I.cause}}),n?.(M,o,y),U(M,{origin:"result",resultCause:I.cause})})()};let B=await e({step:d});if(process.env.NODE_ENV!=="production"&&B!==null&&typeof B=="object"&&"ok"in B&&typeof B.ok=="boolean"){let a=B;(a.ok===!0&&"value"in a||a.ok===!1&&"error"in a)&&console.warn(`awaitly: Workflow executor returned a Result-like object. Return raw values, not ok() or err().
|
|
1
|
+
"use strict";var Ee=Object.defineProperty;var It=Object.getOwnPropertyDescriptor;var Dt=Object.getOwnPropertyNames;var Ut=Object.prototype.hasOwnProperty;var Nt=(e,t)=>{for(var r in t)Ee(e,r,{get:t[r],enumerable:!0})},Kt=(e,t,r,u)=>{if(t&&typeof t=="object"||typeof t=="function")for(let f of Dt(t))!Ut.call(e,f)&&f!==r&&Ee(e,f,{get:()=>t[f],enumerable:!(u=It(t,f))||u.enumerable});return e};var jt=e=>Kt(Ee({},"__esModule",{value:!0}),e);var Jt={};Nt(Jt,{AWAITLY_CANCELLED:()=>$e,AWAITLY_TIMEOUT:()=>We,AWAITLY_UNEXPECTED:()=>Ve,Match:()=>_t,PROMISE_REJECTED:()=>He,TaggedError:()=>K,UnexpectedError:()=>z,UnwrapError:()=>re,all:()=>xt,allAsync:()=>ae,allSettled:()=>ht,allSettledAsync:()=>Ot,andThen:()=>lt,any:()=>bt,anyAsync:()=>St,bimap:()=>wt,err:()=>_,exhaustive:()=>Ce,extractErrorTag:()=>ge,extractStepMetadata:()=>ke,from:()=>ot,fromNullable:()=>it,fromPromise:()=>st,hydrate:()=>Re,isErr:()=>Je,isOk:()=>Ye,isOneOf:()=>Ae,isSerializedResult:()=>Rt,isTag:()=>Oe,isUnexpectedError:()=>fe,lookupErrorClassification:()=>Te,map:()=>ut,mapError:()=>ct,mapErrorTry:()=>yt,mapTry:()=>Et,match:()=>pt,matchError:()=>ze,matchOrElse:()=>ue,matchTag:()=>xe,matchTags:()=>he,matchValue:()=>_e,matchWhen:()=>Se,ok:()=>v,orElse:()=>ft,orElseAsync:()=>gt,orElseValue:()=>be,partition:()=>Ct,recover:()=>Tt,recoverAsync:()=>kt,runOrNull:()=>rt,runOrThrow:()=>et,runOrThrowAsync:()=>tt,runOrUndefined:()=>nt,tags:()=>qe,tap:()=>dt,tapError:()=>mt,tryAsync:()=>at,unwrap:()=>ie,unwrapOr:()=>Qe,unwrapOrElse:()=>Ze});module.exports=jt(Jt);var te=class extends Error{_tag};function K(e,t){return class extends te{_tag=e;constructor(r,u){let f=t?.message?t.message(r??{}):e;if(super(f),this.name=e,Object.setPrototypeOf(this,new.target.prototype),r&&typeof r=="object"){let{_tag:h,name:b,message:y,stack:D,...i}=r,N=Object.prototype.hasOwnProperty.call(i,"cause"),M=N?i.cause:void 0;N&&delete i.cause;let j=u?.cause!==void 0;if(N&&j)throw new TypeError("TaggedError: cannot provide 'cause' in props when also setting ErrorOptions.cause");Object.assign(this,i),N&&(this.cause=M),j&&(this.cause=u?.cause)}else u?.cause!==void 0&&(this.cause=u.cause)}}}Object.defineProperty(K,Symbol.hasInstance,{value:e=>e instanceof te});(f=>{function e(h){return h instanceof Error}f.isError=e;function t(h){return h instanceof te}f.isTaggedError=t;function r(h,b){let y=h._tag,D=b[y];return D(h)}f.match=r;function u(h,b,y){let D=h._tag,i=b[D];return i?i(h):y(h)}f.matchPartial=u})(K||={});var Me=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`}){},Pe=class extends K("RetryExhaustedError",{message:t=>t.operation?`RetryExhaustedError: ${t.operation} failed after ${t.attempts} attempts`:`RetryExhaustedError: Operation failed after ${t.attempts} attempts`}){},ve=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`:""}`}){},Ie=class extends K("CircuitBreakerOpenError",{message:t=>`CircuitBreakerOpenError: Circuit ${t.circuitName} is ${t.state??"OPEN"}${t.retryAfterMs?`, retry after ${Math.ceil(t.retryAfterMs/1e3)}s`:""}`}){},De=class extends K("ValidationError",{message:t=>`ValidationError: Invalid ${t.field} - ${t.reason}`}){},Ue=class extends K("NotFoundError",{message:t=>t.id?`NotFoundError: ${t.resource} with id ${t.id} not found`:`NotFoundError: ${t.resource} not found`}){},Ne=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"}){},Ke=class extends K("NetworkError",{message:t=>t.url?`NetworkError: ${t.reason} (${t.url})`:`NetworkError: ${t.reason}`}){},je=class extends K("CompensationError",{message:t=>`CompensationError: Failed to compensate step ${t.step}`}){},z=class extends K("UnexpectedError",{message:t=>`UnexpectedError: ${t.cause instanceof Error?t.cause.message:String(t.cause??"unknown")}`}){};function Ft(e){let t=e.trim().match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h|d)$/i);if(!t)return;let r=parseFloat(t[1]),u=t[2].toLowerCase();return{_tag:"Duration",millis:r*({ms:1,s:1e3,m:6e4,h:36e5,d:864e5}[u]??1)}}var He="PROMISE_REJECTED",Ve="AWAITLY_UNEXPECTED",$e="AWAITLY_CANCELLED",We="AWAITLY_TIMEOUT",qe=(...e)=>e;function Bt(e){return new z({cause:e})}function v(e){return{ok:!0,value:e}}function _(e,t){let r=t?.cause;return{ok:!1,error:e,...r!==void 0?{cause:r}:{}}}var Ye=e=>e.ok,Je=e=>!e.ok,fe=e=>e instanceof z||typeof e=="object"&&e!==null&&"_tag"in e&&e._tag==="UnexpectedError";function ze(e,t){return fe(e)?t.UnexpectedError(e):t[e](e)}function ge(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 r=t._tag.trim();if(r)return r}if(typeof t.tag=="string"){let r=t.tag.trim();if(r)return r}if(typeof t.code=="string"){let r=t.code.trim();if(r)return r}else if(typeof t.code=="number")return String(t.code);if(e instanceof Error&&e.name){let r=e.name.trim();if(r)return r}}return"unknown"}function Te(e,t){if(!(!t||!e))return t[e]}function ke(e){let{intent:t,domain:r,owner:u,tags:f,stateChanges:h,emits:b,calls:y}=e;if(!t&&!r&&!u&&!f?.length&&!h?.length&&!b?.length&&!y?.length)return;let D={};return t&&(D.intent=t),r&&(D.domain=r),u&&(D.owner=u),f?.length&&(D.tags=f),h?.length&&(D.stateChanges=h),b?.length&&(D.emits=b),y?.length&&(D.calls=y),D}function F(e,t,r,u,f){let h=ge(e),b=Te(h,t),y={tag:h,origin:r};return b!==void 0&&(y.classification=b),u!==void 0&&(y.attempt=u),f!==void 0&&(y.cumulativeDurationMs=f),y}var Z=Symbol.for("step_timeout_marker");function Fe(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:Z in e}function Lt(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(Z in e)return e[Z]}}var Xe=Symbol("early-exit");function Ht(e,t){return{[Xe]:!0,error:e,meta:t}}function Vt(e){return typeof e=="object"&&e!==null&&e[Xe]===!0}var Ge=Symbol("mapper-exception");function G(e){return{[Ge]:!0,thrown:e}}function $t(e){return typeof e=="object"&&e!==null&&e[Ge]===!0}function ye(e,t){let{backoff:r,initialDelay:u,maxDelay:f,jitter:h}=t,b;switch(r){case"fixed":b=u;break;case"linear":b=u*e;break;case"exponential":b=u*Math.pow(2,e-1);break}if(b=Math.min(b,f),h){let y=b*.25*Math.random();b=b+y}return Math.floor(b)}function we(e){return new Promise(t=>setTimeout(t,e))}var Be=Symbol("timeout"),se=Symbol("timeout-option");function Wt(e){return typeof e=="object"&&e!==null&&e[se]===!0}async function qt(e,t,r,u){let f=new AbortController,h=t.onTimeout??"error",b=()=>typeof h=="function"?h({name:r.name,key:r.key,ms:t.ms}):t.error??{type:"STEP_TIMEOUT",stepName:r.name,stepKey:r.key,timeoutMs:t.ms,attempt:r.attempt},y;u?.aborted&&f.abort(u.reason);let D;u&&!u.aborted&&(D=()=>f.abort(u.reason),u.addEventListener("abort",D,{once:!0}));let i=new Promise((M,j)=>{y=setTimeout(()=>{if(h!=="disconnect"&&f.abort(),h==="option"){j({[se]:!0,ms:t.ms});return}j({[Be]:!0,error:b()})},t.ms)}),N;t.signal?N=Promise.resolve(e(f.signal)):N=Promise.resolve(e());try{return await Promise.race([N,i])}catch(M){if(typeof M=="object"&&M!==null&&M[se]===!0)throw{[se]:!0,ms:t.ms};if(typeof M=="object"&&M!==null&&M[Be]===!0){h==="disconnect"&&N.catch(()=>{});let j=M.error;if(typeof j=="object"&&j!==null&&j.type!=="STEP_TIMEOUT"){let X={timeoutMs:t.ms,stepName:r.name,stepKey:r.key,attempt:r.attempt};Z in j?j[Z]=X:Object.defineProperty(j,Z,{value:X,enumerable:!1,writable:!0,configurable:!1})}throw j}throw M}finally{clearTimeout(y),D&&u&&u.removeEventListener("abort",D)}}var Q={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function Le(e,t){let{onError:r,onEvent:u,catchUnexpected:f,workflowId:h,workflowName:b,context:y,_workflowSignal:D}=t&&typeof t=="object"?t:{},i=h??crypto.randomUUID(),N=f??Bt,M=[],j=0,X=d=>d??`step_${++j}`,l=d=>{let B=d.context!==void 0||y===void 0?d:{...d,context:y},$=b!==void 0&&B.workflowName===void 0?{...B,workflowName:b}:B;if($.type==="step_success"){let ne=$.stepId;for(let oe=M.length-1;oe>=0;oe--){let L=M[oe];if(L.type==="race"&&!L.winnerId){L.winnerId=ne;break}}}u?.($,y)},U=Ht,Y=d=>Vt(d),V=(d,B)=>d,Mt=d=>typeof d=="function"?!1:!!(d&&typeof d=="object"&&"ok"in d||d&&typeof d=="object"&&"then"in d&&typeof d.then=="function");try{let B=function(a){let m={};for(let[s,o]of Object.entries(a))if(typeof o=="function")m[s]=o;else if(o&&typeof o=="object"&&"fn"in o)m[s]=o.fn;else throw new TypeError(`step.parallel: operation "${s}" must be a function or { fn, errors? } object`);return m},$=function(a,m){let s=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let o=performance.now(),n=!1;M.push({scopeId:s,type:"parallel"});let c=()=>{if(n)return;n=!0;let p=M.findIndex(E=>E.scopeId===s);p!==-1&&M.splice(p,1),l({type:"scope_end",workflowId:i,scopeId:s,ts:Date.now(),durationMs:performance.now()-o})};l({type:"scope_start",workflowId:i,scopeId:s,scopeType:"parallel",name:a,ts:Date.now()});try{let p=await m();if(c(),!p.ok)throw r?.(p.error,a,y),U(p.error,{origin:"result",resultCause:p.cause});return p.value}catch(p){throw c(),p}})()},ne=function(a,m){let s=Object.keys(a),o=m.name??`Parallel(${s.join(", ")})`,n=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let c=performance.now(),p=!1;M.push({scopeId:n,type:"parallel"});let E=()=>{if(p)return;p=!0;let w=M.findIndex(g=>g.scopeId===n);w!==-1&&M.splice(w,1),l({type:"scope_end",workflowId:i,scopeId:n,ts:Date.now(),durationMs:performance.now()-c})};l({type:"scope_start",workflowId:i,scopeId:n,scopeType:"parallel",name:o,ts:Date.now()});try{let w=await new Promise(k=>{if(s.length===0){k([]);return}let O=!1,I=s.length,R=new Array(s.length);for(let P=0;P<s.length;P++){let x=s[P],S=P;Promise.resolve(a[x]()).catch(C=>_({type:"PROMISE_REJECTED",cause:C},{cause:{type:"PROMISE_REJECTION",reason:C}})).then(C=>{if(!O){if(!C.ok){O=!0,k([{key:x,result:C}]);return}R[S]={key:x,result:C},I--,I===0&&k(R)}})}});E();let g={};for(let{key:k,result:O}of w){if(!O.ok)throw r?.(O.error,k,y),U(O.error,{origin:"result",resultCause:O.cause});g[k]=O.value}return g}catch(w){throw E(),w}})()};var zt=B,Xt=$,Gt=ne;let d=(a,m,s)=>(async()=>{if(typeof a!="string"||a.length===0)throw new Error('[awaitly] step() requires an explicit string ID as the first argument. Example: step("fetchUser", () => fetchUser(id))');let o=s??{},n=ke(o),c=a,p=o.key??a,E=o.key??a,{description:w,retry:g,timeout:k}=o,O=X(p),I=u,R=I?performance.now():0,x=Mt(m)?()=>m:m,C={attempts:Math.max(1,g?.attempts??1),backoff:g?.backoff??Q.backoff,initialDelay:g?.initialDelay??Q.initialDelay,maxDelay:g?.maxDelay??Q.maxDelay,jitter:g?.jitter??Q.jitter,retryOn:g?.retryOn??Q.retryOn,onRetry:g?.onRetry??Q.onRetry};u&&l({type:"step_start",workflowId:i,stepId:O,stepKey:p,name:c,description:w,ts:Date.now(),...n&&{metadata:n}});let J;for(let A=1;A<=C.attempts;A++){let Pt=I?performance.now():0;try{let T;if(k?T=await qt(x,k,{name:c,key:p,attempt:A},D):T=await x(),T.ok){let q=performance.now()-R;return l({type:"step_success",workflowId:i,stepId:O,stepKey:p,name:c,description:w,ts:Date.now(),durationMs:q,...n&&{metadata:n}}),E&&l({type:"step_complete",workflowId:i,stepKey:E,name:c,description:w,ts:Date.now(),durationMs:q,result:T,...n&&{metadata:n}}),T.value}if(J=T,A<C.attempts&&C.retryOn(T.error,A)){let q=ye(A,C);l({type:"step_retry",workflowId:i,stepId:O,stepKey:p,name:c,ts:Date.now(),attempt:A+1,maxAttempts:C.attempts,delayMs:q,error:T.error,...n&&{metadata:n},diagnostics:F(T.error,o.errorMeta,"result",A,performance.now()-R)}),C.onRetry(T.error,A,q),await we(q);continue}C.attempts>1&&l({type:"step_retries_exhausted",workflowId:i,stepId:O,stepKey:p,name:c,ts:Date.now(),durationMs:performance.now()-R,attempts:A,lastError:T.error,...n&&{metadata:n},diagnostics:F(T.error,o.errorMeta,"result",A,performance.now()-R)});break}catch(T){let q=performance.now()-Pt;if(Wt(T)){let H=T.ms;l({type:"step_timeout",workflowId:i,stepId:O,stepKey:p,name:c,ts:Date.now(),timeoutMs:H,attempt:A,...n&&{metadata:n},diagnostics:F(T,o.errorMeta,"timeout",A)}),l({type:"step_success",workflowId:i,stepId:O,stepKey:p,name:c,description:w,ts:Date.now(),durationMs:performance.now()-R,...n&&{metadata:n}}),E&&l({type:"step_complete",workflowId:i,stepKey:E,name:c,description:w,ts:Date.now(),durationMs:performance.now()-R,result:v(void 0),...n&&{metadata:n}});return}if(Y(T))throw l({type:"step_aborted",workflowId:i,stepId:O,stepKey:p,name:c,description:w,ts:Date.now(),durationMs:q,...n&&{metadata:n}}),T;if(Fe(T)){let H=Lt(T),vt=k?.ms??H?.timeoutMs??0;if(l({type:"step_timeout",workflowId:i,stepId:O,stepKey:p,name:c,ts:Date.now(),timeoutMs:vt,attempt:A,...n&&{metadata:n},diagnostics:F(T,o.errorMeta,"timeout",A)}),A<C.attempts&&C.retryOn(T,A)){let me=ye(A,C);l({type:"step_retry",workflowId:i,stepId:O,stepKey:p,name:c,ts:Date.now(),attempt:A+1,maxAttempts:C.attempts,delayMs:me,error:T,...n&&{metadata:n},diagnostics:F(T,o.errorMeta,"timeout",A,performance.now()-R)}),C.onRetry(T,A,me),await we(me);continue}C.attempts>1&&l({type:"step_retries_exhausted",workflowId:i,stepId:O,stepKey:p,name:c,ts:Date.now(),durationMs:performance.now()-R,attempts:A,lastError:T,...n&&{metadata:n},diagnostics:F(T,o.errorMeta,"timeout",A,performance.now()-R)});let de=performance.now()-R;throw l({type:"step_error",workflowId:i,stepId:O,stepKey:p,name:c,description:w,ts:Date.now(),durationMs:de,error:T,...n&&{metadata:n},diagnostics:F(T,o.errorMeta,"timeout",A,de)}),E&&l({type:"step_complete",workflowId:i,stepKey:E,name:c,description:w,ts:Date.now(),durationMs:de,result:_(T,{cause:T}),meta:{origin:"throw",thrown:T},...n&&{metadata:n}}),r?.(T,c,y),U(T,{origin:"throw",thrown:T})}if(A<C.attempts&&C.retryOn(T,A)){let H=ye(A,C);l({type:"step_retry",workflowId:i,stepId:O,stepKey:p,name:c,ts:Date.now(),attempt:A+1,maxAttempts:C.attempts,delayMs:H,error:T,...n&&{metadata:n},diagnostics:F(T,o.errorMeta,"throw",A,performance.now()-R)}),C.onRetry(T,A,H),await we(H);continue}C.attempts>1&&!Fe(T)&&l({type:"step_retries_exhausted",workflowId:i,stepId:O,stepKey:p,name:c,ts:Date.now(),durationMs:performance.now()-R,attempts:A,lastError:T,...n&&{metadata:n},diagnostics:F(T,o.errorMeta,"throw",A,performance.now()-R)});let le=performance.now()-R,ee;try{ee=N(T)}catch(H){throw G(H)}throw l({type:"step_error",workflowId:i,stepId:O,stepKey:p,name:c,description:w,ts:Date.now(),durationMs:le,error:ee,...n&&{metadata:n},diagnostics:F(T,o.errorMeta,"throw",A,le)}),E&&l({type:"step_complete",workflowId:i,stepKey:E,name:c,description:w,ts:Date.now(),durationMs:le,result:_(ee,{cause:T}),meta:{origin:"throw",thrown:T},...n&&{metadata:n}}),r?.(ee,c,y),U(ee,{origin:"throw",thrown:T})}}let W=J,ce=performance.now()-R,pe=V(W.error,{origin:"result",resultCause:W.cause});throw l({type:"step_error",workflowId:i,stepId:O,stepKey:p,name:c,description:w,ts:Date.now(),durationMs:ce,error:pe,...n&&{metadata:n},diagnostics:F(W.error,o.errorMeta,"result",C.attempts,ce)}),E&&l({type:"step_complete",workflowId:i,stepKey:E,name:c,description:w,ts:Date.now(),durationMs:ce,result:W,meta:{origin:"result",resultCause:W.cause},...n&&{metadata:n}}),r?.(pe,c,y),U(pe,{origin:"result",resultCause:W.cause})})();d.try=(a,m,s)=>{if(typeof a!="string"||a.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 o=s.key??a,n=a,c=a,p="error"in s?()=>s.error:s.onError,E=u;return(async()=>{let w=E?performance.now():0;u&&l({type:"step_start",workflowId:i,stepId:c,stepKey:o,name:n,ts:Date.now()});try{let g=await m(),k=performance.now()-w;return l({type:"step_success",workflowId:i,stepId:c,stepKey:o,name:n,ts:Date.now(),durationMs:k}),o&&l({type:"step_complete",workflowId:i,stepKey:o,name:n,ts:Date.now(),durationMs:k,result:v(g)}),g}catch(g){let k=p(g),O=performance.now()-w,I=V(k,{origin:"throw",thrown:g});throw l({type:"step_error",workflowId:i,stepId:c,stepKey:o,name:n,ts:Date.now(),durationMs:O,error:I}),o&&l({type:"step_complete",workflowId:i,stepKey:o,name:n,ts:Date.now(),durationMs:O,result:_(k,{cause:g}),meta:{origin:"throw",thrown:g}}),r?.(I,n,y),U(I,{origin:"throw",thrown:g})}})()},d.fromResult=(a,m,s)=>{if(typeof a!="string"||a.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 o=s.key??a,n=a,c=a,p="error"in s?()=>s.error:s.onError,E=u;return(async()=>{let w=E?performance.now():0;u&&l({type:"step_start",workflowId:i,stepId:c,stepKey:o,name:n,ts:Date.now()});let g=await m();if(g.ok){let k=performance.now()-w;return l({type:"step_success",workflowId:i,stepId:c,stepKey:o,name:n,ts:Date.now(),durationMs:k}),o&&l({type:"step_complete",workflowId:i,stepKey:o,name:n,ts:Date.now(),durationMs:k,result:v(g.value)}),g.value}else{let k=p(g.error),O=performance.now()-w,I=V(k,{origin:"result",resultCause:g.error});throw l({type:"step_error",workflowId:i,stepId:c,stepKey:o,name:n,ts:Date.now(),durationMs:O,error:I}),o&&l({type:"step_complete",workflowId:i,stepKey:o,name:n,ts:Date.now(),durationMs:O,result:_(k,{cause:g.error}),meta:{origin:"result",resultCause:g.error}}),r?.(I,n,y),U(I,{origin:"result",resultCause:g.error})}})()},d.fromNullable=(a,m,s,o)=>{if(typeof a!="string"||a.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 d(a,async()=>{let n=await m();return n!=null?v(n):_(s())},o)},d.retry=(a,m,s)=>{if(typeof a!="string"||a.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 d(a,m,{key:s.key??a,retry:{attempts:s.attempts,backoff:s.backoff,initialDelay:s.initialDelay,maxDelay:s.maxDelay,jitter:s.jitter,retryOn:s.retryOn,onRetry:s.onRetry},timeout:s.timeout})},d.withTimeout=(a,m,s)=>{if(typeof a!="string"||a.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 d(a,m,{key:s.key??a,timeout:s})},d.sleep=(a,m,s)=>{if(typeof a!="string"||a.length===0)throw new Error('[awaitly] step.sleep() requires an explicit string ID as the first argument. Example: step.sleep("delay", "5s")');let o=typeof m=="string"?Ft(m):m;if(!o)throw new Error(`step.sleep: invalid duration '${m}'`);let n=o.millis,c=s?.signal;return d(a,async()=>{if(D?.aborted||c?.aborted){let p=new Error("Sleep aborted");throw p.name="AbortError",p}return new Promise((p,E)=>{let w={timeoutId:void 0},g=()=>{w.timeoutId&&clearTimeout(w.timeoutId);let k=new Error("Sleep aborted");k.name="AbortError",E(k)};D?.addEventListener("abort",g,{once:!0}),c?.addEventListener("abort",g,{once:!0}),w.timeoutId=setTimeout(()=>{D?.removeEventListener("abort",g),c?.removeEventListener("abort",g),p(v(void 0))},n)})},{key:s?.key??a,description:s?.description})},d.parallel=((...a)=>{if(typeof a[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 m=a[0],s=a[1];if(typeof s=="function")return $(m,s);if(s&&typeof s=="object"&&!Array.isArray(s)){let n=B(s);return ne(n,{name:m})}throw new TypeError("step.parallel(name, ...): second argument must be a function (array form) or an object of operations (object form).")}),d.race=(a,m)=>{let s=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let o=performance.now(),n=!1,c={scopeId:s,type:"race",winnerId:void 0};M.push(c);let p=()=>{if(n)return;n=!0;let E=M.findIndex(w=>w.scopeId===s);E!==-1&&M.splice(E,1),l({type:"scope_end",workflowId:i,scopeId:s,ts:Date.now(),durationMs:performance.now()-o,winnerId:c.winnerId})};l({type:"scope_start",workflowId:i,scopeId:s,scopeType:"race",name:a,ts:Date.now()});try{let E=await m();if(p(),!E.ok)throw r?.(E.error,a,y),U(E.error,{origin:"result",resultCause:E.cause});return E.value}catch(E){throw p(),E}})()},d.allSettled=(a,m)=>{let s=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let o=performance.now(),n=!1;M.push({scopeId:s,type:"allSettled"});let c=()=>{if(n)return;n=!0;let p=M.findIndex(E=>E.scopeId===s);p!==-1&&M.splice(p,1),l({type:"scope_end",workflowId:i,scopeId:s,ts:Date.now(),durationMs:performance.now()-o})};l({type:"scope_start",workflowId:i,scopeId:s,scopeType:"allSettled",name:a,ts:Date.now()});try{let p=await m();if(c(),!p.ok)throw r?.(p.error,a,y),U(p.error,{origin:"result",resultCause:p.cause});return p.value}catch(p){throw c(),p}})()},d.if=(a,m,s)=>s(),d.label=d.if,d.branch=async(a,m)=>{let{condition:s,then:o,else:n}=m;if(s())return await o();if(n)return await n()},d.arm=(a,m)=>({fn:a,errors:m}),d.forEach=async(a,m,s)=>{let o=[],n=s.maxIterations,c=0,p="run"in s,E=Symbol.asyncIterator in m?m:(async function*(){yield*m})();for await(let w of E){if(n!==void 0&&c>=n)break;let g;p?g=await s.run(w,c):g=await s.item.handler(w,c,d),o.push(g),c++}return o},d.item=a=>({__forEachItemHandler:!0,handler:a}),d.dep=(a,m)=>m,d.run=(a,m,s)=>d(a,()=>m,s),d.workflow=(a,m,s)=>d(a,m,s),d.andThen=(a,m,s,o)=>d(a,()=>s(m),o),d.match=async(a,m,s,o)=>d(a,async()=>{let n=await m;return n.ok?v(await s.ok(n.value)):v(await s.err(n.error,n.cause))},o),d.all=d.parallel,d.map=async(a,m,s,o)=>{let n=o?.concurrency??m.length;return d(a,()=>n>=m.length?ae(m.map((c,p)=>s(c,p))):(async()=>{let c=[];for(let p=0;p<m.length;p+=n){let E=m.slice(p,p+n),w=await ae(E.map((g,k)=>s(g,p+k)));if(!w.ok)return w;c.push(...w.value)}return v(c)})(),{key:o?.key})},d.withFallback=(a,m,s)=>{if(typeof a!="string"||a.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 o=s.key??a,n=a,c=X(o),p=u;return(async()=>{let E=p?performance.now():0;u&&l({type:"step_start",workflowId:i,stepId:c,stepKey:o,name:n,ts:Date.now()});let w;try{w=await m()}catch(R){if(Y(R))throw l({type:"step_aborted",workflowId:i,stepId:c,stepKey:o,name:n,ts:Date.now(),durationMs:performance.now()-E}),R;let P;try{P=N(R)}catch(S){throw G(S)}if(s.on!==void 0&&s.on!==P){let S=performance.now()-E;throw l({type:"step_error",workflowId:i,stepId:c,stepKey:o,name:n,ts:Date.now(),durationMs:S,error:P}),o&&l({type:"step_complete",workflowId:i,stepKey:o,name:n,ts:Date.now(),durationMs:S,result:_(P,{cause:R}),meta:{origin:"throw",thrown:R}}),r?.(P,n,y),U(P,{origin:"throw",thrown:R})}let x;try{x=await s.fallback()}catch(S){if(Y(S))throw l({type:"step_aborted",workflowId:i,stepId:c,stepKey:o,name:n,ts:Date.now(),durationMs:performance.now()-E}),S;let C;try{C=N(S)}catch(W){throw G(W)}let J=performance.now()-E;throw l({type:"step_error",workflowId:i,stepId:c,stepKey:o,name:n,ts:Date.now(),durationMs:J,error:C}),o&&l({type:"step_complete",workflowId:i,stepKey:o,name:n,ts:Date.now(),durationMs:J,result:_(C,{cause:S}),meta:{origin:"throw",thrown:S}}),r?.(C,n,y),U(C,{origin:"throw",thrown:S})}if(x.ok){let S=performance.now()-E;return l({type:"step_success",workflowId:i,stepId:c,stepKey:o,name:n,ts:Date.now(),durationMs:S}),o&&l({type:"step_complete",workflowId:i,stepKey:o,name:n,ts:Date.now(),durationMs:S,result:x,meta:{origin:"fallback",fallbackUsed:!0,fallbackReason:String(P)}}),x.value}else{let S=performance.now()-E,C=V(x.error,{origin:"result",resultCause:x.cause});throw l({type:"step_error",workflowId:i,stepId:c,stepKey:o,name:n,ts:Date.now(),durationMs:S,error:C}),o&&l({type:"step_complete",workflowId:i,stepKey:o,name:n,ts:Date.now(),durationMs:S,result:x,meta:{origin:"result",resultCause:x.cause}}),r?.(C,n,y),U(C,{origin:"result",resultCause:x.cause})}}if(w.ok){let R=performance.now()-E;return l({type:"step_success",workflowId:i,stepId:c,stepKey:o,name:n,ts:Date.now(),durationMs:R}),o&&l({type:"step_complete",workflowId:i,stepKey:o,name:n,ts:Date.now(),durationMs:R,result:w}),w.value}let g=w.error;if(s.on!==void 0&&s.on!==g){let R=performance.now()-E,P=V(g,{origin:"result",resultCause:w.cause});throw l({type:"step_error",workflowId:i,stepId:c,stepKey:o,name:n,ts:Date.now(),durationMs:R,error:P}),o&&l({type:"step_complete",workflowId:i,stepKey:o,name:n,ts:Date.now(),durationMs:R,result:w,meta:{origin:"result",resultCause:w.cause}}),r?.(P,n,y),U(P,{origin:"result",resultCause:w.cause})}let k;try{k=await s.fallback()}catch(R){if(Y(R))throw l({type:"step_aborted",workflowId:i,stepId:c,stepKey:o,name:n,ts:Date.now(),durationMs:performance.now()-E}),R;let P;try{P=N(R)}catch(S){throw G(S)}let x=performance.now()-E;throw l({type:"step_error",workflowId:i,stepId:c,stepKey:o,name:n,ts:Date.now(),durationMs:x,error:P}),o&&l({type:"step_complete",workflowId:i,stepKey:o,name:n,ts:Date.now(),durationMs:x,result:_(P,{cause:R}),meta:{origin:"throw",thrown:R}}),r?.(P,n,y),U(P,{origin:"throw",thrown:R})}if(k.ok){let R=performance.now()-E;return l({type:"step_success",workflowId:i,stepId:c,stepKey:o,name:n,ts:Date.now(),durationMs:R}),o&&l({type:"step_complete",workflowId:i,stepKey:o,name:n,ts:Date.now(),durationMs:R,result:k,meta:{origin:"fallback",fallbackUsed:!0,fallbackReason:String(g)}}),k.value}let O=performance.now()-E,I=V(k.error,{origin:"result",resultCause:k.cause});throw l({type:"step_error",workflowId:i,stepId:c,stepKey:o,name:n,ts:Date.now(),durationMs:O,error:I}),o&&l({type:"step_complete",workflowId:i,stepKey:o,name:n,ts:Date.now(),durationMs:O,result:k,meta:{origin:"result",resultCause:k.cause}}),r?.(I,n,y),U(I,{origin:"result",resultCause:k.cause})})()},d.withResource=(a,m)=>{if(typeof a!="string"||a.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 s=a,o=a,n=X(s),c=u;return(async()=>{let p=c?performance.now():0;u&&l({type:"step_start",workflowId:i,stepId:n,stepKey:s,name:o,ts:Date.now()});let E;try{E=await m.acquire()}catch(x){if(Y(x))throw l({type:"step_aborted",workflowId:i,stepId:n,stepKey:s,name:o,ts:Date.now(),durationMs:performance.now()-p}),x;let S;try{S=N(x)}catch(J){throw G(J)}let C=performance.now()-p;throw l({type:"step_error",workflowId:i,stepId:n,stepKey:s,name:o,ts:Date.now(),durationMs:C,error:S}),s&&l({type:"step_complete",workflowId:i,stepKey:s,name:o,ts:Date.now(),durationMs:C,result:_(S,{cause:x}),meta:{origin:"throw",thrown:x}}),r?.(S,o,y),U(S,{origin:"throw",thrown:x})}if(!E.ok){let x=performance.now()-p,S=V(E.error,{origin:"result",resultCause:E.cause});throw l({type:"step_error",workflowId:i,stepId:n,stepKey:s,name:o,ts:Date.now(),durationMs:x,error:S}),s&&l({type:"step_complete",workflowId:i,stepKey:s,name:o,ts:Date.now(),durationMs:x,result:E,meta:{origin:"result",resultCause:E.cause}}),r?.(S,o,y),U(S,{origin:"result",resultCause:E.cause})}let w=E.value,g,k,O=!1;try{g=await m.use(w)}catch(x){if(Y(x)){try{await m.release(w)}catch(S){console.warn(`[awaitly] step.withResource("${a}"): release threw after earlyExit:`,S)}throw x}k=x,O=!0}try{await m.release(w)}catch(x){console.warn(`[awaitly] step.withResource("${a}"): release threw:`,x)}if(O){let x;try{x=N(k)}catch(C){throw G(C)}let S=performance.now()-p;throw l({type:"step_error",workflowId:i,stepId:n,stepKey:s,name:o,ts:Date.now(),durationMs:S,error:x}),s&&l({type:"step_complete",workflowId:i,stepKey:s,name:o,ts:Date.now(),durationMs:S,result:_(x,{cause:k}),meta:{origin:"throw",thrown:k}}),r?.(x,o,y),U(x,{origin:"throw",thrown:k})}let I=g;if(I.ok){let x=performance.now()-p;return l({type:"step_success",workflowId:i,stepId:n,stepKey:s,name:o,ts:Date.now(),durationMs:x}),s&&l({type:"step_complete",workflowId:i,stepKey:s,name:o,ts:Date.now(),durationMs:x,result:I}),I.value}let R=performance.now()-p,P=V(I.error,{origin:"result",resultCause:I.cause});throw l({type:"step_error",workflowId:i,stepId:n,stepKey:s,name:o,ts:Date.now(),durationMs:R,error:P}),s&&l({type:"step_complete",workflowId:i,stepKey:s,name:o,ts:Date.now(),durationMs:R,result:I,meta:{origin:"result",resultCause:I.cause}}),r?.(P,o,y),U(P,{origin:"result",resultCause:I.cause})})()};let L=await e({step:d});if(process.env.NODE_ENV!=="production"&&L!==null&&typeof L=="object"&&"ok"in L&&typeof L.ok=="boolean"){let a=L;(a.ok===!0&&"value"in a||a.ok===!1&&"error"in a)&&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 v(
|
|
6
|
+
See: https://jagreehal.github.io/awaitly/guides/troubleshooting/#returning-ok-from-workflow-executor-double-wrapping`)}return v(L)}catch(d){if($t(d))throw d.thrown;if(Y(d)){let $=d.meta.origin==="throw"?d.meta.thrown:d.meta.origin==="result"?d.meta.resultCause:void 0;return _(d.error,{cause:$})}let B=N(d);return r?.(B,"unexpected",y),_(B,{cause:d})}}Le.strict=(e,t)=>Le(e,t);var re=class extends Error{constructor(r,u){super(`Unwrap called on an error result: ${String(r)}`);this.error=r;this.cause=u;this.name="UnwrapError"}},ie=e=>{if(e.ok)return e.value;throw new re(e.error,e.cause)},Qe=(e,t)=>e.ok?e.value:t,Ze=(e,t)=>e.ok?e.value:t(e.error,e.cause),et=e=>ie(e),tt=e=>Promise.resolve(e).then(ie),rt=e=>e.ok?e.value:null,nt=e=>e.ok?e.value:void 0;function ot(e,t){try{return v(e())}catch(r){return t?_(t(r),{cause:r}):_(r)}}async function st(e,t){try{return v(await e)}catch(r){return t?_(t(r),{cause:r}):_(r)}}async function at(e,t){try{return v(await e())}catch(r){return t?_(t(r),{cause:r}):_(r)}}function it(e,t){return e!=null?v(e):_(t())}function ut(e,t){return e.ok?v(t(e.value)):e}function ct(e,t){return e.ok?e:_(t(e.error),{cause:e.cause})}function pt(e,t){return e.ok?t.ok(e.value):t.err(e.error,e.cause)}function lt(e,t){return e.ok?t(e.value):e}function dt(e,t){return e.ok&&t(e.value),e}function mt(e,t){return e.ok||t(e.error,e.cause),e}function Et(e,t,r){if(!e.ok)return e;try{return v(t(e.value))}catch(u){return _(r(u),{cause:u})}}function yt(e,t,r){if(e.ok)return e;try{return _(t(e.error),{cause:e.cause})}catch(u){return _(r(u),{cause:u})}}function wt(e,t,r){return e.ok?v(t(e.value)):_(r(e.error),{cause:e.cause})}function ft(e,t){return e.ok?e:t(e.error,e.cause)}async function gt(e,t){let r=await e;return r.ok?r:t(r.error,r.cause)}function Tt(e,t){return e.ok?v(e.value):v(t(e.error,e.cause))}async function kt(e,t){let r=await e;return r.ok?v(r.value):v(await t(r.error,r.cause))}function Re(e){return e!==null&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&(e.ok===!0&&"value"in e||e.ok===!1&&"error"in e)?e:null}function Rt(e){return Re(e)!==null}function xt(e){let t=[];for(let r of e){if(!r.ok)return r;t.push(r.value)}return v(t)}async function ae(e){return e.length===0?v([]):new Promise(t=>{let r=!1,u=e.length,f=new Array(e.length);for(let h=0;h<e.length;h++){let b=h;Promise.resolve(e[b]).catch(y=>_({type:"PROMISE_REJECTED",cause:y},{cause:{type:"PROMISE_REJECTION",reason:y}})).then(y=>{if(!r){if(!y.ok){r=!0,t(y);return}f[b]=y.value,u--,u===0&&t(v(f))}})}})}function ht(e){let t=[],r=[];for(let u of e)u.ok?t.push(u.value):r.push({error:u.error,cause:u.cause});return r.length>0?_(r):v(t)}function Ct(e){let t=[],r=[];for(let u of e)u.ok?t.push(u.value):r.push(u.error);return{values:t,errors:r}}function bt(e){if(e.length===0)return _({type:"EMPTY_INPUT",message:"any() requires at least one Result"});let t=null;for(let r of e){if(r.ok)return r;t||(t=r)}return t}async function St(e){return e.length===0?_({type:"EMPTY_INPUT",message:"anyAsync() requires at least one Result"}):new Promise(t=>{let r=!1,u=e.length,f=null;for(let h of e)Promise.resolve(h).catch(b=>_({type:"PROMISE_REJECTED",cause:b},{cause:{type:"PROMISE_REJECTION",reason:b}})).then(b=>{if(!r){if(b.ok){r=!0,t(b);return}f||(f=b),u--,u===0&&t(f)}})})}async function Ot(e){let t=await Promise.all(e.map(f=>Promise.resolve(f).then(h=>({status:"result",result:h})).catch(h=>({status:"rejected",error:{type:"PROMISE_REJECTED",cause:h},cause:{type:"PROMISE_REJECTION",reason:h}})))),r=[],u=[];for(let f of t)f.status==="rejected"?u.push({error:f.error,cause:f.cause}):f.result.ok?r.push(f.result.value):u.push({error:f.result.error,cause:f.result.cause});return u.length>0?_(u):v(r)}function xe(e,t){return r=>{let u=new Map(r.handlers);return u.set(e,t),{_tag:"Matcher",value:r.value,handlers:u,_remaining:void 0,_output:void 0}}}function he(e){return t=>{let r=new Map(t.handlers);for(let[u,f]of Object.entries(e))f&&r.set(u,f);return{_tag:"Matcher",value:t.value,handlers:r,_remaining:void 0,_output:void 0}}}function Ce(e){let t=e.handlers.get(e.value._tag);if(!t)throw new Error(`No handler for tag: ${e.value._tag}`);return t(e.value)}function ue(e){return t=>{let r=t.handlers.get(t.value._tag);return r?r(t.value):e(t.value)}}function be(e){return ue(()=>e)}function Se(e,t,r){return u=>{let f=new Map(u.handlers),h=u.handlers.get(e);return f.set(e,b=>{let y=b;if(t(y))return r(y);if(h)return h(b);throw new Error(`No handler matched for tag: ${e}`)}),{_tag:"Matcher",value:u.value,handlers:f,_remaining:u._remaining,_output:void 0}}}function Oe(e){return t=>t._tag===e}function Ae(...e){let t=new Set(e);return r=>t.has(r._tag)}function Yt(e){return typeof e=="object"&&e!==null&&"_tag"in e&&e._tag==="Matcher"}function At(e){return{...e,pipe(t){let r=t(e);return Yt(r)?At(r):r}}}function _e(e){return At({_tag:"Matcher",value:e,handlers:new Map,_remaining:e,_output:void 0})}var _t={value:_e,tag:xe,tags:he,when:Se,exhaustive:Ce,orElse:ue,orElseValue:be,is:Oe,isOneOf:Ae};0&&(module.exports={AWAITLY_CANCELLED,AWAITLY_TIMEOUT,AWAITLY_UNEXPECTED,Match,PROMISE_REJECTED,TaggedError,UnexpectedError,UnwrapError,all,allAsync,allSettled,allSettledAsync,andThen,any,anyAsync,bimap,err,exhaustive,extractErrorTag,extractStepMetadata,from,fromNullable,fromPromise,hydrate,isErr,isOk,isOneOf,isSerializedResult,isTag,isUnexpectedError,lookupErrorClassification,map,mapError,mapErrorTry,mapTry,match,matchError,matchOrElse,matchTag,matchTags,matchValue,matchWhen,ok,orElse,orElseAsync,orElseValue,partition,recover,recoverAsync,runOrNull,runOrThrow,runOrThrowAsync,runOrUndefined,tags,tap,tapError,tryAsync,unwrap,unwrapOr,unwrapOrElse});
|
|
7
7
|
//# sourceMappingURL=core.cjs.map
|