import { Doc, Mixin, Ref } from '@hcengineering/core' import type { Plugin, Resource } from '@hcengineering/platform' import { plugin } from '@hcengineering/platform' import { Execution, Method, ProcessFunction, Trigger } from '@hcengineering/process' import { TriggerFunc } from '@hcengineering/server-core' import { ExecuteFunc, ProcessControl, RollbackFunc, TransformFunc } from './types' export * from './types' /** * @public */ export const serverProcessId = 'server-process' as Plugin export type CheckFunc = ( control: ProcessControl, execution: Execution, params: Record, context: Record ) => Promise export interface TriggerImpl extends Trigger { serverCheckFunc?: Resource rollbackFunc?: Resource preventRollback?: boolean } export interface MethodImpl extends Method { func: Resource } export interface FuncImpl extends ProcessFunction { func: Resource } /** * @public */ export default plugin(serverProcessId, { mixin: { MethodImpl: '' as Ref>>, FuncImpl: '' as Ref>, TriggerImpl: '' as Ref> }, rollbacks: { ToDoCloseRollback: '' as Resource, ToDoCancellRollback: '' as Resource }, func: { RunSubProcess: '' as Resource, CreateToDo: '' as Resource, UpdateCard: '' as Resource, CreateCard: '' as Resource, AddRelation: '' as Resource, WaitSubProcess: '' as Resource, AddTag: '' as Resource, CheckToDoDone: '' as Resource, CheckToDoCancelled: '' as Resource, MatchCardCheck: '' as Resource, FieldChangedCheck: '' as Resource, CheckSubProcessesDone: '' as Resource, CheckSubProcessMatch: '' as Resource, CheckTime: '' as Resource }, transform: { FirstValue: '' as Resource, LastValue: '' as Resource, Random: '' as Resource, All: '' as Resource, UpperCase: '' as Resource, LowerCase: '' as Resource, Trim: '' as Resource, Prepend: '' as Resource, Append: '' as Resource, Replace: '' as Resource, ReplaceAll: '' as Resource, Split: '' as Resource, Cut: '' as Resource, Add: '' as Resource, Subtract: '' as Resource, Multiply: '' as Resource, Divide: '' as Resource, Modulo: '' as Resource, Power: '' as Resource, Sqrt: '' as Resource, Round: '' as Resource, Absolute: '' as Resource, Ceil: '' as Resource, Floor: '' as Resource, Offset: '' as Resource, FirstWorkingDayAfter: '' as Resource, RoleContext: '' as Resource, Insert: '' as Resource, Remove: '' as Resource, RemoveFirst: '' as Resource, RemoveLast: '' as Resource, CurrentUser: '' as Resource, CurrentDate: '' as Resource, EmptyArray: '' as Resource, Filter: '' as Resource, FirstMatchValue: '' as Resource, ExecutionInitiator: '' as Resource, ExecutionStarted: '' as Resource }, trigger: { OnTransition: '' as Resource, OnCardUpdate: '' as Resource, OnProcessRemove: '' as Resource, OnStateRemove: '' as Resource, OnExecutionCreate: '' as Resource, OnProcessToDoClose: '' as Resource, OnProcessToDoRemove: '' as Resource, OnExecutionContinue: '' as Resource } })