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/singleflight.d.cts
CHANGED
package/dist/singleflight.d.ts
CHANGED
package/dist/streaming.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
"use strict";var ge=Object.defineProperty;var st=Object.getOwnPropertyDescriptor;var at=Object.getOwnPropertyNames;var it=Object.prototype.hasOwnProperty;var ut=(e,t)=>{for(var r in t)ge(e,r,{get:t[r],enumerable:!0})},ct=(e,t,r,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let f of at(t))!it.call(e,f)&&f!==r&&ge(e,f,{get:()=>t[f],enumerable:!(c=st(t,f))||c.enumerable});return e};var lt=e=>ct(ge({},"__esModule",{value:!0}),e);var xt={};ut(xt,{STREAM_BACKPRESSURE_ERROR:()=>de,STREAM_CLOSE_ERROR:()=>Se,STREAM_ENDED:()=>me,STREAM_READ_ERROR:()=>le,STREAM_STORE_ERROR:()=>pe,STREAM_WRITE_ERROR:()=>ce,chunk:()=>Xe,collect:()=>et,createBackpressureController:()=>De,createFileStreamStore:()=>Ve,createMemoryStreamStore:()=>Ce,createTestableMemoryStreamStore:()=>Le,filter:()=>qe,flatMap:()=>Ye,flatMapAsync:()=>Je,getStreamReader:()=>bt,isStreamBackpressureError:()=>Me,isStreamEnded:()=>Ee,isStreamReadError:()=>Ie,isStreamStoreError:()=>_e,isStreamWriteError:()=>Ae,map:()=>$e,mapAsync:()=>ze,pipe:()=>rt,reduce:()=>tt,shouldApplyBackpressure:()=>Ue,skip:()=>Ge,skipWhile:()=>Ze,streamBackpressureError:()=>ve,streamCloseError:()=>Oe,streamEnded:()=>ae,streamReadError:()=>se,streamStoreError:()=>j,streamWriteError:()=>Pe,take:()=>He,takeWhile:()=>Qe,toAsyncIterable:()=>L});module.exports=lt(xt);var ce="STREAM_WRITE_ERROR",le="STREAM_READ_ERROR",Se="STREAM_CLOSE_ERROR",pe="STREAM_STORE_ERROR",me="STREAM_ENDED",de="STREAM_BACKPRESSURE_ERROR";function Ee(e){return typeof e=="object"&&e!==null&&e.type===me}function Ae(e){return typeof e=="object"&&e!==null&&e.type===ce}function Ie(e){return typeof e=="object"&&e!==null&&e.type===le}function _e(e){return typeof e=="object"&&e!==null&&e.type===pe}function Me(e){return typeof e=="object"&&e!==null&&e.type===de}function Pe(e,t,r){return{type:ce,reason:e,message:t,...r!==void 0?{cause:r}:{}}}function se(e,t,r){return{type:le,reason:e,message:t,...r!==void 0?{cause:r}:{}}}function Oe(e,t,r){return{type:Se,reason:e,message:t,...r!==void 0?{cause:r}:{}}}function j(e,t,r){return{type:pe,reason:e,message:t,...r!==void 0?{cause:r}:{}}}function ae(e){return{type:me,finalPosition:e}}function ve(e,t){return{type:de,bufferedCount:e,highWaterMark:t}}function De(e={}){let t=e.highWaterMark??16,r=e.lowWaterMark??Math.floor(t/2),c=e.onStateChange,f="flowing",T=0,p=[];function u(o){if(f!==o&&(f=o,c?.(o),o==="flowing"&&p.length>0)){let O=p;p=[];for(let _ of O)_()}}function m(){f==="flowing"&&T>=t?u("paused"):f==="paused"&&T<=r&&u("flowing")}return{get state(){return f},get bufferedCount(){return T},get highWaterMark(){return t},get lowWaterMark(){return r},increment(){T++,m()},decrement(){T>0&&(T--,m())},setCount(o){T=Math.max(0,o),m()},waitForDrain(){return f==="flowing"?Promise.resolve():new Promise(o=>{p.push(o)})},reset(){T=0,p=[],u("flowing")}}}function Ue(e){return e.state==="paused"}function pt(e){let t=e.trim().match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h|d)$/i);if(!t)return;let r=parseFloat(t[1]),c=t[2].toLowerCase();return{_tag:"Duration",millis:r*({ms:1,s:1e3,m:6e4,h:36e5,d:864e5}[c]??1)}}var mt="UNEXPECTED_ERROR";function dt(e){return mt}function U(e){return{ok:!0,value:e}}function M(e,t){let r=t?.cause;return{ok:!1,error:e,...r!==void 0?{cause:r}:{}}}function Et(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 yt(e,t){if(!(!t||!e))return t[e]}function ft(e){let{intent:t,domain:r,owner:c,tags:f,stateChanges:T,emits:p,calls:u}=e;if(!t&&!r&&!c&&!f?.length&&!T?.length&&!p?.length&&!u?.length)return;let m={};return t&&(m.intent=t),r&&(m.domain=r),c&&(m.owner=c),f?.length&&(m.tags=f),T?.length&&(m.stateChanges=T),p?.length&&(m.emits=p),u?.length&&(m.calls=u),m}function q(e,t,r,c,f){let T=Et(e),p=yt(T,t),u={tag:T,origin:r};return p!==void 0&&(u.classification=p),c!==void 0&&(u.attempt=c),f!==void 0&&(u.cumulativeDurationMs=f),u}var ne=Symbol.for("step_timeout_marker");function Fe(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:ne in e}function wt(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(ne in e)return e[ne]}}var je=Symbol("early-exit");function Tt(e,t){return{[je]:!0,error:e,meta:t}}function kt(e){return typeof e=="object"&&e!==null&&e[je]===!0}var We=Symbol("mapper-exception");function te(e){return{[We]:!0,thrown:e}}function Rt(e){return typeof e=="object"&&e!==null&&e[We]===!0}function be(e,t){let{backoff:r,initialDelay:c,maxDelay:f,jitter:T}=t,p;switch(r){case"fixed":p=c;break;case"linear":p=c*e;break;case"exponential":p=c*Math.pow(2,e-1);break}if(p=Math.min(p,f),T){let u=p*.25*Math.random();p=p+u}return Math.floor(p)}function xe(e){return new Promise(t=>setTimeout(t,e))}var Ne=Symbol("timeout"),ye=Symbol("timeout-option");function gt(e){return typeof e=="object"&&e!==null&&e[ye]===!0}async function St(e,t,r,c){let f=new AbortController,T=t.onTimeout??"error",p=()=>typeof T=="function"?T({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},u;c?.aborted&&f.abort(c.reason);let m;c&&!c.aborted&&(m=()=>f.abort(c.reason),c.addEventListener("abort",m,{once:!0}));let o=new Promise((_,W)=>{u=setTimeout(()=>{if(T!=="disconnect"&&f.abort(),T==="option"){W({[ye]:!0,ms:t.ms});return}W({[Ne]:!0,error:p()})},t.ms)}),O;t.signal?O=Promise.resolve(e(f.signal)):O=Promise.resolve(e());try{return await Promise.race([O,o])}catch(_){if(typeof _=="object"&&_!==null&&_[ye]===!0)throw{[ye]:!0,ms:t.ms};if(typeof _=="object"&&_!==null&&_[Ne]===!0){T==="disconnect"&&O.catch(()=>{});let W=_.error;if(typeof W=="object"&&W!==null&&W.type!=="STEP_TIMEOUT"){let x={timeoutMs:t.ms,stepName:r.name,stepKey:r.key,attempt:r.attempt};ne in W?W[ne]=x:Object.defineProperty(W,ne,{value:x,enumerable:!1,writable:!0,configurable:!1})}throw W}throw _}finally{clearTimeout(u),m&&c&&c.removeEventListener("abort",m)}}var re={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function Ke(e,t){let{onError:r,onEvent:c,catchUnexpected:f,workflowId:T,workflowName:p,context:u,_workflowSignal:m}=t&&typeof t=="object"?t:{},o=T??crypto.randomUUID(),O=f??dt,_=[],W=0,x=y=>y??`step_${++W}`,s=y=>{let X=y.context!==void 0||u===void 0?y:{...y,context:u},H=p!==void 0&&X.workflowName===void 0?{...X,workflowName:p}:X;if(H.type==="step_success"){let ie=H.stepId;for(let ue=_.length-1;ue>=0;ue--){let Y=_[ue];if(Y.type==="race"&&!Y.winnerId){Y.winnerId=ie;break}}}c?.(H,u)},k=Tt,v=y=>kt(y),N=(y,X)=>y,$=y=>typeof y=="function"?!1:!!(y&&typeof y=="object"&&"ok"in y||y&&typeof y=="object"&&"then"in y&&typeof y.then=="function");try{let X=function(l){let w={};for(let[i,a]of Object.entries(l))if(typeof a=="function")w[i]=a;else if(a&&typeof a=="object"&&"fn"in a)w[i]=a.fn;else throw new TypeError(`step.parallel: operation "${i}" must be a function or { fn, errors? } object`);return w},H=function(l,w){let i=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let a=performance.now(),n=!1;_.push({scopeId:i,type:"parallel"});let d=()=>{if(n)return;n=!0;let E=_.findIndex(R=>R.scopeId===i);E!==-1&&_.splice(E,1),s({type:"scope_end",workflowId:o,scopeId:i,ts:Date.now(),durationMs:performance.now()-a})};s({type:"scope_start",workflowId:o,scopeId:i,scopeType:"parallel",name:l,ts:Date.now()});try{let E=await w();if(d(),!E.ok)throw r?.(E.error,l,u),k(E.error,{origin:"result",resultCause:E.cause});return E.value}catch(E){throw d(),E}})()},ie=function(l,w){let i=Object.keys(l),a=w.name??`Parallel(${i.join(", ")})`,n=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let d=performance.now(),E=!1;_.push({scopeId:n,type:"parallel"});let R=()=>{if(E)return;E=!0;let g=_.findIndex(S=>S.scopeId===n);g!==-1&&_.splice(g,1),s({type:"scope_end",workflowId:o,scopeId:n,ts:Date.now(),durationMs:performance.now()-d})};s({type:"scope_start",workflowId:o,scopeId:n,scopeType:"parallel",name:a,ts:Date.now()});try{let g=await new Promise(C=>{if(i.length===0){C([]);return}let D=!1,B=i.length,h=new Array(i.length);for(let K=0;K<i.length;K++){let A=i[K],P=K;Promise.resolve(l[A]()).catch(I=>M({type:"PROMISE_REJECTED",cause:I},{cause:{type:"PROMISE_REJECTION",reason:I}})).then(I=>{if(!D){if(!I.ok){D=!0,C([{key:A,result:I}]);return}h[P]={key:A,result:I},B--,B===0&&C(h)}})}});R();let S={};for(let{key:C,result:D}of g){if(!D.ok)throw r?.(D.error,C,u),k(D.error,{origin:"result",resultCause:D.cause});S[C]=D.value}return S}catch(g){throw R(),g}})()};var J=X,ee=H,he=ie;let y=(l,w,i)=>(async()=>{if(typeof l!="string"||l.length===0)throw new Error('[awaitly] step() requires an explicit string ID as the first argument. Example: step("fetchUser", () => fetchUser(id))');let a=i??{},n=ft(a),d=l,E=a.key??l,R=a.key??l,{description:g,retry:S,timeout:C}=a,D=x(E),B=c,h=B?performance.now():0,A=$(w)?()=>w:w,I={attempts:Math.max(1,S?.attempts??1),backoff:S?.backoff??re.backoff,initialDelay:S?.initialDelay??re.initialDelay,maxDelay:S?.maxDelay??re.maxDelay,jitter:S?.jitter??re.jitter,retryOn:S?.retryOn??re.retryOn,onRetry:S?.onRetry??re.onRetry};c&&s({type:"step_start",workflowId:o,stepId:D,stepKey:E,name:d,description:g,ts:Date.now(),...n&&{metadata:n}});let Z;for(let F=1;F<=I.attempts;F++){let nt=B?performance.now():0;try{let b;if(C?b=await St(A,C,{name:d,key:E,attempt:F},m):b=await A(),b.ok){let Q=performance.now()-h;return s({type:"step_success",workflowId:o,stepId:D,stepKey:E,name:d,description:g,ts:Date.now(),durationMs:Q,...n&&{metadata:n}}),R&&s({type:"step_complete",workflowId:o,stepKey:R,name:d,description:g,ts:Date.now(),durationMs:Q,result:b,...n&&{metadata:n}}),b.value}if(Z=b,F<I.attempts&&I.retryOn(b.error,F)){let Q=be(F,I);s({type:"step_retry",workflowId:o,stepId:D,stepKey:E,name:d,ts:Date.now(),attempt:F+1,maxAttempts:I.attempts,delayMs:Q,error:b.error,...n&&{metadata:n},diagnostics:q(b.error,a.errorMeta,"result",F,performance.now()-h)}),I.onRetry(b.error,F,Q),await xe(Q);continue}I.attempts>1&&s({type:"step_retries_exhausted",workflowId:o,stepId:D,stepKey:E,name:d,ts:Date.now(),durationMs:performance.now()-h,attempts:F,lastError:b.error,...n&&{metadata:n},diagnostics:q(b.error,a.errorMeta,"result",F,performance.now()-h)});break}catch(b){let Q=performance.now()-nt;if(gt(b)){let z=b.ms;s({type:"step_timeout",workflowId:o,stepId:D,stepKey:E,name:d,ts:Date.now(),timeoutMs:z,attempt:F,...n&&{metadata:n},diagnostics:q(b,a.errorMeta,"timeout",F)}),s({type:"step_success",workflowId:o,stepId:D,stepKey:E,name:d,description:g,ts:Date.now(),durationMs:performance.now()-h,...n&&{metadata:n}}),R&&s({type:"step_complete",workflowId:o,stepKey:R,name:d,description:g,ts:Date.now(),durationMs:performance.now()-h,result:U(void 0),...n&&{metadata:n}});return}if(v(b))throw s({type:"step_aborted",workflowId:o,stepId:D,stepKey:E,name:d,description:g,ts:Date.now(),durationMs:Q,...n&&{metadata:n}}),b;if(Fe(b)){let z=wt(b),ot=C?.ms??z?.timeoutMs??0;if(s({type:"step_timeout",workflowId:o,stepId:D,stepKey:E,name:d,ts:Date.now(),timeoutMs:ot,attempt:F,...n&&{metadata:n},diagnostics:q(b,a.errorMeta,"timeout",F)}),F<I.attempts&&I.retryOn(b,F)){let Re=be(F,I);s({type:"step_retry",workflowId:o,stepId:D,stepKey:E,name:d,ts:Date.now(),attempt:F+1,maxAttempts:I.attempts,delayMs:Re,error:b,...n&&{metadata:n},diagnostics:q(b,a.errorMeta,"timeout",F,performance.now()-h)}),I.onRetry(b,F,Re),await xe(Re);continue}I.attempts>1&&s({type:"step_retries_exhausted",workflowId:o,stepId:D,stepKey:E,name:d,ts:Date.now(),durationMs:performance.now()-h,attempts:F,lastError:b,...n&&{metadata:n},diagnostics:q(b,a.errorMeta,"timeout",F,performance.now()-h)});let ke=performance.now()-h;throw s({type:"step_error",workflowId:o,stepId:D,stepKey:E,name:d,description:g,ts:Date.now(),durationMs:ke,error:b,...n&&{metadata:n},diagnostics:q(b,a.errorMeta,"timeout",F,ke)}),R&&s({type:"step_complete",workflowId:o,stepKey:R,name:d,description:g,ts:Date.now(),durationMs:ke,result:M(b,{cause:b}),meta:{origin:"throw",thrown:b},...n&&{metadata:n}}),r?.(b,d,u),k(b,{origin:"throw",thrown:b})}if(F<I.attempts&&I.retryOn(b,F)){let z=be(F,I);s({type:"step_retry",workflowId:o,stepId:D,stepKey:E,name:d,ts:Date.now(),attempt:F+1,maxAttempts:I.attempts,delayMs:z,error:b,...n&&{metadata:n},diagnostics:q(b,a.errorMeta,"throw",F,performance.now()-h)}),I.onRetry(b,F,z),await xe(z);continue}I.attempts>1&&!Fe(b)&&s({type:"step_retries_exhausted",workflowId:o,stepId:D,stepKey:E,name:d,ts:Date.now(),durationMs:performance.now()-h,attempts:F,lastError:b,...n&&{metadata:n},diagnostics:q(b,a.errorMeta,"throw",F,performance.now()-h)});let Te=performance.now()-h,oe;try{oe=O(b)}catch(z){throw te(z)}throw s({type:"step_error",workflowId:o,stepId:D,stepKey:E,name:d,description:g,ts:Date.now(),durationMs:Te,error:oe,...n&&{metadata:n},diagnostics:q(b,a.errorMeta,"throw",F,Te)}),R&&s({type:"step_complete",workflowId:o,stepKey:R,name:d,description:g,ts:Date.now(),durationMs:Te,result:M(oe,{cause:b}),meta:{origin:"throw",thrown:b},...n&&{metadata:n}}),r?.(oe,d,u),k(oe,{origin:"throw",thrown:b})}}let G=Z,fe=performance.now()-h,we=N(G.error,{origin:"result",resultCause:G.cause});throw s({type:"step_error",workflowId:o,stepId:D,stepKey:E,name:d,description:g,ts:Date.now(),durationMs:fe,error:we,...n&&{metadata:n},diagnostics:q(G.error,a.errorMeta,"result",I.attempts,fe)}),R&&s({type:"step_complete",workflowId:o,stepKey:R,name:d,description:g,ts:Date.now(),durationMs:fe,result:G,meta:{origin:"result",resultCause:G.cause},...n&&{metadata:n}}),r?.(we,d,u),k(we,{origin:"result",resultCause:G.cause})})();y.try=(l,w,i)=>{if(typeof l!="string"||l.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 a=i.key??l,n=l,d=l,E="error"in i?()=>i.error:i.onError,R=c;return(async()=>{let g=R?performance.now():0;c&&s({type:"step_start",workflowId:o,stepId:d,stepKey:a,name:n,ts:Date.now()});try{let S=await w(),C=performance.now()-g;return s({type:"step_success",workflowId:o,stepId:d,stepKey:a,name:n,ts:Date.now(),durationMs:C}),a&&s({type:"step_complete",workflowId:o,stepKey:a,name:n,ts:Date.now(),durationMs:C,result:U(S)}),S}catch(S){let C=E(S),D=performance.now()-g,B=N(C,{origin:"throw",thrown:S});throw s({type:"step_error",workflowId:o,stepId:d,stepKey:a,name:n,ts:Date.now(),durationMs:D,error:B}),a&&s({type:"step_complete",workflowId:o,stepKey:a,name:n,ts:Date.now(),durationMs:D,result:M(C,{cause:S}),meta:{origin:"throw",thrown:S}}),r?.(B,n,u),k(B,{origin:"throw",thrown:S})}})()},y.fromResult=(l,w,i)=>{if(typeof l!="string"||l.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 a=i.key??l,n=l,d=l,E="error"in i?()=>i.error:i.onError,R=c;return(async()=>{let g=R?performance.now():0;c&&s({type:"step_start",workflowId:o,stepId:d,stepKey:a,name:n,ts:Date.now()});let S=await w();if(S.ok){let C=performance.now()-g;return s({type:"step_success",workflowId:o,stepId:d,stepKey:a,name:n,ts:Date.now(),durationMs:C}),a&&s({type:"step_complete",workflowId:o,stepKey:a,name:n,ts:Date.now(),durationMs:C,result:U(S.value)}),S.value}else{let C=E(S.error),D=performance.now()-g,B=N(C,{origin:"result",resultCause:S.error});throw s({type:"step_error",workflowId:o,stepId:d,stepKey:a,name:n,ts:Date.now(),durationMs:D,error:B}),a&&s({type:"step_complete",workflowId:o,stepKey:a,name:n,ts:Date.now(),durationMs:D,result:M(C,{cause:S.error}),meta:{origin:"result",resultCause:S.error}}),r?.(B,n,u),k(B,{origin:"result",resultCause:S.error})}})()},y.fromNullable=(l,w,i,a)=>{if(typeof l!="string"||l.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 y(l,async()=>{let n=await w();return n!=null?U(n):M(i())},a)},y.retry=(l,w,i)=>{if(typeof l!="string"||l.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 y(l,w,{key:i.key??l,retry:{attempts:i.attempts,backoff:i.backoff,initialDelay:i.initialDelay,maxDelay:i.maxDelay,jitter:i.jitter,retryOn:i.retryOn,onRetry:i.onRetry},timeout:i.timeout})},y.withTimeout=(l,w,i)=>{if(typeof l!="string"||l.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 y(l,w,{key:i.key??l,timeout:i})},y.sleep=(l,w,i)=>{if(typeof l!="string"||l.length===0)throw new Error('[awaitly] step.sleep() requires an explicit string ID as the first argument. Example: step.sleep("delay", "5s")');let a=typeof w=="string"?pt(w):w;if(!a)throw new Error(`step.sleep: invalid duration '${w}'`);let n=a.millis,d=i?.signal;return y(l,async()=>{if(m?.aborted||d?.aborted){let E=new Error("Sleep aborted");throw E.name="AbortError",E}return new Promise((E,R)=>{let g={timeoutId:void 0},S=()=>{g.timeoutId&&clearTimeout(g.timeoutId);let C=new Error("Sleep aborted");C.name="AbortError",R(C)};m?.addEventListener("abort",S,{once:!0}),d?.addEventListener("abort",S,{once:!0}),g.timeoutId=setTimeout(()=>{m?.removeEventListener("abort",S),d?.removeEventListener("abort",S),E(U(void 0))},n)})},{key:i?.key??l,description:i?.description})},y.parallel=((...l)=>{if(typeof l[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 w=l[0],i=l[1];if(typeof i=="function")return H(w,i);if(i&&typeof i=="object"&&!Array.isArray(i)){let n=X(i);return ie(n,{name:w})}throw new TypeError("step.parallel(name, ...): second argument must be a function (array form) or an object of operations (object form).")}),y.race=(l,w)=>{let i=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let a=performance.now(),n=!1,d={scopeId:i,type:"race",winnerId:void 0};_.push(d);let E=()=>{if(n)return;n=!0;let R=_.findIndex(g=>g.scopeId===i);R!==-1&&_.splice(R,1),s({type:"scope_end",workflowId:o,scopeId:i,ts:Date.now(),durationMs:performance.now()-a,winnerId:d.winnerId})};s({type:"scope_start",workflowId:o,scopeId:i,scopeType:"race",name:l,ts:Date.now()});try{let R=await w();if(E(),!R.ok)throw r?.(R.error,l,u),k(R.error,{origin:"result",resultCause:R.cause});return R.value}catch(R){throw E(),R}})()},y.allSettled=(l,w)=>{let i=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let a=performance.now(),n=!1;_.push({scopeId:i,type:"allSettled"});let d=()=>{if(n)return;n=!0;let E=_.findIndex(R=>R.scopeId===i);E!==-1&&_.splice(E,1),s({type:"scope_end",workflowId:o,scopeId:i,ts:Date.now(),durationMs:performance.now()-a})};s({type:"scope_start",workflowId:o,scopeId:i,scopeType:"allSettled",name:l,ts:Date.now()});try{let E=await w();if(d(),!E.ok)throw r?.(E.error,l,u),k(E.error,{origin:"result",resultCause:E.cause});return E.value}catch(E){throw d(),E}})()},y.if=(l,w,i)=>i(),y.label=y.if,y.branch=async(l,w)=>{let{condition:i,then:a,else:n}=w;if(i())return await a();if(n)return await n()},y.arm=(l,w)=>({fn:l,errors:w}),y.forEach=async(l,w,i)=>{let a=[],n=i.maxIterations,d=0,E="run"in i,R=Symbol.asyncIterator in w?w:(async function*(){yield*w})();for await(let g of R){if(n!==void 0&&d>=n)break;let S;E?S=await i.run(g,d):S=await i.item.handler(g,d,y),a.push(S),d++}return a},y.item=l=>({__forEachItemHandler:!0,handler:l}),y.dep=(l,w)=>w,y.run=(l,w,i)=>y(l,()=>w,i),y.workflow=(l,w,i)=>y(l,w,i),y.andThen=(l,w,i,a)=>y(l,()=>i(w),a),y.match=async(l,w,i,a)=>y(l,async()=>{let n=await w;return n.ok?U(await i.ok(n.value)):U(await i.err(n.error,n.cause))},a),y.all=y.parallel,y.map=async(l,w,i,a)=>{let n=a?.concurrency??w.length;return y(l,()=>n>=w.length?Be(w.map((d,E)=>i(d,E))):(async()=>{let d=[];for(let E=0;E<w.length;E+=n){let R=w.slice(E,E+n),g=await Be(R.map((S,C)=>i(S,E+C)));if(!g.ok)return g;d.push(...g.value)}return U(d)})(),{key:a?.key})},y.withFallback=(l,w,i)=>{if(typeof l!="string"||l.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 a=i.key??l,n=l,d=x(a),E=c;return(async()=>{let R=E?performance.now():0;c&&s({type:"step_start",workflowId:o,stepId:d,stepKey:a,name:n,ts:Date.now()});let g;try{g=await w()}catch(h){if(v(h))throw s({type:"step_aborted",workflowId:o,stepId:d,stepKey:a,name:n,ts:Date.now(),durationMs:performance.now()-R}),h;let K;try{K=O(h)}catch(P){throw te(P)}if(i.on!==void 0&&i.on!==K){let P=performance.now()-R;throw s({type:"step_error",workflowId:o,stepId:d,stepKey:a,name:n,ts:Date.now(),durationMs:P,error:K}),a&&s({type:"step_complete",workflowId:o,stepKey:a,name:n,ts:Date.now(),durationMs:P,result:M(K,{cause:h}),meta:{origin:"throw",thrown:h}}),r?.(K,n,u),k(K,{origin:"throw",thrown:h})}let A;try{A=await i.fallback()}catch(P){if(v(P))throw s({type:"step_aborted",workflowId:o,stepId:d,stepKey:a,name:n,ts:Date.now(),durationMs:performance.now()-R}),P;let I;try{I=O(P)}catch(G){throw te(G)}let Z=performance.now()-R;throw s({type:"step_error",workflowId:o,stepId:d,stepKey:a,name:n,ts:Date.now(),durationMs:Z,error:I}),a&&s({type:"step_complete",workflowId:o,stepKey:a,name:n,ts:Date.now(),durationMs:Z,result:M(I,{cause:P}),meta:{origin:"throw",thrown:P}}),r?.(I,n,u),k(I,{origin:"throw",thrown:P})}if(A.ok){let P=performance.now()-R;return s({type:"step_success",workflowId:o,stepId:d,stepKey:a,name:n,ts:Date.now(),durationMs:P}),a&&s({type:"step_complete",workflowId:o,stepKey:a,name:n,ts:Date.now(),durationMs:P,result:A,meta:{origin:"fallback",fallbackUsed:!0,fallbackReason:String(K)}}),A.value}else{let P=performance.now()-R,I=N(A.error,{origin:"result",resultCause:A.cause});throw s({type:"step_error",workflowId:o,stepId:d,stepKey:a,name:n,ts:Date.now(),durationMs:P,error:I}),a&&s({type:"step_complete",workflowId:o,stepKey:a,name:n,ts:Date.now(),durationMs:P,result:A,meta:{origin:"result",resultCause:A.cause}}),r?.(I,n,u),k(I,{origin:"result",resultCause:A.cause})}}if(g.ok){let h=performance.now()-R;return s({type:"step_success",workflowId:o,stepId:d,stepKey:a,name:n,ts:Date.now(),durationMs:h}),a&&s({type:"step_complete",workflowId:o,stepKey:a,name:n,ts:Date.now(),durationMs:h,result:g}),g.value}let S=g.error;if(i.on!==void 0&&i.on!==S){let h=performance.now()-R,K=N(S,{origin:"result",resultCause:g.cause});throw s({type:"step_error",workflowId:o,stepId:d,stepKey:a,name:n,ts:Date.now(),durationMs:h,error:K}),a&&s({type:"step_complete",workflowId:o,stepKey:a,name:n,ts:Date.now(),durationMs:h,result:g,meta:{origin:"result",resultCause:g.cause}}),r?.(K,n,u),k(K,{origin:"result",resultCause:g.cause})}let C;try{C=await i.fallback()}catch(h){if(v(h))throw s({type:"step_aborted",workflowId:o,stepId:d,stepKey:a,name:n,ts:Date.now(),durationMs:performance.now()-R}),h;let K;try{K=O(h)}catch(P){throw te(P)}let A=performance.now()-R;throw s({type:"step_error",workflowId:o,stepId:d,stepKey:a,name:n,ts:Date.now(),durationMs:A,error:K}),a&&s({type:"step_complete",workflowId:o,stepKey:a,name:n,ts:Date.now(),durationMs:A,result:M(K,{cause:h}),meta:{origin:"throw",thrown:h}}),r?.(K,n,u),k(K,{origin:"throw",thrown:h})}if(C.ok){let h=performance.now()-R;return s({type:"step_success",workflowId:o,stepId:d,stepKey:a,name:n,ts:Date.now(),durationMs:h}),a&&s({type:"step_complete",workflowId:o,stepKey:a,name:n,ts:Date.now(),durationMs:h,result:C,meta:{origin:"fallback",fallbackUsed:!0,fallbackReason:String(S)}}),C.value}let D=performance.now()-R,B=N(C.error,{origin:"result",resultCause:C.cause});throw s({type:"step_error",workflowId:o,stepId:d,stepKey:a,name:n,ts:Date.now(),durationMs:D,error:B}),a&&s({type:"step_complete",workflowId:o,stepKey:a,name:n,ts:Date.now(),durationMs:D,result:C,meta:{origin:"result",resultCause:C.cause}}),r?.(B,n,u),k(B,{origin:"result",resultCause:C.cause})})()},y.withResource=(l,w)=>{if(typeof l!="string"||l.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 i=l,a=l,n=x(i),d=c;return(async()=>{let E=d?performance.now():0;c&&s({type:"step_start",workflowId:o,stepId:n,stepKey:i,name:a,ts:Date.now()});let R;try{R=await w.acquire()}catch(A){if(v(A))throw s({type:"step_aborted",workflowId:o,stepId:n,stepKey:i,name:a,ts:Date.now(),durationMs:performance.now()-E}),A;let P;try{P=O(A)}catch(Z){throw te(Z)}let I=performance.now()-E;throw s({type:"step_error",workflowId:o,stepId:n,stepKey:i,name:a,ts:Date.now(),durationMs:I,error:P}),i&&s({type:"step_complete",workflowId:o,stepKey:i,name:a,ts:Date.now(),durationMs:I,result:M(P,{cause:A}),meta:{origin:"throw",thrown:A}}),r?.(P,a,u),k(P,{origin:"throw",thrown:A})}if(!R.ok){let A=performance.now()-E,P=N(R.error,{origin:"result",resultCause:R.cause});throw s({type:"step_error",workflowId:o,stepId:n,stepKey:i,name:a,ts:Date.now(),durationMs:A,error:P}),i&&s({type:"step_complete",workflowId:o,stepKey:i,name:a,ts:Date.now(),durationMs:A,result:R,meta:{origin:"result",resultCause:R.cause}}),r?.(P,a,u),k(P,{origin:"result",resultCause:R.cause})}let g=R.value,S,C,D=!1;try{S=await w.use(g)}catch(A){if(v(A)){try{await w.release(g)}catch(P){console.warn(`[awaitly] step.withResource("${l}"): release threw after earlyExit:`,P)}throw A}C=A,D=!0}try{await w.release(g)}catch(A){console.warn(`[awaitly] step.withResource("${l}"): release threw:`,A)}if(D){let A;try{A=O(C)}catch(I){throw te(I)}let P=performance.now()-E;throw s({type:"step_error",workflowId:o,stepId:n,stepKey:i,name:a,ts:Date.now(),durationMs:P,error:A}),i&&s({type:"step_complete",workflowId:o,stepKey:i,name:a,ts:Date.now(),durationMs:P,result:M(A,{cause:C}),meta:{origin:"throw",thrown:C}}),r?.(A,a,u),k(A,{origin:"throw",thrown:C})}let B=S;if(B.ok){let A=performance.now()-E;return s({type:"step_success",workflowId:o,stepId:n,stepKey:i,name:a,ts:Date.now(),durationMs:A}),i&&s({type:"step_complete",workflowId:o,stepKey:i,name:a,ts:Date.now(),durationMs:A,result:B}),B.value}let h=performance.now()-E,K=N(B.error,{origin:"result",resultCause:B.cause});throw s({type:"step_error",workflowId:o,stepId:n,stepKey:i,name:a,ts:Date.now(),durationMs:h,error:K}),i&&s({type:"step_complete",workflowId:o,stepKey:i,name:a,ts:Date.now(),durationMs:h,result:B,meta:{origin:"result",resultCause:B.cause}}),r?.(K,a,u),k(K,{origin:"result",resultCause:B.cause})})()};let Y=await e({step:y});if(process.env.NODE_ENV!=="production"&&Y!==null&&typeof Y=="object"&&"ok"in Y&&typeof Y.ok=="boolean"){let l=Y;(l.ok===!0&&"value"in l||l.ok===!1&&"error"in l)&&console.warn(`awaitly: Workflow executor returned a Result-like object. Return raw values, not ok() or err().
|
|
1
|
+
"use strict";var be=Object.defineProperty;var wt=Object.getOwnPropertyDescriptor;var Tt=Object.getOwnPropertyNames;var gt=Object.prototype.hasOwnProperty;var kt=(e,t)=>{for(var n in t)be(e,n,{get:t[n],enumerable:!0})},Rt=(e,t,n,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let f of Tt(t))!gt.call(e,f)&&f!==n&&be(e,f,{get:()=>t[f],enumerable:!(c=wt(t,f))||c.enumerable});return e};var St=e=>Rt(be({},"__esModule",{value:!0}),e);var Ut={};kt(Ut,{STREAM_BACKPRESSURE_ERROR:()=>ye,STREAM_CLOSE_ERROR:()=>Ce,STREAM_ENDED:()=>Ee,STREAM_READ_ERROR:()=>me,STREAM_STORE_ERROR:()=>de,STREAM_WRITE_ERROR:()=>pe,chunk:()=>ot,collect:()=>mt,createBackpressureController:()=>Ne,createFileStreamStore:()=>tt,createMemoryStreamStore:()=>Ie,createTestableMemoryStreamStore:()=>et,filter:()=>nt,flatMap:()=>st,flatMapAsync:()=>at,getStreamReader:()=>Dt,isStreamBackpressureError:()=>ve,isStreamEnded:()=>fe,isStreamReadError:()=>Pe,isStreamStoreError:()=>Oe,isStreamWriteError:()=>Me,map:()=>rt,mapAsync:()=>it,pipe:()=>Et,reduce:()=>dt,shouldApplyBackpressure:()=>Be,skip:()=>ct,skipWhile:()=>pt,streamBackpressureError:()=>Fe,streamCloseError:()=>Ue,streamEnded:()=>ie,streamReadError:()=>ae,streamStoreError:()=>W,streamWriteError:()=>De,take:()=>ut,takeWhile:()=>lt,toAsyncIterable:()=>$});module.exports=St(Ut);var pe="STREAM_WRITE_ERROR",me="STREAM_READ_ERROR",Ce="STREAM_CLOSE_ERROR",de="STREAM_STORE_ERROR",Ee="STREAM_ENDED",ye="STREAM_BACKPRESSURE_ERROR";function fe(e){return typeof e=="object"&&e!==null&&e.type===Ee}function Me(e){return typeof e=="object"&&e!==null&&e.type===pe}function Pe(e){return typeof e=="object"&&e!==null&&e.type===me}function Oe(e){return typeof e=="object"&&e!==null&&e.type===de}function ve(e){return typeof e=="object"&&e!==null&&e.type===ye}function De(e,t,n){return{type:pe,reason:e,message:t,...n!==void 0?{cause:n}:{}}}function ae(e,t,n){return{type:me,reason:e,message:t,...n!==void 0?{cause:n}:{}}}function Ue(e,t,n){return{type:Ce,reason:e,message:t,...n!==void 0?{cause:n}:{}}}function W(e,t,n){return{type:de,reason:e,message:t,...n!==void 0?{cause:n}:{}}}function ie(e){return{type:Ee,finalPosition:e}}function Fe(e,t){return{type:ye,bufferedCount:e,highWaterMark:t}}function Ne(e={}){let t=e.highWaterMark??16,n=e.lowWaterMark??Math.floor(t/2),c=e.onStateChange,f="flowing",d=0,p=[];function u(r){if(f!==r&&(f=r,c?.(r),r==="flowing"&&p.length>0)){let M=p;p=[];for(let I of M)I()}}function m(){f==="flowing"&&d>=t?u("paused"):f==="paused"&&d<=n&&u("flowing")}return{get state(){return f},get bufferedCount(){return d},get highWaterMark(){return t},get lowWaterMark(){return n},increment(){d++,m()},decrement(){d>0&&(d--,m())},setCount(r){d=Math.max(0,r),m()},waitForDrain(){return f==="flowing"?Promise.resolve():new Promise(r=>{p.push(r)})},reset(){d=0,p=[],u("flowing")}}}function Be(e){return e.state==="paused"}var ue=class extends Error{_tag};function L(e,t){return class extends ue{_tag=e;constructor(n,c){let f=t?.message?t.message(n??{}):e;if(super(f),this.name=e,Object.setPrototypeOf(this,new.target.prototype),n&&typeof n=="object"){let{_tag:d,name:p,message:u,stack:m,...r}=n,M=Object.prototype.hasOwnProperty.call(r,"cause"),I=M?r.cause:void 0;M&&delete r.cause;let j=c?.cause!==void 0;if(M&&j)throw new TypeError("TaggedError: cannot provide 'cause' in props when also setting ErrorOptions.cause");Object.assign(this,r),M&&(this.cause=I),j&&(this.cause=c?.cause)}else c?.cause!==void 0&&(this.cause=c.cause)}}}Object.defineProperty(L,Symbol.hasInstance,{value:e=>e instanceof ue});(f=>{function e(d){return d instanceof Error}f.isError=e;function t(d){return d instanceof ue}f.isTaggedError=t;function n(d,p){let u=d._tag,m=p[u];return m(d)}f.match=n;function c(d,p,u){let m=d._tag,r=p[m];return r?r(d):u(d)}f.matchPartial=c})(L||={});var Ke=class extends L("TimeoutError",{message:t=>t.operation?`TimeoutError: ${t.operation} timed out after ${t.ms}ms`:`TimeoutError: Operation timed out after ${t.ms}ms`}){},je=class extends L("RetryExhaustedError",{message:t=>t.operation?`RetryExhaustedError: ${t.operation} failed after ${t.attempts} attempts`:`RetryExhaustedError: Operation failed after ${t.attempts} attempts`}){},We=class extends L("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`:""}`}){},$e=class extends L("CircuitBreakerOpenError",{message:t=>`CircuitBreakerOpenError: Circuit ${t.circuitName} is ${t.state??"OPEN"}${t.retryAfterMs?`, retry after ${Math.ceil(t.retryAfterMs/1e3)}s`:""}`}){},Le=class extends L("ValidationError",{message:t=>`ValidationError: Invalid ${t.field} - ${t.reason}`}){},Ve=class extends L("NotFoundError",{message:t=>t.id?`NotFoundError: ${t.resource} with id ${t.id} not found`:`NotFoundError: ${t.resource} not found`}){},He=class extends L("UnauthorizedError",{message:t=>t.reason?`UnauthorizedError: ${t.reason}`:t.action&&t.resource?`UnauthorizedError: Not authorized to ${t.action} ${t.resource}`:"UnauthorizedError: Access denied"}){},qe=class extends L("NetworkError",{message:t=>t.url?`NetworkError: ${t.reason} (${t.url})`:`NetworkError: ${t.reason}`}){},ze=class extends L("CompensationError",{message:t=>`CompensationError: Failed to compensate step ${t.step}`}){},we=class extends L("UnexpectedError",{message:t=>`UnexpectedError: ${t.cause instanceof Error?t.cause.message:String(t.cause??"unknown")}`}){};function xt(e){let t=e.trim().match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h|d)$/i);if(!t)return;let n=parseFloat(t[1]),c=t[2].toLowerCase();return{_tag:"Duration",millis:n*({ms:1,s:1e3,m:6e4,h:36e5,d:864e5}[c]??1)}}function bt(e){return new we({cause:e})}function U(e){return{ok:!0,value:e}}function P(e,t){let n=t?.cause;return{ok:!1,error:e,...n!==void 0?{cause:n}:{}}}function Ct(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 ht(e,t){if(!(!t||!e))return t[e]}function At(e){let{intent:t,domain:n,owner:c,tags:f,stateChanges:d,emits:p,calls:u}=e;if(!t&&!n&&!c&&!f?.length&&!d?.length&&!p?.length&&!u?.length)return;let m={};return t&&(m.intent=t),n&&(m.domain=n),c&&(m.owner=c),f?.length&&(m.tags=f),d?.length&&(m.stateChanges=d),p?.length&&(m.emits=p),u?.length&&(m.calls=u),m}function q(e,t,n,c,f){let d=Ct(e),p=ht(d,t),u={tag:d,origin:n};return p!==void 0&&(u.classification=p),c!==void 0&&(u.attempt=c),f!==void 0&&(u.cumulativeDurationMs=f),u}var oe=Symbol.for("step_timeout_marker");function Ye(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:oe in e}function It(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(oe in e)return e[oe]}}var Qe=Symbol("early-exit");function _t(e,t){return{[Qe]:!0,error:e,meta:t}}function Mt(e){return typeof e=="object"&&e!==null&&e[Qe]===!0}var Ze=Symbol("mapper-exception");function re(e){return{[Ze]:!0,thrown:e}}function Pt(e){return typeof e=="object"&&e!==null&&e[Ze]===!0}function he(e,t){let{backoff:n,initialDelay:c,maxDelay:f,jitter:d}=t,p;switch(n){case"fixed":p=c;break;case"linear":p=c*e;break;case"exponential":p=c*Math.pow(2,e-1);break}if(p=Math.min(p,f),d){let u=p*.25*Math.random();p=p+u}return Math.floor(p)}function Ae(e){return new Promise(t=>setTimeout(t,e))}var Je=Symbol("timeout"),Te=Symbol("timeout-option");function Ot(e){return typeof e=="object"&&e!==null&&e[Te]===!0}async function vt(e,t,n,c){let f=new AbortController,d=t.onTimeout??"error",p=()=>typeof d=="function"?d({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},u;c?.aborted&&f.abort(c.reason);let m;c&&!c.aborted&&(m=()=>f.abort(c.reason),c.addEventListener("abort",m,{once:!0}));let r=new Promise((I,j)=>{u=setTimeout(()=>{if(d!=="disconnect"&&f.abort(),d==="option"){j({[Te]:!0,ms:t.ms});return}j({[Je]:!0,error:p()})},t.ms)}),M;t.signal?M=Promise.resolve(e(f.signal)):M=Promise.resolve(e());try{return await Promise.race([M,r])}catch(I){if(typeof I=="object"&&I!==null&&I[Te]===!0)throw{[Te]:!0,ms:t.ms};if(typeof I=="object"&&I!==null&&I[Je]===!0){d==="disconnect"&&M.catch(()=>{});let j=I.error;if(typeof j=="object"&&j!==null&&j.type!=="STEP_TIMEOUT"){let b={timeoutMs:t.ms,stepName:n.name,stepKey:n.key,attempt:n.attempt};oe in j?j[oe]=b:Object.defineProperty(j,oe,{value:b,enumerable:!1,writable:!0,configurable:!1})}throw j}throw I}finally{clearTimeout(u),m&&c&&c.removeEventListener("abort",m)}}var ne={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function Ge(e,t){let{onError:n,onEvent:c,catchUnexpected:f,workflowId:d,workflowName:p,context:u,_workflowSignal:m}=t&&typeof t=="object"?t:{},r=d??crypto.randomUUID(),M=f??bt,I=[],j=0,b=w=>w??`step_${++j}`,s=w=>{let z=w.context!==void 0||u===void 0?w:{...w,context:u},X=p!==void 0&&z.workflowName===void 0?{...z,workflowName:p}:z;if(X.type==="step_success"){let ce=X.stepId;for(let le=I.length-1;le>=0;le--){let Y=I[le];if(Y.type==="race"&&!Y.winnerId){Y.winnerId=ce;break}}}c?.(X,u)},g=_t,v=w=>Mt(w),N=(w,z)=>w,H=w=>typeof w=="function"?!1:!!(w&&typeof w=="object"&&"ok"in w||w&&typeof w=="object"&&"then"in w&&typeof w.then=="function");try{let z=function(l){let T={};for(let[i,a]of Object.entries(l))if(typeof a=="function")T[i]=a;else if(a&&typeof a=="object"&&"fn"in a)T[i]=a.fn;else throw new TypeError(`step.parallel: operation "${i}" must be a function or { fn, errors? } object`);return T},X=function(l,T){let i=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let a=performance.now(),o=!1;I.push({scopeId:i,type:"parallel"});let E=()=>{if(o)return;o=!0;let y=I.findIndex(k=>k.scopeId===i);y!==-1&&I.splice(y,1),s({type:"scope_end",workflowId:r,scopeId:i,ts:Date.now(),durationMs:performance.now()-a})};s({type:"scope_start",workflowId:r,scopeId:i,scopeType:"parallel",name:l,ts:Date.now()});try{let y=await T();if(E(),!y.ok)throw n?.(y.error,l,u),g(y.error,{origin:"result",resultCause:y.cause});return y.value}catch(y){throw E(),y}})()},ce=function(l,T){let i=Object.keys(l),a=T.name??`Parallel(${i.join(", ")})`,o=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let E=performance.now(),y=!1;I.push({scopeId:o,type:"parallel"});let k=()=>{if(y)return;y=!0;let R=I.findIndex(S=>S.scopeId===o);R!==-1&&I.splice(R,1),s({type:"scope_end",workflowId:r,scopeId:o,ts:Date.now(),durationMs:performance.now()-E})};s({type:"scope_start",workflowId:r,scopeId:o,scopeType:"parallel",name:a,ts:Date.now()});try{let R=await new Promise(C=>{if(i.length===0){C([]);return}let D=!1,K=i.length,h=new Array(i.length);for(let B=0;B<i.length;B++){let A=i[B],O=B;Promise.resolve(l[A]()).catch(_=>P({type:"PROMISE_REJECTED",cause:_},{cause:{type:"PROMISE_REJECTION",reason:_}})).then(_=>{if(!D){if(!_.ok){D=!0,C([{key:A,result:_}]);return}h[O]={key:A,result:_},K--,K===0&&C(h)}})}});k();let S={};for(let{key:C,result:D}of R){if(!D.ok)throw n?.(D.error,C,u),g(D.error,{origin:"result",resultCause:D.cause});S[C]=D.value}return S}catch(R){throw k(),R}})()};var J=z,te=X,_e=ce;let w=(l,T,i)=>(async()=>{if(typeof l!="string"||l.length===0)throw new Error('[awaitly] step() requires an explicit string ID as the first argument. Example: step("fetchUser", () => fetchUser(id))');let a=i??{},o=At(a),E=l,y=a.key??l,k=a.key??l,{description:R,retry:S,timeout:C}=a,D=b(y),K=c,h=K?performance.now():0,A=H(T)?()=>T:T,_={attempts:Math.max(1,S?.attempts??1),backoff:S?.backoff??ne.backoff,initialDelay:S?.initialDelay??ne.initialDelay,maxDelay:S?.maxDelay??ne.maxDelay,jitter:S?.jitter??ne.jitter,retryOn:S?.retryOn??ne.retryOn,onRetry:S?.onRetry??ne.onRetry};c&&s({type:"step_start",workflowId:r,stepId:D,stepKey:y,name:E,description:R,ts:Date.now(),...o&&{metadata:o}});let ee;for(let F=1;F<=_.attempts;F++){let yt=K?performance.now():0;try{let x;if(C?x=await vt(A,C,{name:E,key:y,attempt:F},m):x=await A(),x.ok){let Z=performance.now()-h;return s({type:"step_success",workflowId:r,stepId:D,stepKey:y,name:E,description:R,ts:Date.now(),durationMs:Z,...o&&{metadata:o}}),k&&s({type:"step_complete",workflowId:r,stepKey:k,name:E,description:R,ts:Date.now(),durationMs:Z,result:x,...o&&{metadata:o}}),x.value}if(ee=x,F<_.attempts&&_.retryOn(x.error,F)){let Z=he(F,_);s({type:"step_retry",workflowId:r,stepId:D,stepKey:y,name:E,ts:Date.now(),attempt:F+1,maxAttempts:_.attempts,delayMs:Z,error:x.error,...o&&{metadata:o},diagnostics:q(x.error,a.errorMeta,"result",F,performance.now()-h)}),_.onRetry(x.error,F,Z),await Ae(Z);continue}_.attempts>1&&s({type:"step_retries_exhausted",workflowId:r,stepId:D,stepKey:y,name:E,ts:Date.now(),durationMs:performance.now()-h,attempts:F,lastError:x.error,...o&&{metadata:o},diagnostics:q(x.error,a.errorMeta,"result",F,performance.now()-h)});break}catch(x){let Z=performance.now()-yt;if(Ot(x)){let G=x.ms;s({type:"step_timeout",workflowId:r,stepId:D,stepKey:y,name:E,ts:Date.now(),timeoutMs:G,attempt:F,...o&&{metadata:o},diagnostics:q(x,a.errorMeta,"timeout",F)}),s({type:"step_success",workflowId:r,stepId:D,stepKey:y,name:E,description:R,ts:Date.now(),durationMs:performance.now()-h,...o&&{metadata:o}}),k&&s({type:"step_complete",workflowId:r,stepKey:k,name:E,description:R,ts:Date.now(),durationMs:performance.now()-h,result:U(void 0),...o&&{metadata:o}});return}if(v(x))throw s({type:"step_aborted",workflowId:r,stepId:D,stepKey:y,name:E,description:R,ts:Date.now(),durationMs:Z,...o&&{metadata:o}}),x;if(Ye(x)){let G=It(x),ft=C?.ms??G?.timeoutMs??0;if(s({type:"step_timeout",workflowId:r,stepId:D,stepKey:y,name:E,ts:Date.now(),timeoutMs:ft,attempt:F,...o&&{metadata:o},diagnostics:q(x,a.errorMeta,"timeout",F)}),F<_.attempts&&_.retryOn(x,F)){let xe=he(F,_);s({type:"step_retry",workflowId:r,stepId:D,stepKey:y,name:E,ts:Date.now(),attempt:F+1,maxAttempts:_.attempts,delayMs:xe,error:x,...o&&{metadata:o},diagnostics:q(x,a.errorMeta,"timeout",F,performance.now()-h)}),_.onRetry(x,F,xe),await Ae(xe);continue}_.attempts>1&&s({type:"step_retries_exhausted",workflowId:r,stepId:D,stepKey:y,name:E,ts:Date.now(),durationMs:performance.now()-h,attempts:F,lastError:x,...o&&{metadata:o},diagnostics:q(x,a.errorMeta,"timeout",F,performance.now()-h)});let Se=performance.now()-h;throw s({type:"step_error",workflowId:r,stepId:D,stepKey:y,name:E,description:R,ts:Date.now(),durationMs:Se,error:x,...o&&{metadata:o},diagnostics:q(x,a.errorMeta,"timeout",F,Se)}),k&&s({type:"step_complete",workflowId:r,stepKey:k,name:E,description:R,ts:Date.now(),durationMs:Se,result:P(x,{cause:x}),meta:{origin:"throw",thrown:x},...o&&{metadata:o}}),n?.(x,E,u),g(x,{origin:"throw",thrown:x})}if(F<_.attempts&&_.retryOn(x,F)){let G=he(F,_);s({type:"step_retry",workflowId:r,stepId:D,stepKey:y,name:E,ts:Date.now(),attempt:F+1,maxAttempts:_.attempts,delayMs:G,error:x,...o&&{metadata:o},diagnostics:q(x,a.errorMeta,"throw",F,performance.now()-h)}),_.onRetry(x,F,G),await Ae(G);continue}_.attempts>1&&!Ye(x)&&s({type:"step_retries_exhausted",workflowId:r,stepId:D,stepKey:y,name:E,ts:Date.now(),durationMs:performance.now()-h,attempts:F,lastError:x,...o&&{metadata:o},diagnostics:q(x,a.errorMeta,"throw",F,performance.now()-h)});let Re=performance.now()-h,se;try{se=M(x)}catch(G){throw re(G)}throw s({type:"step_error",workflowId:r,stepId:D,stepKey:y,name:E,description:R,ts:Date.now(),durationMs:Re,error:se,...o&&{metadata:o},diagnostics:q(x,a.errorMeta,"throw",F,Re)}),k&&s({type:"step_complete",workflowId:r,stepKey:k,name:E,description:R,ts:Date.now(),durationMs:Re,result:P(se,{cause:x}),meta:{origin:"throw",thrown:x},...o&&{metadata:o}}),n?.(se,E,u),g(se,{origin:"throw",thrown:x})}}let Q=ee,ge=performance.now()-h,ke=N(Q.error,{origin:"result",resultCause:Q.cause});throw s({type:"step_error",workflowId:r,stepId:D,stepKey:y,name:E,description:R,ts:Date.now(),durationMs:ge,error:ke,...o&&{metadata:o},diagnostics:q(Q.error,a.errorMeta,"result",_.attempts,ge)}),k&&s({type:"step_complete",workflowId:r,stepKey:k,name:E,description:R,ts:Date.now(),durationMs:ge,result:Q,meta:{origin:"result",resultCause:Q.cause},...o&&{metadata:o}}),n?.(ke,E,u),g(ke,{origin:"result",resultCause:Q.cause})})();w.try=(l,T,i)=>{if(typeof l!="string"||l.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 a=i.key??l,o=l,E=l,y="error"in i?()=>i.error:i.onError,k=c;return(async()=>{let R=k?performance.now():0;c&&s({type:"step_start",workflowId:r,stepId:E,stepKey:a,name:o,ts:Date.now()});try{let S=await T(),C=performance.now()-R;return s({type:"step_success",workflowId:r,stepId:E,stepKey:a,name:o,ts:Date.now(),durationMs:C}),a&&s({type:"step_complete",workflowId:r,stepKey:a,name:o,ts:Date.now(),durationMs:C,result:U(S)}),S}catch(S){let C=y(S),D=performance.now()-R,K=N(C,{origin:"throw",thrown:S});throw s({type:"step_error",workflowId:r,stepId:E,stepKey:a,name:o,ts:Date.now(),durationMs:D,error:K}),a&&s({type:"step_complete",workflowId:r,stepKey:a,name:o,ts:Date.now(),durationMs:D,result:P(C,{cause:S}),meta:{origin:"throw",thrown:S}}),n?.(K,o,u),g(K,{origin:"throw",thrown:S})}})()},w.fromResult=(l,T,i)=>{if(typeof l!="string"||l.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 a=i.key??l,o=l,E=l,y="error"in i?()=>i.error:i.onError,k=c;return(async()=>{let R=k?performance.now():0;c&&s({type:"step_start",workflowId:r,stepId:E,stepKey:a,name:o,ts:Date.now()});let S=await T();if(S.ok){let C=performance.now()-R;return s({type:"step_success",workflowId:r,stepId:E,stepKey:a,name:o,ts:Date.now(),durationMs:C}),a&&s({type:"step_complete",workflowId:r,stepKey:a,name:o,ts:Date.now(),durationMs:C,result:U(S.value)}),S.value}else{let C=y(S.error),D=performance.now()-R,K=N(C,{origin:"result",resultCause:S.error});throw s({type:"step_error",workflowId:r,stepId:E,stepKey:a,name:o,ts:Date.now(),durationMs:D,error:K}),a&&s({type:"step_complete",workflowId:r,stepKey:a,name:o,ts:Date.now(),durationMs:D,result:P(C,{cause:S.error}),meta:{origin:"result",resultCause:S.error}}),n?.(K,o,u),g(K,{origin:"result",resultCause:S.error})}})()},w.fromNullable=(l,T,i,a)=>{if(typeof l!="string"||l.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 w(l,async()=>{let o=await T();return o!=null?U(o):P(i())},a)},w.retry=(l,T,i)=>{if(typeof l!="string"||l.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 w(l,T,{key:i.key??l,retry:{attempts:i.attempts,backoff:i.backoff,initialDelay:i.initialDelay,maxDelay:i.maxDelay,jitter:i.jitter,retryOn:i.retryOn,onRetry:i.onRetry},timeout:i.timeout})},w.withTimeout=(l,T,i)=>{if(typeof l!="string"||l.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 w(l,T,{key:i.key??l,timeout:i})},w.sleep=(l,T,i)=>{if(typeof l!="string"||l.length===0)throw new Error('[awaitly] step.sleep() requires an explicit string ID as the first argument. Example: step.sleep("delay", "5s")');let a=typeof T=="string"?xt(T):T;if(!a)throw new Error(`step.sleep: invalid duration '${T}'`);let o=a.millis,E=i?.signal;return w(l,async()=>{if(m?.aborted||E?.aborted){let y=new Error("Sleep aborted");throw y.name="AbortError",y}return new Promise((y,k)=>{let R={timeoutId:void 0},S=()=>{R.timeoutId&&clearTimeout(R.timeoutId);let C=new Error("Sleep aborted");C.name="AbortError",k(C)};m?.addEventListener("abort",S,{once:!0}),E?.addEventListener("abort",S,{once:!0}),R.timeoutId=setTimeout(()=>{m?.removeEventListener("abort",S),E?.removeEventListener("abort",S),y(U(void 0))},o)})},{key:i?.key??l,description:i?.description})},w.parallel=((...l)=>{if(typeof l[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 T=l[0],i=l[1];if(typeof i=="function")return X(T,i);if(i&&typeof i=="object"&&!Array.isArray(i)){let o=z(i);return ce(o,{name:T})}throw new TypeError("step.parallel(name, ...): second argument must be a function (array form) or an object of operations (object form).")}),w.race=(l,T)=>{let i=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let a=performance.now(),o=!1,E={scopeId:i,type:"race",winnerId:void 0};I.push(E);let y=()=>{if(o)return;o=!0;let k=I.findIndex(R=>R.scopeId===i);k!==-1&&I.splice(k,1),s({type:"scope_end",workflowId:r,scopeId:i,ts:Date.now(),durationMs:performance.now()-a,winnerId:E.winnerId})};s({type:"scope_start",workflowId:r,scopeId:i,scopeType:"race",name:l,ts:Date.now()});try{let k=await T();if(y(),!k.ok)throw n?.(k.error,l,u),g(k.error,{origin:"result",resultCause:k.cause});return k.value}catch(k){throw y(),k}})()},w.allSettled=(l,T)=>{let i=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let a=performance.now(),o=!1;I.push({scopeId:i,type:"allSettled"});let E=()=>{if(o)return;o=!0;let y=I.findIndex(k=>k.scopeId===i);y!==-1&&I.splice(y,1),s({type:"scope_end",workflowId:r,scopeId:i,ts:Date.now(),durationMs:performance.now()-a})};s({type:"scope_start",workflowId:r,scopeId:i,scopeType:"allSettled",name:l,ts:Date.now()});try{let y=await T();if(E(),!y.ok)throw n?.(y.error,l,u),g(y.error,{origin:"result",resultCause:y.cause});return y.value}catch(y){throw E(),y}})()},w.if=(l,T,i)=>i(),w.label=w.if,w.branch=async(l,T)=>{let{condition:i,then:a,else:o}=T;if(i())return await a();if(o)return await o()},w.arm=(l,T)=>({fn:l,errors:T}),w.forEach=async(l,T,i)=>{let a=[],o=i.maxIterations,E=0,y="run"in i,k=Symbol.asyncIterator in T?T:(async function*(){yield*T})();for await(let R of k){if(o!==void 0&&E>=o)break;let S;y?S=await i.run(R,E):S=await i.item.handler(R,E,w),a.push(S),E++}return a},w.item=l=>({__forEachItemHandler:!0,handler:l}),w.dep=(l,T)=>T,w.run=(l,T,i)=>w(l,()=>T,i),w.workflow=(l,T,i)=>w(l,T,i),w.andThen=(l,T,i,a)=>w(l,()=>i(T),a),w.match=async(l,T,i,a)=>w(l,async()=>{let o=await T;return o.ok?U(await i.ok(o.value)):U(await i.err(o.error,o.cause))},a),w.all=w.parallel,w.map=async(l,T,i,a)=>{let o=a?.concurrency??T.length;return w(l,()=>o>=T.length?Xe(T.map((E,y)=>i(E,y))):(async()=>{let E=[];for(let y=0;y<T.length;y+=o){let k=T.slice(y,y+o),R=await Xe(k.map((S,C)=>i(S,y+C)));if(!R.ok)return R;E.push(...R.value)}return U(E)})(),{key:a?.key})},w.withFallback=(l,T,i)=>{if(typeof l!="string"||l.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 a=i.key??l,o=l,E=b(a),y=c;return(async()=>{let k=y?performance.now():0;c&&s({type:"step_start",workflowId:r,stepId:E,stepKey:a,name:o,ts:Date.now()});let R;try{R=await T()}catch(h){if(v(h))throw s({type:"step_aborted",workflowId:r,stepId:E,stepKey:a,name:o,ts:Date.now(),durationMs:performance.now()-k}),h;let B;try{B=M(h)}catch(O){throw re(O)}if(i.on!==void 0&&i.on!==B){let O=performance.now()-k;throw s({type:"step_error",workflowId:r,stepId:E,stepKey:a,name:o,ts:Date.now(),durationMs:O,error:B}),a&&s({type:"step_complete",workflowId:r,stepKey:a,name:o,ts:Date.now(),durationMs:O,result:P(B,{cause:h}),meta:{origin:"throw",thrown:h}}),n?.(B,o,u),g(B,{origin:"throw",thrown:h})}let A;try{A=await i.fallback()}catch(O){if(v(O))throw s({type:"step_aborted",workflowId:r,stepId:E,stepKey:a,name:o,ts:Date.now(),durationMs:performance.now()-k}),O;let _;try{_=M(O)}catch(Q){throw re(Q)}let ee=performance.now()-k;throw s({type:"step_error",workflowId:r,stepId:E,stepKey:a,name:o,ts:Date.now(),durationMs:ee,error:_}),a&&s({type:"step_complete",workflowId:r,stepKey:a,name:o,ts:Date.now(),durationMs:ee,result:P(_,{cause:O}),meta:{origin:"throw",thrown:O}}),n?.(_,o,u),g(_,{origin:"throw",thrown:O})}if(A.ok){let O=performance.now()-k;return s({type:"step_success",workflowId:r,stepId:E,stepKey:a,name:o,ts:Date.now(),durationMs:O}),a&&s({type:"step_complete",workflowId:r,stepKey:a,name:o,ts:Date.now(),durationMs:O,result:A,meta:{origin:"fallback",fallbackUsed:!0,fallbackReason:String(B)}}),A.value}else{let O=performance.now()-k,_=N(A.error,{origin:"result",resultCause:A.cause});throw s({type:"step_error",workflowId:r,stepId:E,stepKey:a,name:o,ts:Date.now(),durationMs:O,error:_}),a&&s({type:"step_complete",workflowId:r,stepKey:a,name:o,ts:Date.now(),durationMs:O,result:A,meta:{origin:"result",resultCause:A.cause}}),n?.(_,o,u),g(_,{origin:"result",resultCause:A.cause})}}if(R.ok){let h=performance.now()-k;return s({type:"step_success",workflowId:r,stepId:E,stepKey:a,name:o,ts:Date.now(),durationMs:h}),a&&s({type:"step_complete",workflowId:r,stepKey:a,name:o,ts:Date.now(),durationMs:h,result:R}),R.value}let S=R.error;if(i.on!==void 0&&i.on!==S){let h=performance.now()-k,B=N(S,{origin:"result",resultCause:R.cause});throw s({type:"step_error",workflowId:r,stepId:E,stepKey:a,name:o,ts:Date.now(),durationMs:h,error:B}),a&&s({type:"step_complete",workflowId:r,stepKey:a,name:o,ts:Date.now(),durationMs:h,result:R,meta:{origin:"result",resultCause:R.cause}}),n?.(B,o,u),g(B,{origin:"result",resultCause:R.cause})}let C;try{C=await i.fallback()}catch(h){if(v(h))throw s({type:"step_aborted",workflowId:r,stepId:E,stepKey:a,name:o,ts:Date.now(),durationMs:performance.now()-k}),h;let B;try{B=M(h)}catch(O){throw re(O)}let A=performance.now()-k;throw s({type:"step_error",workflowId:r,stepId:E,stepKey:a,name:o,ts:Date.now(),durationMs:A,error:B}),a&&s({type:"step_complete",workflowId:r,stepKey:a,name:o,ts:Date.now(),durationMs:A,result:P(B,{cause:h}),meta:{origin:"throw",thrown:h}}),n?.(B,o,u),g(B,{origin:"throw",thrown:h})}if(C.ok){let h=performance.now()-k;return s({type:"step_success",workflowId:r,stepId:E,stepKey:a,name:o,ts:Date.now(),durationMs:h}),a&&s({type:"step_complete",workflowId:r,stepKey:a,name:o,ts:Date.now(),durationMs:h,result:C,meta:{origin:"fallback",fallbackUsed:!0,fallbackReason:String(S)}}),C.value}let D=performance.now()-k,K=N(C.error,{origin:"result",resultCause:C.cause});throw s({type:"step_error",workflowId:r,stepId:E,stepKey:a,name:o,ts:Date.now(),durationMs:D,error:K}),a&&s({type:"step_complete",workflowId:r,stepKey:a,name:o,ts:Date.now(),durationMs:D,result:C,meta:{origin:"result",resultCause:C.cause}}),n?.(K,o,u),g(K,{origin:"result",resultCause:C.cause})})()},w.withResource=(l,T)=>{if(typeof l!="string"||l.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 i=l,a=l,o=b(i),E=c;return(async()=>{let y=E?performance.now():0;c&&s({type:"step_start",workflowId:r,stepId:o,stepKey:i,name:a,ts:Date.now()});let k;try{k=await T.acquire()}catch(A){if(v(A))throw s({type:"step_aborted",workflowId:r,stepId:o,stepKey:i,name:a,ts:Date.now(),durationMs:performance.now()-y}),A;let O;try{O=M(A)}catch(ee){throw re(ee)}let _=performance.now()-y;throw s({type:"step_error",workflowId:r,stepId:o,stepKey:i,name:a,ts:Date.now(),durationMs:_,error:O}),i&&s({type:"step_complete",workflowId:r,stepKey:i,name:a,ts:Date.now(),durationMs:_,result:P(O,{cause:A}),meta:{origin:"throw",thrown:A}}),n?.(O,a,u),g(O,{origin:"throw",thrown:A})}if(!k.ok){let A=performance.now()-y,O=N(k.error,{origin:"result",resultCause:k.cause});throw s({type:"step_error",workflowId:r,stepId:o,stepKey:i,name:a,ts:Date.now(),durationMs:A,error:O}),i&&s({type:"step_complete",workflowId:r,stepKey:i,name:a,ts:Date.now(),durationMs:A,result:k,meta:{origin:"result",resultCause:k.cause}}),n?.(O,a,u),g(O,{origin:"result",resultCause:k.cause})}let R=k.value,S,C,D=!1;try{S=await T.use(R)}catch(A){if(v(A)){try{await T.release(R)}catch(O){console.warn(`[awaitly] step.withResource("${l}"): release threw after earlyExit:`,O)}throw A}C=A,D=!0}try{await T.release(R)}catch(A){console.warn(`[awaitly] step.withResource("${l}"): release threw:`,A)}if(D){let A;try{A=M(C)}catch(_){throw re(_)}let O=performance.now()-y;throw s({type:"step_error",workflowId:r,stepId:o,stepKey:i,name:a,ts:Date.now(),durationMs:O,error:A}),i&&s({type:"step_complete",workflowId:r,stepKey:i,name:a,ts:Date.now(),durationMs:O,result:P(A,{cause:C}),meta:{origin:"throw",thrown:C}}),n?.(A,a,u),g(A,{origin:"throw",thrown:C})}let K=S;if(K.ok){let A=performance.now()-y;return s({type:"step_success",workflowId:r,stepId:o,stepKey:i,name:a,ts:Date.now(),durationMs:A}),i&&s({type:"step_complete",workflowId:r,stepKey:i,name:a,ts:Date.now(),durationMs:A,result:K}),K.value}let h=performance.now()-y,B=N(K.error,{origin:"result",resultCause:K.cause});throw s({type:"step_error",workflowId:r,stepId:o,stepKey:i,name:a,ts:Date.now(),durationMs:h,error:B}),i&&s({type:"step_complete",workflowId:r,stepKey:i,name:a,ts:Date.now(),durationMs:h,result:K,meta:{origin:"result",resultCause:K.cause}}),n?.(B,a,u),g(B,{origin:"result",resultCause:K.cause})})()};let Y=await e({step:w});if(process.env.NODE_ENV!=="production"&&Y!==null&&typeof Y=="object"&&"ok"in Y&&typeof Y.ok=="boolean"){let l=Y;(l.ok===!0&&"value"in l||l.ok===!1&&"error"in l)&&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 U(Y)}catch(
|
|
7
|
-
|
|
8
|
-
`).filter(Boolean),
|
|
6
|
+
See: https://jagreehal.github.io/awaitly/guides/troubleshooting/#returning-ok-from-workflow-executor-double-wrapping`)}return U(Y)}catch(w){if(Pt(w))throw w.thrown;if(v(w)){let X=w.meta.origin==="throw"?w.meta.thrown:w.meta.origin==="result"?w.meta.resultCause:void 0;return P(w.error,{cause:X})}let z=M(w);return n?.(z,"unexpected",u),P(z,{cause:w})}}Ge.strict=(e,t)=>Ge(e,t);async function Xe(e){return e.length===0?U([]):new Promise(t=>{let n=!1,c=e.length,f=new Array(e.length);for(let d=0;d<e.length;d++){let p=d;Promise.resolve(e[p]).catch(u=>P({type:"PROMISE_REJECTED",cause:u},{cause:{type:"PROMISE_REJECTION",reason:u}})).then(u=>{if(!n){if(!u.ok){n=!0,t(u);return}f[p]=u.value,c--,c===0&&t(U(f))}})}})}function Ie(e={}){let t=e.maxItemsPerStream??1/0,n=new Map;function c(d,p){return`${d}:${p}`}function f(d,p){let u=c(d,p),m=n.get(u);return m||(m={metadata:{id:u,namespace:p,workflowId:d,length:0,closed:!1,createdAt:Date.now()},items:[],subscribers:new Set},n.set(u,m)),m}return{async append(d,p,u){try{let m=f(d,p);if(m.metadata.closed)return P(W("write_error","Cannot write to closed stream"));if(m.items.length>=t)return P(W("write_error",`Stream exceeded max items limit (${t})`));m.items.push(u),m.metadata.length=m.items.length,m.metadata.lastWriteAt=Date.now();for(let r of m.subscribers)try{r(u)}catch{}return U(void 0)}catch(m){return P(W("write_error","Failed to append item",m))}},async read(d,p,u,m){try{let r=c(d,p),M=n.get(r);if(!M)return U([]);let I=m!==void 0?Math.min(u+m,M.items.length):M.items.length,j=M.items.slice(u,I);return U(j)}catch(r){return P(W("read_error","Failed to read items",r))}},async getMetadata(d,p){try{let u=c(d,p),m=n.get(u);return U(m?.metadata)}catch(u){return P(W("metadata_error","Failed to get metadata",u))}},async closeStream(d,p){try{let u=c(d,p),m=n.get(u);return m&&(m.metadata.closed=!0,m.metadata.closedAt=Date.now()),U(void 0)}catch(u){return P(W("close_error","Failed to close stream",u))}},subscribe(d,p,u){let m=f(d,p),r=u;return m.subscribers.add(r),()=>{m.subscribers.delete(r)}}}}function et(e={}){let t=new Map,n=e.maxItemsPerStream??1/0;function c(p,u){return`${p}:${u}`}function f(p,u){let m=c(p,u),r=t.get(m);return r||(r={metadata:{id:m,namespace:u,workflowId:p,length:0,closed:!1,createdAt:Date.now()},items:[],subscribers:new Set},t.set(m,r)),r}return{...Ie(e),async append(p,u,m){try{let r=f(p,u);if(r.metadata.closed)return P(W("write_error","Cannot write to closed stream"));if(r.items.length>=n)return P(W("write_error",`Stream exceeded max items limit (${n})`));r.items.push(m),r.metadata.length=r.items.length,r.metadata.lastWriteAt=Date.now();for(let M of r.subscribers)try{M(m)}catch{}return U(void 0)}catch(r){return P(W("write_error","Failed to append item",r))}},async read(p,u,m,r){try{let M=c(p,u),I=t.get(M);if(!I)return U([]);let j=r!==void 0?Math.min(m+r,I.items.length):I.items.length,b=I.items.slice(m,j);return U(b)}catch(M){return P(W("read_error","Failed to read items",M))}},async getMetadata(p,u){try{let m=c(p,u),r=t.get(m);return U(r?.metadata)}catch(m){return P(W("metadata_error","Failed to get metadata",m))}},async closeStream(p,u){try{let m=c(p,u),r=t.get(m);return r&&(r.metadata.closed=!0,r.metadata.closedAt=Date.now()),U(void 0)}catch(m){return P(W("close_error","Failed to close stream",m))}},subscribe(p,u,m){let r=f(p,u),M=m;return r.subscribers.add(M),()=>{r.subscribers.delete(M)}},clear(){t.clear()},keys(){return Array.from(t.keys())},has(p,u){return t.has(c(p,u))},delete(p,u){return t.delete(c(p,u))}}}function tt(e){let{directory:t,fs:n}=e,c=new Map;function f(b,s){return`${t}/${b}/${s}`}function d(b,s){return`${f(b,s)}/metadata.json`}function p(b,s){return`${f(b,s)}/items.jsonl`}function u(b,s){return`${b}:${s}`}async function m(b,s){let g=f(b,s);await n.mkdir(g,{recursive:!0})}async function r(b,s){let g=d(b,s);if(!await n.exists(g))return;let v=await n.readFile(g);return JSON.parse(v)}async function M(b,s,g){await m(b,s);let v=d(b,s);await n.writeFile(v,JSON.stringify(g,null,2))}async function I(b,s,g){await m(b,s);let v=p(b,s),N=JSON.stringify(g)+`
|
|
7
|
+
`,H="";await n.exists(v)&&(H=await n.readFile(v)),await n.writeFile(v,H+N)}async function j(b,s,g,v){let N=p(b,s);if(!await n.exists(N))return[];let J=(await n.readFile(N)).trim().split(`
|
|
8
|
+
`).filter(Boolean),te=[];for(let _e of J){let w=JSON.parse(_e);if(w.position>=g&&(te.push(w),v!==void 0&&te.length>=v))break}return te}return{async append(b,s,g){try{let v=await r(b,s);if(v||(v={id:`${b}:${s}`,namespace:s,workflowId:b,length:0,closed:!1,createdAt:Date.now()}),v.closed)return P(W("write_error","Cannot write to closed stream"));let N={value:g.value,position:g.position,ts:g.ts};await I(b,s,N),v.length++,v.lastWriteAt=Date.now(),await M(b,s,v);let H=u(b,s),J=c.get(H);if(J)for(let te of J)try{te(g)}catch{}return U(void 0)}catch(v){return P(W("write_error","Failed to append item",v))}},async read(b,s,g,v){try{let H=(await j(b,s,g,v)).map(J=>({value:J.value,position:J.position,ts:J.ts}));return U(H)}catch(N){return P(W("read_error","Failed to read items",N))}},async getMetadata(b,s){try{let g=await r(b,s);return g?U({id:g.id,namespace:g.namespace,workflowId:g.workflowId,length:g.length,closed:g.closed,createdAt:g.createdAt,lastWriteAt:g.lastWriteAt,closedAt:g.closedAt}):U(void 0)}catch(g){return P(W("metadata_error","Failed to get metadata",g))}},async closeStream(b,s){try{let g=await r(b,s);return g&&(g.closed=!0,g.closedAt=Date.now(),await M(b,s,g)),U(void 0)}catch(g){return P(W("close_error","Failed to close stream",g))}},subscribe(b,s,g){let v=u(b,s),N=c.get(v);N||(N=new Set,c.set(v,N));let H=g;return N.add(H),()=>{N?.delete(H),N?.size===0&&c.delete(v)}}}}async function*$(e){for(;e.readable;){let t=await e.read();if(!t.ok){if(fe(t.error))break;throw t.error}yield t.value}}async function*rt(e,t){let n=V(e)?$(e):e,c=0;for await(let f of n)yield await t(f,c++)}async function*nt(e,t){let n=V(e)?$(e):e,c=0;for await(let f of n)await t(f,c++)&&(yield f)}async function*ot(e,t){if(t<1)throw new Error("Chunk size must be at least 1");let n=V(e)?$(e):e,c=[];for await(let f of n)c.push(f),c.length>=t&&(yield c,c=[]);c.length>0&&(yield c)}async function*st(e,t){let n=V(e)?$(e):e,c=0;for await(let f of n){let d=t(f,c++);if(Symbol.asyncIterator in d)for await(let p of d)yield p;else for(let p of d)yield p}}async function*at(e,t){let n=V(e)?$(e):e,c=0;for await(let f of n){let d=await t(f,c++);if(!d.ok){yield P(d.error);return}let p=d.value;if(Symbol.asyncIterator in p)for await(let u of p)yield U(u);else for(let u of p)yield U(u)}}async function*it(e,t){let n=V(e)?$(e):e,c=0;for await(let f of n)yield await t(f,c++)}async function*ut(e,t){if(t<=0)return;let n=V(e)?$(e):e,c=0;for await(let f of n)if(yield f,c++,c>=t)break}async function*ct(e,t){let n=V(e)?$(e):e,c=0;for await(let f of n){if(c<t){c++;continue}yield f}}async function*lt(e,t){let n=V(e)?$(e):e,c=0;for await(let f of n){if(!await t(f,c++))break;yield f}}async function*pt(e,t){let n=V(e)?$(e):e,c=!0,f=0;for await(let d of n)c&&await t(d,f++)||(c=!1,yield d)}async function mt(e){let t=[],n=V(e)?$(e):e;for await(let c of n)t.push(c);return t}async function dt(e,t,n){let c=n,f=V(e)?$(e):e,d=0;for await(let p of f)c=await t(c,p,d++);return c}function V(e){return typeof e=="object"&&e!==null&&"read"in e&&typeof e.read=="function"&&"readable"in e}function Et(e,...t){let n=V(e)?$(e):e;for(let c of t)n=c(n);return n}function Dt(e){let{store:t,workflowId:n,namespace:c="default",startIndex:f=0,pollInterval:d=100,pollTimeout:p=3e4}=e,u=f,m=!0,r=!1,M=[],I=0;return{async read(){if(r)return P(ae("closed","Reader is closed"));if(I<M.length){let s=M[I++];return u=s.position+1,U(s.value)}let b=Date.now();for(;Date.now()-b<p;){let s=await t.read(n,c,u,100);if(!s.ok)return P(ae("store_error",s.error.message,s.error));let g=s.value;if(g.length>0){M=g,I=1;let N=g[0];return u=N.position+1,U(N.value)}let v=await t.getMetadata(n,c);if(v.ok&&v.value?.closed)return m=!1,P(ie(u));await new Promise(N=>setTimeout(N,d))}return m=!1,P(ie(u))},close(){r=!0,m=!1,M=[]},get readable(){return m},get position(){return u},get namespace(){return c}}}0&&(module.exports={STREAM_BACKPRESSURE_ERROR,STREAM_CLOSE_ERROR,STREAM_ENDED,STREAM_READ_ERROR,STREAM_STORE_ERROR,STREAM_WRITE_ERROR,chunk,collect,createBackpressureController,createFileStreamStore,createMemoryStreamStore,createTestableMemoryStreamStore,filter,flatMap,flatMapAsync,getStreamReader,isStreamBackpressureError,isStreamEnded,isStreamReadError,isStreamStoreError,isStreamWriteError,map,mapAsync,pipe,reduce,shouldApplyBackpressure,skip,skipWhile,streamBackpressureError,streamCloseError,streamEnded,streamReadError,streamStoreError,streamWriteError,take,takeWhile,toAsyncIterable});
|
|
9
9
|
//# sourceMappingURL=streaming.cjs.map
|