@jagreehal/workflow 1.0.0 → 1.2.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/README.md +147 -0
- package/dist/core.cjs +1 -1
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +163 -6
- package/dist/core.d.ts +163 -6
- package/dist/core.js +1 -1
- package/dist/core.js.map +1 -1
- package/dist/index.cjs +1 -1
- 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 +1 -1
- package/dist/index.js.map +1 -1
- package/dist/visualize.cjs +7 -0
- package/dist/visualize.cjs.map +1 -0
- package/dist/visualize.d.cts +805 -0
- package/dist/visualize.d.ts +805 -0
- package/dist/visualize.js +7 -0
- package/dist/visualize.js.map +1 -0
- 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 +20 -17
- package/docs/___advanced.test.ts +0 -565
- package/docs/___advanced_VERIFICATION.md +0 -64
package/dist/index.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { AsyncResult, CauseOf, EmptyInputError, ErrorOf, Errors, ExtractCause, ExtractError, ExtractValue, MaybeAsyncResult, PromiseRejectedError, PromiseRejectionCause, Result, RunOptions, RunOptionsWithCatch, RunOptionsWithoutCatch, RunStep, SettledError, StepOptions, UnexpectedCause, UnexpectedError, UnexpectedStepFailureCause, UnwrapError, WorkflowEvent, all, allAsync, allSettled, allSettledAsync, andThen, any, anyAsync, err, from, fromNullable, fromPromise, isErr, isOk, isUnexpectedError, map, mapError, mapErrorTry, mapTry, match, ok, partition, run, tap, tapError, tryAsync, unwrap, unwrapOr, unwrapOrElse } from './core.cjs';
|
|
1
|
+
export { AsyncResult, CauseOf, EmptyInputError, ErrorOf, Errors, ExtractCause, ExtractError, ExtractValue, MaybeAsyncResult, PromiseRejectedError, PromiseRejectionCause, Result, RunOptions, RunOptionsWithCatch, RunOptionsWithoutCatch, RunStep, ScopeType, SettledError, StepOptions, UnexpectedCause, UnexpectedError, UnexpectedStepFailureCause, UnwrapError, WorkflowEvent, all, allAsync, allSettled, allSettledAsync, andThen, any, anyAsync, err, from, fromNullable, fromPromise, isErr, isOk, isUnexpectedError, map, mapError, mapErrorTry, mapTry, match, ok, partition, run, tap, tapError, tryAsync, unwrap, unwrapOr, unwrapOrElse } from './core.cjs';
|
|
2
2
|
export { AnyResultFn, ApprovalRejected, ApprovalStepOptions, CausesOfDeps, ErrorsOfDeps, PendingApproval, ResumeState, ResumeStateEntry, StepCache, Workflow, WorkflowOptions, WorkflowOptionsStrict, WorkflowStrict, clearStep, createApprovalStep, createHITLCollector, createStepCollector, createWorkflow, getPendingApprovals, hasPendingApproval, injectApproval, isApprovalRejected, isPendingApproval, isStepComplete, pendingApproval } from './workflow.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { AsyncResult, CauseOf, EmptyInputError, ErrorOf, Errors, ExtractCause, ExtractError, ExtractValue, MaybeAsyncResult, PromiseRejectedError, PromiseRejectionCause, Result, RunOptions, RunOptionsWithCatch, RunOptionsWithoutCatch, RunStep, SettledError, StepOptions, UnexpectedCause, UnexpectedError, UnexpectedStepFailureCause, UnwrapError, WorkflowEvent, all, allAsync, allSettled, allSettledAsync, andThen, any, anyAsync, err, from, fromNullable, fromPromise, isErr, isOk, isUnexpectedError, map, mapError, mapErrorTry, mapTry, match, ok, partition, run, tap, tapError, tryAsync, unwrap, unwrapOr, unwrapOrElse } from './core.js';
|
|
1
|
+
export { AsyncResult, CauseOf, EmptyInputError, ErrorOf, Errors, ExtractCause, ExtractError, ExtractValue, MaybeAsyncResult, PromiseRejectedError, PromiseRejectionCause, Result, RunOptions, RunOptionsWithCatch, RunOptionsWithoutCatch, RunStep, ScopeType, SettledError, StepOptions, UnexpectedCause, UnexpectedError, UnexpectedStepFailureCause, UnwrapError, WorkflowEvent, all, allAsync, allSettled, allSettledAsync, andThen, any, anyAsync, err, from, fromNullable, fromPromise, isErr, isOk, isUnexpectedError, map, mapError, mapErrorTry, mapTry, match, ok, partition, run, tap, tapError, tryAsync, unwrap, unwrapOr, unwrapOrElse } from './core.js';
|
|
2
2
|
export { AnyResultFn, ApprovalRejected, ApprovalStepOptions, CausesOfDeps, ErrorsOfDeps, PendingApproval, ResumeState, ResumeStateEntry, StepCache, Workflow, WorkflowOptions, WorkflowOptionsStrict, WorkflowStrict, clearStep, createApprovalStep, createHITLCollector, createStepCollector, createWorkflow, getPendingApprovals, hasPendingApproval, injectApproval, isApprovalRejected, isPendingApproval, isStepComplete, pendingApproval } from './workflow.js';
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var w=e=>({ok:!0,value:e}),p=(e,n)=>({ok:!1,error:e,...n?.cause!==void 0?{cause:n.cause}:{}}),J=e=>e.ok,G=e=>!e.ok,j=e=>typeof e=="object"&&e!==null&&e.type==="UNEXPECTED_ERROR",N=Symbol("early-exit");function b(e,n){return{[N]:!0,error:e,meta:n}}function K(e){return typeof e=="object"&&e!==null&&e[N]===!0}var V=Symbol("mapper-exception");function Y(e){return{[V]:!0,thrown:e}}function H(e){return typeof e=="object"&&e!==null&&e[V]===!0}function q(e){return typeof e=="string"?{name:e}:e??{}}async function O(e,n){let{onError:t,onEvent:r,catchUnexpected:c,workflowId:T,context:m}=n&&typeof n=="object"?n:{},l=T??crypto.randomUUID(),A=!t&&!c,k=s=>{r?.(s,m)},g=b,D=s=>K(s),M=(s,x)=>A?x?.origin==="result"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:s,...x.resultCause!==void 0?{cause:x.resultCause}:{}}}:x?.origin==="throw"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"throw",error:s,thrown:x.thrown}}:{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:s}}:s,U=s=>s.origin==="result"?s.resultCause:s.thrown,f=s=>({type:"UNEXPECTED_ERROR",cause:s.meta.origin==="result"?{type:"STEP_FAILURE",origin:"result",error:s.error,...s.meta.resultCause!==void 0?{cause:s.meta.resultCause}:{}}:{type:"STEP_FAILURE",origin:"throw",error:s.error,thrown:s.meta.thrown}});try{let s=(C,S)=>(async()=>{let{name:o,key:i}=q(S),R=r?performance.now():0;r&&k({type:"step_start",workflowId:l,stepKey:i,name:o,ts:Date.now()});let y;try{y=await(typeof C=="function"?C():C)}catch(a){let d=performance.now()-R;if(D(a))throw k({type:"step_aborted",workflowId:l,stepKey:i,name:o,ts:Date.now(),durationMs:d}),a;if(c){let h;try{h=c(a)}catch(X){throw Y(X)}throw k({type:"step_error",workflowId:l,stepKey:i,name:o,ts:Date.now(),durationMs:d,error:h}),i&&k({type:"step_complete",workflowId:l,stepKey:i,name:o,ts:Date.now(),durationMs:d,result:p(h,{cause:a}),meta:{origin:"throw",thrown:a}}),t?.(h,o),g(h,{origin:"throw",thrown:a})}else{let h={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:a}};throw k({type:"step_error",workflowId:l,stepKey:i,name:o,ts:Date.now(),durationMs:d,error:h}),i&&k({type:"step_complete",workflowId:l,stepKey:i,name:o,ts:Date.now(),durationMs:d,result:p(h,{cause:a}),meta:{origin:"throw",thrown:a}}),a}}let u=performance.now()-R;if(y.ok)return k({type:"step_success",workflowId:l,stepKey:i,name:o,ts:Date.now(),durationMs:u}),i&&k({type:"step_complete",workflowId:l,stepKey:i,name:o,ts:Date.now(),durationMs:u,result:y}),y.value;let E=M(y.error,{origin:"result",resultCause:y.cause});throw k({type:"step_error",workflowId:l,stepKey:i,name:o,ts:Date.now(),durationMs:u,error:E}),i&&k({type:"step_complete",workflowId:l,stepKey:i,name:o,ts:Date.now(),durationMs:u,result:y,meta:{origin:"result",resultCause:y.cause}}),t?.(y.error,o),g(y.error,{origin:"result",resultCause:y.cause})})();s.try=(C,S)=>{let o=S.name,i=S.key,P="error"in S?()=>S.error:S.onError,R=r;return(async()=>{let y=R?performance.now():0;r&&k({type:"step_start",workflowId:l,stepKey:i,name:o,ts:Date.now()});try{let u=await C(),E=performance.now()-y;return k({type:"step_success",workflowId:l,stepKey:i,name:o,ts:Date.now(),durationMs:E}),i&&k({type:"step_complete",workflowId:l,stepKey:i,name:o,ts:Date.now(),durationMs:E,result:w(u)}),u}catch(u){let E=P(u),a=performance.now()-y,d=M(E,{origin:"throw",thrown:u});throw k({type:"step_error",workflowId:l,stepKey:i,name:o,ts:Date.now(),durationMs:a,error:d}),i&&k({type:"step_complete",workflowId:l,stepKey:i,name:o,ts:Date.now(),durationMs:a,result:p(E,{cause:u}),meta:{origin:"throw",thrown:u}}),t?.(E,o),g(E,{origin:"throw",thrown:u})}})()};let v=await e(s);return w(v)}catch(s){if(H(s))throw s.thrown;if(D(s)){let v=U(s.meta);if(c||t)return p(s.error,{cause:v});if(j(s.error))return p(s.error,{cause:v});let C=f(s);return p(C,{cause:v})}if(c){let v=c(s);return t?.(v,"unexpected"),p(v,{cause:s})}let x={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:s}};return t?.(x,"unexpected"),p(x,{cause:s})}}O.strict=(e,n)=>O(e,n);var I=class extends Error{constructor(t,r){super(`Unwrap called on an error result: ${String(t)}`);this.error=t;this.cause=r;this.name="UnwrapError"}},B=e=>{if(e.ok)return e.value;throw new I(e.error,e.cause)},$=(e,n)=>e.ok?e.value:n,z=(e,n)=>e.ok?e.value:n(e.error,e.cause);function Q(e,n){try{return w(e())}catch(t){return n?p(n(t),{cause:t}):p(t)}}async function Z(e,n){try{return w(await e)}catch(t){return n?p(n(t),{cause:t}):p(t)}}async function ee(e,n){try{return w(await e())}catch(t){return n?p(n(t),{cause:t}):p(t)}}function ne(e,n){return e!=null?w(e):p(n())}function te(e,n){return e.ok?w(n(e.value)):e}function re(e,n){return e.ok?e:p(n(e.error),{cause:e.cause})}function oe(e,n){return e.ok?n.ok(e.value):n.err(e.error,e.cause)}function se(e,n){return e.ok?n(e.value):e}function ue(e,n){return e.ok&&n(e.value),e}function ae(e,n){return e.ok||n(e.error,e.cause),e}function pe(e,n,t){if(!e.ok)return e;try{return w(n(e.value))}catch(r){return p(t(r),{cause:r})}}function ie(e,n,t){if(e.ok)return e;try{return p(n(e.error),{cause:e.cause})}catch(r){return p(t(r),{cause:r})}}function ce(e){let n=[];for(let t of e){if(!t.ok)return t;n.push(t.value)}return w(n)}async function le(e){return e.length===0?w([]):new Promise(n=>{let t=!1,r=e.length,c=new Array(e.length);for(let T=0;T<e.length;T++){let m=T;Promise.resolve(e[m]).catch(l=>p({type:"PROMISE_REJECTED",cause:l},{cause:{type:"PROMISE_REJECTION",reason:l}})).then(l=>{if(!t){if(!l.ok){t=!0,n(l);return}c[m]=l.value,r--,r===0&&n(w(c))}})}})}function Ee(e){let n=[],t=[];for(let r of e)r.ok?n.push(r.value):t.push({error:r.error,cause:r.cause});return t.length>0?p(t):w(n)}function ye(e){let n=[],t=[];for(let r of e)r.ok?n.push(r.value):t.push(r.error);return{values:n,errors:t}}function we(e){if(e.length===0)return p({type:"EMPTY_INPUT",message:"any() requires at least one Result"});let n=null;for(let t of e){if(t.ok)return t;n||(n=t)}return n}async function ke(e){return e.length===0?p({type:"EMPTY_INPUT",message:"anyAsync() requires at least one Result"}):new Promise(n=>{let t=!1,r=e.length,c=null;for(let T of e)Promise.resolve(T).catch(m=>p({type:"PROMISE_REJECTED",cause:m},{cause:{type:"PROMISE_REJECTION",reason:m}})).then(m=>{if(!t){if(m.ok){t=!0,n(m);return}c||(c=m),r--,r===0&&n(c)}})})}async function de(e){let n=await Promise.all(e.map(c=>Promise.resolve(c).then(T=>({status:"result",result:T})).catch(T=>({status:"rejected",error:{type:"PROMISE_REJECTED",cause:T},cause:{type:"PROMISE_REJECTION",reason:T}})))),t=[],r=[];for(let c of n)c.status==="rejected"?r.push({error:c.error,cause:c.cause}):c.result.ok?t.push(c.result.value):r.push({error:c.result.error,cause:c.result.cause});return r.length>0?p(r):w(t)}function Te(){let e=new Map;return{handleEvent:n=>{W(n)&&e.set(n.stepKey,{result:n.result,meta:n.meta})},getState:()=>({steps:new Map(e)}),clear:()=>e.clear()}}function fe(e){return typeof e=="object"&&e!==null&&e.__cachedMeta===!0}function F(e,n,t){return p(e,{cause:{__cachedMeta:!0,originalCause:t,meta:n}})}function L(e){return fe(e)?e.meta:{origin:"result",resultCause:e}}function Re(e,n){async function t(r,c){let T=typeof c=="function",m=T?r:void 0,l=T?c:r,A=crypto.randomUUID(),k=n?.createContext?.(),g=o=>{n?.onEvent?.(o,k)},D=Date.now(),M=performance.now();g({type:"workflow_start",workflowId:A,ts:D});let U=n?.resumeState,f=n?.cache;if(U&&!f&&(f=new Map),U&&f){let o=typeof U=="function"?await U():U;for(let[i,P]of o.steps){let{result:R,meta:y}=P;if(R.ok)f.set(i,R);else{let u=y??{origin:"result",resultCause:R.cause};f.set(i,F(R.error,u,R.cause))}}}let s=o=>typeof o=="string"?{name:o}:o??{},x=o=>{if(!f)return o;let i=async(P,R)=>{let{name:y,key:u}=s(R);if(u&&f.has(u)){g({type:"step_cache_hit",workflowId:A,stepKey:u,name:y,ts:Date.now()});let a=f.get(u);if(a.ok)return a.value;let d=L(a.cause);throw b(a.error,d)}u&&g({type:"step_cache_miss",workflowId:A,stepKey:u,name:y,ts:Date.now()});let E=typeof P=="function"?P:()=>P;try{let a=await o(E,R);return u&&f.set(u,w(a)),a}catch(a){if(u&&K(a)){let d=a,h=d.meta.origin==="result"?d.meta.resultCause:d.meta.thrown;f.set(u,F(d.error,d.meta,h))}throw a}};return i.try=async(P,R)=>{let{name:y,key:u}=R;if(u&&f.has(u)){g({type:"step_cache_hit",workflowId:A,stepKey:u,name:y,ts:Date.now()});let E=f.get(u);if(E.ok)return E.value;let a=L(E.cause);throw b(E.error,a)}u&&g({type:"step_cache_miss",workflowId:A,stepKey:u,name:y,ts:Date.now()});try{let E=await o.try(P,R);return u&&f.set(u,w(E)),E}catch(E){if(u&&K(E)){let a=E,d=a.meta.origin==="result"?a.meta.resultCause:a.meta.thrown;f.set(u,F(a.error,a.meta,d))}throw E}},i},v=T?o=>l(x(o),e,m):o=>l(x(o),e),C;if(n?.strict===!0){let o=n;C=await O.strict(v,{onError:o.onError,onEvent:o.onEvent,catchUnexpected:o.catchUnexpected,workflowId:A,context:k})}else{let o=n;C=await O(v,{onError:o?.onError??(()=>{}),onEvent:o?.onEvent,workflowId:A,context:k})}let S=performance.now()-M;return C.ok?g({type:"workflow_success",workflowId:A,ts:Date.now(),durationMs:S}):g({type:"workflow_error",workflowId:A,ts:Date.now(),durationMs:S,error:C.error}),C}return t}function W(e){return e.type==="step_complete"}function _(e){return typeof e=="object"&&e!==null&&e.type==="PENDING_APPROVAL"}function me(e){return typeof e=="object"&&e!==null&&e.type==="APPROVAL_REJECTED"}function Ce(e,n){return p({type:"PENDING_APPROVAL",stepKey:e,reason:n?.reason,metadata:n?.metadata})}function xe(e){return async()=>{let n=await e.checkApproval();switch(n.status){case"pending":return p({type:"PENDING_APPROVAL",stepKey:e.key,reason:e.pendingReason,metadata:e.metadata});case"rejected":return p({type:"APPROVAL_REJECTED",stepKey:e.key,reason:n.reason});case"approved":return w(n.value)}}}function Ae(e,n){let t=new Map(e.steps);return t.set(n.stepKey,{result:w(n.value)}),{steps:t}}function ge(e,n){let t=new Map(e.steps);return t.delete(n),{steps:t}}function ve(e,n){let t=e.steps.get(n);return!t||t.result.ok?!1:_(t.result.error)}function Se(e){let n=[];for(let[t,r]of e.steps)!r.result.ok&&_(r.result.error)&&n.push(t);return n}function Pe(){let e=new Map;return{handleEvent:n=>{W(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&&_(n.result.error))return!0;return!1},getPendingApprovals:()=>{let n=[];for(let[t,r]of e)!r.result.ok&&_(r.result.error)&&n.push({stepKey:t,error:r.result.error});return n},injectApproval:(n,t)=>(e.set(n,{result:w(t)}),{steps:new Map(e)})}}export{I as UnwrapError,ce as all,le as allAsync,Ee as allSettled,de as allSettledAsync,se as andThen,we as any,ke as anyAsync,ge as clearStep,xe as createApprovalStep,Pe as createHITLCollector,Te as createStepCollector,Re as createWorkflow,p as err,Q as from,ne as fromNullable,Z as fromPromise,Se as getPendingApprovals,ve as hasPendingApproval,Ae as injectApproval,me as isApprovalRejected,G as isErr,J as isOk,_ as isPendingApproval,W as isStepComplete,j as isUnexpectedError,te as map,re as mapError,ie as mapErrorTry,pe as mapTry,oe as match,w as ok,ye as partition,Ce as pendingApproval,O as run,ue as tap,ae as tapError,ee as tryAsync,B as unwrap,$ as unwrapOr,z as unwrapOrElse};
|
|
1
|
+
var R=e=>({ok:!0,value:e}),w=(e,n)=>({ok:!1,error:e,...n?.cause!==void 0?{cause:n.cause}:{}}),H=e=>e.ok,q=e=>!e.ok,J=e=>typeof e=="object"&&e!==null&&e.type==="UNEXPECTED_ERROR",G=Symbol("early-exit");function b(e,n){return{[G]:!0,error:e,meta:n}}function K(e){return typeof e=="object"&&e!==null&&e[G]===!0}var Y=Symbol("mapper-exception");function B(e){return{[Y]:!0,thrown:e}}function z(e){return typeof e=="object"&&e!==null&&e[Y]===!0}function Q(e){return typeof e=="string"?{name:e}:e??{}}async function O(e,n){let{onError:t,onEvent:p,catchUnexpected:T,workflowId:x,context:v}=n&&typeof n=="object"?n:{},E=x??crypto.randomUUID(),h=!t&&!T,g=[],U=0,I=a=>a??`step_${++U}`,k=a=>{if(a.type==="step_success"){let A=a.stepId;for(let c=g.length-1;c>=0;c--){let y=g[c];if(y.type==="race"&&!y.winnerId){y.winnerId=A;break}}}p?.(a,v)},P=b,m=a=>K(a),M=(a,A)=>h?A?.origin==="result"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:a,...A.resultCause!==void 0?{cause:A.resultCause}:{}}}:A?.origin==="throw"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"throw",error:a,thrown:A.thrown}}:{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:a}}:a,W=a=>a.origin==="result"?a.resultCause:a.thrown,j=a=>({type:"UNEXPECTED_ERROR",cause:a.meta.origin==="result"?{type:"STEP_FAILURE",origin:"result",error:a.error,...a.meta.resultCause!==void 0?{cause:a.meta.resultCause}:{}}:{type:"STEP_FAILURE",origin:"throw",error:a.error,thrown:a.meta.thrown}});try{let a=(y,d)=>(async()=>{let{name:o,key:u}=Q(d),s=I(u),r=p?performance.now():0;p&&k({type:"step_start",workflowId:E,stepId:s,stepKey:u,name:o,ts:Date.now()});let i;try{i=await(typeof y=="function"?y():y)}catch(S){let _=performance.now()-r;if(m(S))throw k({type:"step_aborted",workflowId:E,stepId:s,stepKey:u,name:o,ts:Date.now(),durationMs:_}),S;if(T){let D;try{D=T(S)}catch($){throw B($)}throw k({type:"step_error",workflowId:E,stepId:s,stepKey:u,name:o,ts:Date.now(),durationMs:_,error:D}),u&&k({type:"step_complete",workflowId:E,stepKey:u,name:o,ts:Date.now(),durationMs:_,result:w(D,{cause:S}),meta:{origin:"throw",thrown:S}}),t?.(D,o),P(D,{origin:"throw",thrown:S})}else{let D={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:S}};throw k({type:"step_error",workflowId:E,stepId:s,stepKey:u,name:o,ts:Date.now(),durationMs:_,error:D}),u&&k({type:"step_complete",workflowId:E,stepKey:u,name:o,ts:Date.now(),durationMs:_,result:w(D,{cause:S}),meta:{origin:"throw",thrown:S}}),S}}let f=performance.now()-r;if(i.ok)return k({type:"step_success",workflowId:E,stepId:s,stepKey:u,name:o,ts:Date.now(),durationMs:f}),u&&k({type:"step_complete",workflowId:E,stepKey:u,name:o,ts:Date.now(),durationMs:f,result:i}),i.value;let C=M(i.error,{origin:"result",resultCause:i.cause});throw k({type:"step_error",workflowId:E,stepId:s,stepKey:u,name:o,ts:Date.now(),durationMs:f,error:C}),u&&k({type:"step_complete",workflowId:E,stepKey:u,name:o,ts:Date.now(),durationMs:f,result:i,meta:{origin:"result",resultCause:i.cause}}),t?.(i.error,o),P(i.error,{origin:"result",resultCause:i.cause})})();a.try=(y,d)=>{let o=d.name,u=d.key,s=I(u),l="error"in d?()=>d.error:d.onError,r=p;return(async()=>{let i=r?performance.now():0;p&&k({type:"step_start",workflowId:E,stepId:s,stepKey:u,name:o,ts:Date.now()});try{let f=await y(),C=performance.now()-i;return k({type:"step_success",workflowId:E,stepId:s,stepKey:u,name:o,ts:Date.now(),durationMs:C}),u&&k({type:"step_complete",workflowId:E,stepKey:u,name:o,ts:Date.now(),durationMs:C,result:R(f)}),f}catch(f){let C=l(f),S=performance.now()-i,_=M(C,{origin:"throw",thrown:f});throw k({type:"step_error",workflowId:E,stepId:s,stepKey:u,name:o,ts:Date.now(),durationMs:S,error:_}),u&&k({type:"step_complete",workflowId:E,stepKey:u,name:o,ts:Date.now(),durationMs:S,result:w(C,{cause:f}),meta:{origin:"throw",thrown:f}}),t?.(C,o),P(C,{origin:"throw",thrown:f})}})()},a.fromResult=(y,d)=>{let o=d.name,u=d.key,s=I(u),l="error"in d?()=>d.error:d.onError,r=p;return(async()=>{let i=r?performance.now():0;p&&k({type:"step_start",workflowId:E,stepId:s,stepKey:u,name:o,ts:Date.now()});let f=await y();if(f.ok){let C=performance.now()-i;return k({type:"step_success",workflowId:E,stepId:s,stepKey:u,name:o,ts:Date.now(),durationMs:C}),u&&k({type:"step_complete",workflowId:E,stepKey:u,name:o,ts:Date.now(),durationMs:C,result:R(f.value)}),f.value}else{let C=l(f.error),S=performance.now()-i,_=M(C,{origin:"result",resultCause:f.error});throw k({type:"step_error",workflowId:E,stepId:s,stepKey:u,name:o,ts:Date.now(),durationMs:S,error:_}),u&&k({type:"step_complete",workflowId:E,stepKey:u,name:o,ts:Date.now(),durationMs:S,result:w(C,{cause:f.error}),meta:{origin:"result",resultCause:f.error}}),t?.(C,o),P(C,{origin:"result",resultCause:f.error})}})()},a.parallel=(y,d)=>{let o=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let u=performance.now(),s=!1;g.push({scopeId:o,type:"parallel"});let l=()=>{if(s)return;s=!0;let r=g.findIndex(i=>i.scopeId===o);r!==-1&&g.splice(r,1),k({type:"scope_end",workflowId:E,scopeId:o,ts:Date.now(),durationMs:performance.now()-u})};k({type:"scope_start",workflowId:E,scopeId:o,scopeType:"parallel",name:y,ts:Date.now()});try{let r=await d();if(l(),!r.ok)throw t?.(r.error,y),P(r.error,{origin:"result",resultCause:r.cause});return r.value}catch(r){throw l(),r}})()},a.race=(y,d)=>{let o=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let u=performance.now(),s=!1,l={scopeId:o,type:"race",winnerId:void 0};g.push(l);let r=()=>{if(s)return;s=!0;let i=g.findIndex(f=>f.scopeId===o);i!==-1&&g.splice(i,1),k({type:"scope_end",workflowId:E,scopeId:o,ts:Date.now(),durationMs:performance.now()-u,winnerId:l.winnerId})};k({type:"scope_start",workflowId:E,scopeId:o,scopeType:"race",name:y,ts:Date.now()});try{let i=await d();if(r(),!i.ok)throw t?.(i.error,y),P(i.error,{origin:"result",resultCause:i.cause});return i.value}catch(i){throw r(),i}})()},a.allSettled=(y,d)=>{let o=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let u=performance.now(),s=!1;g.push({scopeId:o,type:"allSettled"});let l=()=>{if(s)return;s=!0;let r=g.findIndex(i=>i.scopeId===o);r!==-1&&g.splice(r,1),k({type:"scope_end",workflowId:E,scopeId:o,ts:Date.now(),durationMs:performance.now()-u})};k({type:"scope_start",workflowId:E,scopeId:o,scopeType:"allSettled",name:y,ts:Date.now()});try{let r=await d();if(l(),!r.ok)throw t?.(r.error,y),P(r.error,{origin:"result",resultCause:r.cause});return r.value}catch(r){throw l(),r}})()};let c=await e(a);return R(c)}catch(a){if(z(a))throw a.thrown;if(m(a)){let c=W(a.meta);if(T||t)return w(a.error,{cause:c});if(J(a.error))return w(a.error,{cause:c});let y=j(a);return w(y,{cause:c})}if(T){let c=T(a);return t?.(c,"unexpected"),w(c,{cause:a})}let A={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:a}};return t?.(A,"unexpected"),w(A,{cause:a})}}O.strict=(e,n)=>O(e,n);var N=class extends Error{constructor(t,p){super(`Unwrap called on an error result: ${String(t)}`);this.error=t;this.cause=p;this.name="UnwrapError"}},Z=e=>{if(e.ok)return e.value;throw new N(e.error,e.cause)},ee=(e,n)=>e.ok?e.value:n,ne=(e,n)=>e.ok?e.value:n(e.error,e.cause);function te(e,n){try{return R(e())}catch(t){return n?w(n(t),{cause:t}):w(t)}}async function re(e,n){try{return R(await e)}catch(t){return n?w(n(t),{cause:t}):w(t)}}async function se(e,n){try{return R(await e())}catch(t){return n?w(n(t),{cause:t}):w(t)}}function oe(e,n){return e!=null?R(e):w(n())}function ue(e,n){return e.ok?R(n(e.value)):e}function ae(e,n){return e.ok?e:w(n(e.error),{cause:e.cause})}function pe(e,n){return e.ok?n.ok(e.value):n.err(e.error,e.cause)}function ie(e,n){return e.ok?n(e.value):e}function ce(e,n){return e.ok&&n(e.value),e}function le(e,n){return e.ok||n(e.error,e.cause),e}function Ee(e,n,t){if(!e.ok)return e;try{return R(n(e.value))}catch(p){return w(t(p),{cause:p})}}function ye(e,n,t){if(e.ok)return e;try{return w(n(e.error),{cause:e.cause})}catch(p){return w(t(p),{cause:p})}}function we(e){let n=[];for(let t of e){if(!t.ok)return t;n.push(t.value)}return R(n)}async function de(e){return e.length===0?R([]):new Promise(n=>{let t=!1,p=e.length,T=new Array(e.length);for(let x=0;x<e.length;x++){let v=x;Promise.resolve(e[v]).catch(E=>w({type:"PROMISE_REJECTED",cause:E},{cause:{type:"PROMISE_REJECTION",reason:E}})).then(E=>{if(!t){if(!E.ok){t=!0,n(E);return}T[v]=E.value,p--,p===0&&n(R(T))}})}})}function ke(e){let n=[],t=[];for(let p of e)p.ok?n.push(p.value):t.push({error:p.error,cause:p.cause});return t.length>0?w(t):R(n)}function Te(e){let n=[],t=[];for(let p of e)p.ok?n.push(p.value):t.push(p.error);return{values:n,errors:t}}function fe(e){if(e.length===0)return w({type:"EMPTY_INPUT",message:"any() requires at least one Result"});let n=null;for(let t of e){if(t.ok)return t;n||(n=t)}return n}async function Re(e){return e.length===0?w({type:"EMPTY_INPUT",message:"anyAsync() requires at least one Result"}):new Promise(n=>{let t=!1,p=e.length,T=null;for(let x of e)Promise.resolve(x).catch(v=>w({type:"PROMISE_REJECTED",cause:v},{cause:{type:"PROMISE_REJECTION",reason:v}})).then(v=>{if(!t){if(v.ok){t=!0,n(v);return}T||(T=v),p--,p===0&&n(T)}})})}async function me(e){let n=await Promise.all(e.map(T=>Promise.resolve(T).then(x=>({status:"result",result:x})).catch(x=>({status:"rejected",error:{type:"PROMISE_REJECTED",cause:x},cause:{type:"PROMISE_REJECTION",reason:x}})))),t=[],p=[];for(let T of n)T.status==="rejected"?p.push({error:T.error,cause:T.cause}):T.result.ok?t.push(T.result.value):p.push({error:T.result.error,cause:T.result.cause});return p.length>0?w(p):R(t)}function Ce(){let e=new Map;return{handleEvent:n=>{X(n)&&e.set(n.stepKey,{result:n.result,meta:n.meta})},getState:()=>({steps:new Map(e)}),clear:()=>e.clear()}}function xe(e){return typeof e=="object"&&e!==null&&e.__cachedMeta===!0}function V(e,n,t){return w(e,{cause:{__cachedMeta:!0,originalCause:t,meta:n}})}function L(e){return xe(e)?e.meta:{origin:"result",resultCause:e}}function Se(e,n){async function t(p,T){let x=typeof T=="function",v=x?p:void 0,E=x?T:p,h=crypto.randomUUID(),g=n?.createContext?.(),U=c=>{n?.onEvent?.(c,g)},I=Date.now(),k=performance.now();U({type:"workflow_start",workflowId:h,ts:I});let P=n?.resumeState,m=n?.cache;if(P&&!m&&(m=new Map),P&&m){let c=typeof P=="function"?await P():P;for(let[y,d]of c.steps){let{result:o,meta:u}=d;if(o.ok)m.set(y,o);else{let s=u??{origin:"result",resultCause:o.cause};m.set(y,V(o.error,s,o.cause))}}}let M=c=>typeof c=="string"?{name:c}:c??{},W=c=>{if(!m)return c;let y=async(d,o)=>{let{name:u,key:s}=M(o);if(s&&m.has(s)){U({type:"step_cache_hit",workflowId:h,stepKey:s,name:u,ts:Date.now()});let r=m.get(s);if(r.ok)return r.value;let i=L(r.cause);throw b(r.error,i)}s&&U({type:"step_cache_miss",workflowId:h,stepKey:s,name:u,ts:Date.now()});let l=typeof d=="function"?d:()=>d;try{let r=await c(l,o);return s&&m.set(s,R(r)),r}catch(r){if(s&&K(r)){let i=r,f=i.meta.origin==="result"?i.meta.resultCause:i.meta.thrown;m.set(s,V(i.error,i.meta,f))}throw r}};return y.try=async(d,o)=>{let{name:u,key:s}=o;if(s&&m.has(s)){U({type:"step_cache_hit",workflowId:h,stepKey:s,name:u,ts:Date.now()});let l=m.get(s);if(l.ok)return l.value;let r=L(l.cause);throw b(l.error,r)}s&&U({type:"step_cache_miss",workflowId:h,stepKey:s,name:u,ts:Date.now()});try{let l=await c.try(d,o);return s&&m.set(s,R(l)),l}catch(l){if(s&&K(l)){let r=l,i=r.meta.origin==="result"?r.meta.resultCause:r.meta.thrown;m.set(s,V(r.error,r.meta,i))}throw l}},y.fromResult=async(d,o)=>{let{name:u,key:s}=o;if(s&&m.has(s)){U({type:"step_cache_hit",workflowId:h,stepKey:s,name:u,ts:Date.now()});let l=m.get(s);if(l.ok)return l.value;let r=L(l.cause);throw b(l.error,r)}s&&U({type:"step_cache_miss",workflowId:h,stepKey:s,name:u,ts:Date.now()});try{let l=await c.fromResult(d,o);return s&&m.set(s,R(l)),l}catch(l){if(s&&K(l)){let r=l,i=r.meta.origin==="result"?r.meta.resultCause:r.meta.thrown;m.set(s,V(r.error,r.meta,i))}throw l}},y.parallel=c.parallel,y.race=c.race,y.allSettled=c.allSettled,y},j=x?c=>E(W(c),e,v):c=>E(W(c),e),a;if(n?.strict===!0){let c=n;a=await O.strict(j,{onError:c.onError,onEvent:c.onEvent,catchUnexpected:c.catchUnexpected,workflowId:h,context:g})}else{let c=n;a=await O(j,{onError:c?.onError??(()=>{}),onEvent:c?.onEvent,workflowId:h,context:g})}let A=performance.now()-k;return a.ok?U({type:"workflow_success",workflowId:h,ts:Date.now(),durationMs:A}):U({type:"workflow_error",workflowId:h,ts:Date.now(),durationMs:A,error:a.error}),a}return t}function X(e){return e.type==="step_complete"}function F(e){return typeof e=="object"&&e!==null&&e.type==="PENDING_APPROVAL"}function ge(e){return typeof e=="object"&&e!==null&&e.type==="APPROVAL_REJECTED"}function Ae(e,n){return w({type:"PENDING_APPROVAL",stepKey:e,reason:n?.reason,metadata:n?.metadata})}function ve(e){return async()=>{let n=await e.checkApproval();switch(n.status){case"pending":return w({type:"PENDING_APPROVAL",stepKey:e.key,reason:e.pendingReason,metadata:e.metadata});case"rejected":return w({type:"APPROVAL_REJECTED",stepKey:e.key,reason:n.reason});case"approved":return R(n.value)}}}function he(e,n){let t=new Map(e.steps);return t.set(n.stepKey,{result:R(n.value)}),{steps:t}}function Pe(e,n){let t=new Map(e.steps);return t.delete(n),{steps:t}}function Ue(e,n){let t=e.steps.get(n);return!t||t.result.ok?!1:F(t.result.error)}function _e(e){let n=[];for(let[t,p]of e.steps)!p.result.ok&&F(p.result.error)&&n.push(t);return n}function De(){let e=new Map;return{handleEvent:n=>{X(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&&F(n.result.error))return!0;return!1},getPendingApprovals:()=>{let n=[];for(let[t,p]of e)!p.result.ok&&F(p.result.error)&&n.push({stepKey:t,error:p.result.error});return n},injectApproval:(n,t)=>(e.set(n,{result:R(t)}),{steps:new Map(e)})}}export{N as UnwrapError,we as all,de as allAsync,ke as allSettled,me as allSettledAsync,ie as andThen,fe as any,Re as anyAsync,Pe as clearStep,ve as createApprovalStep,De as createHITLCollector,Ce as createStepCollector,Se as createWorkflow,w as err,te as from,oe as fromNullable,re as fromPromise,_e as getPendingApprovals,Ue as hasPendingApproval,he as injectApproval,ge as isApprovalRejected,q as isErr,H as isOk,F as isPendingApproval,X as isStepComplete,J as isUnexpectedError,ue as map,ae as mapError,ye as mapErrorTry,Ee as mapTry,pe as match,R as ok,Te as partition,Ae as pendingApproval,O as run,ce as tap,le as tapError,se as tryAsync,Z as unwrap,ee as unwrapOr,ne as unwrapOrElse};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|