@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
@@ -1,301 +0,0 @@
1
- import { GraphQLSchemaPlugin } from "@webiny/handler-graphql";
2
- import { renderSortEnum } from "@webiny/api-headless-cms/utils/renderSortEnum.js";
3
- import { ContextPlugin } from "@webiny/handler";
4
- import { renderListFilterFields } from "@webiny/api-headless-cms/utils/renderListFilterFields.js";
5
- import { emptyResolver, resolve, resolveList } from "./utils.js";
6
- import { renderFields } from "@webiny/api-headless-cms/utils/renderFields.js";
7
- import { checkPermissions } from "./checkPermissions.js";
8
- import { ListModelsUseCase } from "@webiny/api-headless-cms/features/contentModel/ListModels/index.js";
9
- import { CmsModelFieldToGraphQLRegistry } from "@webiny/api-headless-cms/exports/api/cms/graphql.js";
10
- const createGraphQL = ()=>{
11
- const plugin = new ContextPlugin(async (ctx)=>{
12
- if (!ctx.tenancy.getCurrentTenant()) return;
13
- const taskModel = await ctx.tasks.getTaskModel();
14
- const logModel = await ctx.tasks.getLogModel();
15
- const listModels = ctx.container.resolve(ListModelsUseCase);
16
- const fieldRegistry = ctx.container.resolve(CmsModelFieldToGraphQLRegistry);
17
- const modelsResult = await ctx.security.withoutAuthorization(async ()=>await listModels.execute({
18
- includePrivate: false
19
- }));
20
- if (modelsResult.isFail()) throw modelsResult.error;
21
- const models = modelsResult.value.filter((model)=>model.fields.length > 0);
22
- const taskFields = renderFields({
23
- models,
24
- model: taskModel,
25
- fields: taskModel.fields,
26
- type: "manage",
27
- fieldRegistry
28
- });
29
- const logFields = renderFields({
30
- models,
31
- model: logModel,
32
- fields: logModel.fields.filter((field)=>"task" !== field.fieldId),
33
- type: "manage",
34
- fieldRegistry
35
- });
36
- const listTasksFilterFieldsRender = renderListFilterFields({
37
- model: taskModel,
38
- fields: taskModel.fields,
39
- type: "manage",
40
- fieldRegistry,
41
- excludeFields: [
42
- "entryId"
43
- ]
44
- });
45
- const listLogsFilterFieldsRender = renderListFilterFields({
46
- model: logModel,
47
- fields: logModel.fields,
48
- type: "manage",
49
- fieldRegistry,
50
- excludeFields: [
51
- "entryId"
52
- ]
53
- });
54
- const sortTasksEnumRender = renderSortEnum({
55
- model: taskModel,
56
- fields: taskModel.fields,
57
- fieldRegistry,
58
- sorters: []
59
- });
60
- const sortLogsEnumRender = renderSortEnum({
61
- model: logModel,
62
- fields: logModel.fields,
63
- fieldRegistry,
64
- sorters: []
65
- });
66
- const plugin = new GraphQLSchemaPlugin({
67
- typeDefs: `
68
- type WebinyBackgroundTaskError {
69
- message: String
70
- code: String
71
- data: JSON
72
- stack: String
73
- }
74
-
75
- ${taskFields.map((f)=>f.typeDefs).join("\n")}
76
- ${logFields.map((f)=>f.typeDefs).join("\n")}
77
-
78
- type WebinyBackgroundTask {
79
- id: String!
80
- createdOn: DateTime!
81
- savedOn: DateTime
82
- createdBy: WebinyBackgroundTaskIdentity!
83
- logs(
84
- where: WebinyBackgroundTaskLogListWhereInput
85
- limit: Number
86
- sort: [WebinyBackgroundTaskLogListSorter!]
87
- ): [WebinyBackgroundTaskLog!]!
88
- ${taskFields.map((f)=>f.fields).join("\n")}
89
- }
90
-
91
- type WebinyBackgroundTaskResponse {
92
- data: WebinyBackgroundTask
93
- error: WebinyBackgroundTaskError
94
- }
95
-
96
- type WebinyBackgroundTaskMeta {
97
- cursor: String
98
- hasMoreItems: Boolean!
99
- totalCount: Int!
100
- }
101
-
102
- type WebinyBackgroundTaskListResponse {
103
- data: [WebinyBackgroundTask!]
104
- meta: WebinyBackgroundTaskMeta
105
- error: WebinyBackgroundTaskError
106
- }
107
-
108
- type WebinyBackgroundTaskLog {
109
- id: String!
110
- createdOn: DateTime!
111
- createdBy: WebinyBackgroundTaskIdentity!
112
- task: WebinyBackgroundTask!
113
- ${logFields.map((f)=>f.fields).join("\n")}
114
- }
115
-
116
- type WebinyBackgroundTaskLogListResponse {
117
- data: [WebinyBackgroundTaskLog!]
118
- meta: WebinyBackgroundTaskMeta
119
- error: WebinyBackgroundTaskError
120
- }
121
-
122
- type WebinyBackgroundTaskDefinition {
123
- id: String!
124
- title: String!
125
- description: String
126
- }
127
-
128
- type WebinyBackgroundTaskListDefinitionsResponse {
129
- data: [WebinyBackgroundTaskDefinition!]
130
- error: WebinyBackgroundTaskError
131
- }
132
-
133
- type WebinyBackgroundTaskIdentity {
134
- id: String!
135
- displayName: String!
136
- type: String
137
- }
138
-
139
- type WebinyBackgroundTaskTriggerResponse {
140
- data: WebinyBackgroundTask
141
- error: WebinyBackgroundTaskError
142
- }
143
-
144
- type WebinyBackgroundTaskDeleteResponse {
145
- data: Boolean
146
- error: WebinyBackgroundTaskError
147
- }
148
-
149
- input WebinyBackgroundTaskListWhereInput {
150
- ${listTasksFilterFieldsRender.allFiltersAsString() || "_empty: String"}
151
- }
152
-
153
- input WebinyBackgroundTaskLogListWhereInput {
154
- ${listLogsFilterFieldsRender.allFiltersAsString() || "_empty: String"}
155
- }
156
-
157
- enum WebinyBackgroundTaskListSorter {
158
- ${sortTasksEnumRender}
159
- }
160
-
161
- enum WebinyBackgroundTaskLogListSorter {
162
- ${sortLogsEnumRender}
163
- }
164
-
165
- type WebinyBackgroundTaskQuery {
166
- _empty: String
167
- }
168
-
169
- type WebinyBackgroundTaskMutation {
170
- _empty: String
171
- }
172
-
173
- extend type Query {
174
- backgroundTasks: WebinyBackgroundTaskQuery
175
- }
176
-
177
- extend type Mutation {
178
- backgroundTasks: WebinyBackgroundTaskMutation
179
- }
180
-
181
- extend type WebinyBackgroundTaskQuery {
182
- getTask(id: ID!): WebinyBackgroundTaskResponse!
183
- listTasks(
184
- where: WebinyBackgroundTaskListWhereInput
185
- sort: [WebinyBackgroundTaskListSorter!]
186
- limit: Int
187
- after: String
188
- search: String
189
- ): WebinyBackgroundTaskListResponse!
190
- listDefinitions: WebinyBackgroundTaskListDefinitionsResponse!
191
-
192
- listLogs(
193
- where: WebinyBackgroundTaskLogListWhereInput
194
- sort: [WebinyBackgroundTaskLogListSorter!]
195
- limit: Int
196
- after: String
197
- search: String
198
- ): WebinyBackgroundTaskLogListResponse!
199
- }
200
-
201
- extend type WebinyBackgroundTaskMutation {
202
- triggerTask(definition: String!, input: JSON, name: String, delay: Number): WebinyBackgroundTaskTriggerResponse!
203
- abortTask(id: ID!, message: String): WebinyBackgroundTaskResponse!
204
- deleteTask(id: ID!): WebinyBackgroundTaskDeleteResponse!
205
- }
206
- `,
207
- resolvers: {
208
- Query: {
209
- backgroundTasks: emptyResolver
210
- },
211
- Mutation: {
212
- backgroundTasks: emptyResolver
213
- },
214
- WebinyBackgroundTaskQuery: {
215
- getTask: async (_, args, context)=>resolve(async ()=>{
216
- await checkPermissions(context, {
217
- rwd: "r"
218
- });
219
- return await context.tasks.getTask(args.id);
220
- }),
221
- listTasks: async (_, args, context)=>resolveList(async ()=>{
222
- await checkPermissions(context, {
223
- rwd: "r"
224
- });
225
- return await context.tasks.listTasks(args);
226
- }),
227
- listDefinitions: async (_, __, context)=>resolve(async ()=>{
228
- await checkPermissions(context, {
229
- rwd: "r"
230
- });
231
- const result = context.tasks.listDefinitions();
232
- return result.filter((item)=>!item.isPrivate);
233
- }),
234
- listLogs: async (_, args, context)=>resolveList(async ()=>{
235
- await checkPermissions(context, {
236
- rwd: "r"
237
- });
238
- return await context.tasks.listLogs(args);
239
- })
240
- },
241
- WebinyBackgroundTaskMutation: {
242
- abortTask: async (_, args, context)=>{
243
- await checkPermissions(context, {
244
- rwd: "w"
245
- });
246
- return resolve(async ()=>{
247
- const result = await context.tasks.abort(args);
248
- if (result.isOk()) return result.value;
249
- throw result.error;
250
- });
251
- },
252
- triggerTask: async (_, args, context)=>{
253
- await checkPermissions(context, {
254
- rwd: "w"
255
- });
256
- return resolve(async ()=>{
257
- const result = await context.tasks.trigger(args);
258
- if (result.isOk()) return result.value;
259
- throw result.error;
260
- });
261
- },
262
- deleteTask: async (_, args, context)=>{
263
- await checkPermissions(context, {
264
- rwd: "d"
265
- });
266
- return resolve(async ()=>await context.tasks.deleteTask(args.id));
267
- }
268
- },
269
- WebinyBackgroundTask: {
270
- logs: async (parent, args, context)=>{
271
- const { items } = await context.tasks.listLogs({
272
- sort: [
273
- "createdBy_ASC"
274
- ],
275
- limit: 10000,
276
- ...args,
277
- where: {
278
- ...args?.where,
279
- task: parent.id
280
- }
281
- });
282
- return items;
283
- }
284
- },
285
- WebinyBackgroundTaskLog: {
286
- task: async (parent, _, context)=>await context.tasks.getTask(parent.task)
287
- }
288
- }
289
- });
290
- plugin.name = "tasks.graphql.schema";
291
- ctx.plugins.register(plugin);
292
- });
293
- plugin.name = "tasks.graphql";
294
- return plugin;
295
- };
296
- const createBackgroundTaskGraphQL = ()=>[
297
- createGraphQL()
298
- ];
299
- export { createBackgroundTaskGraphQL };
300
-
301
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api/graphql/index.js","sources":["../../../src/api/graphql/index.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { renderSortEnum } from \"@webiny/api-headless-cms/utils/renderSortEnum.js\";\nimport { ContextPlugin } from \"@webiny/handler\";\nimport type { Context, IListTaskLogParams, IListTaskParams, ITask, ITaskLog } from \"~/api/types.js\";\nimport { renderListFilterFields } from \"@webiny/api-headless-cms/utils/renderListFilterFields.js\";\nimport { emptyResolver, resolve, resolveList } from \"./utils.js\";\nimport { renderFields } from \"@webiny/api-headless-cms/utils/renderFields.js\";\nimport { checkPermissions } from \"./checkPermissions.js\";\nimport type { Plugin } from \"@webiny/plugins/types.js\";\nimport { ListModelsUseCase } from \"@webiny/api-headless-cms/features/contentModel/ListModels/index.js\";\nimport { CmsModelFieldToGraphQLRegistry } from \"@webiny/api-headless-cms/exports/api/cms/graphql.js\";\n\ninterface IGetTaskQueryParams {\n id: string;\n}\n\ninterface IAbortTaskMutationParams {\n id: string;\n message?: string;\n}\n\ninterface ITriggerTaskMutationParams {\n name?: string;\n definition: string;\n input?: Record<string, any>;\n delay?: number;\n}\n\ninterface IDeleteTaskMutationParams {\n id: string;\n}\n\nconst createGraphQL = () => {\n const plugin = new ContextPlugin<Context>(async ctx => {\n if (!ctx.tenancy.getCurrentTenant()) {\n return;\n }\n\n const taskModel = await ctx.tasks.getTaskModel();\n const logModel = await ctx.tasks.getLogModel();\n\n const listModels = ctx.container.resolve(ListModelsUseCase);\n const fieldRegistry = ctx.container.resolve(CmsModelFieldToGraphQLRegistry);\n\n const modelsResult = await ctx.security.withoutAuthorization(async () => {\n return await listModels.execute({ includePrivate: false });\n });\n if (modelsResult.isFail()) {\n throw modelsResult.error;\n }\n const models = modelsResult.value.filter(model => model.fields.length > 0);\n const taskFields = renderFields({\n models,\n model: taskModel,\n fields: taskModel.fields,\n type: \"manage\",\n fieldRegistry\n });\n\n const logFields = renderFields({\n models,\n model: logModel,\n fields: logModel.fields.filter(field => field.fieldId !== \"task\"),\n type: \"manage\",\n fieldRegistry\n });\n\n const listTasksFilterFieldsRender = renderListFilterFields({\n model: taskModel,\n fields: taskModel.fields,\n type: \"manage\",\n fieldRegistry,\n excludeFields: [\"entryId\"]\n });\n\n const listLogsFilterFieldsRender = renderListFilterFields({\n model: logModel,\n fields: logModel.fields,\n type: \"manage\",\n fieldRegistry,\n excludeFields: [\"entryId\"]\n });\n\n const sortTasksEnumRender = renderSortEnum({\n model: taskModel,\n fields: taskModel.fields,\n fieldRegistry,\n sorters: []\n });\n\n const sortLogsEnumRender = renderSortEnum({\n model: logModel,\n fields: logModel.fields,\n fieldRegistry,\n sorters: []\n });\n\n const plugin = new GraphQLSchemaPlugin<Context>({\n typeDefs: /* GraphQL */ `\n type WebinyBackgroundTaskError {\n message: String\n code: String\n data: JSON\n stack: String\n }\n\n ${taskFields.map(f => f.typeDefs).join(\"\\n\")}\n ${logFields.map(f => f.typeDefs).join(\"\\n\")}\n\n type WebinyBackgroundTask {\n id: String!\n createdOn: DateTime!\n savedOn: DateTime\n createdBy: WebinyBackgroundTaskIdentity!\n logs(\n where: WebinyBackgroundTaskLogListWhereInput\n limit: Number\n sort: [WebinyBackgroundTaskLogListSorter!]\n ): [WebinyBackgroundTaskLog!]!\n ${taskFields.map(f => f.fields).join(\"\\n\")}\n }\n\n type WebinyBackgroundTaskResponse {\n data: WebinyBackgroundTask\n error: WebinyBackgroundTaskError\n }\n\n type WebinyBackgroundTaskMeta {\n cursor: String\n hasMoreItems: Boolean!\n totalCount: Int!\n }\n\n type WebinyBackgroundTaskListResponse {\n data: [WebinyBackgroundTask!]\n meta: WebinyBackgroundTaskMeta\n error: WebinyBackgroundTaskError\n }\n\n type WebinyBackgroundTaskLog {\n id: String!\n createdOn: DateTime!\n createdBy: WebinyBackgroundTaskIdentity!\n task: WebinyBackgroundTask!\n ${logFields.map(f => f.fields).join(\"\\n\")}\n }\n\n type WebinyBackgroundTaskLogListResponse {\n data: [WebinyBackgroundTaskLog!]\n meta: WebinyBackgroundTaskMeta\n error: WebinyBackgroundTaskError\n }\n\n type WebinyBackgroundTaskDefinition {\n id: String!\n title: String!\n description: String\n }\n\n type WebinyBackgroundTaskListDefinitionsResponse {\n data: [WebinyBackgroundTaskDefinition!]\n error: WebinyBackgroundTaskError\n }\n\n type WebinyBackgroundTaskIdentity {\n id: String!\n displayName: String!\n type: String\n }\n\n type WebinyBackgroundTaskTriggerResponse {\n data: WebinyBackgroundTask\n error: WebinyBackgroundTaskError\n }\n\n type WebinyBackgroundTaskDeleteResponse {\n data: Boolean\n error: WebinyBackgroundTaskError\n }\n\n input WebinyBackgroundTaskListWhereInput {\n ${listTasksFilterFieldsRender.allFiltersAsString() || \"_empty: String\"}\n }\n\n input WebinyBackgroundTaskLogListWhereInput {\n ${listLogsFilterFieldsRender.allFiltersAsString() || \"_empty: String\"}\n }\n\n enum WebinyBackgroundTaskListSorter {\n ${sortTasksEnumRender}\n }\n\n enum WebinyBackgroundTaskLogListSorter {\n ${sortLogsEnumRender}\n }\n\n type WebinyBackgroundTaskQuery {\n _empty: String\n }\n\n type WebinyBackgroundTaskMutation {\n _empty: String\n }\n\n extend type Query {\n backgroundTasks: WebinyBackgroundTaskQuery\n }\n\n extend type Mutation {\n backgroundTasks: WebinyBackgroundTaskMutation\n }\n\n extend type WebinyBackgroundTaskQuery {\n getTask(id: ID!): WebinyBackgroundTaskResponse!\n listTasks(\n where: WebinyBackgroundTaskListWhereInput\n sort: [WebinyBackgroundTaskListSorter!]\n limit: Int\n after: String\n search: String\n ): WebinyBackgroundTaskListResponse!\n listDefinitions: WebinyBackgroundTaskListDefinitionsResponse!\n\n listLogs(\n where: WebinyBackgroundTaskLogListWhereInput\n sort: [WebinyBackgroundTaskLogListSorter!]\n limit: Int\n after: String\n search: String\n ): WebinyBackgroundTaskLogListResponse!\n }\n\n extend type WebinyBackgroundTaskMutation {\n triggerTask(definition: String!, input: JSON, name: String, delay: Number): WebinyBackgroundTaskTriggerResponse!\n abortTask(id: ID!, message: String): WebinyBackgroundTaskResponse!\n deleteTask(id: ID!): WebinyBackgroundTaskDeleteResponse!\n }\n `,\n resolvers: {\n Query: {\n backgroundTasks: emptyResolver\n },\n Mutation: {\n backgroundTasks: emptyResolver\n },\n WebinyBackgroundTaskQuery: {\n /**\n * We need to think of a way to pass the args type to the resolver without assigning it directly.\n */\n getTask: async (_, args: IGetTaskQueryParams, context) => {\n return resolve(async () => {\n await checkPermissions(context, {\n rwd: \"r\"\n });\n return await context.tasks.getTask(args.id);\n });\n },\n listTasks: async (_, args: IListTaskParams, context) => {\n return resolveList(async () => {\n await checkPermissions(context, {\n rwd: \"r\"\n });\n return await context.tasks.listTasks(args);\n });\n },\n listDefinitions: async (_, __, context) => {\n return resolve(async () => {\n await checkPermissions(context, {\n rwd: \"r\"\n });\n const result = context.tasks.listDefinitions();\n /**\n * Do not output private tasks.\n */\n return result.filter(item => {\n return !item.isPrivate;\n });\n });\n },\n listLogs: async (_, args: IListTaskLogParams, context) => {\n return resolveList(async () => {\n await checkPermissions(context, {\n rwd: \"r\"\n });\n return await context.tasks.listLogs(args);\n });\n }\n },\n WebinyBackgroundTaskMutation: {\n /**\n * We need to think of a way to pass the args type to the resolver without assigning it directly.\n */\n abortTask: async (_, args: IAbortTaskMutationParams, context) => {\n await checkPermissions(context, {\n rwd: \"w\"\n });\n return resolve<ITask>(async () => {\n const result = await context.tasks.abort(args);\n if (result.isOk()) {\n return result.value;\n }\n\n throw result.error;\n });\n },\n /**\n * We need to think of a way to pass the args type to the resolver without assigning it directly.\n */\n triggerTask: async (_, args: ITriggerTaskMutationParams, context) => {\n await checkPermissions(context, {\n rwd: \"w\"\n });\n return resolve<ITask>(async () => {\n const result = await context.tasks.trigger(args);\n if (result.isOk()) {\n return result.value;\n }\n\n throw result.error;\n });\n },\n /**\n * We need to think of a way to pass the args type to the resolver without assigning it directly.\n */\n deleteTask: async (_, args: IDeleteTaskMutationParams, context) => {\n await checkPermissions(context, {\n rwd: \"d\"\n });\n return resolve(async () => {\n return await context.tasks.deleteTask(args.id);\n });\n }\n },\n /**\n * Custom resolvers for fields\n */\n WebinyBackgroundTask: {\n logs: async (parent: ITask, args: IListTaskLogParams, context) => {\n const { items } = await context.tasks.listLogs({\n sort: [\"createdBy_ASC\"],\n limit: 10000,\n ...args,\n where: {\n ...args?.where,\n task: parent.id\n }\n });\n return items;\n }\n },\n WebinyBackgroundTaskLog: {\n task: async (parent: ITaskLog, _, context) => {\n return await context.tasks.getTask(parent.task);\n }\n }\n }\n });\n\n plugin.name = \"tasks.graphql.schema\";\n\n ctx.plugins.register(plugin);\n });\n\n plugin.name = \"tasks.graphql\";\n\n return plugin;\n};\n\nexport const createBackgroundTaskGraphQL = (): Plugin[] => {\n return [createGraphQL()];\n};\n"],"names":["createGraphQL","plugin","ContextPlugin","ctx","taskModel","logModel","listModels","ListModelsUseCase","fieldRegistry","CmsModelFieldToGraphQLRegistry","modelsResult","models","model","taskFields","renderFields","logFields","field","listTasksFilterFieldsRender","renderListFilterFields","listLogsFilterFieldsRender","sortTasksEnumRender","renderSortEnum","sortLogsEnumRender","GraphQLSchemaPlugin","f","emptyResolver","_","args","context","resolve","checkPermissions","resolveList","__","result","item","parent","items","createBackgroundTaskGraphQL"],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import type { APIGatewayProxyResult, Context as LambdaContext } from "@webiny/aws-sdk/types/index.js";
2
- import type { HandlerParams, ITaskRawEvent } from "../../api/handler/types.js";
3
- export interface HandlerCallable {
4
- (event: ITaskRawEvent, context: LambdaContext): Promise<APIGatewayProxyResult>;
5
- }
6
- export declare const createHandler: (params: HandlerParams) => HandlerCallable;
@@ -1,55 +0,0 @@
1
- import { createHandler } from "@webiny/handler";
2
- import { registerDefaultPlugins } from "@webiny/handler-aws/plugins/index.js";
3
- import { execute } from "@webiny/handler-aws/execute.js";
4
- import { TaskRunner } from "../runner/index.js";
5
- import { timerFactory } from "@webiny/handler-aws/utils/index.js";
6
- import { TaskEventValidation } from "../runner/TaskEventValidation.js";
7
- import { TaskResultStatus } from "@webiny/api-core/features/task/TaskDefinition/index.js";
8
- const url = "/webiny-background-task-event";
9
- const handler_createHandler = (params)=>async (event, context)=>{
10
- const app = createHandler({
11
- ...params,
12
- options: {
13
- logger: true === params.debug,
14
- ...params.options || {}
15
- }
16
- });
17
- registerDefaultPlugins(app.webiny);
18
- app.addHook("preSerialization", async (_, __, payload)=>{
19
- if (!payload.body) return payload;
20
- return payload.body;
21
- });
22
- await app.register(async (taskApp)=>{
23
- taskApp.setErrorHandler(async (error, _, reply)=>{
24
- app.__webiny_raw_result = {
25
- error: {
26
- message: error.message,
27
- code: error.code,
28
- data: error.data
29
- },
30
- status: TaskResultStatus.ERROR
31
- };
32
- return reply.send();
33
- });
34
- taskApp.post(url, async (_, reply)=>{
35
- const handler = new TaskRunner(app.webiny, timerFactory(context), new TaskEventValidation());
36
- app.__webiny_raw_result = await handler.run(event);
37
- return reply.send({});
38
- });
39
- });
40
- return execute({
41
- app,
42
- url: url,
43
- payload: {
44
- ...event,
45
- headers: {
46
- ["x-tenant"]: event.tenant,
47
- ["x-webiny-cms-endpoint"]: event.endpoint,
48
- ["accept-language"]: "en-US"
49
- }
50
- }
51
- });
52
- };
53
- export { handler_createHandler as createHandler };
54
-
55
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api/handler/index.js","sources":["../../../src/api/handler/index.ts"],"sourcesContent":["import { createHandler as createBaseHandler } from \"@webiny/handler\";\nimport { registerDefaultPlugins } from \"@webiny/handler-aws/plugins/index.js\";\nimport { execute } from \"@webiny/handler-aws/execute.js\";\nimport type {\n APIGatewayProxyResult,\n Context as LambdaContext\n} from \"@webiny/aws-sdk/types/index.js\";\nimport type { Context } from \"~/api/types.js\";\nimport type { HandlerParams, ITaskRawEvent } from \"~/api/handler/types.js\";\nimport { TaskRunner } from \"~/api/runner/index.js\";\nimport type WebinyError from \"@webiny/error\";\nimport { timerFactory } from \"@webiny/handler-aws/utils/index.js\";\nimport { TaskEventValidation } from \"~/api/runner/TaskEventValidation.js\";\nimport { TaskResultStatus } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\n\nexport interface HandlerCallable {\n (event: ITaskRawEvent, context: LambdaContext): Promise<APIGatewayProxyResult>;\n}\n\nconst url = \"/webiny-background-task-event\";\n\nexport const createHandler = (params: HandlerParams): HandlerCallable => {\n return async (event, context) => {\n const app = createBaseHandler({\n ...params,\n options: {\n logger: params.debug === true,\n ...(params.options || {})\n }\n });\n\n registerDefaultPlugins(app.webiny);\n\n app.addHook(\"preSerialization\", async (_, __, payload: Record<string, any>) => {\n if (!payload.body) {\n return payload;\n }\n return payload.body;\n });\n\n await app.register(async taskApp => {\n taskApp.setErrorHandler<WebinyError>(async (error, _, reply) => {\n app.__webiny_raw_result = {\n error: {\n message: error.message,\n code: error.code,\n data: error.data\n },\n status: TaskResultStatus.ERROR\n };\n return reply.send();\n });\n\n taskApp.post(url, async (_, reply) => {\n const handler = new TaskRunner(\n /**\n * We can safely cast because we know that the context is of type tasks/Context\n */\n app.webiny as Context,\n timerFactory(context),\n new TaskEventValidation()\n );\n\n app.__webiny_raw_result = await handler.run(event);\n return reply.send({});\n });\n });\n\n return execute({\n app,\n url,\n payload: {\n ...event,\n headers: {\n [\"x-tenant\"]: event.tenant,\n [\"x-webiny-cms-endpoint\"]: event.endpoint,\n [\"accept-language\"]: \"en-US\"\n }\n }\n });\n };\n};\n"],"names":["url","createHandler","params","event","context","app","createBaseHandler","registerDefaultPlugins","_","__","payload","taskApp","error","reply","TaskResultStatus","handler","TaskRunner","timerFactory","TaskEventValidation","execute"],"mappings":";;;;;;;AAmBA,MAAMA,MAAM;AAEL,MAAMC,wBAAgB,CAACC,SACnB,OAAOC,OAAOC;QACjB,MAAMC,MAAMC,cAAkB;YAC1B,GAAGJ,MAAM;YACT,SAAS;gBACL,QAAQA,AAAiB,SAAjBA,OAAO,KAAK;gBACpB,GAAIA,OAAO,OAAO,IAAI,CAAC,CAAC;YAC5B;QACJ;QAEAK,uBAAuBF,IAAI,MAAM;QAEjCA,IAAI,OAAO,CAAC,oBAAoB,OAAOG,GAAGC,IAAIC;YAC1C,IAAI,CAACA,QAAQ,IAAI,EACb,OAAOA;YAEX,OAAOA,QAAQ,IAAI;QACvB;QAEA,MAAML,IAAI,QAAQ,CAAC,OAAMM;YACrBA,QAAQ,eAAe,CAAc,OAAOC,OAAOJ,GAAGK;gBAClDR,IAAI,mBAAmB,GAAG;oBACtB,OAAO;wBACH,SAASO,MAAM,OAAO;wBACtB,MAAMA,MAAM,IAAI;wBAChB,MAAMA,MAAM,IAAI;oBACpB;oBACA,QAAQE,iBAAiB,KAAK;gBAClC;gBACA,OAAOD,MAAM,IAAI;YACrB;YAEAF,QAAQ,IAAI,CAACX,KAAK,OAAOQ,GAAGK;gBACxB,MAAME,UAAU,IAAIC,WAIhBX,IAAI,MAAM,EACVY,aAAab,UACb,IAAIc;gBAGRb,IAAI,mBAAmB,GAAG,MAAMU,QAAQ,GAAG,CAACZ;gBAC5C,OAAOU,MAAM,IAAI,CAAC,CAAC;YACvB;QACJ;QAEA,OAAOM,QAAQ;YACXd;YACAL,KAAAA;YACA,SAAS;gBACL,GAAGG,KAAK;gBACR,SAAS;oBACL,CAAC,WAAW,EAAEA,MAAM,MAAM;oBAC1B,CAAC,wBAAwB,EAAEA,MAAM,QAAQ;oBACzC,CAAC,kBAAkB,EAAE;gBACzB;YACJ;QACJ;IACJ"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,15 +0,0 @@
1
- import { registry } from "@webiny/handler-aws/registry.js";
2
- import { createSourceHandler } from "@webiny/handler-aws";
3
- const handler = createSourceHandler({
4
- name: "handler-webiny-background-task",
5
- canUse: (event)=>!!event.payload?.webinyTaskId,
6
- handle: async ({ params, event, context })=>{
7
- const { createHandler } = await import("./index.js");
8
- return createHandler(params)(event.payload, context);
9
- }
10
- });
11
- registry.register(handler, {
12
- silent: true
13
- });
14
-
15
- //# sourceMappingURL=register.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api/handler/register.js","sources":["../../../src/api/handler/register.ts"],"sourcesContent":["import { registry } from \"@webiny/handler-aws/registry.js\";\nimport { createSourceHandler } from \"@webiny/handler-aws\";\nimport type { HandlerParams, IIncomingEvent, ITaskEvent } from \"./types.js\";\n\nconst handler = createSourceHandler<IIncomingEvent<ITaskEvent>, HandlerParams>({\n name: \"handler-webiny-background-task\",\n canUse: event => {\n return !!event.payload?.webinyTaskId;\n },\n handle: async ({ params, event, context }) => {\n const { createHandler } = await import(\n /* webpackChunkName: \"tasks.handler.createHandler\" */\n \"./index.js\"\n );\n return createHandler(params)(event.payload, context);\n }\n});\n\nregistry.register(handler, {\n silent: true\n});\n"],"names":["handler","createSourceHandler","event","params","context","createHandler","registry"],"mappings":";;AAIA,MAAMA,UAAUC,oBAA+D;IAC3E,MAAM;IACN,QAAQC,CAAAA,QACG,CAAC,CAACA,MAAM,OAAO,EAAE;IAE5B,QAAQ,OAAO,EAAEC,MAAM,EAAED,KAAK,EAAEE,OAAO,EAAE;QACrC,MAAM,EAAEC,aAAa,EAAE,GAAG,MAAM,MAAM,CAAN;QAIhC,OAAOA,cAAcF,QAAQD,MAAM,OAAO,EAAEE;IAChD;AACJ;AAEAE,SAAS,QAAQ,CAACN,SAAS;IACvB,QAAQ;AACZ"}
@@ -1,19 +0,0 @@
1
- import { Plugin } from "@webiny/plugins";
2
- import type { ITask } from "../../api/types.js";
3
- export interface ITaskServiceCreatePluginParams {
4
- getTenant(): string;
5
- }
6
- export type ITaskServiceTask = Pick<ITask, "id" | "definitionId">;
7
- export interface ITaskService {
8
- send(task: ITaskServiceTask, delay: number): Promise<unknown | null>;
9
- fetch(task: ITask): Promise<unknown | null>;
10
- }
11
- export interface ITaskServicePluginParams {
12
- default?: boolean;
13
- }
14
- export declare abstract class TaskServicePlugin extends Plugin {
15
- static readonly type: string;
16
- readonly default: boolean;
17
- constructor(params?: ITaskServicePluginParams);
18
- abstract createService(params: ITaskServiceCreatePluginParams): ITaskService;
19
- }
@@ -1,13 +0,0 @@
1
- import { Plugin } from "@webiny/plugins";
2
- class TaskServicePlugin extends Plugin {
3
- static{
4
- this.type = "tasks.taskService";
5
- }
6
- constructor(params){
7
- super();
8
- this.default = !!params?.default;
9
- }
10
- }
11
- export { TaskServicePlugin };
12
-
13
- //# sourceMappingURL=TaskServicePlugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api/plugins/TaskServicePlugin.js","sources":["../../../src/api/plugins/TaskServicePlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport type { ITask } from \"~/api/types.js\";\n\nexport interface ITaskServiceCreatePluginParams {\n getTenant(): string;\n}\n\nexport type ITaskServiceTask = Pick<ITask, \"id\" | \"definitionId\">;\n\nexport interface ITaskService {\n send(task: ITaskServiceTask, delay: number): Promise<unknown | null>;\n fetch(task: ITask): Promise<unknown | null>;\n}\n\nexport interface ITaskServicePluginParams {\n default?: boolean;\n}\n\nexport abstract class TaskServicePlugin extends Plugin {\n public static override readonly type: string = \"tasks.taskService\";\n public readonly default: boolean;\n\n public constructor(params?: ITaskServicePluginParams) {\n super();\n this.default = !!params?.default;\n }\n\n public abstract createService(params: ITaskServiceCreatePluginParams): ITaskService;\n}\n"],"names":["TaskServicePlugin","Plugin","params"],"mappings":";AAkBO,MAAeA,0BAA0BC;;aACZ,IAAI,GAAW;;IAG/C,YAAmBC,MAAiC,CAAE;QAClD,KAAK;QACL,IAAI,CAAC,OAAO,GAAG,CAAC,CAACA,QAAQ;IAC7B;AAGJ"}
@@ -1 +0,0 @@
1
- export * from "./TaskServicePlugin.js";
@@ -1 +0,0 @@
1
- export * from "./TaskServicePlugin.js";
@@ -1,16 +0,0 @@
1
- import type { ITaskService, ITaskServiceCreatePluginParams, ITaskServiceTask } from "../../api/plugins/index.js";
2
- import { TaskServicePlugin } from "../../api/plugins/index.js";
3
- import type { PutEventsCommandOutput } from "@webiny/aws-sdk/client-eventbridge/index.js";
4
- import type { GenericRecord } from "@webiny/api/types.js";
5
- declare class EventBridgeService implements ITaskService {
6
- protected readonly getTenant: () => string;
7
- private readonly client;
8
- constructor(params: ITaskServiceCreatePluginParams);
9
- send(task: ITaskServiceTask, delay: number): Promise<PutEventsCommandOutput>;
10
- fetch(): Promise<GenericRecord>;
11
- }
12
- export declare class EventBridgeEventTransportPlugin extends TaskServicePlugin {
13
- name: string;
14
- createService(params: ITaskServiceCreatePluginParams): EventBridgeService;
15
- }
16
- export {};
@@ -1,52 +0,0 @@
1
- import { TaskServicePlugin } from "../plugins/index.js";
2
- import { EventBridgeClient, PutEventsCommand } from "@webiny/aws-sdk/client-eventbridge/index.js";
3
- import { WebinyError } from "@webiny/error";
4
- class EventBridgeService {
5
- constructor(params){
6
- this.client = new EventBridgeClient({
7
- region: process.env.AWS_REGION
8
- });
9
- this.getTenant = params.getTenant;
10
- }
11
- async send(task, delay) {
12
- const event = {
13
- webinyTaskId: task.id,
14
- webinyTaskDefinitionId: task.definitionId,
15
- tenant: this.getTenant(),
16
- delay
17
- };
18
- const cmd = new PutEventsCommand({
19
- Entries: [
20
- {
21
- Source: "webiny-api-tasks",
22
- EventBusName: String(process.env.EVENT_BUS),
23
- DetailType: "WebinyBackgroundTask",
24
- Detail: JSON.stringify(event)
25
- }
26
- ]
27
- });
28
- try {
29
- const result = await this.client.send(cmd);
30
- return JSON.parse(JSON.stringify(result));
31
- } catch (ex) {
32
- throw new WebinyError(ex.message || "Could not trigger task via Event Bridge!", ex.code || "TRIGGER_TASK_ERROR", {
33
- event,
34
- ...ex.data || {}
35
- });
36
- }
37
- }
38
- async fetch() {
39
- throw new WebinyError("Not implemented!", "NOT_IMPLEMENTED");
40
- }
41
- }
42
- class EventBridgeEventTransportPlugin extends TaskServicePlugin {
43
- createService(params) {
44
- return new EventBridgeService(params);
45
- }
46
- constructor(...args){
47
- super(...args), this.name = "task.eventBridgeEventTransport";
48
- }
49
- }
50
- export { EventBridgeEventTransportPlugin };
51
-
52
- //# sourceMappingURL=EventBridgeEventTransportPlugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api/service/EventBridgeEventTransportPlugin.js","sources":["../../../src/api/service/EventBridgeEventTransportPlugin.ts"],"sourcesContent":["import type {\n ITaskService,\n ITaskServiceCreatePluginParams,\n ITaskServiceTask\n} from \"~/api/plugins/index.js\";\nimport { TaskServicePlugin } from \"~/api/plugins/index.js\";\nimport type { ITaskEventInput } from \"~/api/types.js\";\nimport type { PutEventsCommandOutput } from \"@webiny/aws-sdk/client-eventbridge/index.js\";\nimport { EventBridgeClient, PutEventsCommand } from \"@webiny/aws-sdk/client-eventbridge/index.js\";\nimport { WebinyError } from \"@webiny/error\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\n\nclass EventBridgeService implements ITaskService {\n protected readonly getTenant: () => string;\n private readonly client: EventBridgeClient;\n\n public constructor(params: ITaskServiceCreatePluginParams) {\n this.client = new EventBridgeClient({\n region: process.env.AWS_REGION\n });\n this.getTenant = params.getTenant;\n }\n\n public async send(task: ITaskServiceTask, delay: number): Promise<PutEventsCommandOutput> {\n /**\n * The ITaskEvent is what our handler expect to get.\n * Endpoint and stateMachineId are added by the step function.\n */\n const event: ITaskEventInput = {\n webinyTaskId: task.id,\n webinyTaskDefinitionId: task.definitionId,\n tenant: this.getTenant(),\n delay\n };\n\n const cmd = new PutEventsCommand({\n Entries: [\n {\n Source: \"webiny-api-tasks\",\n EventBusName: String(process.env.EVENT_BUS),\n DetailType: \"WebinyBackgroundTask\",\n Detail: JSON.stringify(event)\n }\n ]\n });\n try {\n const result = await this.client.send(cmd);\n\n return JSON.parse(JSON.stringify(result));\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not trigger task via Event Bridge!\",\n ex.code || \"TRIGGER_TASK_ERROR\",\n {\n event,\n ...(ex.data || {})\n }\n );\n }\n }\n\n public async fetch(): Promise<GenericRecord> {\n throw new WebinyError(\"Not implemented!\", \"NOT_IMPLEMENTED\");\n }\n}\n\nexport class EventBridgeEventTransportPlugin extends TaskServicePlugin {\n public override name = \"task.eventBridgeEventTransport\";\n public createService(params: ITaskServiceCreatePluginParams) {\n return new EventBridgeService(params);\n }\n}\n"],"names":["EventBridgeService","params","EventBridgeClient","process","task","delay","event","cmd","PutEventsCommand","String","JSON","result","ex","WebinyError","EventBridgeEventTransportPlugin","TaskServicePlugin"],"mappings":";;;AAYA,MAAMA;IAIF,YAAmBC,MAAsC,CAAE;QACvD,IAAI,CAAC,MAAM,GAAG,IAAIC,kBAAkB;YAChC,QAAQC,QAAQ,GAAG,CAAC,UAAU;QAClC;QACA,IAAI,CAAC,SAAS,GAAGF,OAAO,SAAS;IACrC;IAEA,MAAa,KAAKG,IAAsB,EAAEC,KAAa,EAAmC;QAKtF,MAAMC,QAAyB;YAC3B,cAAcF,KAAK,EAAE;YACrB,wBAAwBA,KAAK,YAAY;YACzC,QAAQ,IAAI,CAAC,SAAS;YACtBC;QACJ;QAEA,MAAME,MAAM,IAAIC,iBAAiB;YAC7B,SAAS;gBACL;oBACI,QAAQ;oBACR,cAAcC,OAAON,QAAQ,GAAG,CAAC,SAAS;oBAC1C,YAAY;oBACZ,QAAQO,KAAK,SAAS,CAACJ;gBAC3B;aACH;QACL;QACA,IAAI;YACA,MAAMK,SAAS,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAACJ;YAEtC,OAAOG,KAAK,KAAK,CAACA,KAAK,SAAS,CAACC;QACrC,EAAE,OAAOC,IAAI;YACT,MAAM,IAAIC,YACND,GAAG,OAAO,IAAI,4CACdA,GAAG,IAAI,IAAI,sBACX;gBACIN;gBACA,GAAIM,GAAG,IAAI,IAAI,CAAC,CAAC;YACrB;QAER;IACJ;IAEA,MAAa,QAAgC;QACzC,MAAM,IAAIC,YAAY,oBAAoB;IAC9C;AACJ;AAEO,MAAMC,wCAAwCC;IAE1C,cAAcd,MAAsC,EAAE;QACzD,OAAO,IAAID,mBAAmBC;IAClC;;QAJG,qBACa,IAAI,GAAG;;AAI3B"}
@@ -1,25 +0,0 @@
1
- import type { ITaskService, ITaskServiceCreatePluginParams, ITaskServiceTask } from "../../api/plugins/index.js";
2
- import { TaskServicePlugin } from "../../api/plugins/index.js";
3
- import type { DescribeExecutionCommandOutput } from "@webiny/aws-sdk/client-sfn/index.js";
4
- import type { ITask } from "../../api/types.js";
5
- export type IStepFunctionServiceFetchResult = DescribeExecutionCommandOutput;
6
- export interface IDetailWrapper<T> {
7
- detail: T;
8
- }
9
- export declare class StepFunctionService implements ITaskService {
10
- private readonly getTenant;
11
- private readonly trigger;
12
- private readonly get;
13
- constructor(params: ITaskServiceCreatePluginParams);
14
- send(task: ITaskServiceTask, delay: number): Promise<{
15
- name: string;
16
- executionArn: string | undefined;
17
- startDate: Date | undefined;
18
- $metadata: import("@smithy/types").ResponseMetadata;
19
- } | null>;
20
- fetch(task: ITask): Promise<IStepFunctionServiceFetchResult | null>;
21
- }
22
- export declare class StepFunctionServicePlugin extends TaskServicePlugin {
23
- name: string;
24
- createService(params: ITaskServiceCreatePluginParams): StepFunctionService;
25
- }