@webiny/background-tasks 6.4.11 → 6.6.0-alpha.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 (176) hide show
  1. package/admin/BackgroundTaskRoutes.js +16 -3
  2. package/admin/BackgroundTaskRoutes.js.map +1 -1
  3. package/admin/features/listLogs/ListLogsGateway.js +1 -1
  4. package/admin/features/listLogs/ListLogsGateway.js.map +1 -1
  5. package/admin/features/permissions/feature.d.ts +1 -1
  6. package/admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.js +2 -2
  7. package/admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.js.map +1 -1
  8. package/admin/presentation/TaskDetail/TaskDetailPresenter.js +1 -1
  9. package/admin/presentation/TaskDetail/TaskDetailPresenter.js.map +1 -1
  10. package/admin/presentation/TaskDetail/components/TaskDetailDrawer.js +6 -0
  11. package/admin/presentation/TaskDetail/components/TaskDetailDrawer.js.map +1 -1
  12. package/admin/presentation/TaskExecutions/TaskExecutionsDataSource.js +1 -1
  13. package/admin/presentation/TaskExecutions/TaskExecutionsDataSource.js.map +1 -1
  14. package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.d.ts +2 -0
  15. package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.js +3 -1
  16. package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.js.map +1 -1
  17. package/admin/presentation/TaskExecutions/components/TaskExecutionsView.js +44 -24
  18. package/admin/presentation/TaskExecutions/components/TaskExecutionsView.js.map +1 -1
  19. package/api/BackgroundTasksFeature.d.ts +4 -0
  20. package/api/BackgroundTasksFeature.js +61 -0
  21. package/api/BackgroundTasksFeature.js.map +1 -0
  22. package/api/TasksCrud.d.ts +10 -0
  23. package/api/TasksCrud.js +5 -0
  24. package/api/TasksCrud.js.map +1 -0
  25. package/api/abstractions/Timer.d.ts +1 -0
  26. package/api/abstractions/Timer.js +0 -0
  27. package/api/abstractions/index.d.ts +1 -0
  28. package/api/abstractions/index.js +1 -0
  29. package/api/crud/cleanupTaskSubtree.d.ts +2 -2
  30. package/api/crud/cleanupTaskSubtree.js +8 -7
  31. package/api/crud/cleanupTaskSubtree.js.map +1 -1
  32. package/api/crud/crud.tasks.d.ts +3 -2
  33. package/api/crud/crud.tasks.js +37 -37
  34. package/api/crud/crud.tasks.js.map +1 -1
  35. package/api/crud/definition.tasks.d.ts +3 -2
  36. package/api/crud/definition.tasks.js +3 -3
  37. package/api/crud/definition.tasks.js.map +1 -1
  38. package/api/crud/service.tasks.d.ts +3 -2
  39. package/api/crud/service.tasks.js +25 -21
  40. package/api/crud/service.tasks.js.map +1 -1
  41. package/api/decorators/RunnableTaskDecorator.d.ts +3 -2
  42. package/api/decorators/RunnableTaskDecorator.js +7 -8
  43. package/api/decorators/RunnableTaskDecorator.js.map +1 -1
  44. package/api/decorators/SelfCleaningTaskDecorator.d.ts +6 -3
  45. package/api/decorators/SelfCleaningTaskDecorator.js +14 -5
  46. package/api/decorators/SelfCleaningTaskDecorator.js.map +1 -1
  47. package/api/domain/TaskService.d.ts +12 -0
  48. package/api/domain/TaskService.js +5 -0
  49. package/api/domain/TaskService.js.map +1 -0
  50. package/api/domain/errors.d.ts +10 -0
  51. package/api/domain/errors.js +11 -1
  52. package/api/domain/errors.js.map +1 -1
  53. package/api/features/AbortTask/AbortTaskUseCase.d.ts +2 -3
  54. package/api/features/AbortTask/AbortTaskUseCase.js +3 -3
  55. package/api/features/AbortTask/AbortTaskUseCase.js.map +1 -1
  56. package/api/features/AbortTask/feature.d.ts +1 -2
  57. package/api/features/AbortTask/feature.js +3 -2
  58. package/api/features/AbortTask/feature.js.map +1 -1
  59. package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.d.ts +3 -3
  60. package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js +3 -3
  61. package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js.map +1 -1
  62. package/api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.js +7 -4
  63. package/api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.js.map +1 -1
  64. package/api/features/GetTask/GetTaskUseCase.d.ts +3 -3
  65. package/api/features/GetTask/GetTaskUseCase.js +3 -3
  66. package/api/features/GetTask/GetTaskUseCase.js.map +1 -1
  67. package/api/features/GetTask/feature.d.ts +1 -2
  68. package/api/features/GetTask/feature.js +3 -2
  69. package/api/features/GetTask/feature.js.map +1 -1
  70. package/api/features/GetTaskDefinition/GetTaskDefinitionUseCase.d.ts +6 -3
  71. package/api/features/GetTaskDefinition/GetTaskDefinitionUseCase.js +66 -5
  72. package/api/features/GetTaskDefinition/GetTaskDefinitionUseCase.js.map +1 -1
  73. package/api/features/GetTaskDefinition/abstractions.d.ts +2 -1
  74. package/api/features/GetTaskDefinition/abstractions.js.map +1 -1
  75. package/api/features/ListTasks/ListTasksUseCase.d.ts +4 -3
  76. package/api/features/ListTasks/ListTasksUseCase.js +3 -3
  77. package/api/features/ListTasks/ListTasksUseCase.js.map +1 -1
  78. package/api/features/ListTasks/feature.d.ts +1 -2
  79. package/api/features/ListTasks/feature.js +3 -2
  80. package/api/features/ListTasks/feature.js.map +1 -1
  81. package/api/features/TaskController/TaskController.d.ts +2 -2
  82. package/api/features/TaskExecutionContext/TaskExecutionContext.d.ts +3 -3
  83. package/api/features/TaskExecutionContext/TaskExecutionContext.js.map +1 -1
  84. package/api/features/TaskExecutionContext/abstractions.d.ts +3 -3
  85. package/api/features/TaskExecutionContext/abstractions.js.map +1 -1
  86. package/api/features/TaskHandlerResolver/TaskHandlerResolver.d.ts +12 -0
  87. package/api/features/TaskHandlerResolver/TaskHandlerResolver.js +19 -0
  88. package/api/features/TaskHandlerResolver/TaskHandlerResolver.js.map +1 -0
  89. package/api/features/TaskHandlerResolver/abstractions.d.ts +17 -0
  90. package/api/features/TaskHandlerResolver/abstractions.js +5 -0
  91. package/api/features/TaskHandlerResolver/abstractions.js.map +1 -0
  92. package/api/features/TaskHandlerResolver/feature.d.ts +9 -0
  93. package/api/features/TaskHandlerResolver/feature.js +11 -0
  94. package/api/features/TaskHandlerResolver/feature.js.map +1 -0
  95. package/api/features/TaskHandlerResolver/index.d.ts +2 -0
  96. package/api/features/TaskHandlerResolver/index.js +2 -0
  97. package/api/features/TriggerTask/TriggerTaskUseCase.d.ts +2 -3
  98. package/api/features/TriggerTask/TriggerTaskUseCase.js +3 -3
  99. package/api/features/TriggerTask/TriggerTaskUseCase.js.map +1 -1
  100. package/api/features/TriggerTask/feature.d.ts +1 -2
  101. package/api/features/TriggerTask/feature.js +3 -2
  102. package/api/features/TriggerTask/feature.js.map +1 -1
  103. package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsRepository.js +3 -2
  104. package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsRepository.js.map +1 -1
  105. package/api/graphql/BackgroundTasksContextualSchema.d.ts +21 -0
  106. package/api/graphql/BackgroundTasksContextualSchema.js +369 -0
  107. package/api/graphql/BackgroundTasksContextualSchema.js.map +1 -0
  108. package/api/graphql/checkPermissions.js +2 -1
  109. package/api/graphql/checkPermissions.js.map +1 -1
  110. package/api/graphql/utils.d.ts +3 -3
  111. package/api/graphql/utils.js +1 -1
  112. package/api/graphql/utils.js.map +1 -1
  113. package/api/handler/types.d.ts +0 -2
  114. package/api/index.d.ts +10 -3
  115. package/api/index.js +9 -3
  116. package/api/response/DatabaseResponse.js +1 -1
  117. package/api/response/DatabaseResponse.js.map +1 -1
  118. package/api/runner/TaskControl.d.ts +25 -1
  119. package/api/runner/TaskControl.js +30 -17
  120. package/api/runner/TaskControl.js.map +1 -1
  121. package/api/runner/TaskManager.d.ts +12 -1
  122. package/api/runner/TaskManager.js +8 -6
  123. package/api/runner/TaskManager.js.map +1 -1
  124. package/api/runner/TaskManagerStore.d.ts +10 -2
  125. package/api/runner/TaskManagerStore.js +5 -3
  126. package/api/runner/TaskManagerStore.js.map +1 -1
  127. package/api/runner/TaskRunner.d.ts +3 -3
  128. package/api/runner/TaskRunner.js +25 -4
  129. package/api/runner/TaskRunner.js.map +1 -1
  130. package/api/runner/abstractions/TaskRunner.d.ts +2 -2
  131. package/api/service/createService.d.ts +3 -3
  132. package/api/service/createService.js +5 -10
  133. package/api/service/createService.js.map +1 -1
  134. package/api/service/index.d.ts +1 -4
  135. package/api/service/index.js +1 -12
  136. package/api/tasks/testingRunTask.d.ts +10 -2
  137. package/api/tasks/testingRunTask.js +10 -3
  138. package/api/tasks/testingRunTask.js.map +1 -1
  139. package/api/types.d.ts +2 -2
  140. package/api/types.js.map +1 -1
  141. package/package.json +28 -24
  142. package/testing/index.d.ts +3 -0
  143. package/testing/index.js +2 -0
  144. package/testing/mockTaskTriggerTransportPlugin.d.ts +2 -0
  145. package/testing/mockTaskTriggerTransportPlugin.js +18 -0
  146. package/testing/mockTaskTriggerTransportPlugin.js.map +1 -0
  147. package/testing/runner.d.ts +19 -0
  148. package/testing/runner.js +44 -0
  149. package/testing/runner.js.map +1 -0
  150. package/api/context.d.ts +0 -2
  151. package/api/context.js +0 -66
  152. package/api/context.js.map +0 -1
  153. package/api/graphql/BackgroundTaskSettingsSchema.d.ts +0 -2
  154. package/api/graphql/BackgroundTaskSettingsSchema.js +0 -84
  155. package/api/graphql/BackgroundTaskSettingsSchema.js.map +0 -1
  156. package/api/graphql/index.d.ts +0 -2
  157. package/api/graphql/index.js +0 -301
  158. package/api/graphql/index.js.map +0 -1
  159. package/api/handler/index.d.ts +0 -6
  160. package/api/handler/index.js +0 -55
  161. package/api/handler/index.js.map +0 -1
  162. package/api/handler/register.d.ts +0 -1
  163. package/api/handler/register.js +0 -15
  164. package/api/handler/register.js.map +0 -1
  165. package/api/plugins/TaskServicePlugin.d.ts +0 -19
  166. package/api/plugins/TaskServicePlugin.js +0 -13
  167. package/api/plugins/TaskServicePlugin.js.map +0 -1
  168. package/api/plugins/index.d.ts +0 -1
  169. package/api/plugins/index.js +0 -1
  170. package/api/service/EventBridgeEventTransportPlugin.d.ts +0 -16
  171. package/api/service/EventBridgeEventTransportPlugin.js +0 -52
  172. package/api/service/EventBridgeEventTransportPlugin.js.map +0 -1
  173. package/api/service/StepFunctionServicePlugin.d.ts +0 -25
  174. package/api/service/StepFunctionServicePlugin.js +0 -77
  175. package/api/service/StepFunctionServicePlugin.js.map +0 -1
  176. package/api/service/index.js.map +0 -1
@@ -10,6 +10,16 @@ class TaskDefinitionNotFoundError extends BaseError {
10
10
  }), this.code = "BackgroundTasks/TaskDefinition/NotFoundError";
11
11
  }
12
12
  }
13
+ class TaskDefinitionNotRunnableError extends BaseError {
14
+ constructor(id){
15
+ super({
16
+ message: `Task definition "${id}" defines neither a "handler" nor a "run" method.`,
17
+ data: {
18
+ id
19
+ }
20
+ }), this.code = "BackgroundTasks/TaskDefinition/NotRunnableError";
21
+ }
22
+ }
13
23
  class TaskNotFoundError extends BaseError {
14
24
  constructor(){
15
25
  super({
@@ -96,6 +106,6 @@ class BackgroundTaskNotAuthorizedError extends BaseError {
96
106
  }), this.code = "BackgroundTasks/NotAuthorized";
97
107
  }
98
108
  }
99
- export { BackgroundTaskModelNotFoundError, BackgroundTaskNotAuthorizedError, BackgroundTaskPersistenceError, BackgroundTaskValidationError, TaskAbortError, TaskDefinitionNotFoundError, TaskLogNotFoundError, TaskNotFoundError, TaskServiceInfoError };
109
+ export { BackgroundTaskModelNotFoundError, BackgroundTaskNotAuthorizedError, BackgroundTaskPersistenceError, BackgroundTaskValidationError, TaskAbortError, TaskDefinitionNotFoundError, TaskDefinitionNotRunnableError, TaskLogNotFoundError, TaskNotFoundError, TaskServiceInfoError };
100
110
 
101
111
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api/domain/errors.js","sources":["../../../src/api/domain/errors.ts"],"sourcesContent":["import { BaseError } from \"@webiny/feature/api\";\nimport type { ZodError } from \"zod\";\nimport { parseZodError } from \"@webiny/utils\";\nimport type { ValidationIssue } from \"@webiny/utils\";\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\ninterface BackgroundTaskValidationErrorData {\n issues: ValidationIssue[];\n}\n\nexport class BackgroundTaskValidationError extends BaseError<BackgroundTaskValidationErrorData> {\n override readonly code = \"BackgroundTasks/ValidationError\" as const;\n\n constructor(error: string | ZodError) {\n if (typeof error === \"string\") {\n super({ message: error, data: { issues: [] } });\n } else {\n const issues = parseZodError(error);\n super({ message: \"Validation failed.\", data: { issues } });\n }\n }\n}\n\ninterface BackgroundTaskPersistenceErrorData {\n originalMessage: string;\n originalCode?: string;\n originalData?: unknown;\n}\n\nexport class BackgroundTaskPersistenceError extends BaseError<BackgroundTaskPersistenceErrorData> {\n override readonly code = \"BackgroundTasks/PersistenceError\" as const;\n\n constructor(error: Error) {\n super({ message: error.message, data: { originalMessage: error.message } });\n }\n\n static from(error: unknown): BackgroundTaskPersistenceError {\n if (error instanceof Error) {\n const instance = new BackgroundTaskPersistenceError(error);\n const data: BackgroundTaskPersistenceErrorData = {\n originalMessage: error.message,\n originalCode: (error as any).code,\n originalData: (error as any).data\n };\n (instance as any).data = data;\n instance.stack = error.stack;\n return instance;\n }\n\n return new BackgroundTaskPersistenceError(new Error(String(error)));\n }\n}\n\nexport class BackgroundTaskModelNotFoundError extends BaseError {\n override readonly code = \"BackgroundTasks/ModelNotFound\" as const;\n\n constructor(modelId: string) {\n super({ message: `Background task model \"${modelId}\" was not found.` });\n }\n}\n\nexport class BackgroundTaskNotAuthorizedError extends BaseError {\n override readonly code = \"BackgroundTasks/NotAuthorized\" as const;\n\n constructor() {\n super({ message: \"Not authorized!\" });\n }\n}\n"],"names":["TaskDefinitionNotFoundError","BaseError","id","TaskNotFoundError","TaskAbortError","data","TaskLogNotFoundError","TaskServiceInfoError","BackgroundTaskValidationError","error","issues","parseZodError","BackgroundTaskPersistenceError","Error","instance","String","BackgroundTaskModelNotFoundError","modelId","BackgroundTaskNotAuthorizedError"],"mappings":";;AAKO,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;AAMO,MAAMO,sCAAsCP;IAG/C,YAAYQ,KAAwB,CAAE;QAClC,IAAI,AAAiB,YAAjB,OAAOA,OACP,KAAK,CAAC;YAAE,SAASA;YAAO,MAAM;gBAAE,QAAQ,EAAE;YAAC;QAAE,SAJnC,IAAI,GAAG;aAKd;YACH,MAAMC,SAASC,cAAcF;YAC7B,KAAK,CAAC;gBAAE,SAAS;gBAAsB,MAAM;oBAAEC;gBAAO;YAAE,SAP9C,IAAI,GAAG;QAQrB;IACJ;AACJ;AAQO,MAAME,uCAAuCX;IAGhD,YAAYQ,KAAY,CAAE;QACtB,KAAK,CAAC;YAAE,SAASA,MAAM,OAAO;YAAE,MAAM;gBAAE,iBAAiBA,MAAM,OAAO;YAAC;QAAE,SAH3D,IAAI,GAAG;IAIzB;IAEA,OAAO,KAAKA,KAAc,EAAkC;QACxD,IAAIA,iBAAiBI,OAAO;YACxB,MAAMC,WAAW,IAAIF,+BAA+BH;YACpD,MAAMJ,OAA2C;gBAC7C,iBAAiBI,MAAM,OAAO;gBAC9B,cAAeA,MAAc,IAAI;gBACjC,cAAeA,MAAc,IAAI;YACrC;YACCK,SAAiB,IAAI,GAAGT;YACzBS,SAAS,KAAK,GAAGL,MAAM,KAAK;YAC5B,OAAOK;QACX;QAEA,OAAO,IAAIF,+BAA+B,IAAIC,MAAME,OAAON;IAC/D;AACJ;AAEO,MAAMO,yCAAyCf;IAGlD,YAAYgB,OAAe,CAAE;QACzB,KAAK,CAAC;YAAE,SAAS,CAAC,uBAAuB,EAAEA,QAAQ,gBAAgB,CAAC;QAAC,SAHvD,IAAI,GAAG;IAIzB;AACJ;AAEO,MAAMC,yCAAyCjB;IAGlD,aAAc;QACV,KAAK,CAAC;YAAE,SAAS;QAAkB,SAHrB,IAAI,GAAG;IAIzB;AACJ"}
1
+ {"version":3,"file":"api/domain/errors.js","sources":["../../../src/api/domain/errors.ts"],"sourcesContent":["import { BaseError } from \"@webiny/feature/api\";\nimport type { ZodError } from \"zod\";\nimport { parseZodError } from \"@webiny/utils\";\nimport type { ValidationIssue } from \"@webiny/utils\";\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\n/**\n * A definition was found by id but supplies no behaviour: neither a `handler` class nor its own\n * `run()`. Only reachable while definitions are migrating from one shape to the other.\n */\nexport class TaskDefinitionNotRunnableError extends BaseError<{ id: string }> {\n override readonly code = \"BackgroundTasks/TaskDefinition/NotRunnableError\" as const;\n\n constructor(id: string) {\n super({\n message: `Task definition \"${id}\" defines neither a \"handler\" nor a \"run\" method.`,\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\ninterface BackgroundTaskValidationErrorData {\n issues: ValidationIssue[];\n}\n\nexport class BackgroundTaskValidationError extends BaseError<BackgroundTaskValidationErrorData> {\n override readonly code = \"BackgroundTasks/ValidationError\" as const;\n\n constructor(error: string | ZodError) {\n if (typeof error === \"string\") {\n super({ message: error, data: { issues: [] } });\n } else {\n const issues = parseZodError(error);\n super({ message: \"Validation failed.\", data: { issues } });\n }\n }\n}\n\ninterface BackgroundTaskPersistenceErrorData {\n originalMessage: string;\n originalCode?: string;\n originalData?: unknown;\n}\n\nexport class BackgroundTaskPersistenceError extends BaseError<BackgroundTaskPersistenceErrorData> {\n override readonly code = \"BackgroundTasks/PersistenceError\" as const;\n\n constructor(error: Error) {\n super({ message: error.message, data: { originalMessage: error.message } });\n }\n\n static from(error: unknown): BackgroundTaskPersistenceError {\n if (error instanceof Error) {\n const instance = new BackgroundTaskPersistenceError(error);\n const data: BackgroundTaskPersistenceErrorData = {\n originalMessage: error.message,\n originalCode: (error as any).code,\n originalData: (error as any).data\n };\n (instance as any).data = data;\n instance.stack = error.stack;\n return instance;\n }\n\n return new BackgroundTaskPersistenceError(new Error(String(error)));\n }\n}\n\nexport class BackgroundTaskModelNotFoundError extends BaseError {\n override readonly code = \"BackgroundTasks/ModelNotFound\" as const;\n\n constructor(modelId: string) {\n super({ message: `Background task model \"${modelId}\" was not found.` });\n }\n}\n\nexport class BackgroundTaskNotAuthorizedError extends BaseError {\n override readonly code = \"BackgroundTasks/NotAuthorized\" as const;\n\n constructor() {\n super({ message: \"Not authorized!\" });\n }\n}\n"],"names":["TaskDefinitionNotFoundError","BaseError","id","TaskDefinitionNotRunnableError","TaskNotFoundError","TaskAbortError","data","TaskLogNotFoundError","TaskServiceInfoError","BackgroundTaskValidationError","error","issues","parseZodError","BackgroundTaskPersistenceError","Error","instance","String","BackgroundTaskModelNotFoundError","modelId","BackgroundTaskNotAuthorizedError"],"mappings":";;AAKO,MAAMA,oCAAoCC;IAG7C,YAAYC,EAAU,CAAE;QACpB,KAAK,CAAC;YACF,SAAS;YACT,MAAM;gBACFA;YACJ;QACJ,SARc,IAAI,GAAG;IASzB;AACJ;AAMO,MAAMC,uCAAuCF;IAGhD,YAAYC,EAAU,CAAE;QACpB,KAAK,CAAC;YACF,SAAS,CAAC,iBAAiB,EAAEA,GAAG,iDAAiD,CAAC;YAClF,MAAM;gBACFA;YACJ;QACJ,SARc,IAAI,GAAG;IASzB;AACJ;AAEO,MAAME,0BAA0BH;IAGnC,aAAc;QACV,KAAK,CAAC;YACF,SAAS;QACb,SALc,IAAI,GAAG;IAMzB;AACJ;AAEO,MAAMI,uBAAuBJ;IAGhC,YAAYK,IAAoC,CAAE;QAC9C,KAAK,CAAC;YACF,SAAS;YACTA;QACJ,SANc,IAAI,GAAG;IAOzB;AACJ;AAEO,MAAMC,6BAA6BN;IAGtC,aAAc;QACV,KAAK,CAAC;YACF,SAAS;QACb,SALc,IAAI,GAAG;IAMzB;AACJ;AAEO,MAAMO,6BAA6BP;IAGtC,aAAc;QACV,KAAK,CAAC;YACF,SAAS;QACb,SALc,IAAI,GAAG;IAMzB;AACJ;AAMO,MAAMQ,sCAAsCR;IAG/C,YAAYS,KAAwB,CAAE;QAClC,IAAI,AAAiB,YAAjB,OAAOA,OACP,KAAK,CAAC;YAAE,SAASA;YAAO,MAAM;gBAAE,QAAQ,EAAE;YAAC;QAAE,SAJnC,IAAI,GAAG;aAKd;YACH,MAAMC,SAASC,cAAcF;YAC7B,KAAK,CAAC;gBAAE,SAAS;gBAAsB,MAAM;oBAAEC;gBAAO;YAAE,SAP9C,IAAI,GAAG;QAQrB;IACJ;AACJ;AAQO,MAAME,uCAAuCZ;IAGhD,YAAYS,KAAY,CAAE;QACtB,KAAK,CAAC;YAAE,SAASA,MAAM,OAAO;YAAE,MAAM;gBAAE,iBAAiBA,MAAM,OAAO;YAAC;QAAE,SAH3D,IAAI,GAAG;IAIzB;IAEA,OAAO,KAAKA,KAAc,EAAkC;QACxD,IAAIA,iBAAiBI,OAAO;YACxB,MAAMC,WAAW,IAAIF,+BAA+BH;YACpD,MAAMJ,OAA2C;gBAC7C,iBAAiBI,MAAM,OAAO;gBAC9B,cAAeA,MAAc,IAAI;gBACjC,cAAeA,MAAc,IAAI;YACrC;YACCK,SAAiB,IAAI,GAAGT;YACzBS,SAAS,KAAK,GAAGL,MAAM,KAAK;YAC5B,OAAOK;QACX;QAEA,OAAO,IAAIF,+BAA+B,IAAIC,MAAME,OAAON;IAC/D;AACJ;AAEO,MAAMO,yCAAyChB;IAGlD,YAAYiB,OAAe,CAAE;QACzB,KAAK,CAAC;YAAE,SAAS,CAAC,uBAAuB,EAAEA,QAAQ,gBAAgB,CAAC;QAAC,SAHvD,IAAI,GAAG;IAIzB;AACJ;AAEO,MAAMC,yCAAyClB;IAGlD,aAAc;QACV,KAAK,CAAC;YAAE,SAAS;QAAkB,SAHrB,IAAI,GAAG;IAIzB;AACJ"}
@@ -2,9 +2,8 @@ import { Result } from "@webiny/feature/api";
2
2
  import { AbortTaskUseCase as UseCaseAbstraction } from "./abstractions.js";
3
3
  import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
4
4
  import { TaskService } from "@webiny/api-core/features/task/TaskService/index.js";
5
- import type { Context } from "../../../api/types.js";
6
5
  export declare class AbortTaskUseCaseImpl implements UseCaseAbstraction.Interface {
7
- private context;
8
- constructor(context: Context);
6
+ private taskService;
7
+ constructor(taskService: TaskService.Interface);
9
8
  execute<I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput, O extends TaskService.GenericOutput = TaskService.GenericOutput>(params: UseCaseAbstraction.Params): Promise<Result<TaskService.Task<I, O>, UseCaseAbstraction.Error>>;
10
9
  }
@@ -1,9 +1,9 @@
1
1
  class AbortTaskUseCaseImpl {
2
- constructor(context){
3
- this.context = context;
2
+ constructor(taskService){
3
+ this.taskService = taskService;
4
4
  }
5
5
  async execute(params) {
6
- const result = await this.context.tasks.abort(params);
6
+ const result = await this.taskService.abort(params);
7
7
  return result;
8
8
  }
9
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"api/features/AbortTask/AbortTaskUseCase.js","sources":["../../../../src/api/features/AbortTask/AbortTaskUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { AbortTaskUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport type { Context } from \"~/api/types.js\";\n\nexport class AbortTaskUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(private context: Context) {}\n\n async execute<\n I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n >(\n params: UseCaseAbstraction.Params\n ): Promise<Result<TaskService.Task<I, O>, UseCaseAbstraction.Error>> {\n const result = await this.context.tasks.abort<I, O>(params);\n return result as unknown as Promise<\n Result<TaskService.Task<I, O>, UseCaseAbstraction.Error>\n >;\n }\n}\n"],"names":["AbortTaskUseCaseImpl","context","params","result"],"mappings":"AAMO,MAAMA;IACT,YAA2BC,OAAgB,CAAE;aAAlBA,OAAO,GAAPA;IAAmB;IAE9C,MAAM,QAIFC,MAAiC,EACgC;QACjE,MAAMC,SAAS,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAOD;QACpD,OAAOC;IAGX;AACJ"}
1
+ {"version":3,"file":"api/features/AbortTask/AbortTaskUseCase.js","sources":["../../../../src/api/features/AbortTask/AbortTaskUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { AbortTaskUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nexport class AbortTaskUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(private taskService: TaskService.Interface) {}\n\n async execute<\n I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n >(\n params: UseCaseAbstraction.Params\n ): Promise<Result<TaskService.Task<I, O>, UseCaseAbstraction.Error>> {\n const result = await this.taskService.abort<I, O>(params);\n return result as unknown as Promise<\n Result<TaskService.Task<I, O>, UseCaseAbstraction.Error>\n >;\n }\n}\n"],"names":["AbortTaskUseCaseImpl","taskService","params","result"],"mappings":"AAIO,MAAMA;IACT,YAA2BC,WAAkC,CAAE;aAApCA,WAAW,GAAXA;IAAqC;IAEhE,MAAM,QAIFC,MAAiC,EACgC;QACjE,MAAMC,SAAS,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAOD;QAClD,OAAOC;IAGX;AACJ"}
@@ -1,5 +1,4 @@
1
- import type { Context } from "../../../api/types.js";
2
1
  export declare const AbortTaskFeature: {
3
2
  name: string;
4
- register(container: import("@webiny/di").Container, context: Context): void;
3
+ register(container: import("@webiny/di").Container): void;
5
4
  };
@@ -1,10 +1,11 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import { AbortTaskUseCaseImpl } from "./AbortTaskUseCase.js";
3
3
  import { AbortTaskUseCase } from "./abstractions.js";
4
+ import { TaskService } from "@webiny/api-core/features/task/TaskService/index.js";
4
5
  const AbortTaskFeature = createFeature({
5
6
  name: "AbortTask",
6
- register (container, context) {
7
- container.registerInstance(AbortTaskUseCase, new AbortTaskUseCaseImpl(context));
7
+ register (container) {
8
+ container.registerFactory(AbortTaskUseCase, ()=>new AbortTaskUseCaseImpl(container.resolve(TaskService)));
8
9
  }
9
10
  });
10
11
  export { AbortTaskFeature };
@@ -1 +1 @@
1
- {"version":3,"file":"api/features/AbortTask/feature.js","sources":["../../../../src/api/features/AbortTask/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { AbortTaskUseCaseImpl } from \"./AbortTaskUseCase.js\";\nimport type { Context } from \"~/api/types.js\";\nimport { AbortTaskUseCase } from \"./abstractions.js\";\n\nexport const AbortTaskFeature = createFeature<Context>({\n name: \"AbortTask\",\n register(container, context) {\n container.registerInstance(AbortTaskUseCase, new AbortTaskUseCaseImpl(context!));\n }\n});\n"],"names":["AbortTaskFeature","createFeature","container","context","AbortTaskUseCase","AbortTaskUseCaseImpl"],"mappings":";;;AAKO,MAAMA,mBAAmBC,cAAuB;IACnD,MAAM;IACN,UAASC,SAAS,EAAEC,OAAO;QACvBD,UAAU,gBAAgB,CAACE,kBAAkB,IAAIC,qBAAqBF;IAC1E;AACJ"}
1
+ {"version":3,"file":"api/features/AbortTask/feature.js","sources":["../../../../src/api/features/AbortTask/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { AbortTaskUseCaseImpl } from \"./AbortTaskUseCase.js\";\nimport { AbortTaskUseCase } from \"./abstractions.js\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\n\nexport const AbortTaskFeature = createFeature({\n name: \"AbortTask\",\n register(container) {\n container.registerFactory(AbortTaskUseCase, () => {\n return new AbortTaskUseCaseImpl(container.resolve(TaskService));\n });\n }\n});\n"],"names":["AbortTaskFeature","createFeature","container","AbortTaskUseCase","AbortTaskUseCaseImpl","TaskService"],"mappings":";;;;AAKO,MAAMA,mBAAmBC,cAAc;IAC1C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,eAAe,CAACC,kBAAkB,IACjC,IAAIC,qBAAqBF,UAAU,OAAO,CAACG;IAE1D;AACJ"}
@@ -1,7 +1,7 @@
1
1
  import { CleanupTaskSubtreeUseCase as UseCaseAbstraction } from "./abstractions.js";
2
- import type { Context } from "../../../api/types.js";
2
+ import type { TasksCrud } from "../../../api/TasksCrud.js";
3
3
  export declare class CleanupTaskSubtreeUseCaseImpl implements UseCaseAbstraction.Interface {
4
- private readonly context;
5
- constructor(context: Context);
4
+ private readonly tasksCrud;
5
+ constructor(tasksCrud: TasksCrud.Interface);
6
6
  execute(taskId: string): Promise<void>;
7
7
  }
@@ -1,9 +1,9 @@
1
1
  class CleanupTaskSubtreeUseCaseImpl {
2
- constructor(context){
3
- this.context = context;
2
+ constructor(tasksCrud){
3
+ this.tasksCrud = tasksCrud;
4
4
  }
5
5
  async execute(taskId) {
6
- await this.context.tasks.cleanupTaskSubtree(taskId);
6
+ await this.tasksCrud.cleanupTaskSubtree(taskId);
7
7
  }
8
8
  }
9
9
  export { CleanupTaskSubtreeUseCaseImpl };
@@ -1 +1 @@
1
- {"version":3,"file":"api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js","sources":["../../../../src/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.ts"],"sourcesContent":["import { CleanupTaskSubtreeUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport type { Context } from \"~/api/types.js\";\n\nexport class CleanupTaskSubtreeUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(private readonly context: Context) {}\n\n public async execute(taskId: string): Promise<void> {\n await this.context.tasks.cleanupTaskSubtree(taskId);\n }\n}\n"],"names":["CleanupTaskSubtreeUseCaseImpl","context","taskId"],"mappings":"AAGO,MAAMA;IACT,YAAoCC,OAAgB,CAAE;aAAlBA,OAAO,GAAPA;IAAmB;IAEvD,MAAa,QAAQC,MAAc,EAAiB;QAChD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAACA;IAChD;AACJ"}
1
+ {"version":3,"file":"api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js","sources":["../../../../src/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.ts"],"sourcesContent":["import { CleanupTaskSubtreeUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport type { TasksCrud } from \"~/api/TasksCrud.js\";\n\nexport class CleanupTaskSubtreeUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(private readonly tasksCrud: TasksCrud.Interface) {}\n\n public async execute(taskId: string): Promise<void> {\n await this.tasksCrud.cleanupTaskSubtree(taskId);\n }\n}\n"],"names":["CleanupTaskSubtreeUseCaseImpl","tasksCrud","taskId"],"mappings":"AAGO,MAAMA;IACT,YAAoCC,SAA8B,CAAE;aAAhCA,SAAS,GAATA;IAAiC;IAErE,MAAa,QAAQC,MAAc,EAAiB;QAChD,MAAM,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAACA;IAC5C;AACJ"}
@@ -14,7 +14,7 @@ class GetBackgroundTaskSettingsRepositoryImpl {
14
14
  this.getLatestRevisionRepository = getLatestRevisionRepository;
15
15
  this.createEntryRepository = createEntryRepository;
16
16
  this.createEntryDataFactory = createEntryDataFactory;
17
- this.defaultRetentionDays = buildParams.get("BackgroundTasks.RetentionDays") ?? BACKGROUND_TASK_DEFAULT_RETENTION_DAYS;
17
+ this.defaultRetentionDays = buildParams.get("BackgroundTasks.RetentionDays") || BACKGROUND_TASK_DEFAULT_RETENTION_DAYS;
18
18
  }
19
19
  async execute() {
20
20
  try {
@@ -26,9 +26,12 @@ class GetBackgroundTaskSettingsRepositoryImpl {
26
26
  const entryResult = await this.getLatestRevisionRepository.execute(model, {
27
27
  id: entryId
28
28
  });
29
- if (entryResult.isOk()) return Result.ok({
30
- retentionDays: entryResult.value.values.retentionDays ?? this.defaultRetentionDays
31
- });
29
+ if (entryResult.isOk()) {
30
+ const retentionDays = null != entryResult.value.values.retentionDays ? entryResult.value.values.retentionDays : this.defaultRetentionDays;
31
+ return Result.ok({
32
+ retentionDays
33
+ });
34
+ }
32
35
  const { entry } = await this.createEntryDataFactory.create(model, {
33
36
  id: singletonId,
34
37
  values: {
@@ -1 +1 @@
1
- {"version":3,"file":"api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.js","sources":["../../../../src/api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createCacheKey } from \"@webiny/utils\";\nimport { GetModelRepository } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { GetLatestRevisionByEntryIdRepository } from \"@webiny/api-headless-cms/features/contentEntry/GetLatestRevisionByEntryId/index.js\";\nimport { CreateEntryRepository } from \"@webiny/api-headless-cms/features/contentEntry/CreateEntry/index.js\";\nimport { CreateEntryDataFactory } from \"@webiny/api-headless-cms/exports/api/cms/entry.js\";\nimport { BuildParams } from \"@webiny/api-core/features/buildParams/index.js\";\nimport { GetBackgroundTaskSettingsRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport {\n BackgroundTaskModelNotFoundError,\n BackgroundTaskPersistenceError\n} from \"~/api/domain/errors.js\";\nimport {\n BACKGROUND_TASK_SETTINGS_MODEL_ID,\n BACKGROUND_TASK_DEFAULT_RETENTION_DAYS\n} from \"~/api/domain/constants.js\";\nimport type { IBackgroundTaskSettings } from \"~/api/domain/BackgroundTaskSettings.js\";\n\ninterface BackgroundTaskSettingsValues {\n retentionDays?: number;\n}\n\nclass GetBackgroundTaskSettingsRepositoryImpl implements RepositoryAbstraction.Interface {\n private readonly defaultRetentionDays: number;\n\n constructor(\n private readonly getModelRepository: GetModelRepository.Interface,\n private readonly getLatestRevisionRepository: GetLatestRevisionByEntryIdRepository.Interface,\n private readonly createEntryRepository: CreateEntryRepository.Interface,\n private readonly createEntryDataFactory: CreateEntryDataFactory.Interface,\n buildParams: BuildParams.Interface\n ) {\n this.defaultRetentionDays =\n buildParams.get<number>(\"BackgroundTasks.RetentionDays\") ??\n BACKGROUND_TASK_DEFAULT_RETENTION_DAYS;\n }\n\n async execute(): Promise<Result<IBackgroundTaskSettings, RepositoryAbstraction.Error>> {\n try {\n const modelResult = await this.getModelRepository.execute(\n BACKGROUND_TASK_SETTINGS_MODEL_ID\n );\n if (modelResult.isFail()) {\n return Result.fail(\n new BackgroundTaskModelNotFoundError(BACKGROUND_TASK_SETTINGS_MODEL_ID)\n );\n }\n\n const model = modelResult.value;\n const singletonId = createCacheKey(model.modelId);\n const entryId = `${singletonId}#0001`;\n\n const entryResult =\n await this.getLatestRevisionRepository.execute<BackgroundTaskSettingsValues>(\n model,\n { id: entryId }\n );\n\n if (entryResult.isOk()) {\n return Result.ok({\n retentionDays:\n entryResult.value.values.retentionDays ?? this.defaultRetentionDays\n });\n }\n\n /* Entry doesn't exist yet — create it with the build-param default. */\n const { entry } =\n await this.createEntryDataFactory.create<BackgroundTaskSettingsValues>(model, {\n id: singletonId,\n values: {\n retentionDays: this.defaultRetentionDays\n }\n });\n\n const createResult = await this.createEntryRepository.execute(model, entry);\n if (createResult.isFail()) {\n return Result.fail(BackgroundTaskPersistenceError.from(createResult.error));\n }\n\n return Result.ok({ retentionDays: this.defaultRetentionDays });\n } catch (error) {\n return Result.fail(BackgroundTaskPersistenceError.from(error));\n }\n }\n}\n\nexport const GetBackgroundTaskSettingsRepository = RepositoryAbstraction.createImplementation({\n implementation: GetBackgroundTaskSettingsRepositoryImpl,\n dependencies: [\n GetModelRepository,\n GetLatestRevisionByEntryIdRepository,\n CreateEntryRepository,\n CreateEntryDataFactory,\n BuildParams\n ]\n});\n"],"names":["GetBackgroundTaskSettingsRepositoryImpl","getModelRepository","getLatestRevisionRepository","createEntryRepository","createEntryDataFactory","buildParams","BACKGROUND_TASK_DEFAULT_RETENTION_DAYS","modelResult","BACKGROUND_TASK_SETTINGS_MODEL_ID","Result","BackgroundTaskModelNotFoundError","model","singletonId","createCacheKey","entryId","entryResult","entry","createResult","BackgroundTaskPersistenceError","error","GetBackgroundTaskSettingsRepository","RepositoryAbstraction","GetModelRepository","GetLatestRevisionByEntryIdRepository","CreateEntryRepository","CreateEntryDataFactory","BuildParams"],"mappings":";;;;;;;;;;AAsBA,MAAMA;IAGF,YACqBC,kBAAgD,EAChDC,2BAA2E,EAC3EC,qBAAsD,EACtDC,sBAAwD,EACzEC,WAAkC,CACpC;aALmBJ,kBAAkB,GAAlBA;aACAC,2BAA2B,GAA3BA;aACAC,qBAAqB,GAArBA;aACAC,sBAAsB,GAAtBA;QAGjB,IAAI,CAAC,oBAAoB,GACrBC,YAAY,GAAG,CAAS,oCACxBC;IACR;IAEA,MAAM,UAAiF;QACnF,IAAI;YACA,MAAMC,cAAc,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CACrDC;YAEJ,IAAID,YAAY,MAAM,IAClB,OAAOE,OAAO,IAAI,CACd,IAAIC,iCAAiCF;YAI7C,MAAMG,QAAQJ,YAAY,KAAK;YAC/B,MAAMK,cAAcC,eAAeF,MAAM,OAAO;YAChD,MAAMG,UAAU,GAAGF,YAAY,KAAK,CAAC;YAErC,MAAMG,cACF,MAAM,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAC1CJ,OACA;gBAAE,IAAIG;YAAQ;YAGtB,IAAIC,YAAY,IAAI,IAChB,OAAON,OAAO,EAAE,CAAC;gBACb,eACIM,YAAY,KAAK,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,oBAAoB;YAC3E;YAIJ,MAAM,EAAEC,KAAK,EAAE,GACX,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAA+BL,OAAO;gBAC1E,IAAIC;gBACJ,QAAQ;oBACJ,eAAe,IAAI,CAAC,oBAAoB;gBAC5C;YACJ;YAEJ,MAAMK,eAAe,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAACN,OAAOK;YACrE,IAAIC,aAAa,MAAM,IACnB,OAAOR,OAAO,IAAI,CAACS,+BAA+B,IAAI,CAACD,aAAa,KAAK;YAG7E,OAAOR,OAAO,EAAE,CAAC;gBAAE,eAAe,IAAI,CAAC,oBAAoB;YAAC;QAChE,EAAE,OAAOU,OAAO;YACZ,OAAOV,OAAO,IAAI,CAACS,+BAA+B,IAAI,CAACC;QAC3D;IACJ;AACJ;AAEO,MAAMC,0EAAsCC,oCAAAA,oBAA0C,CAAC;IAC1F,gBAAgBrB;IAChB,cAAc;QACVsB;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
1
+ {"version":3,"file":"api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.js","sources":["../../../../src/api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createCacheKey } from \"@webiny/utils\";\nimport { GetModelRepository } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { GetLatestRevisionByEntryIdRepository } from \"@webiny/api-headless-cms/features/contentEntry/GetLatestRevisionByEntryId/index.js\";\nimport { CreateEntryRepository } from \"@webiny/api-headless-cms/features/contentEntry/CreateEntry/index.js\";\nimport { CreateEntryDataFactory } from \"@webiny/api-headless-cms/exports/api/cms/entry.js\";\nimport { BuildParams } from \"@webiny/api-core/features/buildParams/index.js\";\nimport { GetBackgroundTaskSettingsRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport {\n BackgroundTaskModelNotFoundError,\n BackgroundTaskPersistenceError\n} from \"~/api/domain/errors.js\";\nimport {\n BACKGROUND_TASK_SETTINGS_MODEL_ID,\n BACKGROUND_TASK_DEFAULT_RETENTION_DAYS\n} from \"~/api/domain/constants.js\";\nimport type { IBackgroundTaskSettings } from \"~/api/domain/BackgroundTaskSettings.js\";\n\ninterface BackgroundTaskSettingsValues {\n retentionDays?: number;\n}\n\nclass GetBackgroundTaskSettingsRepositoryImpl implements RepositoryAbstraction.Interface {\n private readonly defaultRetentionDays: number;\n\n constructor(\n private readonly getModelRepository: GetModelRepository.Interface,\n private readonly getLatestRevisionRepository: GetLatestRevisionByEntryIdRepository.Interface,\n private readonly createEntryRepository: CreateEntryRepository.Interface,\n private readonly createEntryDataFactory: CreateEntryDataFactory.Interface,\n buildParams: BuildParams.Interface\n ) {\n this.defaultRetentionDays =\n buildParams.get<number>(\"BackgroundTasks.RetentionDays\") ||\n BACKGROUND_TASK_DEFAULT_RETENTION_DAYS;\n }\n\n async execute(): Promise<Result<IBackgroundTaskSettings, RepositoryAbstraction.Error>> {\n try {\n const modelResult = await this.getModelRepository.execute(\n BACKGROUND_TASK_SETTINGS_MODEL_ID\n );\n if (modelResult.isFail()) {\n return Result.fail(\n new BackgroundTaskModelNotFoundError(BACKGROUND_TASK_SETTINGS_MODEL_ID)\n );\n }\n\n const model = modelResult.value;\n const singletonId = createCacheKey(model.modelId);\n const entryId = `${singletonId}#0001`;\n\n const entryResult =\n await this.getLatestRevisionRepository.execute<BackgroundTaskSettingsValues>(\n model,\n { id: entryId }\n );\n\n if (entryResult.isOk()) {\n const retentionDays =\n entryResult.value.values.retentionDays != null\n ? entryResult.value.values.retentionDays\n : this.defaultRetentionDays;\n\n return Result.ok({ retentionDays });\n }\n\n /* Entry doesn't exist yet — create it with the build-param default. */\n const { entry } =\n await this.createEntryDataFactory.create<BackgroundTaskSettingsValues>(model, {\n id: singletonId,\n values: {\n retentionDays: this.defaultRetentionDays\n }\n });\n\n const createResult = await this.createEntryRepository.execute(model, entry);\n if (createResult.isFail()) {\n return Result.fail(BackgroundTaskPersistenceError.from(createResult.error));\n }\n\n return Result.ok({ retentionDays: this.defaultRetentionDays });\n } catch (error) {\n return Result.fail(BackgroundTaskPersistenceError.from(error));\n }\n }\n}\n\nexport const GetBackgroundTaskSettingsRepository = RepositoryAbstraction.createImplementation({\n implementation: GetBackgroundTaskSettingsRepositoryImpl,\n dependencies: [\n GetModelRepository,\n GetLatestRevisionByEntryIdRepository,\n CreateEntryRepository,\n CreateEntryDataFactory,\n BuildParams\n ]\n});\n"],"names":["GetBackgroundTaskSettingsRepositoryImpl","getModelRepository","getLatestRevisionRepository","createEntryRepository","createEntryDataFactory","buildParams","BACKGROUND_TASK_DEFAULT_RETENTION_DAYS","modelResult","BACKGROUND_TASK_SETTINGS_MODEL_ID","Result","BackgroundTaskModelNotFoundError","model","singletonId","createCacheKey","entryId","entryResult","retentionDays","entry","createResult","BackgroundTaskPersistenceError","error","GetBackgroundTaskSettingsRepository","RepositoryAbstraction","GetModelRepository","GetLatestRevisionByEntryIdRepository","CreateEntryRepository","CreateEntryDataFactory","BuildParams"],"mappings":";;;;;;;;;;AAsBA,MAAMA;IAGF,YACqBC,kBAAgD,EAChDC,2BAA2E,EAC3EC,qBAAsD,EACtDC,sBAAwD,EACzEC,WAAkC,CACpC;aALmBJ,kBAAkB,GAAlBA;aACAC,2BAA2B,GAA3BA;aACAC,qBAAqB,GAArBA;aACAC,sBAAsB,GAAtBA;QAGjB,IAAI,CAAC,oBAAoB,GACrBC,YAAY,GAAG,CAAS,oCACxBC;IACR;IAEA,MAAM,UAAiF;QACnF,IAAI;YACA,MAAMC,cAAc,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CACrDC;YAEJ,IAAID,YAAY,MAAM,IAClB,OAAOE,OAAO,IAAI,CACd,IAAIC,iCAAiCF;YAI7C,MAAMG,QAAQJ,YAAY,KAAK;YAC/B,MAAMK,cAAcC,eAAeF,MAAM,OAAO;YAChD,MAAMG,UAAU,GAAGF,YAAY,KAAK,CAAC;YAErC,MAAMG,cACF,MAAM,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAC1CJ,OACA;gBAAE,IAAIG;YAAQ;YAGtB,IAAIC,YAAY,IAAI,IAAI;gBACpB,MAAMC,gBACFD,AAA0C,QAA1CA,YAAY,KAAK,CAAC,MAAM,CAAC,aAAa,GAChCA,YAAY,KAAK,CAAC,MAAM,CAAC,aAAa,GACtC,IAAI,CAAC,oBAAoB;gBAEnC,OAAON,OAAO,EAAE,CAAC;oBAAEO;gBAAc;YACrC;YAGA,MAAM,EAAEC,KAAK,EAAE,GACX,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAA+BN,OAAO;gBAC1E,IAAIC;gBACJ,QAAQ;oBACJ,eAAe,IAAI,CAAC,oBAAoB;gBAC5C;YACJ;YAEJ,MAAMM,eAAe,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAACP,OAAOM;YACrE,IAAIC,aAAa,MAAM,IACnB,OAAOT,OAAO,IAAI,CAACU,+BAA+B,IAAI,CAACD,aAAa,KAAK;YAG7E,OAAOT,OAAO,EAAE,CAAC;gBAAE,eAAe,IAAI,CAAC,oBAAoB;YAAC;QAChE,EAAE,OAAOW,OAAO;YACZ,OAAOX,OAAO,IAAI,CAACU,+BAA+B,IAAI,CAACC;QAC3D;IACJ;AACJ;AAEO,MAAMC,0EAAsCC,oCAAAA,oBAA0C,CAAC;IAC1F,gBAAgBtB;IAChB,cAAc;QACVuB;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
@@ -1,9 +1,9 @@
1
1
  import { GetTaskUseCase as UseCaseAbstraction } from "./abstractions.js";
2
2
  import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
3
3
  import { TaskService } from "@webiny/api-core/features/task/TaskService/index.js";
4
- import type { Context } from "../../../api/types.js";
4
+ import type { TasksCrud } from "../../../api/TasksCrud.js";
5
5
  export declare class GetTaskUseCaseImpl implements UseCaseAbstraction.Interface {
6
- private context;
7
- constructor(context: Context);
6
+ private tasksCrud;
7
+ constructor(tasksCrud: TasksCrud.Interface);
8
8
  execute<I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput, O extends TaskService.GenericOutput = TaskService.GenericOutput>(id: string): Promise<TaskService.Task<I, O> | null>;
9
9
  }
@@ -1,9 +1,9 @@
1
1
  class GetTaskUseCaseImpl {
2
- constructor(context){
3
- this.context = context;
2
+ constructor(tasksCrud){
3
+ this.tasksCrud = tasksCrud;
4
4
  }
5
5
  async execute(id) {
6
- return await this.context.tasks.getTask(id);
6
+ return await this.tasksCrud.getTask(id);
7
7
  }
8
8
  }
9
9
  export { GetTaskUseCaseImpl };
@@ -1 +1 @@
1
- {"version":3,"file":"api/features/GetTask/GetTaskUseCase.js","sources":["../../../../src/api/features/GetTask/GetTaskUseCase.ts"],"sourcesContent":["import { GetTaskUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport type { Context } from \"~/api/types.js\";\n\nexport class GetTaskUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(private context: Context) {}\n\n async execute<\n I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n >(id: string): Promise<TaskService.Task<I, O> | null> {\n return await this.context.tasks.getTask<I, O>(id);\n }\n}\n"],"names":["GetTaskUseCaseImpl","context","id"],"mappings":"AAKO,MAAMA;IACT,YAA2BC,OAAgB,CAAE;aAAlBA,OAAO,GAAPA;IAAmB;IAE9C,MAAM,QAGJC,EAAU,EAA0C;QAClD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAOA;IAClD;AACJ"}
1
+ {"version":3,"file":"api/features/GetTask/GetTaskUseCase.js","sources":["../../../../src/api/features/GetTask/GetTaskUseCase.ts"],"sourcesContent":["import { GetTaskUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport type { TasksCrud } from \"~/api/TasksCrud.js\";\n\nexport class GetTaskUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(private tasksCrud: TasksCrud.Interface) {}\n\n async execute<\n I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n >(id: string): Promise<TaskService.Task<I, O> | null> {\n return await this.tasksCrud.getTask<I, O>(id);\n }\n}\n"],"names":["GetTaskUseCaseImpl","tasksCrud","id"],"mappings":"AAKO,MAAMA;IACT,YAA2BC,SAA8B,CAAE;aAAhCA,SAAS,GAATA;IAAiC;IAE5D,MAAM,QAGJC,EAAU,EAA0C;QAClD,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAOA;IAC9C;AACJ"}
@@ -1,5 +1,4 @@
1
- import type { Context } from "../../../api/types.js";
2
1
  export declare const GetTaskFeature: {
3
2
  name: string;
4
- register(container: import("@webiny/di").Container, context: Context): void;
3
+ register(container: import("@webiny/di").Container): void;
5
4
  };
@@ -1,10 +1,11 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import { GetTaskUseCaseImpl } from "./GetTaskUseCase.js";
3
3
  import { GetTaskUseCase } from "./abstractions.js";
4
+ import { TasksCrud } from "../../TasksCrud.js";
4
5
  const GetTaskFeature = createFeature({
5
6
  name: "GetTask",
6
- register (container, context) {
7
- container.registerInstance(GetTaskUseCase, new GetTaskUseCaseImpl(context));
7
+ register (container) {
8
+ container.registerFactory(GetTaskUseCase, ()=>new GetTaskUseCaseImpl(container.resolve(TasksCrud)));
8
9
  }
9
10
  });
10
11
  export { GetTaskFeature };
@@ -1 +1 @@
1
- {"version":3,"file":"api/features/GetTask/feature.js","sources":["../../../../src/api/features/GetTask/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { GetTaskUseCaseImpl } from \"./GetTaskUseCase.js\";\nimport type { Context } from \"~/api/types.js\";\nimport { GetTaskUseCase } from \"./abstractions.js\";\n\nexport const GetTaskFeature = createFeature<Context>({\n name: \"GetTask\",\n register(container, context) {\n container.registerInstance(GetTaskUseCase, new GetTaskUseCaseImpl(context!));\n }\n});\n"],"names":["GetTaskFeature","createFeature","container","context","GetTaskUseCase","GetTaskUseCaseImpl"],"mappings":";;;AAKO,MAAMA,iBAAiBC,cAAuB;IACjD,MAAM;IACN,UAASC,SAAS,EAAEC,OAAO;QACvBD,UAAU,gBAAgB,CAACE,gBAAgB,IAAIC,mBAAmBF;IACtE;AACJ"}
1
+ {"version":3,"file":"api/features/GetTask/feature.js","sources":["../../../../src/api/features/GetTask/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { GetTaskUseCaseImpl } from \"./GetTaskUseCase.js\";\nimport { GetTaskUseCase } from \"./abstractions.js\";\nimport { TasksCrud } from \"~/api/TasksCrud.js\";\n\nexport const GetTaskFeature = createFeature({\n name: \"GetTask\",\n register(container) {\n container.registerFactory(GetTaskUseCase, () => {\n return new GetTaskUseCaseImpl(container.resolve(TasksCrud));\n });\n }\n});\n"],"names":["GetTaskFeature","createFeature","container","GetTaskUseCase","GetTaskUseCaseImpl","TasksCrud"],"mappings":";;;;AAKO,MAAMA,iBAAiBC,cAAc;IACxC,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,eAAe,CAACC,gBAAgB,IAC/B,IAAIC,mBAAmBF,UAAU,OAAO,CAACG;IAExD;AACJ"}
@@ -1,12 +1,15 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import { GetTaskDefinitionUseCase as UseCaseAbstraction } from "./abstractions.js";
3
3
  import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
4
- declare class GetTaskDefinitionUseCaseImpl implements UseCaseAbstraction.Interface {
4
+ import { TaskHandlerResolver } from "../../../api/features/TaskHandlerResolver/index.js";
5
+ import { Logger } from "@webiny/api-core/features/logger/index.js";
6
+ export declare class GetTaskDefinitionUseCaseImpl implements UseCaseAbstraction.Interface {
5
7
  private definitions;
6
- constructor(definitions: TaskDefinition.Interface[]);
8
+ private handlerResolver;
9
+ private logger;
10
+ constructor(definitions: TaskDefinition.Interface[], handlerResolver: TaskHandlerResolver.Interface, logger: Logger.Interface);
7
11
  execute<I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput, O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput>(id: string): Result<TaskDefinition.Runnable<I, O>, UseCaseAbstraction.Error>;
8
12
  }
9
13
  export declare const GetTaskDefinitionUseCase: typeof GetTaskDefinitionUseCaseImpl & {
10
14
  __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IGetTaskDefinitionUseCase>;
11
15
  };
12
- export {};
@@ -1,16 +1,75 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import { GetTaskDefinitionUseCase } from "./abstractions.js";
3
3
  import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
4
- import { TaskDefinitionNotFoundError } from "../../domain/errors.js";
4
+ import { TaskHandlerResolver } from "../TaskHandlerResolver/index.js";
5
+ import { Logger } from "@webiny/api-core/features/logger/index.js";
6
+ import { TaskDefinitionNotFoundError, TaskDefinitionNotRunnableError } from "../../domain/errors.js";
5
7
  class GetTaskDefinitionUseCaseImpl {
6
- constructor(definitions){
8
+ constructor(definitions, handlerResolver, logger){
7
9
  this.definitions = definitions;
10
+ this.handlerResolver = handlerResolver;
11
+ this.logger = logger;
8
12
  }
9
13
  execute(id) {
10
- for (const definition of this.definitions)if (definition.id === id) return Result.ok(definition);
14
+ for (const definition of this.definitions)if (definition.id === id) {
15
+ if (definition.handler) {
16
+ const handlerClass = definition.handler;
17
+ const handler = this.handlerResolver.resolve(handlerClass);
18
+ const runnable = toRunnable(definition, handler, this.logger);
19
+ return Result.ok(runnable);
20
+ }
21
+ if ("function" == typeof definition.run) {
22
+ const runnable = definition;
23
+ return Result.ok(runnable);
24
+ }
25
+ return Result.fail(new TaskDefinitionNotRunnableError(id));
26
+ }
11
27
  return Result.fail(new TaskDefinitionNotFoundError(id));
12
28
  }
13
29
  }
30
+ const SWALLOWED_HOOKS = new Set([
31
+ "onDone",
32
+ "onError",
33
+ "onAbort"
34
+ ]);
35
+ const toRunnable = (definition, handler, logger)=>{
36
+ const chain = (name)=>{
37
+ const own = handler[name]?.bind(handler);
38
+ const decorated = definition[name]?.bind(definition);
39
+ if (!own && !decorated) return;
40
+ return async (params)=>{
41
+ let failure;
42
+ if (own) try {
43
+ await own(params);
44
+ } catch (error) {
45
+ if (SWALLOWED_HOOKS.has(name)) logger.error({
46
+ error,
47
+ taskId: definition.id,
48
+ hook: name
49
+ }, "Error executing task lifecycle hook.");
50
+ else failure = error;
51
+ }
52
+ await decorated?.(params);
53
+ if (failure) throw failure;
54
+ };
55
+ };
56
+ return {
57
+ id: definition.id,
58
+ title: definition.title,
59
+ description: definition.description,
60
+ isPrivate: definition.isPrivate,
61
+ databaseLogs: definition.databaseLogs,
62
+ maxIterations: definition.maxIterations,
63
+ selfCleanup: definition.selfCleanup,
64
+ run: handler.run.bind(handler),
65
+ onBeforeTrigger: chain("onBeforeTrigger"),
66
+ onDone: chain("onDone"),
67
+ onError: chain("onError"),
68
+ onAbort: chain("onAbort"),
69
+ onMaxIterations: chain("onMaxIterations"),
70
+ createInputValidation: handler.createInputValidation?.bind(handler)
71
+ };
72
+ };
14
73
  const GetTaskDefinitionUseCase_GetTaskDefinitionUseCase = GetTaskDefinitionUseCase.createImplementation({
15
74
  implementation: GetTaskDefinitionUseCaseImpl,
16
75
  dependencies: [
@@ -19,9 +78,11 @@ const GetTaskDefinitionUseCase_GetTaskDefinitionUseCase = GetTaskDefinitionUseCa
19
78
  {
20
79
  multiple: true
21
80
  }
22
- ]
81
+ ],
82
+ TaskHandlerResolver,
83
+ Logger
23
84
  ]
24
85
  });
25
- export { GetTaskDefinitionUseCase_GetTaskDefinitionUseCase as GetTaskDefinitionUseCase };
86
+ export { GetTaskDefinitionUseCaseImpl, GetTaskDefinitionUseCase_GetTaskDefinitionUseCase as GetTaskDefinitionUseCase };
26
87
 
27
88
  //# sourceMappingURL=GetTaskDefinitionUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api/features/GetTaskDefinition/GetTaskDefinitionUseCase.js","sources":["../../../../src/api/features/GetTaskDefinition/GetTaskDefinitionUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { GetTaskDefinitionUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { TaskDefinitionNotFoundError } from \"~/api/domain/errors.js\";\n\nclass GetTaskDefinitionUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(private definitions: TaskDefinition.Interface[]) {}\n\n public execute<\n I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput\n >(id: string): Result<TaskDefinition.Runnable<I, O>, UseCaseAbstraction.Error> {\n for (const definition of this.definitions) {\n if (definition.id === id) {\n return Result.ok(definition as TaskDefinition.Runnable<I, O>);\n }\n }\n\n return Result.fail(new TaskDefinitionNotFoundError(id));\n }\n}\n\nexport const GetTaskDefinitionUseCase = UseCaseAbstraction.createImplementation({\n implementation: GetTaskDefinitionUseCaseImpl,\n dependencies: [[TaskDefinition, { multiple: true }]]\n});\n"],"names":["GetTaskDefinitionUseCaseImpl","definitions","id","definition","Result","TaskDefinitionNotFoundError","GetTaskDefinitionUseCase","UseCaseAbstraction","TaskDefinition"],"mappings":";;;;AAKA,MAAMA;IACF,YAA2BC,WAAuC,CAAE;aAAzCA,WAAW,GAAXA;IAA0C;IAE9D,QAGLC,EAAU,EAAmE;QAC3E,KAAK,MAAMC,cAAc,IAAI,CAAC,WAAW,CACrC,IAAIA,WAAW,EAAE,KAAKD,IAClB,OAAOE,OAAO,EAAE,CAACD;QAIzB,OAAOC,OAAO,IAAI,CAAC,IAAIC,4BAA4BH;IACvD;AACJ;AAEO,MAAMI,oDAA2BC,yBAAAA,oBAAuC,CAAC;IAC5E,gBAAgBP;IAChB,cAAc;QAAC;YAACQ;YAAgB;gBAAE,UAAU;YAAK;SAAE;KAAC;AACxD"}
1
+ {"version":3,"file":"api/features/GetTaskDefinition/GetTaskDefinitionUseCase.js","sources":["../../../../src/api/features/GetTaskDefinition/GetTaskDefinitionUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport type { Constructor } from \"@webiny/di\";\nimport { GetTaskDefinitionUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { TaskHandlerResolver } from \"~/api/features/TaskHandlerResolver/index.js\";\nimport { Logger } from \"@webiny/api-core/features/logger/index.js\";\nimport {\n TaskDefinitionNotFoundError,\n TaskDefinitionNotRunnableError\n} from \"~/api/domain/errors.js\";\n\nexport class GetTaskDefinitionUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(\n private definitions: TaskDefinition.Interface[],\n private handlerResolver: TaskHandlerResolver.Interface,\n private logger: Logger.Interface\n ) {}\n\n public execute<\n I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput\n >(id: string): Result<TaskDefinition.Runnable<I, O>, UseCaseAbstraction.Error> {\n for (const definition of this.definitions) {\n if (definition.id !== id) {\n continue;\n }\n\n // New shape: the definition names a handler class, built only now that we know this is\n // the task being asked for. Its dependencies are never touched for the other 23.\n if (definition.handler) {\n // The registered definition is stored under the abstraction's default generics, so\n // its handler cannot be proven assignable to the caller's narrower <I, O>. Same\n // reason the legacy branch below casts.\n const handlerClass = definition.handler as Constructor<\n TaskDefinition.Handler<I, O>\n >;\n const handler = this.handlerResolver.resolve(handlerClass);\n const runnable = toRunnable<I, O>(definition, handler, this.logger);\n\n return Result.ok(runnable);\n }\n\n // Old shape: the definition carries `run()` and the hooks itself, so it IS the handler.\n if (typeof definition.run === \"function\") {\n const runnable = definition as TaskDefinition.Runnable<I, O>;\n\n return Result.ok(runnable);\n }\n\n return Result.fail(new TaskDefinitionNotRunnableError(id));\n }\n\n return Result.fail(new TaskDefinitionNotFoundError(id));\n }\n}\n\ntype HookName = \"onBeforeTrigger\" | \"onDone\" | \"onError\" | \"onAbort\" | \"onMaxIterations\";\n\n/** Hooks a single-object definition already swallows, via SelfCleaningTaskDecorator's safeCall. */\nconst SWALLOWED_HOOKS: ReadonlySet<HookName> = new Set([\"onDone\", \"onError\", \"onAbort\"]);\n\n/**\n * Present the two halves as the single object the runner and `context.tasks.getDefinition()` expect.\n * Metadata reads come from the definition, behaviour from the handler.\n *\n * Hooks come from BOTH, in that order, because they mean different things. The handler's hook is the\n * task author's, and the definition's is whatever a decorator added: `SelfCleaningTaskDecorator`\n * supplies an `onDone` that deletes the finished task. Taking only the handler's would silently drop\n * every definition-level decorator, and taking only the definition's would drop the task's own.\n *\n * A throwing handler hook must not stop the decorator's half from running, so the decorator's half\n * runs either way. What happens to the error afterwards follows what a single-object definition\n * already does, which differs per hook:\n *\n * - `onDone`, `onError`, `onAbort` are swallowed and logged, because `SelfCleaningTaskDecorator`\n * routes them through its own `safeCall` and does exactly that;\n * - `onBeforeTrigger` and `onMaxIterations` are rethrown, because the decorator passes those\n * straight through and their callers rely on the throw. A throwing `onBeforeTrigger` aborts the\n * trigger, and a throwing `onMaxIterations` is what makes `TaskManager` answer with \"Failed to\n * execute onMaxIterations handler.\" Swallowing either would silently change behaviour for a task\n * that moved to a handler.\n *\n * TRANSITIONAL. The chaining exists only because a definition can still carry hooks. It should not:\n * a hook needs dependencies, and dependencies on a definition are what make looking one up by id\n * expensive, which is the thing this whole split is removing. The final PR moves hooks onto handlers\n * only, at which point this function takes them from the handler and the definition contributes\n * metadata alone. `SelfCleaningTaskDecorator` splits to follow: its `databaseLogs` override stays a\n * definition decorator, and its cleanup hooks become a `TaskHandler` decorator reading\n * `params.definition.selfCleanup`.\n */\nconst toRunnable = <I extends TaskDefinition.TaskInput, O extends TaskDefinition.TaskOutput>(\n definition: TaskDefinition.Interface,\n handler: TaskDefinition.Handler<I, O>,\n logger: Logger.Interface\n): TaskDefinition.Runnable<I, O> => {\n const chain = (name: HookName) => {\n const own = handler[name]?.bind(handler);\n const decorated = definition[name]?.bind(definition);\n\n if (!own && !decorated) {\n return undefined;\n }\n\n return async (params: any) => {\n let failure: unknown;\n\n if (own) {\n try {\n await own(params);\n } catch (error) {\n if (SWALLOWED_HOOKS.has(name)) {\n logger.error(\n { error, taskId: definition.id, hook: name },\n \"Error executing task lifecycle hook.\"\n );\n } else {\n failure = error;\n }\n }\n }\n\n await decorated?.(params);\n\n if (failure) {\n throw failure;\n }\n };\n };\n\n return {\n id: definition.id,\n title: definition.title,\n description: definition.description,\n isPrivate: definition.isPrivate as boolean,\n databaseLogs: definition.databaseLogs as boolean,\n maxIterations: definition.maxIterations as number,\n selfCleanup: definition.selfCleanup,\n\n run: handler.run.bind(handler),\n onBeforeTrigger: chain(\"onBeforeTrigger\"),\n onDone: chain(\"onDone\"),\n onError: chain(\"onError\"),\n onAbort: chain(\"onAbort\"),\n onMaxIterations: chain(\"onMaxIterations\"),\n createInputValidation: handler.createInputValidation?.bind(handler)\n };\n};\n\nexport const GetTaskDefinitionUseCase = UseCaseAbstraction.createImplementation({\n implementation: GetTaskDefinitionUseCaseImpl,\n dependencies: [[TaskDefinition, { multiple: true }], TaskHandlerResolver, Logger]\n});\n"],"names":["GetTaskDefinitionUseCaseImpl","definitions","handlerResolver","logger","id","definition","handlerClass","handler","runnable","toRunnable","Result","TaskDefinitionNotRunnableError","TaskDefinitionNotFoundError","SWALLOWED_HOOKS","Set","chain","name","own","decorated","params","failure","error","GetTaskDefinitionUseCase","UseCaseAbstraction","TaskDefinition","TaskHandlerResolver","Logger"],"mappings":";;;;;;AAWO,MAAMA;IACT,YACYC,WAAuC,EACvCC,eAA8C,EAC9CC,MAAwB,CAClC;aAHUF,WAAW,GAAXA;aACAC,eAAe,GAAfA;aACAC,MAAM,GAANA;IACT;IAEI,QAGLC,EAAU,EAAmE;QAC3E,KAAK,MAAMC,cAAc,IAAI,CAAC,WAAW,CACrC,IAAIA,WAAW,EAAE,KAAKD;YAMtB,IAAIC,WAAW,OAAO,EAAE;gBAIpB,MAAMC,eAAeD,WAAW,OAAO;gBAGvC,MAAME,UAAU,IAAI,CAAC,eAAe,CAAC,OAAO,CAACD;gBAC7C,MAAME,WAAWC,WAAiBJ,YAAYE,SAAS,IAAI,CAAC,MAAM;gBAElE,OAAOG,OAAO,EAAE,CAACF;YACrB;YAGA,IAAI,AAA0B,cAA1B,OAAOH,WAAW,GAAG,EAAiB;gBACtC,MAAMG,WAAWH;gBAEjB,OAAOK,OAAO,EAAE,CAACF;YACrB;YAEA,OAAOE,OAAO,IAAI,CAAC,IAAIC,+BAA+BP;;QAG1D,OAAOM,OAAO,IAAI,CAAC,IAAIE,4BAA4BR;IACvD;AACJ;AAKA,MAAMS,kBAAyC,IAAIC,IAAI;IAAC;IAAU;IAAW;CAAU;AA+BvF,MAAML,aAAa,CACfJ,YACAE,SACAJ;IAEA,MAAMY,QAAQ,CAACC;QACX,MAAMC,MAAMV,OAAO,CAACS,KAAK,EAAE,KAAKT;QAChC,MAAMW,YAAYb,UAAU,CAACW,KAAK,EAAE,KAAKX;QAEzC,IAAI,CAACY,OAAO,CAACC,WACT;QAGJ,OAAO,OAAOC;YACV,IAAIC;YAEJ,IAAIH,KACA,IAAI;gBACA,MAAMA,IAAIE;YACd,EAAE,OAAOE,OAAO;gBACZ,IAAIR,gBAAgB,GAAG,CAACG,OACpBb,OAAO,KAAK,CACR;oBAAEkB;oBAAO,QAAQhB,WAAW,EAAE;oBAAE,MAAMW;gBAAK,GAC3C;qBAGJI,UAAUC;YAElB;YAGJ,MAAMH,YAAYC;YAElB,IAAIC,SACA,MAAMA;QAEd;IACJ;IAEA,OAAO;QACH,IAAIf,WAAW,EAAE;QACjB,OAAOA,WAAW,KAAK;QACvB,aAAaA,WAAW,WAAW;QACnC,WAAWA,WAAW,SAAS;QAC/B,cAAcA,WAAW,YAAY;QACrC,eAAeA,WAAW,aAAa;QACvC,aAAaA,WAAW,WAAW;QAEnC,KAAKE,QAAQ,GAAG,CAAC,IAAI,CAACA;QACtB,iBAAiBQ,MAAM;QACvB,QAAQA,MAAM;QACd,SAASA,MAAM;QACf,SAASA,MAAM;QACf,iBAAiBA,MAAM;QACvB,uBAAuBR,QAAQ,qBAAqB,EAAE,KAAKA;IAC/D;AACJ;AAEO,MAAMe,oDAA2BC,yBAAAA,oBAAuC,CAAC;IAC5E,gBAAgBvB;IAChB,cAAc;QAAC;YAACwB;YAAgB;gBAAE,UAAU;YAAK;SAAE;QAAEC;QAAqBC;KAAO;AACrF"}
@@ -1,11 +1,12 @@
1
1
  import type { Result } from "@webiny/feature/api";
2
2
  import type { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
3
- import type { TaskDefinitionNotFoundError } from "../../../api/domain/errors.js";
3
+ import type { TaskDefinitionNotFoundError, TaskDefinitionNotRunnableError } from "../../../api/domain/errors.js";
4
4
  export interface IGetTaskDefinitionUseCase {
5
5
  execute<I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput, O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput>(id: string): Result<TaskDefinition.Runnable<I, O>, UseCaseError>;
6
6
  }
7
7
  export interface IGetTaskDefinitionUseCaseErrors {
8
8
  notFound: TaskDefinitionNotFoundError;
9
+ notRunnable: TaskDefinitionNotRunnableError;
9
10
  }
10
11
  type UseCaseError = IGetTaskDefinitionUseCaseErrors[keyof IGetTaskDefinitionUseCaseErrors];
11
12
  export declare const GetTaskDefinitionUseCase: import("@webiny/di").Abstraction<IGetTaskDefinitionUseCase>;
@@ -1 +1 @@
1
- {"version":3,"file":"api/features/GetTaskDefinition/abstractions.js","sources":["../../../../src/api/features/GetTaskDefinition/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport type { TaskDefinitionNotFoundError } from \"~/api/domain/errors.js\";\n\nexport interface IGetTaskDefinitionUseCase {\n execute<\n I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput\n >(\n id: string\n ): Result<TaskDefinition.Runnable<I, O>, UseCaseError>;\n}\n\nexport interface IGetTaskDefinitionUseCaseErrors {\n notFound: TaskDefinitionNotFoundError;\n}\n\ntype UseCaseError = IGetTaskDefinitionUseCaseErrors[keyof IGetTaskDefinitionUseCaseErrors];\n\nexport const GetTaskDefinitionUseCase = createAbstraction<IGetTaskDefinitionUseCase>(\n \"Tasks/GetTaskDefinitionUseCase\"\n);\n\nexport namespace GetTaskDefinitionUseCase {\n export type Interface = IGetTaskDefinitionUseCase;\n\n export type Error = UseCaseError;\n export type Return<\n I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput\n > = Result<TaskDefinition.Runnable<I, O>, UseCaseError>;\n}\n"],"names":["GetTaskDefinitionUseCase","createAbstraction"],"mappings":";AAoBO,MAAMA,2BAA2BC,kBACpC"}
1
+ {"version":3,"file":"api/features/GetTaskDefinition/abstractions.js","sources":["../../../../src/api/features/GetTaskDefinition/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport type {\n TaskDefinitionNotFoundError,\n TaskDefinitionNotRunnableError\n} from \"~/api/domain/errors.js\";\n\nexport interface IGetTaskDefinitionUseCase {\n execute<\n I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput\n >(\n id: string\n ): Result<TaskDefinition.Runnable<I, O>, UseCaseError>;\n}\n\nexport interface IGetTaskDefinitionUseCaseErrors {\n notFound: TaskDefinitionNotFoundError;\n notRunnable: TaskDefinitionNotRunnableError;\n}\n\ntype UseCaseError = IGetTaskDefinitionUseCaseErrors[keyof IGetTaskDefinitionUseCaseErrors];\n\nexport const GetTaskDefinitionUseCase = createAbstraction<IGetTaskDefinitionUseCase>(\n \"Tasks/GetTaskDefinitionUseCase\"\n);\n\nexport namespace GetTaskDefinitionUseCase {\n export type Interface = IGetTaskDefinitionUseCase;\n\n export type Error = UseCaseError;\n export type Return<\n I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput\n > = Result<TaskDefinition.Runnable<I, O>, UseCaseError>;\n}\n"],"names":["GetTaskDefinitionUseCase","createAbstraction"],"mappings":";AAwBO,MAAMA,2BAA2BC,kBACpC"}
@@ -1,9 +1,10 @@
1
1
  import { ListTasksUseCase as UseCaseAbstraction } from "./abstractions.js";
2
2
  import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
3
3
  import { TaskService } from "@webiny/api-core/features/task/TaskService/index.js";
4
- import type { Context, IListTasksResponse } from "../../../api/types.js";
4
+ import type { IListTasksResponse } from "../../../api/types.js";
5
+ import type { TasksCrud } from "../../../api/TasksCrud.js";
5
6
  export declare class ListTasksUseCaseImpl implements UseCaseAbstraction.Interface {
6
- private context;
7
- constructor(context: Context);
7
+ private tasksCrud;
8
+ constructor(tasksCrud: TasksCrud.Interface);
8
9
  execute<I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput, O extends TaskService.GenericOutput = TaskService.GenericOutput>(params?: UseCaseAbstraction.Params): Promise<IListTasksResponse<I, O>>;
9
10
  }
@@ -1,9 +1,9 @@
1
1
  class ListTasksUseCaseImpl {
2
- constructor(context){
3
- this.context = context;
2
+ constructor(tasksCrud){
3
+ this.tasksCrud = tasksCrud;
4
4
  }
5
5
  async execute(params) {
6
- return await this.context.tasks.listTasks(params);
6
+ return await this.tasksCrud.listTasks(params);
7
7
  }
8
8
  }
9
9
  export { ListTasksUseCaseImpl };
@@ -1 +1 @@
1
- {"version":3,"file":"api/features/ListTasks/ListTasksUseCase.js","sources":["../../../../src/api/features/ListTasks/ListTasksUseCase.ts"],"sourcesContent":["import { ListTasksUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport type { Context, IListTasksResponse } from \"~/api/types.js\";\n\nexport class ListTasksUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(private context: Context) {}\n\n async execute<\n I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n >(params?: UseCaseAbstraction.Params): Promise<IListTasksResponse<I, O>> {\n return await this.context.tasks.listTasks<I, O>(params);\n }\n}\n"],"names":["ListTasksUseCaseImpl","context","params"],"mappings":"AAKO,MAAMA;IACT,YAA2BC,OAAgB,CAAE;aAAlBA,OAAO,GAAPA;IAAmB;IAE9C,MAAM,QAGJC,MAAkC,EAAqC;QACrE,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAOA;IACpD;AACJ"}
1
+ {"version":3,"file":"api/features/ListTasks/ListTasksUseCase.js","sources":["../../../../src/api/features/ListTasks/ListTasksUseCase.ts"],"sourcesContent":["import { ListTasksUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport type { IListTasksResponse } from \"~/api/types.js\";\nimport type { TasksCrud } from \"~/api/TasksCrud.js\";\n\nexport class ListTasksUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(private tasksCrud: TasksCrud.Interface) {}\n\n async execute<\n I extends TaskDefinition.TaskInput = TaskDefinition.TaskInput,\n O extends TaskService.GenericOutput = TaskService.GenericOutput\n >(params?: UseCaseAbstraction.Params): Promise<IListTasksResponse<I, O>> {\n return await this.tasksCrud.listTasks<I, O>(params);\n }\n}\n"],"names":["ListTasksUseCaseImpl","tasksCrud","params"],"mappings":"AAMO,MAAMA;IACT,YAA2BC,SAA8B,CAAE;aAAhCA,SAAS,GAATA;IAAiC;IAE5D,MAAM,QAGJC,MAAkC,EAAqC;QACrE,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAOA;IAChD;AACJ"}
@@ -1,5 +1,4 @@
1
- import type { Context } from "../../../api/types.js";
2
1
  export declare const ListTasksFeature: {
3
2
  name: string;
4
- register(container: import("@webiny/di").Container, context: Context): void;
3
+ register(container: import("@webiny/di").Container): void;
5
4
  };
@@ -1,10 +1,11 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import { ListTasksUseCaseImpl } from "./ListTasksUseCase.js";
3
3
  import { ListTasksUseCase } from "./abstractions.js";
4
+ import { TasksCrud } from "../../TasksCrud.js";
4
5
  const ListTasksFeature = createFeature({
5
6
  name: "ListTasks",
6
- register (container, context) {
7
- container.registerInstance(ListTasksUseCase, new ListTasksUseCaseImpl(context));
7
+ register (container) {
8
+ container.registerFactory(ListTasksUseCase, ()=>new ListTasksUseCaseImpl(container.resolve(TasksCrud)));
8
9
  }
9
10
  });
10
11
  export { ListTasksFeature };
@@ -1 +1 @@
1
- {"version":3,"file":"api/features/ListTasks/feature.js","sources":["../../../../src/api/features/ListTasks/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { ListTasksUseCaseImpl } from \"./ListTasksUseCase.js\";\nimport type { Context } from \"~/api/types.js\";\nimport { ListTasksUseCase } from \"./abstractions.js\";\n\nexport const ListTasksFeature = createFeature<Context>({\n name: \"ListTasks\",\n register(container, context) {\n container.registerInstance(ListTasksUseCase, new ListTasksUseCaseImpl(context!));\n }\n});\n"],"names":["ListTasksFeature","createFeature","container","context","ListTasksUseCase","ListTasksUseCaseImpl"],"mappings":";;;AAKO,MAAMA,mBAAmBC,cAAuB;IACnD,MAAM;IACN,UAASC,SAAS,EAAEC,OAAO;QACvBD,UAAU,gBAAgB,CAACE,kBAAkB,IAAIC,qBAAqBF;IAC1E;AACJ"}
1
+ {"version":3,"file":"api/features/ListTasks/feature.js","sources":["../../../../src/api/features/ListTasks/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { ListTasksUseCaseImpl } from \"./ListTasksUseCase.js\";\nimport { ListTasksUseCase } from \"./abstractions.js\";\nimport { TasksCrud } from \"~/api/TasksCrud.js\";\n\nexport const ListTasksFeature = createFeature({\n name: \"ListTasks\",\n register(container) {\n container.registerFactory(ListTasksUseCase, () => {\n return new ListTasksUseCaseImpl(container.resolve(TasksCrud));\n });\n }\n});\n"],"names":["ListTasksFeature","createFeature","container","ListTasksUseCase","ListTasksUseCaseImpl","TasksCrud"],"mappings":";;;;AAKO,MAAMA,mBAAmBC,cAAc;IAC1C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,eAAe,CAACC,kBAAkB,IACjC,IAAIC,qBAAqBF,UAAU,OAAO,CAACG;IAE1D;AACJ"}
@@ -33,8 +33,8 @@ declare class TaskControllerImpl implements Abstraction.Interface {
33
33
  }) => Promise<void>;
34
34
  };
35
35
  task: {
36
- trigger: <CI extends TaskDefinition.TaskInput = import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskInput>(params: ITaskTriggerParams<CI>) => Promise<Result<TaskService.Task<CI>, BaseError>>;
37
- listChildren: <CT extends TaskDefinition.TaskInput = import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskInput, CO extends TaskDefinition.TaskOutput = import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskOutput>(definitionId?: string) => Promise<TaskService.Task<CT, CO>[]>;
36
+ trigger: <CI extends TaskDefinition.TaskInput = TaskDefinition.TaskInput>(params: ITaskTriggerParams<CI>) => Promise<Result<TaskService.Task<CI>, BaseError>>;
37
+ listChildren: <CT extends TaskDefinition.TaskInput = TaskDefinition.TaskInput, CO extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput>(definitionId?: string) => Promise<TaskService.Task<CT, CO>[]>;
38
38
  };
39
39
  runtime: {
40
40
  isCloseToTimeout: (seconds?: number) => boolean;
@@ -1,7 +1,7 @@
1
1
  import { TaskExecutionContext as Abstraction } from "./abstractions.js";
2
2
  import type { ITaskManagerStore } from "../../../api/runner/abstractions/TaskManagerStore.js";
3
3
  import type { ITaskRunner } from "../../../api/runner/abstractions/TaskRunner.js";
4
- import type { ITimer } from "@webiny/handler-aws";
4
+ import type { Timer } from "../../../api/abstractions/Timer.js";
5
5
  import type { ITaskResponse } from "../../../api/response/abstractions/index.js";
6
6
  declare class TaskExecutionContextImpl implements Abstraction.Interface {
7
7
  private _store?;
@@ -10,11 +10,11 @@ declare class TaskExecutionContextImpl implements Abstraction.Interface {
10
10
  private _response?;
11
11
  get store(): ITaskManagerStore;
12
12
  get runner(): ITaskRunner;
13
- get timer(): ITimer;
13
+ get timer(): Timer.Interface;
14
14
  get response(): ITaskResponse;
15
15
  setStore(store: ITaskManagerStore): void;
16
16
  setRunner(runner: ITaskRunner): void;
17
- setTimer(timer: ITimer): void;
17
+ setTimer(timer: Timer.Interface): void;
18
18
  setResponse(response: ITaskResponse): void;
19
19
  clear(): void;
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"api/features/TaskExecutionContext/TaskExecutionContext.js","sources":["../../../../src/api/features/TaskExecutionContext/TaskExecutionContext.ts"],"sourcesContent":["import { TaskExecutionContext as Abstraction } from \"./abstractions.js\";\nimport type { ITaskManagerStore } from \"~/api/runner/abstractions/TaskManagerStore.js\";\nimport type { ITaskRunner } from \"~/api/runner/abstractions/TaskRunner.js\";\nimport type { ITimer } from \"@webiny/handler-aws\";\nimport type { ITaskResponse } from \"~/api/response/abstractions/index.js\";\n\nclass TaskExecutionContextImpl implements Abstraction.Interface {\n private _store?: ITaskManagerStore;\n private _runner?: ITaskRunner;\n private _timer?: ITimer;\n private _response?: ITaskResponse;\n\n get store(): ITaskManagerStore {\n if (!this._store) {\n throw new Error(\"TaskExecutionContext: store not set. Task execution not started.\");\n }\n return this._store;\n }\n\n get runner(): ITaskRunner {\n if (!this._runner) {\n throw new Error(\"TaskExecutionContext: runner not set. Task execution not started.\");\n }\n return this._runner;\n }\n\n get timer(): ITimer {\n if (!this._timer) {\n throw new Error(\"TaskExecutionContext: timer not set. Task execution not started.\");\n }\n return this._timer;\n }\n\n get response(): ITaskResponse {\n if (!this._response) {\n throw new Error(\"TaskExecutionContext: response not set. Task execution not started.\");\n }\n return this._response;\n }\n\n setStore(store: ITaskManagerStore): void {\n this._store = store;\n }\n\n setRunner(runner: ITaskRunner): void {\n this._runner = runner;\n }\n\n setTimer(timer: ITimer): void {\n this._timer = timer;\n }\n\n setResponse(response: ITaskResponse): void {\n this._response = response;\n }\n\n clear(): void {\n this._store = undefined;\n this._runner = undefined;\n this._timer = undefined;\n }\n}\n\nexport const TaskExecutionContext = Abstraction.createImplementation({\n implementation: TaskExecutionContextImpl,\n dependencies: []\n});\n"],"names":["TaskExecutionContextImpl","Error","store","runner","timer","response","undefined","TaskExecutionContext","Abstraction"],"mappings":";AAMA,MAAMA;IAMF,IAAI,QAA2B;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,EACZ,MAAM,IAAIC,MAAM;QAEpB,OAAO,IAAI,CAAC,MAAM;IACtB;IAEA,IAAI,SAAsB;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO,EACb,MAAM,IAAIA,MAAM;QAEpB,OAAO,IAAI,CAAC,OAAO;IACvB;IAEA,IAAI,QAAgB;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM,EACZ,MAAM,IAAIA,MAAM;QAEpB,OAAO,IAAI,CAAC,MAAM;IACtB;IAEA,IAAI,WAA0B;QAC1B,IAAI,CAAC,IAAI,CAAC,SAAS,EACf,MAAM,IAAIA,MAAM;QAEpB,OAAO,IAAI,CAAC,SAAS;IACzB;IAEA,SAASC,KAAwB,EAAQ;QACrC,IAAI,CAAC,MAAM,GAAGA;IAClB;IAEA,UAAUC,MAAmB,EAAQ;QACjC,IAAI,CAAC,OAAO,GAAGA;IACnB;IAEA,SAASC,KAAa,EAAQ;QAC1B,IAAI,CAAC,MAAM,GAAGA;IAClB;IAEA,YAAYC,QAAuB,EAAQ;QACvC,IAAI,CAAC,SAAS,GAAGA;IACrB;IAEA,QAAc;QACV,IAAI,CAAC,MAAM,GAAGC;QACd,IAAI,CAAC,OAAO,GAAGA;QACf,IAAI,CAAC,MAAM,GAAGA;IAClB;AACJ;AAEO,MAAMC,4CAAuBC,qBAAAA,oBAAgC,CAAC;IACjE,gBAAgBR;IAChB,cAAc,EAAE;AACpB"}
1
+ {"version":3,"file":"api/features/TaskExecutionContext/TaskExecutionContext.js","sources":["../../../../src/api/features/TaskExecutionContext/TaskExecutionContext.ts"],"sourcesContent":["import { TaskExecutionContext as Abstraction } from \"./abstractions.js\";\nimport type { ITaskManagerStore } from \"~/api/runner/abstractions/TaskManagerStore.js\";\nimport type { ITaskRunner } from \"~/api/runner/abstractions/TaskRunner.js\";\nimport type { Timer } from \"~/api/abstractions/Timer.js\";\nimport type { ITaskResponse } from \"~/api/response/abstractions/index.js\";\n\nclass TaskExecutionContextImpl implements Abstraction.Interface {\n private _store?: ITaskManagerStore;\n private _runner?: ITaskRunner;\n private _timer?: Timer.Interface;\n private _response?: ITaskResponse;\n\n get store(): ITaskManagerStore {\n if (!this._store) {\n throw new Error(\"TaskExecutionContext: store not set. Task execution not started.\");\n }\n return this._store;\n }\n\n get runner(): ITaskRunner {\n if (!this._runner) {\n throw new Error(\"TaskExecutionContext: runner not set. Task execution not started.\");\n }\n return this._runner;\n }\n\n get timer(): Timer.Interface {\n if (!this._timer) {\n throw new Error(\"TaskExecutionContext: timer not set. Task execution not started.\");\n }\n return this._timer;\n }\n\n get response(): ITaskResponse {\n if (!this._response) {\n throw new Error(\"TaskExecutionContext: response not set. Task execution not started.\");\n }\n return this._response;\n }\n\n setStore(store: ITaskManagerStore): void {\n this._store = store;\n }\n\n setRunner(runner: ITaskRunner): void {\n this._runner = runner;\n }\n\n setTimer(timer: Timer.Interface): void {\n this._timer = timer;\n }\n\n setResponse(response: ITaskResponse): void {\n this._response = response;\n }\n\n clear(): void {\n this._store = undefined;\n this._runner = undefined;\n this._timer = undefined;\n }\n}\n\nexport const TaskExecutionContext = Abstraction.createImplementation({\n implementation: TaskExecutionContextImpl,\n dependencies: []\n});\n"],"names":["TaskExecutionContextImpl","Error","store","runner","timer","response","undefined","TaskExecutionContext","Abstraction"],"mappings":";AAMA,MAAMA;IAMF,IAAI,QAA2B;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,EACZ,MAAM,IAAIC,MAAM;QAEpB,OAAO,IAAI,CAAC,MAAM;IACtB;IAEA,IAAI,SAAsB;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO,EACb,MAAM,IAAIA,MAAM;QAEpB,OAAO,IAAI,CAAC,OAAO;IACvB;IAEA,IAAI,QAAyB;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM,EACZ,MAAM,IAAIA,MAAM;QAEpB,OAAO,IAAI,CAAC,MAAM;IACtB;IAEA,IAAI,WAA0B;QAC1B,IAAI,CAAC,IAAI,CAAC,SAAS,EACf,MAAM,IAAIA,MAAM;QAEpB,OAAO,IAAI,CAAC,SAAS;IACzB;IAEA,SAASC,KAAwB,EAAQ;QACrC,IAAI,CAAC,MAAM,GAAGA;IAClB;IAEA,UAAUC,MAAmB,EAAQ;QACjC,IAAI,CAAC,OAAO,GAAGA;IACnB;IAEA,SAASC,KAAsB,EAAQ;QACnC,IAAI,CAAC,MAAM,GAAGA;IAClB;IAEA,YAAYC,QAAuB,EAAQ;QACvC,IAAI,CAAC,SAAS,GAAGA;IACrB;IAEA,QAAc;QACV,IAAI,CAAC,MAAM,GAAGC;QACd,IAAI,CAAC,OAAO,GAAGA;QACf,IAAI,CAAC,MAAM,GAAGA;IAClB;AACJ;AAEO,MAAMC,4CAAuBC,qBAAAA,oBAAgC,CAAC;IACjE,gBAAgBR;IAChB,cAAc,EAAE;AACpB"}