@amaster.ai/bpm-client 1.0.0-beta.7 → 1.0.0-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- 'use strict';var httpClient=require('@amaster.ai/http-client');function p(e){return e!=null&&typeof e=="object"&&"variables"in e&&typeof e.variables=="object"&&e.variables!==null}function y(e){if(!e||typeof e!="string")return false;if(/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[+-]\d{4})?)?$/.test(e))return true;let t=Date.parse(e);return !isNaN(t)}function i(e){let s;if(e instanceof Date)s=e;else if(typeof e=="number")s=new Date(e);else if(typeof e=="string"){if(s=new Date(e),isNaN(s.getTime()))return e}else s=new Date(e);let t=s.getFullYear(),r=String(s.getMonth()+1).padStart(2,"0"),n=String(s.getDate()).padStart(2,"0"),c=String(s.getHours()).padStart(2,"0"),m=String(s.getMinutes()).padStart(2,"0"),g=String(s.getSeconds()).padStart(2,"0");return `${t}-${r}-${n} ${c}:${m}:${g}`}function b(e){if(e!=null){if(typeof e=="string")return "String";if(typeof e=="boolean")return "Boolean";if(typeof e=="number")return Number.isInteger(e)?"Long":"Double";if(e instanceof Date)return "Date";if(typeof e=="object")return "Json"}}function o(e){if(e&&typeof e=="object"&&"value"in e&&("type"in e||Object.keys(e).length<=2)){let t=e;return t.value instanceof Date?{value:i(t.value),type:"Date"}:t.type==="Date"&&(typeof t.value=="string"||typeof t.value=="number")?{value:i(t.value),type:"Date"}:t.type==="String"&&typeof t.value=="string"&&y(t.value)?{value:i(t.value),type:"String"}:t}if(e instanceof Date)return {value:i(e),type:"Date"};let s=e;return {value:s,type:b(s)}}function u(e){if(!e)return {variables:{}};if(p(e)){let t={};for(let[r,n]of Object.entries(e.variables))t[r]=o(n);return {variables:t}}let s={};for(let[t,r]of Object.entries(e))s[t]=o(r);return {variables:s}}function a(e){if(!e)return "";let s=new URLSearchParams;for(let[r,n]of Object.entries(e))n!=null&&s.append(r,String(n));let t=s.toString();return t?`?${t}`:""}function l(e){return e.status===204?{...e,data:null}:e}function P(e=httpClient.createHttpClient()){return {startProcess(s,t){return s?e.request({url:`/api/bpm/start/${s}`,method:"post",headers:{"Content-Type":"application/json"},data:u(t)}):Promise.resolve({data:null,error:{message:"Process key is required",status:400},status:400})},getProcessInstances(s){return e.request({url:`/api/bpm/process-instance${a(s)}`,method:"get"})},getProcessInstance(s){return s?e.request({url:`/api/bpm/process-instance/${s}`,method:"get"}):Promise.resolve({data:null,error:{message:"Process instance ID is required",status:400},status:400})},async deleteProcessInstance(s,t){if(!s)return {data:null,error:{message:"Process instance ID is required",status:400},status:400};let r=t?.skipCustomListeners?"?skipCustomListeners=true":"",n=await e.request({url:`/api/bpm/process-instance/${s}${r}`,method:"delete"});return l(n)},getActiveActivities(s){return s?e.request({url:`/api/bpm/process-instance/${s}/activity-instances`,method:"get"}):Promise.resolve({data:null,error:{message:"Process instance ID is required",status:400},status:400})},getTasks(s){return e.request({url:`/api/bpm/task${a(s)}`,method:"get"})},getTaskCount(s){return e.request({url:`/api/bpm/task/count${a(s)}`,method:"get"})},getTask(s){return s?e.request({url:`/api/bpm/task/${s}`,method:"get"}):Promise.resolve({data:null,error:{message:"Task ID is required",status:400},status:400})},getTaskFormSchema(s,t){if(!s)return Promise.resolve({data:null,error:{message:"Task ID is required",status:400},status:400});let r=a(t?.redirect?{redirect:t.redirect}:void 0);return e.request({url:`/api/bpm/task/${s}/form-schema${r}`,method:"get"})},getTaskFormVariables(s){return s?e.request({url:`/api/bpm/task/${s}/form-variables`,method:"get"}):Promise.resolve({data:null,error:{message:"Task ID is required",status:400},status:400})},async completeTask(s,t){if(!s)return {data:null,error:{message:"Task ID is required",status:400},status:400};let r=await e.request({url:`/api/bpm/task/${s}/complete`,method:"post",headers:{"Content-Type":"application/json"},data:u(t)});return l(r)},getHistoryTasks(s){return e.request({url:`/api/bpm/history/task${a(s)}`,method:"get"})},getHistoryTaskCount(s){return e.request({url:`/api/bpm/history/task/count${a(s)}`,method:"get"})},getHistoryProcessInstances(s){return e.request({url:`/api/bpm/history/process-instance${a(s)}`,method:"get"})},getHistoryProcessInstanceCount(s){return e.request({url:`/api/bpm/history/process-instance/count${a(s)}`,method:"get"})},getHistoryProcessInstance(s){return s?e.request({url:`/api/bpm/history/process-instance/${s}`,method:"get"}):Promise.resolve({data:null,error:{message:"Process instance ID is required",status:400},status:400})},getProcessVariables(s){if(!s.processInstanceId)return Promise.resolve({data:null,error:{message:"Process instance ID is required",status:400},status:400});let t=a(s);return e.request({url:`/api/bpm/history/variable-instance${t}`,method:"get"})}}}exports.createBpmClient=P;//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var httpClient=require('@amaster.ai/http-client');function d(){if(typeof window>"u")return null;try{let e=window.location.href,s=/\/app\/([\da-f-]+)(?:\/|$)/.exec(e);if(s&&s[1])return s[1];let t=window.location.hostname,r=/^([\da-f-]+)(?:-[^.]+)?\.[\w-]+\.(?:local|ai)$/.exec(t);return r&&r[1]?r[1]:null}catch{return null}}function g(){if(typeof window>"u")return "production";try{let e=window.location.hostname,s=/^[\da-f-]+-([^.]+)\.[\w-]+\.(?:local|ai)$/.exec(e);return s&&s[1]?s[1]:"production"}catch{return "production"}}function i(){let e=d();if(!e)return null;let s=g();return `${e}_${s}`}function p(e){return e!=null&&typeof e=="object"&&"variables"in e&&typeof e.variables=="object"&&e.variables!==null}function y(e){if(!e||typeof e!="string")return false;if(/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[+-]\d{4})?)?$/.test(e))return true;let t=Date.parse(e);return !isNaN(t)}function o(e){let s;if(e instanceof Date)s=e;else if(typeof e=="number")s=new Date(e);else if(typeof e=="string"){if(s=new Date(e),isNaN(s.getTime()))return e}else s=new Date(e);return s.toISOString()}function b(e){if(e!=null){if(typeof e=="string")return "String";if(typeof e=="boolean")return "Boolean";if(typeof e=="number")return Number.isInteger(e)?"Long":"Double";if(e instanceof Date)return "Date";if(typeof e=="object")return "Json"}}function u(e){if(e&&typeof e=="object"&&"value"in e&&("type"in e||Object.keys(e).length<=2)){let t=e;return t.value instanceof Date?{value:o(t.value),type:"Date"}:t.type==="Date"&&(typeof t.value=="string"||typeof t.value=="number")?{value:o(t.value),type:"Date"}:t.type==="String"&&typeof t.value=="string"&&y(t.value)?{value:o(t.value),type:"String"}:t}if(e instanceof Date)return {value:o(e),type:"Date"};let s=e;return {value:s,type:b(s)}}function l(e){if(!e)return {variables:{}};if(p(e)){let t={};for(let[r,a]of Object.entries(e.variables))t[r]=u(a);return {variables:t}}let s={};for(let[t,r]of Object.entries(e))s[t]=u(r);return {variables:s}}function n(e){if(!e)return "";let s=new URLSearchParams;for(let[r,a]of Object.entries(e))a!=null&&s.append(r,String(a));let t=s.toString();return t?`?${t}`:""}function c(e){return e.status===204?{...e,data:null}:e}function P(e=httpClient.createHttpClient()){return {startProcess(s,t){return s?e.request({url:`/api/bpm/start/${s}`,method:"post",headers:{"Content-Type":"application/json"},data:l(t)}):Promise.resolve({data:null,error:{message:"Process key is required",status:400},status:400})},getProcessInstances(s){return e.request({url:`/api/bpm/process-instance${n(s)}`,method:"get"})},getProcessInstance(s){return s?e.request({url:`/api/bpm/process-instance/${s}`,method:"get"}):Promise.resolve({data:null,error:{message:"Process instance ID is required",status:400},status:400})},async deleteProcessInstance(s,t){if(!s)return {data:null,error:{message:"Process instance ID is required",status:400},status:400};let r=t?.skipCustomListeners?"?skipCustomListeners=true":"",a=await e.request({url:`/api/bpm/process-instance/${s}${r}`,method:"delete"});return c(a)},getActiveActivities(s){return s?e.request({url:`/api/bpm/process-instance/${s}/activity-instances`,method:"get"}):Promise.resolve({data:null,error:{message:"Process instance ID is required",status:400},status:400})},getTasks(s){let t=i(),r=t?{...s,tenantIdIn:t}:s;return e.request({url:`/api/bpm/task${n(r)}`,method:"get"})},getTaskCount(s){let t=i(),r=t?{...s,tenantIdIn:t}:s;return e.request({url:`/api/bpm/task/count${n(r)}`,method:"get"})},getTask(s){return s?e.request({url:`/api/bpm/task/${s}`,method:"get"}):Promise.resolve({data:null,error:{message:"Task ID is required",status:400},status:400})},getTaskFormSchema(s,t){if(!s)return Promise.resolve({data:null,error:{message:"Task ID is required",status:400},status:400});let r=n(t?.redirect?{redirect:t.redirect}:void 0);return e.request({url:`/api/bpm/task/${s}/form-schema${r}`,method:"get"})},getTaskFormVariables(s){return s?e.request({url:`/api/bpm/task/${s}/form-variables`,method:"get"}):Promise.resolve({data:null,error:{message:"Task ID is required",status:400},status:400})},async completeTask(s,t){if(!s)return {data:null,error:{message:"Task ID is required",status:400},status:400};let r=await e.request({url:`/api/bpm/task/${s}/complete`,method:"post",headers:{"Content-Type":"application/json"},data:l(t)});return c(r)},getHistoryTasks(s){let t=i(),r=t?{...s,tenantIdIn:t}:s;return e.request({url:`/api/bpm/history/task${n(r)}`,method:"get"})},getHistoryTaskCount(s){let t=i(),r=t?{...s,tenantIdIn:t}:s;return e.request({url:`/api/bpm/history/task/count${n(r)}`,method:"get"})},getHistoryProcessInstances(s){return e.request({url:`/api/bpm/history/process-instance${n(s)}`,method:"get"})},getHistoryProcessInstanceCount(s){return e.request({url:`/api/bpm/history/process-instance/count${n(s)}`,method:"get"})},getHistoryProcessInstance(s){return s?e.request({url:`/api/bpm/history/process-instance/${s}`,method:"get"}):Promise.resolve({data:null,error:{message:"Process instance ID is required",status:400},status:400})},getProcessVariables(s){if(!s.processInstanceId)return Promise.resolve({data:null,error:{message:"Process instance ID is required",status:400},status:400});let t=n(s);return e.request({url:`/api/bpm/history/variable-instance${t}`,method:"get"})}}}exports.createBpmClient=P;//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/bpm-client.ts"],"names":["isVariableSubmission","x","isDateLikeString","value","timestamp","formatDateForCamunda","date","dateObj","year","month","day","hours","minutes","seconds","inferType","processVariableValue","v","variable","camundaValue","toVariableSubmission","inputs","variables","k","encodeQuery","params","sp","q","noContentToNull","r","createBpmClient","http","createHttpClient","processKey","processInstanceId","result","taskId","opts"],"mappings":"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","file":"index.cjs","sourcesContent":["import { type ClientResult, createHttpClient, type HttpClient } from \"@amaster.ai/http-client\";\n\nexport type CamundaVariableType =\n | \"String\"\n | \"Boolean\"\n | \"Integer\"\n | \"Long\"\n | \"Double\"\n | \"Date\"\n | \"Json\";\n\nexport type CamundaVariableValue =\n | string\n | number\n | boolean\n | Date\n | null\n | undefined\n | Record<string, unknown>\n | unknown[];\n\nexport type CamundaVariable = {\n value: CamundaVariableValue;\n type?: CamundaVariableType;\n};\n\nexport type VariableSubmission = {\n variables: Record<string, CamundaVariable>;\n};\n\nexport type ProcessInstance = {\n id: string;\n definitionId?: string;\n businessKey?: string;\n ended?: boolean;\n suspended?: boolean;\n};\n\nexport type ProcessInstanceQueryParams = {\n processDefinitionKey?: string;\n active?: boolean;\n firstResult?: number;\n maxResults?: number;\n};\n\nexport type HistoryProcessInstance = {\n id: string;\n businessKey: string;\n processDefinitionId: string;\n processDefinitionKey: string;\n processDefinitionName: string;\n processDefinitionVersion: number;\n startTime: string;\n endTime: string | null;\n durationInMillis: number | null;\n startUserId: string;\n startActivityId: string;\n deleteReason: string | null;\n state: string;\n superProcessInstanceId?: string;\n superCaseInstanceId?: string;\n};\n\nexport type HistoryProcessInstanceQueryParams = {\n startedBy?: string;\n finished?: boolean;\n processDefinitionKey?: string;\n sortBy?: string;\n sortOrder?: \"asc\" | \"desc\";\n firstResult?: number;\n maxResults?: number;\n};\n\nexport type ProcessVariable = {\n id: string;\n name: string;\n type: string;\n value: CamundaVariableValue;\n processInstanceId: string;\n createTime?: string;\n activityInstanceId?: string;\n taskId?: string;\n executionId?: string;\n errorMessage?: string;\n};\n\nexport type ActivityInstance = {\n id: string;\n activityId: string;\n activityName: string;\n activityType: string;\n processInstanceId: string;\n executionId: string;\n startTime: string;\n endTime?: string;\n};\n\nexport type Task = {\n id: string;\n name: string;\n description?: string | null;\n assignee?: string | null;\n created?: string | null;\n due?: string | null;\n priority?: number;\n processInstanceId?: string | null;\n processDefinitionId?: string | null;\n taskDefinitionKey?: string | null;\n businessKey?: string | null;\n taskState?: string | null;\n};\n\nexport type TaskCount = { count: number };\n\nexport type TaskFormField = {\n id: string;\n label?: string;\n type?: string;\n defaultValue?: CamundaVariableValue;\n properties?: Record<string, unknown>;\n validationConstraints?: Array<{\n name: string;\n config?: unknown;\n }>;\n [key: string]: unknown;\n};\n\nexport type TaskFormSchema = {\n key?: string;\n contextPath?: string;\n fields?: TaskFormField[];\n [key: string]: unknown;\n};\n\nexport type TaskFormVariable = {\n type: string;\n value: CamundaVariableValue;\n valueInfo?: Record<string, unknown>;\n};\n\nexport type TaskFormVariables = Record<string, TaskFormVariable>;\n\nexport type HistoryTask = {\n id: string;\n name: string;\n assignee: string;\n startTime: string;\n endTime: string;\n duration: number;\n taskState: string;\n processInstanceId: string;\n};\n\nexport type TaskQueryParams = {\n processInstanceId?: string;\n assignee?: string;\n candidateUser?: string;\n candidateGroup?: string;\n name?: string;\n nameLike?: string;\n taskDefinitionKey?: string;\n firstResult?: number;\n maxResults?: number;\n sortBy?: string;\n sortOrder?: \"asc\" | \"desc\";\n [key: string]: string | number | boolean | undefined;\n};\n\nexport type HistoryTaskQueryParams = {\n taskAssignee?: string;\n processInstanceId?: string;\n finished?: boolean;\n unfinished?: boolean;\n firstResult?: number;\n maxResults?: number;\n sortBy?: string;\n sortOrder?: \"asc\" | \"desc\";\n [key: string]: string | number | boolean | undefined;\n};\n\nexport type BpmClient = {\n startProcess(\n processKey: string,\n inputs?: Record<string, CamundaVariableValue> | VariableSubmission\n ): Promise<ClientResult<ProcessInstance>>;\n\n getProcessInstances(\n params?: ProcessInstanceQueryParams\n ): Promise<ClientResult<ProcessInstance[]>>;\n getProcessInstance(processInstanceId: string): Promise<ClientResult<ProcessInstance>>;\n deleteProcessInstance(\n processInstanceId: string,\n params?: { skipCustomListeners?: boolean }\n ): Promise<ClientResult<null>>;\n getActiveActivities(processInstanceId: string): Promise<ClientResult<ActivityInstance[]>>;\n\n getTasks(params?: TaskQueryParams): Promise<ClientResult<Task[]>>;\n getTaskCount(params?: TaskQueryParams): Promise<ClientResult<TaskCount>>;\n getTask(taskId: string): Promise<ClientResult<Task>>;\n getTaskFormSchema(\n taskId: string,\n opts?: { redirect?: string }\n ): Promise<ClientResult<TaskFormSchema>>;\n getTaskFormVariables(taskId: string): Promise<ClientResult<TaskFormVariables>>;\n completeTask(\n taskId: string,\n inputs: Record<string, CamundaVariableValue> | VariableSubmission\n ): Promise<ClientResult<null>>;\n\n getHistoryTasks(params?: HistoryTaskQueryParams): Promise<ClientResult<HistoryTask[]>>;\n getHistoryTaskCount(params?: HistoryTaskQueryParams): Promise<ClientResult<TaskCount>>;\n\n getHistoryProcessInstances(\n params?: HistoryProcessInstanceQueryParams\n ): Promise<ClientResult<HistoryProcessInstance[]>>;\n getHistoryProcessInstanceCount(\n params?: HistoryProcessInstanceQueryParams\n ): Promise<ClientResult<{ count: number }>>;\n getHistoryProcessInstance(\n processInstanceId: string\n ): Promise<ClientResult<HistoryProcessInstance>>;\n getProcessVariables(params: {\n processInstanceId: string;\n variableName?: string;\n }): Promise<ClientResult<ProcessVariable[]>>;\n};\n\nfunction isVariableSubmission(x: unknown): x is VariableSubmission {\n return (\n x !== null &&\n x !== undefined &&\n typeof x === \"object\" &&\n \"variables\" in x &&\n typeof (x as VariableSubmission).variables === \"object\" &&\n (x as VariableSubmission).variables !== null\n );\n}\n\n/**\n * Check if a string value looks like a date\n */\nfunction isDateLikeString(value: string): boolean {\n if (!value || typeof value !== \"string\") return false;\n \n // ISO 8601 formats: 2026-01-28T15:23:39.513Z, 2026-01-28T23:23, 2026-01-28\n const isoPattern = /^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[+-]\\d{4})?)?$/;\n if (isoPattern.test(value)) return true;\n \n // Try parsing as date\n const timestamp = Date.parse(value);\n return !isNaN(timestamp);\n}\n\n/**\n * Format Date value to YYYY-MM-DD HH:MM:SS format\n */\nfunction formatDateForCamunda(date: Date | string | number): string {\n let dateObj: Date;\n\n if (date instanceof Date) {\n dateObj = date;\n } else if (typeof date === \"number\") {\n dateObj = new Date(date);\n } else if (typeof date === \"string\") {\n dateObj = new Date(date);\n if (isNaN(dateObj.getTime())) {\n return date; // Return original if invalid\n }\n } else {\n dateObj = new Date(date as number);\n }\n\n // Format as YYYY-MM-DD HH:MM:SS\n const year = dateObj.getFullYear();\n const month = String(dateObj.getMonth() + 1).padStart(2, '0');\n const day = String(dateObj.getDate()).padStart(2, '0');\n const hours = String(dateObj.getHours()).padStart(2, '0');\n const minutes = String(dateObj.getMinutes()).padStart(2, '0');\n const seconds = String(dateObj.getSeconds()).padStart(2, '0');\n\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n}\n\nfunction inferType(value: CamundaVariableValue): CamundaVariableType | undefined {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === \"string\") {\n return \"String\";\n }\n if (typeof value === \"boolean\") {\n return \"Boolean\";\n }\n if (typeof value === \"number\") {\n return Number.isInteger(value) ? \"Long\" : \"Double\";\n }\n if (value instanceof Date) {\n return \"Date\";\n }\n if (typeof value === \"object\") {\n return \"Json\";\n }\n return undefined;\n}\n\nfunction processVariableValue(v: unknown): CamundaVariable {\n if (v && typeof v === \"object\" && \"value\" in v && (\"type\" in v || Object.keys(v).length <= 2)) {\n const variable = v as CamundaVariable;\n\n if (variable.value instanceof Date) {\n return {\n value: formatDateForCamunda(variable.value),\n type: \"Date\",\n };\n }\n\n if (\n variable.type === \"Date\" &&\n (typeof variable.value === \"string\" || typeof variable.value === \"number\")\n ) {\n return {\n value: formatDateForCamunda(variable.value),\n type: \"Date\",\n };\n }\n\n // Check if String type value looks like a date\n if (\n variable.type === \"String\" &&\n typeof variable.value === \"string\" &&\n isDateLikeString(variable.value)\n ) {\n return {\n value: formatDateForCamunda(variable.value),\n type: \"String\",\n };\n }\n\n return variable;\n }\n\n if (v instanceof Date) {\n return {\n value: formatDateForCamunda(v),\n type: \"Date\",\n };\n }\n\n const camundaValue = v as CamundaVariableValue;\n return { value: camundaValue, type: inferType(camundaValue) };\n}\n\nfunction toVariableSubmission(\n inputs?: Record<string, CamundaVariableValue> | VariableSubmission\n): VariableSubmission {\n if (!inputs) {\n return { variables: {} };\n }\n\n if (isVariableSubmission(inputs)) {\n const variables: Record<string, CamundaVariable> = {};\n for (const [k, v] of Object.entries(inputs.variables)) {\n variables[k] = processVariableValue(v);\n }\n return { variables };\n }\n\n const variables: Record<string, CamundaVariable> = {};\n for (const [k, v] of Object.entries(inputs)) {\n variables[k] = processVariableValue(v);\n }\n\n return { variables };\n}\n\nfunction encodeQuery(params?: Record<string, string | number | boolean | undefined>): string {\n if (!params) {\n return \"\";\n }\n const sp = new URLSearchParams();\n for (const [k, v] of Object.entries(params)) {\n if (v === undefined || v === null) {\n continue;\n }\n sp.append(k, String(v));\n }\n const q = sp.toString();\n return q ? `?${q}` : \"\";\n}\n\nfunction noContentToNull<T>(r: ClientResult<T>): ClientResult<T | null> {\n if (r.status === 204) {\n return { ...r, data: null };\n }\n return r;\n}\n\nexport function createBpmClient(http: HttpClient = createHttpClient()): BpmClient {\n return {\n startProcess(\n processKey: string,\n inputs?: Record<string, CamundaVariableValue> | VariableSubmission\n ): Promise<ClientResult<ProcessInstance>> {\n if (!processKey) {\n return Promise.resolve({\n data: null,\n error: { message: \"Process key is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<ProcessInstance>({\n url: `/api/bpm/start/${processKey}`,\n method: \"post\",\n headers: { \"Content-Type\": \"application/json\" },\n data: toVariableSubmission(inputs),\n });\n },\n\n getProcessInstances(\n params?: ProcessInstanceQueryParams\n ): Promise<ClientResult<ProcessInstance[]>> {\n return http.request<ProcessInstance[]>({\n url: `/api/bpm/process-instance${encodeQuery(params)}`,\n method: \"get\",\n });\n },\n\n getProcessInstance(processInstanceId: string): Promise<ClientResult<ProcessInstance>> {\n if (!processInstanceId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Process instance ID is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<ProcessInstance>({\n url: `/api/bpm/process-instance/${processInstanceId}`,\n method: \"get\",\n });\n },\n\n async deleteProcessInstance(\n processInstanceId: string,\n params?: { skipCustomListeners?: boolean }\n ): Promise<ClientResult<null>> {\n if (!processInstanceId) {\n return {\n data: null,\n error: { message: \"Process instance ID is required\", status: 400 },\n status: 400,\n };\n }\n const q = params?.skipCustomListeners ? \"?skipCustomListeners=true\" : \"\";\n const result = await http.request<null>({\n url: `/api/bpm/process-instance/${processInstanceId}${q}`,\n method: \"delete\",\n });\n return noContentToNull(result) as ClientResult<null>;\n },\n\n getActiveActivities(processInstanceId: string): Promise<ClientResult<ActivityInstance[]>> {\n if (!processInstanceId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Process instance ID is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<ActivityInstance[]>({\n url: `/api/bpm/process-instance/${processInstanceId}/activity-instances`,\n method: \"get\",\n });\n },\n\n getTasks(params?: TaskQueryParams): Promise<ClientResult<Task[]>> {\n return http.request<Task[]>({\n url: `/api/bpm/task${encodeQuery(params)}`,\n method: \"get\",\n });\n },\n\n getTaskCount(params?: TaskQueryParams): Promise<ClientResult<TaskCount>> {\n return http.request<TaskCount>({\n url: `/api/bpm/task/count${encodeQuery(params)}`,\n method: \"get\",\n });\n },\n\n getTask(taskId: string): Promise<ClientResult<Task>> {\n if (!taskId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Task ID is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<Task>({\n url: `/api/bpm/task/${taskId}`,\n method: \"get\",\n });\n },\n\n getTaskFormSchema(\n taskId: string,\n opts?: { redirect?: string }\n ): Promise<ClientResult<TaskFormSchema>> {\n if (!taskId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Task ID is required\", status: 400 },\n status: 400,\n });\n }\n const q = encodeQuery(opts?.redirect ? { redirect: opts.redirect } : undefined);\n return http.request<TaskFormSchema>({\n url: `/api/bpm/task/${taskId}/form-schema${q}`,\n method: \"get\",\n });\n },\n\n getTaskFormVariables(taskId: string): Promise<ClientResult<TaskFormVariables>> {\n if (!taskId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Task ID is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<TaskFormVariables>({\n url: `/api/bpm/task/${taskId}/form-variables`,\n method: \"get\",\n });\n },\n\n async completeTask(\n taskId: string,\n inputs: Record<string, CamundaVariableValue> | VariableSubmission\n ): Promise<ClientResult<null>> {\n if (!taskId) {\n return {\n data: null,\n error: { message: \"Task ID is required\", status: 400 },\n status: 400,\n };\n }\n const r = await http.request<null>({\n url: `/api/bpm/task/${taskId}/complete`,\n method: \"post\",\n headers: { \"Content-Type\": \"application/json\" },\n data: toVariableSubmission(inputs),\n });\n return noContentToNull(r) as ClientResult<null>;\n },\n\n getHistoryTasks(params?: HistoryTaskQueryParams): Promise<ClientResult<HistoryTask[]>> {\n return http.request<HistoryTask[]>({\n url: `/api/bpm/history/task${encodeQuery(params)}`,\n method: \"get\",\n });\n },\n\n getHistoryTaskCount(params?: HistoryTaskQueryParams): Promise<ClientResult<TaskCount>> {\n return http.request<TaskCount>({\n url: `/api/bpm/history/task/count${encodeQuery(params)}`,\n method: \"get\",\n });\n },\n\n getHistoryProcessInstances(\n params?: HistoryProcessInstanceQueryParams\n ): Promise<ClientResult<HistoryProcessInstance[]>> {\n return http.request<HistoryProcessInstance[]>({\n url: `/api/bpm/history/process-instance${encodeQuery(params)}`,\n method: \"get\",\n });\n },\n\n getHistoryProcessInstanceCount(\n params?: HistoryProcessInstanceQueryParams\n ): Promise<ClientResult<{ count: number }>> {\n return http.request<{ count: number }>({\n url: `/api/bpm/history/process-instance/count${encodeQuery(params)}`,\n method: \"get\",\n });\n },\n\n getHistoryProcessInstance(\n processInstanceId: string\n ): Promise<ClientResult<HistoryProcessInstance>> {\n if (!processInstanceId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Process instance ID is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<HistoryProcessInstance>({\n url: `/api/bpm/history/process-instance/${processInstanceId}`,\n method: \"get\",\n });\n },\n\n getProcessVariables(params: {\n processInstanceId: string;\n variableName?: string;\n }): Promise<ClientResult<ProcessVariable[]>> {\n if (!params.processInstanceId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Process instance ID is required\", status: 400 },\n status: 400,\n });\n }\n const q = encodeQuery(params);\n return http.request<ProcessVariable[]>({\n url: `/api/bpm/history/variable-instance${q}`,\n method: \"get\",\n });\n },\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/bpm-client.ts"],"names":["extractAppIdFromUrl","url","pathMatch","hostname","domainMatch","extractEnvFromUrl","envMatch","getTenantId","appId","env","isVariableSubmission","x","isDateLikeString","value","timestamp","formatDateForCamunda","date","dateObj","inferType","processVariableValue","v","variable","camundaValue","toVariableSubmission","inputs","variables","k","encodeQuery","params","sp","q","noContentToNull","r","createBpmClient","http","createHttpClient","processKey","processInstanceId","result","tenantId","queryParams","taskId","opts"],"mappings":"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","file":"index.cjs","sourcesContent":["import { type ClientResult, createHttpClient, type HttpClient } from \"@amaster.ai/http-client\";\n\n/**\n * Extract app_id from current page URL or domain\n * Method 1: From URL path - /app/{app_id}/...\n * Method 2: From domain (subdomain) - {app_id}-{env}.amaster.ai\n */\nfunction extractAppIdFromUrl(): string | null {\n if (typeof window === \"undefined\") {\n return null;\n }\n\n try {\n // Method 1: Try to extract from URL path first\n const url = window.location.href;\n const pathMatch = /\\/app\\/([\\da-f-]+)(?:\\/|$)/.exec(url);\n if (pathMatch && pathMatch[1]) {\n return pathMatch[1];\n }\n\n // Method 2: Try to extract from domain (subdomain)\n // Matches patterns like: {app_id}-{env}.{domain}.{tld}\n // Examples: abc123-dev.amaster.ai, abc123-prod.appok.ai, abc123.amaster.local\n const hostname = window.location.hostname;\n const domainMatch = /^([\\da-f-]+)(?:-[^.]+)?\\.[\\w-]+\\.(?:local|ai)$/.exec(hostname);\n if (domainMatch && domainMatch[1]) {\n return domainMatch[1];\n }\n\n return null;\n } catch {\n return null;\n }\n}\n\n/**\n * Extract environment from domain\n * Examples:\n * - aa7158e8-dev.amaster.ai -> dev\n * - aa7158e8.amaster.ai -> production\n * - aa7158e8-prod.amaster.ai -> prod\n */\nfunction extractEnvFromUrl(): string {\n if (typeof window === \"undefined\") {\n return \"production\";\n }\n\n try {\n const hostname = window.location.hostname;\n // Match pattern: {app_id}-{env}.domain.tld\n const envMatch = /^[\\da-f-]+-([^.]+)\\.[\\w-]+\\.(?:local|ai)$/.exec(hostname);\n if (envMatch && envMatch[1]) {\n return envMatch[1];\n }\n return \"production\";\n } catch {\n return \"production\";\n }\n}\n\n/**\n * Get tenantId in format: {appId}_{env}\n */\nfunction getTenantId(): string | null {\n const appId = extractAppIdFromUrl();\n if (!appId) {\n return null;\n }\n const env = extractEnvFromUrl();\n return `${appId}_${env}`;\n}\n\nexport type CamundaVariableType =\n | \"String\"\n | \"Boolean\"\n | \"Integer\"\n | \"Long\"\n | \"Double\"\n | \"Date\"\n | \"Json\";\n\nexport type CamundaVariableValue =\n | string\n | number\n | boolean\n | Date\n | null\n | undefined\n | Record<string, unknown>\n | unknown[];\n\nexport type CamundaVariable = {\n value: CamundaVariableValue;\n type?: CamundaVariableType;\n};\n\nexport type VariableSubmission = {\n variables: Record<string, CamundaVariable>;\n};\n\nexport type ProcessInstance = {\n id: string;\n definitionId?: string;\n businessKey?: string;\n ended?: boolean;\n suspended?: boolean;\n};\n\nexport type ProcessInstanceQueryParams = {\n processDefinitionKey?: string;\n active?: boolean;\n firstResult?: number;\n maxResults?: number;\n};\n\nexport type HistoryProcessInstance = {\n id: string;\n businessKey: string;\n processDefinitionId: string;\n processDefinitionKey: string;\n processDefinitionName: string;\n processDefinitionVersion: number;\n startTime: string;\n endTime: string | null;\n durationInMillis: number | null;\n startUserId: string;\n startActivityId: string;\n deleteReason: string | null;\n state: string;\n superProcessInstanceId?: string;\n superCaseInstanceId?: string;\n};\n\nexport type HistoryProcessInstanceQueryParams = {\n startedBy?: string;\n finished?: boolean;\n processDefinitionKey?: string;\n sortBy?: string;\n sortOrder?: \"asc\" | \"desc\";\n firstResult?: number;\n maxResults?: number;\n};\n\nexport type ProcessVariable = {\n id: string;\n name: string;\n type: string;\n value: CamundaVariableValue;\n processInstanceId: string;\n createTime?: string;\n activityInstanceId?: string;\n taskId?: string;\n executionId?: string;\n errorMessage?: string;\n};\n\nexport type ActivityInstance = {\n id: string;\n activityId: string;\n activityName: string;\n activityType: string;\n processInstanceId: string;\n executionId: string;\n startTime: string;\n endTime?: string;\n};\n\nexport type Task = {\n id: string;\n name: string;\n description?: string | null;\n assignee?: string | null;\n created?: string | null;\n due?: string | null;\n priority?: number;\n processInstanceId?: string | null;\n processDefinitionId?: string | null;\n taskDefinitionKey?: string | null;\n businessKey?: string | null;\n taskState?: string | null;\n};\n\nexport type TaskCount = { count: number };\n\nexport type TaskFormField = {\n id: string;\n label?: string;\n type?: string;\n defaultValue?: CamundaVariableValue;\n properties?: Record<string, unknown>;\n validationConstraints?: Array<{\n name: string;\n config?: unknown;\n }>;\n [key: string]: unknown;\n};\n\nexport type TaskFormSchema = {\n key?: string;\n contextPath?: string;\n fields?: TaskFormField[];\n [key: string]: unknown;\n};\n\nexport type TaskFormVariable = {\n type: string;\n value: CamundaVariableValue;\n valueInfo?: Record<string, unknown>;\n};\n\nexport type TaskFormVariables = Record<string, TaskFormVariable>;\n\nexport type HistoryTask = {\n id: string;\n name: string;\n assignee: string;\n startTime: string;\n endTime: string;\n duration: number;\n taskState: string;\n processInstanceId: string;\n};\n\nexport type TaskQueryParams = {\n processInstanceId?: string;\n assignee?: string;\n candidateUser?: string;\n candidateGroup?: string;\n name?: string;\n nameLike?: string;\n taskDefinitionKey?: string;\n firstResult?: number;\n maxResults?: number;\n sortBy?: string;\n sortOrder?: \"asc\" | \"desc\";\n [key: string]: string | number | boolean | undefined;\n};\n\nexport type HistoryTaskQueryParams = {\n taskAssignee?: string;\n processInstanceId?: string;\n finished?: boolean;\n unfinished?: boolean;\n firstResult?: number;\n maxResults?: number;\n sortBy?: string;\n sortOrder?: \"asc\" | \"desc\";\n [key: string]: string | number | boolean | undefined;\n};\n\nexport type BpmClient = {\n startProcess(\n processKey: string,\n inputs?: Record<string, CamundaVariableValue> | VariableSubmission\n ): Promise<ClientResult<ProcessInstance>>;\n\n getProcessInstances(\n params?: ProcessInstanceQueryParams\n ): Promise<ClientResult<ProcessInstance[]>>;\n getProcessInstance(processInstanceId: string): Promise<ClientResult<ProcessInstance>>;\n deleteProcessInstance(\n processInstanceId: string,\n params?: { skipCustomListeners?: boolean }\n ): Promise<ClientResult<null>>;\n getActiveActivities(processInstanceId: string): Promise<ClientResult<ActivityInstance[]>>;\n\n getTasks(params?: TaskQueryParams): Promise<ClientResult<Task[]>>;\n getTaskCount(params?: TaskQueryParams): Promise<ClientResult<TaskCount>>;\n getTask(taskId: string): Promise<ClientResult<Task>>;\n getTaskFormSchema(\n taskId: string,\n opts?: { redirect?: string }\n ): Promise<ClientResult<TaskFormSchema>>;\n getTaskFormVariables(taskId: string): Promise<ClientResult<TaskFormVariables>>;\n completeTask(\n taskId: string,\n inputs: Record<string, CamundaVariableValue> | VariableSubmission\n ): Promise<ClientResult<null>>;\n\n getHistoryTasks(params?: HistoryTaskQueryParams): Promise<ClientResult<HistoryTask[]>>;\n getHistoryTaskCount(params?: HistoryTaskQueryParams): Promise<ClientResult<TaskCount>>;\n\n getHistoryProcessInstances(\n params?: HistoryProcessInstanceQueryParams\n ): Promise<ClientResult<HistoryProcessInstance[]>>;\n getHistoryProcessInstanceCount(\n params?: HistoryProcessInstanceQueryParams\n ): Promise<ClientResult<{ count: number }>>;\n getHistoryProcessInstance(\n processInstanceId: string\n ): Promise<ClientResult<HistoryProcessInstance>>;\n getProcessVariables(params: {\n processInstanceId: string;\n variableName?: string;\n }): Promise<ClientResult<ProcessVariable[]>>;\n};\n\nfunction isVariableSubmission(x: unknown): x is VariableSubmission {\n return (\n x !== null &&\n x !== undefined &&\n typeof x === \"object\" &&\n \"variables\" in x &&\n typeof (x as VariableSubmission).variables === \"object\" &&\n (x as VariableSubmission).variables !== null\n );\n}\n\n/**\n * Check if a string value looks like a date\n */\nfunction isDateLikeString(value: string): boolean {\n if (!value || typeof value !== \"string\") return false;\n\n // ISO 8601 formats: 2026-01-28T15:23:39.513Z, 2026-01-28T23:23, 2026-01-28\n const isoPattern = /^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[+-]\\d{4})?)?$/;\n if (isoPattern.test(value)) return true;\n\n // Try parsing as date\n const timestamp = Date.parse(value);\n return !isNaN(timestamp);\n}\n\n/**\n * Format Date value to ISO 8601 format for Camunda\n */\nfunction formatDateForCamunda(date: Date | string | number): string {\n let dateObj: Date;\n\n if (date instanceof Date) {\n dateObj = date;\n } else if (typeof date === \"number\") {\n dateObj = new Date(date);\n } else if (typeof date === \"string\") {\n dateObj = new Date(date);\n if (isNaN(dateObj.getTime())) {\n return date; // Return original if invalid\n }\n } else {\n dateObj = new Date(date as number);\n }\n\n // Format as ISO 8601: YYYY-MM-DDTHH:MM:SS.sssZ\n return dateObj.toISOString();\n}\n\nfunction inferType(value: CamundaVariableValue): CamundaVariableType | undefined {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === \"string\") {\n return \"String\";\n }\n if (typeof value === \"boolean\") {\n return \"Boolean\";\n }\n if (typeof value === \"number\") {\n return Number.isInteger(value) ? \"Long\" : \"Double\";\n }\n if (value instanceof Date) {\n return \"Date\";\n }\n if (typeof value === \"object\") {\n return \"Json\";\n }\n return undefined;\n}\n\nfunction processVariableValue(v: unknown): CamundaVariable {\n if (v && typeof v === \"object\" && \"value\" in v && (\"type\" in v || Object.keys(v).length <= 2)) {\n const variable = v as CamundaVariable;\n\n if (variable.value instanceof Date) {\n return {\n value: formatDateForCamunda(variable.value),\n type: \"Date\",\n };\n }\n\n if (\n variable.type === \"Date\" &&\n (typeof variable.value === \"string\" || typeof variable.value === \"number\")\n ) {\n return {\n value: formatDateForCamunda(variable.value),\n type: \"Date\",\n };\n }\n\n // Check if String type value looks like a date\n if (\n variable.type === \"String\" &&\n typeof variable.value === \"string\" &&\n isDateLikeString(variable.value)\n ) {\n return {\n value: formatDateForCamunda(variable.value),\n type: \"String\",\n };\n }\n\n return variable;\n }\n\n if (v instanceof Date) {\n return {\n value: formatDateForCamunda(v),\n type: \"Date\",\n };\n }\n\n const camundaValue = v as CamundaVariableValue;\n return { value: camundaValue, type: inferType(camundaValue) };\n}\n\nfunction toVariableSubmission(\n inputs?: Record<string, CamundaVariableValue> | VariableSubmission\n): VariableSubmission {\n if (!inputs) {\n return { variables: {} };\n }\n\n if (isVariableSubmission(inputs)) {\n const variables: Record<string, CamundaVariable> = {};\n for (const [k, v] of Object.entries(inputs.variables)) {\n variables[k] = processVariableValue(v);\n }\n return { variables };\n }\n\n const variables: Record<string, CamundaVariable> = {};\n for (const [k, v] of Object.entries(inputs)) {\n variables[k] = processVariableValue(v);\n }\n\n return { variables };\n}\n\nfunction encodeQuery(params?: Record<string, string | number | boolean | undefined>): string {\n if (!params) {\n return \"\";\n }\n const sp = new URLSearchParams();\n for (const [k, v] of Object.entries(params)) {\n if (v === undefined || v === null) {\n continue;\n }\n sp.append(k, String(v));\n }\n const q = sp.toString();\n return q ? `?${q}` : \"\";\n}\n\nfunction noContentToNull<T>(r: ClientResult<T>): ClientResult<T | null> {\n if (r.status === 204) {\n return { ...r, data: null };\n }\n return r;\n}\n\nexport function createBpmClient(http: HttpClient = createHttpClient()): BpmClient {\n return {\n startProcess(\n processKey: string,\n inputs?: Record<string, CamundaVariableValue> | VariableSubmission\n ): Promise<ClientResult<ProcessInstance>> {\n if (!processKey) {\n return Promise.resolve({\n data: null,\n error: { message: \"Process key is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<ProcessInstance>({\n url: `/api/bpm/start/${processKey}`,\n method: \"post\",\n headers: { \"Content-Type\": \"application/json\" },\n data: toVariableSubmission(inputs),\n });\n },\n\n getProcessInstances(\n params?: ProcessInstanceQueryParams\n ): Promise<ClientResult<ProcessInstance[]>> {\n return http.request<ProcessInstance[]>({\n url: `/api/bpm/process-instance${encodeQuery(params)}`,\n method: \"get\",\n });\n },\n\n getProcessInstance(processInstanceId: string): Promise<ClientResult<ProcessInstance>> {\n if (!processInstanceId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Process instance ID is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<ProcessInstance>({\n url: `/api/bpm/process-instance/${processInstanceId}`,\n method: \"get\",\n });\n },\n\n async deleteProcessInstance(\n processInstanceId: string,\n params?: { skipCustomListeners?: boolean }\n ): Promise<ClientResult<null>> {\n if (!processInstanceId) {\n return {\n data: null,\n error: { message: \"Process instance ID is required\", status: 400 },\n status: 400,\n };\n }\n const q = params?.skipCustomListeners ? \"?skipCustomListeners=true\" : \"\";\n const result = await http.request<null>({\n url: `/api/bpm/process-instance/${processInstanceId}${q}`,\n method: \"delete\",\n });\n return noContentToNull(result) as ClientResult<null>;\n },\n\n getActiveActivities(processInstanceId: string): Promise<ClientResult<ActivityInstance[]>> {\n if (!processInstanceId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Process instance ID is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<ActivityInstance[]>({\n url: `/api/bpm/process-instance/${processInstanceId}/activity-instances`,\n method: \"get\",\n });\n },\n\n getTasks(params?: TaskQueryParams): Promise<ClientResult<Task[]>> {\n const tenantId = getTenantId();\n const queryParams = tenantId ? { ...params, tenantIdIn: tenantId } : params;\n return http.request<Task[]>({\n url: `/api/bpm/task${encodeQuery(queryParams)}`,\n method: \"get\",\n });\n },\n\n getTaskCount(params?: TaskQueryParams): Promise<ClientResult<TaskCount>> {\n const tenantId = getTenantId();\n const queryParams = tenantId ? { ...params, tenantIdIn: tenantId } : params;\n return http.request<TaskCount>({\n url: `/api/bpm/task/count${encodeQuery(queryParams)}`,\n method: \"get\",\n });\n },\n\n getTask(taskId: string): Promise<ClientResult<Task>> {\n if (!taskId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Task ID is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<Task>({\n url: `/api/bpm/task/${taskId}`,\n method: \"get\",\n });\n },\n\n getTaskFormSchema(\n taskId: string,\n opts?: { redirect?: string }\n ): Promise<ClientResult<TaskFormSchema>> {\n if (!taskId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Task ID is required\", status: 400 },\n status: 400,\n });\n }\n const q = encodeQuery(opts?.redirect ? { redirect: opts.redirect } : undefined);\n return http.request<TaskFormSchema>({\n url: `/api/bpm/task/${taskId}/form-schema${q}`,\n method: \"get\",\n });\n },\n\n getTaskFormVariables(taskId: string): Promise<ClientResult<TaskFormVariables>> {\n if (!taskId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Task ID is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<TaskFormVariables>({\n url: `/api/bpm/task/${taskId}/form-variables`,\n method: \"get\",\n });\n },\n\n async completeTask(\n taskId: string,\n inputs: Record<string, CamundaVariableValue> | VariableSubmission\n ): Promise<ClientResult<null>> {\n if (!taskId) {\n return {\n data: null,\n error: { message: \"Task ID is required\", status: 400 },\n status: 400,\n };\n }\n const r = await http.request<null>({\n url: `/api/bpm/task/${taskId}/complete`,\n method: \"post\",\n headers: { \"Content-Type\": \"application/json\" },\n data: toVariableSubmission(inputs),\n });\n return noContentToNull(r) as ClientResult<null>;\n },\n\n getHistoryTasks(params?: HistoryTaskQueryParams): Promise<ClientResult<HistoryTask[]>> {\n const tenantId = getTenantId();\n const queryParams = tenantId ? { ...params, tenantIdIn: tenantId } : params;\n return http.request<HistoryTask[]>({\n url: `/api/bpm/history/task${encodeQuery(queryParams)}`,\n method: \"get\",\n });\n },\n\n getHistoryTaskCount(params?: HistoryTaskQueryParams): Promise<ClientResult<TaskCount>> {\n const tenantId = getTenantId();\n const queryParams = tenantId ? { ...params, tenantIdIn: tenantId } : params;\n return http.request<TaskCount>({\n url: `/api/bpm/history/task/count${encodeQuery(queryParams)}`,\n method: \"get\",\n });\n },\n\n getHistoryProcessInstances(\n params?: HistoryProcessInstanceQueryParams\n ): Promise<ClientResult<HistoryProcessInstance[]>> {\n return http.request<HistoryProcessInstance[]>({\n url: `/api/bpm/history/process-instance${encodeQuery(params)}`,\n method: \"get\",\n });\n },\n\n getHistoryProcessInstanceCount(\n params?: HistoryProcessInstanceQueryParams\n ): Promise<ClientResult<{ count: number }>> {\n return http.request<{ count: number }>({\n url: `/api/bpm/history/process-instance/count${encodeQuery(params)}`,\n method: \"get\",\n });\n },\n\n getHistoryProcessInstance(\n processInstanceId: string\n ): Promise<ClientResult<HistoryProcessInstance>> {\n if (!processInstanceId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Process instance ID is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<HistoryProcessInstance>({\n url: `/api/bpm/history/process-instance/${processInstanceId}`,\n method: \"get\",\n });\n },\n\n getProcessVariables(params: {\n processInstanceId: string;\n variableName?: string;\n }): Promise<ClientResult<ProcessVariable[]>> {\n if (!params.processInstanceId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Process instance ID is required\", status: 400 },\n status: 400,\n });\n }\n const q = encodeQuery(params);\n return http.request<ProcessVariable[]>({\n url: `/api/bpm/history/variable-instance${q}`,\n method: \"get\",\n });\n },\n };\n}\n"]}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import {createHttpClient}from'@amaster.ai/http-client';function p(e){return e!=null&&typeof e=="object"&&"variables"in e&&typeof e.variables=="object"&&e.variables!==null}function y(e){if(!e||typeof e!="string")return false;if(/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[+-]\d{4})?)?$/.test(e))return true;let t=Date.parse(e);return !isNaN(t)}function i(e){let s;if(e instanceof Date)s=e;else if(typeof e=="number")s=new Date(e);else if(typeof e=="string"){if(s=new Date(e),isNaN(s.getTime()))return e}else s=new Date(e);let t=s.getFullYear(),r=String(s.getMonth()+1).padStart(2,"0"),n=String(s.getDate()).padStart(2,"0"),c=String(s.getHours()).padStart(2,"0"),m=String(s.getMinutes()).padStart(2,"0"),g=String(s.getSeconds()).padStart(2,"0");return `${t}-${r}-${n} ${c}:${m}:${g}`}function b(e){if(e!=null){if(typeof e=="string")return "String";if(typeof e=="boolean")return "Boolean";if(typeof e=="number")return Number.isInteger(e)?"Long":"Double";if(e instanceof Date)return "Date";if(typeof e=="object")return "Json"}}function o(e){if(e&&typeof e=="object"&&"value"in e&&("type"in e||Object.keys(e).length<=2)){let t=e;return t.value instanceof Date?{value:i(t.value),type:"Date"}:t.type==="Date"&&(typeof t.value=="string"||typeof t.value=="number")?{value:i(t.value),type:"Date"}:t.type==="String"&&typeof t.value=="string"&&y(t.value)?{value:i(t.value),type:"String"}:t}if(e instanceof Date)return {value:i(e),type:"Date"};let s=e;return {value:s,type:b(s)}}function u(e){if(!e)return {variables:{}};if(p(e)){let t={};for(let[r,n]of Object.entries(e.variables))t[r]=o(n);return {variables:t}}let s={};for(let[t,r]of Object.entries(e))s[t]=o(r);return {variables:s}}function a(e){if(!e)return "";let s=new URLSearchParams;for(let[r,n]of Object.entries(e))n!=null&&s.append(r,String(n));let t=s.toString();return t?`?${t}`:""}function l(e){return e.status===204?{...e,data:null}:e}function P(e=createHttpClient()){return {startProcess(s,t){return s?e.request({url:`/api/bpm/start/${s}`,method:"post",headers:{"Content-Type":"application/json"},data:u(t)}):Promise.resolve({data:null,error:{message:"Process key is required",status:400},status:400})},getProcessInstances(s){return e.request({url:`/api/bpm/process-instance${a(s)}`,method:"get"})},getProcessInstance(s){return s?e.request({url:`/api/bpm/process-instance/${s}`,method:"get"}):Promise.resolve({data:null,error:{message:"Process instance ID is required",status:400},status:400})},async deleteProcessInstance(s,t){if(!s)return {data:null,error:{message:"Process instance ID is required",status:400},status:400};let r=t?.skipCustomListeners?"?skipCustomListeners=true":"",n=await e.request({url:`/api/bpm/process-instance/${s}${r}`,method:"delete"});return l(n)},getActiveActivities(s){return s?e.request({url:`/api/bpm/process-instance/${s}/activity-instances`,method:"get"}):Promise.resolve({data:null,error:{message:"Process instance ID is required",status:400},status:400})},getTasks(s){return e.request({url:`/api/bpm/task${a(s)}`,method:"get"})},getTaskCount(s){return e.request({url:`/api/bpm/task/count${a(s)}`,method:"get"})},getTask(s){return s?e.request({url:`/api/bpm/task/${s}`,method:"get"}):Promise.resolve({data:null,error:{message:"Task ID is required",status:400},status:400})},getTaskFormSchema(s,t){if(!s)return Promise.resolve({data:null,error:{message:"Task ID is required",status:400},status:400});let r=a(t?.redirect?{redirect:t.redirect}:void 0);return e.request({url:`/api/bpm/task/${s}/form-schema${r}`,method:"get"})},getTaskFormVariables(s){return s?e.request({url:`/api/bpm/task/${s}/form-variables`,method:"get"}):Promise.resolve({data:null,error:{message:"Task ID is required",status:400},status:400})},async completeTask(s,t){if(!s)return {data:null,error:{message:"Task ID is required",status:400},status:400};let r=await e.request({url:`/api/bpm/task/${s}/complete`,method:"post",headers:{"Content-Type":"application/json"},data:u(t)});return l(r)},getHistoryTasks(s){return e.request({url:`/api/bpm/history/task${a(s)}`,method:"get"})},getHistoryTaskCount(s){return e.request({url:`/api/bpm/history/task/count${a(s)}`,method:"get"})},getHistoryProcessInstances(s){return e.request({url:`/api/bpm/history/process-instance${a(s)}`,method:"get"})},getHistoryProcessInstanceCount(s){return e.request({url:`/api/bpm/history/process-instance/count${a(s)}`,method:"get"})},getHistoryProcessInstance(s){return s?e.request({url:`/api/bpm/history/process-instance/${s}`,method:"get"}):Promise.resolve({data:null,error:{message:"Process instance ID is required",status:400},status:400})},getProcessVariables(s){if(!s.processInstanceId)return Promise.resolve({data:null,error:{message:"Process instance ID is required",status:400},status:400});let t=a(s);return e.request({url:`/api/bpm/history/variable-instance${t}`,method:"get"})}}}export{P as createBpmClient};//# sourceMappingURL=index.js.map
1
+ import {createHttpClient}from'@amaster.ai/http-client';function d(){if(typeof window>"u")return null;try{let e=window.location.href,s=/\/app\/([\da-f-]+)(?:\/|$)/.exec(e);if(s&&s[1])return s[1];let t=window.location.hostname,r=/^([\da-f-]+)(?:-[^.]+)?\.[\w-]+\.(?:local|ai)$/.exec(t);return r&&r[1]?r[1]:null}catch{return null}}function g(){if(typeof window>"u")return "production";try{let e=window.location.hostname,s=/^[\da-f-]+-([^.]+)\.[\w-]+\.(?:local|ai)$/.exec(e);return s&&s[1]?s[1]:"production"}catch{return "production"}}function i(){let e=d();if(!e)return null;let s=g();return `${e}_${s}`}function p(e){return e!=null&&typeof e=="object"&&"variables"in e&&typeof e.variables=="object"&&e.variables!==null}function y(e){if(!e||typeof e!="string")return false;if(/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[+-]\d{4})?)?$/.test(e))return true;let t=Date.parse(e);return !isNaN(t)}function o(e){let s;if(e instanceof Date)s=e;else if(typeof e=="number")s=new Date(e);else if(typeof e=="string"){if(s=new Date(e),isNaN(s.getTime()))return e}else s=new Date(e);return s.toISOString()}function b(e){if(e!=null){if(typeof e=="string")return "String";if(typeof e=="boolean")return "Boolean";if(typeof e=="number")return Number.isInteger(e)?"Long":"Double";if(e instanceof Date)return "Date";if(typeof e=="object")return "Json"}}function u(e){if(e&&typeof e=="object"&&"value"in e&&("type"in e||Object.keys(e).length<=2)){let t=e;return t.value instanceof Date?{value:o(t.value),type:"Date"}:t.type==="Date"&&(typeof t.value=="string"||typeof t.value=="number")?{value:o(t.value),type:"Date"}:t.type==="String"&&typeof t.value=="string"&&y(t.value)?{value:o(t.value),type:"String"}:t}if(e instanceof Date)return {value:o(e),type:"Date"};let s=e;return {value:s,type:b(s)}}function l(e){if(!e)return {variables:{}};if(p(e)){let t={};for(let[r,a]of Object.entries(e.variables))t[r]=u(a);return {variables:t}}let s={};for(let[t,r]of Object.entries(e))s[t]=u(r);return {variables:s}}function n(e){if(!e)return "";let s=new URLSearchParams;for(let[r,a]of Object.entries(e))a!=null&&s.append(r,String(a));let t=s.toString();return t?`?${t}`:""}function c(e){return e.status===204?{...e,data:null}:e}function P(e=createHttpClient()){return {startProcess(s,t){return s?e.request({url:`/api/bpm/start/${s}`,method:"post",headers:{"Content-Type":"application/json"},data:l(t)}):Promise.resolve({data:null,error:{message:"Process key is required",status:400},status:400})},getProcessInstances(s){return e.request({url:`/api/bpm/process-instance${n(s)}`,method:"get"})},getProcessInstance(s){return s?e.request({url:`/api/bpm/process-instance/${s}`,method:"get"}):Promise.resolve({data:null,error:{message:"Process instance ID is required",status:400},status:400})},async deleteProcessInstance(s,t){if(!s)return {data:null,error:{message:"Process instance ID is required",status:400},status:400};let r=t?.skipCustomListeners?"?skipCustomListeners=true":"",a=await e.request({url:`/api/bpm/process-instance/${s}${r}`,method:"delete"});return c(a)},getActiveActivities(s){return s?e.request({url:`/api/bpm/process-instance/${s}/activity-instances`,method:"get"}):Promise.resolve({data:null,error:{message:"Process instance ID is required",status:400},status:400})},getTasks(s){let t=i(),r=t?{...s,tenantIdIn:t}:s;return e.request({url:`/api/bpm/task${n(r)}`,method:"get"})},getTaskCount(s){let t=i(),r=t?{...s,tenantIdIn:t}:s;return e.request({url:`/api/bpm/task/count${n(r)}`,method:"get"})},getTask(s){return s?e.request({url:`/api/bpm/task/${s}`,method:"get"}):Promise.resolve({data:null,error:{message:"Task ID is required",status:400},status:400})},getTaskFormSchema(s,t){if(!s)return Promise.resolve({data:null,error:{message:"Task ID is required",status:400},status:400});let r=n(t?.redirect?{redirect:t.redirect}:void 0);return e.request({url:`/api/bpm/task/${s}/form-schema${r}`,method:"get"})},getTaskFormVariables(s){return s?e.request({url:`/api/bpm/task/${s}/form-variables`,method:"get"}):Promise.resolve({data:null,error:{message:"Task ID is required",status:400},status:400})},async completeTask(s,t){if(!s)return {data:null,error:{message:"Task ID is required",status:400},status:400};let r=await e.request({url:`/api/bpm/task/${s}/complete`,method:"post",headers:{"Content-Type":"application/json"},data:l(t)});return c(r)},getHistoryTasks(s){let t=i(),r=t?{...s,tenantIdIn:t}:s;return e.request({url:`/api/bpm/history/task${n(r)}`,method:"get"})},getHistoryTaskCount(s){let t=i(),r=t?{...s,tenantIdIn:t}:s;return e.request({url:`/api/bpm/history/task/count${n(r)}`,method:"get"})},getHistoryProcessInstances(s){return e.request({url:`/api/bpm/history/process-instance${n(s)}`,method:"get"})},getHistoryProcessInstanceCount(s){return e.request({url:`/api/bpm/history/process-instance/count${n(s)}`,method:"get"})},getHistoryProcessInstance(s){return s?e.request({url:`/api/bpm/history/process-instance/${s}`,method:"get"}):Promise.resolve({data:null,error:{message:"Process instance ID is required",status:400},status:400})},getProcessVariables(s){if(!s.processInstanceId)return Promise.resolve({data:null,error:{message:"Process instance ID is required",status:400},status:400});let t=n(s);return e.request({url:`/api/bpm/history/variable-instance${t}`,method:"get"})}}}export{P as createBpmClient};//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/bpm-client.ts"],"names":["isVariableSubmission","x","isDateLikeString","value","timestamp","formatDateForCamunda","date","dateObj","year","month","day","hours","minutes","seconds","inferType","processVariableValue","v","variable","camundaValue","toVariableSubmission","inputs","variables","k","encodeQuery","params","sp","q","noContentToNull","r","createBpmClient","http","createHttpClient","processKey","processInstanceId","result","taskId","opts"],"mappings":"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","file":"index.js","sourcesContent":["import { type ClientResult, createHttpClient, type HttpClient } from \"@amaster.ai/http-client\";\n\nexport type CamundaVariableType =\n | \"String\"\n | \"Boolean\"\n | \"Integer\"\n | \"Long\"\n | \"Double\"\n | \"Date\"\n | \"Json\";\n\nexport type CamundaVariableValue =\n | string\n | number\n | boolean\n | Date\n | null\n | undefined\n | Record<string, unknown>\n | unknown[];\n\nexport type CamundaVariable = {\n value: CamundaVariableValue;\n type?: CamundaVariableType;\n};\n\nexport type VariableSubmission = {\n variables: Record<string, CamundaVariable>;\n};\n\nexport type ProcessInstance = {\n id: string;\n definitionId?: string;\n businessKey?: string;\n ended?: boolean;\n suspended?: boolean;\n};\n\nexport type ProcessInstanceQueryParams = {\n processDefinitionKey?: string;\n active?: boolean;\n firstResult?: number;\n maxResults?: number;\n};\n\nexport type HistoryProcessInstance = {\n id: string;\n businessKey: string;\n processDefinitionId: string;\n processDefinitionKey: string;\n processDefinitionName: string;\n processDefinitionVersion: number;\n startTime: string;\n endTime: string | null;\n durationInMillis: number | null;\n startUserId: string;\n startActivityId: string;\n deleteReason: string | null;\n state: string;\n superProcessInstanceId?: string;\n superCaseInstanceId?: string;\n};\n\nexport type HistoryProcessInstanceQueryParams = {\n startedBy?: string;\n finished?: boolean;\n processDefinitionKey?: string;\n sortBy?: string;\n sortOrder?: \"asc\" | \"desc\";\n firstResult?: number;\n maxResults?: number;\n};\n\nexport type ProcessVariable = {\n id: string;\n name: string;\n type: string;\n value: CamundaVariableValue;\n processInstanceId: string;\n createTime?: string;\n activityInstanceId?: string;\n taskId?: string;\n executionId?: string;\n errorMessage?: string;\n};\n\nexport type ActivityInstance = {\n id: string;\n activityId: string;\n activityName: string;\n activityType: string;\n processInstanceId: string;\n executionId: string;\n startTime: string;\n endTime?: string;\n};\n\nexport type Task = {\n id: string;\n name: string;\n description?: string | null;\n assignee?: string | null;\n created?: string | null;\n due?: string | null;\n priority?: number;\n processInstanceId?: string | null;\n processDefinitionId?: string | null;\n taskDefinitionKey?: string | null;\n businessKey?: string | null;\n taskState?: string | null;\n};\n\nexport type TaskCount = { count: number };\n\nexport type TaskFormField = {\n id: string;\n label?: string;\n type?: string;\n defaultValue?: CamundaVariableValue;\n properties?: Record<string, unknown>;\n validationConstraints?: Array<{\n name: string;\n config?: unknown;\n }>;\n [key: string]: unknown;\n};\n\nexport type TaskFormSchema = {\n key?: string;\n contextPath?: string;\n fields?: TaskFormField[];\n [key: string]: unknown;\n};\n\nexport type TaskFormVariable = {\n type: string;\n value: CamundaVariableValue;\n valueInfo?: Record<string, unknown>;\n};\n\nexport type TaskFormVariables = Record<string, TaskFormVariable>;\n\nexport type HistoryTask = {\n id: string;\n name: string;\n assignee: string;\n startTime: string;\n endTime: string;\n duration: number;\n taskState: string;\n processInstanceId: string;\n};\n\nexport type TaskQueryParams = {\n processInstanceId?: string;\n assignee?: string;\n candidateUser?: string;\n candidateGroup?: string;\n name?: string;\n nameLike?: string;\n taskDefinitionKey?: string;\n firstResult?: number;\n maxResults?: number;\n sortBy?: string;\n sortOrder?: \"asc\" | \"desc\";\n [key: string]: string | number | boolean | undefined;\n};\n\nexport type HistoryTaskQueryParams = {\n taskAssignee?: string;\n processInstanceId?: string;\n finished?: boolean;\n unfinished?: boolean;\n firstResult?: number;\n maxResults?: number;\n sortBy?: string;\n sortOrder?: \"asc\" | \"desc\";\n [key: string]: string | number | boolean | undefined;\n};\n\nexport type BpmClient = {\n startProcess(\n processKey: string,\n inputs?: Record<string, CamundaVariableValue> | VariableSubmission\n ): Promise<ClientResult<ProcessInstance>>;\n\n getProcessInstances(\n params?: ProcessInstanceQueryParams\n ): Promise<ClientResult<ProcessInstance[]>>;\n getProcessInstance(processInstanceId: string): Promise<ClientResult<ProcessInstance>>;\n deleteProcessInstance(\n processInstanceId: string,\n params?: { skipCustomListeners?: boolean }\n ): Promise<ClientResult<null>>;\n getActiveActivities(processInstanceId: string): Promise<ClientResult<ActivityInstance[]>>;\n\n getTasks(params?: TaskQueryParams): Promise<ClientResult<Task[]>>;\n getTaskCount(params?: TaskQueryParams): Promise<ClientResult<TaskCount>>;\n getTask(taskId: string): Promise<ClientResult<Task>>;\n getTaskFormSchema(\n taskId: string,\n opts?: { redirect?: string }\n ): Promise<ClientResult<TaskFormSchema>>;\n getTaskFormVariables(taskId: string): Promise<ClientResult<TaskFormVariables>>;\n completeTask(\n taskId: string,\n inputs: Record<string, CamundaVariableValue> | VariableSubmission\n ): Promise<ClientResult<null>>;\n\n getHistoryTasks(params?: HistoryTaskQueryParams): Promise<ClientResult<HistoryTask[]>>;\n getHistoryTaskCount(params?: HistoryTaskQueryParams): Promise<ClientResult<TaskCount>>;\n\n getHistoryProcessInstances(\n params?: HistoryProcessInstanceQueryParams\n ): Promise<ClientResult<HistoryProcessInstance[]>>;\n getHistoryProcessInstanceCount(\n params?: HistoryProcessInstanceQueryParams\n ): Promise<ClientResult<{ count: number }>>;\n getHistoryProcessInstance(\n processInstanceId: string\n ): Promise<ClientResult<HistoryProcessInstance>>;\n getProcessVariables(params: {\n processInstanceId: string;\n variableName?: string;\n }): Promise<ClientResult<ProcessVariable[]>>;\n};\n\nfunction isVariableSubmission(x: unknown): x is VariableSubmission {\n return (\n x !== null &&\n x !== undefined &&\n typeof x === \"object\" &&\n \"variables\" in x &&\n typeof (x as VariableSubmission).variables === \"object\" &&\n (x as VariableSubmission).variables !== null\n );\n}\n\n/**\n * Check if a string value looks like a date\n */\nfunction isDateLikeString(value: string): boolean {\n if (!value || typeof value !== \"string\") return false;\n \n // ISO 8601 formats: 2026-01-28T15:23:39.513Z, 2026-01-28T23:23, 2026-01-28\n const isoPattern = /^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[+-]\\d{4})?)?$/;\n if (isoPattern.test(value)) return true;\n \n // Try parsing as date\n const timestamp = Date.parse(value);\n return !isNaN(timestamp);\n}\n\n/**\n * Format Date value to YYYY-MM-DD HH:MM:SS format\n */\nfunction formatDateForCamunda(date: Date | string | number): string {\n let dateObj: Date;\n\n if (date instanceof Date) {\n dateObj = date;\n } else if (typeof date === \"number\") {\n dateObj = new Date(date);\n } else if (typeof date === \"string\") {\n dateObj = new Date(date);\n if (isNaN(dateObj.getTime())) {\n return date; // Return original if invalid\n }\n } else {\n dateObj = new Date(date as number);\n }\n\n // Format as YYYY-MM-DD HH:MM:SS\n const year = dateObj.getFullYear();\n const month = String(dateObj.getMonth() + 1).padStart(2, '0');\n const day = String(dateObj.getDate()).padStart(2, '0');\n const hours = String(dateObj.getHours()).padStart(2, '0');\n const minutes = String(dateObj.getMinutes()).padStart(2, '0');\n const seconds = String(dateObj.getSeconds()).padStart(2, '0');\n\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n}\n\nfunction inferType(value: CamundaVariableValue): CamundaVariableType | undefined {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === \"string\") {\n return \"String\";\n }\n if (typeof value === \"boolean\") {\n return \"Boolean\";\n }\n if (typeof value === \"number\") {\n return Number.isInteger(value) ? \"Long\" : \"Double\";\n }\n if (value instanceof Date) {\n return \"Date\";\n }\n if (typeof value === \"object\") {\n return \"Json\";\n }\n return undefined;\n}\n\nfunction processVariableValue(v: unknown): CamundaVariable {\n if (v && typeof v === \"object\" && \"value\" in v && (\"type\" in v || Object.keys(v).length <= 2)) {\n const variable = v as CamundaVariable;\n\n if (variable.value instanceof Date) {\n return {\n value: formatDateForCamunda(variable.value),\n type: \"Date\",\n };\n }\n\n if (\n variable.type === \"Date\" &&\n (typeof variable.value === \"string\" || typeof variable.value === \"number\")\n ) {\n return {\n value: formatDateForCamunda(variable.value),\n type: \"Date\",\n };\n }\n\n // Check if String type value looks like a date\n if (\n variable.type === \"String\" &&\n typeof variable.value === \"string\" &&\n isDateLikeString(variable.value)\n ) {\n return {\n value: formatDateForCamunda(variable.value),\n type: \"String\",\n };\n }\n\n return variable;\n }\n\n if (v instanceof Date) {\n return {\n value: formatDateForCamunda(v),\n type: \"Date\",\n };\n }\n\n const camundaValue = v as CamundaVariableValue;\n return { value: camundaValue, type: inferType(camundaValue) };\n}\n\nfunction toVariableSubmission(\n inputs?: Record<string, CamundaVariableValue> | VariableSubmission\n): VariableSubmission {\n if (!inputs) {\n return { variables: {} };\n }\n\n if (isVariableSubmission(inputs)) {\n const variables: Record<string, CamundaVariable> = {};\n for (const [k, v] of Object.entries(inputs.variables)) {\n variables[k] = processVariableValue(v);\n }\n return { variables };\n }\n\n const variables: Record<string, CamundaVariable> = {};\n for (const [k, v] of Object.entries(inputs)) {\n variables[k] = processVariableValue(v);\n }\n\n return { variables };\n}\n\nfunction encodeQuery(params?: Record<string, string | number | boolean | undefined>): string {\n if (!params) {\n return \"\";\n }\n const sp = new URLSearchParams();\n for (const [k, v] of Object.entries(params)) {\n if (v === undefined || v === null) {\n continue;\n }\n sp.append(k, String(v));\n }\n const q = sp.toString();\n return q ? `?${q}` : \"\";\n}\n\nfunction noContentToNull<T>(r: ClientResult<T>): ClientResult<T | null> {\n if (r.status === 204) {\n return { ...r, data: null };\n }\n return r;\n}\n\nexport function createBpmClient(http: HttpClient = createHttpClient()): BpmClient {\n return {\n startProcess(\n processKey: string,\n inputs?: Record<string, CamundaVariableValue> | VariableSubmission\n ): Promise<ClientResult<ProcessInstance>> {\n if (!processKey) {\n return Promise.resolve({\n data: null,\n error: { message: \"Process key is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<ProcessInstance>({\n url: `/api/bpm/start/${processKey}`,\n method: \"post\",\n headers: { \"Content-Type\": \"application/json\" },\n data: toVariableSubmission(inputs),\n });\n },\n\n getProcessInstances(\n params?: ProcessInstanceQueryParams\n ): Promise<ClientResult<ProcessInstance[]>> {\n return http.request<ProcessInstance[]>({\n url: `/api/bpm/process-instance${encodeQuery(params)}`,\n method: \"get\",\n });\n },\n\n getProcessInstance(processInstanceId: string): Promise<ClientResult<ProcessInstance>> {\n if (!processInstanceId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Process instance ID is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<ProcessInstance>({\n url: `/api/bpm/process-instance/${processInstanceId}`,\n method: \"get\",\n });\n },\n\n async deleteProcessInstance(\n processInstanceId: string,\n params?: { skipCustomListeners?: boolean }\n ): Promise<ClientResult<null>> {\n if (!processInstanceId) {\n return {\n data: null,\n error: { message: \"Process instance ID is required\", status: 400 },\n status: 400,\n };\n }\n const q = params?.skipCustomListeners ? \"?skipCustomListeners=true\" : \"\";\n const result = await http.request<null>({\n url: `/api/bpm/process-instance/${processInstanceId}${q}`,\n method: \"delete\",\n });\n return noContentToNull(result) as ClientResult<null>;\n },\n\n getActiveActivities(processInstanceId: string): Promise<ClientResult<ActivityInstance[]>> {\n if (!processInstanceId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Process instance ID is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<ActivityInstance[]>({\n url: `/api/bpm/process-instance/${processInstanceId}/activity-instances`,\n method: \"get\",\n });\n },\n\n getTasks(params?: TaskQueryParams): Promise<ClientResult<Task[]>> {\n return http.request<Task[]>({\n url: `/api/bpm/task${encodeQuery(params)}`,\n method: \"get\",\n });\n },\n\n getTaskCount(params?: TaskQueryParams): Promise<ClientResult<TaskCount>> {\n return http.request<TaskCount>({\n url: `/api/bpm/task/count${encodeQuery(params)}`,\n method: \"get\",\n });\n },\n\n getTask(taskId: string): Promise<ClientResult<Task>> {\n if (!taskId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Task ID is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<Task>({\n url: `/api/bpm/task/${taskId}`,\n method: \"get\",\n });\n },\n\n getTaskFormSchema(\n taskId: string,\n opts?: { redirect?: string }\n ): Promise<ClientResult<TaskFormSchema>> {\n if (!taskId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Task ID is required\", status: 400 },\n status: 400,\n });\n }\n const q = encodeQuery(opts?.redirect ? { redirect: opts.redirect } : undefined);\n return http.request<TaskFormSchema>({\n url: `/api/bpm/task/${taskId}/form-schema${q}`,\n method: \"get\",\n });\n },\n\n getTaskFormVariables(taskId: string): Promise<ClientResult<TaskFormVariables>> {\n if (!taskId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Task ID is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<TaskFormVariables>({\n url: `/api/bpm/task/${taskId}/form-variables`,\n method: \"get\",\n });\n },\n\n async completeTask(\n taskId: string,\n inputs: Record<string, CamundaVariableValue> | VariableSubmission\n ): Promise<ClientResult<null>> {\n if (!taskId) {\n return {\n data: null,\n error: { message: \"Task ID is required\", status: 400 },\n status: 400,\n };\n }\n const r = await http.request<null>({\n url: `/api/bpm/task/${taskId}/complete`,\n method: \"post\",\n headers: { \"Content-Type\": \"application/json\" },\n data: toVariableSubmission(inputs),\n });\n return noContentToNull(r) as ClientResult<null>;\n },\n\n getHistoryTasks(params?: HistoryTaskQueryParams): Promise<ClientResult<HistoryTask[]>> {\n return http.request<HistoryTask[]>({\n url: `/api/bpm/history/task${encodeQuery(params)}`,\n method: \"get\",\n });\n },\n\n getHistoryTaskCount(params?: HistoryTaskQueryParams): Promise<ClientResult<TaskCount>> {\n return http.request<TaskCount>({\n url: `/api/bpm/history/task/count${encodeQuery(params)}`,\n method: \"get\",\n });\n },\n\n getHistoryProcessInstances(\n params?: HistoryProcessInstanceQueryParams\n ): Promise<ClientResult<HistoryProcessInstance[]>> {\n return http.request<HistoryProcessInstance[]>({\n url: `/api/bpm/history/process-instance${encodeQuery(params)}`,\n method: \"get\",\n });\n },\n\n getHistoryProcessInstanceCount(\n params?: HistoryProcessInstanceQueryParams\n ): Promise<ClientResult<{ count: number }>> {\n return http.request<{ count: number }>({\n url: `/api/bpm/history/process-instance/count${encodeQuery(params)}`,\n method: \"get\",\n });\n },\n\n getHistoryProcessInstance(\n processInstanceId: string\n ): Promise<ClientResult<HistoryProcessInstance>> {\n if (!processInstanceId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Process instance ID is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<HistoryProcessInstance>({\n url: `/api/bpm/history/process-instance/${processInstanceId}`,\n method: \"get\",\n });\n },\n\n getProcessVariables(params: {\n processInstanceId: string;\n variableName?: string;\n }): Promise<ClientResult<ProcessVariable[]>> {\n if (!params.processInstanceId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Process instance ID is required\", status: 400 },\n status: 400,\n });\n }\n const q = encodeQuery(params);\n return http.request<ProcessVariable[]>({\n url: `/api/bpm/history/variable-instance${q}`,\n method: \"get\",\n });\n },\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/bpm-client.ts"],"names":["extractAppIdFromUrl","url","pathMatch","hostname","domainMatch","extractEnvFromUrl","envMatch","getTenantId","appId","env","isVariableSubmission","x","isDateLikeString","value","timestamp","formatDateForCamunda","date","dateObj","inferType","processVariableValue","v","variable","camundaValue","toVariableSubmission","inputs","variables","k","encodeQuery","params","sp","q","noContentToNull","r","createBpmClient","http","createHttpClient","processKey","processInstanceId","result","tenantId","queryParams","taskId","opts"],"mappings":"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","file":"index.js","sourcesContent":["import { type ClientResult, createHttpClient, type HttpClient } from \"@amaster.ai/http-client\";\n\n/**\n * Extract app_id from current page URL or domain\n * Method 1: From URL path - /app/{app_id}/...\n * Method 2: From domain (subdomain) - {app_id}-{env}.amaster.ai\n */\nfunction extractAppIdFromUrl(): string | null {\n if (typeof window === \"undefined\") {\n return null;\n }\n\n try {\n // Method 1: Try to extract from URL path first\n const url = window.location.href;\n const pathMatch = /\\/app\\/([\\da-f-]+)(?:\\/|$)/.exec(url);\n if (pathMatch && pathMatch[1]) {\n return pathMatch[1];\n }\n\n // Method 2: Try to extract from domain (subdomain)\n // Matches patterns like: {app_id}-{env}.{domain}.{tld}\n // Examples: abc123-dev.amaster.ai, abc123-prod.appok.ai, abc123.amaster.local\n const hostname = window.location.hostname;\n const domainMatch = /^([\\da-f-]+)(?:-[^.]+)?\\.[\\w-]+\\.(?:local|ai)$/.exec(hostname);\n if (domainMatch && domainMatch[1]) {\n return domainMatch[1];\n }\n\n return null;\n } catch {\n return null;\n }\n}\n\n/**\n * Extract environment from domain\n * Examples:\n * - aa7158e8-dev.amaster.ai -> dev\n * - aa7158e8.amaster.ai -> production\n * - aa7158e8-prod.amaster.ai -> prod\n */\nfunction extractEnvFromUrl(): string {\n if (typeof window === \"undefined\") {\n return \"production\";\n }\n\n try {\n const hostname = window.location.hostname;\n // Match pattern: {app_id}-{env}.domain.tld\n const envMatch = /^[\\da-f-]+-([^.]+)\\.[\\w-]+\\.(?:local|ai)$/.exec(hostname);\n if (envMatch && envMatch[1]) {\n return envMatch[1];\n }\n return \"production\";\n } catch {\n return \"production\";\n }\n}\n\n/**\n * Get tenantId in format: {appId}_{env}\n */\nfunction getTenantId(): string | null {\n const appId = extractAppIdFromUrl();\n if (!appId) {\n return null;\n }\n const env = extractEnvFromUrl();\n return `${appId}_${env}`;\n}\n\nexport type CamundaVariableType =\n | \"String\"\n | \"Boolean\"\n | \"Integer\"\n | \"Long\"\n | \"Double\"\n | \"Date\"\n | \"Json\";\n\nexport type CamundaVariableValue =\n | string\n | number\n | boolean\n | Date\n | null\n | undefined\n | Record<string, unknown>\n | unknown[];\n\nexport type CamundaVariable = {\n value: CamundaVariableValue;\n type?: CamundaVariableType;\n};\n\nexport type VariableSubmission = {\n variables: Record<string, CamundaVariable>;\n};\n\nexport type ProcessInstance = {\n id: string;\n definitionId?: string;\n businessKey?: string;\n ended?: boolean;\n suspended?: boolean;\n};\n\nexport type ProcessInstanceQueryParams = {\n processDefinitionKey?: string;\n active?: boolean;\n firstResult?: number;\n maxResults?: number;\n};\n\nexport type HistoryProcessInstance = {\n id: string;\n businessKey: string;\n processDefinitionId: string;\n processDefinitionKey: string;\n processDefinitionName: string;\n processDefinitionVersion: number;\n startTime: string;\n endTime: string | null;\n durationInMillis: number | null;\n startUserId: string;\n startActivityId: string;\n deleteReason: string | null;\n state: string;\n superProcessInstanceId?: string;\n superCaseInstanceId?: string;\n};\n\nexport type HistoryProcessInstanceQueryParams = {\n startedBy?: string;\n finished?: boolean;\n processDefinitionKey?: string;\n sortBy?: string;\n sortOrder?: \"asc\" | \"desc\";\n firstResult?: number;\n maxResults?: number;\n};\n\nexport type ProcessVariable = {\n id: string;\n name: string;\n type: string;\n value: CamundaVariableValue;\n processInstanceId: string;\n createTime?: string;\n activityInstanceId?: string;\n taskId?: string;\n executionId?: string;\n errorMessage?: string;\n};\n\nexport type ActivityInstance = {\n id: string;\n activityId: string;\n activityName: string;\n activityType: string;\n processInstanceId: string;\n executionId: string;\n startTime: string;\n endTime?: string;\n};\n\nexport type Task = {\n id: string;\n name: string;\n description?: string | null;\n assignee?: string | null;\n created?: string | null;\n due?: string | null;\n priority?: number;\n processInstanceId?: string | null;\n processDefinitionId?: string | null;\n taskDefinitionKey?: string | null;\n businessKey?: string | null;\n taskState?: string | null;\n};\n\nexport type TaskCount = { count: number };\n\nexport type TaskFormField = {\n id: string;\n label?: string;\n type?: string;\n defaultValue?: CamundaVariableValue;\n properties?: Record<string, unknown>;\n validationConstraints?: Array<{\n name: string;\n config?: unknown;\n }>;\n [key: string]: unknown;\n};\n\nexport type TaskFormSchema = {\n key?: string;\n contextPath?: string;\n fields?: TaskFormField[];\n [key: string]: unknown;\n};\n\nexport type TaskFormVariable = {\n type: string;\n value: CamundaVariableValue;\n valueInfo?: Record<string, unknown>;\n};\n\nexport type TaskFormVariables = Record<string, TaskFormVariable>;\n\nexport type HistoryTask = {\n id: string;\n name: string;\n assignee: string;\n startTime: string;\n endTime: string;\n duration: number;\n taskState: string;\n processInstanceId: string;\n};\n\nexport type TaskQueryParams = {\n processInstanceId?: string;\n assignee?: string;\n candidateUser?: string;\n candidateGroup?: string;\n name?: string;\n nameLike?: string;\n taskDefinitionKey?: string;\n firstResult?: number;\n maxResults?: number;\n sortBy?: string;\n sortOrder?: \"asc\" | \"desc\";\n [key: string]: string | number | boolean | undefined;\n};\n\nexport type HistoryTaskQueryParams = {\n taskAssignee?: string;\n processInstanceId?: string;\n finished?: boolean;\n unfinished?: boolean;\n firstResult?: number;\n maxResults?: number;\n sortBy?: string;\n sortOrder?: \"asc\" | \"desc\";\n [key: string]: string | number | boolean | undefined;\n};\n\nexport type BpmClient = {\n startProcess(\n processKey: string,\n inputs?: Record<string, CamundaVariableValue> | VariableSubmission\n ): Promise<ClientResult<ProcessInstance>>;\n\n getProcessInstances(\n params?: ProcessInstanceQueryParams\n ): Promise<ClientResult<ProcessInstance[]>>;\n getProcessInstance(processInstanceId: string): Promise<ClientResult<ProcessInstance>>;\n deleteProcessInstance(\n processInstanceId: string,\n params?: { skipCustomListeners?: boolean }\n ): Promise<ClientResult<null>>;\n getActiveActivities(processInstanceId: string): Promise<ClientResult<ActivityInstance[]>>;\n\n getTasks(params?: TaskQueryParams): Promise<ClientResult<Task[]>>;\n getTaskCount(params?: TaskQueryParams): Promise<ClientResult<TaskCount>>;\n getTask(taskId: string): Promise<ClientResult<Task>>;\n getTaskFormSchema(\n taskId: string,\n opts?: { redirect?: string }\n ): Promise<ClientResult<TaskFormSchema>>;\n getTaskFormVariables(taskId: string): Promise<ClientResult<TaskFormVariables>>;\n completeTask(\n taskId: string,\n inputs: Record<string, CamundaVariableValue> | VariableSubmission\n ): Promise<ClientResult<null>>;\n\n getHistoryTasks(params?: HistoryTaskQueryParams): Promise<ClientResult<HistoryTask[]>>;\n getHistoryTaskCount(params?: HistoryTaskQueryParams): Promise<ClientResult<TaskCount>>;\n\n getHistoryProcessInstances(\n params?: HistoryProcessInstanceQueryParams\n ): Promise<ClientResult<HistoryProcessInstance[]>>;\n getHistoryProcessInstanceCount(\n params?: HistoryProcessInstanceQueryParams\n ): Promise<ClientResult<{ count: number }>>;\n getHistoryProcessInstance(\n processInstanceId: string\n ): Promise<ClientResult<HistoryProcessInstance>>;\n getProcessVariables(params: {\n processInstanceId: string;\n variableName?: string;\n }): Promise<ClientResult<ProcessVariable[]>>;\n};\n\nfunction isVariableSubmission(x: unknown): x is VariableSubmission {\n return (\n x !== null &&\n x !== undefined &&\n typeof x === \"object\" &&\n \"variables\" in x &&\n typeof (x as VariableSubmission).variables === \"object\" &&\n (x as VariableSubmission).variables !== null\n );\n}\n\n/**\n * Check if a string value looks like a date\n */\nfunction isDateLikeString(value: string): boolean {\n if (!value || typeof value !== \"string\") return false;\n\n // ISO 8601 formats: 2026-01-28T15:23:39.513Z, 2026-01-28T23:23, 2026-01-28\n const isoPattern = /^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[+-]\\d{4})?)?$/;\n if (isoPattern.test(value)) return true;\n\n // Try parsing as date\n const timestamp = Date.parse(value);\n return !isNaN(timestamp);\n}\n\n/**\n * Format Date value to ISO 8601 format for Camunda\n */\nfunction formatDateForCamunda(date: Date | string | number): string {\n let dateObj: Date;\n\n if (date instanceof Date) {\n dateObj = date;\n } else if (typeof date === \"number\") {\n dateObj = new Date(date);\n } else if (typeof date === \"string\") {\n dateObj = new Date(date);\n if (isNaN(dateObj.getTime())) {\n return date; // Return original if invalid\n }\n } else {\n dateObj = new Date(date as number);\n }\n\n // Format as ISO 8601: YYYY-MM-DDTHH:MM:SS.sssZ\n return dateObj.toISOString();\n}\n\nfunction inferType(value: CamundaVariableValue): CamundaVariableType | undefined {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === \"string\") {\n return \"String\";\n }\n if (typeof value === \"boolean\") {\n return \"Boolean\";\n }\n if (typeof value === \"number\") {\n return Number.isInteger(value) ? \"Long\" : \"Double\";\n }\n if (value instanceof Date) {\n return \"Date\";\n }\n if (typeof value === \"object\") {\n return \"Json\";\n }\n return undefined;\n}\n\nfunction processVariableValue(v: unknown): CamundaVariable {\n if (v && typeof v === \"object\" && \"value\" in v && (\"type\" in v || Object.keys(v).length <= 2)) {\n const variable = v as CamundaVariable;\n\n if (variable.value instanceof Date) {\n return {\n value: formatDateForCamunda(variable.value),\n type: \"Date\",\n };\n }\n\n if (\n variable.type === \"Date\" &&\n (typeof variable.value === \"string\" || typeof variable.value === \"number\")\n ) {\n return {\n value: formatDateForCamunda(variable.value),\n type: \"Date\",\n };\n }\n\n // Check if String type value looks like a date\n if (\n variable.type === \"String\" &&\n typeof variable.value === \"string\" &&\n isDateLikeString(variable.value)\n ) {\n return {\n value: formatDateForCamunda(variable.value),\n type: \"String\",\n };\n }\n\n return variable;\n }\n\n if (v instanceof Date) {\n return {\n value: formatDateForCamunda(v),\n type: \"Date\",\n };\n }\n\n const camundaValue = v as CamundaVariableValue;\n return { value: camundaValue, type: inferType(camundaValue) };\n}\n\nfunction toVariableSubmission(\n inputs?: Record<string, CamundaVariableValue> | VariableSubmission\n): VariableSubmission {\n if (!inputs) {\n return { variables: {} };\n }\n\n if (isVariableSubmission(inputs)) {\n const variables: Record<string, CamundaVariable> = {};\n for (const [k, v] of Object.entries(inputs.variables)) {\n variables[k] = processVariableValue(v);\n }\n return { variables };\n }\n\n const variables: Record<string, CamundaVariable> = {};\n for (const [k, v] of Object.entries(inputs)) {\n variables[k] = processVariableValue(v);\n }\n\n return { variables };\n}\n\nfunction encodeQuery(params?: Record<string, string | number | boolean | undefined>): string {\n if (!params) {\n return \"\";\n }\n const sp = new URLSearchParams();\n for (const [k, v] of Object.entries(params)) {\n if (v === undefined || v === null) {\n continue;\n }\n sp.append(k, String(v));\n }\n const q = sp.toString();\n return q ? `?${q}` : \"\";\n}\n\nfunction noContentToNull<T>(r: ClientResult<T>): ClientResult<T | null> {\n if (r.status === 204) {\n return { ...r, data: null };\n }\n return r;\n}\n\nexport function createBpmClient(http: HttpClient = createHttpClient()): BpmClient {\n return {\n startProcess(\n processKey: string,\n inputs?: Record<string, CamundaVariableValue> | VariableSubmission\n ): Promise<ClientResult<ProcessInstance>> {\n if (!processKey) {\n return Promise.resolve({\n data: null,\n error: { message: \"Process key is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<ProcessInstance>({\n url: `/api/bpm/start/${processKey}`,\n method: \"post\",\n headers: { \"Content-Type\": \"application/json\" },\n data: toVariableSubmission(inputs),\n });\n },\n\n getProcessInstances(\n params?: ProcessInstanceQueryParams\n ): Promise<ClientResult<ProcessInstance[]>> {\n return http.request<ProcessInstance[]>({\n url: `/api/bpm/process-instance${encodeQuery(params)}`,\n method: \"get\",\n });\n },\n\n getProcessInstance(processInstanceId: string): Promise<ClientResult<ProcessInstance>> {\n if (!processInstanceId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Process instance ID is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<ProcessInstance>({\n url: `/api/bpm/process-instance/${processInstanceId}`,\n method: \"get\",\n });\n },\n\n async deleteProcessInstance(\n processInstanceId: string,\n params?: { skipCustomListeners?: boolean }\n ): Promise<ClientResult<null>> {\n if (!processInstanceId) {\n return {\n data: null,\n error: { message: \"Process instance ID is required\", status: 400 },\n status: 400,\n };\n }\n const q = params?.skipCustomListeners ? \"?skipCustomListeners=true\" : \"\";\n const result = await http.request<null>({\n url: `/api/bpm/process-instance/${processInstanceId}${q}`,\n method: \"delete\",\n });\n return noContentToNull(result) as ClientResult<null>;\n },\n\n getActiveActivities(processInstanceId: string): Promise<ClientResult<ActivityInstance[]>> {\n if (!processInstanceId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Process instance ID is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<ActivityInstance[]>({\n url: `/api/bpm/process-instance/${processInstanceId}/activity-instances`,\n method: \"get\",\n });\n },\n\n getTasks(params?: TaskQueryParams): Promise<ClientResult<Task[]>> {\n const tenantId = getTenantId();\n const queryParams = tenantId ? { ...params, tenantIdIn: tenantId } : params;\n return http.request<Task[]>({\n url: `/api/bpm/task${encodeQuery(queryParams)}`,\n method: \"get\",\n });\n },\n\n getTaskCount(params?: TaskQueryParams): Promise<ClientResult<TaskCount>> {\n const tenantId = getTenantId();\n const queryParams = tenantId ? { ...params, tenantIdIn: tenantId } : params;\n return http.request<TaskCount>({\n url: `/api/bpm/task/count${encodeQuery(queryParams)}`,\n method: \"get\",\n });\n },\n\n getTask(taskId: string): Promise<ClientResult<Task>> {\n if (!taskId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Task ID is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<Task>({\n url: `/api/bpm/task/${taskId}`,\n method: \"get\",\n });\n },\n\n getTaskFormSchema(\n taskId: string,\n opts?: { redirect?: string }\n ): Promise<ClientResult<TaskFormSchema>> {\n if (!taskId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Task ID is required\", status: 400 },\n status: 400,\n });\n }\n const q = encodeQuery(opts?.redirect ? { redirect: opts.redirect } : undefined);\n return http.request<TaskFormSchema>({\n url: `/api/bpm/task/${taskId}/form-schema${q}`,\n method: \"get\",\n });\n },\n\n getTaskFormVariables(taskId: string): Promise<ClientResult<TaskFormVariables>> {\n if (!taskId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Task ID is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<TaskFormVariables>({\n url: `/api/bpm/task/${taskId}/form-variables`,\n method: \"get\",\n });\n },\n\n async completeTask(\n taskId: string,\n inputs: Record<string, CamundaVariableValue> | VariableSubmission\n ): Promise<ClientResult<null>> {\n if (!taskId) {\n return {\n data: null,\n error: { message: \"Task ID is required\", status: 400 },\n status: 400,\n };\n }\n const r = await http.request<null>({\n url: `/api/bpm/task/${taskId}/complete`,\n method: \"post\",\n headers: { \"Content-Type\": \"application/json\" },\n data: toVariableSubmission(inputs),\n });\n return noContentToNull(r) as ClientResult<null>;\n },\n\n getHistoryTasks(params?: HistoryTaskQueryParams): Promise<ClientResult<HistoryTask[]>> {\n const tenantId = getTenantId();\n const queryParams = tenantId ? { ...params, tenantIdIn: tenantId } : params;\n return http.request<HistoryTask[]>({\n url: `/api/bpm/history/task${encodeQuery(queryParams)}`,\n method: \"get\",\n });\n },\n\n getHistoryTaskCount(params?: HistoryTaskQueryParams): Promise<ClientResult<TaskCount>> {\n const tenantId = getTenantId();\n const queryParams = tenantId ? { ...params, tenantIdIn: tenantId } : params;\n return http.request<TaskCount>({\n url: `/api/bpm/history/task/count${encodeQuery(queryParams)}`,\n method: \"get\",\n });\n },\n\n getHistoryProcessInstances(\n params?: HistoryProcessInstanceQueryParams\n ): Promise<ClientResult<HistoryProcessInstance[]>> {\n return http.request<HistoryProcessInstance[]>({\n url: `/api/bpm/history/process-instance${encodeQuery(params)}`,\n method: \"get\",\n });\n },\n\n getHistoryProcessInstanceCount(\n params?: HistoryProcessInstanceQueryParams\n ): Promise<ClientResult<{ count: number }>> {\n return http.request<{ count: number }>({\n url: `/api/bpm/history/process-instance/count${encodeQuery(params)}`,\n method: \"get\",\n });\n },\n\n getHistoryProcessInstance(\n processInstanceId: string\n ): Promise<ClientResult<HistoryProcessInstance>> {\n if (!processInstanceId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Process instance ID is required\", status: 400 },\n status: 400,\n });\n }\n return http.request<HistoryProcessInstance>({\n url: `/api/bpm/history/process-instance/${processInstanceId}`,\n method: \"get\",\n });\n },\n\n getProcessVariables(params: {\n processInstanceId: string;\n variableName?: string;\n }): Promise<ClientResult<ProcessVariable[]>> {\n if (!params.processInstanceId) {\n return Promise.resolve({\n data: null,\n error: { message: \"Process instance ID is required\", status: 400 },\n status: 400,\n });\n }\n const q = encodeQuery(params);\n return http.request<ProcessVariable[]>({\n url: `/api/bpm/history/variable-instance${q}`,\n method: \"get\",\n });\n },\n };\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amaster.ai/bpm-client",
3
- "version": "1.0.0-beta.7",
3
+ "version": "1.0.0-beta.8",
4
4
  "description": "Camunda 7 BPM process engine client",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -31,7 +31,7 @@
31
31
  "registry": "https://registry.npmjs.org/"
32
32
  },
33
33
  "dependencies": {
34
- "@amaster.ai/http-client": "1.0.0-beta.7"
34
+ "@amaster.ai/http-client": "1.0.0-beta.8"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "axios": "^1.11.0"