@jagreehal/workflow 1.9.0 → 1.11.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/resource.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var B=Object.defineProperty;var ie=Object.getOwnPropertyDescriptor;var pe=Object.getOwnPropertyNames;var ce=Object.prototype.hasOwnProperty;var le=(e,t)=>{for(var i in t)B(e,i,{get:t[i],enumerable:!0})},Ee=(e,t,i,k)=>{if(t&&typeof t=="object"||typeof t=="function")for(let x of pe(t))!ce.call(e,x)&&x!==i&&B(e,x,{get:()=>t[x],enumerable:!(k=ie(t,x))||k.enumerable});return e};var ye=e=>Ee(B({},"__esModule",{value:!0}),e);var ge={};le(ge,{createResource:()=>Se,createResourceScope:()=>oe,isResourceCleanupError:()=>H,withScope:()=>xe});module.exports=ye(ge);var q=e=>({ok:!0,value:e}),b=(e,t)=>({ok:!1,error:e,...t?.cause!==void 0?{cause:t.cause}:{}});var we=e=>typeof e=="object"&&e!==null&&e.type==="UNEXPECTED_ERROR",j=Symbol.for("step_timeout_marker");function Z(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:j in e}function me(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(j in e)return e[j]}}var ne=Symbol("early-exit");function Te(e,t){return{[ne]:!0,error:e,meta:t}}function ke(e){return typeof e=="object"&&e!==null&&e[ne]===!0}var re=Symbol("mapper-exception");function de(e){return{[re]:!0,thrown:e}}function fe(e){return typeof e=="object"&&e!==null&&e[re]===!0}function Re(e){return typeof e=="string"?{name:e}:e??{}}function G(e,t){let{backoff:i,initialDelay:k,maxDelay:x,jitter:O}=t,d;switch(i){case"fixed":d=k;break;case"linear":d=k*e;break;case"exponential":d=k*Math.pow(2,e-1);break}if(d=Math.min(d,x),O){let s=d*.25*Math.random();d=d+s}return Math.floor(d)}function z(e){return new Promise(t=>setTimeout(t,e))}var ee=Symbol("timeout");async function Ce(e,t,i){let k=new AbortController,x=t.error??{type:"STEP_TIMEOUT",stepName:i.name,stepKey:i.key,timeoutMs:t.ms,attempt:i.attempt},O,d=new Promise((v,f)=>{O=setTimeout(()=>{k.abort(),f({[ee]:!0,error:x})},t.ms)}),s;t.signal?s=Promise.resolve(e(k.signal)):s=Promise.resolve(e());try{return await Promise.race([s,d])}catch(v){if(typeof v=="object"&&v!==null&&v[ee]===!0){let f=v.error;if(typeof f=="object"&&f!==null&&f.type!=="STEP_TIMEOUT"){let V={timeoutMs:t.ms,stepName:i.name,stepKey:i.key,attempt:i.attempt};j in f?f[j]=V:Object.defineProperty(f,j,{value:V,enumerable:!1,writable:!0,configurable:!1})}throw f}throw v}finally{clearTimeout(O)}}var K={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function te(e,t){let{onError:i,onEvent:k,catchUnexpected:x,workflowId:O,context:d}=t&&typeof t=="object"?t:{},s=O??crypto.randomUUID(),v=!i&&!x,f=[],V=0,W=n=>n??`step_${++V}`,l=n=>{let S=n.context!==void 0||d===void 0?n:{...n,context:d};if(S.type==="step_success"){let _=S.stepId;for(let U=f.length-1;U>=0;U--){let F=f[U];if(F.type==="race"&&!F.winnerId){F.winnerId=_;break}}}k?.(S,d)},M=Te,Q=n=>ke(n),X=(n,S)=>v?S?.origin==="result"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:n,...S.resultCause!==void 0?{cause:S.resultCause}:{}}}:S?.origin==="throw"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"throw",error:n,thrown:S.thrown}}:{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:n}}:n,se=n=>n.origin==="result"?n.resultCause:n.thrown,ue=n=>({type:"UNEXPECTED_ERROR",cause:n.meta.origin==="result"?{type:"STEP_FAILURE",origin:"result",error:n.error,...n.meta.resultCause!==void 0?{cause:n.meta.resultCause}:{}}:{type:"STEP_FAILURE",origin:"throw",error:n.error,thrown:n.meta.thrown}});try{let S=function(y,a){let u=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let r=performance.now(),o=!1;f.push({scopeId:u,type:"parallel"});let R=()=>{if(o)return;o=!0;let c=f.findIndex(p=>p.scopeId===u);c!==-1&&f.splice(c,1),l({type:"scope_end",workflowId:s,scopeId:u,ts:Date.now(),durationMs:performance.now()-r})};l({type:"scope_start",workflowId:s,scopeId:u,scopeType:"parallel",name:y,ts:Date.now()});try{let c=await a();if(R(),!c.ok)throw i?.(c.error,y,d),M(c.error,{origin:"result",resultCause:c.cause});return c.value}catch(c){throw R(),c}})()},_=function(y,a){let u=Object.keys(y),r=a.name??`Parallel(${u.join(", ")})`,o=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let R=performance.now(),c=!1;f.push({scopeId:o,type:"parallel"});let p=()=>{if(c)return;c=!0;let w=f.findIndex(T=>T.scopeId===o);w!==-1&&f.splice(w,1),l({type:"scope_end",workflowId:s,scopeId:o,ts:Date.now(),durationMs:performance.now()-R})};l({type:"scope_start",workflowId:s,scopeId:o,scopeType:"parallel",name:r,ts:Date.now()});try{let w=await new Promise(A=>{if(u.length===0){A([]);return}let h=!1,C=u.length,N=new Array(u.length);for(let P=0;P<u.length;P++){let D=u[P],Y=P;Promise.resolve(y[D]()).catch(m=>b({type:"PROMISE_REJECTED",cause:m},{cause:{type:"PROMISE_REJECTION",reason:m}})).then(m=>{if(!h){if(!m.ok){h=!0,A([{key:D,result:m}]);return}N[Y]={key:D,result:m},C--,C===0&&A(N)}})}});p();let T={};for(let{key:A,result:h}of w){if(!h.ok)throw i?.(h.error,A,d),M(h.error,{origin:"result",resultCause:h.cause});T[A]=h.value}return T}catch(w){throw p(),w}})()};var Ae=S,he=_;let n=(y,a)=>(async()=>{let u=Re(a),{name:r,key:o,retry:R,timeout:c}=u,p=W(o),w=k,T=w?performance.now():0;if(!(typeof y=="function")){if(R&&R.attempts>1)throw new Error("step: retry options require a function operation. Direct Promise/Result values cannot be re-executed on retry. Wrap your operation in a function: step(() => yourOperation, { retry: {...} })");if(c)throw new Error("step: timeout options require a function operation. Direct Promise/Result values cannot be wrapped with timeout after they've started. Wrap your operation in a function: step(() => yourOperation, { timeout: {...} })")}let C={attempts:Math.max(1,R?.attempts??1),backoff:R?.backoff??K.backoff,initialDelay:R?.initialDelay??K.initialDelay,maxDelay:R?.maxDelay??K.maxDelay,jitter:R?.jitter??K.jitter,retryOn:R?.retryOn??K.retryOn,onRetry:R?.onRetry??K.onRetry};k&&l({type:"step_start",workflowId:s,stepId:p,stepKey:o,name:r,ts:Date.now()});let N;for(let m=1;m<=C.attempts;m++){let ae=w?performance.now():0;try{let E;if(typeof y=="function"?c?E=await Ce(y,c,{name:r,key:o,attempt:m}):E=await y():E=await y,E.ok){let I=performance.now()-T;return l({type:"step_success",workflowId:s,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:I}),o&&l({type:"step_complete",workflowId:s,stepKey:o,name:r,ts:Date.now(),durationMs:I,result:E}),E.value}if(N=E,m<C.attempts&&C.retryOn(E.error,m)){let I=G(m,C);l({type:"step_retry",workflowId:s,stepId:p,stepKey:o,name:r,ts:Date.now(),attempt:m+1,maxAttempts:C.attempts,delayMs:I,error:E.error}),C.onRetry(E.error,m,I),await z(I);continue}C.attempts>1&&l({type:"step_retries_exhausted",workflowId:s,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:performance.now()-T,attempts:m,lastError:E.error});break}catch(E){let I=performance.now()-ae;if(Q(E))throw l({type:"step_aborted",workflowId:s,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:I}),E;if(Z(E)){let g=me(E),$=c?.ms??g?.timeoutMs??0;if(l({type:"step_timeout",workflowId:s,stepId:p,stepKey:o,name:r,ts:Date.now(),timeoutMs:$,attempt:m}),m<C.attempts&&C.retryOn(E,m)){let J=G(m,C);l({type:"step_retry",workflowId:s,stepId:p,stepKey:o,name:r,ts:Date.now(),attempt:m+1,maxAttempts:C.attempts,delayMs:J,error:E}),C.onRetry(E,m,J),await z(J);continue}C.attempts>1&&l({type:"step_retries_exhausted",workflowId:s,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:performance.now()-T,attempts:m,lastError:E})}if(m<C.attempts&&C.retryOn(E,m)){let g=G(m,C);l({type:"step_retry",workflowId:s,stepId:p,stepKey:o,name:r,ts:Date.now(),attempt:m+1,maxAttempts:C.attempts,delayMs:g,error:E}),C.onRetry(E,m,g),await z(g);continue}C.attempts>1&&!Z(E)&&l({type:"step_retries_exhausted",workflowId:s,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:performance.now()-T,attempts:m,lastError:E});let L=performance.now()-T;if(x){let g;try{g=x(E)}catch($){throw de($)}throw l({type:"step_error",workflowId:s,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:L,error:g}),o&&l({type:"step_complete",workflowId:s,stepKey:o,name:r,ts:Date.now(),durationMs:L,result:b(g,{cause:E}),meta:{origin:"throw",thrown:E}}),i?.(g,r,d),M(g,{origin:"throw",thrown:E})}else{let g={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:E}};throw l({type:"step_error",workflowId:s,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:L,error:g}),o&&l({type:"step_complete",workflowId:s,stepKey:o,name:r,ts:Date.now(),durationMs:L,result:b(g,{cause:E}),meta:{origin:"throw",thrown:E}}),E}}}let P=N,D=performance.now()-T,Y=X(P.error,{origin:"result",resultCause:P.cause});throw l({type:"step_error",workflowId:s,stepId:p,stepKey:o,name:r,ts:Date.now(),durationMs:D,error:Y}),o&&l({type:"step_complete",workflowId:s,stepKey:o,name:r,ts:Date.now(),durationMs:D,result:P,meta:{origin:"result",resultCause:P.cause}}),i?.(P.error,r,d),M(P.error,{origin:"result",resultCause:P.cause})})();n.try=(y,a)=>{let u=a.name,r=a.key,o=W(r),R="error"in a?()=>a.error:a.onError,c=k;return(async()=>{let p=c?performance.now():0;k&&l({type:"step_start",workflowId:s,stepId:o,stepKey:r,name:u,ts:Date.now()});try{let w=await y(),T=performance.now()-p;return l({type:"step_success",workflowId:s,stepId:o,stepKey:r,name:u,ts:Date.now(),durationMs:T}),r&&l({type:"step_complete",workflowId:s,stepKey:r,name:u,ts:Date.now(),durationMs:T,result:q(w)}),w}catch(w){let T=R(w),A=performance.now()-p,h=X(T,{origin:"throw",thrown:w});throw l({type:"step_error",workflowId:s,stepId:o,stepKey:r,name:u,ts:Date.now(),durationMs:A,error:h}),r&&l({type:"step_complete",workflowId:s,stepKey:r,name:u,ts:Date.now(),durationMs:A,result:b(T,{cause:w}),meta:{origin:"throw",thrown:w}}),i?.(T,u,d),M(T,{origin:"throw",thrown:w})}})()},n.fromResult=(y,a)=>{let u=a.name,r=a.key,o=W(r),R="error"in a?()=>a.error:a.onError,c=k;return(async()=>{let p=c?performance.now():0;k&&l({type:"step_start",workflowId:s,stepId:o,stepKey:r,name:u,ts:Date.now()});let w=await y();if(w.ok){let T=performance.now()-p;return l({type:"step_success",workflowId:s,stepId:o,stepKey:r,name:u,ts:Date.now(),durationMs:T}),r&&l({type:"step_complete",workflowId:s,stepKey:r,name:u,ts:Date.now(),durationMs:T,result:q(w.value)}),w.value}else{let T=R(w.error),A=performance.now()-p,h=X(T,{origin:"result",resultCause:w.error});throw l({type:"step_error",workflowId:s,stepId:o,stepKey:r,name:u,ts:Date.now(),durationMs:A,error:h}),r&&l({type:"step_complete",workflowId:s,stepKey:r,name:u,ts:Date.now(),durationMs:A,result:b(T,{cause:w.error}),meta:{origin:"result",resultCause:w.error}}),i?.(T,u,d),M(T,{origin:"result",resultCause:w.error})}})()},n.retry=(y,a)=>n(y,{name:a.name,key:a.key,retry:{attempts:a.attempts,backoff:a.backoff,initialDelay:a.initialDelay,maxDelay:a.maxDelay,jitter:a.jitter,retryOn:a.retryOn,onRetry:a.onRetry},timeout:a.timeout}),n.withTimeout=(y,a)=>n(y,{name:a.name,key:a.key,timeout:a}),n.parallel=((...y)=>{if(typeof y[0]=="string"){let a=y[0],u=y[1];return S(a,u)}else{let a=y[0],u=y[1]??{};return _(a,u)}}),n.race=(y,a)=>{let u=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let r=performance.now(),o=!1,R={scopeId:u,type:"race",winnerId:void 0};f.push(R);let c=()=>{if(o)return;o=!0;let p=f.findIndex(w=>w.scopeId===u);p!==-1&&f.splice(p,1),l({type:"scope_end",workflowId:s,scopeId:u,ts:Date.now(),durationMs:performance.now()-r,winnerId:R.winnerId})};l({type:"scope_start",workflowId:s,scopeId:u,scopeType:"race",name:y,ts:Date.now()});try{let p=await a();if(c(),!p.ok)throw i?.(p.error,y,d),M(p.error,{origin:"result",resultCause:p.cause});return p.value}catch(p){throw c(),p}})()},n.allSettled=(y,a)=>{let u=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let r=performance.now(),o=!1;f.push({scopeId:u,type:"allSettled"});let R=()=>{if(o)return;o=!0;let c=f.findIndex(p=>p.scopeId===u);c!==-1&&f.splice(c,1),l({type:"scope_end",workflowId:s,scopeId:u,ts:Date.now(),durationMs:performance.now()-r})};l({type:"scope_start",workflowId:s,scopeId:u,scopeType:"allSettled",name:y,ts:Date.now()});try{let c=await a();if(R(),!c.ok)throw i?.(c.error,y,d),M(c.error,{origin:"result",resultCause:c.cause});return c.value}catch(c){throw R(),c}})()};let F=await e(n);return q(F)}catch(n){if(fe(n))throw n.thrown;if(Q(n)){let _=se(n.meta);if(x||i)return b(n.error,{cause:_});if(we(n.error))return b(n.error,{cause:_});let U=ue(n);return b(U,{cause:_})}if(x){let _=x(n);return i?.(_,"unexpected",d),b(_,{cause:n})}let S={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:n}};return i?.(S,"unexpected",d),b(S,{cause:n})}}te.strict=(e,t)=>te(e,t);function H(e){return typeof e=="object"&&e!==null&&e.type==="RESOURCE_CLEANUP_ERROR"}function oe(){let e=[];return{add:t=>(e.push(t),t.value),close:async()=>{let t=[];for(let i=e.length-1;i>=0;i--)try{await e[i].close()}catch(k){t.push(k)}if(e.length=0,t.length>0)throw{type:"RESOURCE_CLEANUP_ERROR",errors:t}},has:t=>e.includes(t),size:()=>e.length}}async function xe(e){let t=oe(),i;try{i=await e(t)}catch(k){try{await t.close()}catch(x){if(H(x))return b({...x,originalResult:{thrown:k}})}throw k}try{await t.close()}catch(k){if(H(k))return b({...k,originalResult:i});throw k}return i}async function Se(e,t){let i=await e();return{value:i,close:async()=>{await t(i)}}}0&&(module.exports={createResource,createResourceScope,isResourceCleanupError,withScope});
1
+ "use strict";var B=Object.defineProperty;var ae=Object.getOwnPropertyDescriptor;var ie=Object.getOwnPropertyNames;var pe=Object.prototype.hasOwnProperty;var ce=(e,t)=>{for(var i in t)B(e,i,{get:t[i],enumerable:!0})},le=(e,t,i,k)=>{if(t&&typeof t=="object"||typeof t=="function")for(let x of ie(t))!pe.call(e,x)&&x!==i&&B(e,x,{get:()=>t[x],enumerable:!(k=ae(t,x))||k.enumerable});return e};var Ee=e=>le(B({},"__esModule",{value:!0}),e);var Se={};ce(Se,{createResource:()=>xe,createResourceScope:()=>oe,isResourceCleanupError:()=>H,withScope:()=>Ce});module.exports=Ee(Se);var q=e=>({ok:!0,value:e}),b=(e,t)=>({ok:!1,error:e,...t?.cause!==void 0?{cause:t.cause}:{}});var ye=e=>typeof e=="object"&&e!==null&&e.type==="UNEXPECTED_ERROR",j=Symbol.for("step_timeout_marker");function Z(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:j in e}function we(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(j in e)return e[j]}}var ne=Symbol("early-exit");function me(e,t){return{[ne]:!0,error:e,meta:t}}function Te(e){return typeof e=="object"&&e!==null&&e[ne]===!0}var re=Symbol("mapper-exception");function ke(e){return{[re]:!0,thrown:e}}function de(e){return typeof e=="object"&&e!==null&&e[re]===!0}function fe(e){return typeof e=="string"?{name:e}:e??{}}function G(e,t){let{backoff:i,initialDelay:k,maxDelay:x,jitter:O}=t,d;switch(i){case"fixed":d=k;break;case"linear":d=k*e;break;case"exponential":d=k*Math.pow(2,e-1);break}if(d=Math.min(d,x),O){let s=d*.25*Math.random();d=d+s}return Math.floor(d)}function z(e){return new Promise(t=>setTimeout(t,e))}var ee=Symbol("timeout");async function Re(e,t,i){let k=new AbortController,x=t.error??{type:"STEP_TIMEOUT",stepName:i.name,stepKey:i.key,timeoutMs:t.ms,attempt:i.attempt},O,d=new Promise((v,f)=>{O=setTimeout(()=>{k.abort(),f({[ee]:!0,error:x})},t.ms)}),s;t.signal?s=Promise.resolve(e(k.signal)):s=Promise.resolve(e());try{return await Promise.race([s,d])}catch(v){if(typeof v=="object"&&v!==null&&v[ee]===!0){let f=v.error;if(typeof f=="object"&&f!==null&&f.type!=="STEP_TIMEOUT"){let V={timeoutMs:t.ms,stepName:i.name,stepKey:i.key,attempt:i.attempt};j in f?f[j]=V:Object.defineProperty(f,j,{value:V,enumerable:!1,writable:!0,configurable:!1})}throw f}throw v}finally{clearTimeout(O)}}var K={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function te(e,t){let{onError:i,onEvent:k,catchUnexpected:x,workflowId:O,context:d}=t&&typeof t=="object"?t:{},s=O??crypto.randomUUID(),v=!i&&!x,f=[],V=0,W=r=>r??`step_${++V}`,l=r=>{let S=r.context!==void 0||d===void 0?r:{...r,context:d};if(S.type==="step_success"){let _=S.stepId;for(let U=f.length-1;U>=0;U--){let N=f[U];if(N.type==="race"&&!N.winnerId){N.winnerId=_;break}}}k?.(S,d)},M=me,Q=r=>Te(r),X=(r,S)=>v?S?.origin==="result"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:r,...S.resultCause!==void 0?{cause:S.resultCause}:{}}}:S?.origin==="throw"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"throw",error:r,thrown:S.thrown}}:{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:r}}:r,se=r=>({type:"UNEXPECTED_ERROR",cause:r.meta.origin==="result"?{type:"STEP_FAILURE",origin:"result",error:r.error,...r.meta.resultCause!==void 0?{cause:r.meta.resultCause}:{}}:{type:"STEP_FAILURE",origin:"throw",error:r.error,thrown:r.meta.thrown}});try{let S=function(y,a){let u=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let n=performance.now(),o=!1;f.push({scopeId:u,type:"parallel"});let R=()=>{if(o)return;o=!0;let c=f.findIndex(p=>p.scopeId===u);c!==-1&&f.splice(c,1),l({type:"scope_end",workflowId:s,scopeId:u,ts:Date.now(),durationMs:performance.now()-n})};l({type:"scope_start",workflowId:s,scopeId:u,scopeType:"parallel",name:y,ts:Date.now()});try{let c=await a();if(R(),!c.ok)throw i?.(c.error,y,d),M(c.error,{origin:"result",resultCause:c.cause});return c.value}catch(c){throw R(),c}})()},_=function(y,a){let u=Object.keys(y),n=a.name??`Parallel(${u.join(", ")})`,o=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let R=performance.now(),c=!1;f.push({scopeId:o,type:"parallel"});let p=()=>{if(c)return;c=!0;let w=f.findIndex(T=>T.scopeId===o);w!==-1&&f.splice(w,1),l({type:"scope_end",workflowId:s,scopeId:o,ts:Date.now(),durationMs:performance.now()-R})};l({type:"scope_start",workflowId:s,scopeId:o,scopeType:"parallel",name:n,ts:Date.now()});try{let w=await new Promise(A=>{if(u.length===0){A([]);return}let h=!1,C=u.length,F=new Array(u.length);for(let P=0;P<u.length;P++){let D=u[P],Y=P;Promise.resolve(y[D]()).catch(m=>b({type:"PROMISE_REJECTED",cause:m},{cause:{type:"PROMISE_REJECTION",reason:m}})).then(m=>{if(!h){if(!m.ok){h=!0,A([{key:D,result:m}]);return}F[Y]={key:D,result:m},C--,C===0&&A(F)}})}});p();let T={};for(let{key:A,result:h}of w){if(!h.ok)throw i?.(h.error,A,d),M(h.error,{origin:"result",resultCause:h.cause});T[A]=h.value}return T}catch(w){throw p(),w}})()};var ge=S,Ae=_;let r=(y,a)=>(async()=>{let u=fe(a),{name:n,key:o,retry:R,timeout:c}=u,p=W(o),w=k,T=w?performance.now():0;if(!(typeof y=="function")){if(R&&R.attempts>1)throw new Error("step: retry options require a function operation. Direct Promise/Result values cannot be re-executed on retry. Wrap your operation in a function: step(() => yourOperation, { retry: {...} })");if(c)throw new Error("step: timeout options require a function operation. Direct Promise/Result values cannot be wrapped with timeout after they've started. Wrap your operation in a function: step(() => yourOperation, { timeout: {...} })")}let C={attempts:Math.max(1,R?.attempts??1),backoff:R?.backoff??K.backoff,initialDelay:R?.initialDelay??K.initialDelay,maxDelay:R?.maxDelay??K.maxDelay,jitter:R?.jitter??K.jitter,retryOn:R?.retryOn??K.retryOn,onRetry:R?.onRetry??K.onRetry};k&&l({type:"step_start",workflowId:s,stepId:p,stepKey:o,name:n,ts:Date.now()});let F;for(let m=1;m<=C.attempts;m++){let ue=w?performance.now():0;try{let E;if(typeof y=="function"?c?E=await Re(y,c,{name:n,key:o,attempt:m}):E=await y():E=await y,E.ok){let I=performance.now()-T;return l({type:"step_success",workflowId:s,stepId:p,stepKey:o,name:n,ts:Date.now(),durationMs:I}),o&&l({type:"step_complete",workflowId:s,stepKey:o,name:n,ts:Date.now(),durationMs:I,result:E}),E.value}if(F=E,m<C.attempts&&C.retryOn(E.error,m)){let I=G(m,C);l({type:"step_retry",workflowId:s,stepId:p,stepKey:o,name:n,ts:Date.now(),attempt:m+1,maxAttempts:C.attempts,delayMs:I,error:E.error}),C.onRetry(E.error,m,I),await z(I);continue}C.attempts>1&&l({type:"step_retries_exhausted",workflowId:s,stepId:p,stepKey:o,name:n,ts:Date.now(),durationMs:performance.now()-T,attempts:m,lastError:E.error});break}catch(E){let I=performance.now()-ue;if(Q(E))throw l({type:"step_aborted",workflowId:s,stepId:p,stepKey:o,name:n,ts:Date.now(),durationMs:I}),E;if(Z(E)){let g=we(E),$=c?.ms??g?.timeoutMs??0;if(l({type:"step_timeout",workflowId:s,stepId:p,stepKey:o,name:n,ts:Date.now(),timeoutMs:$,attempt:m}),m<C.attempts&&C.retryOn(E,m)){let J=G(m,C);l({type:"step_retry",workflowId:s,stepId:p,stepKey:o,name:n,ts:Date.now(),attempt:m+1,maxAttempts:C.attempts,delayMs:J,error:E}),C.onRetry(E,m,J),await z(J);continue}C.attempts>1&&l({type:"step_retries_exhausted",workflowId:s,stepId:p,stepKey:o,name:n,ts:Date.now(),durationMs:performance.now()-T,attempts:m,lastError:E})}if(m<C.attempts&&C.retryOn(E,m)){let g=G(m,C);l({type:"step_retry",workflowId:s,stepId:p,stepKey:o,name:n,ts:Date.now(),attempt:m+1,maxAttempts:C.attempts,delayMs:g,error:E}),C.onRetry(E,m,g),await z(g);continue}C.attempts>1&&!Z(E)&&l({type:"step_retries_exhausted",workflowId:s,stepId:p,stepKey:o,name:n,ts:Date.now(),durationMs:performance.now()-T,attempts:m,lastError:E});let L=performance.now()-T;if(x){let g;try{g=x(E)}catch($){throw ke($)}throw l({type:"step_error",workflowId:s,stepId:p,stepKey:o,name:n,ts:Date.now(),durationMs:L,error:g}),o&&l({type:"step_complete",workflowId:s,stepKey:o,name:n,ts:Date.now(),durationMs:L,result:b(g,{cause:E}),meta:{origin:"throw",thrown:E}}),i?.(g,n,d),M(g,{origin:"throw",thrown:E})}else{let g={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:E}};throw l({type:"step_error",workflowId:s,stepId:p,stepKey:o,name:n,ts:Date.now(),durationMs:L,error:g}),o&&l({type:"step_complete",workflowId:s,stepKey:o,name:n,ts:Date.now(),durationMs:L,result:b(g,{cause:E}),meta:{origin:"throw",thrown:E}}),E}}}let P=F,D=performance.now()-T,Y=X(P.error,{origin:"result",resultCause:P.cause});throw l({type:"step_error",workflowId:s,stepId:p,stepKey:o,name:n,ts:Date.now(),durationMs:D,error:Y}),o&&l({type:"step_complete",workflowId:s,stepKey:o,name:n,ts:Date.now(),durationMs:D,result:P,meta:{origin:"result",resultCause:P.cause}}),i?.(P.error,n,d),M(P.error,{origin:"result",resultCause:P.cause})})();r.try=(y,a)=>{let u=a.name,n=a.key,o=W(n),R="error"in a?()=>a.error:a.onError,c=k;return(async()=>{let p=c?performance.now():0;k&&l({type:"step_start",workflowId:s,stepId:o,stepKey:n,name:u,ts:Date.now()});try{let w=await y(),T=performance.now()-p;return l({type:"step_success",workflowId:s,stepId:o,stepKey:n,name:u,ts:Date.now(),durationMs:T}),n&&l({type:"step_complete",workflowId:s,stepKey:n,name:u,ts:Date.now(),durationMs:T,result:q(w)}),w}catch(w){let T=R(w),A=performance.now()-p,h=X(T,{origin:"throw",thrown:w});throw l({type:"step_error",workflowId:s,stepId:o,stepKey:n,name:u,ts:Date.now(),durationMs:A,error:h}),n&&l({type:"step_complete",workflowId:s,stepKey:n,name:u,ts:Date.now(),durationMs:A,result:b(T,{cause:w}),meta:{origin:"throw",thrown:w}}),i?.(T,u,d),M(T,{origin:"throw",thrown:w})}})()},r.fromResult=(y,a)=>{let u=a.name,n=a.key,o=W(n),R="error"in a?()=>a.error:a.onError,c=k;return(async()=>{let p=c?performance.now():0;k&&l({type:"step_start",workflowId:s,stepId:o,stepKey:n,name:u,ts:Date.now()});let w=await y();if(w.ok){let T=performance.now()-p;return l({type:"step_success",workflowId:s,stepId:o,stepKey:n,name:u,ts:Date.now(),durationMs:T}),n&&l({type:"step_complete",workflowId:s,stepKey:n,name:u,ts:Date.now(),durationMs:T,result:q(w.value)}),w.value}else{let T=R(w.error),A=performance.now()-p,h=X(T,{origin:"result",resultCause:w.error});throw l({type:"step_error",workflowId:s,stepId:o,stepKey:n,name:u,ts:Date.now(),durationMs:A,error:h}),n&&l({type:"step_complete",workflowId:s,stepKey:n,name:u,ts:Date.now(),durationMs:A,result:b(T,{cause:w.error}),meta:{origin:"result",resultCause:w.error}}),i?.(T,u,d),M(T,{origin:"result",resultCause:w.error})}})()},r.retry=(y,a)=>r(y,{name:a.name,key:a.key,retry:{attempts:a.attempts,backoff:a.backoff,initialDelay:a.initialDelay,maxDelay:a.maxDelay,jitter:a.jitter,retryOn:a.retryOn,onRetry:a.onRetry},timeout:a.timeout}),r.withTimeout=(y,a)=>r(y,{name:a.name,key:a.key,timeout:a}),r.parallel=((...y)=>{if(typeof y[0]=="string"){let a=y[0],u=y[1];return S(a,u)}else{let a=y[0],u=y[1]??{};return _(a,u)}}),r.race=(y,a)=>{let u=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let n=performance.now(),o=!1,R={scopeId:u,type:"race",winnerId:void 0};f.push(R);let c=()=>{if(o)return;o=!0;let p=f.findIndex(w=>w.scopeId===u);p!==-1&&f.splice(p,1),l({type:"scope_end",workflowId:s,scopeId:u,ts:Date.now(),durationMs:performance.now()-n,winnerId:R.winnerId})};l({type:"scope_start",workflowId:s,scopeId:u,scopeType:"race",name:y,ts:Date.now()});try{let p=await a();if(c(),!p.ok)throw i?.(p.error,y,d),M(p.error,{origin:"result",resultCause:p.cause});return p.value}catch(p){throw c(),p}})()},r.allSettled=(y,a)=>{let u=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let n=performance.now(),o=!1;f.push({scopeId:u,type:"allSettled"});let R=()=>{if(o)return;o=!0;let c=f.findIndex(p=>p.scopeId===u);c!==-1&&f.splice(c,1),l({type:"scope_end",workflowId:s,scopeId:u,ts:Date.now(),durationMs:performance.now()-n})};l({type:"scope_start",workflowId:s,scopeId:u,scopeType:"allSettled",name:y,ts:Date.now()});try{let c=await a();if(R(),!c.ok)throw i?.(c.error,y,d),M(c.error,{origin:"result",resultCause:c.cause});return c.value}catch(c){throw R(),c}})()};let N=await e(r);return q(N)}catch(r){if(de(r))throw r.thrown;if(Q(r)){let _=r.meta.origin==="throw"?r.meta.thrown:r.meta.resultCause;if(x||i)return b(r.error,{cause:_});if(ye(r.error))return b(r.error,{cause:_});let U=se(r);return b(U,{cause:_})}if(x){let _=x(r);return i?.(_,"unexpected",d),b(_,{cause:r})}let S={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:r}};return i?.(S,"unexpected",d),b(S,{cause:r})}}te.strict=(e,t)=>te(e,t);function H(e){return typeof e=="object"&&e!==null&&e.type==="RESOURCE_CLEANUP_ERROR"}function oe(){let e=[];return{add:t=>(e.push(t),t.value),close:async()=>{let t=[];for(let i=e.length-1;i>=0;i--)try{await e[i].close()}catch(k){t.push(k)}if(e.length=0,t.length>0)throw{type:"RESOURCE_CLEANUP_ERROR",errors:t}},has:t=>e.includes(t),size:()=>e.length}}async function Ce(e){let t=oe(),i;try{i=await e(t)}catch(k){try{await t.close()}catch(x){if(H(x))return b({...x,originalResult:{thrown:k}})}throw k}try{await t.close()}catch(k){if(H(k))return b({...k,originalResult:i});throw k}return i}async function xe(e,t){let i=await e();return{value:i,close:async()=>{await t(i)}}}0&&(module.exports={createResource,createResourceScope,isResourceCleanupError,withScope});
2
2
  //# sourceMappingURL=resource.cjs.map