@jagreehal/workflow 1.11.0 → 1.12.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/batch.cjs +1 -1
- package/dist/batch.cjs.map +1 -1
- package/dist/batch.js +1 -1
- package/dist/batch.js.map +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +31 -17
- package/dist/core.d.ts +31 -17
- package/dist/core.js +1 -1
- package/dist/core.js.map +1 -1
- package/dist/index.cjs +4 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/resource.cjs +1 -1
- package/dist/resource.cjs.map +1 -1
- package/dist/resource.js +1 -1
- package/dist/resource.js.map +1 -1
- package/dist/workflow.cjs +1 -1
- package/dist/workflow.cjs.map +1 -1
- package/dist/workflow.js +1 -1
- package/dist/workflow.js.map +1 -1
- package/package.json +1 -1
package/dist/resource.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
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});
|
|
1
|
+
"use strict";var B=Object.defineProperty;var ae=Object.getOwnPropertyDescriptor;var ie=Object.getOwnPropertyNames;var pe=Object.prototype.hasOwnProperty;var ce=(e,n)=>{for(var i in n)B(e,i,{get:n[i],enumerable:!0})},le=(e,n,i,k)=>{if(n&&typeof n=="object"||typeof n=="function")for(let x of ie(n))!pe.call(e,x)&&x!==i&&B(e,x,{get:()=>n[x],enumerable:!(k=ae(n,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}),P=(e,n)=>({ok:!1,error:e,...n?.cause!==void 0?{cause:n.cause}:{}});var ye=e=>typeof e=="object"&&e!==null&&e.type==="UNEXPECTED_ERROR",F=Symbol.for("step_timeout_marker");function Z(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:F in e}function we(e){if(!(typeof e!="object"||e===null)){if(e.type==="STEP_TIMEOUT"){let n=e;return{timeoutMs:n.timeoutMs,stepName:n.stepName,stepKey:n.stepKey,attempt:n.attempt}}if(F in e)return e[F]}}var te=Symbol("early-exit");function me(e,n){return{[te]:!0,error:e,meta:n}}function Te(e){return typeof e=="object"&&e!==null&&e[te]===!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,n){let{backoff:i,initialDelay:k,maxDelay:x,jitter:I}=n,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),I){let s=d*.25*Math.random();d=d+s}return Math.floor(d)}function z(e){return new Promise(n=>setTimeout(n,e))}var ee=Symbol("timeout");async function Re(e,n,i){let k=new AbortController,x=n.error??{type:"STEP_TIMEOUT",stepName:i.name,stepKey:i.key,timeoutMs:n.ms,attempt:i.attempt},I,d=new Promise((_,f)=>{I=setTimeout(()=>{k.abort(),f({[ee]:!0,error:x})},n.ms)}),s;n.signal?s=Promise.resolve(e(k.signal)):s=Promise.resolve(e());try{return await Promise.race([s,d])}catch(_){if(typeof _=="object"&&_!==null&&_[ee]===!0){let f=_.error;if(typeof f=="object"&&f!==null&&f.type!=="STEP_TIMEOUT"){let V={timeoutMs:n.ms,stepName:i.name,stepKey:i.key,attempt:i.attempt};F in f?f[F]=V:Object.defineProperty(f,F,{value:V,enumerable:!1,writable:!0,configurable:!1})}throw f}throw _}finally{clearTimeout(I)}}var K={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function ne(e,n){let{onError:i,onEvent:k,catchUnexpected:x,workflowId:I,context:d}=n&&typeof n=="object"?n:{},s=I??crypto.randomUUID(),_=!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 v=S.stepId;for(let U=f.length-1;U>=0;U--){let j=f[U];if(j.type==="race"&&!j.winnerId){j.winnerId=v;break}}}k?.(S,d)},O=me,Q=r=>Te(r),X=(r,S)=>_?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 t=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()-t})};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),O(c.error,{origin:"result",resultCause:c.cause});return c.value}catch(c){throw R(),c}})()},v=function(y,a){let u=Object.keys(y),t=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:t,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 b=0;b<u.length;b++){let D=u[b],Y=b;Promise.resolve(y[D]()).catch(m=>P({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),O(h.error,{origin:"result",resultCause:h.cause});T[A]=h.value}return T}catch(w){throw p(),w}})()};var ge=S,Ae=v;let r=(y,a)=>(async()=>{let u=fe(a),{name:t,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:t,ts:Date.now()});let N;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:t,key:o,attempt:m}):E=await y():E=await y,E.ok){let M=performance.now()-T;return l({type:"step_success",workflowId:s,stepId:p,stepKey:o,name:t,ts:Date.now(),durationMs:M}),o&&l({type:"step_complete",workflowId:s,stepKey:o,name:t,ts:Date.now(),durationMs:M,result:E}),E.value}if(N=E,m<C.attempts&&C.retryOn(E.error,m)){let M=G(m,C);l({type:"step_retry",workflowId:s,stepId:p,stepKey:o,name:t,ts:Date.now(),attempt:m+1,maxAttempts:C.attempts,delayMs:M,error:E.error}),C.onRetry(E.error,m,M),await z(M);continue}C.attempts>1&&l({type:"step_retries_exhausted",workflowId:s,stepId:p,stepKey:o,name:t,ts:Date.now(),durationMs:performance.now()-T,attempts:m,lastError:E.error});break}catch(E){let M=performance.now()-ue;if(Q(E))throw l({type:"step_aborted",workflowId:s,stepId:p,stepKey:o,name:t,ts:Date.now(),durationMs:M}),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:t,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:t,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:t,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:t,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:t,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:t,ts:Date.now(),durationMs:L,error:g}),o&&l({type:"step_complete",workflowId:s,stepKey:o,name:t,ts:Date.now(),durationMs:L,result:P(g,{cause:E}),meta:{origin:"throw",thrown:E}}),i?.(g,t,d),O(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:t,ts:Date.now(),durationMs:L,error:g}),o&&l({type:"step_complete",workflowId:s,stepKey:o,name:t,ts:Date.now(),durationMs:L,result:P(g,{cause:E}),meta:{origin:"throw",thrown:E}}),E}}}let b=N,D=performance.now()-T,Y=X(b.error,{origin:"result",resultCause:b.cause});throw l({type:"step_error",workflowId:s,stepId:p,stepKey:o,name:t,ts:Date.now(),durationMs:D,error:Y}),o&&l({type:"step_complete",workflowId:s,stepKey:o,name:t,ts:Date.now(),durationMs:D,result:b,meta:{origin:"result",resultCause:b.cause}}),i?.(b.error,t,d),O(b.error,{origin:"result",resultCause:b.cause})})();r.try=(y,a)=>{let u=a.name,t=a.key,o=W(t),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:t,name:u,ts:Date.now()});try{let w=await y(),T=performance.now()-p;return l({type:"step_success",workflowId:s,stepId:o,stepKey:t,name:u,ts:Date.now(),durationMs:T}),t&&l({type:"step_complete",workflowId:s,stepKey:t,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:t,name:u,ts:Date.now(),durationMs:A,error:h}),t&&l({type:"step_complete",workflowId:s,stepKey:t,name:u,ts:Date.now(),durationMs:A,result:P(T,{cause:w}),meta:{origin:"throw",thrown:w}}),i?.(T,u,d),O(T,{origin:"throw",thrown:w})}})()},r.fromResult=(y,a)=>{let u=a.name,t=a.key,o=W(t),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:t,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:t,name:u,ts:Date.now(),durationMs:T}),t&&l({type:"step_complete",workflowId:s,stepKey:t,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:t,name:u,ts:Date.now(),durationMs:A,error:h}),t&&l({type:"step_complete",workflowId:s,stepKey:t,name:u,ts:Date.now(),durationMs:A,result:P(T,{cause:w.error}),meta:{origin:"result",resultCause:w.error}}),i?.(T,u,d),O(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 v(a,u)}}),r.race=(y,a)=>{let u=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let t=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()-t,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),O(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 t=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()-t})};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),O(c.error,{origin:"result",resultCause:c.cause});return c.value}catch(c){throw R(),c}})()};let j=await e(r);return q(j)}catch(r){if(de(r))throw r.thrown;if(Q(r)){let v=r.meta.origin==="throw"?r.meta.thrown:r.meta.resultCause;if(x||i)return P(r.error,{cause:v});if(ye(r.error))return P(r.error,{cause:v});let U=se(r);return P(U,{cause:v})}if(x){let v=x(r);return i?.(v,"unexpected",d),P(v,{cause:r})}let S={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:r}};return i?.(S,"unexpected",d),P(S,{cause:r})}}ne.strict=(e,n)=>ne(e,n);function H(e){return typeof e=="object"&&e!==null&&e.type==="RESOURCE_CLEANUP_ERROR"}function oe(){let e=[];return{add:n=>(e.push(n),n.value),close:async()=>{let n=[];for(let i=e.length-1;i>=0;i--)try{await e[i].close()}catch(k){n.push(k)}if(e.length=0,n.length>0)throw{type:"RESOURCE_CLEANUP_ERROR",errors:n}},has:n=>e.includes(n),size:()=>e.length}}async function Ce(e){let n=oe(),i;try{i=await e(n)}catch(k){try{await n.close()}catch(x){if(H(x))return P({...x,originalResult:{thrown:k}})}throw k}try{await n.close()}catch(k){if(H(k))return P({...k,originalResult:i});throw k}return i}async function xe(e,n){let i=await e();return{value:i,close:async()=>{await n(i)}}}0&&(module.exports={createResource,createResourceScope,isResourceCleanupError,withScope});
|
|
2
2
|
//# sourceMappingURL=resource.cjs.map
|