@5minds/processcube_app_sdk 0.0.1-develop-31cd70-llp4afwk → 0.0.1-develop-ff67f7-llqaqetw

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@5minds/processcube_app_sdk",
3
- "version": "0.0.1-develop-31cd70-llp4afwk",
3
+ "version": "0.0.1-develop-ff67f7-llqaqetw",
4
4
  "description": "The SDK for ProcessCube Apps",
5
5
  "type": "module",
6
6
  "main": "common/index.cjs",
package/server/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var G=Object.create;var T=Object.defineProperty;var X=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,H=Object.prototype.hasOwnProperty;var J=(e,s)=>{for(var t in s)T(e,t,{get:s[t],enumerable:!0})},S=(e,s,t,n)=>{if(s&&typeof s=="object"||typeof s=="function")for(let r of Y(s))!H.call(e,r)&&r!==t&&T(e,r,{get:()=>s[r],enumerable:!(n=X(s,r))||n.enumerable});return e};var Z=(e,s,t)=>(t=e!=null?G(j(e)):{},S(s||!e||!e.__esModule?T(t,"default",{value:e,enumerable:!0}):t,e)),V=e=>S(T({},"__esModule",{value:!0}),e);var ye={};J(ye,{finishUserTask:()=>ke,finishUserTaskAndGetNext:()=>Q,getActiveProcessInstances:()=>ie,getAssignedUserTasksByIdentity:()=>oe,getIdentity:()=>ae,getReservedUserTasksByIdentity:()=>re,getUserTasks:()=>C,getWaitingUserTaskByFlowNodeInstanceId:()=>P,getWaitingUserTasks:()=>ee,getWaitingUserTasksByCorrelationId:()=>ne,getWaitingUserTasksByFlowNodeId:()=>te,getWaitingUserTasksByProcessInstanceId:()=>se,hardNavigate:()=>we,navigateToUrl:()=>ge,startProcess:()=>Te,subscribeToExternalTasks:()=>de,waitForUserTask:()=>z});module.exports=V(ye);var He=require("only-server");var i=require("@5minds/processcube_engine_client");var _=require("@5minds/processcube_engine_client"),N=process.env.PROCESSCUBE_ENGINE_URL??"http://localhost:10560",o=new _.EngineClient(N);async function z(e={}){let{processInstanceId:s,flowNodeId:t}=e;return new Promise(async(n,r)=>{let c=await o.userTasks.onUserTaskWaiting(async a=>{let y=a.flowNodeInstanceId===void 0,E=s!==void 0&&a.processInstanceId!==s,w=t!==void 0&&a.flowNodeId!==t,u=s!==void 0&&t!==void 0&&a.processInstanceId!==s&&a.flowNodeId!==t;if(y||E||w||u)return;let p=await P(a.flowNodeInstanceId);return o.notification.removeSubscription(c),p===null?r(new Error(`UserTask with instance ID "${a.flowNodeInstanceId}" does not exist.`)):n(p)}),f=(await C({processInstanceId:s,flowNodeId:t,state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended}))?.[0];f&&(o.notification.removeSubscription(c),n(f))})}async function Q(e,s,t){await o.userTasks.finishUserTask(e,s);let n=await o.userTasks.query({flowNodeId:t,state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended});return n.userTasks.length===0?null:n.userTasks[0]}async function C(...e){let s=await o.userTasks.query(...e);return s.userTasks.length===0?null:s.userTasks}async function ee(e){let s=await o.userTasks.query({state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},e);return s.userTasks.length===0?null:s.userTasks}async function se(e,s){let t=await o.userTasks.query({processInstanceId:e,state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},s);return t.userTasks.length===0?null:t.userTasks}async function te(e,s){let t=await o.userTasks.query({flowNodeId:e,state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},s);return t.userTasks.length===0?null:t.userTasks}async function P(e,s){let t=await o.userTasks.query({flowNodeInstanceId:e,state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{...s,limit:1});return t.userTasks.length===0?null:t.userTasks[0]}async function ne(e,s){let t=await o.userTasks.query({correlationId:e,state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},s);return t.userTasks.length===0?null:t.userTasks}async function re(e,s){let n=(await o.userTasks.query({state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...s})).userTasks.filter(r=>r.actualOwnerId===e.userId);return n.length===0?null:n}async function oe(e,s){let n=(await o.userTasks.query({state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...s})).userTasks.filter(r=>r.assignedUserIds?.includes(e.userId));return n.length===0?null:n}var k=require("next/headers"),U=require("next-auth/jwt");async function ae(){let e=await(0,U.getToken)({req:{cookies:(0,k.cookies)(),headers:(0,k.headers)()}});if(!e?.accessToken||!e?.sub)throw new Error("AccessToken or Sub could not be determined!");return{token:e?.accessToken,userId:e?.sub}}var F=require("@5minds/processcube_engine_client");async function ie(e){let s=await o.processInstances.query({state:F.DataModels.ProcessInstances.ProcessInstanceState.running},e);return s.processInstances.length===0?null:s.processInstances}var R=require("@5minds/processcube_engine_sdk"),D=require("@5minds/processcube_engine_client");var l=require("node:path"),M=require("esbuild"),I=require("node:fs"),b=require("openid-client"),A=Z(require("jwt-decode"),1),ce={token:"ZHVtbXlfdG9rZW4=",userId:"dummy_token"},le=.85,ue="external_task.ts",d=new R.Logger("processcube_app_sdk:external_task_adapter"),g=process.env.PROCESSCUBE_AUTHORITY_URL!==void 0;async function de(e){let s,t=[e,(0,l.join)(process.cwd(),"app"),(0,l.join)(process.cwd(),"src","app")];for(let r of t)if(r&&(0,I.existsSync)(r)){s=r;break}if(!s)throw new Error("Could not find external tasks directory");let n=await v(s);for(let r of n){let c=await fe(r);if(!c)continue;let m=(0,l.join)(r,c),f=await pe(m),a=g?await L():null,y={identity:await q(a),...f?.config},E=f.default,w=(0,l.relative)(s,r).replace(/^\.\/+/,""),u=new D.ExternalTaskWorker(N,w,E,y);await h(a,u),d.info(`Starting external task worker ${u.workerId} for topic '${w}'`),u.onWorkerError((p,x,K)=>{d.error(`Intercepted "${p}"-type error: ${x.message}`,{err:x,type:p,externalTask:K})}),u.start()}}async function fe(e){let t=(await I.promises.readdir(e)).filter(n=>n===ue);if(t.length===0)return null;if(t.length>1)throw new Error(`Found more than one external task file in directory '${e}'`);return t[0]}async function L(){if(!g)throw new Error("No authority is configured");let e=await b.Issuer.discover(process.env.PROCESSCUBE_AUTHORITY_URL);return await new e.Client({client_id:process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID,client_secret:process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET}).grant({grant_type:"client_credentials",scope:"engine_etw"})}async function q(e){if(!g||e===null)return ce;let s=e.access_token,t=(0,A.default)(s);return{token:e.access_token,userId:t.sub}}async function h(e,s,t=5){try{if(!g||e===null)return;let r=await Ie(e)*le*1e3;setTimeout(async()=>{let c=await L(),m=await q(c);s.identity=m,await h(c,s)},r)}catch(n){if(t===0)throw n;d.error(`Could not refresh identity for external task worker ${s.workerId}`,{err:n,workerId:s.workerId});let r=2*1e3;setTimeout(async()=>await h(e,s,t-1),r)}}async function pe(e){let s=await(0,M.build)({entryPoints:[e],write:!1,bundle:!0,platform:"node",target:"node18",format:"cjs"}),t=s.outputFiles[0].text,n=me(t,e);if(s.errors.length>0)throw d.error(`Could not transpile file at '${e}'`,{errors:s.errors}),new Error(`Could not transpile file at '${e}'`);return s.warnings.length>0&&d.warn(`Transpiled file at '${e}' with warnings`,{warnings:s.warnings}),n}async function v(e){let s=await I.promises.readdir(e,{withFileTypes:!0}),t=await Promise.all(s.map(async n=>{let r=(0,l.join)(e.toString(),n.name);return n.isDirectory()?[r,...await v(r)]:[]}));return Array.prototype.concat(...t)}async function Ie(e){let s=e.expires_in;if(!s&&e.expires_at&&(s=Math.floor(e.expires_at-Date.now()/1e3)),s===void 0)throw new Error("Could not determine the time until the access token for external task workers expires");return s}function me(e,s){try{var t=module.constructor,n=new t;return n._compile(e,s),n.exports}catch(r){throw d.error("Could not require module from string",{err:r}),r}}var B=require("next/cache"),O=require("next/navigation");async function we(e,s){(0,B.revalidatePath)(e),(0,O.redirect)(e,s)}async function Te(...e){return await o.processModels.startProcessInstance(...e)}async function ke(...e){await o.userTasks.finishUserTask(...e)}var W=require("next/cache"),$=require("next/navigation");function ge(e){(0,W.revalidatePath)(e),(0,$.redirect)(e)}0&&(module.exports={finishUserTask,finishUserTaskAndGetNext,getActiveProcessInstances,getAssignedUserTasksByIdentity,getIdentity,getReservedUserTasksByIdentity,getUserTasks,getWaitingUserTaskByFlowNodeInstanceId,getWaitingUserTasks,getWaitingUserTasksByCorrelationId,getWaitingUserTasksByFlowNodeId,getWaitingUserTasksByProcessInstanceId,hardNavigate,navigateToUrl,startProcess,subscribeToExternalTasks,waitForUserTask});
1
+ "use strict";var G=Object.create;var T=Object.defineProperty;var X=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,H=Object.prototype.hasOwnProperty;var J=(e,s)=>{for(var t in s)T(e,t,{get:s[t],enumerable:!0})},S=(e,s,t,n)=>{if(s&&typeof s=="object"||typeof s=="function")for(let r of Y(s))!H.call(e,r)&&r!==t&&T(e,r,{get:()=>s[r],enumerable:!(n=X(s,r))||n.enumerable});return e};var Z=(e,s,t)=>(t=e!=null?G(j(e)):{},S(s||!e||!e.__esModule?T(t,"default",{value:e,enumerable:!0}):t,e)),V=e=>S(T({},"__esModule",{value:!0}),e);var ye={};J(ye,{finishUserTask:()=>ke,finishUserTaskAndGetNext:()=>Q,getActiveProcessInstances:()=>ie,getAssignedUserTasksByIdentity:()=>oe,getIdentity:()=>ae,getReservedUserTasksByIdentity:()=>re,getUserTasks:()=>C,getWaitingUserTaskByFlowNodeInstanceId:()=>P,getWaitingUserTasks:()=>ee,getWaitingUserTasksByCorrelationId:()=>ne,getWaitingUserTasksByFlowNodeId:()=>te,getWaitingUserTasksByProcessInstanceId:()=>se,hardNavigate:()=>we,navigateToUrl:()=>ge,startProcess:()=>Te,subscribeToExternalTasks:()=>de,waitForUserTask:()=>z});module.exports=V(ye);var je=require("only-server");var i=require("@5minds/processcube_engine_client");var _=require("@5minds/processcube_engine_client"),N=process.env.PROCESSCUBE_ENGINE_URL??"http://localhost:10560",o=new _.EngineClient(N);async function z(e={}){let{processInstanceId:s,flowNodeId:t}=e;return new Promise(async(n,r)=>{let c=await o.userTasks.onUserTaskWaiting(async a=>{let y=a.flowNodeInstanceId===void 0,E=s!==void 0&&a.processInstanceId!==s,w=t!==void 0&&a.flowNodeId!==t,u=s!==void 0&&t!==void 0&&a.processInstanceId!==s&&a.flowNodeId!==t;if(y||E||w||u)return;let p=await P(a.flowNodeInstanceId);return o.notification.removeSubscription(c),p===null?r(new Error(`UserTask with instance ID "${a.flowNodeInstanceId}" does not exist.`)):n(p)}),f=(await C({processInstanceId:s,flowNodeId:t,state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended}))?.[0];f&&(o.notification.removeSubscription(c),n(f))})}async function Q(e,s,t){await o.userTasks.finishUserTask(e,s);let n=await o.userTasks.query({flowNodeId:t,state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended});return n.userTasks.length===0?null:n.userTasks[0]}async function C(...e){let s=await o.userTasks.query(...e);return s.userTasks.length===0?null:s.userTasks}async function ee(e){let s=await o.userTasks.query({state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},e);return s.userTasks.length===0?null:s.userTasks}async function se(e,s){let t=await o.userTasks.query({processInstanceId:e,state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},s);return t.userTasks.length===0?null:t.userTasks}async function te(e,s){let t=await o.userTasks.query({flowNodeId:e,state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},s);return t.userTasks.length===0?null:t.userTasks}async function P(e,s){let t=await o.userTasks.query({flowNodeInstanceId:e,state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{...s,limit:1});return t.userTasks.length===0?null:t.userTasks[0]}async function ne(e,s){let t=await o.userTasks.query({correlationId:e,state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},s);return t.userTasks.length===0?null:t.userTasks}async function re(e,s){let n=(await o.userTasks.query({state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...s})).userTasks.filter(r=>r.actualOwnerId===e.userId);return n.length===0?null:n}async function oe(e,s){let n=(await o.userTasks.query({state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...s})).userTasks.filter(r=>r.assignedUserIds?.includes(e.userId));return n.length===0?null:n}var k=require("next/headers"),U=require("next-auth/jwt");async function ae(){let e=await(0,U.getToken)({req:{cookies:(0,k.cookies)(),headers:(0,k.headers)()}});if(!e?.accessToken||!e?.sub)throw new Error("AccessToken or Sub could not be determined!");return{token:e?.accessToken,userId:e?.sub}}var F=require("@5minds/processcube_engine_client");async function ie(e){let s=await o.processInstances.query({state:F.DataModels.ProcessInstances.ProcessInstanceState.running},e);return s.processInstances.length===0?null:s.processInstances}var R=require("@5minds/processcube_engine_sdk"),D=require("@5minds/processcube_engine_client");var l=require("node:path"),M=require("esbuild"),I=require("node:fs"),A=require("openid-client"),b=Z(require("jwt-decode"),1),ce={token:"ZHVtbXlfdG9rZW4=",userId:"dummy_token"},le=.85,ue="external_task.ts",d=new R.Logger("processcube_app_sdk:external_task_adapter"),g=process.env.PROCESSCUBE_AUTHORITY_URL!==void 0;async function de(e){let s,t=[e,(0,l.join)(process.cwd(),"app"),(0,l.join)(process.cwd(),"src","app")];for(let r of t)if(r&&(0,I.existsSync)(r)){s=r;break}if(!s)throw new Error("Could not find external tasks directory");let n=await v(s);for(let r of n){let c=await fe(r);if(!c)continue;let m=(0,l.join)(r,c),f=await pe(m),a=g?await L():null,y={identity:await q(a),...f?.config},E=f.default,w=(0,l.relative)(s,r).replace(/^\.\/+/,""),u=new D.ExternalTaskWorker(N,w,E,y);await x(a,u),d.info(`Starting external task worker ${u.workerId} for topic '${w}'`),u.onWorkerError((p,h,K)=>{d.error(`Intercepted "${p}"-type error: ${h.message}`,{err:h,type:p,externalTask:K})}),u.start()}}async function fe(e){let t=(await I.promises.readdir(e)).filter(n=>n===ue);if(t.length===0)return null;if(t.length>1)throw new Error(`Found more than one external task file in directory '${e}'`);return t[0]}async function L(){if(!g)throw new Error("No authority is configured");let e=await A.Issuer.discover(process.env.PROCESSCUBE_AUTHORITY_URL);return await new e.Client({client_id:process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID,client_secret:process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET}).grant({grant_type:"client_credentials",scope:"engine_etw"})}async function q(e){if(!g||e===null)return ce;let s=e.access_token,t=(0,b.default)(s);return{token:e.access_token,userId:t.sub}}async function x(e,s,t=5){try{if(!g||e===null)return;let r=await Ie(e)*le*1e3;setTimeout(async()=>{let c=await L(),m=await q(c);s.identity=m,await x(c,s)},r)}catch(n){if(t===0)throw n;d.error(`Could not refresh identity for external task worker ${s.workerId}`,{err:n,workerId:s.workerId});let r=2*1e3;setTimeout(async()=>await x(e,s,t-1),r)}}async function pe(e){let s=await(0,M.build)({entryPoints:[e],write:!1,bundle:!0,platform:"node",target:"node18",format:"cjs"}),t=s.outputFiles[0].text,n=me(t,e);if(s.errors.length>0)throw d.error(`Could not transpile file at '${e}'`,{errors:s.errors}),new Error(`Could not transpile file at '${e}'`);return s.warnings.length>0&&d.warn(`Transpiled file at '${e}' with warnings`,{warnings:s.warnings}),n}async function v(e){let s=await I.promises.readdir(e,{withFileTypes:!0}),t=await Promise.all(s.map(async n=>{let r=(0,l.join)(e.toString(),n.name);return n.isDirectory()?[r,...await v(r)]:[]}));return Array.prototype.concat(...t)}async function Ie(e){let s=e.expires_in;if(!s&&e.expires_at&&(s=Math.floor(e.expires_at-Date.now()/1e3)),s===void 0)throw new Error("Could not determine the time until the access token for external task workers expires");return s}function me(e,s){try{var t=module.constructor,n=new t;return n._compile(e,s),n.exports}catch(r){throw d.error("Could not require module from string",{err:r}),r}}var B=require("next/cache"),O=require("next/navigation");async function we(e,s){(0,B.revalidatePath)(e),(0,O.redirect)(e,s)}async function Te(...e){return await o.processModels.startProcessInstance(...e)}async function ke(...e){await o.userTasks.finishUserTask(...e)}var W=require("next/cache"),$=require("next/navigation");function ge(e){(0,W.revalidatePath)(e),(0,$.redirect)(e)}0&&(module.exports={finishUserTask,finishUserTaskAndGetNext,getActiveProcessInstances,getAssignedUserTasksByIdentity,getIdentity,getReservedUserTasksByIdentity,getUserTasks,getWaitingUserTaskByFlowNodeInstanceId,getWaitingUserTasks,getWaitingUserTasksByCorrelationId,getWaitingUserTasksByFlowNodeId,getWaitingUserTasksByProcessInstanceId,hardNavigate,navigateToUrl,startProcess,subscribeToExternalTasks,waitForUserTask});
package/server/index.mjs CHANGED
@@ -1 +1 @@
1
- import"only-server";import{DataModels as i}from"@5minds/processcube_engine_client";import{EngineClient as C}from"@5minds/processcube_engine_client";var g=process.env.PROCESSCUBE_ENGINE_URL??"http://localhost:10560",o=new C(g);async function te(e={}){let{processInstanceId:s,flowNodeId:t}=e;return new Promise(async(n,r)=>{let c=await o.userTasks.onUserTaskWaiting(async a=>{let T=a.flowNodeInstanceId===void 0,k=s!==void 0&&a.processInstanceId!==s,I=t!==void 0&&a.flowNodeId!==t,l=s!==void 0&&t!==void 0&&a.processInstanceId!==s&&a.flowNodeId!==t;if(T||k||I||l)return;let f=await U(a.flowNodeInstanceId);return o.notification.removeSubscription(c),f===null?r(new Error(`UserTask with instance ID "${a.flowNodeInstanceId}" does not exist.`)):n(f)}),d=(await P({processInstanceId:s,flowNodeId:t,state:i.FlowNodeInstances.FlowNodeInstanceState.suspended}))?.[0];d&&(o.notification.removeSubscription(c),n(d))})}async function ne(e,s,t){await o.userTasks.finishUserTask(e,s);let n=await o.userTasks.query({flowNodeId:t,state:i.FlowNodeInstances.FlowNodeInstanceState.suspended});return n.userTasks.length===0?null:n.userTasks[0]}async function P(...e){let s=await o.userTasks.query(...e);return s.userTasks.length===0?null:s.userTasks}async function re(e){let s=await o.userTasks.query({state:i.FlowNodeInstances.FlowNodeInstanceState.suspended},e);return s.userTasks.length===0?null:s.userTasks}async function oe(e,s){let t=await o.userTasks.query({processInstanceId:e,state:i.FlowNodeInstances.FlowNodeInstanceState.suspended},s);return t.userTasks.length===0?null:t.userTasks}async function ae(e,s){let t=await o.userTasks.query({flowNodeId:e,state:i.FlowNodeInstances.FlowNodeInstanceState.suspended},s);return t.userTasks.length===0?null:t.userTasks}async function U(e,s){let t=await o.userTasks.query({flowNodeInstanceId:e,state:i.FlowNodeInstances.FlowNodeInstanceState.suspended},{...s,limit:1});return t.userTasks.length===0?null:t.userTasks[0]}async function ie(e,s){let t=await o.userTasks.query({correlationId:e,state:i.FlowNodeInstances.FlowNodeInstanceState.suspended},s);return t.userTasks.length===0?null:t.userTasks}async function ce(e,s){let n=(await o.userTasks.query({state:i.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...s})).userTasks.filter(r=>r.actualOwnerId===e.userId);return n.length===0?null:n}async function le(e,s){let n=(await o.userTasks.query({state:i.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...s})).userTasks.filter(r=>r.assignedUserIds?.includes(e.userId));return n.length===0?null:n}import{cookies as F,headers as R}from"next/headers";import{getToken as D}from"next-auth/jwt";async function pe(){let e=await D({req:{cookies:F(),headers:R()}});if(!e?.accessToken||!e?.sub)throw new Error("AccessToken or Sub could not be determined!");return{token:e?.accessToken,userId:e?.sub}}import{DataModels as M}from"@5minds/processcube_engine_client";async function Te(e){let s=await o.processInstances.query({state:M.ProcessInstances.ProcessInstanceState.running},e);return s.processInstances.length===0?null:s.processInstances}import{Logger as b}from"@5minds/processcube_engine_sdk";import{ExternalTaskWorker as A}from"@5minds/processcube_engine_client";import{join as m,relative as L}from"node:path";import{build as q}from"esbuild";import{promises as N,existsSync as v}from"node:fs";import{Issuer as B}from"openid-client";import O from"jwt-decode";var W={token:"ZHVtbXlfdG9rZW4=",userId:"dummy_token"},$=.85,K="external_task.ts",u=new b("processcube_app_sdk:external_task_adapter"),w=process.env.PROCESSCUBE_AUTHORITY_URL!==void 0;async function De(e){let s,t=[e,m(process.cwd(),"app"),m(process.cwd(),"src","app")];for(let r of t)if(r&&v(r)){s=r;break}if(!s)throw new Error("Could not find external tasks directory");let n=await S(s);for(let r of n){let c=await G(r);if(!c)continue;let p=m(r,c),d=await X(p),a=w?await h():null,T={identity:await x(a),...d?.config},k=d.default,I=L(s,r).replace(/^\.\/+/,""),l=new A(g,I,k,T);await y(a,l),u.info(`Starting external task worker ${l.workerId} for topic '${I}'`),l.onWorkerError((f,E,_)=>{u.error(`Intercepted "${f}"-type error: ${E.message}`,{err:E,type:f,externalTask:_})}),l.start()}}async function G(e){let t=(await N.readdir(e)).filter(n=>n===K);if(t.length===0)return null;if(t.length>1)throw new Error(`Found more than one external task file in directory '${e}'`);return t[0]}async function h(){if(!w)throw new Error("No authority is configured");let e=await B.discover(process.env.PROCESSCUBE_AUTHORITY_URL);return await new e.Client({client_id:process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID,client_secret:process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET}).grant({grant_type:"client_credentials",scope:"engine_etw"})}async function x(e){if(!w||e===null)return W;let s=e.access_token,t=O(s);return{token:e.access_token,userId:t.sub}}async function y(e,s,t=5){try{if(!w||e===null)return;let r=await Y(e)*$*1e3;setTimeout(async()=>{let c=await h(),p=await x(c);s.identity=p,await y(c,s)},r)}catch(n){if(t===0)throw n;u.error(`Could not refresh identity for external task worker ${s.workerId}`,{err:n,workerId:s.workerId});let r=2*1e3;setTimeout(async()=>await y(e,s,t-1),r)}}async function X(e){let s=await q({entryPoints:[e],write:!1,bundle:!0,platform:"node",target:"node18",format:"cjs"}),t=s.outputFiles[0].text,n=j(t,e);if(s.errors.length>0)throw u.error(`Could not transpile file at '${e}'`,{errors:s.errors}),new Error(`Could not transpile file at '${e}'`);return s.warnings.length>0&&u.warn(`Transpiled file at '${e}' with warnings`,{warnings:s.warnings}),n}async function S(e){let s=await N.readdir(e,{withFileTypes:!0}),t=await Promise.all(s.map(async n=>{let r=m(e.toString(),n.name);return n.isDirectory()?[r,...await S(r)]:[]}));return Array.prototype.concat(...t)}async function Y(e){let s=e.expires_in;if(!s&&e.expires_at&&(s=Math.floor(e.expires_at-Date.now()/1e3)),s===void 0)throw new Error("Could not determine the time until the access token for external task workers expires");return s}function j(e,s){try{var t=module.constructor,n=new t;return n._compile(e,s),n.exports}catch(r){throw u.error("Could not require module from string",{err:r}),r}}import{revalidatePath as H}from"next/cache";import{redirect as J}from"next/navigation";async function We(e,s){H(e),J(e,s)}async function Ge(...e){return await o.processModels.startProcessInstance(...e)}async function Xe(...e){await o.userTasks.finishUserTask(...e)}import{revalidatePath as Z}from"next/cache";import{redirect as V}from"next/navigation";function Je(e){Z(e),V(e)}export{Xe as finishUserTask,ne as finishUserTaskAndGetNext,Te as getActiveProcessInstances,le as getAssignedUserTasksByIdentity,pe as getIdentity,ce as getReservedUserTasksByIdentity,P as getUserTasks,U as getWaitingUserTaskByFlowNodeInstanceId,re as getWaitingUserTasks,ie as getWaitingUserTasksByCorrelationId,ae as getWaitingUserTasksByFlowNodeId,oe as getWaitingUserTasksByProcessInstanceId,We as hardNavigate,Je as navigateToUrl,Ge as startProcess,De as subscribeToExternalTasks,te as waitForUserTask};
1
+ import"only-server";import{DataModels as i}from"@5minds/processcube_engine_client";import{EngineClient as C}from"@5minds/processcube_engine_client";var g=process.env.PROCESSCUBE_ENGINE_URL??"http://localhost:10560",o=new C(g);async function te(e={}){let{processInstanceId:s,flowNodeId:t}=e;return new Promise(async(n,r)=>{let c=await o.userTasks.onUserTaskWaiting(async a=>{let T=a.flowNodeInstanceId===void 0,k=s!==void 0&&a.processInstanceId!==s,I=t!==void 0&&a.flowNodeId!==t,l=s!==void 0&&t!==void 0&&a.processInstanceId!==s&&a.flowNodeId!==t;if(T||k||I||l)return;let f=await U(a.flowNodeInstanceId);return o.notification.removeSubscription(c),f===null?r(new Error(`UserTask with instance ID "${a.flowNodeInstanceId}" does not exist.`)):n(f)}),d=(await P({processInstanceId:s,flowNodeId:t,state:i.FlowNodeInstances.FlowNodeInstanceState.suspended}))?.[0];d&&(o.notification.removeSubscription(c),n(d))})}async function ne(e,s,t){await o.userTasks.finishUserTask(e,s);let n=await o.userTasks.query({flowNodeId:t,state:i.FlowNodeInstances.FlowNodeInstanceState.suspended});return n.userTasks.length===0?null:n.userTasks[0]}async function P(...e){let s=await o.userTasks.query(...e);return s.userTasks.length===0?null:s.userTasks}async function re(e){let s=await o.userTasks.query({state:i.FlowNodeInstances.FlowNodeInstanceState.suspended},e);return s.userTasks.length===0?null:s.userTasks}async function oe(e,s){let t=await o.userTasks.query({processInstanceId:e,state:i.FlowNodeInstances.FlowNodeInstanceState.suspended},s);return t.userTasks.length===0?null:t.userTasks}async function ae(e,s){let t=await o.userTasks.query({flowNodeId:e,state:i.FlowNodeInstances.FlowNodeInstanceState.suspended},s);return t.userTasks.length===0?null:t.userTasks}async function U(e,s){let t=await o.userTasks.query({flowNodeInstanceId:e,state:i.FlowNodeInstances.FlowNodeInstanceState.suspended},{...s,limit:1});return t.userTasks.length===0?null:t.userTasks[0]}async function ie(e,s){let t=await o.userTasks.query({correlationId:e,state:i.FlowNodeInstances.FlowNodeInstanceState.suspended},s);return t.userTasks.length===0?null:t.userTasks}async function ce(e,s){let n=(await o.userTasks.query({state:i.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...s})).userTasks.filter(r=>r.actualOwnerId===e.userId);return n.length===0?null:n}async function le(e,s){let n=(await o.userTasks.query({state:i.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...s})).userTasks.filter(r=>r.assignedUserIds?.includes(e.userId));return n.length===0?null:n}import{cookies as F,headers as R}from"next/headers";import{getToken as D}from"next-auth/jwt";async function pe(){let e=await D({req:{cookies:F(),headers:R()}});if(!e?.accessToken||!e?.sub)throw new Error("AccessToken or Sub could not be determined!");return{token:e?.accessToken,userId:e?.sub}}import{DataModels as M}from"@5minds/processcube_engine_client";async function Te(e){let s=await o.processInstances.query({state:M.ProcessInstances.ProcessInstanceState.running},e);return s.processInstances.length===0?null:s.processInstances}import{Logger as A}from"@5minds/processcube_engine_sdk";import{ExternalTaskWorker as b}from"@5minds/processcube_engine_client";import{join as m,relative as L}from"node:path";import{build as q}from"esbuild";import{promises as N,existsSync as v}from"node:fs";import{Issuer as B}from"openid-client";import O from"jwt-decode";var W={token:"ZHVtbXlfdG9rZW4=",userId:"dummy_token"},$=.85,K="external_task.ts",u=new A("processcube_app_sdk:external_task_adapter"),w=process.env.PROCESSCUBE_AUTHORITY_URL!==void 0;async function Re(e){let s,t=[e,m(process.cwd(),"app"),m(process.cwd(),"src","app")];for(let r of t)if(r&&v(r)){s=r;break}if(!s)throw new Error("Could not find external tasks directory");let n=await S(s);for(let r of n){let c=await G(r);if(!c)continue;let p=m(r,c),d=await X(p),a=w?await x():null,T={identity:await h(a),...d?.config},k=d.default,I=L(s,r).replace(/^\.\/+/,""),l=new b(g,I,k,T);await y(a,l),u.info(`Starting external task worker ${l.workerId} for topic '${I}'`),l.onWorkerError((f,E,_)=>{u.error(`Intercepted "${f}"-type error: ${E.message}`,{err:E,type:f,externalTask:_})}),l.start()}}async function G(e){let t=(await N.readdir(e)).filter(n=>n===K);if(t.length===0)return null;if(t.length>1)throw new Error(`Found more than one external task file in directory '${e}'`);return t[0]}async function x(){if(!w)throw new Error("No authority is configured");let e=await B.discover(process.env.PROCESSCUBE_AUTHORITY_URL);return await new e.Client({client_id:process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID,client_secret:process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET}).grant({grant_type:"client_credentials",scope:"engine_etw"})}async function h(e){if(!w||e===null)return W;let s=e.access_token,t=O(s);return{token:e.access_token,userId:t.sub}}async function y(e,s,t=5){try{if(!w||e===null)return;let r=await Y(e)*$*1e3;setTimeout(async()=>{let c=await x(),p=await h(c);s.identity=p,await y(c,s)},r)}catch(n){if(t===0)throw n;u.error(`Could not refresh identity for external task worker ${s.workerId}`,{err:n,workerId:s.workerId});let r=2*1e3;setTimeout(async()=>await y(e,s,t-1),r)}}async function X(e){let s=await q({entryPoints:[e],write:!1,bundle:!0,platform:"node",target:"node18",format:"cjs"}),t=s.outputFiles[0].text,n=j(t,e);if(s.errors.length>0)throw u.error(`Could not transpile file at '${e}'`,{errors:s.errors}),new Error(`Could not transpile file at '${e}'`);return s.warnings.length>0&&u.warn(`Transpiled file at '${e}' with warnings`,{warnings:s.warnings}),n}async function S(e){let s=await N.readdir(e,{withFileTypes:!0}),t=await Promise.all(s.map(async n=>{let r=m(e.toString(),n.name);return n.isDirectory()?[r,...await S(r)]:[]}));return Array.prototype.concat(...t)}async function Y(e){let s=e.expires_in;if(!s&&e.expires_at&&(s=Math.floor(e.expires_at-Date.now()/1e3)),s===void 0)throw new Error("Could not determine the time until the access token for external task workers expires");return s}function j(e,s){try{var t=module.constructor,n=new t;return n._compile(e,s),n.exports}catch(r){throw u.error("Could not require module from string",{err:r}),r}}import{revalidatePath as H}from"next/cache";import{redirect as J}from"next/navigation";async function Oe(e,s){H(e),J(e,s)}async function Ke(...e){return await o.processModels.startProcessInstance(...e)}async function Ge(...e){await o.userTasks.finishUserTask(...e)}import{revalidatePath as Z}from"next/cache";import{redirect as V}from"next/navigation";function He(e){Z(e),V(e)}export{Ge as finishUserTask,ne as finishUserTaskAndGetNext,Te as getActiveProcessInstances,le as getAssignedUserTasksByIdentity,pe as getIdentity,ce as getReservedUserTasksByIdentity,P as getUserTasks,U as getWaitingUserTaskByFlowNodeInstanceId,re as getWaitingUserTasks,ie as getWaitingUserTasksByCorrelationId,ae as getWaitingUserTasksByFlowNodeId,oe as getWaitingUserTasksByProcessInstanceId,Oe as hardNavigate,He as navigateToUrl,Ke as startProcess,Re as subscribeToExternalTasks,te as waitForUserTask};
@@ -1,3 +1,5 @@
1
+ import { IExternalTaskWorkerConfig } from '@5minds/processcube_engine_client';
2
+ export type ExternalTaskConfig = Omit<IExternalTaskWorkerConfig, 'identity' | 'workerId'>;
1
3
  /**
2
4
  * Subscribe to external tasks.
3
5
  * @param {string} customExternalTasksDirPath Optional path to the external tasks directory. Uses the Next.js app directory by default.