@jagreehal/workflow 1.0.0 → 1.1.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 +61 -0
- package/dist/core.cjs +1 -1
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +70 -0
- package/dist/core.d.ts +70 -0
- 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.js +1 -1
- package/dist/index.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 +15 -17
- package/docs/___advanced.test.ts +0 -565
- package/docs/___advanced_VERIFICATION.md +0 -64
package/dist/workflow.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var S=e=>({ok:!0,value:e}),
|
|
1
|
+
var S=e=>({ok:!0,value:e}),f=(e,n)=>({ok:!1,error:e,...n?.cause!==void 0?{cause:n.cause}:{}});var L=e=>typeof e=="object"&&e!==null&&e.type==="UNEXPECTED_ERROR",F=Symbol("early-exit");function O(e,n){return{[F]:!0,error:e,meta:n}}function M(e){return typeof e=="object"&&e!==null&&e[F]===!0}var N=Symbol("mapper-exception");function X(e){return{[N]:!0,thrown:e}}function J(e){return typeof e=="object"&&e!==null&&e[N]===!0}function G(e){return typeof e=="string"?{name:e}:e??{}}async function _(e,n){let{onError:p,onEvent:y,catchUnexpected:v,workflowId:h,context:I}=n&&typeof n=="object"?n:{},l=h??crypto.randomUUID(),x=!p&&!v,c=s=>{y?.(s,I)},R=O,D=s=>M(s),U=(s,m)=>x?m?.origin==="result"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:s,...m.resultCause!==void 0?{cause:m.resultCause}:{}}}:m?.origin==="throw"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"throw",error:s,thrown:m.thrown}}:{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:s}}:s,P=s=>s.origin==="result"?s.resultCause:s.thrown,k=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=(d,T)=>(async()=>{let{name:t,key:o}=G(T),w=y?performance.now():0;y&&c({type:"step_start",workflowId:l,stepKey:o,name:t,ts:Date.now()});let i;try{i=await(typeof d=="function"?d():d)}catch(u){let E=performance.now()-w;if(D(u))throw c({type:"step_aborted",workflowId:l,stepKey:o,name:t,ts:Date.now(),durationMs:E}),u;if(v){let A;try{A=v(u)}catch(V){throw X(V)}throw c({type:"step_error",workflowId:l,stepKey:o,name:t,ts:Date.now(),durationMs:E,error:A}),o&&c({type:"step_complete",workflowId:l,stepKey:o,name:t,ts:Date.now(),durationMs:E,result:f(A,{cause:u}),meta:{origin:"throw",thrown:u}}),p?.(A,t),R(A,{origin:"throw",thrown:u})}else{let A={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:u}};throw c({type:"step_error",workflowId:l,stepKey:o,name:t,ts:Date.now(),durationMs:E,error:A}),o&&c({type:"step_complete",workflowId:l,stepKey:o,name:t,ts:Date.now(),durationMs:E,result:f(A,{cause:u}),meta:{origin:"throw",thrown:u}}),u}}let r=performance.now()-w;if(i.ok)return c({type:"step_success",workflowId:l,stepKey:o,name:t,ts:Date.now(),durationMs:r}),o&&c({type:"step_complete",workflowId:l,stepKey:o,name:t,ts:Date.now(),durationMs:r,result:i}),i.value;let a=U(i.error,{origin:"result",resultCause:i.cause});throw c({type:"step_error",workflowId:l,stepKey:o,name:t,ts:Date.now(),durationMs:r,error:a}),o&&c({type:"step_complete",workflowId:l,stepKey:o,name:t,ts:Date.now(),durationMs:r,result:i,meta:{origin:"result",resultCause:i.cause}}),p?.(i.error,t),R(i.error,{origin:"result",resultCause:i.cause})})();s.try=(d,T)=>{let t=T.name,o=T.key,C="error"in T?()=>T.error:T.onError,w=y;return(async()=>{let i=w?performance.now():0;y&&c({type:"step_start",workflowId:l,stepKey:o,name:t,ts:Date.now()});try{let r=await d(),a=performance.now()-i;return c({type:"step_success",workflowId:l,stepKey:o,name:t,ts:Date.now(),durationMs:a}),o&&c({type:"step_complete",workflowId:l,stepKey:o,name:t,ts:Date.now(),durationMs:a,result:S(r)}),r}catch(r){let a=C(r),u=performance.now()-i,E=U(a,{origin:"throw",thrown:r});throw c({type:"step_error",workflowId:l,stepKey:o,name:t,ts:Date.now(),durationMs:u,error:E}),o&&c({type:"step_complete",workflowId:l,stepKey:o,name:t,ts:Date.now(),durationMs:u,result:f(a,{cause:r}),meta:{origin:"throw",thrown:r}}),p?.(a,t),R(a,{origin:"throw",thrown:r})}})()},s.fromResult=(d,T)=>{let t=T.name,o=T.key,C="error"in T?()=>T.error:T.onError,w=y;return(async()=>{let i=w?performance.now():0;y&&c({type:"step_start",workflowId:l,stepKey:o,name:t,ts:Date.now()});let r=await d();if(r.ok){let a=performance.now()-i;return c({type:"step_success",workflowId:l,stepKey:o,name:t,ts:Date.now(),durationMs:a}),o&&c({type:"step_complete",workflowId:l,stepKey:o,name:t,ts:Date.now(),durationMs:a,result:S(r.value)}),r.value}else{let a=C(r.error),u=performance.now()-i,E=U(a,{origin:"result",resultCause:r.error});throw c({type:"step_error",workflowId:l,stepKey:o,name:t,ts:Date.now(),durationMs:u,error:E}),o&&c({type:"step_complete",workflowId:l,stepKey:o,name:t,ts:Date.now(),durationMs:u,result:f(a,{cause:r.error}),meta:{origin:"result",resultCause:r.error}}),p?.(a,t),R(a,{origin:"result",resultCause:r.error})}})()};let g=await e(s);return S(g)}catch(s){if(J(s))throw s.thrown;if(D(s)){let g=P(s.meta);if(v||p)return f(s.error,{cause:g});if(L(s.error))return f(s.error,{cause:g});let d=k(s);return f(d,{cause:g})}if(v){let g=v(s);return p?.(g,"unexpected"),f(g,{cause:s})}let m={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:s}};return p?.(m,"unexpected"),f(m,{cause:s})}}_.strict=(e,n)=>_(e,n);function H(){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 Y(e){return typeof e=="object"&&e!==null&&e.__cachedMeta===!0}function b(e,n,p){return f(e,{cause:{__cachedMeta:!0,originalCause:p,meta:n}})}function j(e){return Y(e)?e.meta:{origin:"result",resultCause:e}}function $(e,n){async function p(y,v){let h=typeof v=="function",I=h?y:void 0,l=h?v:y,x=crypto.randomUUID(),c=n?.createContext?.(),R=t=>{n?.onEvent?.(t,c)},D=Date.now(),U=performance.now();R({type:"workflow_start",workflowId:x,ts:D});let P=n?.resumeState,k=n?.cache;if(P&&!k&&(k=new Map),P&&k){let t=typeof P=="function"?await P():P;for(let[o,C]of t.steps){let{result:w,meta:i}=C;if(w.ok)k.set(o,w);else{let r=i??{origin:"result",resultCause:w.cause};k.set(o,b(w.error,r,w.cause))}}}let s=t=>typeof t=="string"?{name:t}:t??{},m=t=>{if(!k)return t;let o=async(C,w)=>{let{name:i,key:r}=s(w);if(r&&k.has(r)){R({type:"step_cache_hit",workflowId:x,stepKey:r,name:i,ts:Date.now()});let u=k.get(r);if(u.ok)return u.value;let E=j(u.cause);throw O(u.error,E)}r&&R({type:"step_cache_miss",workflowId:x,stepKey:r,name:i,ts:Date.now()});let a=typeof C=="function"?C:()=>C;try{let u=await t(a,w);return r&&k.set(r,S(u)),u}catch(u){if(r&&M(u)){let E=u,A=E.meta.origin==="result"?E.meta.resultCause:E.meta.thrown;k.set(r,b(E.error,E.meta,A))}throw u}};return o.try=async(C,w)=>{let{name:i,key:r}=w;if(r&&k.has(r)){R({type:"step_cache_hit",workflowId:x,stepKey:r,name:i,ts:Date.now()});let a=k.get(r);if(a.ok)return a.value;let u=j(a.cause);throw O(a.error,u)}r&&R({type:"step_cache_miss",workflowId:x,stepKey:r,name:i,ts:Date.now()});try{let a=await t.try(C,w);return r&&k.set(r,S(a)),a}catch(a){if(r&&M(a)){let u=a,E=u.meta.origin==="result"?u.meta.resultCause:u.meta.thrown;k.set(r,b(u.error,u.meta,E))}throw a}},o},g=h?t=>l(m(t),e,I):t=>l(m(t),e),d;if(n?.strict===!0){let t=n;d=await _.strict(g,{onError:t.onError,onEvent:t.onEvent,catchUnexpected:t.catchUnexpected,workflowId:x,context:c})}else{let t=n;d=await _(g,{onError:t?.onError??(()=>{}),onEvent:t?.onEvent,workflowId:x,context:c})}let T=performance.now()-U;return d.ok?R({type:"workflow_success",workflowId:x,ts:Date.now(),durationMs:T}):R({type:"workflow_error",workflowId:x,ts:Date.now(),durationMs:T,error:d.error}),d}return p}function W(e){return e.type==="step_complete"}function K(e){return typeof e=="object"&&e!==null&&e.type==="PENDING_APPROVAL"}function z(e){return typeof e=="object"&&e!==null&&e.type==="APPROVAL_REJECTED"}function Q(e,n){return f({type:"PENDING_APPROVAL",stepKey:e,reason:n?.reason,metadata:n?.metadata})}function Z(e){return async()=>{let n=await e.checkApproval();switch(n.status){case"pending":return f({type:"PENDING_APPROVAL",stepKey:e.key,reason:e.pendingReason,metadata:e.metadata});case"rejected":return f({type:"APPROVAL_REJECTED",stepKey:e.key,reason:n.reason});case"approved":return S(n.value)}}}function ee(e,n){let p=new Map(e.steps);return p.set(n.stepKey,{result:S(n.value)}),{steps:p}}function ne(e,n){let p=new Map(e.steps);return p.delete(n),{steps:p}}function te(e,n){let p=e.steps.get(n);return!p||p.result.ok?!1:K(p.result.error)}function re(e){let n=[];for(let[p,y]of e.steps)!y.result.ok&&K(y.result.error)&&n.push(p);return n}function se(){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&&K(n.result.error))return!0;return!1},getPendingApprovals:()=>{let n=[];for(let[p,y]of e)!y.result.ok&&K(y.result.error)&&n.push({stepKey:p,error:y.result.error});return n},injectApproval:(n,p)=>(e.set(n,{result:S(p)}),{steps:new Map(e)})}}export{ne as clearStep,Z as createApprovalStep,se as createHITLCollector,H as createStepCollector,$ as createWorkflow,re as getPendingApprovals,te as hasPendingApproval,ee as injectApproval,z as isApprovalRejected,K as isPendingApproval,W as isStepComplete,Q as pendingApproval};
|
|
2
2
|
//# sourceMappingURL=workflow.js.map
|