@webiny/tasks 0.0.0-unstable.2696f9d9e8
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/LICENSE +21 -0
- package/README.md +10 -0
- package/context.d.ts +3 -0
- package/context.js +37 -0
- package/context.js.map +1 -0
- package/crud/createEventBridgeEvent.d.ts +7 -0
- package/crud/createEventBridgeEvent.js +67 -0
- package/crud/createEventBridgeEvent.js.map +1 -0
- package/crud/crud.tasks.d.ts +2 -0
- package/crud/crud.tasks.js +220 -0
- package/crud/crud.tasks.js.map +1 -0
- package/crud/definition.tasks.d.ts +2 -0
- package/crud/definition.tasks.js +29 -0
- package/crud/definition.tasks.js.map +1 -0
- package/crud/model.d.ts +5 -0
- package/crud/model.js +212 -0
- package/crud/model.js.map +1 -0
- package/crud/trigger.tasks.d.ts +2 -0
- package/crud/trigger.tasks.js +116 -0
- package/crud/trigger.tasks.js.map +1 -0
- package/crud/where.d.ts +1 -0
- package/crud/where.js +33 -0
- package/crud/where.js.map +1 -0
- package/graphql/checkPermissions.d.ts +7 -0
- package/graphql/checkPermissions.js +46 -0
- package/graphql/checkPermissions.js.map +1 -0
- package/graphql/index.d.ts +3 -0
- package/graphql/index.js +344 -0
- package/graphql/index.js.map +1 -0
- package/graphql/utils.d.ts +9 -0
- package/graphql/utils.js +28 -0
- package/graphql/utils.js.map +1 -0
- package/handler/index.d.ts +9 -0
- package/handler/index.js +65 -0
- package/handler/index.js.map +1 -0
- package/handler/register.d.ts +1 -0
- package/handler/register.js +21 -0
- package/handler/register.js.map +1 -0
- package/handler/types.d.ts +19 -0
- package/handler/types.js +7 -0
- package/handler/types.js.map +1 -0
- package/index.d.ts +7 -0
- package/index.js +47 -0
- package/index.js.map +1 -0
- package/package.json +56 -0
- package/response/DatabaseResponse.d.ts +12 -0
- package/response/DatabaseResponse.js +142 -0
- package/response/DatabaseResponse.js.map +1 -0
- package/response/Response.d.ts +11 -0
- package/response/Response.js +73 -0
- package/response/Response.js.map +1 -0
- package/response/ResponseAbortedResult.d.ts +10 -0
- package/response/ResponseAbortedResult.js +19 -0
- package/response/ResponseAbortedResult.js.map +1 -0
- package/response/ResponseContinueResult.d.ts +13 -0
- package/response/ResponseContinueResult.js +22 -0
- package/response/ResponseContinueResult.js.map +1 -0
- package/response/ResponseDoneResult.d.ts +11 -0
- package/response/ResponseDoneResult.js +20 -0
- package/response/ResponseDoneResult.js.map +1 -0
- package/response/ResponseErrorResult.d.ts +11 -0
- package/response/ResponseErrorResult.js +20 -0
- package/response/ResponseErrorResult.js.map +1 -0
- package/response/TaskResponse.d.ts +10 -0
- package/response/TaskResponse.js +55 -0
- package/response/TaskResponse.js.map +1 -0
- package/response/abstractions/Response.d.ts +23 -0
- package/response/abstractions/Response.js +7 -0
- package/response/abstractions/Response.js.map +1 -0
- package/response/abstractions/ResponseAbortedResult.d.ts +5 -0
- package/response/abstractions/ResponseAbortedResult.js +7 -0
- package/response/abstractions/ResponseAbortedResult.js.map +1 -0
- package/response/abstractions/ResponseBaseResult.d.ts +8 -0
- package/response/abstractions/ResponseBaseResult.js +7 -0
- package/response/abstractions/ResponseBaseResult.js.map +1 -0
- package/response/abstractions/ResponseContinueResult.d.ts +19 -0
- package/response/abstractions/ResponseContinueResult.js +7 -0
- package/response/abstractions/ResponseContinueResult.js.map +1 -0
- package/response/abstractions/ResponseDoneResult.d.ts +12 -0
- package/response/abstractions/ResponseDoneResult.js +7 -0
- package/response/abstractions/ResponseDoneResult.js.map +1 -0
- package/response/abstractions/ResponseErrorResult.d.ts +18 -0
- package/response/abstractions/ResponseErrorResult.js +7 -0
- package/response/abstractions/ResponseErrorResult.js.map +1 -0
- package/response/abstractions/TaskResponse.d.ts +32 -0
- package/response/abstractions/TaskResponse.js +7 -0
- package/response/abstractions/TaskResponse.js.map +1 -0
- package/response/abstractions/index.d.ts +7 -0
- package/response/abstractions/index.js +84 -0
- package/response/abstractions/index.js.map +1 -0
- package/response/index.d.ts +7 -0
- package/response/index.js +84 -0
- package/response/index.js.map +1 -0
- package/runner/TaskControl.d.ts +13 -0
- package/runner/TaskControl.js +142 -0
- package/runner/TaskControl.js.map +1 -0
- package/runner/TaskEventValidation.d.ts +5 -0
- package/runner/TaskEventValidation.js +30 -0
- package/runner/TaskEventValidation.js.map +1 -0
- package/runner/TaskManager.d.ts +13 -0
- package/runner/TaskManager.js +101 -0
- package/runner/TaskManager.js.map +1 -0
- package/runner/TaskManagerStore.d.ts +19 -0
- package/runner/TaskManagerStore.js +90 -0
- package/runner/TaskManagerStore.js.map +1 -0
- package/runner/TaskRunner.d.ts +30 -0
- package/runner/TaskRunner.js +67 -0
- package/runner/TaskRunner.js.map +1 -0
- package/runner/abstractions/TaskControl.d.ts +10 -0
- package/runner/abstractions/TaskControl.js +7 -0
- package/runner/abstractions/TaskControl.js.map +1 -0
- package/runner/abstractions/TaskEventValidation.d.ts +5 -0
- package/runner/abstractions/TaskEventValidation.js +7 -0
- package/runner/abstractions/TaskEventValidation.js.map +1 -0
- package/runner/abstractions/TaskManager.d.ts +5 -0
- package/runner/abstractions/TaskManager.js +7 -0
- package/runner/abstractions/TaskManager.js.map +1 -0
- package/runner/abstractions/TaskManagerStore.d.ts +39 -0
- package/runner/abstractions/TaskManagerStore.js +7 -0
- package/runner/abstractions/TaskManagerStore.js.map +1 -0
- package/runner/abstractions/TaskRunner.d.ts +14 -0
- package/runner/abstractions/TaskRunner.js +7 -0
- package/runner/abstractions/TaskRunner.js.map +1 -0
- package/runner/abstractions/index.d.ts +5 -0
- package/runner/abstractions/index.js +62 -0
- package/runner/abstractions/index.js.map +1 -0
- package/runner/index.d.ts +1 -0
- package/runner/index.js +18 -0
- package/runner/index.js.map +1 -0
- package/runner/utils/getErrorProperties.d.ts +5 -0
- package/runner/utils/getErrorProperties.js +18 -0
- package/runner/utils/getErrorProperties.js.map +1 -0
- package/runner/utils/getObjectProperties.d.ts +4 -0
- package/runner/utils/getObjectProperties.js +21 -0
- package/runner/utils/getObjectProperties.js.map +1 -0
- package/task/index.d.ts +2 -0
- package/task/index.js +29 -0
- package/task/index.js.map +1 -0
- package/task/input.d.ts +15 -0
- package/task/input.js +21 -0
- package/task/input.js.map +1 -0
- package/task/plugin.d.ts +28 -0
- package/task/plugin.js +76 -0
- package/task/plugin.js.map +1 -0
- package/types.d.ts +258 -0
- package/types.js +60 -0
- package/types.js.map +1 -0
package/crud/model.js
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.taskModel = exports.taskLogModel = exports.createTaskModel = exports.WEBINY_TASK_MODEL_ID = exports.WEBINY_TASK_LOG_MODEL_ID = void 0;
|
|
7
|
+
var _apiHeadlessCms = require("@webiny/api-headless-cms");
|
|
8
|
+
var _types = require("../types");
|
|
9
|
+
const WEBINY_TASK_MODEL_ID = "webinyTask";
|
|
10
|
+
exports.WEBINY_TASK_MODEL_ID = WEBINY_TASK_MODEL_ID;
|
|
11
|
+
const WEBINY_TASK_LOG_MODEL_ID = "webinyTaskLog";
|
|
12
|
+
exports.WEBINY_TASK_LOG_MODEL_ID = WEBINY_TASK_LOG_MODEL_ID;
|
|
13
|
+
const taskLogModelPlugin = (0, _apiHeadlessCms.createCmsModel)((0, _apiHeadlessCms.createPrivateModelDefinition)({
|
|
14
|
+
name: "Webiny Task Log",
|
|
15
|
+
modelId: WEBINY_TASK_LOG_MODEL_ID,
|
|
16
|
+
fields: [{
|
|
17
|
+
id: "executionName",
|
|
18
|
+
fieldId: "executionName",
|
|
19
|
+
storageId: "text@executionName",
|
|
20
|
+
type: "text",
|
|
21
|
+
label: "Execution Name",
|
|
22
|
+
validation: [{
|
|
23
|
+
name: "required",
|
|
24
|
+
message: "Execution Name is required."
|
|
25
|
+
}]
|
|
26
|
+
}, {
|
|
27
|
+
id: "task",
|
|
28
|
+
fieldId: "task",
|
|
29
|
+
storageId: "text@task",
|
|
30
|
+
type: "text",
|
|
31
|
+
label: "Task",
|
|
32
|
+
validation: [{
|
|
33
|
+
name: "required",
|
|
34
|
+
message: "Task is required."
|
|
35
|
+
}]
|
|
36
|
+
}, {
|
|
37
|
+
id: "iteration",
|
|
38
|
+
fieldId: "iteration",
|
|
39
|
+
storageId: "number@iteration",
|
|
40
|
+
type: "number",
|
|
41
|
+
label: "Iteration",
|
|
42
|
+
validation: [{
|
|
43
|
+
name: "required",
|
|
44
|
+
message: "Iteration is required."
|
|
45
|
+
}]
|
|
46
|
+
}, {
|
|
47
|
+
id: "items",
|
|
48
|
+
fieldId: "items",
|
|
49
|
+
storageId: "object@items",
|
|
50
|
+
type: "object",
|
|
51
|
+
label: "Items",
|
|
52
|
+
multipleValues: true,
|
|
53
|
+
validation: [{
|
|
54
|
+
name: "required",
|
|
55
|
+
message: "Items is required."
|
|
56
|
+
}],
|
|
57
|
+
settings: {
|
|
58
|
+
fields: [{
|
|
59
|
+
id: "message",
|
|
60
|
+
fieldId: "message",
|
|
61
|
+
storageId: "text@message",
|
|
62
|
+
type: "text",
|
|
63
|
+
label: "Message",
|
|
64
|
+
validation: [{
|
|
65
|
+
name: "required",
|
|
66
|
+
message: "Message is required."
|
|
67
|
+
}]
|
|
68
|
+
}, {
|
|
69
|
+
id: "createdOn",
|
|
70
|
+
fieldId: "createdOn",
|
|
71
|
+
storageId: "datetime@createdOn",
|
|
72
|
+
type: "datetime",
|
|
73
|
+
label: "Created On",
|
|
74
|
+
validation: [{
|
|
75
|
+
name: "required",
|
|
76
|
+
message: "Created On is required."
|
|
77
|
+
}]
|
|
78
|
+
}, {
|
|
79
|
+
id: "type",
|
|
80
|
+
fieldId: "type",
|
|
81
|
+
storageId: "text@type",
|
|
82
|
+
type: "text",
|
|
83
|
+
label: "Type",
|
|
84
|
+
predefinedValues: {
|
|
85
|
+
enabled: true,
|
|
86
|
+
values: [{
|
|
87
|
+
value: _types.ITaskLogItemType.INFO,
|
|
88
|
+
label: "Info"
|
|
89
|
+
}, {
|
|
90
|
+
value: _types.ITaskLogItemType.ERROR,
|
|
91
|
+
label: "Error"
|
|
92
|
+
}]
|
|
93
|
+
},
|
|
94
|
+
validation: [{
|
|
95
|
+
name: "required",
|
|
96
|
+
message: "Type is required."
|
|
97
|
+
}]
|
|
98
|
+
}, {
|
|
99
|
+
id: "data",
|
|
100
|
+
fieldId: "data",
|
|
101
|
+
storageId: "object@data",
|
|
102
|
+
type: "json",
|
|
103
|
+
label: "Data"
|
|
104
|
+
}, {
|
|
105
|
+
id: "error",
|
|
106
|
+
fieldId: "error",
|
|
107
|
+
storageId: "object@error",
|
|
108
|
+
type: "json",
|
|
109
|
+
label: "Error"
|
|
110
|
+
}]
|
|
111
|
+
}
|
|
112
|
+
}]
|
|
113
|
+
}));
|
|
114
|
+
const taskModelPlugin = (0, _apiHeadlessCms.createCmsModel)((0, _apiHeadlessCms.createPrivateModelDefinition)({
|
|
115
|
+
name: "Webiny Task",
|
|
116
|
+
modelId: WEBINY_TASK_MODEL_ID,
|
|
117
|
+
fields: [{
|
|
118
|
+
id: "name",
|
|
119
|
+
fieldId: "name",
|
|
120
|
+
storageId: "text@name",
|
|
121
|
+
type: "text",
|
|
122
|
+
label: "Name",
|
|
123
|
+
validation: [{
|
|
124
|
+
name: "required",
|
|
125
|
+
message: "Name is required."
|
|
126
|
+
}]
|
|
127
|
+
}, {
|
|
128
|
+
id: "definitionId",
|
|
129
|
+
fieldId: "definitionId",
|
|
130
|
+
storageId: "text@definitionId",
|
|
131
|
+
type: "text",
|
|
132
|
+
label: "Definition ID",
|
|
133
|
+
validation: [{
|
|
134
|
+
name: "required",
|
|
135
|
+
message: "Definition ID is required."
|
|
136
|
+
}]
|
|
137
|
+
}, {
|
|
138
|
+
id: "executionName",
|
|
139
|
+
fieldId: "executionName",
|
|
140
|
+
storageId: "text@executionName",
|
|
141
|
+
type: "text",
|
|
142
|
+
label: "Execution Name"
|
|
143
|
+
}, {
|
|
144
|
+
id: "iterations",
|
|
145
|
+
fieldId: "iterations",
|
|
146
|
+
storageId: "number@iterations",
|
|
147
|
+
type: "number",
|
|
148
|
+
label: "Iterations"
|
|
149
|
+
}, {
|
|
150
|
+
id: "input",
|
|
151
|
+
fieldId: "input",
|
|
152
|
+
storageId: "object@input",
|
|
153
|
+
type: "json",
|
|
154
|
+
label: "Input"
|
|
155
|
+
}, {
|
|
156
|
+
id: "taskStatus",
|
|
157
|
+
fieldId: "taskStatus",
|
|
158
|
+
storageId: "text@taskStatus",
|
|
159
|
+
type: "text",
|
|
160
|
+
label: "Status",
|
|
161
|
+
predefinedValues: {
|
|
162
|
+
enabled: true,
|
|
163
|
+
values: [{
|
|
164
|
+
value: _types.TaskDataStatus.PENDING,
|
|
165
|
+
label: "Pending"
|
|
166
|
+
}, {
|
|
167
|
+
value: _types.TaskDataStatus.RUNNING,
|
|
168
|
+
label: "Running"
|
|
169
|
+
}, {
|
|
170
|
+
value: _types.TaskDataStatus.FAILED,
|
|
171
|
+
label: "Failed"
|
|
172
|
+
}, {
|
|
173
|
+
value: _types.TaskDataStatus.SUCCESS,
|
|
174
|
+
label: "Success"
|
|
175
|
+
}, {
|
|
176
|
+
value: _types.TaskDataStatus.ABORTED,
|
|
177
|
+
label: "Aborted"
|
|
178
|
+
}]
|
|
179
|
+
},
|
|
180
|
+
settings: {
|
|
181
|
+
defaultValue: _types.TaskDataStatus.PENDING
|
|
182
|
+
}
|
|
183
|
+
}, {
|
|
184
|
+
id: "startedOn",
|
|
185
|
+
fieldId: "startedOn",
|
|
186
|
+
storageId: "datetime@startedOn",
|
|
187
|
+
type: "datetime",
|
|
188
|
+
label: "Started On"
|
|
189
|
+
}, {
|
|
190
|
+
id: "finishedOn",
|
|
191
|
+
fieldId: "finishedOn",
|
|
192
|
+
storageId: "datetime@finishedOn",
|
|
193
|
+
type: "datetime",
|
|
194
|
+
label: "Finished On"
|
|
195
|
+
}, {
|
|
196
|
+
id: "eventResponse",
|
|
197
|
+
fieldId: "eventResponse",
|
|
198
|
+
storageId: "object@eventResponse",
|
|
199
|
+
type: "json",
|
|
200
|
+
label: "Event Response"
|
|
201
|
+
}]
|
|
202
|
+
}));
|
|
203
|
+
const taskModel = taskModelPlugin.contentModel;
|
|
204
|
+
exports.taskModel = taskModel;
|
|
205
|
+
const taskLogModel = taskLogModelPlugin.contentModel;
|
|
206
|
+
exports.taskLogModel = taskLogModel;
|
|
207
|
+
const createTaskModel = () => {
|
|
208
|
+
return [taskModelPlugin, taskLogModelPlugin];
|
|
209
|
+
};
|
|
210
|
+
exports.createTaskModel = createTaskModel;
|
|
211
|
+
|
|
212
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_apiHeadlessCms","require","_types","WEBINY_TASK_MODEL_ID","exports","WEBINY_TASK_LOG_MODEL_ID","taskLogModelPlugin","createCmsModel","createPrivateModelDefinition","name","modelId","fields","id","fieldId","storageId","type","label","validation","message","multipleValues","settings","predefinedValues","enabled","values","value","ITaskLogItemType","INFO","ERROR","taskModelPlugin","TaskDataStatus","PENDING","RUNNING","FAILED","SUCCESS","ABORTED","defaultValue","taskModel","contentModel","taskLogModel","createTaskModel"],"sources":["model.ts"],"sourcesContent":["import { createCmsModel, createPrivateModelDefinition } from \"@webiny/api-headless-cms\";\nimport { ITaskLogItemType, TaskDataStatus } from \"~/types\";\n\nexport const WEBINY_TASK_MODEL_ID = \"webinyTask\";\nexport const WEBINY_TASK_LOG_MODEL_ID = \"webinyTaskLog\";\n\nconst taskLogModelPlugin = createCmsModel(\n createPrivateModelDefinition({\n name: \"Webiny Task Log\",\n modelId: WEBINY_TASK_LOG_MODEL_ID,\n fields: [\n {\n id: \"executionName\",\n fieldId: \"executionName\",\n storageId: \"text@executionName\",\n type: \"text\",\n label: \"Execution Name\",\n validation: [\n {\n name: \"required\",\n message: \"Execution Name is required.\"\n }\n ]\n },\n {\n id: \"task\",\n fieldId: \"task\",\n storageId: \"text@task\",\n type: \"text\",\n label: \"Task\",\n validation: [\n {\n name: \"required\",\n message: \"Task is required.\"\n }\n ]\n },\n {\n id: \"iteration\",\n fieldId: \"iteration\",\n storageId: \"number@iteration\",\n type: \"number\",\n label: \"Iteration\",\n validation: [\n {\n name: \"required\",\n message: \"Iteration is required.\"\n }\n ]\n },\n {\n id: \"items\",\n fieldId: \"items\",\n storageId: \"object@items\",\n type: \"object\",\n label: \"Items\",\n multipleValues: true,\n validation: [\n {\n name: \"required\",\n message: \"Items is required.\"\n }\n ],\n settings: {\n fields: [\n {\n id: \"message\",\n fieldId: \"message\",\n storageId: \"text@message\",\n type: \"text\",\n label: \"Message\",\n validation: [\n {\n name: \"required\",\n message: \"Message is required.\"\n }\n ]\n },\n {\n id: \"createdOn\",\n fieldId: \"createdOn\",\n storageId: \"datetime@createdOn\",\n type: \"datetime\",\n label: \"Created On\",\n validation: [\n {\n name: \"required\",\n message: \"Created On is required.\"\n }\n ]\n },\n {\n id: \"type\",\n fieldId: \"type\",\n storageId: \"text@type\",\n type: \"text\",\n label: \"Type\",\n predefinedValues: {\n enabled: true,\n values: [\n {\n value: ITaskLogItemType.INFO,\n label: \"Info\"\n },\n {\n value: ITaskLogItemType.ERROR,\n label: \"Error\"\n }\n ]\n },\n validation: [\n {\n name: \"required\",\n message: \"Type is required.\"\n }\n ]\n },\n {\n id: \"data\",\n fieldId: \"data\",\n storageId: \"object@data\",\n type: \"json\",\n label: \"Data\"\n },\n {\n id: \"error\",\n fieldId: \"error\",\n storageId: \"object@error\",\n type: \"json\",\n label: \"Error\"\n }\n ]\n }\n }\n ]\n })\n);\n\nconst taskModelPlugin = createCmsModel(\n createPrivateModelDefinition({\n name: \"Webiny Task\",\n modelId: WEBINY_TASK_MODEL_ID,\n fields: [\n {\n id: \"name\",\n fieldId: \"name\",\n storageId: \"text@name\",\n type: \"text\",\n label: \"Name\",\n validation: [\n {\n name: \"required\",\n message: \"Name is required.\"\n }\n ]\n },\n {\n id: \"definitionId\",\n fieldId: \"definitionId\",\n storageId: \"text@definitionId\",\n type: \"text\",\n label: \"Definition ID\",\n validation: [\n {\n name: \"required\",\n message: \"Definition ID is required.\"\n }\n ]\n },\n {\n id: \"executionName\",\n fieldId: \"executionName\",\n storageId: \"text@executionName\",\n type: \"text\",\n label: \"Execution Name\"\n },\n {\n id: \"iterations\",\n fieldId: \"iterations\",\n storageId: \"number@iterations\",\n type: \"number\",\n label: \"Iterations\"\n },\n {\n id: \"input\",\n fieldId: \"input\",\n storageId: \"object@input\",\n type: \"json\",\n label: \"Input\"\n },\n {\n id: \"taskStatus\",\n fieldId: \"taskStatus\",\n storageId: \"text@taskStatus\",\n type: \"text\",\n label: \"Status\",\n predefinedValues: {\n enabled: true,\n values: [\n {\n value: TaskDataStatus.PENDING,\n label: \"Pending\"\n },\n {\n value: TaskDataStatus.RUNNING,\n label: \"Running\"\n },\n {\n value: TaskDataStatus.FAILED,\n label: \"Failed\"\n },\n {\n value: TaskDataStatus.SUCCESS,\n label: \"Success\"\n },\n {\n value: TaskDataStatus.ABORTED,\n label: \"Aborted\"\n }\n ]\n },\n settings: {\n defaultValue: TaskDataStatus.PENDING\n }\n },\n {\n id: \"startedOn\",\n fieldId: \"startedOn\",\n storageId: \"datetime@startedOn\",\n type: \"datetime\",\n label: \"Started On\"\n },\n {\n id: \"finishedOn\",\n fieldId: \"finishedOn\",\n storageId: \"datetime@finishedOn\",\n type: \"datetime\",\n label: \"Finished On\"\n },\n {\n id: \"eventResponse\",\n fieldId: \"eventResponse\",\n storageId: \"object@eventResponse\",\n type: \"json\",\n label: \"Event Response\"\n }\n ]\n })\n);\n\nexport const taskModel = taskModelPlugin.contentModel;\nexport const taskLogModel = taskLogModelPlugin.contentModel;\n\nexport const createTaskModel = () => {\n return [taskModelPlugin, taskLogModelPlugin];\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.createTriggerTasksCrud = void 0;
|
|
8
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
9
|
+
var _types = require("../types");
|
|
10
|
+
var _createEventBridgeEvent = require("./createEventBridgeEvent");
|
|
11
|
+
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
12
|
+
const createTriggerTasksCrud = (context, config) => {
|
|
13
|
+
const getTenant = () => {
|
|
14
|
+
return context.tenancy.getCurrentTenant().id;
|
|
15
|
+
};
|
|
16
|
+
const getLocale = () => {
|
|
17
|
+
return context.cms.getLocale().code;
|
|
18
|
+
};
|
|
19
|
+
const createEventBridgeEvent = (0, _createEventBridgeEvent.createEventBridgeEventFactory)({
|
|
20
|
+
config,
|
|
21
|
+
getTenant,
|
|
22
|
+
getLocale
|
|
23
|
+
});
|
|
24
|
+
return {
|
|
25
|
+
trigger: async params => {
|
|
26
|
+
const {
|
|
27
|
+
definition: id,
|
|
28
|
+
input: inputValues,
|
|
29
|
+
name
|
|
30
|
+
} = params;
|
|
31
|
+
const definition = context.tasks.getDefinition(id);
|
|
32
|
+
if (!definition) {
|
|
33
|
+
throw new _error.default(`Task definition was not found!`, "TASK_DEFINITION_ERROR", {
|
|
34
|
+
id
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
const input = {
|
|
38
|
+
name: name || definition.title,
|
|
39
|
+
definitionId: id,
|
|
40
|
+
input: inputValues || {}
|
|
41
|
+
};
|
|
42
|
+
if (definition.onBeforeTrigger) {
|
|
43
|
+
await definition.onBeforeTrigger({
|
|
44
|
+
context,
|
|
45
|
+
input: input.input
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
const task = await context.tasks.createTask(input);
|
|
49
|
+
let event = null;
|
|
50
|
+
try {
|
|
51
|
+
event = await createEventBridgeEvent(task);
|
|
52
|
+
if (!event) {
|
|
53
|
+
throw new _error.default(`Could not create the Event Bridge Event!`, "CREATE_EVENT_BRIDGE_EVENT_ERROR", {
|
|
54
|
+
task
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
} catch (ex) {
|
|
58
|
+
/**
|
|
59
|
+
* In case of failure to create the Event Bridge Event, we need to delete the task that was meant to be created.
|
|
60
|
+
* TODO maybe we can leave the task and update it as failed - with event bridge error?
|
|
61
|
+
*/
|
|
62
|
+
await context.tasks.deleteTask(task.id);
|
|
63
|
+
throw ex;
|
|
64
|
+
}
|
|
65
|
+
return await context.tasks.updateTask(task.id, {
|
|
66
|
+
eventResponse: event
|
|
67
|
+
});
|
|
68
|
+
},
|
|
69
|
+
abort: async params => {
|
|
70
|
+
const task = await context.tasks.getTask(params.id);
|
|
71
|
+
if (!task) {
|
|
72
|
+
throw new _handlerGraphql.NotFoundError(`Task "${params.id}" was not found!`);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* We should only be able to abort a task which is pending or running
|
|
76
|
+
*/
|
|
77
|
+
if ([_types.TaskDataStatus.PENDING, _types.TaskDataStatus.RUNNING].includes(task.taskStatus) === false) {
|
|
78
|
+
throw new _error.default(`Cannot abort a task that is not pending or running!`, "TASK_ABORT_ERROR", {
|
|
79
|
+
id: params.id,
|
|
80
|
+
status: task.taskStatus
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
let taskLog = null;
|
|
84
|
+
try {
|
|
85
|
+
taskLog = await context.tasks.getLatestLog(task.id);
|
|
86
|
+
} catch (ex) {}
|
|
87
|
+
if (!taskLog) {
|
|
88
|
+
taskLog = await context.tasks.createLog(task, {
|
|
89
|
+
iteration: 1,
|
|
90
|
+
executionName: task.executionName
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
const updatedTask = await context.tasks.updateTask(task.id, {
|
|
95
|
+
taskStatus: _types.TaskDataStatus.ABORTED
|
|
96
|
+
});
|
|
97
|
+
await context.tasks.updateLog(taskLog.id, {
|
|
98
|
+
items: taskLog.items.concat([{
|
|
99
|
+
message: params.message || "Task aborted.",
|
|
100
|
+
type: _types.ITaskLogItemType.INFO,
|
|
101
|
+
createdOn: new Date().toISOString()
|
|
102
|
+
}])
|
|
103
|
+
});
|
|
104
|
+
return updatedTask;
|
|
105
|
+
} catch (ex) {
|
|
106
|
+
throw new _error.default(`Could not abort the task!`, "TASK_ABORT_ERROR", {
|
|
107
|
+
id: params.id,
|
|
108
|
+
message: ex.message
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
exports.createTriggerTasksCrud = createTriggerTasksCrud;
|
|
115
|
+
|
|
116
|
+
//# sourceMappingURL=trigger.tasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_error","_interopRequireDefault","require","_types","_createEventBridgeEvent","_handlerGraphql","createTriggerTasksCrud","context","config","getTenant","tenancy","getCurrentTenant","id","getLocale","cms","code","createEventBridgeEvent","createEventBridgeEventFactory","trigger","params","definition","input","inputValues","name","tasks","getDefinition","WebinyError","title","definitionId","onBeforeTrigger","task","createTask","event","ex","deleteTask","updateTask","eventResponse","abort","getTask","NotFoundError","TaskDataStatus","PENDING","RUNNING","includes","taskStatus","status","taskLog","getLatestLog","createLog","iteration","executionName","updatedTask","ABORTED","updateLog","items","concat","message","type","ITaskLogItemType","INFO","createdOn","Date","toISOString","exports"],"sources":["trigger.tasks.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n Context,\n ITaskAbortParams,\n ITaskConfig,\n ITaskCreateData,\n ITaskData,\n ITaskDataInput,\n ITaskLog,\n ITaskLogItemType,\n ITasksContextTriggerObject,\n ITaskTriggerParams,\n TaskDataStatus\n} from \"~/types\";\nimport { createEventBridgeEventFactory } from \"~/crud/createEventBridgeEvent\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\n\nexport const createTriggerTasksCrud = (\n context: Context,\n config: ITaskConfig\n): ITasksContextTriggerObject => {\n const getTenant = (): string => {\n return context.tenancy.getCurrentTenant().id;\n };\n const getLocale = (): string => {\n return context.cms.getLocale().code;\n };\n const createEventBridgeEvent = createEventBridgeEventFactory({\n config,\n getTenant,\n getLocale\n });\n\n return {\n trigger: async <T = ITaskDataInput>(\n params: ITaskTriggerParams<T>\n ): Promise<ITaskData<T>> => {\n const { definition: id, input: inputValues, name } = params;\n const definition = context.tasks.getDefinition(id);\n if (!definition) {\n throw new WebinyError(`Task definition was not found!`, \"TASK_DEFINITION_ERROR\", {\n id\n });\n }\n const input: ITaskCreateData<T> = {\n name: name || definition.title,\n definitionId: id,\n input: inputValues || ({} as T)\n };\n if (definition.onBeforeTrigger) {\n await definition.onBeforeTrigger<T>({\n context,\n input: input.input\n });\n }\n\n const task = await context.tasks.createTask<T>(input);\n\n let event: Record<string, any> | null = null;\n try {\n event = await createEventBridgeEvent(task);\n\n if (!event) {\n throw new WebinyError(\n `Could not create the Event Bridge Event!`,\n \"CREATE_EVENT_BRIDGE_EVENT_ERROR\",\n {\n task\n }\n );\n }\n } catch (ex) {\n /**\n * In case of failure to create the Event Bridge Event, we need to delete the task that was meant to be created.\n * TODO maybe we can leave the task and update it as failed - with event bridge error?\n */\n await context.tasks.deleteTask(task.id);\n throw ex;\n }\n return await context.tasks.updateTask(task.id, {\n eventResponse: event\n });\n },\n abort: async (params: ITaskAbortParams): Promise<ITaskData> => {\n const task = await context.tasks.getTask(params.id);\n if (!task) {\n throw new NotFoundError(`Task \"${params.id}\" was not found!`);\n }\n /**\n * We should only be able to abort a task which is pending or running\n */\n if (\n [TaskDataStatus.PENDING, TaskDataStatus.RUNNING].includes(task.taskStatus) === false\n ) {\n throw new WebinyError(\n `Cannot abort a task that is not pending or running!`,\n \"TASK_ABORT_ERROR\",\n {\n id: params.id,\n status: task.taskStatus\n }\n );\n }\n let taskLog: ITaskLog | null = null;\n try {\n taskLog = await context.tasks.getLatestLog(task.id);\n } catch (ex) {}\n if (!taskLog) {\n taskLog = await context.tasks.createLog(task, {\n iteration: 1,\n executionName: task.executionName\n });\n }\n try {\n const updatedTask = await context.tasks.updateTask(task.id, {\n taskStatus: TaskDataStatus.ABORTED\n });\n await context.tasks.updateLog(taskLog.id, {\n items: taskLog.items.concat([\n {\n message: params.message || \"Task aborted.\",\n type: ITaskLogItemType.INFO,\n createdOn: new Date().toISOString()\n }\n ])\n });\n\n return updatedTask;\n } catch (ex) {\n throw new WebinyError(`Could not abort the task!`, \"TASK_ABORT_ERROR\", {\n id: params.id,\n message: ex.message\n });\n }\n }\n };\n};\n"],"mappings":"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"}
|
package/crud/where.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const remapWhere: <T extends Record<string, any>>(where?: T | undefined) => T | undefined;
|
package/crud/where.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.remapWhere = void 0;
|
|
7
|
+
const maps = {
|
|
8
|
+
id: "entryId",
|
|
9
|
+
id_in: "entryId_in",
|
|
10
|
+
id_not: "entryId_not",
|
|
11
|
+
id_not_in: "entryId_not_in"
|
|
12
|
+
};
|
|
13
|
+
const remapWhere = where => {
|
|
14
|
+
if (!where) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
const result = {
|
|
18
|
+
...where
|
|
19
|
+
};
|
|
20
|
+
for (const key in maps) {
|
|
21
|
+
const value = result[key];
|
|
22
|
+
delete result[key];
|
|
23
|
+
if (value === undefined) {
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
const newKey = maps[key];
|
|
27
|
+
result[newKey] = value;
|
|
28
|
+
}
|
|
29
|
+
return result;
|
|
30
|
+
};
|
|
31
|
+
exports.remapWhere = remapWhere;
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=where.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["maps","id","id_in","id_not","id_not_in","remapWhere","where","undefined","result","key","value","newKey","exports"],"sources":["where.ts"],"sourcesContent":["const maps: Record<string, string> = {\n id: \"entryId\",\n id_in: \"entryId_in\",\n id_not: \"entryId_not\",\n id_not_in: \"entryId_not_in\"\n};\n\nexport const remapWhere = <T extends Record<string, any>>(where?: T): T | undefined => {\n if (!where) {\n return undefined;\n }\n const result: T = { ...where };\n for (const key in maps) {\n const value = result[key];\n delete result[key];\n if (value === undefined) {\n continue;\n }\n const newKey = maps[key];\n result[newKey as keyof T] = value;\n }\n return result;\n};\n"],"mappings":";;;;;;AAAA,MAAMA,IAA4B,GAAG;EACjCC,EAAE,EAAE,SAAS;EACbC,KAAK,EAAE,YAAY;EACnBC,MAAM,EAAE,aAAa;EACrBC,SAAS,EAAE;AACf,CAAC;AAEM,MAAMC,UAAU,GAAmCC,KAAS,IAAoB;EACnF,IAAI,CAACA,KAAK,EAAE;IACR,OAAOC,SAAS;EACpB;EACA,MAAMC,MAAS,GAAG;IAAE,GAAGF;EAAM,CAAC;EAC9B,KAAK,MAAMG,GAAG,IAAIT,IAAI,EAAE;IACpB,MAAMU,KAAK,GAAGF,MAAM,CAACC,GAAG,CAAC;IACzB,OAAOD,MAAM,CAACC,GAAG,CAAC;IAClB,IAAIC,KAAK,KAAKH,SAAS,EAAE;MACrB;IACJ;IACA,MAAMI,MAAM,GAAGX,IAAI,CAACS,GAAG,CAAC;IACxBD,MAAM,CAACG,MAAM,CAAY,GAAGD,KAAK;EACrC;EACA,OAAOF,MAAM;AACjB,CAAC;AAACI,OAAA,CAAAP,UAAA,GAAAA,UAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.checkPermissions = void 0;
|
|
7
|
+
var _apiSecurity = require("@webiny/api-security");
|
|
8
|
+
/**
|
|
9
|
+
* @throws
|
|
10
|
+
*/
|
|
11
|
+
const checkPermissions = async (context, check = {}) => {
|
|
12
|
+
const taskPermissions = await context.security.getPermissions("tasks");
|
|
13
|
+
const relevant = taskPermissions.filter(current => {
|
|
14
|
+
if (check.rwd && !hasRwd(current, check.rwd)) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
return true;
|
|
18
|
+
});
|
|
19
|
+
if (relevant.length === 0) {
|
|
20
|
+
throw new _apiSecurity.NotAuthorizedError();
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
exports.checkPermissions = checkPermissions;
|
|
24
|
+
const hasRwd = (permissions, rwd) => {
|
|
25
|
+
if (!Array.isArray(permissions)) {
|
|
26
|
+
permissions = [permissions];
|
|
27
|
+
}
|
|
28
|
+
if (!rwd) {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Is there a permission that doesn't restrict RWD permissions, that means all RWD permissions are allowed.
|
|
33
|
+
const permissionWithoutRwdRestrictions = permissions.some(permission => {
|
|
34
|
+
return typeof permission.rwd !== "string";
|
|
35
|
+
});
|
|
36
|
+
if (permissionWithoutRwdRestrictions) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// If there is no permission that doesn't restrict RWD permissions, that means we need to check if the RWD.
|
|
41
|
+
return permissions.some(permission => {
|
|
42
|
+
return permission.rwd && permission.rwd.includes(rwd);
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=checkPermissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_apiSecurity","require","checkPermissions","context","check","taskPermissions","security","getPermissions","relevant","filter","current","rwd","hasRwd","length","NotAuthorizedError","exports","permissions","Array","isArray","permissionWithoutRwdRestrictions","some","permission","includes"],"sources":["checkPermissions.ts"],"sourcesContent":["import { NotAuthorizedError } from \"@webiny/api-security\";\nimport { Context, TaskPermission } from \"~/types\";\n\n/**\n * @throws\n */\nexport const checkPermissions = async (\n context: Context,\n check: { rwd?: string } = {}\n): Promise<void> => {\n const taskPermissions = await context.security.getPermissions<TaskPermission>(\"tasks\");\n\n const relevant = taskPermissions.filter(current => {\n if (check.rwd && !hasRwd(current, check.rwd)) {\n return false;\n }\n\n return true;\n });\n\n if (relevant.length === 0) {\n throw new NotAuthorizedError();\n }\n};\n\nconst hasRwd = (permissions: TaskPermission | TaskPermission[], rwd: string): boolean => {\n if (!Array.isArray(permissions)) {\n permissions = [permissions];\n }\n\n if (!rwd) {\n return true;\n }\n\n // Is there a permission that doesn't restrict RWD permissions, that means all RWD permissions are allowed.\n const permissionWithoutRwdRestrictions = permissions.some(permission => {\n return typeof permission.rwd !== \"string\";\n });\n\n if (permissionWithoutRwdRestrictions) {\n return true;\n }\n\n // If there is no permission that doesn't restrict RWD permissions, that means we need to check if the RWD.\n return permissions.some(permission => {\n return permission.rwd && permission.rwd.includes(rwd);\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAGA;AACA;AACA;AACO,MAAMC,gBAAgB,GAAG,MAAAA,CAC5BC,OAAgB,EAChBC,KAAuB,GAAG,CAAC,CAAC,KACZ;EAChB,MAAMC,eAAe,GAAG,MAAMF,OAAO,CAACG,QAAQ,CAACC,cAAc,CAAiB,OAAO,CAAC;EAEtF,MAAMC,QAAQ,GAAGH,eAAe,CAACI,MAAM,CAACC,OAAO,IAAI;IAC/C,IAAIN,KAAK,CAACO,GAAG,IAAI,CAACC,MAAM,CAACF,OAAO,EAAEN,KAAK,CAACO,GAAG,CAAC,EAAE;MAC1C,OAAO,KAAK;IAChB;IAEA,OAAO,IAAI;EACf,CAAC,CAAC;EAEF,IAAIH,QAAQ,CAACK,MAAM,KAAK,CAAC,EAAE;IACvB,MAAM,IAAIC,+BAAkB,CAAC,CAAC;EAClC;AACJ,CAAC;AAACC,OAAA,CAAAb,gBAAA,GAAAA,gBAAA;AAEF,MAAMU,MAAM,GAAGA,CAACI,WAA8C,EAAEL,GAAW,KAAc;EACrF,IAAI,CAACM,KAAK,CAACC,OAAO,CAACF,WAAW,CAAC,EAAE;IAC7BA,WAAW,GAAG,CAACA,WAAW,CAAC;EAC/B;EAEA,IAAI,CAACL,GAAG,EAAE;IACN,OAAO,IAAI;EACf;;EAEA;EACA,MAAMQ,gCAAgC,GAAGH,WAAW,CAACI,IAAI,CAACC,UAAU,IAAI;IACpE,OAAO,OAAOA,UAAU,CAACV,GAAG,KAAK,QAAQ;EAC7C,CAAC,CAAC;EAEF,IAAIQ,gCAAgC,EAAE;IAClC,OAAO,IAAI;EACf;;EAEA;EACA,OAAOH,WAAW,CAACI,IAAI,CAACC,UAAU,IAAI;IAClC,OAAOA,UAAU,CAACV,GAAG,IAAIU,UAAU,CAACV,GAAG,CAACW,QAAQ,CAACX,GAAG,CAAC;EACzD,CAAC,CAAC;AACN,CAAC"}
|