@things-factory/worklist 6.0.32 → 6.0.34

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 (111) hide show
  1. package/client/pages/activity/activity-list-page.ts +78 -3
  2. package/client/pages/activity-template/activity-template-list-page.ts +2 -0
  3. package/client/pages/activity-thread/activity-thread-view-page.ts +293 -0
  4. package/client/pages/installable-activity/installable-activity-list-page.ts +2 -0
  5. package/client/pages/todo/done-list-page.ts +3 -3
  6. package/client/pages/todo/todo-list-page.ts +3 -4
  7. package/client/route.ts +4 -0
  8. package/dist-client/components/activity-search-keys-input.d.ts +17 -0
  9. package/dist-client/components/activity-search-keys-input.js +173 -0
  10. package/dist-client/components/activity-search-keys-input.js.map +1 -0
  11. package/dist-client/components/grist-editor-activity-search-key.d.ts +12 -0
  12. package/dist-client/components/grist-editor-activity-search-key.js +70 -0
  13. package/dist-client/components/grist-editor-activity-search-key.js.map +1 -0
  14. package/dist-client/components/popup-activity-search-keys-input.d.ts +17 -0
  15. package/dist-client/components/popup-activity-search-keys-input.js +177 -0
  16. package/dist-client/components/popup-activity-search-keys-input.js.map +1 -0
  17. package/dist-client/pages/activity/activity-list-page.d.ts +3 -1
  18. package/dist-client/pages/activity/activity-list-page.js +73 -3
  19. package/dist-client/pages/activity/activity-list-page.js.map +1 -1
  20. package/dist-client/pages/activity-template/activity-template-list-page.js +2 -0
  21. package/dist-client/pages/activity-template/activity-template-list-page.js.map +1 -1
  22. package/dist-client/pages/activity-thread/activity-thread-view-page.d.ts +43 -0
  23. package/dist-client/pages/activity-thread/activity-thread-view-page.js +268 -0
  24. package/dist-client/pages/activity-thread/activity-thread-view-page.js.map +1 -0
  25. package/dist-client/pages/installable-activity/installable-activity-list-page.js +2 -0
  26. package/dist-client/pages/installable-activity/installable-activity-list-page.js.map +1 -1
  27. package/dist-client/pages/todo/done-list-page.d.ts +1 -1
  28. package/dist-client/pages/todo/done-list-page.js +3 -3
  29. package/dist-client/pages/todo/done-list-page.js.map +1 -1
  30. package/dist-client/pages/todo/todo-list-page.js +3 -4
  31. package/dist-client/pages/todo/todo-list-page.js.map +1 -1
  32. package/dist-client/route.d.ts +1 -1
  33. package/dist-client/route.js +3 -0
  34. package/dist-client/route.js.map +1 -1
  35. package/dist-client/tsconfig.tsbuildinfo +1 -1
  36. package/dist-client/types/domain.d.ts +16 -0
  37. package/dist-client/types/domain.js +3 -0
  38. package/dist-client/types/domain.js.map +1 -0
  39. package/dist-client/types/privilege.d.ts +16 -0
  40. package/dist-client/types/privilege.js +3 -0
  41. package/dist-client/types/privilege.js.map +1 -0
  42. package/dist-client/types/role.d.ts +19 -0
  43. package/dist-client/types/role.js +3 -0
  44. package/dist-client/types/role.js.map +1 -0
  45. package/dist-client/types/user.d.ts +18 -0
  46. package/dist-client/types/user.js +12 -0
  47. package/dist-client/types/user.js.map +1 -0
  48. package/dist-client/types.d.ts +25 -0
  49. package/dist-client/types.js +38 -0
  50. package/dist-client/types.js.map +1 -0
  51. package/dist-server/controllers/activity-installation/callback-registry.js +21 -0
  52. package/dist-server/controllers/activity-installation/callback-registry.js.map +1 -0
  53. package/dist-server/controllers/activity-installation-controller.js +17 -0
  54. package/dist-server/controllers/activity-installation-controller.js.map +1 -0
  55. package/dist-server/controllers/activity-instance/draft.js +1 -6
  56. package/dist-server/controllers/activity-instance/draft.js.map +1 -1
  57. package/dist-server/controllers/activity-instance/post.js +11 -7
  58. package/dist-server/controllers/activity-instance/post.js.map +1 -1
  59. package/dist-server/controllers/call-webhook.js +41 -0
  60. package/dist-server/controllers/call-webhook.js.map +1 -0
  61. package/dist-server/controllers/common.js +3 -0
  62. package/dist-server/controllers/common.js.map +1 -1
  63. package/dist-server/routes.js +30 -0
  64. package/dist-server/routes.js.map +1 -1
  65. package/dist-server/service/activity/activity-history.js +5 -0
  66. package/dist-server/service/activity/activity-history.js.map +1 -1
  67. package/dist-server/service/activity/activity-mutation.js +92 -0
  68. package/dist-server/service/activity/activity-mutation.js.map +1 -1
  69. package/dist-server/service/activity/activity-type.js +8 -0
  70. package/dist-server/service/activity/activity-type.js.map +1 -1
  71. package/dist-server/service/activity/activity.js +6 -3
  72. package/dist-server/service/activity/activity.js.map +1 -1
  73. package/dist-server/service/activity-approval/event-subscriber.js.map +1 -1
  74. package/dist-server/service/activity-key-set/activity-key-item-type.js +50 -0
  75. package/dist-server/service/activity-key-set/activity-key-item-type.js.map +1 -0
  76. package/dist-server/service/activity-key-set/activity-key-set-mutation.js +127 -0
  77. package/dist-server/service/activity-key-set/activity-key-set-mutation.js.map +1 -0
  78. package/dist-server/service/activity-key-set/activity-key-set-query.js +97 -0
  79. package/dist-server/service/activity-key-set/activity-key-set-query.js.map +1 -0
  80. package/dist-server/service/activity-key-set/activity-key-set-type.js +74 -0
  81. package/dist-server/service/activity-key-set/activity-key-set-type.js.map +1 -0
  82. package/dist-server/service/activity-key-set/activity-key-set.js +86 -0
  83. package/dist-server/service/activity-key-set/activity-key-set.js.map +1 -0
  84. package/dist-server/service/activity-key-set/index.js +9 -0
  85. package/dist-server/service/activity-key-set/index.js.map +1 -0
  86. package/dist-server/service/activity-template/activity-template-type.js +16 -0
  87. package/dist-server/service/activity-template/activity-template-type.js.map +1 -1
  88. package/dist-server/service/activity-template/activity-template.js +10 -0
  89. package/dist-server/service/activity-template/activity-template.js.map +1 -1
  90. package/dist-server/service/installable-activity/installable-activity.js +8 -0
  91. package/dist-server/service/installable-activity/installable-activity.js.map +1 -1
  92. package/dist-server/tsconfig.tsbuildinfo +1 -1
  93. package/package.json +9 -8
  94. package/server/controllers/activity-instance/draft.ts +4 -4
  95. package/server/controllers/activity-instance/post.ts +13 -7
  96. package/server/controllers/common.ts +4 -0
  97. package/server/routes.ts +47 -0
  98. package/server/service/activity/activity-history.ts +4 -0
  99. package/server/service/activity/activity-mutation.ts +102 -0
  100. package/server/service/activity/activity-type.ts +6 -0
  101. package/server/service/activity/activity.ts +5 -3
  102. package/server/service/activity-approval/event-subscriber.ts +1 -1
  103. package/server/service/activity-template/activity-template-type.ts +12 -0
  104. package/server/service/activity-template/activity-template.ts +8 -0
  105. package/server/service/installable-activity/installable-activity.ts +6 -0
  106. package/things-factory.config.js +1 -0
  107. package/translations/en.json +2 -0
  108. package/translations/ko.json +2 -0
  109. package/translations/ms.json +2 -0
  110. package/translations/zh.json +2 -0
  111. package/client/pages/activity-thread/activity-thread-view.ts +0 -102
@@ -0,0 +1,16 @@
1
+ export declare class Domain {
2
+ readonly id?: string;
3
+ name?: string;
4
+ description?: string;
5
+ subdomain?: string;
6
+ extType?: string;
7
+ timezone?: string;
8
+ systemFlag?: boolean;
9
+ brandName?: string;
10
+ brandImage?: string;
11
+ contentImage?: string;
12
+ owner?: string;
13
+ theme?: string;
14
+ createdAt?: Date;
15
+ updatedAt?: Date;
16
+ }
@@ -0,0 +1,3 @@
1
+ export class Domain {
2
+ }
3
+ //# sourceMappingURL=domain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.js","sourceRoot":"","sources":["../../client/types/domain.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,MAAM;CAqBlB","sourcesContent":["export class Domain {\n readonly id?: string\n\n name?: string\n description?: string\n\n subdomain?: string\n\n extType?: string\n timezone?: string\n systemFlag?: boolean\n\n brandName?: string\n brandImage?: string\n contentImage?: string\n\n owner?: string\n theme?: string\n\n createdAt?: Date\n updatedAt?: Date\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import { Role } from './role';
2
+ import { User } from './user';
3
+ export declare class Privilege {
4
+ id?: string;
5
+ name?: string;
6
+ category?: string;
7
+ nullable?: true;
8
+ description?: string;
9
+ roles?: Role[];
10
+ creator?: User;
11
+ creatorId?: string;
12
+ updater?: User;
13
+ updaterId?: string;
14
+ createdAt?: Date;
15
+ updatedAt?: Date;
16
+ }
@@ -0,0 +1,3 @@
1
+ export class Privilege {
2
+ }
3
+ //# sourceMappingURL=privilege.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privilege.js","sourceRoot":"","sources":["../../client/types/privilege.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,SAAS;CAwBrB","sourcesContent":["import { Role } from './role'\nimport { User } from './user'\n\nexport class Privilege {\n id?: string\n\n name?: string\n\n category?: string\n\n nullable?: true\n\n description?: string\n\n roles?: Role[]\n\n creator?: User\n\n creatorId?: string\n\n updater?: User\n\n updaterId?: string\n\n createdAt?: Date\n\n updatedAt?: Date\n}\n"]}
@@ -0,0 +1,19 @@
1
+ import { Domain } from './domain';
2
+ import { User } from './user';
3
+ import { Privilege } from './privilege';
4
+ export declare class Role {
5
+ readonly id?: string;
6
+ domain?: Domain;
7
+ domainId?: string;
8
+ name?: string;
9
+ users?: User[];
10
+ privileges?: Privilege[];
11
+ nullable?: true;
12
+ description?: string;
13
+ creator?: User;
14
+ creatorId?: string;
15
+ updater?: User;
16
+ updaterId?: string;
17
+ createdAt?: Date;
18
+ updatedAt?: Date;
19
+ }
@@ -0,0 +1,3 @@
1
+ export class Role {
2
+ }
3
+ //# sourceMappingURL=role.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.js","sourceRoot":"","sources":["../../client/types/role.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,IAAI;CA4BhB","sourcesContent":["import { Domain } from './domain'\nimport { User } from './user'\nimport { Privilege } from './privilege'\n\nexport class Role {\n readonly id?: string\n\n domain?: Domain\n\n domainId?: string\n\n name?: string\n\n users?: User[]\n\n privileges?: Privilege[]\n\n nullable?: true\n\n description?: string\n\n creator?: User\n\n creatorId?: string\n\n updater?: User\n\n updaterId?: string\n\n createdAt?: Date\n\n updatedAt?: Date\n}\n"]}
@@ -0,0 +1,18 @@
1
+ export declare enum UserStatus {
2
+ INACTIVE = "inactive",
3
+ ACTIVATED = "activated",
4
+ DELETED = "deleted",
5
+ LOCKED = "locked",
6
+ BANNED = "banned",
7
+ PWD_RESET_REQUIRED = "password_reset_required"
8
+ }
9
+ export declare class User {
10
+ readonly id?: string;
11
+ name?: string;
12
+ description?: string;
13
+ email?: string;
14
+ creator?: User;
15
+ updater?: User;
16
+ createdAt?: Date;
17
+ updatedAt?: Date;
18
+ }
@@ -0,0 +1,12 @@
1
+ export var UserStatus;
2
+ (function (UserStatus) {
3
+ UserStatus["INACTIVE"] = "inactive";
4
+ UserStatus["ACTIVATED"] = "activated";
5
+ UserStatus["DELETED"] = "deleted";
6
+ UserStatus["LOCKED"] = "locked";
7
+ UserStatus["BANNED"] = "banned";
8
+ UserStatus["PWD_RESET_REQUIRED"] = "password_reset_required";
9
+ })(UserStatus || (UserStatus = {}));
10
+ export class User {
11
+ }
12
+ //# sourceMappingURL=user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../client/types/user.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,UAOX;AAPD,WAAY,UAAU;IACpB,mCAAqB,CAAA;IACrB,qCAAuB,CAAA;IACvB,iCAAmB,CAAA;IACnB,+BAAiB,CAAA;IACjB,+BAAiB,CAAA;IACjB,4DAA8C,CAAA;AAChD,CAAC,EAPW,UAAU,KAAV,UAAU,QAOrB;AAED,MAAM,OAAO,IAAI;CAahB","sourcesContent":["export enum UserStatus {\n INACTIVE = 'inactive',\n ACTIVATED = 'activated',\n DELETED = 'deleted',\n LOCKED = 'locked',\n BANNED = 'banned',\n PWD_RESET_REQUIRED = 'password_reset_required'\n}\n\nexport class User {\n readonly id?: string\n\n name?: string\n description?: string\n\n email?: string\n\n creator?: User\n updater?: User\n\n createdAt?: Date\n updatedAt?: Date\n}\n"]}
@@ -0,0 +1,25 @@
1
+ export declare const ActivityInstanceStatus: {
2
+ display: string;
3
+ value: string;
4
+ }[];
5
+ export declare const Priorities: ({
6
+ display: string;
7
+ value: string;
8
+ } | {
9
+ display: string;
10
+ value: number;
11
+ })[];
12
+ export declare const ActivityUITypes: {
13
+ display: string;
14
+ value: string;
15
+ }[];
16
+ export declare const ActivityTypes: {
17
+ display: string;
18
+ value: string;
19
+ }[];
20
+ export type ActivitySearchKeyItem = {
21
+ name?: string;
22
+ description?: string;
23
+ inputKey?: string;
24
+ tKey?: string;
25
+ };
@@ -0,0 +1,38 @@
1
+ export const ActivityInstanceStatus = [
2
+ { display: '', value: '' },
3
+ { display: 'posted', value: 'posted' },
4
+ { display: 'Assigned', value: 'assigned' },
5
+ { display: 'Started', value: 'started' },
6
+ { display: 'Ended', value: 'ended' },
7
+ { display: 'Aborted', value: 'aborted' }
8
+ ];
9
+ export const Priorities = [
10
+ { display: '', value: '' },
11
+ { display: 'Emergency', value: 3 },
12
+ { display: 'Important', value: 2 },
13
+ { display: 'Normal', value: 1 },
14
+ { display: 'Low', value: 0 }
15
+ ];
16
+ export const ActivityUITypes = [
17
+ { display: '', value: '' },
18
+ { display: 'Generated', value: 'generated' },
19
+ { display: 'Template', value: 'template' },
20
+ { display: 'Board', value: 'board' },
21
+ { display: 'CustomElement', value: 'custom-element' },
22
+ { display: 'Page', value: 'page' },
23
+ { display: 'External URL', value: 'external' }
24
+ ];
25
+ export const ActivityTypes = [
26
+ { display: '', value: '' },
27
+ { display: 'Task', value: 'task' },
28
+ { display: 'Service', value: 'service' },
29
+ { display: 'Send', value: 'send' },
30
+ { display: 'Receive', value: 'receive' },
31
+ { display: 'User', value: 'user' },
32
+ { display: 'Manual', value: 'manual' },
33
+ { display: 'BusinessRule', value: 'business-rule' },
34
+ { display: 'Script', value: 'script' },
35
+ { display: 'Subprocess', value: 'sub-process' },
36
+ { display: 'Call', value: 'call' }
37
+ ];
38
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../client/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IAC1B,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACtC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IAC1C,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IACxC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;IACpC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;CACzC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IAC1B,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE;IAClC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE;IAClC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE;IAC/B,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;CAC7B,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IAC1B,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;IAC5C,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IAC1C,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;IACpC,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,gBAAgB,EAAE;IACrD,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAClC,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE;CAC/C,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IAC1B,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAClC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IACxC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAClC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IACxC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAClC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACtC,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE;IACnD,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACtC,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE;IAC/C,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;CACnC,CAAA","sourcesContent":["export const ActivityInstanceStatus = [\n { display: '', value: '' },\n { display: 'posted', value: 'posted' },\n { display: 'Assigned', value: 'assigned' },\n { display: 'Started', value: 'started' },\n { display: 'Ended', value: 'ended' },\n { display: 'Aborted', value: 'aborted' }\n]\n\nexport const Priorities = [\n { display: '', value: '' },\n { display: 'Emergency', value: 3 },\n { display: 'Important', value: 2 },\n { display: 'Normal', value: 1 },\n { display: 'Low', value: 0 }\n]\n\nexport const ActivityUITypes = [\n { display: '', value: '' },\n { display: 'Generated', value: 'generated' },\n { display: 'Template', value: 'template' },\n { display: 'Board', value: 'board' },\n { display: 'CustomElement', value: 'custom-element' },\n { display: 'Page', value: 'page' },\n { display: 'External URL', value: 'external' }\n]\n\nexport const ActivityTypes = [\n { display: '', value: '' },\n { display: 'Task', value: 'task' },\n { display: 'Service', value: 'service' },\n { display: 'Send', value: 'send' },\n { display: 'Receive', value: 'receive' },\n { display: 'User', value: 'user' },\n { display: 'Manual', value: 'manual' },\n { display: 'BusinessRule', value: 'business-rule' },\n { display: 'Script', value: 'script' },\n { display: 'Subprocess', value: 'sub-process' },\n { display: 'Call', value: 'call' }\n]\n\nexport type ActivitySearchKeyItem = {\n name?: string\n description?: string\n inputKey?: string\n tKey?: string\n}\n"]}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CallbackSystem = void 0;
4
+ class CallbackSystem {
5
+ static register(name, callback) {
6
+ CallbackSystem.registry[name] = callback;
7
+ }
8
+ static unregister(name) {
9
+ delete CallbackSystem.registry[name];
10
+ }
11
+ static callback(name, content) {
12
+ const callback = CallbackSystem.registry[name];
13
+ if (!callback) {
14
+ return;
15
+ }
16
+ callback.callback(content);
17
+ }
18
+ }
19
+ exports.CallbackSystem = CallbackSystem;
20
+ CallbackSystem.registry = {};
21
+ //# sourceMappingURL=callback-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callback-registry.js","sourceRoot":"","sources":["../../../server/controllers/activity-installation/callback-registry.ts"],"names":[],"mappings":";;;AAAA,MAAa,cAAc;IAGzB,MAAM,CAAC,QAAQ,CAAC,IAAY,EAAE,QAAa;QACzC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAA;IAC1C,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAY;QAC5B,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAY,EAAE,OAAY;QACxC,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC9C,IAAI,CAAC,QAAQ,EAAE;YACb,OAAM;SACP;QAED,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;;AAlBH,wCAmBC;AAlBQ,uBAAQ,GAAG,EAAE,CAAA","sourcesContent":["export class CallbackSystem {\n static registry = {}\n\n static register(name: string, callback: any) {\n CallbackSystem.registry[name] = callback\n }\n\n static unregister(name: string) {\n delete CallbackSystem.registry[name]\n }\n\n static callback(name: string, content: any) {\n const callback = CallbackSystem.registry[name]\n if (!callback) {\n return\n }\n\n callback.callback(content)\n }\n}\n"]}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ActivityInstallations = void 0;
4
+ class ActivityInstallations {
5
+ static installActivityTemplate(template) {
6
+ ActivityInstallations.templates[template.name] = template;
7
+ }
8
+ static get(name) {
9
+ return ActivityInstallations.templates[name];
10
+ }
11
+ static list() {
12
+ return Object.values(ActivityInstallations.templates);
13
+ }
14
+ }
15
+ exports.ActivityInstallations = ActivityInstallations;
16
+ ActivityInstallations.templates = {};
17
+ //# sourceMappingURL=activity-installation-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-installation-controller.js","sourceRoot":"","sources":["../../server/controllers/activity-installation-controller.ts"],"names":[],"mappings":";;;AAEA,MAAa,qBAAqB;IAGhC,MAAM,CAAC,uBAAuB,CAAC,QAA6B;QAC1D,qBAAqB,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAA;IAC3D,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,IAAY;QACrB,OAAO,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAC9C,CAAC;IAED,MAAM,CAAC,IAAI;QACT,OAAO,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAA;IACvD,CAAC;;AAbH,sDAcC;AAbQ,+BAAS,GAA4C,EAAE,CAAA","sourcesContent":["import { InstallableActivity } from '../service/installable-activity/installable-activity'\n\nexport class ActivityInstallations {\n static templates: { [name: string]: InstallableActivity } = {}\n\n static installActivityTemplate(template: InstallableActivity) {\n ActivityInstallations.templates[template.name] = template\n }\n\n static get(name: string): InstallableActivity {\n return ActivityInstallations.templates[name]\n }\n\n static list(): InstallableActivity[] {\n return Object.values(ActivityInstallations.templates)\n }\n}\n"]}
@@ -50,12 +50,7 @@ async function draft(activityInstance, context) {
50
50
  });
51
51
  }
52
52
  const activitySearchKeys = (0, common_1.fillActivitySearchKeys)(activity === null || activity === void 0 ? void 0 : activity.searchKeys, input);
53
- return await tx.getRepository(activity_instance_1.ActivityInstance).save(Object.assign(Object.assign(Object.assign(Object.assign({ activityType: activity.activityType,
54
- // uiType: activity.uiType,
55
- // uiSource: activity.uiSource,
56
- // viewType: activity.viewType,
57
- // viewSource: activity.viewSource,
58
- assigneeRole: activity.assigneeRole, supervisoryRole: activity.supervisoryRole }, activityInstance), { transaction: 'draft', activity }), activitySearchKeys), { state: activity_instance_1.ActivityInstanceStatus.Draft, domain, creator: user, updater: user }));
53
+ return await tx.getRepository(activity_instance_1.ActivityInstance).save(Object.assign(Object.assign(Object.assign(Object.assign({ activityType: activity.activityType, uiType: activity.uiType, uiSource: activity.uiSource, viewType: activity.viewType, viewSource: activity.viewSource, assigneeRole: activity.assigneeRole, supervisoryRole: activity.supervisoryRole }, activityInstance), { transaction: 'draft', activity }), activitySearchKeys), { state: activity_instance_1.ActivityInstanceStatus.Draft, domain, creator: user, updater: user }));
59
54
  }
60
55
  exports.draft = draft;
61
56
  //# sourceMappingURL=draft.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"draft.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/draft.ts"],"names":[],"mappings":";;;AAAA,yFAA4G;AAE5G,8DAA0D;AAC1D,sCAAkD;AAE3C,KAAK,UAAU,KAAK,CACzB,gBAAqC,EACrC,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC1C,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,gBAAgB,CAAA;IAErD,IAAI,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAA;IAC3C,IAAI,QAAQ,GAAG,EAAc,CAAA;IAE7B,IAAI,UAAU,EAAE;QACd,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;YAClC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE;YACpD,SAAS,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC;SAC/C,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,0BAA0B,EAAE;gBACpC,QAAQ,EAAE,UAAU;aACrB,CAAC,CACH,CAAA;SACF;KACF;IAED,gBAAgB,CAAC,SAAS,GAAG,UAAU,CAAA;IACvC,gBAAgB,CAAC,KAAK,GAAG,UAAU,CAAA;IACnC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;QAC/B,gBAAgB,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAA;KAChD;IACD,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;QAClC,gBAAgB,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAA;KACtD;IAED,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,YAAY,EAAE;QACnC,gBAAgB,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,CAAA;KAC7E;IAED,IAAI,gBAAgB,CAAC,SAAS,EAAE;QAC9B,gBAAgB,CAAC,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACrE,OAAO;gBACL,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;aACtB,CAAA;QACH,CAAC,CAAC,CAAA;KACH;SAAM;KACN;IAED,IAAI,gBAAgB,CAAC,YAAY,EAAE;QACjC,gBAAgB,CAAC,YAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC3E,OAAO;gBACL,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;aACtB,CAAA;QACH,CAAC,CAAC,CAAA;KACH;IAED,MAAM,kBAAkB,GAAG,IAAA,+BAAsB,EAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,EAAE,KAAK,CAAC,CAAA;IAE9E,OAAO,MAAM,EAAE,CAAC,aAAa,CAAC,oCAAgB,CAAC,CAAC,IAAI,2DAClD,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,2BAA2B;QAC3B,+BAA+B;QAC/B,+BAA+B;QAC/B,mCAAmC;QACnC,YAAY,EAAE,QAAQ,CAAC,YAAY,EACnC,eAAe,EAAE,QAAQ,CAAC,eAAe,IACtC,gBAAgB,KACnB,WAAW,EAAE,OAAO,EACpB,QAAQ,KACL,kBAAkB,KACrB,KAAK,EAAE,0CAAsB,CAAC,KAAK,EACnC,MAAM,EACN,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,IACb,CAAA;AACJ,CAAC;AA5ED,sBA4EC","sourcesContent":["import { ActivityInstance, ActivityInstanceStatus } from '../../service/activity-instance/activity-instance'\nimport { NewActivityInstance } from '../../service/activity-instance/activity-instance-type'\nimport { Activity } from '../../service/activity/activity'\nimport { fillActivitySearchKeys } from '../common'\n\nexport async function draft(\n activityInstance: NewActivityInstance,\n context: ResolverContext\n): Promise<ActivityInstance> {\n const { domain, user, tx } = context.state\n const { activityId, input, dueAt } = activityInstance\n\n var repository = tx.getRepository(Activity)\n var activity = {} as Activity\n\n if (activityId) {\n activity = await repository.findOne({\n where: { domain: { id: domain.id }, id: activityId },\n relations: ['assigneeRole', 'supervisoryRole']\n })\n\n if (!activity) {\n throw new Error(\n context.t('error.activity not found', {\n activity: activityId\n })\n )\n }\n }\n\n activityInstance.adhocType = 'standard'\n activityInstance.refBy = activityId\n if (!activityInstance.assignees) {\n activityInstance.assignees = activity.assignees\n }\n if (!activityInstance.approvalLine) {\n activityInstance.approvalLine = activity.approvalLine\n }\n\n if (!dueAt && activity.standardTime) {\n activityInstance.dueAt = new Date(Date.now() + activity.standardTime * 1000)\n }\n\n if (activityInstance.assignees) {\n activityInstance.assignees = activityInstance.assignees.map(assignee => {\n return {\n type: assignee.type,\n value: assignee.value\n }\n })\n } else {\n }\n\n if (activityInstance.approvalLine) {\n activityInstance.approvalLine = activityInstance.approvalLine.map(approval => {\n return {\n type: approval.type,\n value: approval.value\n }\n })\n }\n\n const activitySearchKeys = fillActivitySearchKeys(activity?.searchKeys, input)\n\n return await tx.getRepository(ActivityInstance).save({\n activityType: activity.activityType,\n // uiType: activity.uiType,\n // uiSource: activity.uiSource,\n // viewType: activity.viewType,\n // viewSource: activity.viewSource,\n assigneeRole: activity.assigneeRole,\n supervisoryRole: activity.supervisoryRole,\n ...activityInstance,\n transaction: 'draft',\n activity,\n ...activitySearchKeys,\n state: ActivityInstanceStatus.Draft,\n domain,\n creator: user,\n updater: user\n })\n}\n"]}
1
+ {"version":3,"file":"draft.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/draft.ts"],"names":[],"mappings":"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","sourcesContent":["import { ActivityInstance, ActivityInstanceStatus } from '../../service/activity-instance/activity-instance'\nimport { NewActivityInstance } from '../../service/activity-instance/activity-instance-type'\nimport { Activity } from '../../service/activity/activity'\nimport { fillActivitySearchKeys } from '../common'\n\nexport async function draft(\n activityInstance: NewActivityInstance,\n context: ResolverContext\n): Promise<ActivityInstance> {\n const { domain, user, tx } = context.state\n const { activityId, input, dueAt } = activityInstance\n\n var repository = tx.getRepository(Activity)\n var activity = {} as Activity\n\n if (activityId) {\n activity = await repository.findOne({\n where: { domain: { id: domain.id }, id: activityId },\n relations: ['assigneeRole', 'supervisoryRole']\n })\n\n if (!activity) {\n throw new Error(\n context.t('error.activity not found', {\n activity: activityId\n })\n )\n }\n }\n\n activityInstance.adhocType = 'standard'\n activityInstance.refBy = activityId\n if (!activityInstance.assignees) {\n activityInstance.assignees = activity.assignees\n }\n if (!activityInstance.approvalLine) {\n activityInstance.approvalLine = activity.approvalLine\n }\n\n if (!dueAt && activity.standardTime) {\n activityInstance.dueAt = new Date(Date.now() + activity.standardTime * 1000)\n }\n\n if (activityInstance.assignees) {\n activityInstance.assignees = activityInstance.assignees.map(assignee => {\n return {\n type: assignee.type,\n value: assignee.value\n }\n })\n } else {\n }\n\n if (activityInstance.approvalLine) {\n activityInstance.approvalLine = activityInstance.approvalLine.map(approval => {\n return {\n type: approval.type,\n value: approval.value\n }\n })\n }\n\n const activitySearchKeys = fillActivitySearchKeys(activity?.searchKeys, input)\n\n return await tx.getRepository(ActivityInstance).save({\n activityType: activity.activityType,\n uiType: activity.uiType,\n uiSource: activity.uiSource,\n viewType: activity.viewType,\n viewSource: activity.viewSource,\n assigneeRole: activity.assigneeRole,\n supervisoryRole: activity.supervisoryRole,\n ...activityInstance,\n transaction: 'draft',\n activity,\n ...activitySearchKeys,\n state: ActivityInstanceStatus.Draft,\n domain,\n creator: user,\n updater: user\n })\n}\n"]}
@@ -37,19 +37,23 @@ async function post(activityInstance, context) {
37
37
  }));
38
38
  }
39
39
  }
40
+ activityInstance.name = activity.name;
41
+ activityInstance.description = activity.description;
40
42
  activityInstance.activityType = activity.activityType;
41
- // activityInstance.uiType = activity.uiType
42
- // activityInstance.uiSource = activity.uiSource
43
+ activityInstance.uiType = activity.uiType;
44
+ activityInstance.uiSource = activity.uiSource;
45
+ activityInstance.viewType = activity.viewType;
46
+ activityInstance.viewSource = activity.viewSource;
43
47
  activityInstance.assigneeRole = activity.assigneeRole;
44
48
  activityInstance.supervisoryRole = activity.supervisoryRole;
45
49
  if (!assignees || !approvalLine) {
46
50
  activityInstance.adhocType = 'standard';
47
51
  activityInstance.refBy = activityId;
48
- if (!activityInstance.assignees) {
49
- activityInstance.assignees = activity.assignees;
52
+ if (!assignees) {
53
+ assignees = activityInstance.assignees = activity.assignees;
50
54
  }
51
- if (!activityInstance.approvalLine) {
52
- activityInstance.approvalLine = activity.approvalLine;
55
+ if (!approvalLine) {
56
+ approvalLine = activityInstance.approvalLine = activity.approvalLine;
53
57
  }
54
58
  if (!dueAt && activity.standardTime) {
55
59
  activityInstance.dueAt = new Date(issuedAt.getTime() + activity.standardTime * 1000);
@@ -58,7 +62,7 @@ async function post(activityInstance, context) {
58
62
  }
59
63
  const activitySearchKeys = (0, common_1.fillActivitySearchKeys)(activity === null || activity === void 0 ? void 0 : activity.searchKeys, input);
60
64
  const posted = await tx.getRepository(activity_instance_1.ActivityInstance).save(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ creator: user }, origin), activityInstance), { transaction: 'post', activity }), activitySearchKeys), { state: activity_instance_1.ActivityInstanceStatus.Posted, domain, issuer: user, updater: user, issuedAt }));
61
- const assignedUsers = await Promise.all(assignees.map(assignee => (0, common_1.getSystemUserFromOrgMemberItem)(assignee, context)));
65
+ const assignedUsers = await Promise.all((assignees || []).map(assignee => (0, common_1.getSystemUserFromOrgMemberItem)(assignee, context)));
62
66
  if (assignedUsers.length == 0 && posted.threadsMin === 0 && posted.assigneeRoleId) {
63
67
  await (0, common_1.createActivityThreadsForAllRoleUsers)('post', posted, context);
64
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"post.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/post.ts"],"names":[],"mappings":"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","sourcesContent":["import { Activity } from '../../service/activity/activity'\nimport { ActivityInstance, ActivityInstanceStatus } from '../../service/activity-instance/activity-instance'\nimport { ActivityInstancePost } from '../../service/activity-instance/activity-instance-type'\nimport {\n createActivityThreadsForAllRoleUsers,\n createActivityThreadsForUsers,\n getSystemUserFromOrgMemberItem,\n fillActivitySearchKeys\n} from '../common'\n\nexport async function post(\n activityInstance: ActivityInstancePost,\n context: ResolverContext\n): Promise<ActivityInstance> {\n const { domain, user, tx } = context.state\n const issuedAt = new Date()\n var { id, assignees, dueAt, approvalLine, activityId, input } = activityInstance\n\n var origin = id\n ? await tx.getRepository(ActivityInstance).findOne({\n where: { domain: { id: domain.id }, id },\n relations: [\n 'domain',\n 'activity',\n 'assigneeRole',\n 'supervisoryRole',\n 'updater',\n 'creator',\n 'starter',\n 'terminator'\n ]\n })\n : null\n\n if (!origin && activityId) {\n var repository = tx.getRepository(Activity)\n var activity = {} as Activity\n\n if (activityId) {\n activity = await repository.findOne({\n where: { domain: { id: domain.id }, id: activityId },\n relations: ['assigneeRole', 'supervisoryRole']\n })\n\n if (!activity) {\n throw new Error(\n context.t('error.activity not found', {\n activity: activityId\n })\n )\n }\n }\n\n activityInstance.activityType = activity.activityType\n // activityInstance.uiType = activity.uiType\n // activityInstance.uiSource = activity.uiSource\n activityInstance.assigneeRole = activity.assigneeRole\n activityInstance.supervisoryRole = activity.supervisoryRole\n\n if (!assignees || !approvalLine) {\n activityInstance.adhocType = 'standard'\n activityInstance.refBy = activityId\n if (!activityInstance.assignees) {\n activityInstance.assignees = activity.assignees\n }\n if (!activityInstance.approvalLine) {\n activityInstance.approvalLine = activity.approvalLine\n }\n\n if (!dueAt && activity.standardTime) {\n activityInstance.dueAt = new Date(issuedAt.getTime() + activity.standardTime * 1000)\n }\n }\n }\n\n const activitySearchKeys = fillActivitySearchKeys(activity?.searchKeys, input)\n\n const posted = await tx.getRepository(ActivityInstance).save({\n creator: user,\n ...origin,\n ...activityInstance,\n transaction: 'post',\n activity,\n ...activitySearchKeys,\n state: ActivityInstanceStatus.Posted,\n domain,\n issuer: user,\n updater: user,\n issuedAt\n })\n\n const assignedUsers = await Promise.all(assignees.map(assignee => getSystemUserFromOrgMemberItem(assignee, context)))\n\n if (assignedUsers.length == 0 && posted.threadsMin === 0 && posted.assigneeRoleId) {\n await createActivityThreadsForAllRoleUsers('post', posted, context)\n }\n\n if (assignedUsers.length > 0) {\n await createActivityThreadsForUsers('post', posted, assignedUsers, context)\n }\n\n return await tx.getRepository(ActivityInstance).findOneBy({ id: posted.id })\n}\n"]}
1
+ {"version":3,"file":"post.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/post.ts"],"names":[],"mappings":"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","sourcesContent":["import { Activity } from '../../service/activity/activity'\nimport { ActivityInstance, ActivityInstanceStatus } from '../../service/activity-instance/activity-instance'\nimport { ActivityInstancePost } from '../../service/activity-instance/activity-instance-type'\nimport {\n createActivityThreadsForAllRoleUsers,\n createActivityThreadsForUsers,\n getSystemUserFromOrgMemberItem,\n fillActivitySearchKeys\n} from '../common'\n\nexport async function post(\n activityInstance: ActivityInstancePost,\n context: ResolverContext\n): Promise<ActivityInstance> {\n const { domain, user, tx } = context.state\n const issuedAt = new Date()\n var { id, assignees, dueAt, approvalLine, activityId, input } = activityInstance\n\n var origin = id\n ? await tx.getRepository(ActivityInstance).findOne({\n where: { domain: { id: domain.id }, id },\n relations: [\n 'domain',\n 'activity',\n 'assigneeRole',\n 'supervisoryRole',\n 'updater',\n 'creator',\n 'starter',\n 'terminator'\n ]\n })\n : null\n\n if (!origin && activityId) {\n var repository = tx.getRepository(Activity)\n var activity = {} as Activity\n\n if (activityId) {\n activity = await repository.findOne({\n where: { domain: { id: domain.id }, id: activityId },\n relations: ['assigneeRole', 'supervisoryRole']\n })\n\n if (!activity) {\n throw new Error(\n context.t('error.activity not found', {\n activity: activityId\n })\n )\n }\n }\n\n activityInstance.name = activity.name\n activityInstance.description = activity.description\n activityInstance.activityType = activity.activityType\n activityInstance.uiType = activity.uiType\n activityInstance.uiSource = activity.uiSource\n activityInstance.viewType = activity.viewType\n activityInstance.viewSource = activity.viewSource\n activityInstance.assigneeRole = activity.assigneeRole\n activityInstance.supervisoryRole = activity.supervisoryRole\n\n if (!assignees || !approvalLine) {\n activityInstance.adhocType = 'standard'\n activityInstance.refBy = activityId\n if (!assignees) {\n assignees = activityInstance.assignees = activity.assignees\n }\n if (!approvalLine) {\n approvalLine = activityInstance.approvalLine = activity.approvalLine\n }\n\n if (!dueAt && activity.standardTime) {\n activityInstance.dueAt = new Date(issuedAt.getTime() + activity.standardTime * 1000)\n }\n }\n }\n\n const activitySearchKeys = fillActivitySearchKeys(activity?.searchKeys, input)\n\n const posted = await tx.getRepository(ActivityInstance).save({\n creator: user,\n ...origin,\n ...activityInstance,\n transaction: 'post',\n activity,\n ...activitySearchKeys,\n state: ActivityInstanceStatus.Posted,\n domain,\n issuer: user,\n updater: user,\n issuedAt\n })\n\n const assignedUsers = await Promise.all(\n (assignees || []).map(assignee => getSystemUserFromOrgMemberItem(assignee, context))\n )\n\n if (assignedUsers.length == 0 && posted.threadsMin === 0 && posted.assigneeRoleId) {\n await createActivityThreadsForAllRoleUsers('post', posted, context)\n }\n\n if (assignedUsers.length > 0) {\n await createActivityThreadsForUsers('post', posted, assignedUsers, context)\n }\n\n return await tx.getRepository(ActivityInstance).findOneBy({ id: posted.id })\n}\n"]}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.callWebhook = void 0;
4
+ const auth_base_1 = require("@things-factory/auth-base");
5
+ const shell_1 = require("@things-factory/shell");
6
+ async function callWebhook(domain, tag, data, tx) {
7
+ /*
8
+ TODO webhook callback의 다양한 subscription 조건을 지원한다.
9
+ - activity의 client에 해당하는 application
10
+ - activityInstance의 starter에 해당하는 application
11
+ - 모든 이벤트를 받고자하는 application
12
+ - 특정 activity들의 이벤트를 받고자하는 application
13
+ */
14
+ const applications = await (tx ? tx.getRepository(auth_base_1.Application) : (0, shell_1.getRepository)(auth_base_1.Application)).findBy({
15
+ domain: { id: domain.id }
16
+ });
17
+ const options = {
18
+ method: 'post',
19
+ headers: {
20
+ 'x-things-factory-domain': domain.name,
21
+ 'Content-Type': 'application/json'
22
+ },
23
+ body: {
24
+ tag,
25
+ data
26
+ }
27
+ };
28
+ try {
29
+ applications
30
+ .filter(app => app.webhook)
31
+ .every(app => {
32
+ const webhook = app.webhook;
33
+ fetch(webhook, options);
34
+ });
35
+ }
36
+ catch (err) {
37
+ console.error(err);
38
+ }
39
+ }
40
+ exports.callWebhook = callWebhook;
41
+ //# sourceMappingURL=call-webhook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-webhook.js","sourceRoot":"","sources":["../../server/controllers/call-webhook.ts"],"names":[],"mappings":";;;AACA,yDAAuD;AACvD,iDAA6D;AAEtD,KAAK,UAAU,WAAW,CAAC,MAAc,EAAE,GAAW,EAAE,IAAS,EAAE,EAAkB;IAC1F;;;;;;MAME;IAEF,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,uBAAW,CAAC,CAAC,CAAC,CAAC,IAAA,qBAAa,EAAC,uBAAW,CAAC,CAAC,CAAC,MAAM,CAAC;QAClG,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;KAC1B,CAAC,CAAA;IACF,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,yBAAyB,EAAE,MAAM,CAAC,IAAI;YACtC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE;YACJ,GAAG;YACH,IAAI;SACE;KACT,CAAA;IAED,IAAI;QACF,YAAY;aACT,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;aAC1B,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAA;YAE3B,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;KACL;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;KACnB;AACH,CAAC;AAnCD,kCAmCC","sourcesContent":["import { EntityManager } from 'typeorm'\nimport { Application } from '@things-factory/auth-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nexport async function callWebhook(domain: Domain, tag: string, data: any, tx?: EntityManager) {\n /* \n TODO webhook callback의 다양한 subscription 조건을 지원한다. \n - activity의 client에 해당하는 application\n - activityInstance의 starter에 해당하는 application\n - 모든 이벤트를 받고자하는 application\n - 특정 activity들의 이벤트를 받고자하는 application\n */\n\n const applications = await (tx ? tx.getRepository(Application) : getRepository(Application)).findBy({\n domain: { id: domain.id }\n })\n const options = {\n method: 'post',\n headers: {\n 'x-things-factory-domain': domain.name,\n 'Content-Type': 'application/json'\n },\n body: {\n tag,\n data\n } as any\n }\n\n try {\n applications\n .filter(app => app.webhook)\n .every(app => {\n const webhook = app.webhook\n\n fetch(webhook, options)\n })\n } catch (err) {\n console.error(err)\n }\n}\n"]}
@@ -195,6 +195,9 @@ async function getSystemUserFromOrgMemberItem(item, context) {
195
195
  }
196
196
  exports.getSystemUserFromOrgMemberItem = getSystemUserFromOrgMemberItem;
197
197
  function fillActivitySearchKeys(searchKeys, input) {
198
+ if (!input || typeof input !== 'object') {
199
+ return;
200
+ }
198
201
  return searchKeys === null || searchKeys === void 0 ? void 0 : searchKeys.reduce((sum, key, index) => {
199
202
  const value = input[key.inputKey];
200
203
  if (value != null) {
@@ -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 { ActivitySearchKeyItem } from '../service/activity/activity-search-key-item-type'\nimport { ActivityInstance, ActivityInstanceStatus, AssigneeItem } from '../service/activity-instance/activity-instance'\nimport { ActivityThread, ActivityThreadStatus } from '../service/activity-thread/activity-thread'\nimport { Department, Employee, ApprovalLineItem, OrgMemberTargetType } from '@things-factory/organization'\nimport { ActivityInstallations } from './activity-installation/activity-installation-controller'\n\nexport async function updateActivityInstanceState(id: string, context: ResolverContext) {\n const { tx } = context.state\n\n var activityInstance = await tx.getRepository(ActivityInstance).findOne({\n where: { id },\n relations: ['domain', 'activity', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']\n })\n\n activityInstance = await tx.getRepository(ActivityInstance).save({\n ...activityInstance,\n transaction: 'thread' /* change by transaction of activity thread */,\n ...(await evalActivityInstanceState(id, context))\n })\n\n await ActivityInstallations.callback(activityInstance.activity.name, activityInstance, context)\n}\n\nexport async function evalActivityInstanceState(\n id: string,\n context: ResolverContext\n): Promise<Partial<ActivityInstance>> {\n const { tx, user } = context.state\n\n const activityInstance = await tx.getRepository(ActivityInstance).findOne({\n where: { id },\n relations: ['activityThreads']\n })\n const { threadsMin, activityThreads, state, dueAt } = activityInstance\n\n const validThreads = activityThreads.filter(thread => thread.isValid())\n const pendingStartedThreads = activityThreads.filter(thread => thread.isPendingStarted())\n const pendingEndedThreads = activityThreads.filter(thread => thread.isPendingEnded())\n\n switch (true) {\n case state === ActivityInstanceStatus.Draft:\n case state === ActivityInstanceStatus.Ended:\n case state === ActivityInstanceStatus.Aborted:\n return {}\n case validThreads.length === 0:\n return {\n state: ActivityInstanceStatus.Posted\n }\n case threadsMin > validThreads.length:\n return {\n state: ActivityInstanceStatus.WaitingAssignment\n }\n case pendingStartedThreads.length > 0:\n return {\n state: ActivityInstanceStatus.Assigned,\n assignedAt: new Date()\n }\n case pendingEndedThreads.length > 0:\n var started = !dueAt || dueAt.getTime() > Date.now()\n var changed =\n (started && state !== ActivityInstanceStatus.Started) || (!started && state !== ActivityInstanceStatus.Pending)\n\n return !changed\n ? null\n : started\n ? {\n state: ActivityInstanceStatus.Started,\n startedAt: new Date(),\n starter: user\n }\n : {\n state: ActivityInstanceStatus.Pending\n }\n default:\n return {\n state: activityThreads.find(thread => thread.state == ActivityThreadStatus.Aborted)\n ? ActivityInstanceStatus.Aborted\n : ActivityInstanceStatus.Ended,\n reason: '',\n output: activityThreads\n .filter(thread => (thread.state = ActivityThreadStatus.Ended))\n .reduce((sum, thread) => {\n sum[thread.assigneeId] = thread.output\n return sum\n }, {} as any),\n terminatedAt: new Date(),\n terminator: user\n }\n }\n}\n\nexport async function createActivityThreadsForUsers(\n transaction: string,\n activityInstance: ActivityInstance,\n assignees: User[],\n context: ResolverContext\n): Promise<ActivityThread[]> {\n const { domain, user, tx } = context.state\n\n const threadRepo = tx.getRepository(ActivityThread)\n const now = new Date()\n\n const distinct = assignees.filter((assignee, idx) => {\n return assignee && !assignees.slice(0, idx).find(x => x.id == assignee.id)\n })\n\n const result = await threadRepo.save(\n distinct.map(assignee => {\n return {\n assignee,\n state: ActivityThreadStatus.Assigned,\n activityInstance,\n domain,\n transaction,\n creator: user,\n updater: user,\n dueAt: activityInstance.dueAt,\n assignedAt: now\n } as any\n })\n )\n\n await updateActivityInstanceState(activityInstance.id, context)\n\n return result\n}\n\nexport async function createActivityThreadsForAllRoleUsers(\n transaction: string,\n activityInstance: ActivityInstance,\n context: ResolverContext\n): Promise<ActivityThread[]> {\n const { tx } = context.state\n\n // find how many users are having given role\n const assigneeRole = (await tx.getRepository(Role).findOne({\n where: { id: activityInstance.assigneeRoleId },\n relations: ['users']\n })) as Role\n const assignees = (assigneeRole?.users || []).filter(user => user.userType == 'user')\n\n if (assignees.length === 0) {\n throw new Error(\"there's no users having given role\")\n }\n\n // create activity-thread for all of users having given role\n return await createActivityThreadsForUsers(transaction, activityInstance, assignees, context)\n}\n\nexport async function getSystemUserFromMyDepartmentManager(context: ResolverContext): Promise<User> {\n const { domain, user, tx } = context.state\n\n const employee = await tx.getRepository(Employee).findOneBy({\n domain: { id: domain.id },\n user: { id: user.id }\n })\n\n if (!employee || !employee.departmentId) {\n return\n }\n\n const department = await tx.getRepository(Department).findOne({\n where: {\n id: employee.departmentId\n }\n })\n\n if (!department || !department.managerId) return\n\n const manager = await tx.getRepository(Employee).findOne({\n where: {\n domain: { id: domain.id },\n id: department.managerId\n },\n relations: ['user']\n })\n\n return manager?.user\n}\n\nexport async function getSystemUserFromMySupervosor(context: ResolverContext): Promise<User> {\n const { domain, user, tx } = context.state\n\n const employee = await tx.getRepository(Employee).findOneBy({\n domain: { id: domain.id },\n user: { id: user.id }\n })\n\n if (!employee || !employee.supervisorId) {\n return\n }\n\n const supervisor = await tx.getRepository(Employee).findOne({\n where: {\n id: employee.supervisorId\n },\n relations: ['user']\n })\n\n return supervisor?.user\n}\n\nexport async function getSystemUserFromOrgMemberItem(\n item: AssigneeItem | ApprovalLineItem,\n context: ResolverContext\n): Promise<User> {\n const { domain, user, tx } = context.state\n\n const { type, value: id } = item\n\n if (type == OrgMemberTargetType.Employee) {\n const employee = await tx.getRepository(Employee).findOne({ where: { id }, relations: ['user'] })\n\n if (!employee || !employee.user) {\n return\n }\n return employee.user\n } else if (type == OrgMemberTargetType.Department) {\n const department = await tx.getRepository(Department).findOne({ where: { id }, relations: ['manager'] })\n\n if (!department || !department.manager) {\n return\n }\n return await tx.getRepository(User).findOneBy({ id: department.manager.userId })\n } else if (type == OrgMemberTargetType.Role) {\n const role = await tx.getRepository(Role).findOne({ where: { id }, relations: ['users'] })\n\n if (!role || !role.users || !role.users[0]) {\n return\n }\n\n return await tx.getRepository(User).findOneBy({ id: role.users[0].id })\n } else if (type == OrgMemberTargetType.Myself) {\n return user\n } else if (type == OrgMemberTargetType.MyDepartment) {\n return await getSystemUserFromMyDepartmentManager(context)\n } else if (type == OrgMemberTargetType.MySupervisor) {\n return await getSystemUserFromMySupervosor(context)\n }\n}\n\nexport function fillActivitySearchKeys(searchKeys: ActivitySearchKeyItem[], input: { [key: string]: any }) {\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 { ActivitySearchKeyItem } from '../service/activity/activity-search-key-item-type'\nimport { ActivityInstance, ActivityInstanceStatus, AssigneeItem } from '../service/activity-instance/activity-instance'\nimport { ActivityThread, ActivityThreadStatus } from '../service/activity-thread/activity-thread'\nimport { Department, Employee, ApprovalLineItem, OrgMemberTargetType } from '@things-factory/organization'\nimport { ActivityInstallations } from './activity-installation/activity-installation-controller'\n\nexport async function updateActivityInstanceState(id: string, context: ResolverContext) {\n const { tx } = context.state\n\n var activityInstance = await tx.getRepository(ActivityInstance).findOne({\n where: { id },\n relations: ['domain', 'activity', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']\n })\n\n activityInstance = await tx.getRepository(ActivityInstance).save({\n ...activityInstance,\n transaction: 'thread' /* change by transaction of activity thread */,\n ...(await evalActivityInstanceState(id, context))\n })\n\n await ActivityInstallations.callback(activityInstance.activity.name, activityInstance, context)\n}\n\nexport async function evalActivityInstanceState(\n id: string,\n context: ResolverContext\n): Promise<Partial<ActivityInstance>> {\n const { tx, user } = context.state\n\n const activityInstance = await tx.getRepository(ActivityInstance).findOne({\n where: { id },\n relations: ['activityThreads']\n })\n const { threadsMin, activityThreads, state, dueAt } = activityInstance\n\n const validThreads = activityThreads.filter(thread => thread.isValid())\n const pendingStartedThreads = activityThreads.filter(thread => thread.isPendingStarted())\n const pendingEndedThreads = activityThreads.filter(thread => thread.isPendingEnded())\n\n switch (true) {\n case state === ActivityInstanceStatus.Draft:\n case state === ActivityInstanceStatus.Ended:\n case state === ActivityInstanceStatus.Aborted:\n return {}\n case validThreads.length === 0:\n return {\n state: ActivityInstanceStatus.Posted\n }\n case threadsMin > validThreads.length:\n return {\n state: ActivityInstanceStatus.WaitingAssignment\n }\n case pendingStartedThreads.length > 0:\n return {\n state: ActivityInstanceStatus.Assigned,\n assignedAt: new Date()\n }\n case pendingEndedThreads.length > 0:\n var started = !dueAt || dueAt.getTime() > Date.now()\n var changed =\n (started && state !== ActivityInstanceStatus.Started) || (!started && state !== ActivityInstanceStatus.Pending)\n\n return !changed\n ? null\n : started\n ? {\n state: ActivityInstanceStatus.Started,\n startedAt: new Date(),\n starter: user\n }\n : {\n state: ActivityInstanceStatus.Pending\n }\n default:\n return {\n state: activityThreads.find(thread => thread.state == ActivityThreadStatus.Aborted)\n ? ActivityInstanceStatus.Aborted\n : ActivityInstanceStatus.Ended,\n reason: '',\n output: activityThreads\n .filter(thread => (thread.state = ActivityThreadStatus.Ended))\n .reduce((sum, thread) => {\n sum[thread.assigneeId] = thread.output\n return sum\n }, {} as any),\n terminatedAt: new Date(),\n terminator: user\n }\n }\n}\n\nexport async function createActivityThreadsForUsers(\n transaction: string,\n activityInstance: ActivityInstance,\n assignees: User[],\n context: ResolverContext\n): Promise<ActivityThread[]> {\n const { domain, user, tx } = context.state\n\n const threadRepo = tx.getRepository(ActivityThread)\n const now = new Date()\n\n const distinct = assignees.filter((assignee, idx) => {\n return assignee && !assignees.slice(0, idx).find(x => x.id == assignee.id)\n })\n\n const result = await threadRepo.save(\n distinct.map(assignee => {\n return {\n assignee,\n state: ActivityThreadStatus.Assigned,\n activityInstance,\n domain,\n transaction,\n creator: user,\n updater: user,\n dueAt: activityInstance.dueAt,\n assignedAt: now\n } as any\n })\n )\n\n await updateActivityInstanceState(activityInstance.id, context)\n\n return result\n}\n\nexport async function createActivityThreadsForAllRoleUsers(\n transaction: string,\n activityInstance: ActivityInstance,\n context: ResolverContext\n): Promise<ActivityThread[]> {\n const { tx } = context.state\n\n // find how many users are having given role\n const assigneeRole = (await tx.getRepository(Role).findOne({\n where: { id: activityInstance.assigneeRoleId },\n relations: ['users']\n })) as Role\n const assignees = (assigneeRole?.users || []).filter(user => user.userType == 'user')\n\n if (assignees.length === 0) {\n throw new Error(\"there's no users having given role\")\n }\n\n // create activity-thread for all of users having given role\n return await createActivityThreadsForUsers(transaction, activityInstance, assignees, context)\n}\n\nexport async function getSystemUserFromMyDepartmentManager(context: ResolverContext): Promise<User> {\n const { domain, user, tx } = context.state\n\n const employee = await tx.getRepository(Employee).findOneBy({\n domain: { id: domain.id },\n user: { id: user.id }\n })\n\n if (!employee || !employee.departmentId) {\n return\n }\n\n const department = await tx.getRepository(Department).findOne({\n where: {\n id: employee.departmentId\n }\n })\n\n if (!department || !department.managerId) return\n\n const manager = await tx.getRepository(Employee).findOne({\n where: {\n domain: { id: domain.id },\n id: department.managerId\n },\n relations: ['user']\n })\n\n return manager?.user\n}\n\nexport async function getSystemUserFromMySupervosor(context: ResolverContext): Promise<User> {\n const { domain, user, tx } = context.state\n\n const employee = await tx.getRepository(Employee).findOneBy({\n domain: { id: domain.id },\n user: { id: user.id }\n })\n\n if (!employee || !employee.supervisorId) {\n return\n }\n\n const supervisor = await tx.getRepository(Employee).findOne({\n where: {\n id: employee.supervisorId\n },\n relations: ['user']\n })\n\n return supervisor?.user\n}\n\nexport async function getSystemUserFromOrgMemberItem(\n item: AssigneeItem | ApprovalLineItem,\n context: ResolverContext\n): Promise<User> {\n const { domain, user, tx } = context.state\n\n const { type, value: id } = item\n\n if (type == OrgMemberTargetType.Employee) {\n const employee = await tx.getRepository(Employee).findOne({ where: { id }, relations: ['user'] })\n\n if (!employee || !employee.user) {\n return\n }\n return employee.user\n } else if (type == OrgMemberTargetType.Department) {\n const department = await tx.getRepository(Department).findOne({ where: { id }, relations: ['manager'] })\n\n if (!department || !department.manager) {\n return\n }\n return await tx.getRepository(User).findOneBy({ id: department.manager.userId })\n } else if (type == OrgMemberTargetType.Role) {\n const role = await tx.getRepository(Role).findOne({ where: { id }, relations: ['users'] })\n\n if (!role || !role.users || !role.users[0]) {\n return\n }\n\n return await tx.getRepository(User).findOneBy({ id: role.users[0].id })\n } else if (type == OrgMemberTargetType.Myself) {\n return user\n } else if (type == OrgMemberTargetType.MyDepartment) {\n return await getSystemUserFromMyDepartmentManager(context)\n } else if (type == OrgMemberTargetType.MySupervisor) {\n return await getSystemUserFromMySupervosor(context)\n }\n}\n\nexport function fillActivitySearchKeys(searchKeys: ActivitySearchKeyItem[], 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,3 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const shell_1 = require("@things-factory/shell");
4
+ const post_1 = require("./controllers/activity-instance/post");
1
5
  process.on('bootstrap-module-global-public-route', (app, globalPublicRouter) => {
2
6
  /*
3
7
  * can add global public routes to application (auth not required, tenancy not required)
@@ -5,6 +9,32 @@ process.on('bootstrap-module-global-public-route', (app, globalPublicRouter) =>
5
9
  * ex) routes.get('/path', async(context, next) => {})
6
10
  * ex) routes.post('/path', async(context, next) => {})
7
11
  */
12
+ /* When a callback occurs from the scheduler when a scheduled dataset is on schedule, data collection task for the dataset should be issued. */
13
+ globalPublicRouter.post('/callback-schedule-for-activity', async (context, next) => {
14
+ const { client } = context.request.body;
15
+ if (!client || typeof client !== 'object') {
16
+ throw new Error('client property should be a part of callback body.');
17
+ }
18
+ const { group: domainId, key: activityId } = client;
19
+ if (!domainId || !activityId) {
20
+ throw new Error(`group(${domainId}) and key(${activityId}) properties should not be empty`);
21
+ }
22
+ if (!domainId || !activityId) {
23
+ throw new Error(`domainId(${domainId}) and activityId(${activityId}) properties should not be empty`);
24
+ }
25
+ await (0, shell_1.getDataSource)().transaction(async (tx) => {
26
+ const domain = await tx.getRepository(shell_1.Domain).findOneBy({ id: domainId });
27
+ if (!domain) {
28
+ throw new Error(`domain(${domainId}) not found`);
29
+ }
30
+ context.state = Object.assign(Object.assign({}, context.state), { domain,
31
+ tx });
32
+ await (0, post_1.post)({
33
+ activityId
34
+ }, context);
35
+ });
36
+ context.status = 200;
37
+ });
8
38
  });
9
39
  process.on('bootstrap-module-global-private-route', (app, globalPrivateRouter) => {
10
40
  /*
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../server/routes.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,EAAE,CAAC,sCAA6C,EAAE,CAAC,GAAG,EAAE,kBAAkB,EAAE,EAAE;IACpF;;;;;OAKG;AACL,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,uCAA8C,EAAE,CAAC,GAAG,EAAE,mBAAmB,EAAE,EAAE;IACtF;;OAEG;AACL,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,sCAA6C,EAAE,CAAC,GAAG,EAAE,kBAAkB,EAAE,EAAE;IACpF;;OAEG;AACL,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,uCAA8C,EAAE,CAAC,GAAG,EAAE,mBAAmB,EAAE,EAAE;IACtF;;OAEG;AACL,CAAC,CAAC,CAAA","sourcesContent":["process.on('bootstrap-module-global-public-route' as any, (app, globalPublicRouter) => {\n /*\n * can add global public routes to application (auth not required, tenancy not required)\n *\n * ex) routes.get('/path', async(context, next) => {})\n * ex) routes.post('/path', async(context, next) => {})\n */\n})\n\nprocess.on('bootstrap-module-global-private-route' as any, (app, globalPrivateRouter) => {\n /*\n * can add global private routes to application (auth required, tenancy not required)\n */\n})\n\nprocess.on('bootstrap-module-domain-public-route' as any, (app, domainPublicRouter) => {\n /*\n * can add domain public routes to application (auth not required, tenancy required)\n */\n})\n\nprocess.on('bootstrap-module-domain-private-route' as any, (app, domainPrivateRouter) => {\n /*\n * can add domain private routes to application (auth required, tenancy required)\n */\n})\n"]}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../server/routes.ts"],"names":[],"mappings":";;AACA,iDAA6D;AAE7D,+DAA2D;AAE3D,OAAO,CAAC,EAAE,CAAC,sCAA6C,EAAE,CAAC,GAAG,EAAE,kBAAkB,EAAE,EAAE;IACpF;;;;;OAKG;IAEH,+IAA+I;IAC/I,kBAAkB,CAAC,IAAI,CAAC,iCAAiC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjF,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,IAA+B,CAAA;QAElE,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YACzC,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;SACtE;QAED,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,MAAM,CAAA;QAEnD,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,SAAS,QAAQ,aAAa,UAAU,kCAAkC,CAAC,CAAA;SAC5F;QAED,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,YAAY,QAAQ,oBAAoB,UAAU,kCAAkC,CAAC,CAAA;SACtG;QAED,MAAM,IAAA,qBAAa,GAAE,CAAC,WAAW,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;YAC3C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,cAAM,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;YAEzE,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,UAAU,QAAQ,aAAa,CAAC,CAAA;aACjD;YAED,OAAO,CAAC,KAAK,mCACR,OAAO,CAAC,KAAK,KAChB,MAAM;gBACN,EAAE,GACH,CAAA;YAED,MAAM,IAAA,WAAI,EACR;gBACE,UAAU;aACX,EACD,OAAO,CACR,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,CAAC,MAAM,GAAG,GAAG,CAAA;IACtB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,uCAA8C,EAAE,CAAC,GAAG,EAAE,mBAAmB,EAAE,EAAE;IACtF;;OAEG;AACL,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,sCAA6C,EAAE,CAAC,GAAG,EAAE,kBAAkB,EAAE,EAAE;IACpF;;OAEG;AACL,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,uCAA8C,EAAE,CAAC,GAAG,EAAE,mBAAmB,EAAE,EAAE;IACtF;;OAEG;AACL,CAAC,CAAC,CAAA","sourcesContent":["import { logger } from '@things-factory/env'\nimport { Domain, getDataSource } from '@things-factory/shell'\nimport { ScheduleRegisterRequest } from '@things-factory/scheduler-client'\nimport { post } from './controllers/activity-instance/post'\n\nprocess.on('bootstrap-module-global-public-route' as any, (app, globalPublicRouter) => {\n /*\n * can add global public routes to application (auth not required, tenancy not required)\n *\n * ex) routes.get('/path', async(context, next) => {})\n * ex) routes.post('/path', async(context, next) => {})\n */\n\n /* When a callback occurs from the scheduler when a scheduled dataset is on schedule, data collection task for the dataset should be issued. */\n globalPublicRouter.post('/callback-schedule-for-activity', async (context, next) => {\n const { client } = context.request.body as ScheduleRegisterRequest\n\n if (!client || typeof client !== 'object') {\n throw new Error('client property should be a part of callback body.')\n }\n\n const { group: domainId, key: activityId } = client\n\n if (!domainId || !activityId) {\n throw new Error(`group(${domainId}) and key(${activityId}) properties should not be empty`)\n }\n\n if (!domainId || !activityId) {\n throw new Error(`domainId(${domainId}) and activityId(${activityId}) properties should not be empty`)\n }\n\n await getDataSource().transaction(async tx => {\n const domain = await tx.getRepository(Domain).findOneBy({ id: domainId })\n\n if (!domain) {\n throw new Error(`domain(${domainId}) not found`)\n }\n\n context.state = {\n ...context.state,\n domain,\n tx\n }\n\n await post(\n {\n activityId\n },\n context\n )\n })\n\n context.status = 200\n })\n})\n\nprocess.on('bootstrap-module-global-private-route' as any, (app, globalPrivateRouter) => {\n /*\n * can add global private routes to application (auth required, tenancy not required)\n */\n})\n\nprocess.on('bootstrap-module-domain-public-route' as any, (app, domainPublicRouter) => {\n /*\n * can add domain public routes to application (auth not required, tenancy required)\n */\n})\n\nprocess.on('bootstrap-module-domain-private-route' as any, (app, domainPrivateRouter) => {\n /*\n * can add domain private routes to application (auth required, tenancy required)\n */\n})\n"]}
@@ -86,6 +86,11 @@ tslib_1.__decorate([
86
86
  (0, type_graphql_1.Field)({ nullable: true }),
87
87
  tslib_1.__metadata("design:type", String)
88
88
  ], ActivityHistory.prototype, "timezone", void 0);
89
+ tslib_1.__decorate([
90
+ (0, typeorm_1.Column)({ nullable: true }),
91
+ (0, type_graphql_1.Field)({ nullable: true }),
92
+ tslib_1.__metadata("design:type", String)
93
+ ], ActivityHistory.prototype, "scheduleId", void 0);
89
94
  tslib_1.__decorate([
90
95
  (0, typeorm_1.Column)({ nullable: true }),
91
96
  (0, type_graphql_1.Field)({ nullable: true }),