@webiny/tasks 6.3.0-beta.4 → 6.4.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/context.js +31 -43
- package/context.js.map +1 -1
- package/crud/TaskLogPrivateModel.js +33 -27
- package/crud/TaskLogPrivateModel.js.map +1 -1
- package/crud/TaskPrivateModel.js +48 -39
- package/crud/TaskPrivateModel.js.map +1 -1
- package/crud/cleanupTaskSubtree.js +55 -69
- package/crud/cleanupTaskSubtree.js.map +1 -1
- package/crud/crud.tasks.js +289 -352
- package/crud/crud.tasks.js.map +1 -1
- package/crud/definition.tasks.js +13 -16
- package/crud/definition.tasks.js.map +1 -1
- package/crud/service.tasks.js +119 -155
- package/crud/service.tasks.js.map +1 -1
- package/decorators/RunnableTaskDecorator.js +61 -77
- package/decorators/RunnableTaskDecorator.js.map +1 -1
- package/decorators/SelfCleaningTaskDecorator.js +75 -89
- package/decorators/SelfCleaningTaskDecorator.js.map +1 -1
- package/domain/errors.js +35 -39
- package/domain/errors.js.map +1 -1
- package/events/TaskAfterCreateEvent.js +8 -5
- package/events/TaskAfterCreateEvent.js.map +1 -1
- package/events/TaskAfterDeleteEvent.js +8 -5
- package/events/TaskAfterDeleteEvent.js.map +1 -1
- package/events/TaskAfterUpdateEvent.js +8 -5
- package/events/TaskAfterUpdateEvent.js.map +1 -1
- package/events/TaskBeforeCreateEvent.js +8 -5
- package/events/TaskBeforeCreateEvent.js.map +1 -1
- package/events/TaskBeforeDeleteEvent.js +8 -5
- package/events/TaskBeforeDeleteEvent.js.map +1 -1
- package/events/TaskBeforeUpdateEvent.js +8 -5
- package/events/TaskBeforeUpdateEvent.js.map +1 -1
- package/events/abstractions.js +7 -36
- package/events/abstractions.js.map +1 -1
- package/events/index.js +0 -2
- package/features/AbortTask/AbortTaskUseCase.js +9 -8
- package/features/AbortTask/AbortTaskUseCase.js.map +1 -1
- package/features/AbortTask/abstractions.js +2 -1
- package/features/AbortTask/abstractions.js.map +1 -1
- package/features/AbortTask/feature.js +6 -5
- package/features/AbortTask/feature.js.map +1 -1
- package/features/AbortTask/index.js +0 -2
- package/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js +8 -7
- package/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js.map +1 -1
- package/features/CleanupTaskSubtree/abstractions.js +2 -1
- package/features/CleanupTaskSubtree/abstractions.js.map +1 -1
- package/features/CleanupTaskSubtree/index.js +0 -2
- package/features/GetTask/GetTaskUseCase.js +8 -7
- package/features/GetTask/GetTaskUseCase.js.map +1 -1
- package/features/GetTask/abstractions.js +2 -1
- package/features/GetTask/abstractions.js.map +1 -1
- package/features/GetTask/feature.js +6 -5
- package/features/GetTask/feature.js.map +1 -1
- package/features/GetTask/index.js +0 -2
- package/features/GetTaskDefinition/GetTaskDefinitionUseCase.js +18 -16
- package/features/GetTaskDefinition/GetTaskDefinitionUseCase.js.map +1 -1
- package/features/GetTaskDefinition/abstractions.js +2 -1
- package/features/GetTaskDefinition/abstractions.js.map +1 -1
- package/features/GetTaskDefinition/feature.js +6 -5
- package/features/GetTaskDefinition/feature.js.map +1 -1
- package/features/GetTaskDefinition/index.js +0 -2
- package/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.js +18 -12
- package/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.js.map +1 -1
- package/features/ListTaskDefinitions/abstractions.js +2 -1
- package/features/ListTaskDefinitions/abstractions.js.map +1 -1
- package/features/ListTaskDefinitions/feature.js +6 -5
- package/features/ListTaskDefinitions/feature.js.map +1 -1
- package/features/ListTaskDefinitions/index.js +0 -2
- package/features/ListTasks/ListTasksUseCase.js +8 -7
- package/features/ListTasks/ListTasksUseCase.js.map +1 -1
- package/features/ListTasks/abstractions.js +2 -1
- package/features/ListTasks/abstractions.js.map +1 -1
- package/features/ListTasks/feature.js +6 -5
- package/features/ListTasks/feature.js.map +1 -1
- package/features/ListTasks/index.js +0 -2
- package/features/TaskController/TaskController.js +60 -60
- package/features/TaskController/TaskController.js.map +1 -1
- package/features/TaskController/augmentation.js +0 -3
- package/features/TaskController/index.js +0 -5
- package/features/TaskExecutionContext/TaskExecutionContext.js +38 -45
- package/features/TaskExecutionContext/TaskExecutionContext.js.map +1 -1
- package/features/TaskExecutionContext/abstractions.js +2 -10
- package/features/TaskExecutionContext/abstractions.js.map +1 -1
- package/features/TaskExecutionContext/feature.js +6 -5
- package/features/TaskExecutionContext/feature.js.map +1 -1
- package/features/TaskExecutionContext/index.js +0 -2
- package/features/TriggerTask/TriggerTaskUseCase.js +9 -8
- package/features/TriggerTask/TriggerTaskUseCase.js.map +1 -1
- package/features/TriggerTask/abstractions.js +2 -1
- package/features/TriggerTask/abstractions.js.map +1 -1
- package/features/TriggerTask/feature.js +6 -5
- package/features/TriggerTask/feature.js.map +1 -1
- package/features/TriggerTask/index.js +0 -2
- package/global.js +0 -2
- package/graphql/checkPermissions.js +16 -35
- package/graphql/checkPermissions.js.map +1 -1
- package/graphql/index.js +154 -187
- package/graphql/index.js.map +1 -1
- package/graphql/utils.js +15 -14
- package/graphql/utils.js.map +1 -1
- package/handler/index.js +46 -53
- package/handler/index.js.map +1 -1
- package/handler/register.js +7 -15
- package/handler/register.js.map +1 -1
- package/handler/types.js +0 -3
- package/index.js +2 -4
- package/package.json +17 -17
- package/plugins/TaskServicePlugin.js +9 -6
- package/plugins/TaskServicePlugin.js.map +1 -1
- package/plugins/index.js +0 -2
- package/response/DatabaseResponse.js +113 -132
- package/response/DatabaseResponse.js.map +1 -1
- package/response/Response.js +78 -96
- package/response/Response.js.map +1 -1
- package/response/ResponseAbortedResult.js +8 -7
- package/response/ResponseAbortedResult.js.map +1 -1
- package/response/ResponseContinueResult.js +12 -14
- package/response/ResponseContinueResult.js.map +1 -1
- package/response/ResponseDoneResult.js +10 -9
- package/response/ResponseDoneResult.js.map +1 -1
- package/response/ResponseErrorResult.js +9 -8
- package/response/ResponseErrorResult.js.map +1 -1
- package/response/TaskResponse.js +44 -64
- package/response/TaskResponse.js.map +1 -1
- package/response/abstractions/Response.js +0 -3
- package/response/abstractions/ResponseAbortedResult.js +0 -3
- package/response/abstractions/ResponseBaseResult.js +0 -3
- package/response/abstractions/ResponseContinueResult.js +0 -3
- package/response/abstractions/ResponseDoneResult.js +0 -3
- package/response/abstractions/ResponseErrorResult.js +0 -3
- package/response/abstractions/TaskResponse.js +0 -3
- package/response/abstractions/index.js +0 -2
- package/response/index.js +0 -2
- package/runner/TaskControl.js +150 -221
- package/runner/TaskControl.js.map +1 -1
- package/runner/TaskEventValidation.js +12 -13
- package/runner/TaskEventValidation.js.map +1 -1
- package/runner/TaskManager.js +68 -106
- package/runner/TaskManager.js.map +1 -1
- package/runner/TaskManagerStore.js +90 -139
- package/runner/TaskManagerStore.js.map +1 -1
- package/runner/TaskRunner.js +45 -65
- package/runner/TaskRunner.js.map +1 -1
- package/runner/abstractions/TaskControl.js +0 -3
- package/runner/abstractions/TaskEventValidation.js +0 -3
- package/runner/abstractions/TaskManager.js +0 -3
- package/runner/abstractions/TaskManagerStore.js +0 -3
- package/runner/abstractions/TaskRunner.js +0 -3
- package/runner/abstractions/index.js +0 -2
- package/runner/index.js +0 -2
- package/service/EventBridgeEventTransportPlugin.js +43 -42
- package/service/EventBridgeEventTransportPlugin.js.map +1 -1
- package/service/StepFunctionServicePlugin.js +65 -66
- package/service/StepFunctionServicePlugin.js.map +1 -1
- package/service/createService.js +10 -13
- package/service/createService.js.map +1 -1
- package/service/index.js +7 -5
- package/service/index.js.map +1 -1
- package/tasks/testingRunTask.js +11 -10
- package/tasks/testingRunTask.js.map +1 -1
- package/types.js +12 -12
- package/types.js.map +1 -1
- package/utils/ObjectUpdater.js +25 -31
- package/utils/ObjectUpdater.js.map +1 -1
- package/utils/getErrorProperties.js +5 -4
- package/utils/getErrorProperties.js.map +1 -1
- package/utils/getObjectProperties.js +8 -15
- package/utils/getObjectProperties.js.map +1 -1
- package/utils/index.js +0 -2
- package/utils/normalizeSelfCleanup.js +13 -12
- package/utils/normalizeSelfCleanup.js.map +1 -1
- package/events/index.js.map +0 -1
- package/features/AbortTask/index.js.map +0 -1
- package/features/CleanupTaskSubtree/index.js.map +0 -1
- package/features/GetTask/index.js.map +0 -1
- package/features/GetTaskDefinition/index.js.map +0 -1
- package/features/ListTaskDefinitions/index.js.map +0 -1
- package/features/ListTasks/index.js.map +0 -1
- package/features/TaskController/augmentation.js.map +0 -1
- package/features/TaskController/index.js.map +0 -1
- package/features/TaskExecutionContext/index.js.map +0 -1
- package/features/TriggerTask/index.js.map +0 -1
- package/global.js.map +0 -1
- package/handler/types.js.map +0 -1
- package/index.js.map +0 -1
- package/plugins/index.js.map +0 -1
- package/response/abstractions/Response.js.map +0 -1
- package/response/abstractions/ResponseAbortedResult.js.map +0 -1
- package/response/abstractions/ResponseBaseResult.js.map +0 -1
- package/response/abstractions/ResponseContinueResult.js.map +0 -1
- package/response/abstractions/ResponseDoneResult.js.map +0 -1
- package/response/abstractions/ResponseErrorResult.js.map +0 -1
- package/response/abstractions/TaskResponse.js.map +0 -1
- package/response/abstractions/index.js.map +0 -1
- package/response/index.js.map +0 -1
- package/runner/abstractions/TaskControl.js.map +0 -1
- package/runner/abstractions/TaskEventValidation.js.map +0 -1
- package/runner/abstractions/TaskManager.js.map +0 -1
- package/runner/abstractions/TaskManagerStore.js.map +0 -1
- package/runner/abstractions/TaskRunner.js.map +0 -1
- package/runner/abstractions/index.js.map +0 -1
- package/runner/index.js.map +0 -1
- package/utils/index.js.map +0 -1
package/graphql/index.js
CHANGED
|
@@ -7,63 +7,65 @@ import { renderFields } from "@webiny/api-headless-cms/utils/renderFields.js";
|
|
|
7
7
|
import { checkPermissions } from "./checkPermissions.js";
|
|
8
8
|
import { ListModelsUseCase } from "@webiny/api-headless-cms/features/contentModel/ListModels/index.js";
|
|
9
9
|
import { CmsModelFieldToGraphQLRegistry } from "@webiny/api-headless-cms/exports/api/cms/graphql.js";
|
|
10
|
-
const createGraphQL = ()
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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 models = await ctx.security.withoutAuthorization(async ()=>{
|
|
18
|
+
const modelsResult = await listModels.execute({
|
|
19
|
+
includePrivate: false
|
|
20
|
+
});
|
|
21
|
+
return modelsResult.value.filter((model)=>model.fields.length > 0);
|
|
22
|
+
});
|
|
23
|
+
const taskFields = renderFields({
|
|
24
|
+
models,
|
|
25
|
+
model: taskModel,
|
|
26
|
+
fields: taskModel.fields,
|
|
27
|
+
type: "manage",
|
|
28
|
+
fieldRegistry
|
|
29
|
+
});
|
|
30
|
+
const logFields = renderFields({
|
|
31
|
+
models,
|
|
32
|
+
model: logModel,
|
|
33
|
+
fields: logModel.fields.filter((field)=>"task" !== field.fieldId),
|
|
34
|
+
type: "manage",
|
|
35
|
+
fieldRegistry
|
|
36
|
+
});
|
|
37
|
+
const listTasksFilterFieldsRender = renderListFilterFields({
|
|
38
|
+
model: taskModel,
|
|
39
|
+
fields: taskModel.fields,
|
|
40
|
+
type: "manage",
|
|
41
|
+
fieldRegistry,
|
|
42
|
+
excludeFields: [
|
|
43
|
+
"entryId"
|
|
44
|
+
]
|
|
45
|
+
});
|
|
46
|
+
const listLogsFilterFieldsRender = renderListFilterFields({
|
|
47
|
+
model: logModel,
|
|
48
|
+
fields: logModel.fields,
|
|
49
|
+
type: "manage",
|
|
50
|
+
fieldRegistry,
|
|
51
|
+
excludeFields: [
|
|
52
|
+
"entryId"
|
|
53
|
+
]
|
|
54
|
+
});
|
|
55
|
+
const sortTasksEnumRender = renderSortEnum({
|
|
56
|
+
model: taskModel,
|
|
57
|
+
fields: taskModel.fields,
|
|
58
|
+
fieldRegistry,
|
|
59
|
+
sorters: []
|
|
60
|
+
});
|
|
61
|
+
const sortLogsEnumRender = renderSortEnum({
|
|
62
|
+
model: logModel,
|
|
63
|
+
fields: logModel.fields,
|
|
64
|
+
fieldRegistry,
|
|
65
|
+
sorters: []
|
|
66
|
+
});
|
|
67
|
+
const plugin = new GraphQLSchemaPlugin({
|
|
68
|
+
typeDefs: `
|
|
67
69
|
type WebinyBackgroundTaskError {
|
|
68
70
|
message: String
|
|
69
71
|
code: String
|
|
@@ -71,8 +73,8 @@ const createGraphQL = () => {
|
|
|
71
73
|
stack: String
|
|
72
74
|
}
|
|
73
75
|
|
|
74
|
-
${taskFields.map(f
|
|
75
|
-
${logFields.map(f
|
|
76
|
+
${taskFields.map((f)=>f.typeDefs).join("\n")}
|
|
77
|
+
${logFields.map((f)=>f.typeDefs).join("\n")}
|
|
76
78
|
|
|
77
79
|
type WebinyBackgroundTask {
|
|
78
80
|
id: String!
|
|
@@ -84,7 +86,7 @@ const createGraphQL = () => {
|
|
|
84
86
|
limit: Number
|
|
85
87
|
sort: [WebinyBackgroundTaskLogListSorter!]
|
|
86
88
|
): [WebinyBackgroundTaskLog!]!
|
|
87
|
-
${taskFields.map(f
|
|
89
|
+
${taskFields.map((f)=>f.fields).join("\n")}
|
|
88
90
|
}
|
|
89
91
|
|
|
90
92
|
type WebinyBackgroundTaskResponse {
|
|
@@ -109,7 +111,7 @@ const createGraphQL = () => {
|
|
|
109
111
|
createdOn: DateTime!
|
|
110
112
|
createdBy: WebinyBackgroundTaskIdentity!
|
|
111
113
|
task: WebinyBackgroundTask!
|
|
112
|
-
${logFields.map(f
|
|
114
|
+
${logFields.map((f)=>f.fields).join("\n")}
|
|
113
115
|
}
|
|
114
116
|
|
|
115
117
|
type WebinyBackgroundTaskLogListResponse {
|
|
@@ -203,133 +205,98 @@ const createGraphQL = () => {
|
|
|
203
205
|
deleteTask(id: ID!): WebinyBackgroundTaskDeleteResponse!
|
|
204
206
|
}
|
|
205
207
|
`,
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
await checkPermissions(context, {
|
|
292
|
-
rwd: "d"
|
|
293
|
-
});
|
|
294
|
-
return resolve(async () => {
|
|
295
|
-
return await context.tasks.deleteTask(args.id);
|
|
296
|
-
});
|
|
297
|
-
}
|
|
298
|
-
},
|
|
299
|
-
/**
|
|
300
|
-
* Custom resolvers for fields
|
|
301
|
-
*/
|
|
302
|
-
WebinyBackgroundTask: {
|
|
303
|
-
logs: async (parent, args, context) => {
|
|
304
|
-
const {
|
|
305
|
-
items
|
|
306
|
-
} = await context.tasks.listLogs({
|
|
307
|
-
sort: ["createdBy_ASC"],
|
|
308
|
-
limit: 10000,
|
|
309
|
-
...args,
|
|
310
|
-
where: {
|
|
311
|
-
...args?.where,
|
|
312
|
-
task: parent.id
|
|
313
|
-
}
|
|
314
|
-
});
|
|
315
|
-
return items;
|
|
316
|
-
}
|
|
317
|
-
},
|
|
318
|
-
WebinyBackgroundTaskLog: {
|
|
319
|
-
task: async (parent, _, context) => {
|
|
320
|
-
return await context.tasks.getTask(parent.task);
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
}
|
|
208
|
+
resolvers: {
|
|
209
|
+
Query: {
|
|
210
|
+
backgroundTasks: emptyResolver
|
|
211
|
+
},
|
|
212
|
+
Mutation: {
|
|
213
|
+
backgroundTasks: emptyResolver
|
|
214
|
+
},
|
|
215
|
+
WebinyBackgroundTaskQuery: {
|
|
216
|
+
getTask: async (_, args, context)=>resolve(async ()=>{
|
|
217
|
+
await checkPermissions(context, {
|
|
218
|
+
rwd: "r"
|
|
219
|
+
});
|
|
220
|
+
return await context.tasks.getTask(args.id);
|
|
221
|
+
}),
|
|
222
|
+
listTasks: async (_, args, context)=>resolveList(async ()=>{
|
|
223
|
+
await checkPermissions(context, {
|
|
224
|
+
rwd: "r"
|
|
225
|
+
});
|
|
226
|
+
return await context.tasks.listTasks(args);
|
|
227
|
+
}),
|
|
228
|
+
listDefinitions: async (_, __, context)=>resolve(async ()=>{
|
|
229
|
+
await checkPermissions(context, {
|
|
230
|
+
rwd: "r"
|
|
231
|
+
});
|
|
232
|
+
const result = context.tasks.listDefinitions();
|
|
233
|
+
return result.filter((item)=>!item.isPrivate);
|
|
234
|
+
}),
|
|
235
|
+
listLogs: async (_, args, context)=>resolveList(async ()=>{
|
|
236
|
+
await checkPermissions(context, {
|
|
237
|
+
rwd: "r"
|
|
238
|
+
});
|
|
239
|
+
return await context.tasks.listLogs(args);
|
|
240
|
+
})
|
|
241
|
+
},
|
|
242
|
+
WebinyBackgroundTaskMutation: {
|
|
243
|
+
abortTask: async (_, args, context)=>{
|
|
244
|
+
await checkPermissions(context, {
|
|
245
|
+
rwd: "w"
|
|
246
|
+
});
|
|
247
|
+
return resolve(async ()=>{
|
|
248
|
+
const result = await context.tasks.abort(args);
|
|
249
|
+
if (result.isOk()) return result.value;
|
|
250
|
+
throw result.error;
|
|
251
|
+
});
|
|
252
|
+
},
|
|
253
|
+
triggerTask: async (_, args, context)=>{
|
|
254
|
+
await checkPermissions(context, {
|
|
255
|
+
rwd: "w"
|
|
256
|
+
});
|
|
257
|
+
return resolve(async ()=>{
|
|
258
|
+
const result = await context.tasks.trigger(args);
|
|
259
|
+
if (result.isOk()) return result.value;
|
|
260
|
+
throw result.error;
|
|
261
|
+
});
|
|
262
|
+
},
|
|
263
|
+
deleteTask: async (_, args, context)=>{
|
|
264
|
+
await checkPermissions(context, {
|
|
265
|
+
rwd: "d"
|
|
266
|
+
});
|
|
267
|
+
return resolve(async ()=>await context.tasks.deleteTask(args.id));
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
WebinyBackgroundTask: {
|
|
271
|
+
logs: async (parent, args, context)=>{
|
|
272
|
+
const { items } = await context.tasks.listLogs({
|
|
273
|
+
sort: [
|
|
274
|
+
"createdBy_ASC"
|
|
275
|
+
],
|
|
276
|
+
limit: 10000,
|
|
277
|
+
...args,
|
|
278
|
+
where: {
|
|
279
|
+
...args?.where,
|
|
280
|
+
task: parent.id
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
return items;
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
WebinyBackgroundTaskLog: {
|
|
287
|
+
task: async (parent, _, context)=>await context.tasks.getTask(parent.task)
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
plugin.name = "tasks.graphql.schema";
|
|
292
|
+
ctx.plugins.register(plugin);
|
|
324
293
|
});
|
|
325
|
-
plugin.name = "tasks.graphql
|
|
326
|
-
|
|
327
|
-
});
|
|
328
|
-
plugin.name = "tasks.graphql";
|
|
329
|
-
return plugin;
|
|
330
|
-
};
|
|
331
|
-
export const createBackgroundTaskGraphQL = () => {
|
|
332
|
-
return [createGraphQL()];
|
|
294
|
+
plugin.name = "tasks.graphql";
|
|
295
|
+
return plugin;
|
|
333
296
|
};
|
|
297
|
+
const createBackgroundTaskGraphQL = ()=>[
|
|
298
|
+
createGraphQL()
|
|
299
|
+
];
|
|
300
|
+
export { createBackgroundTaskGraphQL };
|
|
334
301
|
|
|
335
302
|
//# sourceMappingURL=index.js.map
|
package/graphql/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["GraphQLSchemaPlugin","renderSortEnum","ContextPlugin","renderListFilterFields","emptyResolver","resolve","resolveList","renderFields","checkPermissions","ListModelsUseCase","CmsModelFieldToGraphQLRegistry","createGraphQL","plugin","ctx","tenancy","getCurrentTenant","taskModel","tasks","getTaskModel","logModel","getLogModel","listModels","container","fieldRegistry","models","security","withoutAuthorization","modelsResult","execute","includePrivate","value","filter","model","fields","length","taskFields","type","logFields","field","fieldId","listTasksFilterFieldsRender","excludeFields","listLogsFilterFieldsRender","sortTasksEnumRender","sorters","sortLogsEnumRender","typeDefs","map","f","join","allFiltersAsString","resolvers","Query","backgroundTasks","Mutation","WebinyBackgroundTaskQuery","getTask","_","args","context","rwd","id","listTasks","listDefinitions","__","result","item","isPrivate","listLogs","WebinyBackgroundTaskMutation","abortTask","abort","isOk","error","triggerTask","trigger","deleteTask","WebinyBackgroundTask","logs","parent","items","sort","limit","where","task","WebinyBackgroundTaskLog","name","plugins","register","createBackgroundTaskGraphQL"],"sources":["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 \"~/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 models = await ctx.security.withoutAuthorization(async () => {\n const modelsResult = await listModels.execute({ includePrivate: false });\n\n return modelsResult.value.filter(model => model.fields.length > 0);\n });\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"],"mappings":"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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsBZ,SAAS,CAACU,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACf,MAAM,CAAC,CAACgB,IAAI,CAAC,IAAI,CAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsBT,2BAA2B,CAACU,kBAAkB,CAAC,CAAC,IAAI,gBAAgB;AAC1F;AACA;AACA;AACA,sBAAsBR,0BAA0B,CAACQ,kBAAkB,CAAC,CAAC,IAAI,gBAAgB;AACzF;AACA;AACA;AACA,sBAAsBP,mBAAmB;AACzC;AACA;AACA;AACA,sBAAsBE,kBAAkB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;MACDM,SAAS,EAAE;QACPC,KAAK,EAAE;UACHC,eAAe,EAAEjD;QACrB,CAAC;QACDkD,QAAQ,EAAE;UACND,eAAe,EAAEjD;QACrB,CAAC;QACDmD,yBAAyB,EAAE;UACvB;AACpB;AACA;UACoBC,OAAO,EAAE,MAAAA,CAAOC,CAAC,EAAEC,IAAyB,EAAEC,OAAO,KAAK;YACtD,OAAOtD,OAAO,CAAC,YAAY;cACvB,MAAMG,gBAAgB,CAACmD,OAAO,EAAE;gBAC5BC,GAAG,EAAE;cACT,CAAC,CAAC;cACF,OAAO,MAAMD,OAAO,CAAC1C,KAAK,CAACuC,OAAO,CAACE,IAAI,CAACG,EAAE,CAAC;YAC/C,CAAC,CAAC;UACN,CAAC;UACDC,SAAS,EA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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"graphql/index.js","sources":["../../src/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 \"~/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 models = await ctx.security.withoutAuthorization(async () => {\n const modelsResult = await listModels.execute({ includePrivate: false });\n\n return modelsResult.value.filter(model => model.fields.length > 0);\n });\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","models","modelsResult","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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"}
|
package/graphql/utils.js
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import { ErrorResponse, ListErrorResponse, ListResponse, Response } from "@webiny/handler-graphql";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
const emptyResolver = ()=>({});
|
|
3
|
+
const resolve = async (fn)=>{
|
|
4
|
+
try {
|
|
5
|
+
return new Response(await fn());
|
|
6
|
+
} catch (ex) {
|
|
7
|
+
return new ErrorResponse(ex);
|
|
8
|
+
}
|
|
9
9
|
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
const resolveList = async (fn)=>{
|
|
11
|
+
try {
|
|
12
|
+
const result = await fn();
|
|
13
|
+
return new ListResponse(result.items, result.meta);
|
|
14
|
+
} catch (ex) {
|
|
15
|
+
return new ListErrorResponse(ex);
|
|
16
|
+
}
|
|
17
17
|
};
|
|
18
|
+
export { emptyResolver, resolve, resolveList };
|
|
18
19
|
|
|
19
20
|
//# sourceMappingURL=utils.js.map
|
package/graphql/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"graphql/utils.js","sources":["../../src/graphql/utils.ts"],"sourcesContent":["import { ErrorResponse, ListErrorResponse, ListResponse, Response } from \"@webiny/handler-graphql\";\nimport type { CmsEntryMeta } from \"@webiny/api-headless-cms/types/index.js\";\n\nexport const emptyResolver = () => ({});\n\ninterface ResolveCallable<T = any> {\n (): Promise<T>;\n}\n\nexport const resolve = async <T = any>(fn: ResolveCallable<T>) => {\n try {\n return new Response(await fn());\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n};\n\ninterface IListResult {\n items: any[];\n meta: CmsEntryMeta;\n}\n\nexport const resolveList = async (fn: ResolveCallable) => {\n try {\n const result = (await fn()) as IListResult;\n return new ListResponse(result.items, result.meta);\n } catch (ex) {\n return new ListErrorResponse(ex);\n }\n};\n"],"names":["emptyResolver","resolve","fn","Response","ex","ErrorResponse","resolveList","result","ListResponse","ListErrorResponse"],"mappings":";AAGO,MAAMA,gBAAgB,IAAO,EAAC;AAM9B,MAAMC,UAAU,OAAgBC;IACnC,IAAI;QACA,OAAO,IAAIC,SAAS,MAAMD;IAC9B,EAAE,OAAOE,IAAI;QACT,OAAO,IAAIC,cAAcD;IAC7B;AACJ;AAOO,MAAME,cAAc,OAAOJ;IAC9B,IAAI;QACA,MAAMK,SAAU,MAAML;QACtB,OAAO,IAAIM,aAAaD,OAAO,KAAK,EAAEA,OAAO,IAAI;IACrD,EAAE,OAAOH,IAAI;QACT,OAAO,IAAIK,kBAAkBL;IACjC;AACJ"}
|
package/handler/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createHandler
|
|
1
|
+
import { createHandler } from "@webiny/handler";
|
|
2
2
|
import { registerDefaultPlugins } from "@webiny/handler-aws/plugins/index.js";
|
|
3
3
|
import { execute } from "@webiny/handler-aws/execute.js";
|
|
4
4
|
import { TaskRunner } from "../runner/index.js";
|
|
@@ -6,57 +6,50 @@ import { timerFactory } from "@webiny/handler-aws/utils/index.js";
|
|
|
6
6
|
import { TaskEventValidation } from "../runner/TaskEventValidation.js";
|
|
7
7
|
import { TaskResultStatus } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
8
8
|
const url = "/webiny-background-task-event";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
["x-webiny-cms-endpoint"]: event.endpoint,
|
|
55
|
-
["accept-language"]: "en-US"
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
};
|
|
60
|
-
};
|
|
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 };
|
|
61
54
|
|
|
62
55
|
//# sourceMappingURL=index.js.map
|