@5minds/processcube_app_sdk 5.0.1 → 5.1.0-alpha.1

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/common/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var E=Object.create;var a=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var S=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var R=(r,e)=>{for(var s in e)a(r,s,{get:e[s],enumerable:!0})},l=(r,e,s,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of C(e))!g.call(r,n)&&n!==s&&a(r,n,{get:()=>e[n],enumerable:!(t=w(e,n))||t.enumerable});return r};var U=(r,e,s)=>(s=r!=null?E(S(r)):{},l(e||!r||!r.__esModule?a(s,"default",{value:r,enumerable:!0}):s,r)),A=r=>l(a({},"__esModule",{value:!0}),r);var y={};R(y,{RemoteUserTask:()=>b,authConfigJwtCallback:()=>d,authConfigSessionCallback:()=>_,hasClaim:()=>x});module.exports=A(y);var c=require("react/jsx-runtime");function b(r){return(0,c.jsx)("div",{style:{width:"100%",height:"100%"},children:(0,c.jsx)("iframe",{width:"100%",height:"100%",src:r.url})})}var u=require("next-auth"),p=require("next-auth/react"),k=U(require("jwt-decode"),1),m=require("@5minds/processcube_engine_sdk"),T=new m.Logger("processcube_app_sdk:next-auth_configuration");async function x(r){let e;return typeof window>"u"?e=(await(0,u.getServerSession)({callbacks:{jwt:d,session:_}}))?.user:e=(await(0,p.getSession)())?.user,!e||!e.claims?!1:e.claims[r]!=null}async function d(r){let{token:e,account:s,user:t}=r;s&&(e.accessToken=s.access_token,e.idToken=s.id_token,e.refreshToken=s.refresh_token,e.expiresAt=s.expires_at??Math.floor(Date.now()/1e3+s.expires_in)),t&&(e.user=t);let n=process.env.PROCESSCUBE_AUTHORITY_URL!=null&&process.env.NEXTAUTH_CLIENT_ID!=null&&process.env.NEXTAUTH_SECRET!=null;if(n||T.warn("In order for the Access Token to be automatically renewed, PROCESSCUBE_AUTHORITY_URL, NEXTAUTH_CLIENT_ID and NEXTAUTH_SECRET must be set as an environment variable"),n&&Date.now()>=e.expiresAt*1e3)try{let i=await fetch(`${process.env.PROCESSCUBE_AUTHORITY_URL}/token`,{headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:process.env.NEXTAUTH_CLIENT_ID,client_secret:process.env.NEXTAUTH_SECRET,grant_type:"refresh_token",refresh_token:e.refreshToken}),method:"POST"}),o=await i.json();if(!i.ok)throw o;e.accessToken=o.access_token,e.idToken=o.id_token,e.expiresAt=Math.floor(Date.now()/1e3+o.expires_in),e.refreshToken=o.refresh_token??e.refreshToken}catch(i){T.error("Error refreshing access token",{err:i}),e.error="RefreshAccessTokenError"}return e}async function _(r){let{session:e,token:s}=r,t=await f(s.accessToken),n=await f(s.idToken),i=Object.keys(n),o=Object.fromEntries(Object.entries(t).filter(([h,v])=>!i.includes(h)));return delete o.scope,delete o.jti,delete o.client_id,e.user=s.user??{},e.user.claims=o,e.error=s.error,e}async function f(r){return(0,k.default)(r)}0&&(module.exports={RemoteUserTask,authConfigJwtCallback,authConfigSessionCallback,hasClaim});
1
+ "use strict";var a=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var w=Object.prototype.hasOwnProperty;var C=(r,e)=>{for(var s in e)a(r,s,{get:e[s],enumerable:!0})},S=(r,e,s,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of E(e))!w.call(r,n)&&n!==s&&a(r,n,{get:()=>e[n],enumerable:!(t=h(e,n))||t.enumerable});return r};var g=r=>S(a({},"__esModule",{value:!0}),r);var A={};C(A,{RemoteUserTask:()=>R,authConfigJwtCallback:()=>m,authConfigSessionCallback:()=>d,hasClaim:()=>U});module.exports=g(A);var c=require("react/jsx-runtime");function R(r){return(0,c.jsx)("div",{style:{width:"100%",height:"100%"},children:(0,c.jsx)("iframe",{width:"100%",height:"100%",src:r.url})})}var f=require("next-auth"),u=require("next-auth/react"),p=require("jwt-decode"),k=require("@5minds/processcube_engine_sdk"),l=new k.Logger("processcube_app_sdk:next-auth_configuration");async function U(r){let e;return typeof window>"u"?e=(await(0,f.getServerSession)({callbacks:{jwt:m,session:d}}))?.user:e=(await(0,u.getSession)())?.user,!e||!e.claims?!1:e.claims[r]!=null}async function m(r){let{token:e,account:s,user:t}=r;s&&(e.accessToken=s.access_token,e.idToken=s.id_token,e.refreshToken=s.refresh_token,e.expiresAt=s.expires_at??Math.floor(Date.now()/1e3+s.expires_in)),t&&(e.user=t);let n=process.env.PROCESSCUBE_AUTHORITY_URL!=null&&process.env.NEXTAUTH_CLIENT_ID!=null&&process.env.NEXTAUTH_SECRET!=null;if(n||l.warn("In order for the Access Token to be automatically renewed, PROCESSCUBE_AUTHORITY_URL, NEXTAUTH_CLIENT_ID and NEXTAUTH_SECRET must be set as an environment variable"),n&&Date.now()>=e.expiresAt*1e3)try{let i=await fetch(`${process.env.PROCESSCUBE_AUTHORITY_URL}/token`,{headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:process.env.NEXTAUTH_CLIENT_ID,client_secret:process.env.NEXTAUTH_SECRET,grant_type:"refresh_token",refresh_token:e.refreshToken}),method:"POST"}),o=await i.json();if(!i.ok)throw o;e.accessToken=o.access_token,e.idToken=o.id_token,e.expiresAt=Math.floor(Date.now()/1e3+o.expires_in),e.refreshToken=o.refresh_token??e.refreshToken}catch(i){l.error("Error refreshing access token",{err:i}),e.error="RefreshAccessTokenError"}return e}async function d(r){let{session:e,token:s}=r,t=T(s.accessToken),n=T(s.idToken),i=Object.keys(n),o=Object.fromEntries(Object.entries(t).filter(([_,b])=>!i.includes(_)));return delete o.scope,delete o.jti,delete o.client_id,e.user=s.user??{},e.user.claims=o,e.error=s.error,e}function T(r){return(0,p.jwtDecode)(r)}0&&(module.exports={RemoteUserTask,authConfigJwtCallback,authConfigSessionCallback,hasClaim});
package/common/index.mjs CHANGED
@@ -1 +1 @@
1
- import{jsx as a}from"react/jsx-runtime";function h(n){return a("div",{style:{width:"100%",height:"100%"},children:a("iframe",{width:"100%",height:"100%",src:n.url})})}import{getServerSession as f}from"next-auth";import{getSession as u}from"next-auth/react";import p from"jwt-decode";import{Logger as k}from"@5minds/processcube_engine_sdk";var c=new k("processcube_app_sdk:next-auth_configuration");async function y(n){let e;return typeof window>"u"?e=(await f({callbacks:{jwt:m,session:d}}))?.user:e=(await u())?.user,!e||!e.claims?!1:e.claims[n]!=null}async function m(n){let{token:e,account:r,user:t}=n;r&&(e.accessToken=r.access_token,e.idToken=r.id_token,e.refreshToken=r.refresh_token,e.expiresAt=r.expires_at??Math.floor(Date.now()/1e3+r.expires_in)),t&&(e.user=t);let i=process.env.PROCESSCUBE_AUTHORITY_URL!=null&&process.env.NEXTAUTH_CLIENT_ID!=null&&process.env.NEXTAUTH_SECRET!=null;if(i||c.warn("In order for the Access Token to be automatically renewed, PROCESSCUBE_AUTHORITY_URL, NEXTAUTH_CLIENT_ID and NEXTAUTH_SECRET must be set as an environment variable"),i&&Date.now()>=e.expiresAt*1e3)try{let o=await fetch(`${process.env.PROCESSCUBE_AUTHORITY_URL}/token`,{headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:process.env.NEXTAUTH_CLIENT_ID,client_secret:process.env.NEXTAUTH_SECRET,grant_type:"refresh_token",refresh_token:e.refreshToken}),method:"POST"}),s=await o.json();if(!o.ok)throw s;e.accessToken=s.access_token,e.idToken=s.id_token,e.expiresAt=Math.floor(Date.now()/1e3+s.expires_in),e.refreshToken=s.refresh_token??e.refreshToken}catch(o){c.error("Error refreshing access token",{err:o}),e.error="RefreshAccessTokenError"}return e}async function d(n){let{session:e,token:r}=n,t=await l(r.accessToken),i=await l(r.idToken),o=Object.keys(i),s=Object.fromEntries(Object.entries(t).filter(([T,_])=>!o.includes(T)));return delete s.scope,delete s.jti,delete s.client_id,e.user=r.user??{},e.user.claims=s,e.error=r.error,e}async function l(n){return p(n)}export{h as RemoteUserTask,m as authConfigJwtCallback,d as authConfigSessionCallback,y as hasClaim};
1
+ import{jsx as a}from"react/jsx-runtime";function h(n){return a("div",{style:{width:"100%",height:"100%"},children:a("iframe",{width:"100%",height:"100%",src:n.url})})}import{getServerSession as f}from"next-auth";import{getSession as u}from"next-auth/react";import{jwtDecode as p}from"jwt-decode";import{Logger as k}from"@5minds/processcube_engine_sdk";var c=new k("processcube_app_sdk:next-auth_configuration");async function v(n){let e;return typeof window>"u"?e=(await f({callbacks:{jwt:m,session:d}}))?.user:e=(await u())?.user,!e||!e.claims?!1:e.claims[n]!=null}async function m(n){let{token:e,account:r,user:t}=n;r&&(e.accessToken=r.access_token,e.idToken=r.id_token,e.refreshToken=r.refresh_token,e.expiresAt=r.expires_at??Math.floor(Date.now()/1e3+r.expires_in)),t&&(e.user=t);let i=process.env.PROCESSCUBE_AUTHORITY_URL!=null&&process.env.NEXTAUTH_CLIENT_ID!=null&&process.env.NEXTAUTH_SECRET!=null;if(i||c.warn("In order for the Access Token to be automatically renewed, PROCESSCUBE_AUTHORITY_URL, NEXTAUTH_CLIENT_ID and NEXTAUTH_SECRET must be set as an environment variable"),i&&Date.now()>=e.expiresAt*1e3)try{let o=await fetch(`${process.env.PROCESSCUBE_AUTHORITY_URL}/token`,{headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:process.env.NEXTAUTH_CLIENT_ID,client_secret:process.env.NEXTAUTH_SECRET,grant_type:"refresh_token",refresh_token:e.refreshToken}),method:"POST"}),s=await o.json();if(!o.ok)throw s;e.accessToken=s.access_token,e.idToken=s.id_token,e.expiresAt=Math.floor(Date.now()/1e3+s.expires_in),e.refreshToken=s.refresh_token??e.refreshToken}catch(o){c.error("Error refreshing access token",{err:o}),e.error="RefreshAccessTokenError"}return e}async function d(n){let{session:e,token:r}=n,t=l(r.accessToken),i=l(r.idToken),o=Object.keys(i),s=Object.fromEntries(Object.entries(t).filter(([T,_])=>!o.includes(T)));return delete s.scope,delete s.jti,delete s.client_id,e.user=r.user??{},e.user.claims=s,e.error=r.error,e}function l(n){return p(n)}export{h as RemoteUserTask,m as authConfigJwtCallback,d as authConfigSessionCallback,v as hasClaim};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@5minds/processcube_app_sdk",
3
- "version": "5.0.1",
3
+ "version": "5.1.0-alpha.1",
4
4
  "description": "The SDK for ProcessCube Apps",
5
5
  "type": "module",
6
6
  "main": "common/index.cjs",
@@ -60,7 +60,7 @@
60
60
  "url": "https://github.com/5minds/ProcessCube.App.SDK/issues",
61
61
  "email": "product@5minds.de"
62
62
  },
63
- "homepage": "https://processcube.io/docs/develop-applications/application-sdk",
63
+ "homepage": "https://processcube.io/docs/app-sdk",
64
64
  "engines": {
65
65
  "node": ">=18"
66
66
  },
@@ -76,11 +76,12 @@
76
76
  "react": ">=18.0.0"
77
77
  },
78
78
  "dependencies": {
79
- "@5minds/processcube_engine_client": "2023-2",
80
- "@5minds/processcube_engine_sdk": "2023-2",
79
+ "@5minds/processcube_engine_client": "2024-1",
80
+ "@5minds/processcube_engine_sdk": "2024-1",
81
+ "chokidar": "^3.5.3",
81
82
  "client-only": "^0.0.1",
82
83
  "esbuild": "^0.19.3",
83
- "jwt-decode": "^3.1.2",
84
+ "jwt-decode": "^4.0.0",
84
85
  "only-server": "^0.0.1",
85
86
  "openid-client": "^5.5.0"
86
87
  }
package/server/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var X=Object.create;var g=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var V=Object.getPrototypeOf,J=Object.prototype.hasOwnProperty;var Z=(e,t)=>{for(var s in t)g(e,s,{get:t[s],enumerable:!0})},_=(e,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of j(t))!J.call(e,n)&&n!==s&&g(e,n,{get:()=>t[n],enumerable:!(r=Y(t,n))||r.enumerable});return e};var Q=(e,t,s)=>(s=e!=null?X(V(e)):{},_(t||!e||!e.__esModule?g(s,"default",{value:e,enumerable:!0}):s,e)),z=e=>_(g({},"__esModule",{value:!0}),e);var Ne={};Z(Ne,{finishUserTask:()=>xe,finishUserTaskAndGetNext:()=>pe,getActiveProcessInstances:()=>de,getAssignedUserTasksByIdentity:()=>we,getEngineClient:()=>ie,getIdentity:()=>le,getReservedUserTasksByIdentity:()=>Te,getUserTasks:()=>B,getWaitingUserTaskByFlowNodeInstanceId:()=>K,getWaitingUserTasks:()=>fe,getWaitingUserTasksByCorrelationId:()=>Ie,getWaitingUserTasksByFlowNodeId:()=>ke,getWaitingUserTasksByProcessInstanceId:()=>me,navigateToUrl:()=>ye,startProcess:()=>Ee,waitForUserTask:()=>ue,withApplicationSdk:()=>ge});module.exports=z(Ne);var ot=require("only-server");var U=require("@5minds/processcube_engine_sdk"),R=require("@5minds/processcube_engine_client"),u=require("node:path"),F=require("esbuild"),I=require("node:fs"),A=require("openid-client"),D=Q(require("jwt-decode"),1);var P=require("@5minds/processcube_engine_client"),C=process.env.PROCESSCUBE_ENGINE_URL??"http://localhost:10560",o=new P.EngineClient(C);var ee={token:"ZHVtbXlfdG9rZW4=",userId:"dummy_token"},te=.85,se="external_task.ts",f=new U.Logger("processcube_app_sdk:external_task_adapter"),y=process.env.PROCESSCUBE_AUTHORITY_URL!==void 0;async function b(e){let t,s=[e,(0,u.join)(process.cwd(),"app"),(0,u.join)(process.cwd(),"src","app")];for(let n of s)if(n&&(0,I.existsSync)(n)){t=n;break}if(!t)throw new Error("Could not find external tasks directory");let r=await O(t);for(let n of r){let a=await ne(n);if(!a)continue;let d=(0,u.join)(n,a),x=await re(d),m=y?await L():null,c={identity:await M(m),...x?.config},N=x.default,T=(0,u.relative)(t,n).replace(/^\.\/+/,""),p=new R.ExternalTaskWorker(C,T,N,c);await S(m,p),p.onWorkerError((w,k,H)=>{f.error(`Intercepted "${w}"-type error: ${k.message}`,{err:k,type:w,externalTask:H})}),p.start(),f.info(`Started external task worker ${p.workerId} for topic '${T}'`)}}async function ne(e){let s=(await I.promises.readdir(e)).filter(r=>r===se);if(s.length===0)return null;if(s.length>1)throw new Error(`Found more than one external task file in directory '${e}'`);return s[0]}async function L(){if(!y)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 M(e){if(!y||e===null)return ee;let t=e.access_token,s=(0,D.default)(t);return{token:e.access_token,userId:s.sub}}async function S(e,t,s=5){try{if(!y||e===null)return;let n=await oe(e)*te*1e3;setTimeout(async()=>{let a=await L(),d=await M(a);t.identity=d,await S(a,t)},n)}catch(r){if(s===0)throw r;f.error(`Could not refresh identity for external task worker ${t.workerId}`,{err:r,workerId:t.workerId});let n=2*1e3;setTimeout(async()=>await S(e,t,s-1),n)}}async function re(e){let t=await(0,F.build)({entryPoints:[e],write:!1,bundle:!0,platform:"node",target:"node18",format:"cjs"}),s=t.outputFiles[0].text,r=ae(s,e);if(t.errors.length>0)throw f.error(`Could not transpile file at '${e}'`,{errors:t.errors}),new Error(`Could not transpile file at '${e}'`);return t.warnings.length>0&&f.warn(`Transpiled file at '${e}' with warnings`,{warnings:t.warnings}),r}async function O(e){let t=await I.promises.readdir(e,{withFileTypes:!0}),s=await Promise.all(t.map(async r=>{let n=(0,u.join)(e.toString(),r.name);return r.isDirectory()?[n,...await O(n)]:[]}));return Array.prototype.concat(...s)}async function oe(e){let t=e.expires_in;if(!t&&e.expires_at&&(t=Math.floor(e.expires_at-Date.now()/1e3)),t===void 0)throw new Error("Could not determine the time until the access token for external task workers expires");return t}function ae(e,t){try{var s=module.constructor,r=new s;return r._compile(e,t),r.exports}catch(n){throw f.error("Could not require module from string",{err:n}),n}}function ie(){return o}var l=require("next/headers"),W=require("next/dist/compiled/@edge-runtime/cookies"),h=require("next-auth/jwt"),ce=process.env.NEXTAUTH_URL?.startsWith("https://"),q=`${ce?"__Secure-":""}next-auth.session-token`;async function le(){let e=await(0,h.getToken)({req:{cookies:(0,l.cookies)(),headers:(0,l.headers)()}});if(e?.expiresAt&&Date.now()>=e.expiresAt*1e3){let s=await fetch(`${process.env.NEXTAUTH_URL}/api/auth/session`,{method:"GET",headers:{"Content-Type":"application/json",cookie:(0,l.cookies)().toString()}}),r=new W.ResponseCookies(s.headers),n=r.get(q);if(n){let a=!1;try{(0,l.cookies)().set(q,n.value,{...n})}catch{a=!0}if(e=await(0,h.getToken)({req:{cookies:a?r:(0,l.cookies)(),headers:(0,l.headers)()}}),e?.error)throw e.error}}if(!e?.accessToken||!e?.sub)throw new Error("AccessToken or Sub could not be determined!");return{token:e?.accessToken,userId:e?.sub}}var v=require("@5minds/processcube_engine_client");async function de(e){return await o.processInstances.query({...e?.query,state:v.DataModels.ProcessInstances.ProcessInstanceState.running},e?.options)}var i=require("@5minds/processcube_engine_client");async function ue(e={},t){let{processInstanceId:s,flowNodeId:r}=e;return new Promise(async(n,a)=>{let d=await o.userTasks.onUserTaskWaiting(async c=>{let N=c.flowNodeInstanceId===void 0,T=s!==void 0&&c.processInstanceId!==s,p=r!==void 0&&c.flowNodeId!==r,w=s!==void 0&&r!==void 0&&c.processInstanceId!==s&&c.flowNodeId!==r;if(N||T||p||w)return;let k=await K(c.flowNodeInstanceId,{identity:t});return o.notification.removeSubscription(d,t),k===null?a(new Error(`UserTask with instance ID "${c.flowNodeInstanceId}" does not exist.`)):n(k)},{identity:t}),m=(await B({processInstanceId:s,flowNodeId:r,state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:t})).userTasks[0];m&&(o.notification.removeSubscription(d,t),n(m))})}async function pe(e,t,s,r){await o.userTasks.finishUserTask(e,t,r);let n=await o.userTasks.query({flowNodeId:s,state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:r});return n.userTasks.length===0?null:n.userTasks[0]}async function B(...e){return await o.userTasks.query(...e)}async function fe(e){return await o.userTasks.query({state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},e)}async function me(e,t){return await o.userTasks.query({processInstanceId:e,state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function ke(e,t){return await o.userTasks.query({flowNodeId:e,state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function K(e,t){let s=await o.userTasks.query({flowNodeInstanceId:e,state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{...t,limit:1});return s.userTasks.length===0?null:s.userTasks[0]}async function Ie(e,t){return await o.userTasks.query({correlationId:e,state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function Te(e,t){let s=await o.userTasks.query({state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...t}),r=s.userTasks.filter(n=>n.actualOwnerId===e.userId);return s.userTasks=r,s}async function we(e,t){let s=await o.userTasks.query({state:i.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...t}),r=s.userTasks.filter(n=>n.assignedUserIds?.includes(e.userId));return s.userTasks=r,s}var E=require("next/dist/shared/lib/constants");function ge(e={}){let{applicationSdk:t,...s}=e;return async(r,n)=>{let a=r===E.PHASE_DEVELOPMENT_SERVER||r===E.PHASE_PRODUCTION_SERVER;return t?.useExternalTasks&&a&&await b(t?.customExternalTasksDirPath),s}}var $=require("next/cache"),G=require("next/navigation");function ye(e){(0,$.revalidatePath)(e),(0,G.redirect)(e)}async function Ee(...e){return await o.processModels.startProcessInstance(...e)}async function xe(...e){await o.userTasks.finishUserTask(...e)}0&&(module.exports={finishUserTask,finishUserTaskAndGetNext,getActiveProcessInstances,getAssignedUserTasksByIdentity,getEngineClient,getIdentity,getReservedUserTasksByIdentity,getUserTasks,getWaitingUserTaskByFlowNodeInstanceId,getWaitingUserTasks,getWaitingUserTasksByCorrelationId,getWaitingUserTasksByFlowNodeId,getWaitingUserTasksByProcessInstanceId,navigateToUrl,startProcess,waitForUserTask,withApplicationSdk});
1
+ "use strict";var N=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames;var ee=Object.prototype.hasOwnProperty;var te=(e,t)=>{for(var s in t)N(e,s,{get:t[s],enumerable:!0})},se=(e,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Q(t))!ee.call(e,n)&&n!==s&&N(e,n,{get:()=>t[n],enumerable:!(r=z(t,n))||r.enumerable});return e};var re=e=>se(N({},"__esModule",{value:!0}),e);var Pe={};te(Pe,{finishUserTask:()=>Re,finishUserTaskAndGetNext:()=>me,getActiveProcessInstances:()=>Ie,getAssignedUserTasksByIdentity:()=>xe,getEngineClient:()=>fe,getIdentity:()=>ke,getReservedUserTasksByIdentity:()=>Ce,getUserTasks:()=>H,getWaitingUserTaskByFlowNodeInstanceId:()=>j,getWaitingUserTasks:()=>Ee,getWaitingUserTasksByCorrelationId:()=>ye,getWaitingUserTasksByFlowNodeId:()=>we,getWaitingUserTasksByProcessInstanceId:()=>ge,navigateToUrl:()=>Se,startProcess:()=>Ne,waitForUserTask:()=>Te,withApplicationSdk:()=>_e});module.exports=re(Pe);var dt=require("only-server");var F=require("@5minds/processcube_engine_sdk"),b=require("@5minds/processcube_engine_client"),i=require("node:path"),O=require("esbuild"),T=require("node:fs"),v=require("openid-client"),L=require("jwt-decode"),D=require("chokidar");var A=require("@5minds/processcube_engine_client"),R=process.env.PROCESSCUBE_ENGINE_URL??"http://localhost:10560",o=new A.EngineClient(R);var ne={token:"ZHVtbXlfdG9rZW4=",userId:"dummy_token"},oe=.85,E=["external_task.ts","external_task.js"],c=new F.Logger("processcube_app_sdk:external_task_adapter"),w=process.env.PROCESSCUBE_AUTHORITY_URL!==void 0,f={};if(w&&(!process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID||!process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET)){let e=new Error("Required environment variables PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID and PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET are missing. For help, please refer to our documentation on environment variables at: https://processcube.io/docs/app-sdk/samples/external-task-adapter#authority");throw c.error("Required environment variables PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID and PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET are missing",{err:e}),e}async function W(e){if(e&&!(0,T.existsSync)(e))throw new Error(`Invalid customExternalTasksDirPath. The given path '${e}' does not exist`);let t=ue(e);(0,D.watch)(t).on("add",async s=>{if(!E.includes((0,i.basename)(s)))return;await M(s,t);let r=(0,i.dirname)(s),n=(0,i.relative)(t,r),a=g(n);c.info(`Started external task ${f[s].workerId} for topic ${a}`)}).on("change",async s=>{if(!E.includes((0,i.basename)(s)))return;await ae(s,t);let r=(0,i.dirname)(s),n=(0,i.relative)(t,r),a=g(n);c.info(`Restarted external task ${f[s].workerId} for topic ${a}`)}).on("unlink",async s=>{if(!E.includes((0,i.basename)(s)))return;B(s);let r=(0,i.dirname)(s),n=(0,i.relative)(t,r),a=g(n);c.info(`Stopped external task ${f[s].workerId} for topic '${a}'`,{reason:`External Task for topic '${a}' was removed`,workerId:f[s].workerId,topic:a}),delete f[s]}).on("error",s=>c.info(`Watcher error: ${s}`))}async function M(e,t,s){let r=(0,i.dirname)(e);if(!ie(r)){c.error(`Could not find external task file in directory '${r}'`);return}let a=await ce(e),l=await de(a,e);if(l.default===void 0){c.info(`External task file recognized at ${e}. Please export a default handler function. For more information see https://processcube.io/docs/app-sdk/samples/external-task-adapter#external-tasks-entwickeln`);return}let C=await K(),m=q(C),u=(0,i.relative)(t,r),x=g(u),_=l.default,S={identity:m,...s,...l?.config},k=new b.ExternalTaskWorker(R,x,_,S);k.onWorkerError((I,U,Z)=>{c.error(`Intercepted "${I}"-type error: ${U.message}`,{err:U,type:I,externalTask:Z})}),k.start(),await P(C,k),f[e]=k}async function ae(e,t){let s=f[e]?.workerId;B(e),await M(e,t,{workerId:s})}function B(e){let t=f[e];t&&(t.stop(),t.dispose())}async function ie(e){let s=(await T.promises.readdir(e)).filter(r=>E.includes(r));if(s.length===0)return null;if(s.length>1)throw new Error(`Found more than one external task file in directory '${e}'`);return s[0]}async function K(){if(!w)return null;let e=await v.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"})}function q(e){if(!w||e===null)return ne;let t=e.access_token,s=(0,L.jwtDecode)(t);return{token:e.access_token,userId:s.sub}}async function P(e,t,s=5){try{if(!w||e===null||!t.pollingIsActive)return;let n=await le(e)*oe*1e3;setTimeout(async()=>{if(!t.pollingIsActive)return;let a=await K(),l=q(a);t.identity=l,await P(a,t)},n)}catch(r){if(s===0)throw r;c.error(`Could not refresh identity for external task worker ${t.workerId}`,{err:r,workerId:t.workerId,retryCount:s});let n=2*1e3;setTimeout(async()=>await P(e,t,s-1),n)}}async function ce(e){let t=await(0,O.build)({entryPoints:[e],write:!1,bundle:!0,platform:"node",target:"node18",format:"cjs"});if(t.errors.length>0)throw c.error(`Could not transpile file at '${e}'`,{errors:t.errors}),new Error(`Could not transpile file at '${e}'`);return t.warnings.length>0&&c.warn(`Transpiled file at '${e}' with warnings`,{warnings:t.warnings}),t.outputFiles[0].text}async function de(e,t){try{var s=module.constructor,r=new s;return r._compile(e,t),r.exports}catch(n){throw c.error("Could not require module from string",{err:n}),n}}async function le(e){let t=e.expires_in;if(!t&&e.expires_at&&(t=Math.floor(e.expires_at-Date.now()/1e3)),t===void 0)throw new Error("Could not determine the time until the access token for external task workers expires");return t}function g(e){return e.replace(/^\.\/+|\([^)]+\)|^\/*|\/*$/g,"").replace(/[\/]{2,}/g,"/")}function ue(e){let t,s=[e,(0,i.join)(process.cwd(),"app"),(0,i.join)(process.cwd(),"src","app")];for(let r of s)if(r&&(0,T.existsSync)(r)){t=r;break}if(!t)throw new Error("Could not find external tasks directory");return t}function fe(){return o}var p=require("next/headers"),X=require("next/dist/compiled/@edge-runtime/cookies"),h=require("next-auth/jwt"),pe=process.env.NEXTAUTH_URL?.startsWith("https://"),$=`${pe?"__Secure-":""}next-auth.session-token`;async function ke(){let e=await(0,h.getToken)({req:{cookies:(0,p.cookies)(),headers:(0,p.headers)()}});if(e?.expiresAt&&Date.now()>=e.expiresAt*1e3){let s=await fetch(`${process.env.NEXTAUTH_URL}/api/auth/session`,{method:"GET",headers:{"Content-Type":"application/json",cookie:(0,p.cookies)().toString()}}),r=new X.ResponseCookies(s.headers),n=r.get($);if(n){let a=!1;try{(0,p.cookies)().set($,n.value,{...n})}catch{a=!0}if(e=await(0,h.getToken)({req:{cookies:a?r:(0,p.cookies)(),headers:(0,p.headers)()}}),e?.error)throw e.error}}if(!e?.accessToken||!e?.sub)throw new Error("AccessToken or Sub could not be determined!");return{token:e?.accessToken,userId:e?.sub}}var G=require("@5minds/processcube_engine_client");async function Ie(e){return await o.processInstances.query({...e?.query,state:G.DataModels.ProcessInstances.ProcessInstanceState.running},e?.options)}var d=require("@5minds/processcube_engine_client");async function Te(e={},t){let{processInstanceId:s,flowNodeId:r}=e;return new Promise(async(n,a)=>{let l=await o.userTasks.onUserTaskWaiting(async u=>{let x=u.flowNodeInstanceId===void 0,_=s!==void 0&&u.processInstanceId!==s,S=r!==void 0&&u.flowNodeId!==r,k=s!==void 0&&r!==void 0&&u.processInstanceId!==s&&u.flowNodeId!==r;if(x||_||S||k)return;let I=await j(u.flowNodeInstanceId,{identity:t});return o.notification.removeSubscription(l,t),I===null?a(new Error(`UserTask with instance ID "${u.flowNodeInstanceId}" does not exist.`)):n(I)},{identity:t}),m=(await H({processInstanceId:s,flowNodeId:r,state:d.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:t})).userTasks[0];m&&(o.notification.removeSubscription(l,t),n(m))})}async function me(e,t,s,r){await o.userTasks.finishUserTask(e,t,r);let n=await o.userTasks.query({flowNodeId:s,state:d.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:r});return n.userTasks.length===0?null:n.userTasks[0]}async function H(...e){return await o.userTasks.query(...e)}async function Ee(e){return await o.userTasks.query({state:d.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},e)}async function ge(e,t){return await o.userTasks.query({processInstanceId:e,state:d.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function we(e,t){return await o.userTasks.query({flowNodeId:e,state:d.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function j(e,t){let s=await o.userTasks.query({flowNodeInstanceId:e,state:d.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{...t,limit:1});return s.userTasks.length===0?null:s.userTasks[0]}async function ye(e,t){return await o.userTasks.query({correlationId:e,state:d.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function Ce(e,t){let s=await o.userTasks.query({state:d.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...t}),r=s.userTasks.filter(n=>n.actualOwnerId===e.userId);return s.userTasks=r,s}async function xe(e,t){let s=await o.userTasks.query({state:d.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...t}),r=s.userTasks.filter(n=>n.assignedUserIds?.includes(e.userId));return s.userTasks=r,s}var y=require("next/dist/shared/lib/constants");var Y=!1;function _e(e={}){let{applicationSdk:t,...s}=e;return async(r,n)=>{let a=r===y.PHASE_DEVELOPMENT_SERVER||r===y.PHASE_PRODUCTION_SERVER;return t?.useExternalTasks&&a&&!Y&&(Y=!0,await W(t?.customExternalTasksDirPath)),s}}var V=require("next/cache"),J=require("next/navigation");function Se(e){(0,V.revalidatePath)(e),(0,J.redirect)(e)}async function Ne(...e){return await o.processModels.startProcessInstance(...e)}async function Re(...e){await o.userTasks.finishUserTask(...e)}0&&(module.exports={finishUserTask,finishUserTaskAndGetNext,getActiveProcessInstances,getAssignedUserTasksByIdentity,getEngineClient,getIdentity,getReservedUserTasksByIdentity,getUserTasks,getWaitingUserTaskByFlowNodeInstanceId,getWaitingUserTasks,getWaitingUserTasksByCorrelationId,getWaitingUserTasksByFlowNodeId,getWaitingUserTasksByProcessInstanceId,navigateToUrl,startProcess,waitForUserTask,withApplicationSdk});
package/server/index.mjs CHANGED
@@ -1 +1 @@
1
- import"only-server";import{Logger as D}from"@5minds/processcube_engine_sdk";import{ExternalTaskWorker as b}from"@5minds/processcube_engine_client";import{join as I,relative as L}from"node:path";import{build as M}from"esbuild";import{promises as N,existsSync as O}from"node:fs";import{Issuer as q}from"openid-client";import W from"jwt-decode";import{EngineClient as A}from"@5minds/processcube_engine_client";var E=process.env.PROCESSCUBE_ENGINE_URL??"http://localhost:10560",o=new A(E);var v={token:"ZHVtbXlfdG9rZW4=",userId:"dummy_token"},B=.85,K="external_task.ts",u=new D("processcube_app_sdk:external_task_adapter"),T=process.env.PROCESSCUBE_AUTHORITY_URL!==void 0;async function C(e){let t,s=[e,I(process.cwd(),"app"),I(process.cwd(),"src","app")];for(let r of s)if(r&&O(r)){t=r;break}if(!t)throw new Error("Could not find external tasks directory");let n=await _(t);for(let r of n){let a=await $(r);if(!a)continue;let l=I(r,a),g=await G(l),p=T?await S():null,i={identity:await h(p),...g?.config},y=g.default,m=L(t,r).replace(/^\.\/+/,""),d=new b(E,m,y,i);await x(p,d),d.onWorkerError((k,f,F)=>{u.error(`Intercepted "${k}"-type error: ${f.message}`,{err:f,type:k,externalTask:F})}),d.start(),u.info(`Started external task worker ${d.workerId} for topic '${m}'`)}}async function $(e){let s=(await N.readdir(e)).filter(n=>n===K);if(s.length===0)return null;if(s.length>1)throw new Error(`Found more than one external task file in directory '${e}'`);return s[0]}async function S(){if(!T)throw new Error("No authority is configured");let e=await q.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(!T||e===null)return v;let t=e.access_token,s=W(t);return{token:e.access_token,userId:s.sub}}async function x(e,t,s=5){try{if(!T||e===null)return;let r=await H(e)*B*1e3;setTimeout(async()=>{let a=await S(),l=await h(a);t.identity=l,await x(a,t)},r)}catch(n){if(s===0)throw n;u.error(`Could not refresh identity for external task worker ${t.workerId}`,{err:n,workerId:t.workerId});let r=2*1e3;setTimeout(async()=>await x(e,t,s-1),r)}}async function G(e){let t=await M({entryPoints:[e],write:!1,bundle:!0,platform:"node",target:"node18",format:"cjs"}),s=t.outputFiles[0].text,n=X(s,e);if(t.errors.length>0)throw u.error(`Could not transpile file at '${e}'`,{errors:t.errors}),new Error(`Could not transpile file at '${e}'`);return t.warnings.length>0&&u.warn(`Transpiled file at '${e}' with warnings`,{warnings:t.warnings}),n}async function _(e){let t=await N.readdir(e,{withFileTypes:!0}),s=await Promise.all(t.map(async n=>{let r=I(e.toString(),n.name);return n.isDirectory()?[r,...await _(r)]:[]}));return Array.prototype.concat(...s)}async function H(e){let t=e.expires_in;if(!t&&e.expires_at&&(t=Math.floor(e.expires_at-Date.now()/1e3)),t===void 0)throw new Error("Could not determine the time until the access token for external task workers expires");return t}function X(e,t){try{var s=module.constructor,n=new s;return n._compile(e,t),n.exports}catch(r){throw u.error("Could not require module from string",{err:r}),r}}function we(){return o}import{cookies as w,headers as P}from"next/headers";import{ResponseCookies as Y}from"next/dist/compiled/@edge-runtime/cookies";import{getToken as U}from"next-auth/jwt";var j=process.env.NEXTAUTH_URL?.startsWith("https://"),R=`${j?"__Secure-":""}next-auth.session-token`;async function Ne(){let e=await U({req:{cookies:w(),headers:P()}});if(e?.expiresAt&&Date.now()>=e.expiresAt*1e3){let s=await fetch(`${process.env.NEXTAUTH_URL}/api/auth/session`,{method:"GET",headers:{"Content-Type":"application/json",cookie:w().toString()}}),n=new Y(s.headers),r=n.get(R);if(r){let a=!1;try{w().set(R,r.value,{...r})}catch{a=!0}if(e=await U({req:{cookies:a?n:w(),headers:P()}}),e?.error)throw e.error}}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 V}from"@5minds/processcube_engine_client";async function _e(e){return await o.processInstances.query({...e?.query,state:V.ProcessInstances.ProcessInstanceState.running},e?.options)}import{DataModels as c}from"@5minds/processcube_engine_client";async function Fe(e={},t){let{processInstanceId:s,flowNodeId:n}=e;return new Promise(async(r,a)=>{let l=await o.userTasks.onUserTaskWaiting(async i=>{let y=i.flowNodeInstanceId===void 0,m=s!==void 0&&i.processInstanceId!==s,d=n!==void 0&&i.flowNodeId!==n,k=s!==void 0&&n!==void 0&&i.processInstanceId!==s&&i.flowNodeId!==n;if(y||m||d||k)return;let f=await Z(i.flowNodeInstanceId,{identity:t});return o.notification.removeSubscription(l,t),f===null?a(new Error(`UserTask with instance ID "${i.flowNodeInstanceId}" does not exist.`)):r(f)},{identity:t}),p=(await J({processInstanceId:s,flowNodeId:n,state:c.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:t})).userTasks[0];p&&(o.notification.removeSubscription(l,t),r(p))})}async function Ae(e,t,s,n){await o.userTasks.finishUserTask(e,t,n);let r=await o.userTasks.query({flowNodeId:s,state:c.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:n});return r.userTasks.length===0?null:r.userTasks[0]}async function J(...e){return await o.userTasks.query(...e)}async function De(e){return await o.userTasks.query({state:c.FlowNodeInstances.FlowNodeInstanceState.suspended},e)}async function be(e,t){return await o.userTasks.query({processInstanceId:e,state:c.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function Le(e,t){return await o.userTasks.query({flowNodeId:e,state:c.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function Z(e,t){let s=await o.userTasks.query({flowNodeInstanceId:e,state:c.FlowNodeInstances.FlowNodeInstanceState.suspended},{...t,limit:1});return s.userTasks.length===0?null:s.userTasks[0]}async function Me(e,t){return await o.userTasks.query({correlationId:e,state:c.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function Oe(e,t){let s=await o.userTasks.query({state:c.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...t}),n=s.userTasks.filter(r=>r.actualOwnerId===e.userId);return s.userTasks=n,s}async function qe(e,t){let s=await o.userTasks.query({state:c.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...t}),n=s.userTasks.filter(r=>r.assignedUserIds?.includes(e.userId));return s.userTasks=n,s}import{PHASE_DEVELOPMENT_SERVER as Q,PHASE_PRODUCTION_SERVER as z}from"next/dist/shared/lib/constants";function Ve(e={}){let{applicationSdk:t,...s}=e;return async(n,r)=>{let a=n===Q||n===z;return t?.useExternalTasks&&a&&await C(t?.customExternalTasksDirPath),s}}import{revalidatePath as ee}from"next/cache";import{redirect as te}from"next/navigation";function tt(e){ee(e),te(e)}async function rt(...e){return await o.processModels.startProcessInstance(...e)}async function it(...e){await o.userTasks.finishUserTask(...e)}export{it as finishUserTask,Ae as finishUserTaskAndGetNext,_e as getActiveProcessInstances,qe as getAssignedUserTasksByIdentity,we as getEngineClient,Ne as getIdentity,Oe as getReservedUserTasksByIdentity,J as getUserTasks,Z as getWaitingUserTaskByFlowNodeInstanceId,De as getWaitingUserTasks,Me as getWaitingUserTasksByCorrelationId,Le as getWaitingUserTasksByFlowNodeId,be as getWaitingUserTasksByProcessInstanceId,tt as navigateToUrl,rt as startProcess,Fe as waitForUserTask,Ve as withApplicationSdk};
1
+ import"only-server";import{Logger as q}from"@5minds/processcube_engine_sdk";import{ExternalTaskWorker as $}from"@5minds/processcube_engine_client";import{basename as N,dirname as I,join as h,relative as T}from"node:path";import{build as X}from"esbuild";import{promises as G,existsSync as U}from"node:fs";import{Issuer as H}from"openid-client";import{jwtDecode as j}from"jwt-decode";import{watch as Y}from"chokidar";import{EngineClient as K}from"@5minds/processcube_engine_client";var S=process.env.PROCESSCUBE_ENGINE_URL??"http://localhost:10560",o=new K(S);var V={token:"ZHVtbXlfdG9rZW4=",userId:"dummy_token"},J=.85,m=["external_task.ts","external_task.js"],i=new q("processcube_app_sdk:external_task_adapter"),g=process.env.PROCESSCUBE_AUTHORITY_URL!==void 0,u={};if(g&&(!process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID||!process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET)){let e=new Error("Required environment variables PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID and PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET are missing. For help, please refer to our documentation on environment variables at: https://processcube.io/docs/app-sdk/samples/external-task-adapter#authority");throw i.error("Required environment variables PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID and PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET are missing",{err:e}),e}async function A(e){if(e&&!U(e))throw new Error(`Invalid customExternalTasksDirPath. The given path '${e}' does not exist`);let t=se(e);Y(t).on("add",async s=>{if(!m.includes(N(s)))return;await F(s,t);let r=I(s),n=T(t,r),a=E(n);i.info(`Started external task ${u[s].workerId} for topic ${a}`)}).on("change",async s=>{if(!m.includes(N(s)))return;await Z(s,t);let r=I(s),n=T(t,r),a=E(n);i.info(`Restarted external task ${u[s].workerId} for topic ${a}`)}).on("unlink",async s=>{if(!m.includes(N(s)))return;b(s);let r=I(s),n=T(t,r),a=E(n);i.info(`Stopped external task ${u[s].workerId} for topic '${a}'`,{reason:`External Task for topic '${a}' was removed`,workerId:u[s].workerId,topic:a}),delete u[s]}).on("error",s=>i.info(`Watcher error: ${s}`))}async function F(e,t,s){let r=I(e);if(!z(r)){i.error(`Could not find external task file in directory '${r}'`);return}let a=await Q(e),c=await ee(a,e);if(c.default===void 0){i.info(`External task file recognized at ${e}. Please export a default handler function. For more information see https://processcube.io/docs/app-sdk/samples/external-task-adapter#external-tasks-entwickeln`);return}let y=await O(),k=v(y),d=T(t,r),C=E(d),x=c.default,_={identity:k,...s,...c?.config},f=new $(S,C,x,_);f.onWorkerError((p,P,B)=>{i.error(`Intercepted "${p}"-type error: ${P.message}`,{err:P,type:p,externalTask:B})}),f.start(),await R(y,f),u[e]=f}async function Z(e,t){let s=u[e]?.workerId;b(e),await F(e,t,{workerId:s})}function b(e){let t=u[e];t&&(t.stop(),t.dispose())}async function z(e){let s=(await G.readdir(e)).filter(r=>m.includes(r));if(s.length===0)return null;if(s.length>1)throw new Error(`Found more than one external task file in directory '${e}'`);return s[0]}async function O(){if(!g)return null;let e=await H.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"})}function v(e){if(!g||e===null)return V;let t=e.access_token,s=j(t);return{token:e.access_token,userId:s.sub}}async function R(e,t,s=5){try{if(!g||e===null||!t.pollingIsActive)return;let n=await te(e)*J*1e3;setTimeout(async()=>{if(!t.pollingIsActive)return;let a=await O(),c=v(a);t.identity=c,await R(a,t)},n)}catch(r){if(s===0)throw r;i.error(`Could not refresh identity for external task worker ${t.workerId}`,{err:r,workerId:t.workerId,retryCount:s});let n=2*1e3;setTimeout(async()=>await R(e,t,s-1),n)}}async function Q(e){let t=await X({entryPoints:[e],write:!1,bundle:!0,platform:"node",target:"node18",format:"cjs"});if(t.errors.length>0)throw i.error(`Could not transpile file at '${e}'`,{errors:t.errors}),new Error(`Could not transpile file at '${e}'`);return t.warnings.length>0&&i.warn(`Transpiled file at '${e}' with warnings`,{warnings:t.warnings}),t.outputFiles[0].text}async function ee(e,t){try{var s=module.constructor,r=new s;return r._compile(e,t),r.exports}catch(n){throw i.error("Could not require module from string",{err:n}),n}}async function te(e){let t=e.expires_in;if(!t&&e.expires_at&&(t=Math.floor(e.expires_at-Date.now()/1e3)),t===void 0)throw new Error("Could not determine the time until the access token for external task workers expires");return t}function E(e){return e.replace(/^\.\/+|\([^)]+\)|^\/*|\/*$/g,"").replace(/[\/]{2,}/g,"/")}function se(e){let t,s=[e,h(process.cwd(),"app"),h(process.cwd(),"src","app")];for(let r of s)if(r&&U(r)){t=r;break}if(!t)throw new Error("Could not find external tasks directory");return t}function Pe(){return o}import{cookies as w,headers as L}from"next/headers";import{ResponseCookies as re}from"next/dist/compiled/@edge-runtime/cookies";import{getToken as D}from"next-auth/jwt";var ne=process.env.NEXTAUTH_URL?.startsWith("https://"),W=`${ne?"__Secure-":""}next-auth.session-token`;async function be(){let e=await D({req:{cookies:w(),headers:L()}});if(e?.expiresAt&&Date.now()>=e.expiresAt*1e3){let s=await fetch(`${process.env.NEXTAUTH_URL}/api/auth/session`,{method:"GET",headers:{"Content-Type":"application/json",cookie:w().toString()}}),r=new re(s.headers),n=r.get(W);if(n){let a=!1;try{w().set(W,n.value,{...n})}catch{a=!0}if(e=await D({req:{cookies:a?r:w(),headers:L()}}),e?.error)throw e.error}}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 oe}from"@5minds/processcube_engine_client";async function De(e){return await o.processInstances.query({...e?.query,state:oe.ProcessInstances.ProcessInstanceState.running},e?.options)}import{DataModels as l}from"@5minds/processcube_engine_client";async function Ke(e={},t){let{processInstanceId:s,flowNodeId:r}=e;return new Promise(async(n,a)=>{let c=await o.userTasks.onUserTaskWaiting(async d=>{let C=d.flowNodeInstanceId===void 0,x=s!==void 0&&d.processInstanceId!==s,_=r!==void 0&&d.flowNodeId!==r,f=s!==void 0&&r!==void 0&&d.processInstanceId!==s&&d.flowNodeId!==r;if(C||x||_||f)return;let p=await ie(d.flowNodeInstanceId,{identity:t});return o.notification.removeSubscription(c,t),p===null?a(new Error(`UserTask with instance ID "${d.flowNodeInstanceId}" does not exist.`)):n(p)},{identity:t}),k=(await ae({processInstanceId:s,flowNodeId:r,state:l.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:t})).userTasks[0];k&&(o.notification.removeSubscription(c,t),n(k))})}async function qe(e,t,s,r){await o.userTasks.finishUserTask(e,t,r);let n=await o.userTasks.query({flowNodeId:s,state:l.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:r});return n.userTasks.length===0?null:n.userTasks[0]}async function ae(...e){return await o.userTasks.query(...e)}async function $e(e){return await o.userTasks.query({state:l.FlowNodeInstances.FlowNodeInstanceState.suspended},e)}async function Xe(e,t){return await o.userTasks.query({processInstanceId:e,state:l.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function Ge(e,t){return await o.userTasks.query({flowNodeId:e,state:l.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function ie(e,t){let s=await o.userTasks.query({flowNodeInstanceId:e,state:l.FlowNodeInstances.FlowNodeInstanceState.suspended},{...t,limit:1});return s.userTasks.length===0?null:s.userTasks[0]}async function He(e,t){return await o.userTasks.query({correlationId:e,state:l.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function je(e,t){let s=await o.userTasks.query({state:l.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...t}),r=s.userTasks.filter(n=>n.actualOwnerId===e.userId);return s.userTasks=r,s}async function Ye(e,t){let s=await o.userTasks.query({state:l.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...t}),r=s.userTasks.filter(n=>n.assignedUserIds?.includes(e.userId));return s.userTasks=r,s}import{PHASE_DEVELOPMENT_SERVER as ce,PHASE_PRODUCTION_SERVER as de}from"next/dist/shared/lib/constants";var M=!1;function ot(e={}){let{applicationSdk:t,...s}=e;return async(r,n)=>{let a=r===ce||r===de;return t?.useExternalTasks&&a&&!M&&(M=!0,await A(t?.customExternalTasksDirPath)),s}}import{revalidatePath as le}from"next/cache";import{redirect as ue}from"next/navigation";function ut(e){le(e),ue(e)}async function kt(...e){return await o.processModels.startProcessInstance(...e)}async function mt(...e){await o.userTasks.finishUserTask(...e)}export{mt as finishUserTask,qe as finishUserTaskAndGetNext,De as getActiveProcessInstances,Ye as getAssignedUserTasksByIdentity,Pe as getEngineClient,be as getIdentity,je as getReservedUserTasksByIdentity,ae as getUserTasks,ie as getWaitingUserTaskByFlowNodeInstanceId,$e as getWaitingUserTasks,He as getWaitingUserTasksByCorrelationId,Ge as getWaitingUserTasksByFlowNodeId,Xe as getWaitingUserTasksByProcessInstanceId,ut as navigateToUrl,kt as startProcess,Ke as waitForUserTask,ot as withApplicationSdk};