@webiny/tasks 6.3.0 → 6.4.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/context.js +36 -42
  2. package/context.js.map +1 -1
  3. package/crud/TaskLogPrivateModel.js +33 -27
  4. package/crud/TaskLogPrivateModel.js.map +1 -1
  5. package/crud/TaskPrivateModel.js +48 -39
  6. package/crud/TaskPrivateModel.js.map +1 -1
  7. package/crud/cleanupTaskSubtree.js +55 -69
  8. package/crud/cleanupTaskSubtree.js.map +1 -1
  9. package/crud/crud.tasks.js +289 -352
  10. package/crud/crud.tasks.js.map +1 -1
  11. package/crud/definition.tasks.js +13 -16
  12. package/crud/definition.tasks.js.map +1 -1
  13. package/crud/service.tasks.js +119 -155
  14. package/crud/service.tasks.js.map +1 -1
  15. package/decorators/RunnableTaskDecorator.js +61 -77
  16. package/decorators/RunnableTaskDecorator.js.map +1 -1
  17. package/decorators/SelfCleaningTaskDecorator.js +75 -89
  18. package/decorators/SelfCleaningTaskDecorator.js.map +1 -1
  19. package/domain/errors.js +35 -39
  20. package/domain/errors.js.map +1 -1
  21. package/events/TaskAfterCreateEvent.js +8 -5
  22. package/events/TaskAfterCreateEvent.js.map +1 -1
  23. package/events/TaskAfterDeleteEvent.js +8 -5
  24. package/events/TaskAfterDeleteEvent.js.map +1 -1
  25. package/events/TaskAfterUpdateEvent.js +8 -5
  26. package/events/TaskAfterUpdateEvent.js.map +1 -1
  27. package/events/TaskBeforeCreateEvent.js +8 -5
  28. package/events/TaskBeforeCreateEvent.js.map +1 -1
  29. package/events/TaskBeforeDeleteEvent.js +8 -5
  30. package/events/TaskBeforeDeleteEvent.js.map +1 -1
  31. package/events/TaskBeforeUpdateEvent.js +8 -5
  32. package/events/TaskBeforeUpdateEvent.js.map +1 -1
  33. package/events/abstractions.js +7 -36
  34. package/events/abstractions.js.map +1 -1
  35. package/events/index.js +0 -2
  36. package/features/AbortTask/AbortTaskUseCase.js +9 -8
  37. package/features/AbortTask/AbortTaskUseCase.js.map +1 -1
  38. package/features/AbortTask/abstractions.js +2 -1
  39. package/features/AbortTask/abstractions.js.map +1 -1
  40. package/features/AbortTask/feature.js +6 -5
  41. package/features/AbortTask/feature.js.map +1 -1
  42. package/features/AbortTask/index.js +0 -2
  43. package/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js +8 -7
  44. package/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js.map +1 -1
  45. package/features/CleanupTaskSubtree/abstractions.js +2 -1
  46. package/features/CleanupTaskSubtree/abstractions.js.map +1 -1
  47. package/features/CleanupTaskSubtree/index.js +0 -2
  48. package/features/GetTask/GetTaskUseCase.js +8 -7
  49. package/features/GetTask/GetTaskUseCase.js.map +1 -1
  50. package/features/GetTask/abstractions.js +2 -1
  51. package/features/GetTask/abstractions.js.map +1 -1
  52. package/features/GetTask/feature.js +6 -5
  53. package/features/GetTask/feature.js.map +1 -1
  54. package/features/GetTask/index.js +0 -2
  55. package/features/GetTaskDefinition/GetTaskDefinitionUseCase.js +18 -16
  56. package/features/GetTaskDefinition/GetTaskDefinitionUseCase.js.map +1 -1
  57. package/features/GetTaskDefinition/abstractions.js +2 -1
  58. package/features/GetTaskDefinition/abstractions.js.map +1 -1
  59. package/features/GetTaskDefinition/feature.js +6 -5
  60. package/features/GetTaskDefinition/feature.js.map +1 -1
  61. package/features/GetTaskDefinition/index.js +0 -2
  62. package/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.js +18 -12
  63. package/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.js.map +1 -1
  64. package/features/ListTaskDefinitions/abstractions.js +2 -1
  65. package/features/ListTaskDefinitions/abstractions.js.map +1 -1
  66. package/features/ListTaskDefinitions/feature.js +6 -5
  67. package/features/ListTaskDefinitions/feature.js.map +1 -1
  68. package/features/ListTaskDefinitions/index.js +0 -2
  69. package/features/ListTasks/ListTasksUseCase.js +8 -7
  70. package/features/ListTasks/ListTasksUseCase.js.map +1 -1
  71. package/features/ListTasks/abstractions.js +2 -1
  72. package/features/ListTasks/abstractions.js.map +1 -1
  73. package/features/ListTasks/feature.js +6 -5
  74. package/features/ListTasks/feature.js.map +1 -1
  75. package/features/ListTasks/index.js +0 -2
  76. package/features/TaskController/TaskController.js +60 -60
  77. package/features/TaskController/TaskController.js.map +1 -1
  78. package/features/TaskController/augmentation.js +0 -3
  79. package/features/TaskController/index.js +0 -5
  80. package/features/TaskExecutionContext/TaskExecutionContext.js +38 -45
  81. package/features/TaskExecutionContext/TaskExecutionContext.js.map +1 -1
  82. package/features/TaskExecutionContext/abstractions.js +2 -10
  83. package/features/TaskExecutionContext/abstractions.js.map +1 -1
  84. package/features/TaskExecutionContext/feature.js +6 -5
  85. package/features/TaskExecutionContext/feature.js.map +1 -1
  86. package/features/TaskExecutionContext/index.js +0 -2
  87. package/features/TriggerTask/TriggerTaskUseCase.js +9 -8
  88. package/features/TriggerTask/TriggerTaskUseCase.js.map +1 -1
  89. package/features/TriggerTask/abstractions.js +2 -1
  90. package/features/TriggerTask/abstractions.js.map +1 -1
  91. package/features/TriggerTask/feature.js +6 -5
  92. package/features/TriggerTask/feature.js.map +1 -1
  93. package/features/TriggerTask/index.js +0 -2
  94. package/global.js +0 -2
  95. package/graphql/checkPermissions.js +16 -35
  96. package/graphql/checkPermissions.js.map +1 -1
  97. package/graphql/index.js +154 -187
  98. package/graphql/index.js.map +1 -1
  99. package/graphql/utils.js +15 -14
  100. package/graphql/utils.js.map +1 -1
  101. package/handler/index.js +46 -53
  102. package/handler/index.js.map +1 -1
  103. package/handler/register.js +7 -15
  104. package/handler/register.js.map +1 -1
  105. package/handler/types.js +0 -3
  106. package/index.js +2 -4
  107. package/package.json +17 -17
  108. package/plugins/TaskServicePlugin.js +9 -6
  109. package/plugins/TaskServicePlugin.js.map +1 -1
  110. package/plugins/index.js +0 -2
  111. package/response/DatabaseResponse.js +113 -132
  112. package/response/DatabaseResponse.js.map +1 -1
  113. package/response/Response.js +78 -96
  114. package/response/Response.js.map +1 -1
  115. package/response/ResponseAbortedResult.js +8 -7
  116. package/response/ResponseAbortedResult.js.map +1 -1
  117. package/response/ResponseContinueResult.js +12 -14
  118. package/response/ResponseContinueResult.js.map +1 -1
  119. package/response/ResponseDoneResult.js +10 -9
  120. package/response/ResponseDoneResult.js.map +1 -1
  121. package/response/ResponseErrorResult.js +9 -8
  122. package/response/ResponseErrorResult.js.map +1 -1
  123. package/response/TaskResponse.js +44 -64
  124. package/response/TaskResponse.js.map +1 -1
  125. package/response/abstractions/Response.js +0 -3
  126. package/response/abstractions/ResponseAbortedResult.js +0 -3
  127. package/response/abstractions/ResponseBaseResult.js +0 -3
  128. package/response/abstractions/ResponseContinueResult.js +0 -3
  129. package/response/abstractions/ResponseDoneResult.js +0 -3
  130. package/response/abstractions/ResponseErrorResult.js +0 -3
  131. package/response/abstractions/TaskResponse.js +0 -3
  132. package/response/abstractions/index.js +0 -2
  133. package/response/index.js +0 -2
  134. package/runner/TaskControl.js +150 -221
  135. package/runner/TaskControl.js.map +1 -1
  136. package/runner/TaskEventValidation.js +12 -13
  137. package/runner/TaskEventValidation.js.map +1 -1
  138. package/runner/TaskManager.js +68 -106
  139. package/runner/TaskManager.js.map +1 -1
  140. package/runner/TaskManagerStore.js +90 -139
  141. package/runner/TaskManagerStore.js.map +1 -1
  142. package/runner/TaskRunner.js +45 -65
  143. package/runner/TaskRunner.js.map +1 -1
  144. package/runner/abstractions/TaskControl.js +0 -3
  145. package/runner/abstractions/TaskEventValidation.js +0 -3
  146. package/runner/abstractions/TaskManager.js +0 -3
  147. package/runner/abstractions/TaskManagerStore.js +0 -3
  148. package/runner/abstractions/TaskRunner.js +0 -3
  149. package/runner/abstractions/index.js +0 -2
  150. package/runner/index.js +0 -2
  151. package/service/EventBridgeEventTransportPlugin.js +43 -42
  152. package/service/EventBridgeEventTransportPlugin.js.map +1 -1
  153. package/service/StepFunctionServicePlugin.js +65 -66
  154. package/service/StepFunctionServicePlugin.js.map +1 -1
  155. package/service/createService.js +10 -13
  156. package/service/createService.js.map +1 -1
  157. package/service/index.js +7 -5
  158. package/service/index.js.map +1 -1
  159. package/tasks/testingRunTask.js +11 -10
  160. package/tasks/testingRunTask.js.map +1 -1
  161. package/types.js +12 -12
  162. package/types.js.map +1 -1
  163. package/utils/ObjectUpdater.js +25 -31
  164. package/utils/ObjectUpdater.js.map +1 -1
  165. package/utils/getErrorProperties.js +5 -4
  166. package/utils/getErrorProperties.js.map +1 -1
  167. package/utils/getObjectProperties.js +8 -15
  168. package/utils/getObjectProperties.js.map +1 -1
  169. package/utils/index.js +0 -2
  170. package/utils/normalizeSelfCleanup.js +13 -12
  171. package/utils/normalizeSelfCleanup.js.map +1 -1
  172. package/events/index.js.map +0 -1
  173. package/features/AbortTask/index.js.map +0 -1
  174. package/features/CleanupTaskSubtree/index.js.map +0 -1
  175. package/features/GetTask/index.js.map +0 -1
  176. package/features/GetTaskDefinition/index.js.map +0 -1
  177. package/features/ListTaskDefinitions/index.js.map +0 -1
  178. package/features/ListTasks/index.js.map +0 -1
  179. package/features/TaskController/augmentation.js.map +0 -1
  180. package/features/TaskController/index.js.map +0 -1
  181. package/features/TaskExecutionContext/index.js.map +0 -1
  182. package/features/TriggerTask/index.js.map +0 -1
  183. package/global.js.map +0 -1
  184. package/handler/types.js.map +0 -1
  185. package/index.js.map +0 -1
  186. package/plugins/index.js.map +0 -1
  187. package/response/abstractions/Response.js.map +0 -1
  188. package/response/abstractions/ResponseAbortedResult.js.map +0 -1
  189. package/response/abstractions/ResponseBaseResult.js.map +0 -1
  190. package/response/abstractions/ResponseContinueResult.js.map +0 -1
  191. package/response/abstractions/ResponseDoneResult.js.map +0 -1
  192. package/response/abstractions/ResponseErrorResult.js.map +0 -1
  193. package/response/abstractions/TaskResponse.js.map +0 -1
  194. package/response/abstractions/index.js.map +0 -1
  195. package/response/index.js.map +0 -1
  196. package/runner/abstractions/TaskControl.js.map +0 -1
  197. package/runner/abstractions/TaskEventValidation.js.map +0 -1
  198. package/runner/abstractions/TaskManager.js.map +0 -1
  199. package/runner/abstractions/TaskManagerStore.js.map +0 -1
  200. package/runner/abstractions/TaskRunner.js.map +0 -1
  201. package/runner/abstractions/index.js.map +0 -1
  202. package/runner/index.js.map +0 -1
  203. package/utils/index.js.map +0 -1
@@ -1,85 +1,69 @@
1
1
  import camelCase from "lodash/camelCase.js";
2
- import WebinyError from "@webiny/error";
2
+ import error from "@webiny/error";
3
3
  import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
4
4
  const DEFAULT_MAX_ITERATIONS = 50;
5
-
6
- /**
7
- * RunnableTaskDecorator adds runtime behavior to TaskDefinition:
8
- * - Applies default values (maxIterations, isPrivate, databaseLogs, fields)
9
- * - Validates task ID (must be camelCase)
10
- * - Provides field management methods
11
- */
12
5
  class RunnableTaskDecoratorImpl {
13
- constructor(decoratee) {
14
- this.decoratee = decoratee;
15
- this.validate();
16
- }
17
-
18
- // Delegate simple properties
19
- get id() {
20
- return this.decoratee.id;
21
- }
22
- get title() {
23
- return this.decoratee.title;
24
- }
25
- get description() {
26
- return this.decoratee.description;
27
- }
28
-
29
- // Apply default values
30
- get isPrivate() {
31
- return this.decoratee.isPrivate ?? false;
32
- }
33
- get databaseLogs() {
34
- return this.decoratee.databaseLogs ?? false;
35
- }
36
- get maxIterations() {
37
- return this.decoratee.maxIterations || DEFAULT_MAX_ITERATIONS;
38
- }
39
- get selfCleanup() {
40
- return this.decoratee.selfCleanup;
41
- }
42
- get createInputValidation() {
43
- return this.decoratee.createInputValidation;
44
- }
45
-
46
- // Delegate lifecycle methods (bind to preserve context)
47
- get run() {
48
- return this.decoratee.run.bind(this.decoratee);
49
- }
50
- get onBeforeTrigger() {
51
- return this.decoratee.onBeforeTrigger?.bind(this.decoratee);
52
- }
53
- get onDone() {
54
- return this.decoratee.onDone?.bind(this.decoratee);
55
- }
56
- get onError() {
57
- return this.decoratee.onError?.bind(this.decoratee);
58
- }
59
- get onAbort() {
60
- return this.decoratee.onAbort?.bind(this.decoratee);
61
- }
62
- get onMaxIterations() {
63
- return this.decoratee.onMaxIterations?.bind(this.decoratee);
64
- }
65
-
66
- // Validation logic
67
- validate() {
68
- if (camelCase(this.decoratee.id) !== this.decoratee.id) {
69
- const message = `Task ID "${this.decoratee.id}" is invalid. It must be in camelCase format, for example: "myCustomTask".`;
70
- console.log(message);
71
- throw new WebinyError(message);
72
- }
73
- }
74
-
75
- // Method to get the underlying task (for compatibility with existing code)
76
- getTask() {
77
- return this;
78
- }
6
+ constructor(decoratee){
7
+ this.decoratee = decoratee;
8
+ this.validate();
9
+ }
10
+ get id() {
11
+ return this.decoratee.id;
12
+ }
13
+ get title() {
14
+ return this.decoratee.title;
15
+ }
16
+ get description() {
17
+ return this.decoratee.description;
18
+ }
19
+ get isPrivate() {
20
+ return this.decoratee.isPrivate ?? false;
21
+ }
22
+ get databaseLogs() {
23
+ return this.decoratee.databaseLogs ?? false;
24
+ }
25
+ get maxIterations() {
26
+ return this.decoratee.maxIterations || DEFAULT_MAX_ITERATIONS;
27
+ }
28
+ get selfCleanup() {
29
+ return this.decoratee.selfCleanup;
30
+ }
31
+ get createInputValidation() {
32
+ return this.decoratee.createInputValidation;
33
+ }
34
+ get run() {
35
+ return this.decoratee.run.bind(this.decoratee);
36
+ }
37
+ get onBeforeTrigger() {
38
+ return this.decoratee.onBeforeTrigger?.bind(this.decoratee);
39
+ }
40
+ get onDone() {
41
+ return this.decoratee.onDone?.bind(this.decoratee);
42
+ }
43
+ get onError() {
44
+ return this.decoratee.onError?.bind(this.decoratee);
45
+ }
46
+ get onAbort() {
47
+ return this.decoratee.onAbort?.bind(this.decoratee);
48
+ }
49
+ get onMaxIterations() {
50
+ return this.decoratee.onMaxIterations?.bind(this.decoratee);
51
+ }
52
+ validate() {
53
+ if (camelCase(this.decoratee.id) !== this.decoratee.id) {
54
+ const message = `Task ID "${this.decoratee.id}" is invalid. It must be in camelCase format, for example: "myCustomTask".`;
55
+ console.log(message);
56
+ throw new error(message);
57
+ }
58
+ }
59
+ getTask() {
60
+ return this;
61
+ }
79
62
  }
80
- export const RunnableTaskDecorator = TaskDefinition.createDecorator({
81
- decorator: RunnableTaskDecoratorImpl,
82
- dependencies: []
63
+ const RunnableTaskDecorator = TaskDefinition.createDecorator({
64
+ decorator: RunnableTaskDecoratorImpl,
65
+ dependencies: []
83
66
  });
67
+ export { RunnableTaskDecorator };
84
68
 
85
69
  //# sourceMappingURL=RunnableTaskDecorator.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["camelCase","WebinyError","TaskDefinition","DEFAULT_MAX_ITERATIONS","RunnableTaskDecoratorImpl","constructor","decoratee","validate","id","title","description","isPrivate","databaseLogs","maxIterations","selfCleanup","createInputValidation","run","bind","onBeforeTrigger","onDone","onError","onAbort","onMaxIterations","message","console","log","getTask","RunnableTaskDecorator","createDecorator","decorator","dependencies"],"sources":["RunnableTaskDecorator.ts"],"sourcesContent":["import camelCase from \"lodash/camelCase.js\";\nimport WebinyError from \"@webiny/error\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport type { ITaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\n\nconst DEFAULT_MAX_ITERATIONS = 50;\n\n/**\n * RunnableTaskDecorator adds runtime behavior to TaskDefinition:\n * - Applies default values (maxIterations, isPrivate, databaseLogs, fields)\n * - Validates task ID (must be camelCase)\n * - Provides field management methods\n */\nclass RunnableTaskDecoratorImpl implements TaskDefinition.Interface {\n constructor(private decoratee: TaskDefinition.Interface) {\n this.validate();\n }\n\n // Delegate simple properties\n get id() {\n return this.decoratee.id;\n }\n\n get title() {\n return this.decoratee.title;\n }\n\n get description() {\n return this.decoratee.description;\n }\n\n // Apply default values\n get isPrivate() {\n return this.decoratee.isPrivate ?? false;\n }\n\n get databaseLogs() {\n return this.decoratee.databaseLogs ?? false;\n }\n\n get maxIterations() {\n return this.decoratee.maxIterations || DEFAULT_MAX_ITERATIONS;\n }\n\n get selfCleanup() {\n return this.decoratee.selfCleanup;\n }\n\n get createInputValidation() {\n return this.decoratee.createInputValidation;\n }\n\n // Delegate lifecycle methods (bind to preserve context)\n get run() {\n return this.decoratee.run.bind(this.decoratee);\n }\n\n get onBeforeTrigger() {\n return this.decoratee.onBeforeTrigger?.bind(this.decoratee);\n }\n\n get onDone() {\n return this.decoratee.onDone?.bind(this.decoratee);\n }\n\n get onError() {\n return this.decoratee.onError?.bind(this.decoratee);\n }\n\n get onAbort() {\n return this.decoratee.onAbort?.bind(this.decoratee);\n }\n\n get onMaxIterations() {\n return this.decoratee.onMaxIterations?.bind(this.decoratee);\n }\n\n // Validation logic\n private validate(): void {\n if (camelCase(this.decoratee.id) !== this.decoratee.id) {\n const message = `Task ID \"${this.decoratee.id}\" is invalid. It must be in camelCase format, for example: \"myCustomTask\".`;\n console.log(message);\n throw new WebinyError(message);\n }\n }\n\n // Method to get the underlying task (for compatibility with existing code)\n public getTask(): ITaskDefinition {\n return this;\n }\n}\n\nexport const RunnableTaskDecorator = TaskDefinition.createDecorator({\n decorator: RunnableTaskDecoratorImpl,\n dependencies: []\n});\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,qBAAqB;AAC3C,OAAOC,WAAW,MAAM,eAAe;AACvC,SAASC,cAAc,QAAQ,wDAAwD;AAGvF,MAAMC,sBAAsB,GAAG,EAAE;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,yBAAyB,CAAqC;EAChEC,WAAWA,CAASC,SAAmC,EAAE;IAAA,KAArCA,SAAmC,GAAnCA,SAAmC;IACnD,IAAI,CAACC,QAAQ,CAAC,CAAC;EACnB;;EAEA;EACA,IAAIC,EAAEA,CAAA,EAAG;IACL,OAAO,IAAI,CAACF,SAAS,CAACE,EAAE;EAC5B;EAEA,IAAIC,KAAKA,CAAA,EAAG;IACR,OAAO,IAAI,CAACH,SAAS,CAACG,KAAK;EAC/B;EAEA,IAAIC,WAAWA,CAAA,EAAG;IACd,OAAO,IAAI,CAACJ,SAAS,CAACI,WAAW;EACrC;;EAEA;EACA,IAAIC,SAASA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACL,SAAS,CAACK,SAAS,IAAI,KAAK;EAC5C;EAEA,IAAIC,YAAYA,CAAA,EAAG;IACf,OAAO,IAAI,CAACN,SAAS,CAACM,YAAY,IAAI,KAAK;EAC/C;EAEA,IAAIC,aAAaA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACP,SAAS,CAACO,aAAa,IAAIV,sBAAsB;EACjE;EAEA,IAAIW,WAAWA,CAAA,EAAG;IACd,OAAO,IAAI,CAACR,SAAS,CAACQ,WAAW;EACrC;EAEA,IAAIC,qBAAqBA,CAAA,EAAG;IACxB,OAAO,IAAI,CAACT,SAAS,CAACS,qBAAqB;EAC/C;;EAEA;EACA,IAAIC,GAAGA,CAAA,EAAG;IACN,OAAO,IAAI,CAACV,SAAS,CAACU,GAAG,CAACC,IAAI,CAAC,IAAI,CAACX,SAAS,CAAC;EAClD;EAEA,IAAIY,eAAeA,CAAA,EAAG;IAClB,OAAO,IAAI,CAACZ,SAAS,CAACY,eAAe,EAAED,IAAI,CAAC,IAAI,CAACX,SAAS,CAAC;EAC/D;EAEA,IAAIa,MAAMA,CAAA,EAAG;IACT,OAAO,IAAI,CAACb,SAAS,CAACa,MAAM,EAAEF,IAAI,CAAC,IAAI,CAACX,SAAS,CAAC;EACtD;EAEA,IAAIc,OAAOA,CAAA,EAAG;IACV,OAAO,IAAI,CAACd,SAAS,CAACc,OAAO,EAAEH,IAAI,CAAC,IAAI,CAACX,SAAS,CAAC;EACvD;EAEA,IAAIe,OAAOA,CAAA,EAAG;IACV,OAAO,IAAI,CAACf,SAAS,CAACe,OAAO,EAAEJ,IAAI,CAAC,IAAI,CAACX,SAAS,CAAC;EACvD;EAEA,IAAIgB,eAAeA,CAAA,EAAG;IAClB,OAAO,IAAI,CAAChB,SAAS,CAACgB,eAAe,EAAEL,IAAI,CAAC,IAAI,CAACX,SAAS,CAAC;EAC/D;;EAEA;EACQC,QAAQA,CAAA,EAAS;IACrB,IAAIP,SAAS,CAAC,IAAI,CAACM,SAAS,CAACE,EAAE,CAAC,KAAK,IAAI,CAACF,SAAS,CAACE,EAAE,EAAE;MACpD,MAAMe,OAAO,GAAG,YAAY,IAAI,CAACjB,SAAS,CAACE,EAAE,4EAA4E;MACzHgB,OAAO,CAACC,GAAG,CAACF,OAAO,CAAC;MACpB,MAAM,IAAItB,WAAW,CAACsB,OAAO,CAAC;IAClC;EACJ;;EAEA;EACOG,OAAOA,CAAA,EAAoB;IAC9B,OAAO,IAAI;EACf;AACJ;AAEA,OAAO,MAAMC,qBAAqB,GAAGzB,cAAc,CAAC0B,eAAe,CAAC;EAChEC,SAAS,EAAEzB,yBAAyB;EACpC0B,YAAY,EAAE;AAClB,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"decorators/RunnableTaskDecorator.js","sources":["../../src/decorators/RunnableTaskDecorator.ts"],"sourcesContent":["import camelCase from \"lodash/camelCase.js\";\nimport WebinyError from \"@webiny/error\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport type { ITaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\n\nconst DEFAULT_MAX_ITERATIONS = 50;\n\n/**\n * RunnableTaskDecorator adds runtime behavior to TaskDefinition:\n * - Applies default values (maxIterations, isPrivate, databaseLogs, fields)\n * - Validates task ID (must be camelCase)\n * - Provides field management methods\n */\nclass RunnableTaskDecoratorImpl implements TaskDefinition.Interface {\n constructor(private decoratee: TaskDefinition.Interface) {\n this.validate();\n }\n\n // Delegate simple properties\n get id() {\n return this.decoratee.id;\n }\n\n get title() {\n return this.decoratee.title;\n }\n\n get description() {\n return this.decoratee.description;\n }\n\n // Apply default values\n get isPrivate() {\n return this.decoratee.isPrivate ?? false;\n }\n\n get databaseLogs() {\n return this.decoratee.databaseLogs ?? false;\n }\n\n get maxIterations() {\n return this.decoratee.maxIterations || DEFAULT_MAX_ITERATIONS;\n }\n\n get selfCleanup() {\n return this.decoratee.selfCleanup;\n }\n\n get createInputValidation() {\n return this.decoratee.createInputValidation;\n }\n\n // Delegate lifecycle methods (bind to preserve context)\n get run() {\n return this.decoratee.run.bind(this.decoratee);\n }\n\n get onBeforeTrigger() {\n return this.decoratee.onBeforeTrigger?.bind(this.decoratee);\n }\n\n get onDone() {\n return this.decoratee.onDone?.bind(this.decoratee);\n }\n\n get onError() {\n return this.decoratee.onError?.bind(this.decoratee);\n }\n\n get onAbort() {\n return this.decoratee.onAbort?.bind(this.decoratee);\n }\n\n get onMaxIterations() {\n return this.decoratee.onMaxIterations?.bind(this.decoratee);\n }\n\n // Validation logic\n private validate(): void {\n if (camelCase(this.decoratee.id) !== this.decoratee.id) {\n const message = `Task ID \"${this.decoratee.id}\" is invalid. It must be in camelCase format, for example: \"myCustomTask\".`;\n console.log(message);\n throw new WebinyError(message);\n }\n }\n\n // Method to get the underlying task (for compatibility with existing code)\n public getTask(): ITaskDefinition {\n return this;\n }\n}\n\nexport const RunnableTaskDecorator = TaskDefinition.createDecorator({\n decorator: RunnableTaskDecoratorImpl,\n dependencies: []\n});\n"],"names":["DEFAULT_MAX_ITERATIONS","RunnableTaskDecoratorImpl","decoratee","camelCase","message","console","WebinyError","RunnableTaskDecorator","TaskDefinition"],"mappings":";;;AAKA,MAAMA,yBAAyB;AAQ/B,MAAMC;IACF,YAAoBC,SAAmC,CAAE;aAArCA,SAAS,GAATA;QAChB,IAAI,CAAC,QAAQ;IACjB;IAGA,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;IAC5B;IAEA,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK;IAC/B;IAEA,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW;IACrC;IAGA,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI;IACvC;IAEA,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI;IAC1C;IAEA,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,IAAIF;IAC3C;IAEA,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW;IACrC;IAEA,IAAI,wBAAwB;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,qBAAqB;IAC/C;IAGA,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS;IACjD;IAEA,IAAI,kBAAkB;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,KAAK,IAAI,CAAC,SAAS;IAC9D;IAEA,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,SAAS;IACrD;IAEA,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,SAAS;IACtD;IAEA,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,SAAS;IACtD;IAEA,IAAI,kBAAkB;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,KAAK,IAAI,CAAC,SAAS;IAC9D;IAGQ,WAAiB;QACrB,IAAIG,UAAU,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE;YACpD,MAAMC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,0EAA0E,CAAC;YACzHC,QAAQ,GAAG,CAACD;YACZ,MAAM,IAAIE,MAAYF;QAC1B;IACJ;IAGO,UAA2B;QAC9B,OAAO,IAAI;IACf;AACJ;AAEO,MAAMG,wBAAwBC,eAAe,eAAe,CAAC;IAChE,WAAWP;IACX,cAAc,EAAE;AACpB"}
@@ -2,97 +2,83 @@ import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/in
2
2
  import { normalizeSelfCleanup } from "../utils/normalizeSelfCleanup.js";
3
3
  import { CleanupTaskSubtreeUseCase } from "../features/CleanupTaskSubtree/index.js";
4
4
  import { getErrorProperties } from "../utils/getErrorProperties.js";
5
- export class SelfCleaningTaskDecoratorImpl {
6
- constructor(cleanupTaskSubtree, decoratee) {
7
- this.cleanupTaskSubtree = cleanupTaskSubtree;
8
- this.decoratee = decoratee;
9
- this.events = normalizeSelfCleanup(decoratee.selfCleanup);
10
- }
11
-
12
- // Pass-through properties.
13
- get id() {
14
- return this.decoratee.id;
15
- }
16
- get title() {
17
- return this.decoratee.title;
18
- }
19
- get description() {
20
- return this.decoratee.description;
21
- }
22
- get isPrivate() {
23
- return this.decoratee.isPrivate;
24
- }
25
- get maxIterations() {
26
- return this.decoratee.maxIterations;
27
- }
28
- get selfCleanup() {
29
- return this.decoratee.selfCleanup;
30
- }
31
- get createInputValidation() {
32
- return this.decoratee.createInputValidation;
33
- }
34
- get run() {
35
- return this.decoratee.run.bind(this.decoratee);
36
- }
37
- get onBeforeTrigger() {
38
- return this.decoratee.onBeforeTrigger?.bind(this.decoratee);
39
- }
40
- get onMaxIterations() {
41
- return this.decoratee.onMaxIterations?.bind(this.decoratee);
42
- }
43
-
44
- // databaseLogs override — any non-empty event set forces false.
45
- get databaseLogs() {
46
- if (this.events.size > 0) {
47
- return false;
5
+ class SelfCleaningTaskDecoratorImpl {
6
+ constructor(cleanupTaskSubtree, decoratee){
7
+ this.cleanupTaskSubtree = cleanupTaskSubtree;
8
+ this.decoratee = decoratee;
9
+ this.events = normalizeSelfCleanup(decoratee.selfCleanup);
10
+ }
11
+ get id() {
12
+ return this.decoratee.id;
13
+ }
14
+ get title() {
15
+ return this.decoratee.title;
16
+ }
17
+ get description() {
18
+ return this.decoratee.description;
19
+ }
20
+ get isPrivate() {
21
+ return this.decoratee.isPrivate;
22
+ }
23
+ get maxIterations() {
24
+ return this.decoratee.maxIterations;
25
+ }
26
+ get selfCleanup() {
27
+ return this.decoratee.selfCleanup;
28
+ }
29
+ get createInputValidation() {
30
+ return this.decoratee.createInputValidation;
31
+ }
32
+ get run() {
33
+ return this.decoratee.run.bind(this.decoratee);
34
+ }
35
+ get onBeforeTrigger() {
36
+ return this.decoratee.onBeforeTrigger?.bind(this.decoratee);
37
+ }
38
+ get onMaxIterations() {
39
+ return this.decoratee.onMaxIterations?.bind(this.decoratee);
40
+ }
41
+ get databaseLogs() {
42
+ if (this.events.size > 0) return false;
43
+ return this.decoratee.databaseLogs;
44
+ }
45
+ get onDone() {
46
+ return async (params)=>{
47
+ await this.safeCall(this.decoratee.onDone, params, "onDone");
48
+ if (this.events.has("onSuccess")) await this.runCleanup(params);
49
+ };
50
+ }
51
+ get onError() {
52
+ return async (params)=>{
53
+ await this.safeCall(this.decoratee.onError, params, "onError");
54
+ if (this.events.has("onError")) await this.runCleanup(params);
55
+ };
56
+ }
57
+ get onAbort() {
58
+ return async (params)=>{
59
+ await this.safeCall(this.decoratee.onAbort, params, "onAbort");
60
+ if (this.events.has("onAbort")) await this.runCleanup(params);
61
+ };
62
+ }
63
+ async runCleanup(params) {
64
+ await this.cleanupTaskSubtree.execute(params.task.id);
65
+ }
66
+ async safeCall(hook, params, name) {
67
+ if (!hook) return;
68
+ try {
69
+ await hook.call(this.decoratee, params);
70
+ } catch (ex) {
71
+ console.error(`Error executing ${name} hook for task "${params.task.id}".`);
72
+ console.log(getErrorProperties(ex));
73
+ }
48
74
  }
49
- return this.decoratee.databaseLogs;
50
- }
51
-
52
- // Always-defined lifecycle hooks. Each runs the user's hook first, then
53
- // triggers cleanup if the matching event is in the set.
54
- get onDone() {
55
- return async params => {
56
- await this.safeCall(this.decoratee.onDone, params, "onDone");
57
- if (this.events.has("onSuccess")) {
58
- await this.runCleanup(params);
59
- }
60
- };
61
- }
62
- get onError() {
63
- return async params => {
64
- await this.safeCall(this.decoratee.onError, params, "onError");
65
- if (this.events.has("onError")) {
66
- await this.runCleanup(params);
67
- }
68
- };
69
- }
70
- get onAbort() {
71
- return async params => {
72
- await this.safeCall(this.decoratee.onAbort, params, "onAbort");
73
- if (this.events.has("onAbort")) {
74
- await this.runCleanup(params);
75
- }
76
- };
77
- }
78
- async runCleanup(params) {
79
- await this.cleanupTaskSubtree.execute(params.task.id);
80
- }
81
- async safeCall(hook, params, name) {
82
- if (!hook) {
83
- return;
84
- }
85
- try {
86
- await hook.call(this.decoratee, params);
87
- } catch (ex) {
88
- console.error(`Error executing ${name} hook for task "${params.task.id}".`);
89
- console.log(getErrorProperties(ex));
90
- }
91
- }
92
75
  }
93
- export const SelfCleaningTaskDecorator = TaskDefinition.createDecorator({
94
- decorator: SelfCleaningTaskDecoratorImpl,
95
- dependencies: [CleanupTaskSubtreeUseCase]
76
+ const SelfCleaningTaskDecorator = TaskDefinition.createDecorator({
77
+ decorator: SelfCleaningTaskDecoratorImpl,
78
+ dependencies: [
79
+ CleanupTaskSubtreeUseCase
80
+ ]
96
81
  });
82
+ export { SelfCleaningTaskDecorator, SelfCleaningTaskDecoratorImpl };
97
83
 
98
84
  //# sourceMappingURL=SelfCleaningTaskDecorator.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["TaskDefinition","normalizeSelfCleanup","CleanupTaskSubtreeUseCase","getErrorProperties","SelfCleaningTaskDecoratorImpl","constructor","cleanupTaskSubtree","decoratee","events","selfCleanup","id","title","description","isPrivate","maxIterations","createInputValidation","run","bind","onBeforeTrigger","onMaxIterations","databaseLogs","size","onDone","params","safeCall","has","runCleanup","onError","onAbort","execute","task","hook","name","call","ex","console","error","log","SelfCleaningTaskDecorator","createDecorator","decorator","dependencies"],"sources":["SelfCleaningTaskDecorator.ts"],"sourcesContent":["import { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport type { ISelfCleanupEvent } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { normalizeSelfCleanup } from \"~/utils/normalizeSelfCleanup.js\";\nimport { CleanupTaskSubtreeUseCase } from \"~/features/CleanupTaskSubtree/index.js\";\nimport { getErrorProperties } from \"~/utils/getErrorProperties.js\";\n\ntype LifecycleHook = TaskDefinition.Interface[\"onDone\"];\ntype HookParams = Parameters<NonNullable<LifecycleHook>>[0];\n\nexport class SelfCleaningTaskDecoratorImpl implements TaskDefinition.Interface {\n private readonly events: ReadonlySet<ISelfCleanupEvent>;\n\n public constructor(\n private readonly cleanupTaskSubtree: CleanupTaskSubtreeUseCase.Interface,\n private decoratee: TaskDefinition.Interface\n ) {\n this.events = normalizeSelfCleanup(decoratee.selfCleanup);\n }\n\n // Pass-through properties.\n get id() {\n return this.decoratee.id;\n }\n get title() {\n return this.decoratee.title;\n }\n get description() {\n return this.decoratee.description;\n }\n get isPrivate() {\n return this.decoratee.isPrivate;\n }\n get maxIterations() {\n return this.decoratee.maxIterations;\n }\n get selfCleanup() {\n return this.decoratee.selfCleanup;\n }\n get createInputValidation() {\n return this.decoratee.createInputValidation;\n }\n get run() {\n return this.decoratee.run.bind(this.decoratee);\n }\n get onBeforeTrigger() {\n return this.decoratee.onBeforeTrigger?.bind(this.decoratee);\n }\n get onMaxIterations() {\n return this.decoratee.onMaxIterations?.bind(this.decoratee);\n }\n\n // databaseLogs override — any non-empty event set forces false.\n get databaseLogs() {\n if (this.events.size > 0) {\n return false;\n }\n return this.decoratee.databaseLogs;\n }\n\n // Always-defined lifecycle hooks. Each runs the user's hook first, then\n // triggers cleanup if the matching event is in the set.\n get onDone() {\n return async (params: HookParams) => {\n await this.safeCall(this.decoratee.onDone, params, \"onDone\");\n if (this.events.has(\"onSuccess\")) {\n await this.runCleanup(params);\n }\n };\n }\n\n get onError() {\n return async (params: HookParams) => {\n await this.safeCall(this.decoratee.onError, params, \"onError\");\n if (this.events.has(\"onError\")) {\n await this.runCleanup(params);\n }\n };\n }\n\n get onAbort() {\n return async (params: HookParams) => {\n await this.safeCall(this.decoratee.onAbort, params, \"onAbort\");\n if (this.events.has(\"onAbort\")) {\n await this.runCleanup(params);\n }\n };\n }\n\n private async runCleanup(params: HookParams): Promise<void> {\n await this.cleanupTaskSubtree.execute(params.task.id);\n }\n\n private async safeCall(\n hook: LifecycleHook | undefined,\n params: HookParams,\n name: string\n ): Promise<void> {\n if (!hook) {\n return;\n }\n try {\n await hook.call(this.decoratee, params);\n } catch (ex) {\n console.error(`Error executing ${name} hook for task \"${params.task.id}\".`);\n console.log(getErrorProperties(ex));\n }\n }\n}\n\nexport const SelfCleaningTaskDecorator = TaskDefinition.createDecorator({\n decorator: SelfCleaningTaskDecoratorImpl,\n dependencies: [CleanupTaskSubtreeUseCase]\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"decorators/SelfCleaningTaskDecorator.js","sources":["../../src/decorators/SelfCleaningTaskDecorator.ts"],"sourcesContent":["import { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport type { ISelfCleanupEvent } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { normalizeSelfCleanup } from \"~/utils/normalizeSelfCleanup.js\";\nimport { CleanupTaskSubtreeUseCase } from \"~/features/CleanupTaskSubtree/index.js\";\nimport { getErrorProperties } from \"~/utils/getErrorProperties.js\";\n\ntype LifecycleHook = TaskDefinition.Interface[\"onDone\"];\ntype HookParams = Parameters<NonNullable<LifecycleHook>>[0];\n\nexport class SelfCleaningTaskDecoratorImpl implements TaskDefinition.Interface {\n private readonly events: ReadonlySet<ISelfCleanupEvent>;\n\n public constructor(\n private readonly cleanupTaskSubtree: CleanupTaskSubtreeUseCase.Interface,\n private decoratee: TaskDefinition.Interface\n ) {\n this.events = normalizeSelfCleanup(decoratee.selfCleanup);\n }\n\n // Pass-through properties.\n get id() {\n return this.decoratee.id;\n }\n get title() {\n return this.decoratee.title;\n }\n get description() {\n return this.decoratee.description;\n }\n get isPrivate() {\n return this.decoratee.isPrivate;\n }\n get maxIterations() {\n return this.decoratee.maxIterations;\n }\n get selfCleanup() {\n return this.decoratee.selfCleanup;\n }\n get createInputValidation() {\n return this.decoratee.createInputValidation;\n }\n get run() {\n return this.decoratee.run.bind(this.decoratee);\n }\n get onBeforeTrigger() {\n return this.decoratee.onBeforeTrigger?.bind(this.decoratee);\n }\n get onMaxIterations() {\n return this.decoratee.onMaxIterations?.bind(this.decoratee);\n }\n\n // databaseLogs override — any non-empty event set forces false.\n get databaseLogs() {\n if (this.events.size > 0) {\n return false;\n }\n return this.decoratee.databaseLogs;\n }\n\n // Always-defined lifecycle hooks. Each runs the user's hook first, then\n // triggers cleanup if the matching event is in the set.\n get onDone() {\n return async (params: HookParams) => {\n await this.safeCall(this.decoratee.onDone, params, \"onDone\");\n if (this.events.has(\"onSuccess\")) {\n await this.runCleanup(params);\n }\n };\n }\n\n get onError() {\n return async (params: HookParams) => {\n await this.safeCall(this.decoratee.onError, params, \"onError\");\n if (this.events.has(\"onError\")) {\n await this.runCleanup(params);\n }\n };\n }\n\n get onAbort() {\n return async (params: HookParams) => {\n await this.safeCall(this.decoratee.onAbort, params, \"onAbort\");\n if (this.events.has(\"onAbort\")) {\n await this.runCleanup(params);\n }\n };\n }\n\n private async runCleanup(params: HookParams): Promise<void> {\n await this.cleanupTaskSubtree.execute(params.task.id);\n }\n\n private async safeCall(\n hook: LifecycleHook | undefined,\n params: HookParams,\n name: string\n ): Promise<void> {\n if (!hook) {\n return;\n }\n try {\n await hook.call(this.decoratee, params);\n } catch (ex) {\n console.error(`Error executing ${name} hook for task \"${params.task.id}\".`);\n console.log(getErrorProperties(ex));\n }\n }\n}\n\nexport const SelfCleaningTaskDecorator = TaskDefinition.createDecorator({\n decorator: SelfCleaningTaskDecoratorImpl,\n dependencies: [CleanupTaskSubtreeUseCase]\n});\n"],"names":["SelfCleaningTaskDecoratorImpl","cleanupTaskSubtree","decoratee","normalizeSelfCleanup","params","hook","name","ex","console","getErrorProperties","SelfCleaningTaskDecorator","TaskDefinition","CleanupTaskSubtreeUseCase"],"mappings":";;;;AASO,MAAMA;IAGT,YACqBC,kBAAuD,EAChEC,SAAmC,CAC7C;aAFmBD,kBAAkB,GAAlBA;aACTC,SAAS,GAATA;QAER,IAAI,CAAC,MAAM,GAAGC,qBAAqBD,UAAU,WAAW;IAC5D;IAGA,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;IAC5B;IACA,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK;IAC/B;IACA,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW;IACrC;IACA,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS;IACnC;IACA,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa;IACvC;IACA,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW;IACrC;IACA,IAAI,wBAAwB;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,qBAAqB;IAC/C;IACA,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS;IACjD;IACA,IAAI,kBAAkB;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,KAAK,IAAI,CAAC,SAAS;IAC9D;IACA,IAAI,kBAAkB;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,KAAK,IAAI,CAAC,SAAS;IAC9D;IAGA,IAAI,eAAe;QACf,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,GACnB,OAAO;QAEX,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY;IACtC;IAIA,IAAI,SAAS;QACT,OAAO,OAAOE;YACV,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAEA,QAAQ;YACnD,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAChB,MAAM,IAAI,CAAC,UAAU,CAACA;QAE9B;IACJ;IAEA,IAAI,UAAU;QACV,OAAO,OAAOA;YACV,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAEA,QAAQ;YACpD,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAChB,MAAM,IAAI,CAAC,UAAU,CAACA;QAE9B;IACJ;IAEA,IAAI,UAAU;QACV,OAAO,OAAOA;YACV,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAEA,QAAQ;YACpD,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAChB,MAAM,IAAI,CAAC,UAAU,CAACA;QAE9B;IACJ;IAEA,MAAc,WAAWA,MAAkB,EAAiB;QACxD,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAACA,OAAO,IAAI,CAAC,EAAE;IACxD;IAEA,MAAc,SACVC,IAA+B,EAC/BD,MAAkB,EAClBE,IAAY,EACC;QACb,IAAI,CAACD,MACD;QAEJ,IAAI;YACA,MAAMA,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,EAAED;QACpC,EAAE,OAAOG,IAAI;YACTC,QAAQ,KAAK,CAAC,CAAC,gBAAgB,EAAEF,KAAK,gBAAgB,EAAEF,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1EI,QAAQ,GAAG,CAACC,mBAAmBF;QACnC;IACJ;AACJ;AAEO,MAAMG,4BAA4BC,eAAe,eAAe,CAAC;IACpE,WAAWX;IACX,cAAc;QAACY;KAA0B;AAC7C"}
package/domain/errors.js CHANGED
@@ -1,47 +1,43 @@
1
1
  import { BaseError } from "@webiny/feature/api";
2
- export class TaskDefinitionNotFoundError extends BaseError {
3
- code = "BackgroundTasks/TaskDefinition/NotFoundError";
4
- constructor(id) {
5
- super({
6
- message: "Task definition not found.",
7
- data: {
8
- id
9
- }
10
- });
11
- }
2
+ class TaskDefinitionNotFoundError extends BaseError {
3
+ constructor(id){
4
+ super({
5
+ message: "Task definition not found.",
6
+ data: {
7
+ id
8
+ }
9
+ }), this.code = "BackgroundTasks/TaskDefinition/NotFoundError";
10
+ }
12
11
  }
13
- export class TaskNotFoundError extends BaseError {
14
- code = "BackgroundTasks/Task/NotFoundError";
15
- constructor() {
16
- super({
17
- message: "Task not found."
18
- });
19
- }
12
+ class TaskNotFoundError extends BaseError {
13
+ constructor(){
14
+ super({
15
+ message: "Task not found."
16
+ }), this.code = "BackgroundTasks/Task/NotFoundError";
17
+ }
20
18
  }
21
- export class TaskAbortError extends BaseError {
22
- code = "BackgroundTasks/Task/Abort";
23
- constructor(data) {
24
- super({
25
- message: "Cannot abort a task that is not pending or running!",
26
- data
27
- });
28
- }
19
+ class TaskAbortError extends BaseError {
20
+ constructor(data){
21
+ super({
22
+ message: "Cannot abort a task that is not pending or running!",
23
+ data
24
+ }), this.code = "BackgroundTasks/Task/Abort";
25
+ }
29
26
  }
30
- export class TaskLogNotFoundError extends BaseError {
31
- code = "BackgroundTasks/Log/NotFoundError";
32
- constructor() {
33
- super({
34
- message: "Task log not found."
35
- });
36
- }
27
+ class TaskLogNotFoundError extends BaseError {
28
+ constructor(){
29
+ super({
30
+ message: "Task log not found."
31
+ }), this.code = "BackgroundTasks/Log/NotFoundError";
32
+ }
37
33
  }
38
- export class TaskServiceInfoError extends BaseError {
39
- code = "BackgroundTasks/Service/InfoUnavailable";
40
- constructor() {
41
- super({
42
- message: "Unable to fetch service info."
43
- });
44
- }
34
+ class TaskServiceInfoError extends BaseError {
35
+ constructor(){
36
+ super({
37
+ message: "Unable to fetch service info."
38
+ }), this.code = "BackgroundTasks/Service/InfoUnavailable";
39
+ }
45
40
  }
41
+ export { TaskAbortError, TaskDefinitionNotFoundError, TaskLogNotFoundError, TaskNotFoundError, TaskServiceInfoError };
46
42
 
47
43
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["BaseError","TaskDefinitionNotFoundError","code","constructor","id","message","data","TaskNotFoundError","TaskAbortError","TaskLogNotFoundError","TaskServiceInfoError"],"sources":["errors.ts"],"sourcesContent":["import { BaseError } from \"@webiny/feature/api\";\n\nexport class TaskDefinitionNotFoundError extends BaseError<{ id: string }> {\n override readonly code = \"BackgroundTasks/TaskDefinition/NotFoundError\" as const;\n\n constructor(id: string) {\n super({\n message: \"Task definition not found.\",\n data: {\n id\n }\n });\n }\n}\n\nexport class TaskNotFoundError extends BaseError {\n override readonly code = \"BackgroundTasks/Task/NotFoundError\" as const;\n\n constructor() {\n super({\n message: \"Task not found.\"\n });\n }\n}\n\nexport class TaskAbortError extends BaseError<{ id: string; status: string }> {\n override readonly code = \"BackgroundTasks/Task/Abort\" as const;\n\n constructor(data: { id: string; status: string }) {\n super({\n message: \"Cannot abort a task that is not pending or running!\",\n data\n });\n }\n}\n\nexport class TaskLogNotFoundError extends BaseError {\n override readonly code = \"BackgroundTasks/Log/NotFoundError\" as const;\n\n constructor() {\n super({\n message: \"Task log not found.\"\n });\n }\n}\n\nexport class TaskServiceInfoError extends BaseError {\n override readonly code = \"BackgroundTasks/Service/InfoUnavailable\" as const;\n\n constructor() {\n super({\n message: \"Unable to fetch service info.\"\n });\n }\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,qBAAqB;AAE/C,OAAO,MAAMC,2BAA2B,SAASD,SAAS,CAAiB;EACrDE,IAAI,GAAG,8CAA8C;EAEvEC,WAAWA,CAACC,EAAU,EAAE;IACpB,KAAK,CAAC;MACFC,OAAO,EAAE,4BAA4B;MACrCC,IAAI,EAAE;QACFF;MACJ;IACJ,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMG,iBAAiB,SAASP,SAAS,CAAC;EAC3BE,IAAI,GAAG,oCAAoC;EAE7DC,WAAWA,CAAA,EAAG;IACV,KAAK,CAAC;MACFE,OAAO,EAAE;IACb,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMG,cAAc,SAASR,SAAS,CAAiC;EACxDE,IAAI,GAAG,4BAA4B;EAErDC,WAAWA,CAACG,IAAoC,EAAE;IAC9C,KAAK,CAAC;MACFD,OAAO,EAAE,qDAAqD;MAC9DC;IACJ,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMG,oBAAoB,SAAST,SAAS,CAAC;EAC9BE,IAAI,GAAG,mCAAmC;EAE5DC,WAAWA,CAAA,EAAG;IACV,KAAK,CAAC;MACFE,OAAO,EAAE;IACb,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMK,oBAAoB,SAASV,SAAS,CAAC;EAC9BE,IAAI,GAAG,yCAAyC;EAElEC,WAAWA,CAAA,EAAG;IACV,KAAK,CAAC;MACFE,OAAO,EAAE;IACb,CAAC,CAAC;EACN;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"domain/errors.js","sources":["../../src/domain/errors.ts"],"sourcesContent":["import { BaseError } from \"@webiny/feature/api\";\n\nexport class TaskDefinitionNotFoundError extends BaseError<{ id: string }> {\n override readonly code = \"BackgroundTasks/TaskDefinition/NotFoundError\" as const;\n\n constructor(id: string) {\n super({\n message: \"Task definition not found.\",\n data: {\n id\n }\n });\n }\n}\n\nexport class TaskNotFoundError extends BaseError {\n override readonly code = \"BackgroundTasks/Task/NotFoundError\" as const;\n\n constructor() {\n super({\n message: \"Task not found.\"\n });\n }\n}\n\nexport class TaskAbortError extends BaseError<{ id: string; status: string }> {\n override readonly code = \"BackgroundTasks/Task/Abort\" as const;\n\n constructor(data: { id: string; status: string }) {\n super({\n message: \"Cannot abort a task that is not pending or running!\",\n data\n });\n }\n}\n\nexport class TaskLogNotFoundError extends BaseError {\n override readonly code = \"BackgroundTasks/Log/NotFoundError\" as const;\n\n constructor() {\n super({\n message: \"Task log not found.\"\n });\n }\n}\n\nexport class TaskServiceInfoError extends BaseError {\n override readonly code = \"BackgroundTasks/Service/InfoUnavailable\" as const;\n\n constructor() {\n super({\n message: \"Unable to fetch service info.\"\n });\n }\n}\n"],"names":["TaskDefinitionNotFoundError","BaseError","id","TaskNotFoundError","TaskAbortError","data","TaskLogNotFoundError","TaskServiceInfoError"],"mappings":";AAEO,MAAMA,oCAAoCC;IAG7C,YAAYC,EAAU,CAAE;QACpB,KAAK,CAAC;YACF,SAAS;YACT,MAAM;gBACFA;YACJ;QACJ,SARc,IAAI,GAAG;IASzB;AACJ;AAEO,MAAMC,0BAA0BF;IAGnC,aAAc;QACV,KAAK,CAAC;YACF,SAAS;QACb,SALc,IAAI,GAAG;IAMzB;AACJ;AAEO,MAAMG,uBAAuBH;IAGhC,YAAYI,IAAoC,CAAE;QAC9C,KAAK,CAAC;YACF,SAAS;YACTA;QACJ,SANc,IAAI,GAAG;IAOzB;AACJ;AAEO,MAAMC,6BAA6BL;IAGtC,aAAc;QACV,KAAK,CAAC;YACF,SAAS;QACb,SALc,IAAI,GAAG;IAMzB;AACJ;AAEO,MAAMM,6BAA6BN;IAGtC,aAAc;QACV,KAAK,CAAC;YACF,SAAS;QACb,SALc,IAAI,GAAG;IAMzB;AACJ"}
@@ -1,10 +1,13 @@
1
1
  import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
2
2
  import { TaskAfterCreateEventHandler } from "./abstractions.js";
3
- export class TaskAfterCreateEvent extends DomainEvent {
4
- eventType = "task.afterCreate";
5
- getHandlerAbstraction() {
6
- return TaskAfterCreateEventHandler;
7
- }
3
+ class TaskAfterCreateEvent extends DomainEvent {
4
+ getHandlerAbstraction() {
5
+ return TaskAfterCreateEventHandler;
6
+ }
7
+ constructor(...args){
8
+ super(...args), this.eventType = "task.afterCreate";
9
+ }
8
10
  }
11
+ export { TaskAfterCreateEvent };
9
12
 
10
13
  //# sourceMappingURL=TaskAfterCreateEvent.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DomainEvent","TaskAfterCreateEventHandler","TaskAfterCreateEvent","eventType","getHandlerAbstraction"],"sources":["TaskAfterCreateEvent.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { TaskAfterCreateEventHandler, TaskAfterCreatePayload } from \"./abstractions.js\";\n\nexport class TaskAfterCreateEvent extends DomainEvent<TaskAfterCreatePayload> {\n eventType = \"task.afterCreate\" as const;\n\n getHandlerAbstraction() {\n return TaskAfterCreateEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,mDAAmD;AAC/E,SAASC,2BAA2B;AAEpC,OAAO,MAAMC,oBAAoB,SAASF,WAAW,CAAyB;EAC1EG,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,2BAA2B;EACtC;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"events/TaskAfterCreateEvent.js","sources":["../../src/events/TaskAfterCreateEvent.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { TaskAfterCreateEventHandler, TaskAfterCreatePayload } from \"./abstractions.js\";\n\nexport class TaskAfterCreateEvent extends DomainEvent<TaskAfterCreatePayload> {\n eventType = \"task.afterCreate\" as const;\n\n getHandlerAbstraction() {\n return TaskAfterCreateEventHandler;\n }\n}\n"],"names":["TaskAfterCreateEvent","DomainEvent","TaskAfterCreateEventHandler"],"mappings":";;AAGO,MAAMA,6BAA6BC;IAGtC,wBAAwB;QACpB,OAAOC;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB"}
@@ -1,10 +1,13 @@
1
1
  import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
2
2
  import { TaskAfterDeleteEventHandler } from "./abstractions.js";
3
- export class TaskAfterDeleteEvent extends DomainEvent {
4
- eventType = "task.afterDelete";
5
- getHandlerAbstraction() {
6
- return TaskAfterDeleteEventHandler;
7
- }
3
+ class TaskAfterDeleteEvent extends DomainEvent {
4
+ getHandlerAbstraction() {
5
+ return TaskAfterDeleteEventHandler;
6
+ }
7
+ constructor(...args){
8
+ super(...args), this.eventType = "task.afterDelete";
9
+ }
8
10
  }
11
+ export { TaskAfterDeleteEvent };
9
12
 
10
13
  //# sourceMappingURL=TaskAfterDeleteEvent.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DomainEvent","TaskAfterDeleteEventHandler","TaskAfterDeleteEvent","eventType","getHandlerAbstraction"],"sources":["TaskAfterDeleteEvent.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { TaskAfterDeleteEventHandler, TaskAfterDeletePayload } from \"./abstractions.js\";\n\nexport class TaskAfterDeleteEvent extends DomainEvent<TaskAfterDeletePayload> {\n eventType = \"task.afterDelete\" as const;\n\n getHandlerAbstraction() {\n return TaskAfterDeleteEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,mDAAmD;AAC/E,SAASC,2BAA2B;AAEpC,OAAO,MAAMC,oBAAoB,SAASF,WAAW,CAAyB;EAC1EG,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,2BAA2B;EACtC;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"events/TaskAfterDeleteEvent.js","sources":["../../src/events/TaskAfterDeleteEvent.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { TaskAfterDeleteEventHandler, TaskAfterDeletePayload } from \"./abstractions.js\";\n\nexport class TaskAfterDeleteEvent extends DomainEvent<TaskAfterDeletePayload> {\n eventType = \"task.afterDelete\" as const;\n\n getHandlerAbstraction() {\n return TaskAfterDeleteEventHandler;\n }\n}\n"],"names":["TaskAfterDeleteEvent","DomainEvent","TaskAfterDeleteEventHandler"],"mappings":";;AAGO,MAAMA,6BAA6BC;IAGtC,wBAAwB;QACpB,OAAOC;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB"}
@@ -1,10 +1,13 @@
1
1
  import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
2
2
  import { TaskAfterUpdateEventHandler } from "./abstractions.js";
3
- export class TaskAfterUpdateEvent extends DomainEvent {
4
- eventType = "task.afterUpdate";
5
- getHandlerAbstraction() {
6
- return TaskAfterUpdateEventHandler;
7
- }
3
+ class TaskAfterUpdateEvent extends DomainEvent {
4
+ getHandlerAbstraction() {
5
+ return TaskAfterUpdateEventHandler;
6
+ }
7
+ constructor(...args){
8
+ super(...args), this.eventType = "task.afterUpdate";
9
+ }
8
10
  }
11
+ export { TaskAfterUpdateEvent };
9
12
 
10
13
  //# sourceMappingURL=TaskAfterUpdateEvent.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DomainEvent","TaskAfterUpdateEventHandler","TaskAfterUpdateEvent","eventType","getHandlerAbstraction"],"sources":["TaskAfterUpdateEvent.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { TaskAfterUpdateEventHandler, TaskAfterUpdatePayload } from \"./abstractions.js\";\n\nexport class TaskAfterUpdateEvent extends DomainEvent<TaskAfterUpdatePayload> {\n eventType = \"task.afterUpdate\" as const;\n\n getHandlerAbstraction() {\n return TaskAfterUpdateEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,mDAAmD;AAC/E,SAASC,2BAA2B;AAEpC,OAAO,MAAMC,oBAAoB,SAASF,WAAW,CAAyB;EAC1EG,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,2BAA2B;EACtC;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"events/TaskAfterUpdateEvent.js","sources":["../../src/events/TaskAfterUpdateEvent.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { TaskAfterUpdateEventHandler, TaskAfterUpdatePayload } from \"./abstractions.js\";\n\nexport class TaskAfterUpdateEvent extends DomainEvent<TaskAfterUpdatePayload> {\n eventType = \"task.afterUpdate\" as const;\n\n getHandlerAbstraction() {\n return TaskAfterUpdateEventHandler;\n }\n}\n"],"names":["TaskAfterUpdateEvent","DomainEvent","TaskAfterUpdateEventHandler"],"mappings":";;AAGO,MAAMA,6BAA6BC;IAGtC,wBAAwB;QACpB,OAAOC;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB"}
@@ -1,10 +1,13 @@
1
1
  import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
2
2
  import { TaskBeforeCreateEventHandler } from "./abstractions.js";
3
- export class TaskBeforeCreateEvent extends DomainEvent {
4
- eventType = "task.beforeCreate";
5
- getHandlerAbstraction() {
6
- return TaskBeforeCreateEventHandler;
7
- }
3
+ class TaskBeforeCreateEvent extends DomainEvent {
4
+ getHandlerAbstraction() {
5
+ return TaskBeforeCreateEventHandler;
6
+ }
7
+ constructor(...args){
8
+ super(...args), this.eventType = "task.beforeCreate";
9
+ }
8
10
  }
11
+ export { TaskBeforeCreateEvent };
9
12
 
10
13
  //# sourceMappingURL=TaskBeforeCreateEvent.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DomainEvent","TaskBeforeCreateEventHandler","TaskBeforeCreateEvent","eventType","getHandlerAbstraction"],"sources":["TaskBeforeCreateEvent.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { TaskBeforeCreateEventHandler, TaskBeforeCreatePayload } from \"./abstractions.js\";\n\nexport class TaskBeforeCreateEvent extends DomainEvent<TaskBeforeCreatePayload> {\n eventType = \"task.beforeCreate\" as const;\n\n getHandlerAbstraction() {\n return TaskBeforeCreateEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,mDAAmD;AAC/E,SAASC,4BAA4B;AAErC,OAAO,MAAMC,qBAAqB,SAASF,WAAW,CAA0B;EAC5EG,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,4BAA4B;EACvC;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"events/TaskBeforeCreateEvent.js","sources":["../../src/events/TaskBeforeCreateEvent.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { TaskBeforeCreateEventHandler, TaskBeforeCreatePayload } from \"./abstractions.js\";\n\nexport class TaskBeforeCreateEvent extends DomainEvent<TaskBeforeCreatePayload> {\n eventType = \"task.beforeCreate\" as const;\n\n getHandlerAbstraction() {\n return TaskBeforeCreateEventHandler;\n }\n}\n"],"names":["TaskBeforeCreateEvent","DomainEvent","TaskBeforeCreateEventHandler"],"mappings":";;AAGO,MAAMA,8BAA8BC;IAGvC,wBAAwB;QACpB,OAAOC;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB"}
@@ -1,10 +1,13 @@
1
1
  import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
2
2
  import { TaskBeforeDeleteEventHandler } from "./abstractions.js";
3
- export class TaskBeforeDeleteEvent extends DomainEvent {
4
- eventType = "task.beforeDelete";
5
- getHandlerAbstraction() {
6
- return TaskBeforeDeleteEventHandler;
7
- }
3
+ class TaskBeforeDeleteEvent extends DomainEvent {
4
+ getHandlerAbstraction() {
5
+ return TaskBeforeDeleteEventHandler;
6
+ }
7
+ constructor(...args){
8
+ super(...args), this.eventType = "task.beforeDelete";
9
+ }
8
10
  }
11
+ export { TaskBeforeDeleteEvent };
9
12
 
10
13
  //# sourceMappingURL=TaskBeforeDeleteEvent.js.map