@things-factory/process 9.0.0-beta.8 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist-client/pages/event/event-importer.js +16 -17
  2. package/dist-client/pages/event/event-importer.js.map +1 -1
  3. package/dist-client/pages/event/event-list-page.js +35 -28
  4. package/dist-client/pages/event/event-list-page.js.map +1 -1
  5. package/dist-client/pages/gateway/gateway-importer.js +16 -17
  6. package/dist-client/pages/gateway/gateway-importer.js.map +1 -1
  7. package/dist-client/pages/gateway/gateway-list-page.js +35 -28
  8. package/dist-client/pages/gateway/gateway-list-page.js.map +1 -1
  9. package/dist-client/pages/process/process-importer.js +16 -17
  10. package/dist-client/pages/process/process-importer.js.map +1 -1
  11. package/dist-client/pages/process/process-list-page.js +35 -28
  12. package/dist-client/pages/process/process-list-page.js.map +1 -1
  13. package/dist-client/pages/process-instance/process-instance-importer.js +16 -17
  14. package/dist-client/pages/process-instance/process-instance-importer.js.map +1 -1
  15. package/dist-client/pages/process-instance/process-instance-list-page.js +35 -28
  16. package/dist-client/pages/process-instance/process-instance-list-page.js.map +1 -1
  17. package/dist-client/pages/process-thread/process-thread-importer.js +16 -17
  18. package/dist-client/pages/process-thread/process-thread-importer.js.map +1 -1
  19. package/dist-client/pages/process-thread/process-thread-list-page.js +35 -28
  20. package/dist-client/pages/process-thread/process-thread-list-page.js.map +1 -1
  21. package/dist-client/reducers/main.js +1 -1
  22. package/dist-client/reducers/main.js.map +1 -1
  23. package/dist-client/tsconfig.tsbuildinfo +1 -1
  24. package/dist-server/controllers/common.js +6 -2
  25. package/dist-server/controllers/common.js.map +1 -1
  26. package/dist-server/controllers/process-instance/abort.js +9 -1
  27. package/dist-server/controllers/process-instance/abort.js.map +1 -1
  28. package/dist-server/controllers/process-instance/end.js +10 -2
  29. package/dist-server/controllers/process-instance/end.js.map +1 -1
  30. package/dist-server/controllers/process-thread/_abort.js +9 -1
  31. package/dist-server/controllers/process-thread/_abort.js.map +1 -1
  32. package/dist-server/controllers/process-thread/end.js +9 -2
  33. package/dist-server/controllers/process-thread/end.js.map +1 -1
  34. package/dist-server/controllers/process-thread/start.js +7 -1
  35. package/dist-server/controllers/process-thread/start.js.map +1 -1
  36. package/dist-server/service/process/process-mutation.js +25 -7
  37. package/dist-server/service/process/process-mutation.js.map +1 -1
  38. package/dist-server/service/process/process-query.js +1 -1
  39. package/dist-server/service/process/process-query.js.map +1 -1
  40. package/dist-server/service/process-instance/process-instance-query.js +2 -3
  41. package/dist-server/service/process-instance/process-instance-query.js.map +1 -1
  42. package/dist-server/service/process-instance/process-instance-subscription.js +3 -4
  43. package/dist-server/service/process-instance/process-instance-subscription.js.map +1 -1
  44. package/dist-server/service/process-thread/process-thread-subscription.js +3 -4
  45. package/dist-server/service/process-thread/process-thread-subscription.js.map +1 -1
  46. package/dist-server/tsconfig.tsbuildinfo +1 -1
  47. package/package.json +11 -14
@@ -12,7 +12,11 @@ async function updateProcessInstanceState(id, context) {
12
12
  where: { id },
13
13
  relations: ['domain', 'process', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']
14
14
  });
15
- processInstance = await tx.getRepository(process_instance_1.ProcessInstance).save(Object.assign(Object.assign(Object.assign({}, processInstance), { transaction: 'thread' /* change by transaction of process thread */ }), (await evalProcessInstanceState(id, context))));
15
+ processInstance = await tx.getRepository(process_instance_1.ProcessInstance).save({
16
+ ...processInstance,
17
+ transaction: 'thread' /* change by transaction of process thread */,
18
+ ...(await evalProcessInstanceState(id, context))
19
+ });
16
20
  }
17
21
  async function evalProcessInstanceState(id, context) {
18
22
  const { tx, user } = context.state;
@@ -58,7 +62,7 @@ function fillProcessSearchKeys(searchKeys, input) {
58
62
  if (!input || typeof input !== 'object') {
59
63
  return;
60
64
  }
61
- return searchKeys === null || searchKeys === void 0 ? void 0 : searchKeys.reduce((sum, key, index) => {
65
+ return searchKeys?.reduce((sum, key, index) => {
62
66
  const value = input[key.inputKey];
63
67
  if (value != null) {
64
68
  sum[`key0${index + 1}`] = value instanceof Array ? value[0] : value;
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../server/controllers/common.ts"],"names":[],"mappings":"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","sourcesContent":["import { Role, User } from '@things-factory/auth-base'\n\nimport { ProcessSearchKeyItem } from '../service/process/process-search-key-item-type'\nimport { ProcessInstance, ProcessInstanceStatus } from '../service/process-instance/process-instance'\nimport { ProcessThread, ProcessThreadStatus } from '../service/process-thread/process-thread'\n\nexport async function updateProcessInstanceState(id: string, context: ResolverContext) {\n const { tx } = context.state\n\n var processInstance = await tx.getRepository(ProcessInstance).findOne({\n where: { id },\n relations: ['domain', 'process', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']\n })\n\n processInstance = await tx.getRepository(ProcessInstance).save({\n ...processInstance,\n transaction: 'thread' /* change by transaction of process thread */,\n ...(await evalProcessInstanceState(id, context))\n })\n}\n\nexport async function evalProcessInstanceState(\n id: string,\n context: ResolverContext\n): Promise<Partial<ProcessInstance>> {\n const { tx, user } = context.state\n\n const processInstance = await tx.getRepository(ProcessInstance).findOne({\n where: { id },\n relations: ['processThreads', 'process']\n })\n const { processThreads, state } = processInstance\n\n switch (true) {\n case state === ProcessInstanceStatus.Ended:\n case state === ProcessInstanceStatus.Aborted:\n return {}\n default:\n return {\n state: processThreads.find(thread => thread.state == ProcessThreadStatus.Aborted)\n ? ProcessInstanceStatus.Aborted\n : ProcessInstanceStatus.Ended,\n reason: '',\n terminatedAt: new Date()\n }\n }\n}\n\nexport async function createProcessThreadForUser(\n transaction: string,\n processInstance: ProcessInstance,\n assignee: User,\n context: ResolverContext\n): Promise<ProcessThread> {\n const { domain, user, tx } = context.state\n\n const threadRepo = tx.getRepository(ProcessThread)\n const now = new Date()\n\n const result = await threadRepo.save({\n domain,\n assignee,\n state: ProcessThreadStatus.Assigned,\n processInstance,\n transaction,\n dueAt: processInstance.dueAt,\n assignedAt: now,\n creator: user,\n updater: user,\n createdAt: now\n })\n\n await updateProcessInstanceState(processInstance.id, context)\n\n return result\n}\n\nexport function fillProcessSearchKeys(searchKeys: ProcessSearchKeyItem[], input: { [key: string]: any }) {\n if (!input || typeof input !== 'object') {\n return\n }\n\n return searchKeys?.reduce((sum, key, index) => {\n const value = input[key.inputKey]\n if (value != null) {\n sum[`key0${index + 1}`] = value instanceof Array ? value[0] : value\n }\n return sum\n }, {})\n}\n"]}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../server/controllers/common.ts"],"names":[],"mappings":"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","sourcesContent":["import { Role, User } from '@things-factory/auth-base'\n\nimport { ProcessSearchKeyItem } from '../service/process/process-search-key-item-type'\nimport { ProcessInstance, ProcessInstanceStatus } from '../service/process-instance/process-instance'\nimport { ProcessThread, ProcessThreadStatus } from '../service/process-thread/process-thread'\n\nexport async function updateProcessInstanceState(id: string, context: ResolverContext) {\n const { tx } = context.state\n\n var processInstance = await tx.getRepository(ProcessInstance).findOne({\n where: { id },\n relations: ['domain', 'process', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']\n })\n\n processInstance = await tx.getRepository(ProcessInstance).save({\n ...processInstance,\n transaction: 'thread' /* change by transaction of process thread */,\n ...(await evalProcessInstanceState(id, context))\n })\n}\n\nexport async function evalProcessInstanceState(\n id: string,\n context: ResolverContext\n): Promise<Partial<ProcessInstance>> {\n const { tx, user } = context.state\n\n const processInstance = await tx.getRepository(ProcessInstance).findOne({\n where: { id },\n relations: ['processThreads', 'process']\n })\n const { processThreads, state } = processInstance\n\n switch (true) {\n case state === ProcessInstanceStatus.Ended:\n case state === ProcessInstanceStatus.Aborted:\n return {}\n default:\n return {\n state: processThreads.find(thread => thread.state == ProcessThreadStatus.Aborted)\n ? ProcessInstanceStatus.Aborted\n : ProcessInstanceStatus.Ended,\n reason: '',\n terminatedAt: new Date()\n }\n }\n}\n\nexport async function createProcessThreadForUser(\n transaction: string,\n processInstance: ProcessInstance,\n assignee: User,\n context: ResolverContext\n): Promise<ProcessThread> {\n const { domain, user, tx } = context.state\n\n const threadRepo = tx.getRepository(ProcessThread)\n const now = new Date()\n\n const result = await threadRepo.save({\n domain,\n assignee,\n state: ProcessThreadStatus.Assigned,\n processInstance,\n transaction,\n dueAt: processInstance.dueAt,\n assignedAt: now,\n creator: user,\n updater: user,\n createdAt: now\n })\n\n await updateProcessInstanceState(processInstance.id, context)\n\n return result\n}\n\nexport function fillProcessSearchKeys(searchKeys: ProcessSearchKeyItem[], input: { [key: string]: any }) {\n if (!input || typeof input !== 'object') {\n return\n }\n\n return searchKeys?.reduce((sum, key, index) => {\n const value = input[key.inputKey]\n if (value != null) {\n sum[`key0${index + 1}`] = value instanceof Array ? value[0] : value\n }\n return sum\n }, {})\n}\n"]}
@@ -48,6 +48,14 @@ async function abort({ id, reason }, context) {
48
48
  }
49
49
  await (0, _abort_1._abort)({ processThread, reason }, context);
50
50
  }
51
- return await repository.save(Object.assign(Object.assign(Object.assign(Object.assign({}, processInstance), { reason }), (await (0, common_1.evalProcessInstanceState)(id, context))), { transaction: 'abort', updater: user, terminatedAt: new Date(), terminator: user }));
51
+ return await repository.save({
52
+ ...processInstance,
53
+ reason,
54
+ ...(await (0, common_1.evalProcessInstanceState)(id, context)),
55
+ transaction: 'abort',
56
+ updater: user,
57
+ terminatedAt: new Date(),
58
+ terminator: user
59
+ });
52
60
  }
53
61
  //# sourceMappingURL=abort.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"abort.js","sourceRoot":"","sources":["../../../server/controllers/process-instance/abort.ts"],"names":[],"mappings":";;AAMA,sBAoEC;AA1ED,gFAAiF;AACjF,sFAAwG;AACxG,sCAAoD;AAEpD,qDAAuE;AAEhE,KAAK,UAAU,KAAK,CACzB,EAAE,EAAE,EAAE,MAAM,EAAkC,EAC9C,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,IAAI,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,kCAAe,CAAC,CAAA;IAElD,IAAI,eAAe,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC7C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACxC,SAAS,EAAE;YACT,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,cAAc;YACd,iBAAiB;YACjB,SAAS;YACT,SAAS;YACT,SAAS;YACT,YAAY;SACb;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,kCAAkC,EAAE;YAC5C,eAAe,EAAE,EAAE;SACpB,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;MAGE;IACF,IAAI,eAAe,CAAC,KAAK,IAAI,wCAAqB,CAAC,OAAO,IAAI,eAAe,CAAC,KAAK,IAAI,wCAAqB,CAAC,KAAK,EAAE,CAAC;QACnH,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,8CAA8C,EAAE;YACxD,EAAE;YACF,KAAK,EAAE,eAAe,CAAC,KAAK;SAC7B,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;MAGE;IAEF,MAAM,UAAU,GAAG,CAAC,oCAAmB,CAAC,OAAO,EAAE,oCAAmB,CAAC,SAAS,EAAE,oCAAmB,CAAC,KAAK,CAAC,CAAA;IAE1G,KAAK,IAAI,aAAa,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC;QACzD,IAAI,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,SAAQ;QACV,CAAC;QAED,MAAM,IAAA,eAAkB,EAAC,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,6DACvB,eAAe,KAClB,MAAM,KACH,CAAC,MAAM,IAAA,iCAAwB,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC,KAChD,WAAW,EAAE,OAAO,EACpB,OAAO,EAAE,IAAI,EACb,YAAY,EAAE,IAAI,IAAI,EAAE,EACxB,UAAU,EAAE,IAAI,IAChB,CAAA;AACJ,CAAC","sourcesContent":["import { ProcessThreadStatus } from '../../service/process-thread/process-thread'\nimport { ProcessInstance, ProcessInstanceStatus } from '../../service/process-instance/process-instance'\nimport { evalProcessInstanceState } from '../common'\n\nimport { _abort as abortProcessThread } from '../process-thread/_abort'\n\nexport async function abort(\n { id, reason }: { id: string; reason: string },\n context: ResolverContext\n): Promise<ProcessInstance> {\n const { domain, user, tx } = context.state\n\n var repository = tx.getRepository(ProcessInstance)\n\n var processInstance = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: [\n 'domain',\n 'process',\n 'processThreads',\n 'assigneeRole',\n 'supervisoryRole',\n 'updater',\n 'creator',\n 'starter',\n 'terminator'\n ]\n })\n\n if (!processInstance) {\n throw new Error(\n context.t('error.process-instance not found', {\n processInstance: id\n })\n )\n }\n\n /* \n Prerequisites for a Task to Be Aborted.\n - The previous state of the task must not be End or Aborted.\n */\n if (processInstance.state == ProcessInstanceStatus.Aborted || processInstance.state == ProcessInstanceStatus.Ended) {\n throw new Error(\n context.t(`error.process-instance is already terminated`, {\n id,\n state: processInstance.state\n })\n )\n }\n\n /* \n Actions to be processed when a task is aborted\n - All related process threads must be aborted.\n */\n\n const TERMINATED = [ProcessThreadStatus.Aborted, ProcessThreadStatus.Delegated, ProcessThreadStatus.Ended]\n\n for (let processThread of processInstance.processThreads) {\n if (TERMINATED.includes(processThread.state)) {\n continue\n }\n\n await abortProcessThread({ processThread, reason }, context)\n }\n\n return await repository.save({\n ...processInstance,\n reason,\n ...(await evalProcessInstanceState(id, context)),\n transaction: 'abort',\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n })\n}\n"]}
1
+ {"version":3,"file":"abort.js","sourceRoot":"","sources":["../../../server/controllers/process-instance/abort.ts"],"names":[],"mappings":";;AAMA,sBAoEC;AA1ED,gFAAiF;AACjF,sFAAwG;AACxG,sCAAoD;AAEpD,qDAAuE;AAEhE,KAAK,UAAU,KAAK,CACzB,EAAE,EAAE,EAAE,MAAM,EAAkC,EAC9C,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,IAAI,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,kCAAe,CAAC,CAAA;IAElD,IAAI,eAAe,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC7C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACxC,SAAS,EAAE;YACT,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,cAAc;YACd,iBAAiB;YACjB,SAAS;YACT,SAAS;YACT,SAAS;YACT,YAAY;SACb;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,kCAAkC,EAAE;YAC5C,eAAe,EAAE,EAAE;SACpB,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;MAGE;IACF,IAAI,eAAe,CAAC,KAAK,IAAI,wCAAqB,CAAC,OAAO,IAAI,eAAe,CAAC,KAAK,IAAI,wCAAqB,CAAC,KAAK,EAAE,CAAC;QACnH,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,8CAA8C,EAAE;YACxD,EAAE;YACF,KAAK,EAAE,eAAe,CAAC,KAAK;SAC7B,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;MAGE;IAEF,MAAM,UAAU,GAAG,CAAC,oCAAmB,CAAC,OAAO,EAAE,oCAAmB,CAAC,SAAS,EAAE,oCAAmB,CAAC,KAAK,CAAC,CAAA;IAE1G,KAAK,IAAI,aAAa,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC;QACzD,IAAI,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,SAAQ;QACV,CAAC;QAED,MAAM,IAAA,eAAkB,EAAC,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC;QAC3B,GAAG,eAAe;QAClB,MAAM;QACN,GAAG,CAAC,MAAM,IAAA,iCAAwB,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAChD,WAAW,EAAE,OAAO;QACpB,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,IAAI,IAAI,EAAE;QACxB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { ProcessThreadStatus } from '../../service/process-thread/process-thread'\nimport { ProcessInstance, ProcessInstanceStatus } from '../../service/process-instance/process-instance'\nimport { evalProcessInstanceState } from '../common'\n\nimport { _abort as abortProcessThread } from '../process-thread/_abort'\n\nexport async function abort(\n { id, reason }: { id: string; reason: string },\n context: ResolverContext\n): Promise<ProcessInstance> {\n const { domain, user, tx } = context.state\n\n var repository = tx.getRepository(ProcessInstance)\n\n var processInstance = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: [\n 'domain',\n 'process',\n 'processThreads',\n 'assigneeRole',\n 'supervisoryRole',\n 'updater',\n 'creator',\n 'starter',\n 'terminator'\n ]\n })\n\n if (!processInstance) {\n throw new Error(\n context.t('error.process-instance not found', {\n processInstance: id\n })\n )\n }\n\n /* \n Prerequisites for a Task to Be Aborted.\n - The previous state of the task must not be End or Aborted.\n */\n if (processInstance.state == ProcessInstanceStatus.Aborted || processInstance.state == ProcessInstanceStatus.Ended) {\n throw new Error(\n context.t(`error.process-instance is already terminated`, {\n id,\n state: processInstance.state\n })\n )\n }\n\n /* \n Actions to be processed when a task is aborted\n - All related process threads must be aborted.\n */\n\n const TERMINATED = [ProcessThreadStatus.Aborted, ProcessThreadStatus.Delegated, ProcessThreadStatus.Ended]\n\n for (let processThread of processInstance.processThreads) {\n if (TERMINATED.includes(processThread.state)) {\n continue\n }\n\n await abortProcessThread({ processThread, reason }, context)\n }\n\n return await repository.save({\n ...processInstance,\n reason,\n ...(await evalProcessInstanceState(id, context)),\n transaction: 'abort',\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n })\n}\n"]}
@@ -47,7 +47,15 @@ async function end({ id, output, reason }, context) {
47
47
  state: processInstance.state
48
48
  }));
49
49
  }
50
- return await repository.save(Object.assign(Object.assign({}, processInstance), { reason,
51
- output, transaction: 'end', state: await (0, common_1.evalProcessInstanceState)(id, context), updater: user, terminatedAt: new Date(), terminator: user }));
50
+ return await repository.save({
51
+ ...processInstance,
52
+ reason,
53
+ output,
54
+ transaction: 'end',
55
+ state: await (0, common_1.evalProcessInstanceState)(id, context),
56
+ updater: user,
57
+ terminatedAt: new Date(),
58
+ terminator: user
59
+ });
52
60
  }
53
61
  //# sourceMappingURL=end.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"end.js","sourceRoot":"","sources":["../../../server/controllers/process-instance/end.ts"],"names":[],"mappings":";;AAIA,kBAqEC;AAzED,sFAAwG;AACxG,gFAAiF;AACjF,sCAAoD;AAE7C,KAAK,UAAU,GAAG,CACvB,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAoD,EACxE,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC1C,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,kCAAe,CAAC,CAAA;IAEpD,IAAI,eAAe,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC7C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACxC,SAAS,EAAE;YACT,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,cAAc;YACd,iBAAiB;YACjB,SAAS;YACT,SAAS;YACT,SAAS;YACT,YAAY;SACb;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,kCAAkC,EAAE;YAC5C,eAAe,EAAE,EAAE;SACpB,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;;MAIE;IACF,IAAI,eAAe,CAAC,KAAK,IAAI,wCAAqB,CAAC,OAAO,IAAI,eAAe,CAAC,KAAK,IAAI,wCAAqB,CAAC,KAAK,EAAE,CAAC;QACnH,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,8CAA8C,EAAE;YACxD,EAAE;YACF,KAAK,EAAE,eAAe,CAAC,KAAK;SAC7B,CAAC,CACH,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,oCAAmB,CAAC,OAAO,EAAE,oCAAmB,CAAC,SAAS,EAAE,oCAAmB,CAAC,KAAK,CAAC,CAAA;IAE1G,KAAK,IAAI,aAAa,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC;QACzD,IAAI,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,SAAQ;QACV,CAAC;QAED,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,gDAAgD,EAAE;YAC1D,aAAa,EAAE,aAAa,CAAC,EAAE;YAC/B,KAAK,EAAE,eAAe,CAAC,KAAK;SAC7B,CAAC,CACH,CAAA;IACH,CAAC;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC,gCACxB,eAAe,KAClB,MAAM;QACN,MAAM,EACN,WAAW,EAAE,KAAK,EAClB,KAAK,EAAE,MAAM,IAAA,iCAAwB,EAAC,EAAE,EAAE,OAAO,CAAC,EAClD,OAAO,EAAE,IAAI,EACb,YAAY,EAAE,IAAI,IAAI,EAAE,EACxB,UAAU,EAAE,IAAI,GACV,CAAC,CAAA;AACX,CAAC","sourcesContent":["import { ProcessInstance, ProcessInstanceStatus } from '../../service/process-instance/process-instance'\nimport { ProcessThreadStatus } from '../../service/process-thread/process-thread'\nimport { evalProcessInstanceState } from '../common'\n\nexport async function end(\n { id, output, reason }: { id: string; output?: object; reason?: string },\n context: ResolverContext\n): Promise<ProcessInstance> {\n const { domain, user, tx } = context.state\n const repository = tx.getRepository(ProcessInstance)\n\n var processInstance = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: [\n 'domain',\n 'process',\n 'processThreads',\n 'assigneeRole',\n 'supervisoryRole',\n 'updater',\n 'creator',\n 'starter',\n 'terminator'\n ]\n })\n\n if (!processInstance) {\n throw new Error(\n context.t('error.process-instance not found', {\n processInstance: id\n })\n )\n }\n\n /* \n Prerequisites for a Task to Be End.\n - The previous state of the task must not be End or Aborted.\n - There should be no unfinished process threads.\n */\n if (processInstance.state == ProcessInstanceStatus.Aborted || processInstance.state == ProcessInstanceStatus.Ended) {\n throw new Error(\n context.t(`error.process-instance is already terminated`, {\n id,\n state: processInstance.state\n })\n )\n }\n\n const TERMINATED = [ProcessThreadStatus.Aborted, ProcessThreadStatus.Delegated, ProcessThreadStatus.Ended]\n\n for (let processThread of processInstance.processThreads) {\n if (TERMINATED.includes(processThread.state)) {\n continue\n }\n\n throw new Error(\n context.t(`error.all process threads should be terminated`, {\n processThread: processThread.id,\n state: processInstance.state\n })\n )\n }\n\n return await repository.save({\n ...processInstance,\n reason,\n output,\n transaction: 'end',\n state: await evalProcessInstanceState(id, context),\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n } as any)\n}\n"]}
1
+ {"version":3,"file":"end.js","sourceRoot":"","sources":["../../../server/controllers/process-instance/end.ts"],"names":[],"mappings":";;AAIA,kBAqEC;AAzED,sFAAwG;AACxG,gFAAiF;AACjF,sCAAoD;AAE7C,KAAK,UAAU,GAAG,CACvB,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAoD,EACxE,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC1C,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,kCAAe,CAAC,CAAA;IAEpD,IAAI,eAAe,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC7C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACxC,SAAS,EAAE;YACT,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,cAAc;YACd,iBAAiB;YACjB,SAAS;YACT,SAAS;YACT,SAAS;YACT,YAAY;SACb;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,kCAAkC,EAAE;YAC5C,eAAe,EAAE,EAAE;SACpB,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;;MAIE;IACF,IAAI,eAAe,CAAC,KAAK,IAAI,wCAAqB,CAAC,OAAO,IAAI,eAAe,CAAC,KAAK,IAAI,wCAAqB,CAAC,KAAK,EAAE,CAAC;QACnH,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,8CAA8C,EAAE;YACxD,EAAE;YACF,KAAK,EAAE,eAAe,CAAC,KAAK;SAC7B,CAAC,CACH,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,oCAAmB,CAAC,OAAO,EAAE,oCAAmB,CAAC,SAAS,EAAE,oCAAmB,CAAC,KAAK,CAAC,CAAA;IAE1G,KAAK,IAAI,aAAa,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC;QACzD,IAAI,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,SAAQ;QACV,CAAC;QAED,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,gDAAgD,EAAE;YAC1D,aAAa,EAAE,aAAa,CAAC,EAAE;YAC/B,KAAK,EAAE,eAAe,CAAC,KAAK;SAC7B,CAAC,CACH,CAAA;IACH,CAAC;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC;QAC3B,GAAG,eAAe;QAClB,MAAM;QACN,MAAM;QACN,WAAW,EAAE,KAAK;QAClB,KAAK,EAAE,MAAM,IAAA,iCAAwB,EAAC,EAAE,EAAE,OAAO,CAAC;QAClD,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,IAAI,IAAI,EAAE;QACxB,UAAU,EAAE,IAAI;KACV,CAAC,CAAA;AACX,CAAC","sourcesContent":["import { ProcessInstance, ProcessInstanceStatus } from '../../service/process-instance/process-instance'\nimport { ProcessThreadStatus } from '../../service/process-thread/process-thread'\nimport { evalProcessInstanceState } from '../common'\n\nexport async function end(\n { id, output, reason }: { id: string; output?: object; reason?: string },\n context: ResolverContext\n): Promise<ProcessInstance> {\n const { domain, user, tx } = context.state\n const repository = tx.getRepository(ProcessInstance)\n\n var processInstance = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: [\n 'domain',\n 'process',\n 'processThreads',\n 'assigneeRole',\n 'supervisoryRole',\n 'updater',\n 'creator',\n 'starter',\n 'terminator'\n ]\n })\n\n if (!processInstance) {\n throw new Error(\n context.t('error.process-instance not found', {\n processInstance: id\n })\n )\n }\n\n /* \n Prerequisites for a Task to Be End.\n - The previous state of the task must not be End or Aborted.\n - There should be no unfinished process threads.\n */\n if (processInstance.state == ProcessInstanceStatus.Aborted || processInstance.state == ProcessInstanceStatus.Ended) {\n throw new Error(\n context.t(`error.process-instance is already terminated`, {\n id,\n state: processInstance.state\n })\n )\n }\n\n const TERMINATED = [ProcessThreadStatus.Aborted, ProcessThreadStatus.Delegated, ProcessThreadStatus.Ended]\n\n for (let processThread of processInstance.processThreads) {\n if (TERMINATED.includes(processThread.state)) {\n continue\n }\n\n throw new Error(\n context.t(`error.all process threads should be terminated`, {\n processThread: processThread.id,\n state: processInstance.state\n })\n )\n }\n\n return await repository.save({\n ...processInstance,\n reason,\n output,\n transaction: 'end',\n state: await evalProcessInstanceState(id, context),\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n } as any)\n}\n"]}
@@ -5,6 +5,14 @@ const process_thread_1 = require("../../service/process-thread/process-thread");
5
5
  async function _abort({ processThread, reason }, context) {
6
6
  const { domain, user, tx } = context.state;
7
7
  var repository = tx.getRepository(process_thread_1.ProcessThread);
8
- return await repository.save(Object.assign(Object.assign({}, processThread), { reason, state: process_thread_1.ProcessThreadStatus.Aborted, transaction: 'abort', updater: user, terminatedAt: new Date(), terminator: user }));
8
+ return await repository.save({
9
+ ...processThread,
10
+ reason,
11
+ state: process_thread_1.ProcessThreadStatus.Aborted,
12
+ transaction: 'abort',
13
+ updater: user,
14
+ terminatedAt: new Date(),
15
+ terminator: user
16
+ });
9
17
  }
10
18
  //# sourceMappingURL=_abort.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_abort.js","sourceRoot":"","sources":["../../../server/controllers/process-thread/_abort.ts"],"names":[],"mappings":";;AAEA,wBAiBC;AAnBD,gFAAgG;AAEzF,KAAK,UAAU,MAAM,CAC1B,EAAE,aAAa,EAAE,MAAM,EAAoD,EAC3E,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,IAAI,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAA;IAEhD,OAAO,MAAM,UAAU,CAAC,IAAI,iCACvB,aAAa,KAChB,MAAM,EACN,KAAK,EAAE,oCAAmB,CAAC,OAAO,EAClC,WAAW,EAAE,OAAO,EACpB,OAAO,EAAE,IAAI,EACb,YAAY,EAAE,IAAI,IAAI,EAAE,EACxB,UAAU,EAAE,IAAI,IAChB,CAAA;AACJ,CAAC","sourcesContent":["import { ProcessThread, ProcessThreadStatus } from '../../service/process-thread/process-thread'\n\nexport async function _abort(\n { processThread, reason }: { processThread: ProcessThread; reason: string },\n context: ResolverContext\n): Promise<ProcessThread> {\n const { domain, user, tx } = context.state\n\n var repository = tx.getRepository(ProcessThread)\n\n return await repository.save({\n ...processThread,\n reason,\n state: ProcessThreadStatus.Aborted,\n transaction: 'abort',\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n })\n}\n"]}
1
+ {"version":3,"file":"_abort.js","sourceRoot":"","sources":["../../../server/controllers/process-thread/_abort.ts"],"names":[],"mappings":";;AAEA,wBAiBC;AAnBD,gFAAgG;AAEzF,KAAK,UAAU,MAAM,CAC1B,EAAE,aAAa,EAAE,MAAM,EAAoD,EAC3E,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,IAAI,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAA;IAEhD,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC;QAC3B,GAAG,aAAa;QAChB,MAAM;QACN,KAAK,EAAE,oCAAmB,CAAC,OAAO;QAClC,WAAW,EAAE,OAAO;QACpB,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,IAAI,IAAI,EAAE;QACxB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { ProcessThread, ProcessThreadStatus } from '../../service/process-thread/process-thread'\n\nexport async function _abort(\n { processThread, reason }: { processThread: ProcessThread; reason: string },\n context: ResolverContext\n): Promise<ProcessThread> {\n const { domain, user, tx } = context.state\n\n var repository = tx.getRepository(ProcessThread)\n\n return await repository.save({\n ...processThread,\n reason,\n state: ProcessThreadStatus.Aborted,\n transaction: 'abort',\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n })\n}\n"]}
@@ -26,8 +26,15 @@ async function end({ id, output, reason }, context) {
26
26
  actual: processThread.state
27
27
  }));
28
28
  }
29
- processThread = await repository.save(Object.assign(Object.assign({}, processThread), { reason,
30
- output, transaction: 'end', state: process_thread_1.ProcessThreadStatus.Ended, updater: user, terminatedAt: new Date() }));
29
+ processThread = await repository.save({
30
+ ...processThread,
31
+ reason,
32
+ output,
33
+ transaction: 'end',
34
+ state: process_thread_1.ProcessThreadStatus.Ended,
35
+ updater: user,
36
+ terminatedAt: new Date()
37
+ });
31
38
  await (0, common_1.updateProcessInstanceState)(processThread.processInstanceId, context);
32
39
  return processThread;
33
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"end.js","sourceRoot":"","sources":["../../../server/controllers/process-thread/end.ts"],"names":[],"mappings":";;AAGA,kBAkDC;AArDD,gFAAgG;AAChG,sCAAsD;AAE/C,KAAK,UAAU,GAAG,CACvB,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAoD,EACxE,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAA;IAElD,IAAI,aAAa,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC3C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;KACzC,CAAC,CAAA;IAEF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,gCAAgC,EAAE;YAC1C,aAAa,EAAE,EAAE;SAClB,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;MAGE;IACF,IACE,aAAa,CAAC,KAAK,IAAI,oCAAmB,CAAC,OAAO;QAClD,aAAa,CAAC,KAAK,IAAI,oCAAmB,CAAC,KAAK;QAChD,aAAa,CAAC,KAAK,IAAI,oCAAmB,CAAC,SAAS,EACpD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,4CAA4C,EAAE;YACtD,EAAE;YACF,MAAM,EAAE,aAAa,CAAC,KAAK;SAC5B,CAAC,CACH,CAAA;IACH,CAAC;IAED,aAAa,GAAG,MAAM,UAAU,CAAC,IAAI,iCAChC,aAAa,KAChB,MAAM;QACN,MAAM,EACN,WAAW,EAAE,KAAK,EAClB,KAAK,EAAE,oCAAmB,CAAC,KAAK,EAChC,OAAO,EAAE,IAAI,EACb,YAAY,EAAE,IAAI,IAAI,EAAE,IACxB,CAAA;IAEF,MAAM,IAAA,mCAA0B,EAAC,aAAa,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;IAE1E,OAAO,aAAa,CAAA;AACtB,CAAC","sourcesContent":["import { ProcessThread, ProcessThreadStatus } from '../../service/process-thread/process-thread'\nimport { updateProcessInstanceState } from '../common'\n\nexport async function end(\n { id, output, reason }: { id: string; output?: object; reason?: string },\n context: ResolverContext\n): Promise<ProcessThread> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository(ProcessThread)\n\n var processThread = await repository.findOne({\n where: { domain: { id: domain.id }, id }\n })\n\n if (!processThread) {\n throw new Error(\n context.t('error.process-thread not found', {\n processThread: id\n })\n )\n }\n\n /* \n Prerequisites for a process thread to Be End.\n - The previous state of the process thread must not be End or End.\n */\n if (\n processThread.state == ProcessThreadStatus.Aborted ||\n processThread.state == ProcessThreadStatus.Ended ||\n processThread.state == ProcessThreadStatus.Delegated\n ) {\n throw new Error(\n context.t(`error.process-thread is already terminated`, {\n id,\n actual: processThread.state\n })\n )\n }\n\n processThread = await repository.save({\n ...processThread,\n reason,\n output,\n transaction: 'end',\n state: ProcessThreadStatus.Ended,\n updater: user,\n terminatedAt: new Date()\n })\n\n await updateProcessInstanceState(processThread.processInstanceId, context)\n\n return processThread\n}\n"]}
1
+ {"version":3,"file":"end.js","sourceRoot":"","sources":["../../../server/controllers/process-thread/end.ts"],"names":[],"mappings":";;AAGA,kBAkDC;AArDD,gFAAgG;AAChG,sCAAsD;AAE/C,KAAK,UAAU,GAAG,CACvB,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAoD,EACxE,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAA;IAElD,IAAI,aAAa,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC3C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;KACzC,CAAC,CAAA;IAEF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,gCAAgC,EAAE;YAC1C,aAAa,EAAE,EAAE;SAClB,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;MAGE;IACF,IACE,aAAa,CAAC,KAAK,IAAI,oCAAmB,CAAC,OAAO;QAClD,aAAa,CAAC,KAAK,IAAI,oCAAmB,CAAC,KAAK;QAChD,aAAa,CAAC,KAAK,IAAI,oCAAmB,CAAC,SAAS,EACpD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,4CAA4C,EAAE;YACtD,EAAE;YACF,MAAM,EAAE,aAAa,CAAC,KAAK;SAC5B,CAAC,CACH,CAAA;IACH,CAAC;IAED,aAAa,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC;QACpC,GAAG,aAAa;QAChB,MAAM;QACN,MAAM;QACN,WAAW,EAAE,KAAK;QAClB,KAAK,EAAE,oCAAmB,CAAC,KAAK;QAChC,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,IAAI,IAAI,EAAE;KACzB,CAAC,CAAA;IAEF,MAAM,IAAA,mCAA0B,EAAC,aAAa,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;IAE1E,OAAO,aAAa,CAAA;AACtB,CAAC","sourcesContent":["import { ProcessThread, ProcessThreadStatus } from '../../service/process-thread/process-thread'\nimport { updateProcessInstanceState } from '../common'\n\nexport async function end(\n { id, output, reason }: { id: string; output?: object; reason?: string },\n context: ResolverContext\n): Promise<ProcessThread> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository(ProcessThread)\n\n var processThread = await repository.findOne({\n where: { domain: { id: domain.id }, id }\n })\n\n if (!processThread) {\n throw new Error(\n context.t('error.process-thread not found', {\n processThread: id\n })\n )\n }\n\n /* \n Prerequisites for a process thread to Be End.\n - The previous state of the process thread must not be End or End.\n */\n if (\n processThread.state == ProcessThreadStatus.Aborted ||\n processThread.state == ProcessThreadStatus.Ended ||\n processThread.state == ProcessThreadStatus.Delegated\n ) {\n throw new Error(\n context.t(`error.process-thread is already terminated`, {\n id,\n actual: processThread.state\n })\n )\n }\n\n processThread = await repository.save({\n ...processThread,\n reason,\n output,\n transaction: 'end',\n state: ProcessThreadStatus.Ended,\n updater: user,\n terminatedAt: new Date()\n })\n\n await updateProcessInstanceState(processThread.processInstanceId, context)\n\n return processThread\n}\n"]}
@@ -24,7 +24,13 @@ async function start(id, output, reason, context) {
24
24
  actual: processThread.state
25
25
  }));
26
26
  }
27
- const result = await tx.getRepository(process_thread_1.ProcessThread).save(Object.assign(Object.assign({}, processThread), { reason, state: process_thread_1.ProcessThreadStatus.Started, transaction: 'start', updater: user }));
27
+ const result = await tx.getRepository(process_thread_1.ProcessThread).save({
28
+ ...processThread,
29
+ reason,
30
+ state: process_thread_1.ProcessThreadStatus.Started,
31
+ transaction: 'start',
32
+ updater: user
33
+ });
28
34
  await (0, common_1.updateProcessInstanceState)(processThread.processInstanceId, context);
29
35
  return result;
30
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../server/controllers/process-thread/start.ts"],"names":[],"mappings":";;AAGA,sBA6CC;AAhDD,gFAAgG;AAChG,sCAAsD;AAE/C,KAAK,UAAU,KAAK,CACzB,EAAU,EACV,MAAc,EACd,MAAc,EACd,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAA;IAClD,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC7C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;KACzC,CAAC,CAAA;IAEF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,gCAAgC,EAAE;YAC1C,aAAa,EAAE,EAAE;SAClB,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;MAGE;IACF,IAAI,aAAa,CAAC,KAAK,KAAK,oCAAmB,CAAC,QAAQ,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,4CAA4C,EAAE;YACtD,EAAE;YACF,MAAM,EAAE,aAAa,CAAC,KAAK;SAC5B,CAAC,CACH,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,IAAI,iCACpD,aAAa,KAChB,MAAM,EACN,KAAK,EAAE,oCAAmB,CAAC,OAAO,EAClC,WAAW,EAAE,OAAO,EACpB,OAAO,EAAE,IAAI,IACb,CAAA;IAEF,MAAM,IAAA,mCAA0B,EAAC,aAAa,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;IAE1E,OAAO,MAAM,CAAA;AACf,CAAC","sourcesContent":["import { ProcessThread, ProcessThreadStatus } from '../../service/process-thread/process-thread'\nimport { updateProcessInstanceState } from '../common'\n\nexport async function start(\n id: string,\n output: object,\n reason: string,\n context: ResolverContext\n): Promise<ProcessThread> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository(ProcessThread)\n const processThread = await repository.findOne({\n where: { domain: { id: domain.id }, id }\n })\n\n if (!processThread) {\n throw new Error(\n context.t('error.process-thread not found', {\n processThread: id\n })\n )\n }\n\n /* \n Prerequisites for a process thread to Be Started.\n - The previous state of the process thread must not be terminated.\n */\n if (processThread.state !== ProcessThreadStatus.Assigned) {\n throw new Error(\n context.t(`error.process-thread should not be started`, {\n id,\n actual: processThread.state\n })\n )\n }\n\n const result = await tx.getRepository(ProcessThread).save({\n ...processThread,\n reason,\n state: ProcessThreadStatus.Started,\n transaction: 'start',\n updater: user\n })\n\n await updateProcessInstanceState(processThread.processInstanceId, context)\n\n return result\n}\n"]}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../server/controllers/process-thread/start.ts"],"names":[],"mappings":";;AAGA,sBA6CC;AAhDD,gFAAgG;AAChG,sCAAsD;AAE/C,KAAK,UAAU,KAAK,CACzB,EAAU,EACV,MAAc,EACd,MAAc,EACd,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAA;IAClD,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC7C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;KACzC,CAAC,CAAA;IAEF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,gCAAgC,EAAE;YAC1C,aAAa,EAAE,EAAE;SAClB,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;MAGE;IACF,IAAI,aAAa,CAAC,KAAK,KAAK,oCAAmB,CAAC,QAAQ,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,4CAA4C,EAAE;YACtD,EAAE;YACF,MAAM,EAAE,aAAa,CAAC,KAAK;SAC5B,CAAC,CACH,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,IAAI,CAAC;QACxD,GAAG,aAAa;QAChB,MAAM;QACN,KAAK,EAAE,oCAAmB,CAAC,OAAO;QAClC,WAAW,EAAE,OAAO;QACpB,OAAO,EAAE,IAAI;KACd,CAAC,CAAA;IAEF,MAAM,IAAA,mCAA0B,EAAC,aAAa,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;IAE1E,OAAO,MAAM,CAAA;AACf,CAAC","sourcesContent":["import { ProcessThread, ProcessThreadStatus } from '../../service/process-thread/process-thread'\nimport { updateProcessInstanceState } from '../common'\n\nexport async function start(\n id: string,\n output: object,\n reason: string,\n context: ResolverContext\n): Promise<ProcessThread> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository(ProcessThread)\n const processThread = await repository.findOne({\n where: { domain: { id: domain.id }, id }\n })\n\n if (!processThread) {\n throw new Error(\n context.t('error.process-thread not found', {\n processThread: id\n })\n )\n }\n\n /* \n Prerequisites for a process thread to Be Started.\n - The previous state of the process thread must not be terminated.\n */\n if (processThread.state !== ProcessThreadStatus.Assigned) {\n throw new Error(\n context.t(`error.process-thread should not be started`, {\n id,\n actual: processThread.state\n })\n )\n }\n\n const result = await tx.getRepository(ProcessThread).save({\n ...processThread,\n reason,\n state: ProcessThreadStatus.Started,\n transaction: 'start',\n updater: user\n })\n\n await updateProcessInstanceState(processThread.processInstanceId, context)\n\n return result\n}\n"]}
@@ -10,7 +10,12 @@ const process_type_1 = require("./process-type");
10
10
  let ProcessMutation = class ProcessMutation {
11
11
  async createProcess(process, context) {
12
12
  const { domain, user, tx } = context.state;
13
- const result = await tx.getRepository(process_1.Process).save(Object.assign(Object.assign({}, process), { domain, creator: user, updater: user }));
13
+ const result = await tx.getRepository(process_1.Process).save({
14
+ ...process,
15
+ domain,
16
+ creator: user,
17
+ updater: user
18
+ });
14
19
  if (process.thumbnail) {
15
20
  await (0, attachment_base_1.createAttachment)(null, {
16
21
  attachment: {
@@ -30,7 +35,11 @@ let ProcessMutation = class ProcessMutation {
30
35
  /* history에 항상 반영될 수 있도록 relations가 있어야 함. */
31
36
  relations: ['domain', 'issuerRole', 'supervisoryRole', 'creator', 'updater']
32
37
  });
33
- const result = await repository.save(Object.assign(Object.assign(Object.assign({}, process), patch), { updater: user }));
38
+ const result = await repository.save({
39
+ ...process,
40
+ ...patch,
41
+ updater: user
42
+ });
34
43
  if (patch.thumbnail) {
35
44
  await (0, attachment_base_1.deleteAttachmentsByRef)(null, { refBys: [result.id] }, context);
36
45
  await (0, attachment_base_1.createAttachment)(null, {
@@ -52,7 +61,12 @@ let ProcessMutation = class ProcessMutation {
52
61
  if (_createRecords.length > 0) {
53
62
  for (let i = 0; i < _createRecords.length; i++) {
54
63
  const newRecord = _createRecords[i];
55
- const result = await processRepo.save(Object.assign(Object.assign({}, newRecord), { domain, creator: user, updater: user }));
64
+ const result = await processRepo.save({
65
+ ...newRecord,
66
+ domain,
67
+ creator: user,
68
+ updater: user
69
+ });
56
70
  if (newRecord.thumbnail) {
57
71
  await (0, attachment_base_1.createAttachment)(null, {
58
72
  attachment: {
@@ -62,7 +76,7 @@ let ProcessMutation = class ProcessMutation {
62
76
  }
63
77
  }, context);
64
78
  }
65
- results.push(Object.assign(Object.assign({}, result), { cuFlag: '+' }));
79
+ results.push({ ...result, cuFlag: '+' });
66
80
  }
67
81
  }
68
82
  if (_updateRecords.length > 0) {
@@ -73,7 +87,11 @@ let ProcessMutation = class ProcessMutation {
73
87
  /* history에 항상 반영될 수 있도록 relations가 있어야 함. */
74
88
  relations: ['domain', 'issuerRole', 'supervisoryRole', 'creator', 'updater']
75
89
  });
76
- const result = await processRepo.save(Object.assign(Object.assign(Object.assign({}, process), updateRecord), { updater: user }));
90
+ const result = await processRepo.save({
91
+ ...process,
92
+ ...updateRecord,
93
+ updater: user
94
+ });
77
95
  if (updateRecord.thumbnail) {
78
96
  await (0, attachment_base_1.deleteAttachmentsByRef)(null, { refBys: [result.id] }, context);
79
97
  await (0, attachment_base_1.createAttachment)(null, {
@@ -84,7 +102,7 @@ let ProcessMutation = class ProcessMutation {
84
102
  }
85
103
  }, context);
86
104
  }
87
- results.push(Object.assign(Object.assign({}, result), { cuFlag: 'M' }));
105
+ results.push({ ...result, cuFlag: 'M' });
88
106
  }
89
107
  }
90
108
  return results;
@@ -107,7 +125,7 @@ let ProcessMutation = class ProcessMutation {
107
125
  async importProcesses(processes, context) {
108
126
  const { domain, tx } = context.state;
109
127
  await Promise.all(processes.map(async (process) => {
110
- const createdProcess = await tx.getRepository(process_1.Process).save(Object.assign({ domain }, process));
128
+ const createdProcess = await tx.getRepository(process_1.Process).save({ domain, ...process });
111
129
  }));
112
130
  return true;
113
131
  }
@@ -1 +1 @@
1
- {"version":3,"file":"process-mutation.js","sourceRoot":"","sources":["../../../server/service/process/process-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { In } from 'typeorm'\n\nimport { createAttachment, deleteAttachmentsByRef } from '@things-factory/attachment-base'\nimport { Application, CallbackBase, registerSchedule, unregisterSchedule } from '@things-factory/scheduler-client'\n\nimport { Process } from './process'\nimport { ProcessPatch, NewProcess } from './process-type'\n\n@Resolver(Process)\nexport class ProcessMutation {\n @Directive('@transaction')\n @Directive('@privilege(category: \"process\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Process, { description: 'To create new Process' })\n async createProcess(@Arg('process') process: NewProcess, @Ctx() context: ResolverContext): Promise<Process> {\n const { domain, user, tx } = context.state\n\n const result = await tx.getRepository(Process).save({\n ...process,\n domain,\n creator: user,\n updater: user\n })\n\n if (process.thumbnail) {\n await createAttachment(\n null,\n {\n attachment: {\n file: process.thumbnail,\n refType: Process.name,\n refBy: result.id\n }\n },\n context\n )\n }\n\n return result\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"process\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Process, { description: 'To modify Process information' })\n async updateProcess(\n @Arg('id') id: string,\n @Arg('patch') patch: ProcessPatch,\n @Ctx() context: ResolverContext\n ): Promise<Process> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository(Process)\n const process = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n /* history에 항상 반영될 수 있도록 relations가 있어야 함. */\n relations: ['domain', 'issuerRole', 'supervisoryRole', 'creator', 'updater']\n })\n\n const result = await repository.save({\n ...process,\n ...patch,\n updater: user\n })\n\n if (patch.thumbnail) {\n await deleteAttachmentsByRef(null, { refBys: [result.id] }, context)\n await createAttachment(\n null,\n {\n attachment: {\n file: patch.thumbnail,\n refType: Process.name,\n refBy: result.id\n }\n },\n context\n )\n }\n\n return result\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"process\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => [Process], { description: \"To modify multiple Processes' information\" })\n async updateMultipleProcess(\n @Arg('patches', type => [ProcessPatch]) patches: ProcessPatch[],\n @Ctx() context: ResolverContext\n ): Promise<Process[]> {\n const { domain, user, tx } = context.state\n\n let results = []\n const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')\n const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')\n const processRepo = tx.getRepository(Process)\n\n if (_createRecords.length > 0) {\n for (let i = 0; i < _createRecords.length; i++) {\n const newRecord = _createRecords[i]\n\n const result = await processRepo.save({\n ...newRecord,\n domain,\n creator: user,\n updater: user\n })\n\n if (newRecord.thumbnail) {\n await createAttachment(\n null,\n {\n attachment: {\n file: newRecord.thumbnail,\n refType: Process.name,\n refBy: result.id\n }\n },\n context\n )\n }\n\n results.push({ ...result, cuFlag: '+' })\n }\n }\n\n if (_updateRecords.length > 0) {\n for (let i = 0; i < _updateRecords.length; i++) {\n const updateRecord = _updateRecords[i]\n const process = await processRepo.findOne({\n where: { id: updateRecord.id },\n /* history에 항상 반영될 수 있도록 relations가 있어야 함. */\n relations: ['domain', 'issuerRole', 'supervisoryRole', 'creator', 'updater']\n })\n\n const result = await processRepo.save({\n ...process,\n ...updateRecord,\n updater: user\n })\n\n if (updateRecord.thumbnail) {\n await deleteAttachmentsByRef(null, { refBys: [result.id] }, context)\n await createAttachment(\n null,\n {\n attachment: {\n file: updateRecord.thumbnail,\n refType: Process.name,\n refBy: result.id\n }\n },\n context\n )\n }\n\n results.push({ ...result, cuFlag: 'M' })\n }\n }\n\n return results\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"process\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Boolean, { description: 'To delete Process' })\n async deleteProcess(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, tx } = context.state\n\n await tx.getRepository(Process).delete({ domain: { id: domain.id }, id })\n await deleteAttachmentsByRef(null, { refBys: [id] }, context)\n\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete multiple Processes' })\n async deleteProcesses(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n await tx.getRepository(Process).delete({\n domain: { id: domain.id },\n id: In(ids)\n })\n\n await deleteAttachmentsByRef(null, { refBys: ids }, context)\n\n return true\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"process\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Boolean, { description: 'To import multiple Processes' })\n async importProcesses(\n @Arg('processes', type => [ProcessPatch]) processes: ProcessPatch[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n await Promise.all(\n processes.map(async (process: ProcessPatch) => {\n const createdProcess: Process = await tx.getRepository(Process).save({ domain, ...process })\n })\n )\n\n return true\n }\n}\n"]}
1
+ {"version":3,"file":"process-mutation.js","sourceRoot":"","sources":["../../../server/service/process/process-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { In } from 'typeorm'\n\nimport { createAttachment, deleteAttachmentsByRef } from '@things-factory/attachment-base'\nimport { Application, CallbackBase, registerSchedule, unregisterSchedule } from '@things-factory/scheduler-client'\n\nimport { Process } from './process'\nimport { ProcessPatch, NewProcess } from './process-type'\n\n@Resolver(Process)\nexport class ProcessMutation {\n @Directive('@transaction')\n @Directive('@privilege(category: \"process\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Process, { description: 'To create new Process' })\n async createProcess(@Arg('process') process: NewProcess, @Ctx() context: ResolverContext): Promise<Process> {\n const { domain, user, tx } = context.state\n\n const result = await tx.getRepository(Process).save({\n ...process,\n domain,\n creator: user,\n updater: user\n })\n\n if (process.thumbnail) {\n await createAttachment(\n null,\n {\n attachment: {\n file: process.thumbnail,\n refType: Process.name,\n refBy: result.id\n }\n },\n context\n )\n }\n\n return result\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"process\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Process, { description: 'To modify Process information' })\n async updateProcess(\n @Arg('id') id: string,\n @Arg('patch') patch: ProcessPatch,\n @Ctx() context: ResolverContext\n ): Promise<Process> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository(Process)\n const process = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n /* history에 항상 반영될 수 있도록 relations가 있어야 함. */\n relations: ['domain', 'issuerRole', 'supervisoryRole', 'creator', 'updater']\n })\n\n const result = await repository.save({\n ...process,\n ...patch,\n updater: user\n })\n\n if (patch.thumbnail) {\n await deleteAttachmentsByRef(null, { refBys: [result.id] }, context)\n await createAttachment(\n null,\n {\n attachment: {\n file: patch.thumbnail,\n refType: Process.name,\n refBy: result.id\n }\n },\n context\n )\n }\n\n return result\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"process\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => [Process], { description: \"To modify multiple Processes' information\" })\n async updateMultipleProcess(\n @Arg('patches', type => [ProcessPatch]) patches: ProcessPatch[],\n @Ctx() context: ResolverContext\n ): Promise<Process[]> {\n const { domain, user, tx } = context.state\n\n let results = []\n const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')\n const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')\n const processRepo = tx.getRepository(Process)\n\n if (_createRecords.length > 0) {\n for (let i = 0; i < _createRecords.length; i++) {\n const newRecord = _createRecords[i]\n\n const result = await processRepo.save({\n ...newRecord,\n domain,\n creator: user,\n updater: user\n })\n\n if (newRecord.thumbnail) {\n await createAttachment(\n null,\n {\n attachment: {\n file: newRecord.thumbnail,\n refType: Process.name,\n refBy: result.id\n }\n },\n context\n )\n }\n\n results.push({ ...result, cuFlag: '+' })\n }\n }\n\n if (_updateRecords.length > 0) {\n for (let i = 0; i < _updateRecords.length; i++) {\n const updateRecord = _updateRecords[i]\n const process = await processRepo.findOne({\n where: { id: updateRecord.id },\n /* history에 항상 반영될 수 있도록 relations가 있어야 함. */\n relations: ['domain', 'issuerRole', 'supervisoryRole', 'creator', 'updater']\n })\n\n const result = await processRepo.save({\n ...process,\n ...updateRecord,\n updater: user\n })\n\n if (updateRecord.thumbnail) {\n await deleteAttachmentsByRef(null, { refBys: [result.id] }, context)\n await createAttachment(\n null,\n {\n attachment: {\n file: updateRecord.thumbnail,\n refType: Process.name,\n refBy: result.id\n }\n },\n context\n )\n }\n\n results.push({ ...result, cuFlag: 'M' })\n }\n }\n\n return results\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"process\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Boolean, { description: 'To delete Process' })\n async deleteProcess(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, tx } = context.state\n\n await tx.getRepository(Process).delete({ domain: { id: domain.id }, id })\n await deleteAttachmentsByRef(null, { refBys: [id] }, context)\n\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete multiple Processes' })\n async deleteProcesses(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n await tx.getRepository(Process).delete({\n domain: { id: domain.id },\n id: In(ids)\n })\n\n await deleteAttachmentsByRef(null, { refBys: ids }, context)\n\n return true\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"process\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Boolean, { description: 'To import multiple Processes' })\n async importProcesses(\n @Arg('processes', type => [ProcessPatch]) processes: ProcessPatch[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n await Promise.all(\n processes.map(async (process: ProcessPatch) => {\n const createdProcess: Process = await tx.getRepository(Process).save({ domain, ...process })\n })\n )\n\n return true\n }\n}\n"]}
@@ -70,7 +70,7 @@ let ProcessQuery = class ProcessQuery {
70
70
  refBy: process.id
71
71
  }
72
72
  });
73
- return attachment === null || attachment === void 0 ? void 0 : attachment.fullpath;
73
+ return attachment?.fullpath;
74
74
  }
75
75
  async domain(process) {
76
76
  return await (0, shell_1.getRepository)(shell_1.Domain).findOneBy({ id: process.domainId });
@@ -1 +1 @@
1
- {"version":3,"file":"process-query.js","sourceRoot":"","sources":["../../../server/service/process/process-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\n\nimport { Attachment } from '@things-factory/attachment-base'\nimport { Role, User } from '@things-factory/auth-base'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\n\nimport { Process } from './process'\nimport { ProcessList } from './process-type'\n\n@Resolver(Process)\nexport class ProcessQuery {\n @Directive('@privilege(category: \"process\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => Process!, { nullable: true, description: 'To fetch a Process' })\n async process(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Process> {\n const { domain } = context.state\n\n return await getRepository(Process).findOne({\n where: { domain: { id: domain.id }, id }\n })\n }\n\n @Directive('@privilege(category: \"process\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => Process!, { nullable: true, description: 'To fetch a Process by name' })\n async processByName(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<Process> {\n const { domain } = context.state\n\n return await getRepository(Process).findOne({\n where: { domain: { id: domain.id }, name }\n })\n }\n\n @Directive('@privilege(category: \"process\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ProcessList, { description: 'To fetch multiple Processes' })\n async processes(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<ProcessList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n domain,\n params,\n repository: getRepository(Process),\n alias: 'process',\n searchables: ['name', 'description', 'supervisoryRole']\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"process\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ProcessList, { description: 'To fetch the list of processes that I can report on' })\n async supervisableProcesses(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ProcessList> {\n var { domain, user } = context.state\n\n /* 조회한 사용자가 assigner 역할을 가진 process-instance 리스트만 반환 */\n user = await getRepository(User).findOne({\n where: { id: user.id },\n relations: ['roles']\n })\n const roles = user.roles.filter(role => role.domainId === domain.id).map(role => role.id)\n\n if (!roles.length) {\n return { items: [], total: 0 }\n }\n\n const [items, total] = await getQueryBuilderFromListParams({\n repository: getRepository(Process),\n params,\n domain,\n alias: 'process',\n searchables: ['name', 'description']\n })\n .andWhere(`process.supervisoryRole IN (:...roles)`, { roles })\n .getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Role)\n async supervisoryRole(@Root() process: Process): Promise<Role> {\n return (\n process.supervisoryRole ||\n (process.supervisoryRoleId &&\n (await getRepository(Role).findOneBy({\n id: process.supervisoryRoleId\n })))\n )\n }\n\n @FieldResolver(type => String)\n async thumbnail(@Root() process: Process): Promise<string | undefined> {\n const attachment: Attachment = await getRepository(Attachment).findOne({\n where: {\n domain: { id: process.domainId },\n refType: Process.name,\n refBy: process.id\n }\n })\n\n return attachment?.fullpath\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() process: Process): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: process.domainId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() process: Process): Promise<User> {\n return await getRepository(User).findOneBy({ id: process.updaterId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() process: Process): Promise<User> {\n return await getRepository(User).findOneBy({ id: process.creatorId })\n }\n}\n"]}
1
+ {"version":3,"file":"process-query.js","sourceRoot":"","sources":["../../../server/service/process/process-query.ts"],"names":[],"mappings":";;;;AAAA,+CAA8F;AAE9F,qEAA4D;AAC5D,yDAAsD;AACtD,iDAAuG;AAEvG,uCAAmC;AACnC,iDAA4C;AAGrC,IAAM,YAAY,GAAlB,MAAM,YAAY;IAGjB,AAAN,KAAK,CAAC,OAAO,CAAY,EAAU,EAAS,OAAwB;QAClE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,OAAO,MAAM,IAAA,qBAAa,EAAC,iBAAO,CAAC,CAAC,OAAO,CAAC;YAC1C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;SACzC,CAAC,CAAA;IACJ,CAAC;IAIK,AAAN,KAAK,CAAC,aAAa,CAAc,IAAY,EAAS,OAAwB;QAC5E,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,OAAO,MAAM,IAAA,qBAAa,EAAC,iBAAO,CAAC,CAAC,OAAO,CAAC;YAC1C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE;SAC3C,CAAC,CAAA;IACJ,CAAC;IAIK,AAAN,KAAK,CAAC,SAAS,CAA0B,MAAiB,EAAS,OAAwB;QACzF,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC;YACjD,MAAM;YACN,MAAM;YACN,UAAU,EAAE,IAAA,qBAAa,EAAC,iBAAO,CAAC;YAClC,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC;SACxD,CAAC,CAAA;QAEF,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,YAAY,CAAC,eAAe,EAAE,CAAA;QAE3D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;IACzB,CAAC;IAIK,AAAN,KAAK,CAAC,qBAAqB,CACA,MAAiB,EACnC,OAAwB;QAE/B,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEpC,uDAAuD;QACvD,IAAI,GAAG,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,OAAO,CAAC;YACvC,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;YACtB,SAAS,EAAE,CAAC,OAAO,CAAC;SACrB,CAAC,CAAA;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAEzF,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;QAChC,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,IAAA,qCAA6B,EAAC;YACzD,UAAU,EAAE,IAAA,qBAAa,EAAC,iBAAO,CAAC;YAClC,MAAM;YACN,MAAM;YACN,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;SACrC,CAAC;aACC,QAAQ,CAAC,wCAAwC,EAAE,EAAE,KAAK,EAAE,CAAC;aAC7D,eAAe,EAAE,CAAA;QAEpB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;IACzB,CAAC;IAGK,AAAN,KAAK,CAAC,eAAe,CAAS,OAAgB;QAC5C,OAAO,CACL,OAAO,CAAC,eAAe;YACvB,CAAC,OAAO,CAAC,iBAAiB;gBACxB,CAAC,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,SAAS,CAAC;oBACnC,EAAE,EAAE,OAAO,CAAC,iBAAiB;iBAC9B,CAAC,CAAC,CAAC,CACP,CAAA;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,SAAS,CAAS,OAAgB;QACtC,MAAM,UAAU,GAAe,MAAM,IAAA,qBAAa,EAAC,4BAAU,CAAC,CAAC,OAAO,CAAC;YACrE,KAAK,EAAE;gBACL,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE;gBAChC,OAAO,EAAE,iBAAO,CAAC,IAAI;gBACrB,KAAK,EAAE,OAAO,CAAC,EAAE;aAClB;SACF,CAAC,CAAA;QAEF,OAAO,UAAU,EAAE,QAAQ,CAAA;IAC7B,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CAAS,OAAgB;QACnC,OAAO,MAAM,IAAA,qBAAa,EAAC,cAAM,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;IACxE,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAS,OAAgB;QACpC,OAAO,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IACvE,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAS,OAAgB;QACpC,OAAO,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IACvE,CAAC;CACF,CAAA;AA7GY,oCAAY;AAGjB;IAFL,IAAA,wBAAS,EAAC,+EAA+E,CAAC;IAC1F,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,iBAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACnE,mBAAA,IAAA,kBAAG,EAAC,IAAI,CAAC,CAAA;IAAc,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;2CAM1C;AAIK;IAFL,IAAA,wBAAS,EAAC,+EAA+E,CAAC;IAC1F,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,iBAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC;IACrE,mBAAA,IAAA,kBAAG,EAAC,MAAM,CAAC,CAAA;IAAgB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;iDAMpD;AAIK;IAFL,IAAA,wBAAS,EAAC,+EAA+E,CAAC;IAC1F,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,0BAAW,EAAE,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC;IAC7D,mBAAA,IAAA,mBAAI,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAS,CAAC,CAAA;IAAqB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;6CAAjB,iBAAS;;6CAczD;AAIK;IAFL,IAAA,wBAAS,EAAC,+EAA+E,CAAC;IAC1F,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,0BAAW,EAAE,EAAE,WAAW,EAAE,qDAAqD,EAAE,CAAC;IAEnG,mBAAA,IAAA,mBAAI,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAS,CAAC,CAAA;IACvB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;6CAD2B,iBAAS;;yDA2B3C;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,CAAC;IACL,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAU,iBAAO;;mDAQ7C;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;IACb,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAU,iBAAO;;6CAUvC;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;IAChB,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAU,iBAAO;;0CAEpC;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,CAAC;IACb,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAU,iBAAO;;2CAErC;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,CAAC;IACb,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAU,iBAAO;;2CAErC;uBA5GU,YAAY;IADxB,IAAA,uBAAQ,EAAC,iBAAO,CAAC;GACL,YAAY,CA6GxB","sourcesContent":["import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\n\nimport { Attachment } from '@things-factory/attachment-base'\nimport { Role, User } from '@things-factory/auth-base'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\n\nimport { Process } from './process'\nimport { ProcessList } from './process-type'\n\n@Resolver(Process)\nexport class ProcessQuery {\n @Directive('@privilege(category: \"process\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => Process!, { nullable: true, description: 'To fetch a Process' })\n async process(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Process> {\n const { domain } = context.state\n\n return await getRepository(Process).findOne({\n where: { domain: { id: domain.id }, id }\n })\n }\n\n @Directive('@privilege(category: \"process\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => Process!, { nullable: true, description: 'To fetch a Process by name' })\n async processByName(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<Process> {\n const { domain } = context.state\n\n return await getRepository(Process).findOne({\n where: { domain: { id: domain.id }, name }\n })\n }\n\n @Directive('@privilege(category: \"process\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ProcessList, { description: 'To fetch multiple Processes' })\n async processes(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<ProcessList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n domain,\n params,\n repository: getRepository(Process),\n alias: 'process',\n searchables: ['name', 'description', 'supervisoryRole']\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"process\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ProcessList, { description: 'To fetch the list of processes that I can report on' })\n async supervisableProcesses(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ProcessList> {\n var { domain, user } = context.state\n\n /* 조회한 사용자가 assigner 역할을 가진 process-instance 리스트만 반환 */\n user = await getRepository(User).findOne({\n where: { id: user.id },\n relations: ['roles']\n })\n const roles = user.roles.filter(role => role.domainId === domain.id).map(role => role.id)\n\n if (!roles.length) {\n return { items: [], total: 0 }\n }\n\n const [items, total] = await getQueryBuilderFromListParams({\n repository: getRepository(Process),\n params,\n domain,\n alias: 'process',\n searchables: ['name', 'description']\n })\n .andWhere(`process.supervisoryRole IN (:...roles)`, { roles })\n .getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Role)\n async supervisoryRole(@Root() process: Process): Promise<Role> {\n return (\n process.supervisoryRole ||\n (process.supervisoryRoleId &&\n (await getRepository(Role).findOneBy({\n id: process.supervisoryRoleId\n })))\n )\n }\n\n @FieldResolver(type => String)\n async thumbnail(@Root() process: Process): Promise<string | undefined> {\n const attachment: Attachment = await getRepository(Attachment).findOne({\n where: {\n domain: { id: process.domainId },\n refType: Process.name,\n refBy: process.id\n }\n })\n\n return attachment?.fullpath\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() process: Process): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: process.domainId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() process: Process): Promise<User> {\n return await getRepository(User).findOneBy({ id: process.updaterId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() process: Process): Promise<User> {\n return await getRepository(User).findOneBy({ id: process.creatorId })\n }\n}\n"]}
@@ -28,10 +28,9 @@ let ProcessInstanceQuery = class ProcessInstanceQuery {
28
28
  return { items, total };
29
29
  }
30
30
  async processInstancesByProcess(processId, params, context) {
31
- var _a;
32
31
  const { domain } = context.state;
33
32
  const process = await (0, shell_1.getRepository)(process_1.Process).findOneBy({ id: processId });
34
- const searchables = ((_a = process === null || process === void 0 ? void 0 : process.searchKeys) === null || _a === void 0 ? void 0 : _a.map((item, index) => `key0${index + 1}`)) || [];
33
+ const searchables = process?.searchKeys?.map((item, index) => `key0${index + 1}`) || [];
35
34
  const queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
36
35
  repository: (0, shell_1.getRepository)(process_instance_1.ProcessInstance),
37
36
  params,
@@ -79,7 +78,7 @@ let ProcessInstanceQuery = class ProcessInstanceQuery {
79
78
  refBy: processId
80
79
  }
81
80
  }));
82
- return attachment === null || attachment === void 0 ? void 0 : attachment.fullpath;
81
+ return attachment?.fullpath;
83
82
  }
84
83
  async domain(processInstance) {
85
84
  return await (0, shell_1.getRepository)(shell_1.Domain).findOneBy({ id: processInstance.domainId });
@@ -1 +1 @@
1
- {"version":3,"file":"process-instance-query.js","sourceRoot":"","sources":["../../../server/service/process-instance/process-instance-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\n\nimport { Attachment } from '@things-factory/attachment-base'\nimport { Role, User } from '@things-factory/auth-base'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\n\nimport { ProcessThread } from '../process-thread/process-thread'\nimport { Process } from '../process/process'\nimport { ProcessInstance, ProcessInstanceStatus } from './process-instance'\nimport { ProcessInstanceList } from './process-instance-type'\n\n@Resolver(ProcessInstance)\nexport class ProcessInstanceQuery {\n @Directive('@privilege(category: \"process-instance\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ProcessInstance!, { nullable: true, description: 'To fetch a ProcessInstance' })\n async processInstance(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<ProcessInstance> {\n const { domain } = context.state\n\n return await getRepository(ProcessInstance).findOne({\n where: { domain: { id: domain.id }, id }\n })\n }\n\n @Directive('@privilege(category: \"process-instance\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ProcessInstanceList, { description: 'To fetch multiple ProcessInstances' })\n async processInstances(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ProcessInstanceList> {\n const { domain } = context.state\n\n const [items, total] = await getQueryBuilderFromListParams({\n domain,\n params,\n repository: getRepository(ProcessInstance),\n searchables: ['name', 'description']\n }).getManyAndCount()\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"process-instance\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ProcessInstanceList, { description: 'To fetch multiple process instances by process' })\n async processInstancesByProcess(\n @Arg('processId') processId: string,\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ProcessInstanceList> {\n const { domain } = context.state\n\n const process = await getRepository(Process).findOneBy({ id: processId })\n const searchables = process?.searchKeys?.map((item, index) => `key0${index + 1}`) || []\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(ProcessInstance),\n params,\n domain,\n alias: 'pi',\n searchables: ['name', 'description'].concat(searchables)\n }).where('pi.process = :process', { process: processId })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Process)\n async process(@Root() processInstance: ProcessInstance): Promise<Process> {\n const { processId } = processInstance\n\n return await getRepository(Process).findOneBy({ id: processId })\n }\n\n @FieldResolver(type => [ProcessThread])\n async processThreads(\n @Root() processInstance: ProcessInstance,\n @Ctx() context: ResolverContext\n ): Promise<ProcessThread[]> {\n const { user } = context.state\n const { supervisoryRoleId } = processInstance\n\n if (supervisoryRoleId) {\n /* only user having supervisoryRole can get whole processThreads */\n const roles = (\n (await getRepository(User).findOne({\n where: { id: user.id },\n relations: ['roles']\n })) as User\n ).roles.map(role => role.id)\n\n if (!roles.includes(supervisoryRoleId)) {\n return\n }\n }\n\n return await getRepository(ProcessThread).findBy({\n processInstance: { id: processInstance.id }\n })\n }\n\n @FieldResolver(type => Role)\n async supervisoryRole(@Root() processInstance: ProcessInstance): Promise<Role> {\n return (\n processInstance.supervisoryRole ||\n (processInstance.supervisoryRoleId &&\n (await getRepository(Role).findOneBy({\n id: processInstance.supervisoryRoleId\n })))\n )\n }\n\n @FieldResolver(type => String)\n async thumbnail(@Root() processInstance: ProcessInstance): Promise<string | undefined> {\n const { processId } = processInstance\n const attachment: Attachment =\n processId &&\n (await getRepository(Attachment).findOne({\n where: {\n domain: { id: processInstance.domainId },\n refBy: processId\n }\n }))\n\n return attachment?.fullpath\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() processInstance: ProcessInstance): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: processInstance.domainId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() processInstance: ProcessInstance): Promise<User> {\n return processInstance.updaterId && (await getRepository(User).findOneBy({ id: processInstance.updaterId }))\n }\n\n @FieldResolver(type => User)\n async creator(@Root() processInstance: ProcessInstance): Promise<User> {\n return processInstance.creatorId && (await getRepository(User).findOneBy({ id: processInstance.creatorId }))\n }\n}\n"]}
1
+ {"version":3,"file":"process-instance-query.js","sourceRoot":"","sources":["../../../server/service/process-instance/process-instance-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\n\nimport { Attachment } from '@things-factory/attachment-base'\nimport { Role, User } from '@things-factory/auth-base'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\n\nimport { ProcessThread } from '../process-thread/process-thread'\nimport { Process } from '../process/process'\nimport { ProcessInstance, ProcessInstanceStatus } from './process-instance'\nimport { ProcessInstanceList } from './process-instance-type'\n\n@Resolver(ProcessInstance)\nexport class ProcessInstanceQuery {\n @Directive('@privilege(category: \"process-instance\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ProcessInstance!, { nullable: true, description: 'To fetch a ProcessInstance' })\n async processInstance(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<ProcessInstance> {\n const { domain } = context.state\n\n return await getRepository(ProcessInstance).findOne({\n where: { domain: { id: domain.id }, id }\n })\n }\n\n @Directive('@privilege(category: \"process-instance\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ProcessInstanceList, { description: 'To fetch multiple ProcessInstances' })\n async processInstances(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ProcessInstanceList> {\n const { domain } = context.state\n\n const [items, total] = await getQueryBuilderFromListParams({\n domain,\n params,\n repository: getRepository(ProcessInstance),\n searchables: ['name', 'description']\n }).getManyAndCount()\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"process-instance\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ProcessInstanceList, { description: 'To fetch multiple process instances by process' })\n async processInstancesByProcess(\n @Arg('processId') processId: string,\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ProcessInstanceList> {\n const { domain } = context.state\n\n const process = await getRepository(Process).findOneBy({ id: processId })\n const searchables = process?.searchKeys?.map((item, index) => `key0${index + 1}`) || []\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(ProcessInstance),\n params,\n domain,\n alias: 'pi',\n searchables: ['name', 'description'].concat(searchables)\n }).where('pi.process = :process', { process: processId })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Process)\n async process(@Root() processInstance: ProcessInstance): Promise<Process> {\n const { processId } = processInstance\n\n return await getRepository(Process).findOneBy({ id: processId })\n }\n\n @FieldResolver(type => [ProcessThread])\n async processThreads(\n @Root() processInstance: ProcessInstance,\n @Ctx() context: ResolverContext\n ): Promise<ProcessThread[]> {\n const { user } = context.state\n const { supervisoryRoleId } = processInstance\n\n if (supervisoryRoleId) {\n /* only user having supervisoryRole can get whole processThreads */\n const roles = (\n (await getRepository(User).findOne({\n where: { id: user.id },\n relations: ['roles']\n })) as User\n ).roles.map(role => role.id)\n\n if (!roles.includes(supervisoryRoleId)) {\n return\n }\n }\n\n return await getRepository(ProcessThread).findBy({\n processInstance: { id: processInstance.id }\n })\n }\n\n @FieldResolver(type => Role)\n async supervisoryRole(@Root() processInstance: ProcessInstance): Promise<Role> {\n return (\n processInstance.supervisoryRole ||\n (processInstance.supervisoryRoleId &&\n (await getRepository(Role).findOneBy({\n id: processInstance.supervisoryRoleId\n })))\n )\n }\n\n @FieldResolver(type => String)\n async thumbnail(@Root() processInstance: ProcessInstance): Promise<string | undefined> {\n const { processId } = processInstance\n const attachment: Attachment =\n processId &&\n (await getRepository(Attachment).findOne({\n where: {\n domain: { id: processInstance.domainId },\n refBy: processId\n }\n }))\n\n return attachment?.fullpath\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() processInstance: ProcessInstance): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: processInstance.domainId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() processInstance: ProcessInstance): Promise<User> {\n return processInstance.updaterId && (await getRepository(User).findOneBy({ id: processInstance.updaterId }))\n }\n\n @FieldResolver(type => User)\n async creator(@Root() processInstance: ProcessInstance): Promise<User> {\n return processInstance.creatorId && (await getRepository(User).findOneBy({ id: processInstance.creatorId }))\n }\n}\n"]}
@@ -16,19 +16,18 @@ exports.ProcessInstanceSubscription = ProcessInstanceSubscription;
16
16
  tslib_1.__decorate([
17
17
  (0, type_graphql_1.Subscription)({
18
18
  subscribe: ({ args, context, info }) => {
19
- var _a;
20
19
  const { domain, user } = context.state;
21
- const subdomain = domain === null || domain === void 0 ? void 0 : domain.subdomain;
20
+ const subdomain = domain?.subdomain;
22
21
  if (!domain) {
23
22
  throw new Error('domain required');
24
23
  }
25
- if (!((_a = user.domains) === null || _a === void 0 ? void 0 : _a.find(d => d.subdomain === subdomain)) && !process.superUserGranted(domain, user)) {
24
+ if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {
26
25
  throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`);
27
26
  }
28
27
  return (0, graphql_yoga_1.pipe)(shell_1.pubsub.subscribe('process-instance'), (0, graphql_yoga_1.filter)(async (payload) => {
29
28
  const { processInstance } = payload;
30
29
  const { domainId } = processInstance;
31
- if (domainId !== (domain === null || domain === void 0 ? void 0 : domain.id)) {
30
+ if (domainId !== domain?.id) {
32
31
  return false;
33
32
  }
34
33
  if (processInstance.creatorId === user.id) {
@@ -1 +1 @@
1
- {"version":3,"file":"process-instance-subscription.js","sourceRoot":"","sources":["../../../server/service/process-instance/process-instance-subscription.ts"],"names":[],"mappings":";;;;AAAA,+CAA2C;AAC3C,+CAA2D;AAE3D,iDAA8C;AAC9C,yDAAgD;AAEhD,yDAAoD;AAG7C,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IAiCtC,eAAe,CAAS,OAA6C;QACnE,OAAO,OAAO,CAAC,eAAe,CAAA;IAChC,CAAC;CACF,CAAA;AApCY,kEAA2B;AAiCtC;IAhCC,IAAA,2BAAY,EAAC;QACZ,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;;YACrC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YACtC,MAAM,SAAS,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAA;YAEnC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;YACpC,CAAC;YAED,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;gBACnG,MAAM,IAAI,KAAK,CAAC,UAAU,SAAS,6BAA6B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;YACjF,CAAC;YAED,OAAO,IAAA,mBAAI,EACT,cAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,EACpC,IAAA,qBAAM,EAAC,KAAK,EAAE,OAA6C,EAAE,EAAE;gBAC7D,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAA;gBACnC,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAA;gBAEpC,IAAI,QAAQ,MAAK,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,CAAA,EAAE,CAAC;oBAC5B,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,IAAI,eAAe,CAAC,SAAS,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;oBAC1C,OAAO,IAAI,CAAA;gBACb,CAAC;gBAED,OAAO,MAAM,gBAAI,CAAC,YAAY,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;YAC3E,CAAC,CAAC,CACH,CAAA;QACH,CAAC;KACF,CAAC;IACe,mBAAA,IAAA,mBAAI,GAAE,CAAA;;;4CAAiD,kCAAe;kEAEtF;sCAnCU,2BAA2B;IADvC,IAAA,uBAAQ,EAAC,kCAAe,CAAC;GACb,2BAA2B,CAoCvC","sourcesContent":["import { filter, pipe } from 'graphql-yoga'\nimport { Resolver, Root, Subscription } from 'type-graphql'\n\nimport { pubsub } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\nimport { ProcessInstance } from './process-instance'\n\n@Resolver(ProcessInstance)\nexport class ProcessInstanceSubscription {\n @Subscription({\n subscribe: ({ args, context, info }) => {\n const { domain, user } = context.state\n const subdomain = domain?.subdomain\n\n if (!domain) {\n throw new Error('domain required')\n }\n\n if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {\n throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)\n }\n\n return pipe(\n pubsub.subscribe('process-instance'),\n filter(async (payload: { processInstance: ProcessInstance }) => {\n const { processInstance } = payload\n const { domainId } = processInstance\n\n if (domainId !== domain?.id) {\n return false\n }\n\n if (processInstance.creatorId === user.id) {\n return true\n }\n\n return await User.hasPrivilege('query', 'process-instance', domain, user)\n })\n )\n }\n })\n processInstance(@Root() payload: { processInstance: ProcessInstance }): ProcessInstance {\n return payload.processInstance\n }\n}\n"]}
1
+ {"version":3,"file":"process-instance-subscription.js","sourceRoot":"","sources":["../../../server/service/process-instance/process-instance-subscription.ts"],"names":[],"mappings":";;;;AAAA,+CAA2C;AAC3C,+CAA2D;AAE3D,iDAA8C;AAC9C,yDAAgD;AAEhD,yDAAoD;AAG7C,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IAiCtC,eAAe,CAAS,OAA6C;QACnE,OAAO,OAAO,CAAC,eAAe,CAAA;IAChC,CAAC;CACF,CAAA;AApCY,kEAA2B;AAiCtC;IAhCC,IAAA,2BAAY,EAAC;QACZ,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;YACrC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YACtC,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,CAAA;YAEnC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;YACpC,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;gBACnG,MAAM,IAAI,KAAK,CAAC,UAAU,SAAS,6BAA6B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;YACjF,CAAC;YAED,OAAO,IAAA,mBAAI,EACT,cAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,EACpC,IAAA,qBAAM,EAAC,KAAK,EAAE,OAA6C,EAAE,EAAE;gBAC7D,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAA;gBACnC,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAA;gBAEpC,IAAI,QAAQ,KAAK,MAAM,EAAE,EAAE,EAAE,CAAC;oBAC5B,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,IAAI,eAAe,CAAC,SAAS,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;oBAC1C,OAAO,IAAI,CAAA;gBACb,CAAC;gBAED,OAAO,MAAM,gBAAI,CAAC,YAAY,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;YAC3E,CAAC,CAAC,CACH,CAAA;QACH,CAAC;KACF,CAAC;IACe,mBAAA,IAAA,mBAAI,GAAE,CAAA;;;4CAAiD,kCAAe;kEAEtF;sCAnCU,2BAA2B;IADvC,IAAA,uBAAQ,EAAC,kCAAe,CAAC;GACb,2BAA2B,CAoCvC","sourcesContent":["import { filter, pipe } from 'graphql-yoga'\nimport { Resolver, Root, Subscription } from 'type-graphql'\n\nimport { pubsub } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\nimport { ProcessInstance } from './process-instance'\n\n@Resolver(ProcessInstance)\nexport class ProcessInstanceSubscription {\n @Subscription({\n subscribe: ({ args, context, info }) => {\n const { domain, user } = context.state\n const subdomain = domain?.subdomain\n\n if (!domain) {\n throw new Error('domain required')\n }\n\n if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {\n throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)\n }\n\n return pipe(\n pubsub.subscribe('process-instance'),\n filter(async (payload: { processInstance: ProcessInstance }) => {\n const { processInstance } = payload\n const { domainId } = processInstance\n\n if (domainId !== domain?.id) {\n return false\n }\n\n if (processInstance.creatorId === user.id) {\n return true\n }\n\n return await User.hasPrivilege('query', 'process-instance', domain, user)\n })\n )\n }\n })\n processInstance(@Root() payload: { processInstance: ProcessInstance }): ProcessInstance {\n return payload.processInstance\n }\n}\n"]}
@@ -16,19 +16,18 @@ exports.ProcessThreadSubscription = ProcessThreadSubscription;
16
16
  tslib_1.__decorate([
17
17
  (0, type_graphql_1.Subscription)({
18
18
  subscribe: ({ args, context, info }) => {
19
- var _a;
20
19
  const { domain, user } = context.state;
21
- const subdomain = domain === null || domain === void 0 ? void 0 : domain.subdomain;
20
+ const subdomain = domain?.subdomain;
22
21
  if (!domain) {
23
22
  throw new Error('domain required');
24
23
  }
25
- if (!((_a = user.domains) === null || _a === void 0 ? void 0 : _a.find(d => d.subdomain === subdomain)) && !process.superUserGranted(domain, user)) {
24
+ if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {
26
25
  throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`);
27
26
  }
28
27
  return (0, graphql_yoga_1.pipe)(shell_1.pubsub.subscribe('process-thread'), (0, graphql_yoga_1.filter)(async (payload) => {
29
28
  const { processThread } = payload;
30
29
  const { domainId } = processThread;
31
- if (domainId !== (domain === null || domain === void 0 ? void 0 : domain.id)) {
30
+ if (domainId !== domain?.id) {
32
31
  return false;
33
32
  }
34
33
  return await auth_base_1.User.hasPrivilege('query', 'process-thread', domain, user);
@@ -1 +1 @@
1
- {"version":3,"file":"process-thread-subscription.js","sourceRoot":"","sources":["../../../server/service/process-thread/process-thread-subscription.ts"],"names":[],"mappings":";;;;AAAA,+CAA2C;AAC3C,+CAA2D;AAE3D,iDAA8C;AAC9C,yDAAgD;AAEhD,qDAAgD;AAGzC,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IA6BpC,aAAa,CAAS,OAAyC;QAC7D,OAAO,OAAO,CAAC,aAAa,CAAA;IAC9B,CAAC;CACF,CAAA;AAhCY,8DAAyB;AA6BpC;IA5BC,IAAA,2BAAY,EAAC;QACZ,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;;YACrC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YACtC,MAAM,SAAS,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAA;YAEnC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;YACpC,CAAC;YAED,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;gBACnG,MAAM,IAAI,KAAK,CAAC,UAAU,SAAS,6BAA6B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;YACjF,CAAC;YAED,OAAO,IAAA,mBAAI,EACT,cAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAClC,IAAA,qBAAM,EAAC,KAAK,EAAE,OAAyC,EAAE,EAAE;gBACzD,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAA;gBACjC,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAA;gBAElC,IAAI,QAAQ,MAAK,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,CAAA,EAAE,CAAC;oBAC5B,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,OAAO,MAAM,gBAAI,CAAC,YAAY,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;YACzE,CAAC,CAAC,CACH,CAAA;QACH,CAAC;KACF,CAAC;IACa,mBAAA,IAAA,mBAAI,GAAE,CAAA;;;4CAA6C,8BAAa;8DAE9E;oCA/BU,yBAAyB;IADrC,IAAA,uBAAQ,EAAC,8BAAa,CAAC;GACX,yBAAyB,CAgCrC","sourcesContent":["import { filter, pipe } from 'graphql-yoga'\nimport { Resolver, Root, Subscription } from 'type-graphql'\n\nimport { pubsub } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\nimport { ProcessThread } from './process-thread'\n\n@Resolver(ProcessThread)\nexport class ProcessThreadSubscription {\n @Subscription({\n subscribe: ({ args, context, info }) => {\n const { domain, user } = context.state\n const subdomain = domain?.subdomain\n\n if (!domain) {\n throw new Error('domain required')\n }\n\n if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {\n throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)\n }\n\n return pipe(\n pubsub.subscribe('process-thread'),\n filter(async (payload: { processThread: ProcessThread }) => {\n const { processThread } = payload\n const { domainId } = processThread\n\n if (domainId !== domain?.id) {\n return false\n }\n\n return await User.hasPrivilege('query', 'process-thread', domain, user)\n })\n )\n }\n })\n processThread(@Root() payload: { processThread: ProcessThread }): ProcessThread {\n return payload.processThread\n }\n}\n"]}
1
+ {"version":3,"file":"process-thread-subscription.js","sourceRoot":"","sources":["../../../server/service/process-thread/process-thread-subscription.ts"],"names":[],"mappings":";;;;AAAA,+CAA2C;AAC3C,+CAA2D;AAE3D,iDAA8C;AAC9C,yDAAgD;AAEhD,qDAAgD;AAGzC,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IA6BpC,aAAa,CAAS,OAAyC;QAC7D,OAAO,OAAO,CAAC,aAAa,CAAA;IAC9B,CAAC;CACF,CAAA;AAhCY,8DAAyB;AA6BpC;IA5BC,IAAA,2BAAY,EAAC;QACZ,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;YACrC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YACtC,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,CAAA;YAEnC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;YACpC,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;gBACnG,MAAM,IAAI,KAAK,CAAC,UAAU,SAAS,6BAA6B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;YACjF,CAAC;YAED,OAAO,IAAA,mBAAI,EACT,cAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAClC,IAAA,qBAAM,EAAC,KAAK,EAAE,OAAyC,EAAE,EAAE;gBACzD,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAA;gBACjC,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAA;gBAElC,IAAI,QAAQ,KAAK,MAAM,EAAE,EAAE,EAAE,CAAC;oBAC5B,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,OAAO,MAAM,gBAAI,CAAC,YAAY,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;YACzE,CAAC,CAAC,CACH,CAAA;QACH,CAAC;KACF,CAAC;IACa,mBAAA,IAAA,mBAAI,GAAE,CAAA;;;4CAA6C,8BAAa;8DAE9E;oCA/BU,yBAAyB;IADrC,IAAA,uBAAQ,EAAC,8BAAa,CAAC;GACX,yBAAyB,CAgCrC","sourcesContent":["import { filter, pipe } from 'graphql-yoga'\nimport { Resolver, Root, Subscription } from 'type-graphql'\n\nimport { pubsub } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\nimport { ProcessThread } from './process-thread'\n\n@Resolver(ProcessThread)\nexport class ProcessThreadSubscription {\n @Subscription({\n subscribe: ({ args, context, info }) => {\n const { domain, user } = context.state\n const subdomain = domain?.subdomain\n\n if (!domain) {\n throw new Error('domain required')\n }\n\n if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {\n throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)\n }\n\n return pipe(\n pubsub.subscribe('process-thread'),\n filter(async (payload: { processThread: ProcessThread }) => {\n const { processThread } = payload\n const { domainId } = processThread\n\n if (domainId !== domain?.id) {\n return false\n }\n\n return await User.hasPrivilege('query', 'process-thread', domain, user)\n })\n )\n }\n })\n processThread(@Root() payload: { processThread: ProcessThread }): ProcessThread {\n return payload.processThread\n }\n}\n"]}