@jagreehal/workflow 1.9.0 → 1.10.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 +45 -13
- package/dist/core.d.ts +45 -13
- package/dist/core.js +1 -1
- package/dist/core.js.map +1 -1
- package/dist/index.cjs +5 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +5 -5
- 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/workflow.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var re=Object.defineProperty;var we=Object.getOwnPropertyDescriptor;var me=Object.getOwnPropertyNames;var ke=Object.prototype.hasOwnProperty;var de=(e,n)=>{for(var c in n)re(e,c,{get:n[c],enumerable:!0})},fe=(e,n,c,C)=>{if(n&&typeof n=="object"||typeof n=="function")for(let v of me(n))!ke.call(e,v)&&v!==c&&re(e,v,{get:()=>n[v],enumerable:!(C=we(n,v))||C.enumerable});return e};var Te=e=>fe(re({},"__esModule",{value:!0}),e);var We={};de(We,{clearStep:()=>Me,createApprovalStep:()=>Ue,createHITLCollector:()=>Ke,createStepCollector:()=>he,createWorkflow:()=>Pe,getPendingApprovals:()=>Ie,hasPendingApproval:()=>Oe,injectApproval:()=>De,isApprovalRejected:()=>_e,isPendingApproval:()=>q,isStepComplete:()=>ae,pendingApproval:()=>be});module.exports=Te(We);var M=e=>({ok:!0,value:e}),S=(e,n)=>({ok:!1,error:e,...n?.cause!==void 0?{cause:n.cause}:{}});var Re=e=>typeof e=="object"&&e!==null&&e.type==="UNEXPECTED_ERROR",X=Symbol.for("step_timeout_marker");function pe(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:X in e}function Ce(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(X in e)return e[X]}}var le=Symbol("early-exit");function Y(e,n){return{[le]:!0,error:e,meta:n}}function $(e){return typeof e=="object"&&e!==null&&e[le]===!0}var Ee=Symbol("mapper-exception");function xe(e){return{[Ee]:!0,thrown:e}}function Se(e){return typeof e=="object"&&e!==null&&e[Ee]===!0}function ge(e){return typeof e=="string"?{name:e}:e??{}}function oe(e,n){let{backoff:c,initialDelay:C,maxDelay:v,jitter:K}=n,x;switch(c){case"fixed":x=C;break;case"linear":x=C*e;break;case"exponential":x=C*Math.pow(2,e-1);break}if(x=Math.min(x,v),K){let l=x*.25*Math.random();x=x+l}return Math.floor(x)}function se(e){return new Promise(n=>setTimeout(n,e))}var ce=Symbol("timeout");async function Ae(e,n,c){let C=new AbortController,v=n.error??{type:"STEP_TIMEOUT",stepName:c.name,stepKey:c.key,timeoutMs:n.ms,attempt:c.attempt},K,x=new Promise((f,m)=>{K=setTimeout(()=>{C.abort(),m({[ce]:!0,error:v})},n.ms)}),l;n.signal?l=Promise.resolve(e(C.signal)):l=Promise.resolve(e());try{return await Promise.race([l,x])}catch(f){if(typeof f=="object"&&f!==null&&f[ce]===!0){let m=f.error;if(typeof m=="object"&&m!==null&&m.type!=="STEP_TIMEOUT"){let j={timeoutMs:n.ms,stepName:c.name,stepKey:c.key,attempt:c.attempt};X in m?m[X]=j:Object.defineProperty(m,X,{value:j,enumerable:!1,writable:!0,configurable:!1})}throw m}throw f}finally{clearTimeout(K)}}var L={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function H(e,n){let{onError:c,onEvent:C,catchUnexpected:v,workflowId:K,context:x}=n&&typeof n=="object"?n:{},l=K??crypto.randomUUID(),f=!c&&!v,m=[],j=0,P=p=>p??`step_${++j}`,w=p=>{let g=p.context!==void 0||x===void 0?p:{...p,context:x};if(g.type==="step_success"){let U=g.stepId;for(let W=m.length-1;W>=0;W--){let I=m[W];if(I.type==="race"&&!I.winnerId){I.winnerId=U;break}}}C?.(g,x)},_=Y,G=p=>$(p),B=(p,g)=>f?g?.origin==="result"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:p,...g.resultCause!==void 0?{cause:g.resultCause}:{}}}:g?.origin==="throw"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"throw",error:p,thrown:g.thrown}}:{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:p}}:p,Z=p=>p.origin==="result"?p.resultCause:p.thrown,F=p=>({type:"UNEXPECTED_ERROR",cause:p.meta.origin==="result"?{type:"STEP_FAILURE",origin:"result",error:p.error,...p.meta.resultCause!==void 0?{cause:p.meta.resultCause}:{}}:{type:"STEP_FAILURE",origin:"throw",error:p.error,thrown:p.meta.thrown}});try{let g=function(k,o){let s=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let u=performance.now(),t=!1;m.push({scopeId:s,type:"parallel"});let E=()=>{if(t)return;t=!0;let r=m.findIndex(a=>a.scopeId===s);r!==-1&&m.splice(r,1),w({type:"scope_end",workflowId:l,scopeId:s,ts:Date.now(),durationMs:performance.now()-u})};w({type:"scope_start",workflowId:l,scopeId:s,scopeType:"parallel",name:k,ts:Date.now()});try{let r=await o();if(E(),!r.ok)throw c?.(r.error,k,x),_(r.error,{origin:"result",resultCause:r.cause});return r.value}catch(r){throw E(),r}})()},U=function(k,o){let s=Object.keys(k),u=o.name??`Parallel(${s.join(", ")})`,t=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let E=performance.now(),r=!1;m.push({scopeId:t,type:"parallel"});let a=()=>{if(r)return;r=!0;let i=m.findIndex(y=>y.scopeId===t);i!==-1&&m.splice(i,1),w({type:"scope_end",workflowId:l,scopeId:t,ts:Date.now(),durationMs:performance.now()-E})};w({type:"scope_start",workflowId:l,scopeId:t,scopeType:"parallel",name:u,ts:Date.now()});try{let i=await new Promise(h=>{if(s.length===0){h([]);return}let b=!1,A=s.length,J=new Array(s.length);for(let O=0;O<s.length;O++){let V=s[O],ee=O;Promise.resolve(k[V]()).catch(R=>S({type:"PROMISE_REJECTED",cause:R},{cause:{type:"PROMISE_REJECTION",reason:R}})).then(R=>{if(!b){if(!R.ok){b=!0,h([{key:V,result:R}]);return}J[ee]={key:V,result:R},A--,A===0&&h(J)}})}});a();let y={};for(let{key:h,result:b}of i){if(!b.ok)throw c?.(b.error,h,x),_(b.error,{origin:"result",resultCause:b.cause});y[h]=b.value}return y}catch(i){throw a(),i}})()};var T=g,ie=U;let p=(k,o)=>(async()=>{let s=ge(o),{name:u,key:t,retry:E,timeout:r}=s,a=P(t),i=C,y=i?performance.now():0;if(!(typeof k=="function")){if(E&&E.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(r)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 A={attempts:Math.max(1,E?.attempts??1),backoff:E?.backoff??L.backoff,initialDelay:E?.initialDelay??L.initialDelay,maxDelay:E?.maxDelay??L.maxDelay,jitter:E?.jitter??L.jitter,retryOn:E?.retryOn??L.retryOn,onRetry:E?.onRetry??L.onRetry};C&&w({type:"step_start",workflowId:l,stepId:a,stepKey:t,name:u,ts:Date.now()});let J;for(let R=1;R<=A.attempts;R++){let ye=i?performance.now():0;try{let d;if(typeof k=="function"?r?d=await Ae(k,r,{name:u,key:t,attempt:R}):d=await k():d=await k,d.ok){let N=performance.now()-y;return w({type:"step_success",workflowId:l,stepId:a,stepKey:t,name:u,ts:Date.now(),durationMs:N}),t&&w({type:"step_complete",workflowId:l,stepKey:t,name:u,ts:Date.now(),durationMs:N,result:d}),d.value}if(J=d,R<A.attempts&&A.retryOn(d.error,R)){let N=oe(R,A);w({type:"step_retry",workflowId:l,stepId:a,stepKey:t,name:u,ts:Date.now(),attempt:R+1,maxAttempts:A.attempts,delayMs:N,error:d.error}),A.onRetry(d.error,R,N),await se(N);continue}A.attempts>1&&w({type:"step_retries_exhausted",workflowId:l,stepId:a,stepKey:t,name:u,ts:Date.now(),durationMs:performance.now()-y,attempts:R,lastError:d.error});break}catch(d){let N=performance.now()-ye;if(G(d))throw w({type:"step_aborted",workflowId:l,stepId:a,stepKey:t,name:u,ts:Date.now(),durationMs:N}),d;if(pe(d)){let D=Ce(d),te=r?.ms??D?.timeoutMs??0;if(w({type:"step_timeout",workflowId:l,stepId:a,stepKey:t,name:u,ts:Date.now(),timeoutMs:te,attempt:R}),R<A.attempts&&A.retryOn(d,R)){let ne=oe(R,A);w({type:"step_retry",workflowId:l,stepId:a,stepKey:t,name:u,ts:Date.now(),attempt:R+1,maxAttempts:A.attempts,delayMs:ne,error:d}),A.onRetry(d,R,ne),await se(ne);continue}A.attempts>1&&w({type:"step_retries_exhausted",workflowId:l,stepId:a,stepKey:t,name:u,ts:Date.now(),durationMs:performance.now()-y,attempts:R,lastError:d})}if(R<A.attempts&&A.retryOn(d,R)){let D=oe(R,A);w({type:"step_retry",workflowId:l,stepId:a,stepKey:t,name:u,ts:Date.now(),attempt:R+1,maxAttempts:A.attempts,delayMs:D,error:d}),A.onRetry(d,R,D),await se(D);continue}A.attempts>1&&!pe(d)&&w({type:"step_retries_exhausted",workflowId:l,stepId:a,stepKey:t,name:u,ts:Date.now(),durationMs:performance.now()-y,attempts:R,lastError:d});let z=performance.now()-y;if(v){let D;try{D=v(d)}catch(te){throw xe(te)}throw w({type:"step_error",workflowId:l,stepId:a,stepKey:t,name:u,ts:Date.now(),durationMs:z,error:D}),t&&w({type:"step_complete",workflowId:l,stepKey:t,name:u,ts:Date.now(),durationMs:z,result:S(D,{cause:d}),meta:{origin:"throw",thrown:d}}),c?.(D,u,x),_(D,{origin:"throw",thrown:d})}else{let D={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:d}};throw w({type:"step_error",workflowId:l,stepId:a,stepKey:t,name:u,ts:Date.now(),durationMs:z,error:D}),t&&w({type:"step_complete",workflowId:l,stepKey:t,name:u,ts:Date.now(),durationMs:z,result:S(D,{cause:d}),meta:{origin:"throw",thrown:d}}),d}}}let O=J,V=performance.now()-y,ee=B(O.error,{origin:"result",resultCause:O.cause});throw w({type:"step_error",workflowId:l,stepId:a,stepKey:t,name:u,ts:Date.now(),durationMs:V,error:ee}),t&&w({type:"step_complete",workflowId:l,stepKey:t,name:u,ts:Date.now(),durationMs:V,result:O,meta:{origin:"result",resultCause:O.cause}}),c?.(O.error,u,x),_(O.error,{origin:"result",resultCause:O.cause})})();p.try=(k,o)=>{let s=o.name,u=o.key,t=P(u),E="error"in o?()=>o.error:o.onError,r=C;return(async()=>{let a=r?performance.now():0;C&&w({type:"step_start",workflowId:l,stepId:t,stepKey:u,name:s,ts:Date.now()});try{let i=await k(),y=performance.now()-a;return w({type:"step_success",workflowId:l,stepId:t,stepKey:u,name:s,ts:Date.now(),durationMs:y}),u&&w({type:"step_complete",workflowId:l,stepKey:u,name:s,ts:Date.now(),durationMs:y,result:M(i)}),i}catch(i){let y=E(i),h=performance.now()-a,b=B(y,{origin:"throw",thrown:i});throw w({type:"step_error",workflowId:l,stepId:t,stepKey:u,name:s,ts:Date.now(),durationMs:h,error:b}),u&&w({type:"step_complete",workflowId:l,stepKey:u,name:s,ts:Date.now(),durationMs:h,result:S(y,{cause:i}),meta:{origin:"throw",thrown:i}}),c?.(y,s,x),_(y,{origin:"throw",thrown:i})}})()},p.fromResult=(k,o)=>{let s=o.name,u=o.key,t=P(u),E="error"in o?()=>o.error:o.onError,r=C;return(async()=>{let a=r?performance.now():0;C&&w({type:"step_start",workflowId:l,stepId:t,stepKey:u,name:s,ts:Date.now()});let i=await k();if(i.ok){let y=performance.now()-a;return w({type:"step_success",workflowId:l,stepId:t,stepKey:u,name:s,ts:Date.now(),durationMs:y}),u&&w({type:"step_complete",workflowId:l,stepKey:u,name:s,ts:Date.now(),durationMs:y,result:M(i.value)}),i.value}else{let y=E(i.error),h=performance.now()-a,b=B(y,{origin:"result",resultCause:i.error});throw w({type:"step_error",workflowId:l,stepId:t,stepKey:u,name:s,ts:Date.now(),durationMs:h,error:b}),u&&w({type:"step_complete",workflowId:l,stepKey:u,name:s,ts:Date.now(),durationMs:h,result:S(y,{cause:i.error}),meta:{origin:"result",resultCause:i.error}}),c?.(y,s,x),_(y,{origin:"result",resultCause:i.error})}})()},p.retry=(k,o)=>p(k,{name:o.name,key:o.key,retry:{attempts:o.attempts,backoff:o.backoff,initialDelay:o.initialDelay,maxDelay:o.maxDelay,jitter:o.jitter,retryOn:o.retryOn,onRetry:o.onRetry},timeout:o.timeout}),p.withTimeout=(k,o)=>p(k,{name:o.name,key:o.key,timeout:o}),p.parallel=((...k)=>{if(typeof k[0]=="string"){let o=k[0],s=k[1];return g(o,s)}else{let o=k[0],s=k[1]??{};return U(o,s)}}),p.race=(k,o)=>{let s=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let u=performance.now(),t=!1,E={scopeId:s,type:"race",winnerId:void 0};m.push(E);let r=()=>{if(t)return;t=!0;let a=m.findIndex(i=>i.scopeId===s);a!==-1&&m.splice(a,1),w({type:"scope_end",workflowId:l,scopeId:s,ts:Date.now(),durationMs:performance.now()-u,winnerId:E.winnerId})};w({type:"scope_start",workflowId:l,scopeId:s,scopeType:"race",name:k,ts:Date.now()});try{let a=await o();if(r(),!a.ok)throw c?.(a.error,k,x),_(a.error,{origin:"result",resultCause:a.cause});return a.value}catch(a){throw r(),a}})()},p.allSettled=(k,o)=>{let s=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let u=performance.now(),t=!1;m.push({scopeId:s,type:"allSettled"});let E=()=>{if(t)return;t=!0;let r=m.findIndex(a=>a.scopeId===s);r!==-1&&m.splice(r,1),w({type:"scope_end",workflowId:l,scopeId:s,ts:Date.now(),durationMs:performance.now()-u})};w({type:"scope_start",workflowId:l,scopeId:s,scopeType:"allSettled",name:k,ts:Date.now()});try{let r=await o();if(E(),!r.ok)throw c?.(r.error,k,x),_(r.error,{origin:"result",resultCause:r.cause});return r.value}catch(r){throw E(),r}})()};let I=await e(p);return M(I)}catch(p){if(Se(p))throw p.thrown;if(G(p)){let U=Z(p.meta);if(v||c)return S(p.error,{cause:U});if(Re(p.error))return S(p.error,{cause:U});let W=F(p);return S(W,{cause:U})}if(v){let U=v(p);return c?.(U,"unexpected",x),S(U,{cause:p})}let g={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:p}};return c?.(g,"unexpected",x),S(g,{cause:p})}}H.strict=(e,n)=>H(e,n);function he(){let e=new Map;return{handleEvent:n=>{ae(n)&&e.set(n.stepKey,{result:n.result,meta:n.meta})},getState:()=>({steps:new Map(e)}),clear:()=>e.clear()}}function ve(e){return typeof e=="object"&&e!==null&&e.__cachedMeta===!0}function Q(e,n,c){return S(e,{cause:{__cachedMeta:!0,originalCause:c,meta:n}})}function ue(e){return ve(e)?e.meta:{origin:"result",resultCause:e}}function Pe(e,n){async function c(C,v){let K=typeof v=="function",x=K?C:void 0,l=K?v:C,f=crypto.randomUUID(),m=n?.createContext?.(),j={workflowId:f,onEvent:n?.onEvent,context:m!==void 0?m:void 0},P=o=>{let s=o.context!==void 0||m===void 0?o:{...o,context:m};n?.onEvent?.(s,m)},w=n?.shouldRun,_=n?.catchUnexpected;if(w){let o=performance.now();try{let s=await w(f,m),u=performance.now()-o;if(P({type:"hook_should_run",workflowId:f,ts:Date.now(),durationMs:u,result:s,skipped:!s}),!s){let t=new Error("Workflow skipped by shouldRun hook");if(_){let r=_(t);return S(r)}return S({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:t}})}}catch(s){let u=performance.now()-o;if(P({type:"hook_should_run_error",workflowId:f,ts:Date.now(),durationMs:u,error:s}),_){let E=_(s);return S(E)}return S({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:s}})}}let G=n?.onBeforeStart;if(G){let o=performance.now();try{let s=await G(f,m),u=performance.now()-o;if(P({type:"hook_before_start",workflowId:f,ts:Date.now(),durationMs:u,result:s,skipped:!s}),!s){let t=new Error("Workflow skipped by onBeforeStart hook");if(_){let r=_(t);return S(r)}return S({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:t}})}}catch(s){let u=performance.now()-o;if(P({type:"hook_before_start_error",workflowId:f,ts:Date.now(),durationMs:u,error:s}),_){let E=_(s);return S(E)}return S({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:s}})}}let B=Date.now(),Z=performance.now();P({type:"workflow_start",workflowId:f,ts:B});let F=n?.resumeState,T=n?.cache;if(F&&!T&&(T=new Map),F&&T){let o=typeof F=="function"?await F():F;for(let[s,u]of o.steps){let{result:t,meta:E}=u;if(t.ok)T.set(s,t);else{let r=E??{origin:"result",resultCause:t.cause};T.set(s,Q(t.error,r,t.cause))}}}let ie=o=>typeof o=="string"?{name:o}:o??{},p=n?.onAfterStep,g=async(o,s)=>{if(!p)return;let u=performance.now();try{await p(o,s,f,m);let t=performance.now()-u;P({type:"hook_after_step",workflowId:f,stepKey:o,ts:Date.now(),durationMs:t})}catch(t){let E=performance.now()-u;throw P({type:"hook_after_step_error",workflowId:f,stepKey:o,ts:Date.now(),durationMs:E,error:t}),t}},U=o=>{if(!T&&!p)return o;let s=async(u,t)=>{let{name:E,key:r}=ie(t);if(r&&T&&T.has(r)){P({type:"step_cache_hit",workflowId:f,stepKey:r,name:E,ts:Date.now()});let i=T.get(r);if(i.ok)return i.value;let y=ue(i.cause);throw Y(i.error,y)}r&&T&&P({type:"step_cache_miss",workflowId:f,stepKey:r,name:E,ts:Date.now()});let a=typeof u=="function"?u:()=>u;try{let i=await o(a,t);return r&&(T&&T.set(r,M(i)),await g(r,M(i))),i}catch(i){if(r&&$(i)){let y=i,h=y.meta.origin==="result"?y.meta.resultCause:y.meta.thrown,b=Q(y.error,y.meta,h);T&&T.set(r,b),await g(r,b)}throw i}};return s.try=async(u,t)=>{let{name:E,key:r}=t;if(r&&T&&T.has(r)){P({type:"step_cache_hit",workflowId:f,stepKey:r,name:E,ts:Date.now()});let a=T.get(r);if(a.ok)return a.value;let i=ue(a.cause);throw Y(a.error,i)}r&&T&&P({type:"step_cache_miss",workflowId:f,stepKey:r,name:E,ts:Date.now()});try{let a=await o.try(u,t);return r&&(T&&T.set(r,M(a)),await g(r,M(a))),a}catch(a){if(r&&$(a)){let i=a,y=i.meta.origin==="result"?i.meta.resultCause:i.meta.thrown,h=Q(i.error,i.meta,y);T&&T.set(r,h),await g(r,h)}throw a}},s.fromResult=async(u,t)=>{let{name:E,key:r}=t;if(r&&T&&T.has(r)){P({type:"step_cache_hit",workflowId:f,stepKey:r,name:E,ts:Date.now()});let a=T.get(r);if(a.ok)return a.value;let i=ue(a.cause);throw Y(a.error,i)}r&&T&&P({type:"step_cache_miss",workflowId:f,stepKey:r,name:E,ts:Date.now()});try{let a=await o.fromResult(u,t);return r&&(T&&T.set(r,M(a)),await g(r,M(a))),a}catch(a){if(r&&$(a)){let i=a,y=i.meta.origin==="result"?i.meta.resultCause:i.meta.thrown,h=Q(i.error,i.meta,y);T&&T.set(r,h),await g(r,h)}throw a}},s.parallel=o.parallel,s.race=o.race,s.allSettled=o.allSettled,s.retry=(u,t)=>s(u,{name:t.name,key:t.key,retry:{attempts:t.attempts,backoff:t.backoff,initialDelay:t.initialDelay,maxDelay:t.maxDelay,jitter:t.jitter,retryOn:t.retryOn,onRetry:t.onRetry},timeout:t.timeout}),s.withTimeout=(u,t)=>s(u,{name:t.name,key:t.key,timeout:t}),s},W=K?o=>l(U(o),e,x,j):o=>l(U(o),e,j),I;if(n?.strict===!0){let o=n;I=await H.strict(W,{onError:o.onError,onEvent:o.onEvent,catchUnexpected:o.catchUnexpected,workflowId:f,context:m})}else{let o=n;I=await H(W,{onError:o?.onError??(()=>{}),onEvent:o?.onEvent,workflowId:f,context:m})}let k=performance.now()-Z;return I.ok?P({type:"workflow_success",workflowId:f,ts:Date.now(),durationMs:k}):P({type:"workflow_error",workflowId:f,ts:Date.now(),durationMs:k,error:I.error}),I}return c}function ae(e){return e.type==="step_complete"}function q(e){return typeof e=="object"&&e!==null&&e.type==="PENDING_APPROVAL"}function _e(e){return typeof e=="object"&&e!==null&&e.type==="APPROVAL_REJECTED"}function be(e,n){return S({type:"PENDING_APPROVAL",stepKey:e,reason:n?.reason,metadata:n?.metadata})}function Ue(e){return async()=>{let n=await e.checkApproval();switch(n.status){case"pending":return S({type:"PENDING_APPROVAL",stepKey:e.key,reason:e.pendingReason,metadata:e.metadata});case"rejected":return S({type:"APPROVAL_REJECTED",stepKey:e.key,reason:n.reason});case"approved":return M(n.value)}}}function De(e,n){let c=new Map(e.steps);return c.set(n.stepKey,{result:M(n.value)}),{steps:c}}function Me(e,n){let c=new Map(e.steps);return c.delete(n),{steps:c}}function Oe(e,n){let c=e.steps.get(n);return!c||c.result.ok?!1:q(c.result.error)}function Ie(e){let n=[];for(let[c,C]of e.steps)!C.result.ok&&q(C.result.error)&&n.push(c);return n}function Ke(){let e=new Map;return{handleEvent:n=>{ae(n)&&e.set(n.stepKey,{result:n.result,meta:n.meta})},getState:()=>({steps:new Map(e)}),clear:()=>e.clear(),hasPendingApprovals:()=>{for(let n of e.values())if(!n.result.ok&&q(n.result.error))return!0;return!1},getPendingApprovals:()=>{let n=[];for(let[c,C]of e)!C.result.ok&&q(C.result.error)&&n.push({stepKey:c,error:C.result.error});return n},injectApproval:(n,c)=>(e.set(n,{result:M(c)}),{steps:new Map(e)})}}0&&(module.exports={clearStep,createApprovalStep,createHITLCollector,createStepCollector,createWorkflow,getPendingApprovals,hasPendingApproval,injectApproval,isApprovalRejected,isPendingApproval,isStepComplete,pendingApproval});
|
|
1
|
+
"use strict";var re=Object.defineProperty;var ye=Object.getOwnPropertyDescriptor;var we=Object.getOwnPropertyNames;var me=Object.prototype.hasOwnProperty;var ke=(e,t)=>{for(var l in t)re(e,l,{get:t[l],enumerable:!0})},de=(e,t,l,C)=>{if(t&&typeof t=="object"||typeof t=="function")for(let v of we(t))!me.call(e,v)&&v!==l&&re(e,v,{get:()=>t[v],enumerable:!(C=ye(t,v))||C.enumerable});return e};var fe=e=>de(re({},"__esModule",{value:!0}),e);var Ke={};ke(Ke,{clearStep:()=>De,createApprovalStep:()=>be,createHITLCollector:()=>Ie,createStepCollector:()=>Ae,createWorkflow:()=>ve,getPendingApprovals:()=>Oe,hasPendingApproval:()=>Me,injectApproval:()=>Ue,isApprovalRejected:()=>Pe,isPendingApproval:()=>q,isStepComplete:()=>ae,pendingApproval:()=>_e});module.exports=fe(Ke);var M=e=>({ok:!0,value:e}),A=(e,t)=>({ok:!1,error:e,...t?.cause!==void 0?{cause:t.cause}:{}});var Te=e=>typeof e=="object"&&e!==null&&e.type==="UNEXPECTED_ERROR",X=Symbol.for("step_timeout_marker");function ie(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:X in e}function Re(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(X in e)return e[X]}}var ce=Symbol("early-exit");function Y(e,t){return{[ce]:!0,error:e,meta:t}}function $(e){return typeof e=="object"&&e!==null&&e[ce]===!0}var le=Symbol("mapper-exception");function Ce(e){return{[le]:!0,thrown:e}}function xe(e){return typeof e=="object"&&e!==null&&e[le]===!0}function Se(e){return typeof e=="string"?{name:e}:e??{}}function oe(e,t){let{backoff:l,initialDelay:C,maxDelay:v,jitter:I}=t,x;switch(l){case"fixed":x=C;break;case"linear":x=C*e;break;case"exponential":x=C*Math.pow(2,e-1);break}if(x=Math.min(x,v),I){let E=x*.25*Math.random();x=x+E}return Math.floor(x)}function se(e){return new Promise(t=>setTimeout(t,e))}var pe=Symbol("timeout");async function ge(e,t,l){let C=new AbortController,v=t.error??{type:"STEP_TIMEOUT",stepName:l.name,stepKey:l.key,timeoutMs:t.ms,attempt:l.attempt},I,x=new Promise((f,k)=>{I=setTimeout(()=>{C.abort(),k({[pe]:!0,error:v})},t.ms)}),E;t.signal?E=Promise.resolve(e(C.signal)):E=Promise.resolve(e());try{return await Promise.race([E,x])}catch(f){if(typeof f=="object"&&f!==null&&f[pe]===!0){let k=f.error;if(typeof k=="object"&&k!==null&&k.type!=="STEP_TIMEOUT"){let j={timeoutMs:t.ms,stepName:l.name,stepKey:l.key,attempt:l.attempt};X in k?k[X]=j:Object.defineProperty(k,X,{value:j,enumerable:!1,writable:!0,configurable:!1})}throw k}throw f}finally{clearTimeout(I)}}var L={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function H(e,t){let{onError:l,onEvent:C,catchUnexpected:v,workflowId:I,context:x}=t&&typeof t=="object"?t:{},E=I??crypto.randomUUID(),f=!l&&!v,k=[],j=0,P=c=>c??`step_${++j}`,w=c=>{let _=c.context!==void 0||x===void 0?c:{...c,context:x};if(_.type==="step_success"){let b=_.stepId;for(let K=k.length-1;K>=0;K--){let W=k[K];if(W.type==="race"&&!W.winnerId){W.winnerId=b;break}}}C?.(_,x)},U=Y,G=c=>$(c),B=(c,_)=>f?_?.origin==="result"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:c,..._.resultCause!==void 0?{cause:_.resultCause}:{}}}:_?.origin==="throw"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"throw",error:c,thrown:_.thrown}}:{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:c}}:c,Z=c=>({type:"UNEXPECTED_ERROR",cause:c.meta.origin==="result"?{type:"STEP_FAILURE",origin:"result",error:c.error,...c.meta.resultCause!==void 0?{cause:c.meta.resultCause}:{}}:{type:"STEP_FAILURE",origin:"throw",error:c.error,thrown:c.meta.thrown}});try{let _=function(m,y){let r=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let o=performance.now(),s=!1;k.push({scopeId:r,type:"parallel"});let u=()=>{if(s)return;s=!0;let p=k.findIndex(n=>n.scopeId===r);p!==-1&&k.splice(p,1),w({type:"scope_end",workflowId:E,scopeId:r,ts:Date.now(),durationMs:performance.now()-o})};w({type:"scope_start",workflowId:E,scopeId:r,scopeType:"parallel",name:m,ts:Date.now()});try{let p=await y();if(u(),!p.ok)throw l?.(p.error,m,x),U(p.error,{origin:"result",resultCause:p.cause});return p.value}catch(p){throw u(),p}})()},b=function(m,y){let r=Object.keys(m),o=y.name??`Parallel(${r.join(", ")})`,s=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let u=performance.now(),p=!1;k.push({scopeId:s,type:"parallel"});let n=()=>{if(p)return;p=!0;let a=k.findIndex(i=>i.scopeId===s);a!==-1&&k.splice(a,1),w({type:"scope_end",workflowId:E,scopeId:s,ts:Date.now(),durationMs:performance.now()-u})};w({type:"scope_start",workflowId:E,scopeId:s,scopeType:"parallel",name:o,ts:Date.now()});try{let a=await new Promise(S=>{if(r.length===0){S([]);return}let h=!1,g=r.length,J=new Array(r.length);for(let O=0;O<r.length;O++){let V=r[O],ee=O;Promise.resolve(m[V]()).catch(R=>A({type:"PROMISE_REJECTED",cause:R},{cause:{type:"PROMISE_REJECTION",reason:R}})).then(R=>{if(!h){if(!R.ok){h=!0,S([{key:V,result:R}]);return}J[ee]={key:V,result:R},g--,g===0&&S(J)}})}});n();let i={};for(let{key:S,result:h}of a){if(!h.ok)throw l?.(h.error,S,x),U(h.error,{origin:"result",resultCause:h.cause});i[S]=h.value}return i}catch(a){throw n(),a}})()};var F=_,T=b;let c=(m,y)=>(async()=>{let r=Se(y),{name:o,key:s,retry:u,timeout:p}=r,n=P(s),a=C,i=a?performance.now():0;if(!(typeof m=="function")){if(u&&u.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(p)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 g={attempts:Math.max(1,u?.attempts??1),backoff:u?.backoff??L.backoff,initialDelay:u?.initialDelay??L.initialDelay,maxDelay:u?.maxDelay??L.maxDelay,jitter:u?.jitter??L.jitter,retryOn:u?.retryOn??L.retryOn,onRetry:u?.onRetry??L.onRetry};C&&w({type:"step_start",workflowId:E,stepId:n,stepKey:s,name:o,ts:Date.now()});let J;for(let R=1;R<=g.attempts;R++){let Ee=a?performance.now():0;try{let d;if(typeof m=="function"?p?d=await ge(m,p,{name:o,key:s,attempt:R}):d=await m():d=await m,d.ok){let N=performance.now()-i;return w({type:"step_success",workflowId:E,stepId:n,stepKey:s,name:o,ts:Date.now(),durationMs:N}),s&&w({type:"step_complete",workflowId:E,stepKey:s,name:o,ts:Date.now(),durationMs:N,result:d}),d.value}if(J=d,R<g.attempts&&g.retryOn(d.error,R)){let N=oe(R,g);w({type:"step_retry",workflowId:E,stepId:n,stepKey:s,name:o,ts:Date.now(),attempt:R+1,maxAttempts:g.attempts,delayMs:N,error:d.error}),g.onRetry(d.error,R,N),await se(N);continue}g.attempts>1&&w({type:"step_retries_exhausted",workflowId:E,stepId:n,stepKey:s,name:o,ts:Date.now(),durationMs:performance.now()-i,attempts:R,lastError:d.error});break}catch(d){let N=performance.now()-Ee;if(G(d))throw w({type:"step_aborted",workflowId:E,stepId:n,stepKey:s,name:o,ts:Date.now(),durationMs:N}),d;if(ie(d)){let D=Re(d),te=p?.ms??D?.timeoutMs??0;if(w({type:"step_timeout",workflowId:E,stepId:n,stepKey:s,name:o,ts:Date.now(),timeoutMs:te,attempt:R}),R<g.attempts&&g.retryOn(d,R)){let ne=oe(R,g);w({type:"step_retry",workflowId:E,stepId:n,stepKey:s,name:o,ts:Date.now(),attempt:R+1,maxAttempts:g.attempts,delayMs:ne,error:d}),g.onRetry(d,R,ne),await se(ne);continue}g.attempts>1&&w({type:"step_retries_exhausted",workflowId:E,stepId:n,stepKey:s,name:o,ts:Date.now(),durationMs:performance.now()-i,attempts:R,lastError:d})}if(R<g.attempts&&g.retryOn(d,R)){let D=oe(R,g);w({type:"step_retry",workflowId:E,stepId:n,stepKey:s,name:o,ts:Date.now(),attempt:R+1,maxAttempts:g.attempts,delayMs:D,error:d}),g.onRetry(d,R,D),await se(D);continue}g.attempts>1&&!ie(d)&&w({type:"step_retries_exhausted",workflowId:E,stepId:n,stepKey:s,name:o,ts:Date.now(),durationMs:performance.now()-i,attempts:R,lastError:d});let z=performance.now()-i;if(v){let D;try{D=v(d)}catch(te){throw Ce(te)}throw w({type:"step_error",workflowId:E,stepId:n,stepKey:s,name:o,ts:Date.now(),durationMs:z,error:D}),s&&w({type:"step_complete",workflowId:E,stepKey:s,name:o,ts:Date.now(),durationMs:z,result:A(D,{cause:d}),meta:{origin:"throw",thrown:d}}),l?.(D,o,x),U(D,{origin:"throw",thrown:d})}else{let D={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:d}};throw w({type:"step_error",workflowId:E,stepId:n,stepKey:s,name:o,ts:Date.now(),durationMs:z,error:D}),s&&w({type:"step_complete",workflowId:E,stepKey:s,name:o,ts:Date.now(),durationMs:z,result:A(D,{cause:d}),meta:{origin:"throw",thrown:d}}),d}}}let O=J,V=performance.now()-i,ee=B(O.error,{origin:"result",resultCause:O.cause});throw w({type:"step_error",workflowId:E,stepId:n,stepKey:s,name:o,ts:Date.now(),durationMs:V,error:ee}),s&&w({type:"step_complete",workflowId:E,stepKey:s,name:o,ts:Date.now(),durationMs:V,result:O,meta:{origin:"result",resultCause:O.cause}}),l?.(O.error,o,x),U(O.error,{origin:"result",resultCause:O.cause})})();c.try=(m,y)=>{let r=y.name,o=y.key,s=P(o),u="error"in y?()=>y.error:y.onError,p=C;return(async()=>{let n=p?performance.now():0;C&&w({type:"step_start",workflowId:E,stepId:s,stepKey:o,name:r,ts:Date.now()});try{let a=await m(),i=performance.now()-n;return w({type:"step_success",workflowId:E,stepId:s,stepKey:o,name:r,ts:Date.now(),durationMs:i}),o&&w({type:"step_complete",workflowId:E,stepKey:o,name:r,ts:Date.now(),durationMs:i,result:M(a)}),a}catch(a){let i=u(a),S=performance.now()-n,h=B(i,{origin:"throw",thrown:a});throw w({type:"step_error",workflowId:E,stepId:s,stepKey:o,name:r,ts:Date.now(),durationMs:S,error:h}),o&&w({type:"step_complete",workflowId:E,stepKey:o,name:r,ts:Date.now(),durationMs:S,result:A(i,{cause:a}),meta:{origin:"throw",thrown:a}}),l?.(i,r,x),U(i,{origin:"throw",thrown:a})}})()},c.fromResult=(m,y)=>{let r=y.name,o=y.key,s=P(o),u="error"in y?()=>y.error:y.onError,p=C;return(async()=>{let n=p?performance.now():0;C&&w({type:"step_start",workflowId:E,stepId:s,stepKey:o,name:r,ts:Date.now()});let a=await m();if(a.ok){let i=performance.now()-n;return w({type:"step_success",workflowId:E,stepId:s,stepKey:o,name:r,ts:Date.now(),durationMs:i}),o&&w({type:"step_complete",workflowId:E,stepKey:o,name:r,ts:Date.now(),durationMs:i,result:M(a.value)}),a.value}else{let i=u(a.error),S=performance.now()-n,h=B(i,{origin:"result",resultCause:a.error});throw w({type:"step_error",workflowId:E,stepId:s,stepKey:o,name:r,ts:Date.now(),durationMs:S,error:h}),o&&w({type:"step_complete",workflowId:E,stepKey:o,name:r,ts:Date.now(),durationMs:S,result:A(i,{cause:a.error}),meta:{origin:"result",resultCause:a.error}}),l?.(i,r,x),U(i,{origin:"result",resultCause:a.error})}})()},c.retry=(m,y)=>c(m,{name:y.name,key:y.key,retry:{attempts:y.attempts,backoff:y.backoff,initialDelay:y.initialDelay,maxDelay:y.maxDelay,jitter:y.jitter,retryOn:y.retryOn,onRetry:y.onRetry},timeout:y.timeout}),c.withTimeout=(m,y)=>c(m,{name:y.name,key:y.key,timeout:y}),c.parallel=((...m)=>{if(typeof m[0]=="string"){let y=m[0],r=m[1];return _(y,r)}else{let y=m[0],r=m[1]??{};return b(y,r)}}),c.race=(m,y)=>{let r=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let o=performance.now(),s=!1,u={scopeId:r,type:"race",winnerId:void 0};k.push(u);let p=()=>{if(s)return;s=!0;let n=k.findIndex(a=>a.scopeId===r);n!==-1&&k.splice(n,1),w({type:"scope_end",workflowId:E,scopeId:r,ts:Date.now(),durationMs:performance.now()-o,winnerId:u.winnerId})};w({type:"scope_start",workflowId:E,scopeId:r,scopeType:"race",name:m,ts:Date.now()});try{let n=await y();if(p(),!n.ok)throw l?.(n.error,m,x),U(n.error,{origin:"result",resultCause:n.cause});return n.value}catch(n){throw p(),n}})()},c.allSettled=(m,y)=>{let r=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let o=performance.now(),s=!1;k.push({scopeId:r,type:"allSettled"});let u=()=>{if(s)return;s=!0;let p=k.findIndex(n=>n.scopeId===r);p!==-1&&k.splice(p,1),w({type:"scope_end",workflowId:E,scopeId:r,ts:Date.now(),durationMs:performance.now()-o})};w({type:"scope_start",workflowId:E,scopeId:r,scopeType:"allSettled",name:m,ts:Date.now()});try{let p=await y();if(u(),!p.ok)throw l?.(p.error,m,x),U(p.error,{origin:"result",resultCause:p.cause});return p.value}catch(p){throw u(),p}})()};let W=await e(c);return M(W)}catch(c){if(xe(c))throw c.thrown;if(G(c)){let b=c.meta.origin==="throw"?c.meta.thrown:c.meta.resultCause;if(v||l)return A(c.error,{cause:b});if(Te(c.error))return A(c.error,{cause:b});let K=Z(c);return A(K,{cause:b})}if(v){let b=v(c);return l?.(b,"unexpected",x),A(b,{cause:c})}let _={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:c}};return l?.(_,"unexpected",x),A(_,{cause:c})}}H.strict=(e,t)=>H(e,t);function Ae(){let e=new Map;return{handleEvent:t=>{ae(t)&&e.set(t.stepKey,{result:t.result,meta:t.meta})},getState:()=>({steps:new Map(e)}),clear:()=>e.clear()}}function he(e){return typeof e=="object"&&e!==null&&e.__cachedMeta===!0}function Q(e,t,l){return A(e,{cause:{__cachedMeta:!0,originalCause:l,meta:t}})}function ue(e){return he(e)?e.meta:{origin:"result",resultCause:e}}function ve(e,t){async function l(C,v){let I=typeof v=="function",x=I?C:void 0,E=I?v:C,f=crypto.randomUUID(),k=t?.createContext?.(),j={workflowId:f,onEvent:t?.onEvent,context:k!==void 0?k:void 0},P=r=>{let o=r.context!==void 0||k===void 0?r:{...r,context:k};t?.onEvent?.(o,k)},w=t?.shouldRun,U=t?.catchUnexpected;if(w){let r=performance.now();try{let o=await w(f,k),s=performance.now()-r;if(P({type:"hook_should_run",workflowId:f,ts:Date.now(),durationMs:s,result:o,skipped:!o}),!o){let u=new Error("Workflow skipped by shouldRun hook");if(U){let n=U(u);return A(n)}return A({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:u}})}}catch(o){let s=performance.now()-r;if(P({type:"hook_should_run_error",workflowId:f,ts:Date.now(),durationMs:s,error:o}),U){let p=U(o);return A(p)}return A({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:o}})}}let G=t?.onBeforeStart;if(G){let r=performance.now();try{let o=await G(f,k),s=performance.now()-r;if(P({type:"hook_before_start",workflowId:f,ts:Date.now(),durationMs:s,result:o,skipped:!o}),!o){let u=new Error("Workflow skipped by onBeforeStart hook");if(U){let n=U(u);return A(n)}return A({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:u}})}}catch(o){let s=performance.now()-r;if(P({type:"hook_before_start_error",workflowId:f,ts:Date.now(),durationMs:s,error:o}),U){let p=U(o);return A(p)}return A({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:o}})}}let B=Date.now(),Z=performance.now();P({type:"workflow_start",workflowId:f,ts:B});let F=t?.resumeState,T=t?.cache;if(F&&!T&&(T=new Map),F&&T){let r=typeof F=="function"?await F():F;for(let[o,s]of r.steps){let{result:u,meta:p}=s;if(u.ok)T.set(o,u);else{let n=p??{origin:"result",resultCause:u.cause};T.set(o,Q(u.error,n,u.cause))}}}let c=r=>typeof r=="string"?{name:r}:r??{},_=t?.onAfterStep,b=async(r,o)=>{if(!_)return;let s=performance.now();try{await _(r,o,f,k);let u=performance.now()-s;P({type:"hook_after_step",workflowId:f,stepKey:r,ts:Date.now(),durationMs:u})}catch(u){let p=performance.now()-s;throw P({type:"hook_after_step_error",workflowId:f,stepKey:r,ts:Date.now(),durationMs:p,error:u}),u}},K=r=>{if(!T&&!_)return r;let o=async(s,u)=>{let{name:p,key:n}=c(u);if(n&&T&&T.has(n)){P({type:"step_cache_hit",workflowId:f,stepKey:n,name:p,ts:Date.now()});let i=T.get(n);if(i.ok)return i.value;let S=ue(i.cause);throw Y(i.error,S)}n&&T&&P({type:"step_cache_miss",workflowId:f,stepKey:n,name:p,ts:Date.now()});let a=typeof s=="function"?s:()=>s;try{let i=await r(a,u);return n&&(T&&T.set(n,M(i)),await b(n,M(i))),i}catch(i){if(n&&$(i)){let S=i,h=S.meta.origin==="result"?S.meta.resultCause:S.meta.thrown,g=Q(S.error,S.meta,h);T&&T.set(n,g),await b(n,g)}throw i}};return o.try=async(s,u)=>{let{name:p,key:n}=u;if(n&&T&&T.has(n)){P({type:"step_cache_hit",workflowId:f,stepKey:n,name:p,ts:Date.now()});let a=T.get(n);if(a.ok)return a.value;let i=ue(a.cause);throw Y(a.error,i)}n&&T&&P({type:"step_cache_miss",workflowId:f,stepKey:n,name:p,ts:Date.now()});try{let a=await r.try(s,u);return n&&(T&&T.set(n,M(a)),await b(n,M(a))),a}catch(a){if(n&&$(a)){let i=a,S=i.meta.origin==="result"?i.meta.resultCause:i.meta.thrown,h=Q(i.error,i.meta,S);T&&T.set(n,h),await b(n,h)}throw a}},o.fromResult=async(s,u)=>{let{name:p,key:n}=u;if(n&&T&&T.has(n)){P({type:"step_cache_hit",workflowId:f,stepKey:n,name:p,ts:Date.now()});let a=T.get(n);if(a.ok)return a.value;let i=ue(a.cause);throw Y(a.error,i)}n&&T&&P({type:"step_cache_miss",workflowId:f,stepKey:n,name:p,ts:Date.now()});try{let a=await r.fromResult(s,u);return n&&(T&&T.set(n,M(a)),await b(n,M(a))),a}catch(a){if(n&&$(a)){let i=a,S=i.meta.origin==="result"?i.meta.resultCause:i.meta.thrown,h=Q(i.error,i.meta,S);T&&T.set(n,h),await b(n,h)}throw a}},o.parallel=r.parallel,o.race=r.race,o.allSettled=r.allSettled,o.retry=(s,u)=>o(s,{name:u.name,key:u.key,retry:{attempts:u.attempts,backoff:u.backoff,initialDelay:u.initialDelay,maxDelay:u.maxDelay,jitter:u.jitter,retryOn:u.retryOn,onRetry:u.onRetry},timeout:u.timeout}),o.withTimeout=(s,u)=>o(s,{name:u.name,key:u.key,timeout:u}),o},W=I?r=>E(K(r),e,x,j):r=>E(K(r),e,j),m;if(t?.strict===!0){let r=t;m=await H.strict(W,{onError:r.onError,onEvent:r.onEvent,catchUnexpected:r.catchUnexpected,workflowId:f,context:k})}else{let r=t;m=await H(W,{onError:r?.onError??(()=>{}),onEvent:r?.onEvent,workflowId:f,context:k})}let y=performance.now()-Z;return m.ok?P({type:"workflow_success",workflowId:f,ts:Date.now(),durationMs:y}):P({type:"workflow_error",workflowId:f,ts:Date.now(),durationMs:y,error:m.error}),m}return l}function ae(e){return e.type==="step_complete"}function q(e){return typeof e=="object"&&e!==null&&e.type==="PENDING_APPROVAL"}function Pe(e){return typeof e=="object"&&e!==null&&e.type==="APPROVAL_REJECTED"}function _e(e,t){return A({type:"PENDING_APPROVAL",stepKey:e,reason:t?.reason,metadata:t?.metadata})}function be(e){return async()=>{let t=await e.checkApproval();switch(t.status){case"pending":return A({type:"PENDING_APPROVAL",stepKey:e.key,reason:e.pendingReason,metadata:e.metadata});case"rejected":return A({type:"APPROVAL_REJECTED",stepKey:e.key,reason:t.reason});case"approved":return M(t.value)}}}function Ue(e,t){let l=new Map(e.steps);return l.set(t.stepKey,{result:M(t.value)}),{steps:l}}function De(e,t){let l=new Map(e.steps);return l.delete(t),{steps:l}}function Me(e,t){let l=e.steps.get(t);return!l||l.result.ok?!1:q(l.result.error)}function Oe(e){let t=[];for(let[l,C]of e.steps)!C.result.ok&&q(C.result.error)&&t.push(l);return t}function Ie(){let e=new Map;return{handleEvent:t=>{ae(t)&&e.set(t.stepKey,{result:t.result,meta:t.meta})},getState:()=>({steps:new Map(e)}),clear:()=>e.clear(),hasPendingApprovals:()=>{for(let t of e.values())if(!t.result.ok&&q(t.result.error))return!0;return!1},getPendingApprovals:()=>{let t=[];for(let[l,C]of e)!C.result.ok&&q(C.result.error)&&t.push({stepKey:l,error:C.result.error});return t},injectApproval:(t,l)=>(e.set(t,{result:M(l)}),{steps:new Map(e)})}}0&&(module.exports={clearStep,createApprovalStep,createHITLCollector,createStepCollector,createWorkflow,getPendingApprovals,hasPendingApproval,injectApproval,isApprovalRejected,isPendingApproval,isStepComplete,pendingApproval});
|
|
2
2
|
//# sourceMappingURL=workflow.cjs.map
|