@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.
- package/admin/BackgroundTaskRoutes.js +16 -3
- package/admin/BackgroundTaskRoutes.js.map +1 -1
- package/admin/features/listLogs/ListLogsGateway.js +1 -1
- package/admin/features/listLogs/ListLogsGateway.js.map +1 -1
- package/admin/features/permissions/feature.d.ts +1 -1
- package/admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.js +2 -2
- package/admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.js.map +1 -1
- package/admin/presentation/TaskDetail/TaskDetailPresenter.js +1 -1
- package/admin/presentation/TaskDetail/TaskDetailPresenter.js.map +1 -1
- package/admin/presentation/TaskDetail/components/TaskDetailDrawer.js +6 -0
- package/admin/presentation/TaskDetail/components/TaskDetailDrawer.js.map +1 -1
- package/admin/presentation/TaskExecutions/TaskExecutionsDataSource.js +1 -1
- package/admin/presentation/TaskExecutions/TaskExecutionsDataSource.js.map +1 -1
- package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.d.ts +2 -0
- package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.js +3 -1
- package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.js.map +1 -1
- package/admin/presentation/TaskExecutions/components/TaskExecutionsView.js +44 -24
- package/admin/presentation/TaskExecutions/components/TaskExecutionsView.js.map +1 -1
- package/api/BackgroundTasksFeature.d.ts +4 -0
- package/api/BackgroundTasksFeature.js +61 -0
- package/api/BackgroundTasksFeature.js.map +1 -0
- package/api/TasksCrud.d.ts +10 -0
- package/api/TasksCrud.js +5 -0
- package/api/TasksCrud.js.map +1 -0
- package/api/abstractions/Timer.d.ts +1 -0
- package/api/abstractions/Timer.js +0 -0
- package/api/abstractions/index.d.ts +1 -0
- package/api/abstractions/index.js +1 -0
- package/api/crud/cleanupTaskSubtree.d.ts +2 -2
- package/api/crud/cleanupTaskSubtree.js +8 -7
- package/api/crud/cleanupTaskSubtree.js.map +1 -1
- package/api/crud/crud.tasks.d.ts +3 -2
- package/api/crud/crud.tasks.js +37 -37
- package/api/crud/crud.tasks.js.map +1 -1
- package/api/crud/definition.tasks.d.ts +3 -2
- package/api/crud/definition.tasks.js +3 -3
- package/api/crud/definition.tasks.js.map +1 -1
- package/api/crud/service.tasks.d.ts +3 -2
- package/api/crud/service.tasks.js +25 -21
- package/api/crud/service.tasks.js.map +1 -1
- package/api/decorators/RunnableTaskDecorator.d.ts +3 -2
- package/api/decorators/RunnableTaskDecorator.js +7 -8
- package/api/decorators/RunnableTaskDecorator.js.map +1 -1
- package/api/decorators/SelfCleaningTaskDecorator.d.ts +6 -3
- package/api/decorators/SelfCleaningTaskDecorator.js +14 -5
- package/api/decorators/SelfCleaningTaskDecorator.js.map +1 -1
- package/api/domain/TaskService.d.ts +12 -0
- package/api/domain/TaskService.js +5 -0
- package/api/domain/TaskService.js.map +1 -0
- package/api/domain/errors.d.ts +10 -0
- package/api/domain/errors.js +11 -1
- package/api/domain/errors.js.map +1 -1
- package/api/features/AbortTask/AbortTaskUseCase.d.ts +2 -3
- package/api/features/AbortTask/AbortTaskUseCase.js +3 -3
- package/api/features/AbortTask/AbortTaskUseCase.js.map +1 -1
- package/api/features/AbortTask/feature.d.ts +1 -2
- package/api/features/AbortTask/feature.js +3 -2
- package/api/features/AbortTask/feature.js.map +1 -1
- package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.d.ts +3 -3
- package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js +3 -3
- package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js.map +1 -1
- package/api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.js +7 -4
- package/api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.js.map +1 -1
- package/api/features/GetTask/GetTaskUseCase.d.ts +3 -3
- package/api/features/GetTask/GetTaskUseCase.js +3 -3
- package/api/features/GetTask/GetTaskUseCase.js.map +1 -1
- package/api/features/GetTask/feature.d.ts +1 -2
- package/api/features/GetTask/feature.js +3 -2
- package/api/features/GetTask/feature.js.map +1 -1
- package/api/features/GetTaskDefinition/GetTaskDefinitionUseCase.d.ts +6 -3
- package/api/features/GetTaskDefinition/GetTaskDefinitionUseCase.js +66 -5
- package/api/features/GetTaskDefinition/GetTaskDefinitionUseCase.js.map +1 -1
- package/api/features/GetTaskDefinition/abstractions.d.ts +2 -1
- package/api/features/GetTaskDefinition/abstractions.js.map +1 -1
- package/api/features/ListTasks/ListTasksUseCase.d.ts +4 -3
- package/api/features/ListTasks/ListTasksUseCase.js +3 -3
- package/api/features/ListTasks/ListTasksUseCase.js.map +1 -1
- package/api/features/ListTasks/feature.d.ts +1 -2
- package/api/features/ListTasks/feature.js +3 -2
- package/api/features/ListTasks/feature.js.map +1 -1
- package/api/features/TaskController/TaskController.d.ts +2 -2
- package/api/features/TaskExecutionContext/TaskExecutionContext.d.ts +3 -3
- package/api/features/TaskExecutionContext/TaskExecutionContext.js.map +1 -1
- package/api/features/TaskExecutionContext/abstractions.d.ts +3 -3
- package/api/features/TaskExecutionContext/abstractions.js.map +1 -1
- package/api/features/TaskHandlerResolver/TaskHandlerResolver.d.ts +12 -0
- package/api/features/TaskHandlerResolver/TaskHandlerResolver.js +19 -0
- package/api/features/TaskHandlerResolver/TaskHandlerResolver.js.map +1 -0
- package/api/features/TaskHandlerResolver/abstractions.d.ts +17 -0
- package/api/features/TaskHandlerResolver/abstractions.js +5 -0
- package/api/features/TaskHandlerResolver/abstractions.js.map +1 -0
- package/api/features/TaskHandlerResolver/feature.d.ts +9 -0
- package/api/features/TaskHandlerResolver/feature.js +11 -0
- package/api/features/TaskHandlerResolver/feature.js.map +1 -0
- package/api/features/TaskHandlerResolver/index.d.ts +2 -0
- package/api/features/TaskHandlerResolver/index.js +2 -0
- package/api/features/TriggerTask/TriggerTaskUseCase.d.ts +2 -3
- package/api/features/TriggerTask/TriggerTaskUseCase.js +3 -3
- package/api/features/TriggerTask/TriggerTaskUseCase.js.map +1 -1
- package/api/features/TriggerTask/feature.d.ts +1 -2
- package/api/features/TriggerTask/feature.js +3 -2
- package/api/features/TriggerTask/feature.js.map +1 -1
- package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsRepository.js +3 -2
- package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsRepository.js.map +1 -1
- package/api/graphql/BackgroundTasksContextualSchema.d.ts +21 -0
- package/api/graphql/BackgroundTasksContextualSchema.js +369 -0
- package/api/graphql/BackgroundTasksContextualSchema.js.map +1 -0
- package/api/graphql/checkPermissions.js +2 -1
- package/api/graphql/checkPermissions.js.map +1 -1
- package/api/graphql/utils.d.ts +3 -3
- package/api/graphql/utils.js +1 -1
- package/api/graphql/utils.js.map +1 -1
- package/api/handler/types.d.ts +0 -2
- package/api/index.d.ts +10 -3
- package/api/index.js +9 -3
- package/api/response/DatabaseResponse.js +1 -1
- package/api/response/DatabaseResponse.js.map +1 -1
- package/api/runner/TaskControl.d.ts +25 -1
- package/api/runner/TaskControl.js +30 -17
- package/api/runner/TaskControl.js.map +1 -1
- package/api/runner/TaskManager.d.ts +12 -1
- package/api/runner/TaskManager.js +8 -6
- package/api/runner/TaskManager.js.map +1 -1
- package/api/runner/TaskManagerStore.d.ts +10 -2
- package/api/runner/TaskManagerStore.js +5 -3
- package/api/runner/TaskManagerStore.js.map +1 -1
- package/api/runner/TaskRunner.d.ts +3 -3
- package/api/runner/TaskRunner.js +25 -4
- package/api/runner/TaskRunner.js.map +1 -1
- package/api/runner/abstractions/TaskRunner.d.ts +2 -2
- package/api/service/createService.d.ts +3 -3
- package/api/service/createService.js +5 -10
- package/api/service/createService.js.map +1 -1
- package/api/service/index.d.ts +1 -4
- package/api/service/index.js +1 -12
- package/api/tasks/testingRunTask.d.ts +10 -2
- package/api/tasks/testingRunTask.js +10 -3
- package/api/tasks/testingRunTask.js.map +1 -1
- package/api/types.d.ts +2 -2
- package/api/types.js.map +1 -1
- package/package.json +28 -24
- package/testing/index.d.ts +3 -0
- package/testing/index.js +2 -0
- package/testing/mockTaskTriggerTransportPlugin.d.ts +2 -0
- package/testing/mockTaskTriggerTransportPlugin.js +18 -0
- package/testing/mockTaskTriggerTransportPlugin.js.map +1 -0
- package/testing/runner.d.ts +19 -0
- package/testing/runner.js +44 -0
- package/testing/runner.js.map +1 -0
- package/api/context.d.ts +0 -2
- package/api/context.js +0 -66
- package/api/context.js.map +0 -1
- package/api/graphql/BackgroundTaskSettingsSchema.d.ts +0 -2
- package/api/graphql/BackgroundTaskSettingsSchema.js +0 -84
- package/api/graphql/BackgroundTaskSettingsSchema.js.map +0 -1
- package/api/graphql/index.d.ts +0 -2
- package/api/graphql/index.js +0 -301
- package/api/graphql/index.js.map +0 -1
- package/api/handler/index.d.ts +0 -6
- package/api/handler/index.js +0 -55
- package/api/handler/index.js.map +0 -1
- package/api/handler/register.d.ts +0 -1
- package/api/handler/register.js +0 -15
- package/api/handler/register.js.map +0 -1
- package/api/plugins/TaskServicePlugin.d.ts +0 -19
- package/api/plugins/TaskServicePlugin.js +0 -13
- package/api/plugins/TaskServicePlugin.js.map +0 -1
- package/api/plugins/index.d.ts +0 -1
- package/api/plugins/index.js +0 -1
- package/api/service/EventBridgeEventTransportPlugin.d.ts +0 -16
- package/api/service/EventBridgeEventTransportPlugin.js +0 -52
- package/api/service/EventBridgeEventTransportPlugin.js.map +0 -1
- package/api/service/StepFunctionServicePlugin.d.ts +0 -25
- package/api/service/StepFunctionServicePlugin.js +0 -77
- package/api/service/StepFunctionServicePlugin.js.map +0 -1
- package/api/service/index.js.map +0 -1
package/api/graphql/index.js
DELETED
|
@@ -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
|
package/api/graphql/index.js.map
DELETED
|
@@ -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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"}
|
package/api/handler/index.d.ts
DELETED
|
@@ -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;
|
package/api/handler/index.js
DELETED
|
@@ -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
|
package/api/handler/index.js.map
DELETED
|
@@ -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 {};
|
package/api/handler/register.js
DELETED
|
@@ -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"}
|
package/api/plugins/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./TaskServicePlugin.js";
|
package/api/plugins/index.js
DELETED
|
@@ -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
|
-
}
|