@webiny/tasks 5.39.2 → 5.39.3-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/crud/EventBridgeEventTransport.d.ts +16 -0
- package/crud/EventBridgeEventTransport.js +57 -0
- package/crud/EventBridgeEventTransport.js.map +1 -0
- package/crud/crud.tasks.js +89 -52
- package/crud/crud.tasks.js.map +1 -1
- package/crud/model.js +1 -5
- package/crud/model.js.map +1 -1
- package/crud/trigger.tasks.js +26 -5
- package/crud/trigger.tasks.js.map +1 -1
- package/graphql/index.js +1 -1
- package/graphql/index.js.map +1 -1
- package/handler/index.d.ts +2 -2
- package/handler/index.js +17 -3
- package/handler/index.js.map +1 -1
- package/handler/types.d.ts +4 -0
- package/handler/types.js.map +1 -1
- package/package.json +19 -18
- package/response/DatabaseResponse.d.ts +2 -2
- package/response/DatabaseResponse.js +7 -1
- package/response/DatabaseResponse.js.map +1 -1
- package/response/Response.d.ts +3 -1
- package/response/Response.js +7 -1
- package/response/Response.js.map +1 -1
- package/response/ResponseAbortedResult.js +1 -1
- package/response/ResponseAbortedResult.js.map +1 -1
- package/response/ResponseContinueResult.d.ts +5 -1
- package/response/ResponseContinueResult.js +4 -0
- package/response/ResponseContinueResult.js.map +1 -1
- package/response/TaskResponse.d.ts +1 -1
- package/response/TaskResponse.js +6 -1
- package/response/TaskResponse.js.map +1 -1
- package/response/abstractions/Response.d.ts +1 -0
- package/response/abstractions/Response.js.map +1 -1
- package/response/abstractions/ResponseContinueResult.d.ts +1 -0
- package/response/abstractions/ResponseContinueResult.js.map +1 -1
- package/response/abstractions/TaskResponse.d.ts +7 -2
- package/response/abstractions/TaskResponse.js.map +1 -1
- package/runner/TaskManager.d.ts +2 -3
- package/runner/TaskManager.js +23 -20
- package/runner/TaskManager.js.map +1 -1
- package/runner/TaskManagerStore.d.ts +14 -10
- package/runner/TaskManagerStore.js +56 -19
- package/runner/TaskManagerStore.js.map +1 -1
- package/runner/TaskRunner.d.ts +7 -12
- package/runner/TaskRunner.js +22 -15
- package/runner/TaskRunner.js.map +1 -1
- package/runner/abstractions/TaskManagerStore.d.ts +52 -13
- package/runner/abstractions/TaskManagerStore.js.map +1 -1
- package/runner/abstractions/TaskRunner.d.ts +1 -7
- package/runner/abstractions/TaskRunner.js.map +1 -1
- package/task/plugin.js +1 -1
- package/task/plugin.js.map +1 -1
- package/timer/CustomTimer.d.ts +6 -0
- package/timer/CustomTimer.js +21 -0
- package/timer/CustomTimer.js.map +1 -0
- package/timer/Timer.d.ts +9 -0
- package/timer/Timer.js +17 -0
- package/timer/Timer.js.map +1 -0
- package/timer/abstractions/ITimer.d.ts +6 -0
- package/timer/abstractions/ITimer.js +7 -0
- package/timer/abstractions/ITimer.js.map +1 -0
- package/timer/factory.d.ts +4 -0
- package/timer/factory.js +20 -0
- package/timer/factory.js.map +1 -0
- package/timer/index.d.ts +4 -0
- package/timer/index.js +51 -0
- package/timer/index.js.map +1 -0
- package/types.d.ts +62 -35
- package/types.js +11 -5
- package/types.js.map +1 -1
- package/utils/ObjectUpdater.d.ts +8 -0
- package/utils/ObjectUpdater.js +46 -0
- package/utils/ObjectUpdater.js.map +1 -0
- package/crud/createEventBridgeEvent.d.ts +0 -9
- package/crud/createEventBridgeEvent.js +0 -73
- package/crud/createEventBridgeEvent.js.map +0 -1
- package/runner/utils/getErrorProperties.d.ts +0 -5
- package/runner/utils/getErrorProperties.js +0 -18
- package/runner/utils/getErrorProperties.js.map +0 -1
- package/runner/utils/getObjectProperties.d.ts +0 -4
- package/runner/utils/getObjectProperties.js +0 -21
- package/runner/utils/getObjectProperties.js.map +0 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { PutEventsCommandOutput } from "@webiny/aws-sdk/client-eventbridge";
|
|
2
|
+
import { ITask, ITaskConfig } from "../types";
|
|
3
|
+
export { PutEventsCommandOutput };
|
|
4
|
+
export interface IEventBridgeEventTransportParams {
|
|
5
|
+
config: ITaskConfig;
|
|
6
|
+
getTenant: () => string;
|
|
7
|
+
getLocale: () => string;
|
|
8
|
+
}
|
|
9
|
+
export declare class EventBridgeEventTransport {
|
|
10
|
+
private readonly client;
|
|
11
|
+
private readonly eventBusName;
|
|
12
|
+
private readonly getTenant;
|
|
13
|
+
private readonly getLocale;
|
|
14
|
+
constructor(params: IEventBridgeEventTransportParams);
|
|
15
|
+
send(task: Pick<ITask, "id" | "definitionId">, delay: number): Promise<PutEventsCommandOutput>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.EventBridgeEventTransport = void 0;
|
|
8
|
+
Object.defineProperty(exports, "PutEventsCommandOutput", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function () {
|
|
11
|
+
return _clientEventbridge.PutEventsCommandOutput;
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
15
|
+
var _clientEventbridge = require("@webiny/aws-sdk/client-eventbridge");
|
|
16
|
+
class EventBridgeEventTransport {
|
|
17
|
+
constructor(params) {
|
|
18
|
+
this.client = new _clientEventbridge.EventBridgeClient({
|
|
19
|
+
region: process.env.AWS_REGION
|
|
20
|
+
});
|
|
21
|
+
this.eventBusName = params.config.eventBusName;
|
|
22
|
+
this.getTenant = params.getTenant;
|
|
23
|
+
this.getLocale = params.getLocale;
|
|
24
|
+
}
|
|
25
|
+
async send(task, delay) {
|
|
26
|
+
/**
|
|
27
|
+
* The ITaskEvent is what our handler expect to get.
|
|
28
|
+
* Endpoint and stateMachineId are added by the step function.
|
|
29
|
+
*/
|
|
30
|
+
const event = {
|
|
31
|
+
webinyTaskId: task.id,
|
|
32
|
+
webinyTaskDefinitionId: task.definitionId,
|
|
33
|
+
tenant: this.getTenant(),
|
|
34
|
+
locale: this.getLocale(),
|
|
35
|
+
delay
|
|
36
|
+
};
|
|
37
|
+
const cmd = new _clientEventbridge.PutEventsCommand({
|
|
38
|
+
Entries: [{
|
|
39
|
+
Source: "webiny-api-tasks",
|
|
40
|
+
EventBusName: this.eventBusName,
|
|
41
|
+
DetailType: "WebinyBackgroundTask",
|
|
42
|
+
Detail: JSON.stringify(event)
|
|
43
|
+
}]
|
|
44
|
+
});
|
|
45
|
+
try {
|
|
46
|
+
return await this.client.send(cmd);
|
|
47
|
+
} catch (ex) {
|
|
48
|
+
throw new _error.default(ex.message || "Could not trigger task via Event Bridge!", ex.code || "TRIGGER_TASK_ERROR", {
|
|
49
|
+
event,
|
|
50
|
+
...(ex.data || {})
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.EventBridgeEventTransport = EventBridgeEventTransport;
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=EventBridgeEventTransport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_error","_interopRequireDefault","require","_clientEventbridge","EventBridgeEventTransport","constructor","params","client","EventBridgeClient","region","process","env","AWS_REGION","eventBusName","config","getTenant","getLocale","send","task","delay","event","webinyTaskId","id","webinyTaskDefinitionId","definitionId","tenant","locale","cmd","PutEventsCommand","Entries","Source","EventBusName","DetailType","Detail","JSON","stringify","ex","WebinyError","message","code","data","exports"],"sources":["EventBridgeEventTransport.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n EventBridgeClient,\n PutEventsCommand,\n PutEventsCommandOutput\n} from \"@webiny/aws-sdk/client-eventbridge\";\nimport { ITask, ITaskConfig } from \"~/types\";\nimport { ITaskEventInput } from \"~/handler/types\";\n\nexport { PutEventsCommandOutput };\n\nexport interface IEventBridgeEventTransportParams {\n config: ITaskConfig;\n getTenant: () => string;\n getLocale: () => string;\n}\n\nexport class EventBridgeEventTransport {\n private readonly client: EventBridgeClient;\n private readonly eventBusName: string;\n private readonly getTenant: () => string;\n private readonly getLocale: () => string;\n\n public constructor(params: IEventBridgeEventTransportParams) {\n this.client = new EventBridgeClient({\n region: process.env.AWS_REGION\n });\n this.eventBusName = params.config.eventBusName;\n this.getTenant = params.getTenant;\n this.getLocale = params.getLocale;\n }\n\n public async send(\n task: Pick<ITask, \"id\" | \"definitionId\">,\n delay: number\n ): 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 locale: this.getLocale(),\n delay\n };\n\n const cmd = new PutEventsCommand({\n Entries: [\n {\n Source: \"webiny-api-tasks\",\n EventBusName: this.eventBusName,\n DetailType: \"WebinyBackgroundTask\",\n Detail: JSON.stringify(event)\n }\n ]\n });\n try {\n return await this.client.send(cmd);\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"],"mappings":";;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAgBO,MAAME,yBAAyB,CAAC;EAM5BC,WAAWA,CAACC,MAAwC,EAAE;IACzD,IAAI,CAACC,MAAM,GAAG,IAAIC,oCAAiB,CAAC;MAChCC,MAAM,EAAEC,OAAO,CAACC,GAAG,CAACC;IACxB,CAAC,CAAC;IACF,IAAI,CAACC,YAAY,GAAGP,MAAM,CAACQ,MAAM,CAACD,YAAY;IAC9C,IAAI,CAACE,SAAS,GAAGT,MAAM,CAACS,SAAS;IACjC,IAAI,CAACC,SAAS,GAAGV,MAAM,CAACU,SAAS;EACrC;EAEA,MAAaC,IAAIA,CACbC,IAAwC,EACxCC,KAAa,EACkB;IAC/B;AACR;AACA;AACA;IACQ,MAAMC,KAAsB,GAAG;MAC3BC,YAAY,EAAEH,IAAI,CAACI,EAAE;MACrBC,sBAAsB,EAAEL,IAAI,CAACM,YAAY;MACzCC,MAAM,EAAE,IAAI,CAACV,SAAS,CAAC,CAAC;MACxBW,MAAM,EAAE,IAAI,CAACV,SAAS,CAAC,CAAC;MACxBG;IACJ,CAAC;IAED,MAAMQ,GAAG,GAAG,IAAIC,mCAAgB,CAAC;MAC7BC,OAAO,EAAE,CACL;QACIC,MAAM,EAAE,kBAAkB;QAC1BC,YAAY,EAAE,IAAI,CAAClB,YAAY;QAC/BmB,UAAU,EAAE,sBAAsB;QAClCC,MAAM,EAAEC,IAAI,CAACC,SAAS,CAACf,KAAK;MAChC,CAAC;IAET,CAAC,CAAC;IACF,IAAI;MACA,OAAO,MAAM,IAAI,CAACb,MAAM,CAACU,IAAI,CAACU,GAAG,CAAC;IACtC,CAAC,CAAC,OAAOS,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,0CAA0C,EACxDF,EAAE,CAACG,IAAI,IAAI,oBAAoB,EAC/B;QACInB,KAAK;QACL,IAAIgB,EAAE,CAACI,IAAI,IAAI,CAAC,CAAC;MACrB,CACJ,CAAC;IACL;EACJ;AACJ;AAACC,OAAA,CAAArC,yBAAA,GAAAA,yBAAA"}
|
package/crud/crud.tasks.js
CHANGED
|
@@ -11,8 +11,12 @@ var _model = require("./model");
|
|
|
11
11
|
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
12
12
|
var _pubsub = require("@webiny/pubsub");
|
|
13
13
|
var _where = require("./where");
|
|
14
|
+
var _utils = require("@webiny/utils");
|
|
14
15
|
const createRevisionId = id => {
|
|
15
|
-
|
|
16
|
+
const {
|
|
17
|
+
id: entryId
|
|
18
|
+
} = (0, _utils.parseIdentifier)(id);
|
|
19
|
+
return `${entryId}#0001`;
|
|
16
20
|
};
|
|
17
21
|
const convertToTask = entry => {
|
|
18
22
|
return {
|
|
@@ -52,24 +56,30 @@ const createTaskCrud = context => {
|
|
|
52
56
|
const onTaskBeforeDelete = (0, _pubsub.createTopic)("tasks.onBeforeDelete");
|
|
53
57
|
const onTaskAfterDelete = (0, _pubsub.createTopic)("tasks.onAfterDelete");
|
|
54
58
|
const getTaskModel = async () => {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
59
|
+
return await context.security.withoutAuthorization(async () => {
|
|
60
|
+
const model = await context.cms.getModel(_model.WEBINY_TASK_MODEL_ID);
|
|
61
|
+
if (model) {
|
|
62
|
+
return model;
|
|
63
|
+
}
|
|
64
|
+
throw new _error.default(`There is no model "${_model.WEBINY_TASK_MODEL_ID}".`);
|
|
65
|
+
});
|
|
60
66
|
};
|
|
61
67
|
const getLogModel = async () => {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
68
|
+
return await context.security.withoutAuthorization(async () => {
|
|
69
|
+
const model = await context.cms.getModel(_model.WEBINY_TASK_LOG_MODEL_ID);
|
|
70
|
+
if (model) {
|
|
71
|
+
return model;
|
|
72
|
+
}
|
|
73
|
+
throw new _error.default(`There is no model "${_model.WEBINY_TASK_LOG_MODEL_ID}".`);
|
|
74
|
+
});
|
|
67
75
|
};
|
|
68
76
|
const getTask = async id => {
|
|
69
77
|
let entry;
|
|
70
78
|
try {
|
|
71
|
-
|
|
72
|
-
|
|
79
|
+
entry = await context.security.withoutAuthorization(async () => {
|
|
80
|
+
const model = await getTaskModel();
|
|
81
|
+
return await context.cms.getEntryById(model, createRevisionId(id));
|
|
82
|
+
});
|
|
73
83
|
} catch (ex) {
|
|
74
84
|
if (ex instanceof _handlerGraphql.NotFoundError) {
|
|
75
85
|
return null;
|
|
@@ -82,10 +92,12 @@ const createTaskCrud = context => {
|
|
|
82
92
|
return convertToTask(entry);
|
|
83
93
|
};
|
|
84
94
|
const listTasks = async params => {
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
95
|
+
const [items, meta] = await context.security.withoutAuthorization(async () => {
|
|
96
|
+
const model = await getTaskModel();
|
|
97
|
+
return await context.cms.listLatestEntries(model, {
|
|
98
|
+
...params,
|
|
99
|
+
where: (0, _where.remapWhere)(params?.where)
|
|
100
|
+
});
|
|
89
101
|
});
|
|
90
102
|
return {
|
|
91
103
|
items: items.map(item => convertToTask(item)),
|
|
@@ -99,44 +111,63 @@ const createTaskCrud = context => {
|
|
|
99
111
|
id: data.definitionId
|
|
100
112
|
});
|
|
101
113
|
}
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
114
|
+
const entry = await context.security.withoutAuthorization(async () => {
|
|
115
|
+
const model = await getTaskModel();
|
|
116
|
+
return await context.cms.createEntry(model, {
|
|
117
|
+
...data,
|
|
118
|
+
iterations: 0,
|
|
119
|
+
taskStatus: _types.TaskDataStatus.PENDING
|
|
120
|
+
});
|
|
107
121
|
});
|
|
108
122
|
return convertToTask(entry);
|
|
109
123
|
};
|
|
110
124
|
const updateTask = async (id, data) => {
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
125
|
+
const entry = await context.security.withoutAuthorization(async () => {
|
|
126
|
+
const model = await getTaskModel();
|
|
127
|
+
return await context.cms.updateEntry(model, createRevisionId(id), {
|
|
128
|
+
...data,
|
|
129
|
+
savedOn: new Date().toISOString()
|
|
130
|
+
});
|
|
115
131
|
});
|
|
116
132
|
return convertToTask(entry);
|
|
117
133
|
};
|
|
118
134
|
const deleteTask = async id => {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
135
|
+
return context.security.withoutAuthorization(async () => {
|
|
136
|
+
const model = await getTaskModel();
|
|
137
|
+
await context.cms.deleteEntry(model, createRevisionId(id));
|
|
138
|
+
return true;
|
|
139
|
+
});
|
|
122
140
|
};
|
|
123
141
|
const createLog = async (task, data) => {
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
142
|
+
const entry = await context.security.withoutAuthorization(async () => {
|
|
143
|
+
const model = await getLogModel();
|
|
144
|
+
return await context.cms.createEntry(model, {
|
|
145
|
+
...data,
|
|
146
|
+
task: task.id
|
|
147
|
+
});
|
|
128
148
|
});
|
|
129
149
|
return convertToLog(entry);
|
|
130
150
|
};
|
|
131
151
|
const updateLog = async (id, data) => {
|
|
132
|
-
const
|
|
133
|
-
|
|
152
|
+
const entry = await context.security.withoutAuthorization(async () => {
|
|
153
|
+
const model = await getLogModel();
|
|
154
|
+
return await context.cms.updateEntry(model, createRevisionId(id), data);
|
|
155
|
+
});
|
|
134
156
|
return convertToLog(entry);
|
|
135
157
|
};
|
|
158
|
+
const deleteLog = async id => {
|
|
159
|
+
return context.security.withoutAuthorization(async () => {
|
|
160
|
+
const model = await getLogModel();
|
|
161
|
+
await context.cms.deleteEntry(model, id);
|
|
162
|
+
return true;
|
|
163
|
+
});
|
|
164
|
+
};
|
|
136
165
|
const getLog = async id => {
|
|
137
166
|
try {
|
|
138
|
-
const
|
|
139
|
-
|
|
167
|
+
const entry = await context.security.withoutAuthorization(async () => {
|
|
168
|
+
const model = await getLogModel();
|
|
169
|
+
return await context.cms.getEntryById(model, id);
|
|
170
|
+
});
|
|
140
171
|
return convertToLog(entry);
|
|
141
172
|
} catch (ex) {
|
|
142
173
|
if (ex instanceof _handlerGraphql.NotFoundError) {
|
|
@@ -146,25 +177,30 @@ const createTaskCrud = context => {
|
|
|
146
177
|
}
|
|
147
178
|
};
|
|
148
179
|
const getLatestLog = async taskId => {
|
|
149
|
-
const
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
180
|
+
const entry = await context.security.withoutAuthorization(async () => {
|
|
181
|
+
const model = await getLogModel();
|
|
182
|
+
const [items] = await context.cms.listLatestEntries(model, {
|
|
183
|
+
where: {
|
|
184
|
+
task: taskId
|
|
185
|
+
},
|
|
186
|
+
sort: ["createdOn_DESC"],
|
|
187
|
+
limit: 1
|
|
188
|
+
});
|
|
189
|
+
const [item] = items;
|
|
190
|
+
if (!item) {
|
|
191
|
+
throw new _handlerGraphql.NotFoundError(`No existing latest log found for task "${taskId}".`);
|
|
192
|
+
}
|
|
193
|
+
return item;
|
|
156
194
|
});
|
|
157
|
-
const [entry] = items;
|
|
158
|
-
if (!entry) {
|
|
159
|
-
throw new _handlerGraphql.NotFoundError(`No existing latest log found for task "${taskId}".`);
|
|
160
|
-
}
|
|
161
195
|
return convertToLog(entry);
|
|
162
196
|
};
|
|
163
197
|
const listLogs = async params => {
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
198
|
+
const [items, meta] = await context.security.withoutAuthorization(async () => {
|
|
199
|
+
const model = await getLogModel();
|
|
200
|
+
return await context.cms.listLatestEntries(model, {
|
|
201
|
+
...params,
|
|
202
|
+
where: (0, _where.remapWhere)(params.where)
|
|
203
|
+
});
|
|
168
204
|
});
|
|
169
205
|
return {
|
|
170
206
|
items: items.map(item => convertToLog(item)),
|
|
@@ -185,6 +221,7 @@ const createTaskCrud = context => {
|
|
|
185
221
|
deleteTask,
|
|
186
222
|
createLog,
|
|
187
223
|
updateLog,
|
|
224
|
+
deleteLog,
|
|
188
225
|
getLog,
|
|
189
226
|
listLogs,
|
|
190
227
|
getLatestLog,
|
package/crud/crud.tasks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_error","_interopRequireDefault","require","_types","_model","_handlerGraphql","_pubsub","_where","createRevisionId","id","convertToTask","entry","entryId","createdOn","savedOn","createdBy","name","values","definitionId","input","output","taskStatus","executionName","eventResponse","startedOn","finishedOn","iterations","parentId","convertToLog","task","iteration","items","createTaskCrud","context","onTaskBeforeCreate","createTopic","onTaskAfterCreate","onTaskBeforeUpdate","onTaskAfterUpdate","onTaskBeforeDelete","onTaskAfterDelete","getTaskModel","model","cms","getModel","WEBINY_TASK_MODEL_ID","WebinyError","getLogModel","WEBINY_TASK_LOG_MODEL_ID","getTask","getEntryById","ex","NotFoundError","listTasks","params","meta","listLatestEntries","where","remapWhere","map","item","createTask","data","definition","tasks","getDefinition","createEntry","TaskDataStatus","PENDING","updateTask","updateEntry","Date","toISOString","deleteTask","deleteEntry","createLog","updateLog","getLog","getLatestLog","taskId","sort","limit","listLogs","exports"],"sources":["crud.tasks.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n Context,\n IListTaskLogParams,\n IListTaskParams,\n ITask,\n ITaskCreateData,\n ITaskLog,\n ITaskLogCreateInput,\n ITaskLogUpdateInput,\n ITaskResponseDoneResultOutput,\n ITasksContextCrudObject,\n ITaskUpdateData,\n OnTaskAfterCreateTopicParams,\n OnTaskAfterDeleteTopicParams,\n OnTaskAfterUpdateTopicParams,\n OnTaskBeforeCreateTopicParams,\n OnTaskBeforeDeleteTopicParams,\n OnTaskBeforeUpdateTopicParams,\n TaskDataStatus\n} from \"~/types\";\nimport { WEBINY_TASK_LOG_MODEL_ID, WEBINY_TASK_MODEL_ID } from \"./model\";\nimport { CmsEntry, CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { remapWhere } from \"./where\";\n\nconst createRevisionId = (id: string) => {\n return `${id}#0001`;\n};\n\nconst convertToTask = <\n T = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n>(\n entry: CmsEntry<ITask<T, O>>\n): ITask<T, O> => {\n return {\n id: entry.entryId,\n createdOn: entry.createdOn,\n savedOn: entry.savedOn,\n createdBy: entry.createdBy,\n name: entry.values.name,\n definitionId: entry.values.definitionId,\n input: entry.values.input,\n output: entry.values.output,\n taskStatus: entry.values.taskStatus,\n executionName: entry.values.executionName || \"\",\n eventResponse: entry.values.eventResponse,\n startedOn: entry.values.startedOn,\n finishedOn: entry.values.finishedOn,\n iterations: entry.values.iterations,\n parentId: entry.values.parentId\n };\n};\n\nconst convertToLog = (entry: CmsEntry<ITaskLog>): ITaskLog => {\n return {\n id: entry.entryId,\n createdOn: entry.createdOn,\n createdBy: entry.createdBy,\n executionName: entry.values.executionName,\n task: entry.values.task,\n iteration: entry.values.iteration,\n items: entry.values.items || []\n };\n};\n\nexport const createTaskCrud = (context: Context): ITasksContextCrudObject => {\n const onTaskBeforeCreate = createTopic<OnTaskBeforeCreateTopicParams>(\"tasks.onBeforeCreate\");\n const onTaskAfterCreate = createTopic<OnTaskAfterCreateTopicParams>(\"tasks.onAfterCreate\");\n const onTaskBeforeUpdate = createTopic<OnTaskBeforeUpdateTopicParams>(\"tasks.onBeforeUpdate\");\n const onTaskAfterUpdate = createTopic<OnTaskAfterUpdateTopicParams>(\"tasks.onAfterUpdate\");\n const onTaskBeforeDelete = createTopic<OnTaskBeforeDeleteTopicParams>(\"tasks.onBeforeDelete\");\n const onTaskAfterDelete = createTopic<OnTaskAfterDeleteTopicParams>(\"tasks.onAfterDelete\");\n\n const getTaskModel = async (): Promise<CmsModel> => {\n const model = await context.cms.getModel(WEBINY_TASK_MODEL_ID);\n if (model) {\n return model;\n }\n\n throw new WebinyError(`There is no model \"${WEBINY_TASK_MODEL_ID}\".`);\n };\n\n const getLogModel = async (): Promise<CmsModel> => {\n const model = await context.cms.getModel(WEBINY_TASK_LOG_MODEL_ID);\n if (model) {\n return model;\n }\n\n throw new WebinyError(`There is no model \"${WEBINY_TASK_LOG_MODEL_ID}\".`);\n };\n\n const getTask = async (id: string) => {\n let entry: CmsEntry;\n try {\n const model = await getTaskModel();\n entry = await context.cms.getEntryById(model, createRevisionId(id));\n } catch (ex) {\n if (ex instanceof NotFoundError) {\n return null;\n }\n throw ex;\n }\n\n if (!entry) {\n return null;\n }\n\n return convertToTask(entry as unknown as CmsEntry<ITask>);\n };\n\n const listTasks = async <\n T = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n params?: IListTaskParams\n ) => {\n const model = await getTaskModel();\n const [items, meta] = await context.cms.listLatestEntries<ITask<T, O>>(model, {\n ...params,\n where: remapWhere(params?.where)\n });\n\n return {\n items: items.map(item => convertToTask<T, O>(item)),\n meta\n };\n };\n\n const createTask = async (data: ITaskCreateData) => {\n const definition = context.tasks.getDefinition(data.definitionId);\n if (!definition) {\n throw new WebinyError(`There is no task definition.`, \"TASK_DEFINITION_ERROR\", {\n id: data.definitionId\n });\n }\n\n const model = await getTaskModel();\n const entry = await context.cms.createEntry(model, {\n ...data,\n iterations: 0,\n taskStatus: TaskDataStatus.PENDING\n });\n\n return convertToTask(entry as unknown as CmsEntry<ITask>);\n };\n\n const updateTask = async (id: string, data: ITaskUpdateData) => {\n const model = await getTaskModel();\n const entry = await context.cms.updateEntry(model, createRevisionId(id), {\n ...data,\n savedOn: new Date().toISOString()\n });\n\n return convertToTask(entry as unknown as CmsEntry<ITask>);\n };\n\n const deleteTask = async (id: string) => {\n const model = await getTaskModel();\n await context.cms.deleteEntry(model, createRevisionId(id));\n return true;\n };\n\n const createLog = async (task: Pick<ITask, \"id\">, data: ITaskLogCreateInput) => {\n const model = await getLogModel();\n const entry = await context.cms.createEntry(model, {\n ...data,\n task: task.id\n });\n\n return convertToLog(entry as unknown as CmsEntry<ITaskLog>);\n };\n\n const updateLog = async (id: string, data: ITaskLogUpdateInput) => {\n const model = await getLogModel();\n const entry = await context.cms.updateEntry(model, createRevisionId(id), data);\n return convertToLog(entry as unknown as CmsEntry<ITaskLog>);\n };\n\n const getLog = async (id: string): Promise<ITaskLog | null> => {\n try {\n const model = await getLogModel();\n const entry = await context.cms.getEntryById(model, id);\n return convertToLog(entry as unknown as CmsEntry<ITaskLog>);\n } catch (ex) {\n if (ex instanceof NotFoundError) {\n return null;\n }\n throw ex;\n }\n };\n\n const getLatestLog = async (taskId: string): Promise<ITaskLog> => {\n const model = await getLogModel();\n const [items] = await context.cms.listLatestEntries<ITaskLog>(model, {\n where: {\n task: taskId\n },\n sort: [\"createdOn_DESC\"],\n limit: 1\n });\n\n const [entry] = items;\n if (!entry) {\n throw new NotFoundError(`No existing latest log found for task \"${taskId}\".`);\n }\n\n return convertToLog(entry as unknown as CmsEntry<ITaskLog>);\n };\n\n const listLogs = async (params: IListTaskLogParams) => {\n const model = await getLogModel();\n const [items, meta] = await context.cms.listLatestEntries<ITaskLog>(model, {\n ...params,\n where: remapWhere(params.where)\n });\n\n return {\n items: items.map(item => convertToLog(item)),\n meta\n };\n };\n\n return {\n onTaskBeforeCreate,\n onTaskAfterCreate,\n onTaskBeforeUpdate,\n onTaskAfterUpdate,\n onTaskBeforeDelete,\n onTaskAfterDelete,\n getTask,\n listTasks,\n createTask,\n updateTask,\n deleteTask,\n createLog,\n updateLog,\n getLog,\n listLogs,\n getLatestLog,\n getTaskModel,\n getLogModel\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_error","_interopRequireDefault","require","_types","_model","_handlerGraphql","_pubsub","_where","_utils","createRevisionId","id","entryId","parseIdentifier","convertToTask","entry","createdOn","savedOn","createdBy","name","values","definitionId","input","output","taskStatus","executionName","eventResponse","startedOn","finishedOn","iterations","parentId","convertToLog","task","iteration","items","createTaskCrud","context","onTaskBeforeCreate","createTopic","onTaskAfterCreate","onTaskBeforeUpdate","onTaskAfterUpdate","onTaskBeforeDelete","onTaskAfterDelete","getTaskModel","security","withoutAuthorization","model","cms","getModel","WEBINY_TASK_MODEL_ID","WebinyError","getLogModel","WEBINY_TASK_LOG_MODEL_ID","getTask","getEntryById","ex","NotFoundError","listTasks","params","meta","listLatestEntries","where","remapWhere","map","item","createTask","data","definition","tasks","getDefinition","createEntry","TaskDataStatus","PENDING","updateTask","updateEntry","Date","toISOString","deleteTask","deleteEntry","createLog","updateLog","deleteLog","getLog","getLatestLog","taskId","sort","limit","listLogs","exports"],"sources":["crud.tasks.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n Context,\n IListTaskLogParams,\n IListTaskParams,\n ITask,\n ITaskCreateData,\n ITaskDataInput,\n ITaskLog,\n ITaskLogCreateInput,\n ITaskLogUpdateInput,\n ITaskResponseDoneResultOutput,\n ITasksContextCrudObject,\n ITaskUpdateData,\n OnTaskAfterCreateTopicParams,\n OnTaskAfterDeleteTopicParams,\n OnTaskAfterUpdateTopicParams,\n OnTaskBeforeCreateTopicParams,\n OnTaskBeforeDeleteTopicParams,\n OnTaskBeforeUpdateTopicParams,\n TaskDataStatus\n} from \"~/types\";\nimport { WEBINY_TASK_LOG_MODEL_ID, WEBINY_TASK_MODEL_ID } from \"./model\";\nimport { CmsEntry, CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { remapWhere } from \"./where\";\nimport { parseIdentifier } from \"@webiny/utils\";\n\nconst createRevisionId = (id: string) => {\n const { id: entryId } = parseIdentifier(id);\n return `${entryId}#0001`;\n};\n\nconst convertToTask = <\n T = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n>(\n entry: CmsEntry<ITask<T, O>>\n): ITask<T, O> => {\n return {\n id: entry.entryId,\n createdOn: entry.createdOn,\n savedOn: entry.savedOn,\n createdBy: entry.createdBy,\n name: entry.values.name,\n definitionId: entry.values.definitionId,\n input: entry.values.input,\n output: entry.values.output,\n taskStatus: entry.values.taskStatus,\n executionName: entry.values.executionName || \"\",\n eventResponse: entry.values.eventResponse,\n startedOn: entry.values.startedOn,\n finishedOn: entry.values.finishedOn,\n iterations: entry.values.iterations,\n parentId: entry.values.parentId\n };\n};\n\nconst convertToLog = (entry: CmsEntry<ITaskLog>): ITaskLog => {\n return {\n id: entry.entryId,\n createdOn: entry.createdOn,\n createdBy: entry.createdBy,\n executionName: entry.values.executionName,\n task: entry.values.task,\n iteration: entry.values.iteration,\n items: entry.values.items || []\n };\n};\n\nexport const createTaskCrud = (context: Context): ITasksContextCrudObject => {\n const onTaskBeforeCreate = createTopic<OnTaskBeforeCreateTopicParams>(\"tasks.onBeforeCreate\");\n const onTaskAfterCreate = createTopic<OnTaskAfterCreateTopicParams>(\"tasks.onAfterCreate\");\n const onTaskBeforeUpdate = createTopic<OnTaskBeforeUpdateTopicParams>(\"tasks.onBeforeUpdate\");\n const onTaskAfterUpdate = createTopic<OnTaskAfterUpdateTopicParams>(\"tasks.onAfterUpdate\");\n const onTaskBeforeDelete = createTopic<OnTaskBeforeDeleteTopicParams>(\"tasks.onBeforeDelete\");\n const onTaskAfterDelete = createTopic<OnTaskAfterDeleteTopicParams>(\"tasks.onAfterDelete\");\n\n const getTaskModel = async (): Promise<CmsModel> => {\n return await context.security.withoutAuthorization(async () => {\n const model = await context.cms.getModel(WEBINY_TASK_MODEL_ID);\n if (model) {\n return model;\n }\n throw new WebinyError(`There is no model \"${WEBINY_TASK_MODEL_ID}\".`);\n });\n };\n\n const getLogModel = async (): Promise<CmsModel> => {\n return await context.security.withoutAuthorization(async () => {\n const model = await context.cms.getModel(WEBINY_TASK_LOG_MODEL_ID);\n if (model) {\n return model;\n }\n throw new WebinyError(`There is no model \"${WEBINY_TASK_LOG_MODEL_ID}\".`);\n });\n };\n\n const getTask = async <\n T = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n id: string\n ) => {\n let entry: CmsEntry;\n try {\n entry = await context.security.withoutAuthorization(async () => {\n const model = await getTaskModel();\n return await context.cms.getEntryById(model, createRevisionId(id));\n });\n } catch (ex) {\n if (ex instanceof NotFoundError) {\n return null;\n }\n throw ex;\n }\n\n if (!entry) {\n return null;\n }\n\n return convertToTask(entry as unknown as CmsEntry<ITask<T, O>>);\n };\n\n const listTasks = async <\n T = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n params?: IListTaskParams\n ) => {\n const [items, meta] = await context.security.withoutAuthorization(async () => {\n const model = await getTaskModel();\n return await context.cms.listLatestEntries<ITask<T, O>>(model, {\n ...params,\n where: remapWhere(params?.where)\n });\n });\n\n return {\n items: items.map(item => convertToTask<T, O>(item)),\n meta\n };\n };\n\n const createTask = async (data: ITaskCreateData) => {\n const definition = context.tasks.getDefinition(data.definitionId);\n if (!definition) {\n throw new WebinyError(`There is no task definition.`, \"TASK_DEFINITION_ERROR\", {\n id: data.definitionId\n });\n }\n\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getTaskModel();\n return await context.cms.createEntry(model, {\n ...data,\n iterations: 0,\n taskStatus: TaskDataStatus.PENDING\n });\n });\n\n return convertToTask(entry as unknown as CmsEntry<ITask>);\n };\n\n const updateTask = async <\n T = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n id: string,\n data: ITaskUpdateData<T, O>\n ) => {\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getTaskModel();\n return await context.cms.updateEntry(model, createRevisionId(id), {\n ...data,\n savedOn: new Date().toISOString()\n });\n });\n return convertToTask<T, O>(entry as unknown as CmsEntry<ITask<T, O>>);\n };\n\n const deleteTask = async (id: string) => {\n return context.security.withoutAuthorization(async () => {\n const model = await getTaskModel();\n await context.cms.deleteEntry(model, createRevisionId(id));\n return true;\n });\n };\n\n const createLog = async (task: Pick<ITask, \"id\">, data: ITaskLogCreateInput) => {\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n\n return await context.cms.createEntry(model, {\n ...data,\n task: task.id\n });\n });\n\n return convertToLog(entry as unknown as CmsEntry<ITaskLog>);\n };\n\n const updateLog = async (id: string, data: ITaskLogUpdateInput) => {\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n\n return await context.cms.updateEntry(model, createRevisionId(id), data);\n });\n return convertToLog(entry as unknown as CmsEntry<ITaskLog>);\n };\n\n const deleteLog = async (id: string) => {\n return context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n await context.cms.deleteEntry(model, id);\n return true;\n });\n };\n\n const getLog = async (id: string): Promise<ITaskLog | null> => {\n try {\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n return await context.cms.getEntryById(model, id);\n });\n\n return convertToLog(entry as unknown as CmsEntry<ITaskLog>);\n } catch (ex) {\n if (ex instanceof NotFoundError) {\n return null;\n }\n throw ex;\n }\n };\n\n const getLatestLog = async (taskId: string): Promise<ITaskLog> => {\n const entry = await context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n const [items] = await context.cms.listLatestEntries<ITaskLog>(model, {\n where: {\n task: taskId\n },\n sort: [\"createdOn_DESC\"],\n limit: 1\n });\n const [item] = items;\n if (!item) {\n throw new NotFoundError(`No existing latest log found for task \"${taskId}\".`);\n }\n return item;\n });\n\n return convertToLog(entry as unknown as CmsEntry<ITaskLog>);\n };\n\n const listLogs = async (params: IListTaskLogParams) => {\n const [items, meta] = await context.security.withoutAuthorization(async () => {\n const model = await getLogModel();\n return await context.cms.listLatestEntries<ITaskLog>(model, {\n ...params,\n where: remapWhere(params.where)\n });\n });\n\n return {\n items: items.map(item => convertToLog(item)),\n meta\n };\n };\n\n return {\n onTaskBeforeCreate,\n onTaskAfterCreate,\n onTaskBeforeUpdate,\n onTaskAfterUpdate,\n onTaskBeforeDelete,\n onTaskAfterDelete,\n getTask,\n listTasks,\n createTask,\n updateTask,\n deleteTask,\n createLog,\n updateLog,\n deleteLog,\n getLog,\n listLogs,\n getLatestLog,\n getTaskModel,\n getLogModel\n };\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAqBA,IAAAE,MAAA,GAAAF,OAAA;AAEA,IAAAG,eAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAL,OAAA;AACA,IAAAM,MAAA,GAAAN,OAAA;AAEA,MAAMO,gBAAgB,GAAIC,EAAU,IAAK;EACrC,MAAM;IAAEA,EAAE,EAAEC;EAAQ,CAAC,GAAG,IAAAC,sBAAe,EAACF,EAAE,CAAC;EAC3C,OAAQ,GAAEC,OAAQ,OAAM;AAC5B,CAAC;AAED,MAAME,aAAa,GAIfC,KAA4B,IACd;EACd,OAAO;IACHJ,EAAE,EAAEI,KAAK,CAACH,OAAO;IACjBI,SAAS,EAAED,KAAK,CAACC,SAAS;IAC1BC,OAAO,EAAEF,KAAK,CAACE,OAAO;IACtBC,SAAS,EAAEH,KAAK,CAACG,SAAS;IAC1BC,IAAI,EAAEJ,KAAK,CAACK,MAAM,CAACD,IAAI;IACvBE,YAAY,EAAEN,KAAK,CAACK,MAAM,CAACC,YAAY;IACvCC,KAAK,EAAEP,KAAK,CAACK,MAAM,CAACE,KAAK;IACzBC,MAAM,EAAER,KAAK,CAACK,MAAM,CAACG,MAAM;IAC3BC,UAAU,EAAET,KAAK,CAACK,MAAM,CAACI,UAAU;IACnCC,aAAa,EAAEV,KAAK,CAACK,MAAM,CAACK,aAAa,IAAI,EAAE;IAC/CC,aAAa,EAAEX,KAAK,CAACK,MAAM,CAACM,aAAa;IACzCC,SAAS,EAAEZ,KAAK,CAACK,MAAM,CAACO,SAAS;IACjCC,UAAU,EAAEb,KAAK,CAACK,MAAM,CAACQ,UAAU;IACnCC,UAAU,EAAEd,KAAK,CAACK,MAAM,CAACS,UAAU;IACnCC,QAAQ,EAAEf,KAAK,CAACK,MAAM,CAACU;EAC3B,CAAC;AACL,CAAC;AAED,MAAMC,YAAY,GAAIhB,KAAyB,IAAe;EAC1D,OAAO;IACHJ,EAAE,EAAEI,KAAK,CAACH,OAAO;IACjBI,SAAS,EAAED,KAAK,CAACC,SAAS;IAC1BE,SAAS,EAAEH,KAAK,CAACG,SAAS;IAC1BO,aAAa,EAAEV,KAAK,CAACK,MAAM,CAACK,aAAa;IACzCO,IAAI,EAAEjB,KAAK,CAACK,MAAM,CAACY,IAAI;IACvBC,SAAS,EAAElB,KAAK,CAACK,MAAM,CAACa,SAAS;IACjCC,KAAK,EAAEnB,KAAK,CAACK,MAAM,CAACc,KAAK,IAAI;EACjC,CAAC;AACL,CAAC;AAEM,MAAMC,cAAc,GAAIC,OAAgB,IAA8B;EACzE,MAAMC,kBAAkB,GAAG,IAAAC,mBAAW,EAAgC,sBAAsB,CAAC;EAC7F,MAAMC,iBAAiB,GAAG,IAAAD,mBAAW,EAA+B,qBAAqB,CAAC;EAC1F,MAAME,kBAAkB,GAAG,IAAAF,mBAAW,EAAgC,sBAAsB,CAAC;EAC7F,MAAMG,iBAAiB,GAAG,IAAAH,mBAAW,EAA+B,qBAAqB,CAAC;EAC1F,MAAMI,kBAAkB,GAAG,IAAAJ,mBAAW,EAAgC,sBAAsB,CAAC;EAC7F,MAAMK,iBAAiB,GAAG,IAAAL,mBAAW,EAA+B,qBAAqB,CAAC;EAE1F,MAAMM,YAAY,GAAG,MAAAA,CAAA,KAA+B;IAChD,OAAO,MAAMR,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MAC3D,MAAMC,KAAK,GAAG,MAAMX,OAAO,CAACY,GAAG,CAACC,QAAQ,CAACC,2BAAoB,CAAC;MAC9D,IAAIH,KAAK,EAAE;QACP,OAAOA,KAAK;MAChB;MACA,MAAM,IAAII,cAAW,CAAE,sBAAqBD,2BAAqB,IAAG,CAAC;IACzE,CAAC,CAAC;EACN,CAAC;EAED,MAAME,WAAW,GAAG,MAAAA,CAAA,KAA+B;IAC/C,OAAO,MAAMhB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MAC3D,MAAMC,KAAK,GAAG,MAAMX,OAAO,CAACY,GAAG,CAACC,QAAQ,CAACI,+BAAwB,CAAC;MAClE,IAAIN,KAAK,EAAE;QACP,OAAOA,KAAK;MAChB;MACA,MAAM,IAAII,cAAW,CAAE,sBAAqBE,+BAAyB,IAAG,CAAC;IAC7E,CAAC,CAAC;EACN,CAAC;EAED,MAAMC,OAAO,GAAG,MAIZ3C,EAAU,IACT;IACD,IAAII,KAAe;IACnB,IAAI;MACAA,KAAK,GAAG,MAAMqB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;QAC5D,MAAMC,KAAK,GAAG,MAAMH,YAAY,CAAC,CAAC;QAClC,OAAO,MAAMR,OAAO,CAACY,GAAG,CAACO,YAAY,CAACR,KAAK,EAAErC,gBAAgB,CAACC,EAAE,CAAC,CAAC;MACtE,CAAC,CAAC;IACN,CAAC,CAAC,OAAO6C,EAAE,EAAE;MACT,IAAIA,EAAE,YAAYC,6BAAa,EAAE;QAC7B,OAAO,IAAI;MACf;MACA,MAAMD,EAAE;IACZ;IAEA,IAAI,CAACzC,KAAK,EAAE;MACR,OAAO,IAAI;IACf;IAEA,OAAOD,aAAa,CAACC,KAAyC,CAAC;EACnE,CAAC;EAED,MAAM2C,SAAS,GAAG,MAIdC,MAAwB,IACvB;IACD,MAAM,CAACzB,KAAK,EAAE0B,IAAI,CAAC,GAAG,MAAMxB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MAC1E,MAAMC,KAAK,GAAG,MAAMH,YAAY,CAAC,CAAC;MAClC,OAAO,MAAMR,OAAO,CAACY,GAAG,CAACa,iBAAiB,CAAcd,KAAK,EAAE;QAC3D,GAAGY,MAAM;QACTG,KAAK,EAAE,IAAAC,iBAAU,EAACJ,MAAM,EAAEG,KAAK;MACnC,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,OAAO;MACH5B,KAAK,EAAEA,KAAK,CAAC8B,GAAG,CAACC,IAAI,IAAInD,aAAa,CAAOmD,IAAI,CAAC,CAAC;MACnDL;IACJ,CAAC;EACL,CAAC;EAED,MAAMM,UAAU,GAAG,MAAOC,IAAqB,IAAK;IAChD,MAAMC,UAAU,GAAGhC,OAAO,CAACiC,KAAK,CAACC,aAAa,CAACH,IAAI,CAAC9C,YAAY,CAAC;IACjE,IAAI,CAAC+C,UAAU,EAAE;MACb,MAAM,IAAIjB,cAAW,CAAE,8BAA6B,EAAE,uBAAuB,EAAE;QAC3ExC,EAAE,EAAEwD,IAAI,CAAC9C;MACb,CAAC,CAAC;IACN;IAEA,MAAMN,KAAK,GAAG,MAAMqB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MAClE,MAAMC,KAAK,GAAG,MAAMH,YAAY,CAAC,CAAC;MAClC,OAAO,MAAMR,OAAO,CAACY,GAAG,CAACuB,WAAW,CAACxB,KAAK,EAAE;QACxC,GAAGoB,IAAI;QACPtC,UAAU,EAAE,CAAC;QACbL,UAAU,EAAEgD,qBAAc,CAACC;MAC/B,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,OAAO3D,aAAa,CAACC,KAAmC,CAAC;EAC7D,CAAC;EAED,MAAM2D,UAAU,GAAG,MAAAA,CAIf/D,EAAU,EACVwD,IAA2B,KAC1B;IACD,MAAMpD,KAAK,GAAG,MAAMqB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MAClE,MAAMC,KAAK,GAAG,MAAMH,YAAY,CAAC,CAAC;MAClC,OAAO,MAAMR,OAAO,CAACY,GAAG,CAAC2B,WAAW,CAAC5B,KAAK,EAAErC,gBAAgB,CAACC,EAAE,CAAC,EAAE;QAC9D,GAAGwD,IAAI;QACPlD,OAAO,EAAE,IAAI2D,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC;MACpC,CAAC,CAAC;IACN,CAAC,CAAC;IACF,OAAO/D,aAAa,CAAOC,KAAyC,CAAC;EACzE,CAAC;EAED,MAAM+D,UAAU,GAAG,MAAOnE,EAAU,IAAK;IACrC,OAAOyB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MACrD,MAAMC,KAAK,GAAG,MAAMH,YAAY,CAAC,CAAC;MAClC,MAAMR,OAAO,CAACY,GAAG,CAAC+B,WAAW,CAAChC,KAAK,EAAErC,gBAAgB,CAACC,EAAE,CAAC,CAAC;MAC1D,OAAO,IAAI;IACf,CAAC,CAAC;EACN,CAAC;EAED,MAAMqE,SAAS,GAAG,MAAAA,CAAOhD,IAAuB,EAAEmC,IAAyB,KAAK;IAC5E,MAAMpD,KAAK,GAAG,MAAMqB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MAClE,MAAMC,KAAK,GAAG,MAAMK,WAAW,CAAC,CAAC;MAEjC,OAAO,MAAMhB,OAAO,CAACY,GAAG,CAACuB,WAAW,CAACxB,KAAK,EAAE;QACxC,GAAGoB,IAAI;QACPnC,IAAI,EAAEA,IAAI,CAACrB;MACf,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,OAAOoB,YAAY,CAAChB,KAAsC,CAAC;EAC/D,CAAC;EAED,MAAMkE,SAAS,GAAG,MAAAA,CAAOtE,EAAU,EAAEwD,IAAyB,KAAK;IAC/D,MAAMpD,KAAK,GAAG,MAAMqB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MAClE,MAAMC,KAAK,GAAG,MAAMK,WAAW,CAAC,CAAC;MAEjC,OAAO,MAAMhB,OAAO,CAACY,GAAG,CAAC2B,WAAW,CAAC5B,KAAK,EAAErC,gBAAgB,CAACC,EAAE,CAAC,EAAEwD,IAAI,CAAC;IAC3E,CAAC,CAAC;IACF,OAAOpC,YAAY,CAAChB,KAAsC,CAAC;EAC/D,CAAC;EAED,MAAMmE,SAAS,GAAG,MAAOvE,EAAU,IAAK;IACpC,OAAOyB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MACrD,MAAMC,KAAK,GAAG,MAAMK,WAAW,CAAC,CAAC;MACjC,MAAMhB,OAAO,CAACY,GAAG,CAAC+B,WAAW,CAAChC,KAAK,EAAEpC,EAAE,CAAC;MACxC,OAAO,IAAI;IACf,CAAC,CAAC;EACN,CAAC;EAED,MAAMwE,MAAM,GAAG,MAAOxE,EAAU,IAA+B;IAC3D,IAAI;MACA,MAAMI,KAAK,GAAG,MAAMqB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;QAClE,MAAMC,KAAK,GAAG,MAAMK,WAAW,CAAC,CAAC;QACjC,OAAO,MAAMhB,OAAO,CAACY,GAAG,CAACO,YAAY,CAACR,KAAK,EAAEpC,EAAE,CAAC;MACpD,CAAC,CAAC;MAEF,OAAOoB,YAAY,CAAChB,KAAsC,CAAC;IAC/D,CAAC,CAAC,OAAOyC,EAAE,EAAE;MACT,IAAIA,EAAE,YAAYC,6BAAa,EAAE;QAC7B,OAAO,IAAI;MACf;MACA,MAAMD,EAAE;IACZ;EACJ,CAAC;EAED,MAAM4B,YAAY,GAAG,MAAOC,MAAc,IAAwB;IAC9D,MAAMtE,KAAK,GAAG,MAAMqB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MAClE,MAAMC,KAAK,GAAG,MAAMK,WAAW,CAAC,CAAC;MACjC,MAAM,CAAClB,KAAK,CAAC,GAAG,MAAME,OAAO,CAACY,GAAG,CAACa,iBAAiB,CAAWd,KAAK,EAAE;QACjEe,KAAK,EAAE;UACH9B,IAAI,EAAEqD;QACV,CAAC;QACDC,IAAI,EAAE,CAAC,gBAAgB,CAAC;QACxBC,KAAK,EAAE;MACX,CAAC,CAAC;MACF,MAAM,CAACtB,IAAI,CAAC,GAAG/B,KAAK;MACpB,IAAI,CAAC+B,IAAI,EAAE;QACP,MAAM,IAAIR,6BAAa,CAAE,0CAAyC4B,MAAO,IAAG,CAAC;MACjF;MACA,OAAOpB,IAAI;IACf,CAAC,CAAC;IAEF,OAAOlC,YAAY,CAAChB,KAAsC,CAAC;EAC/D,CAAC;EAED,MAAMyE,QAAQ,GAAG,MAAO7B,MAA0B,IAAK;IACnD,MAAM,CAACzB,KAAK,EAAE0B,IAAI,CAAC,GAAG,MAAMxB,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MAC1E,MAAMC,KAAK,GAAG,MAAMK,WAAW,CAAC,CAAC;MACjC,OAAO,MAAMhB,OAAO,CAACY,GAAG,CAACa,iBAAiB,CAAWd,KAAK,EAAE;QACxD,GAAGY,MAAM;QACTG,KAAK,EAAE,IAAAC,iBAAU,EAACJ,MAAM,CAACG,KAAK;MAClC,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,OAAO;MACH5B,KAAK,EAAEA,KAAK,CAAC8B,GAAG,CAACC,IAAI,IAAIlC,YAAY,CAACkC,IAAI,CAAC,CAAC;MAC5CL;IACJ,CAAC;EACL,CAAC;EAED,OAAO;IACHvB,kBAAkB;IAClBE,iBAAiB;IACjBC,kBAAkB;IAClBC,iBAAiB;IACjBC,kBAAkB;IAClBC,iBAAiB;IACjBW,OAAO;IACPI,SAAS;IACTQ,UAAU;IACVQ,UAAU;IACVI,UAAU;IACVE,SAAS;IACTC,SAAS;IACTC,SAAS;IACTC,MAAM;IACNK,QAAQ;IACRJ,YAAY;IACZxC,YAAY;IACZQ;EACJ,CAAC;AACL,CAAC;AAACqC,OAAA,CAAAtD,cAAA,GAAAA,cAAA"}
|
package/crud/model.js
CHANGED
|
@@ -18,11 +18,7 @@ const taskLogModelPlugin = (0, _apiHeadlessCms.createCmsModel)((0, _apiHeadlessC
|
|
|
18
18
|
fieldId: "executionName",
|
|
19
19
|
storageId: "text@executionName",
|
|
20
20
|
type: "text",
|
|
21
|
-
label: "Execution Name"
|
|
22
|
-
validation: [{
|
|
23
|
-
name: "required",
|
|
24
|
-
message: "Execution Name is required."
|
|
25
|
-
}]
|
|
21
|
+
label: "Execution Name"
|
|
26
22
|
}, {
|
|
27
23
|
id: "task",
|
|
28
24
|
fieldId: "task",
|
package/crud/model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_apiHeadlessCms","require","_types","WEBINY_TASK_MODEL_ID","exports","WEBINY_TASK_LOG_MODEL_ID","taskLogModelPlugin","createCmsModel","createPrivateModel","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, createPrivateModel } 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 createPrivateModel({\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 createPrivateModel({\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: \"parentId\",\n fieldId: \"parentId\",\n storageId: \"text@parentId\",\n type: \"text\",\n label: \"Parent ID\"\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: \"output\",\n fieldId: \"output\",\n storageId: \"object@output\",\n type: \"json\",\n label: \"Output\"\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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"}
|
|
1
|
+
{"version":3,"names":["_apiHeadlessCms","require","_types","WEBINY_TASK_MODEL_ID","exports","WEBINY_TASK_LOG_MODEL_ID","taskLogModelPlugin","createCmsModel","createPrivateModel","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, createPrivateModel } 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 createPrivateModel({\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 },\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 createPrivateModel({\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: \"parentId\",\n fieldId: \"parentId\",\n storageId: \"text@parentId\",\n type: \"text\",\n label: \"Parent ID\"\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: \"output\",\n fieldId: \"output\",\n storageId: \"object@output\",\n type: \"json\",\n label: \"Output\"\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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"}
|
package/crud/trigger.tasks.js
CHANGED
|
@@ -7,8 +7,24 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.createTriggerTasksCrud = void 0;
|
|
8
8
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
9
9
|
var _types = require("../types");
|
|
10
|
-
var _createEventBridgeEvent = require("./createEventBridgeEvent");
|
|
11
10
|
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
11
|
+
var _EventBridgeEventTransport = require("./EventBridgeEventTransport");
|
|
12
|
+
const MAX_DELAY_DAYS = 355;
|
|
13
|
+
const MAX_DELAY_SECONDS = MAX_DELAY_DAYS * 24 * 60 * 60;
|
|
14
|
+
const validateDelay = ({
|
|
15
|
+
input,
|
|
16
|
+
delay
|
|
17
|
+
}) => {
|
|
18
|
+
if (!delay || delay < 0 || typeof delay !== "number" || Number.isInteger(delay) === false) {
|
|
19
|
+
return;
|
|
20
|
+
} else if (delay < MAX_DELAY_SECONDS) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
throw new _error.default(`The maximum delay for a task is ${MAX_DELAY_DAYS} days.`, "MAX_DELAY_ERROR", {
|
|
24
|
+
...input,
|
|
25
|
+
delay
|
|
26
|
+
});
|
|
27
|
+
};
|
|
12
28
|
const createTriggerTasksCrud = (context, config) => {
|
|
13
29
|
const getTenant = () => {
|
|
14
30
|
return context.tenancy.getCurrentTenant().id;
|
|
@@ -16,7 +32,7 @@ const createTriggerTasksCrud = (context, config) => {
|
|
|
16
32
|
const getLocale = () => {
|
|
17
33
|
return context.cms.getLocale().code;
|
|
18
34
|
};
|
|
19
|
-
const
|
|
35
|
+
const eventBridgeEventTransport = new _EventBridgeEventTransport.EventBridgeEventTransport({
|
|
20
36
|
config,
|
|
21
37
|
getTenant,
|
|
22
38
|
getLocale
|
|
@@ -27,7 +43,8 @@ const createTriggerTasksCrud = (context, config) => {
|
|
|
27
43
|
definition: id,
|
|
28
44
|
input: inputValues,
|
|
29
45
|
name,
|
|
30
|
-
parent
|
|
46
|
+
parent,
|
|
47
|
+
delay = 0
|
|
31
48
|
} = params;
|
|
32
49
|
const definition = context.tasks.getDefinition(id);
|
|
33
50
|
if (!definition) {
|
|
@@ -44,13 +61,17 @@ const createTriggerTasksCrud = (context, config) => {
|
|
|
44
61
|
if (definition.onBeforeTrigger) {
|
|
45
62
|
await definition.onBeforeTrigger({
|
|
46
63
|
context,
|
|
47
|
-
|
|
64
|
+
data: input
|
|
48
65
|
});
|
|
49
66
|
}
|
|
67
|
+
validateDelay({
|
|
68
|
+
input,
|
|
69
|
+
delay
|
|
70
|
+
});
|
|
50
71
|
const task = await context.tasks.createTask(input);
|
|
51
72
|
let event = null;
|
|
52
73
|
try {
|
|
53
|
-
event = await
|
|
74
|
+
event = await eventBridgeEventTransport.send(task, delay);
|
|
54
75
|
if (!event) {
|
|
55
76
|
throw new _error.default(`Could not create the Event Bridge Event!`, "CREATE_EVENT_BRIDGE_EVENT_ERROR", {
|
|
56
77
|
task
|
|
@@ -1 +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","parent","tasks","getDefinition","WebinyError","title","definitionId","parentId","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","onAbort","exports"],"sources":["trigger.tasks.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n Context,\n ITask,\n ITaskAbortParams,\n ITaskConfig,\n ITaskCreateData,\n ITaskDataInput,\n ITaskLog,\n ITaskLogItemType,\n ITasksContextTriggerObject,\n ITaskTriggerParams,\n TaskDataStatus\n} from \"~/types\";\nimport {\n createEventBridgeEventFactory,\n PutEventsCommandOutput\n} 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>(params: ITaskTriggerParams<T>): Promise<ITask<T>> => {\n const { definition: id, input: inputValues, name, parent } = 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 parentId: parent?.id\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: PutEventsCommandOutput | 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<ITask> => {\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 const definition = context.tasks.getDefinition(task.definitionId);\n if (!definition) {\n throw new WebinyError(`Task definition was not found!`, \"TASK_DEFINITION_ERROR\", {\n id: task.id\n });\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 * TODO: determine when to kick off the onAbort hook\n */\n if (definition.onAbort) {\n await definition.onAbort({\n context,\n task: updatedTask\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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"}
|
|
1
|
+
{"version":3,"names":["_error","_interopRequireDefault","require","_types","_handlerGraphql","_EventBridgeEventTransport","MAX_DELAY_DAYS","MAX_DELAY_SECONDS","validateDelay","input","delay","Number","isInteger","WebinyError","createTriggerTasksCrud","context","config","getTenant","tenancy","getCurrentTenant","id","getLocale","cms","code","eventBridgeEventTransport","EventBridgeEventTransport","trigger","params","definition","inputValues","name","parent","tasks","getDefinition","title","definitionId","parentId","onBeforeTrigger","data","task","createTask","event","send","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","onAbort","exports"],"sources":["trigger.tasks.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n Context,\n ITask,\n ITaskAbortParams,\n ITaskConfig,\n ITaskCreateData,\n ITaskDataInput,\n ITaskLog,\n ITaskLogItemType,\n ITasksContextTriggerObject,\n ITaskTriggerParams,\n TaskDataStatus\n} from \"~/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { EventBridgeEventTransport, PutEventsCommandOutput } from \"./EventBridgeEventTransport\";\n\nconst MAX_DELAY_DAYS = 355;\nconst MAX_DELAY_SECONDS = MAX_DELAY_DAYS * 24 * 60 * 60;\n\ninterface ValidateDelayParams {\n input: ITaskCreateData;\n delay?: number;\n}\n\nconst validateDelay = ({ input, delay }: ValidateDelayParams): void => {\n if (!delay || delay < 0 || typeof delay !== \"number\" || Number.isInteger(delay) === false) {\n return;\n } else if (delay < MAX_DELAY_SECONDS) {\n return;\n }\n throw new WebinyError(\n `The maximum delay for a task is ${MAX_DELAY_DAYS} days.`,\n \"MAX_DELAY_ERROR\",\n {\n ...input,\n delay\n }\n );\n};\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 eventBridgeEventTransport = new EventBridgeEventTransport({\n config,\n getTenant,\n getLocale\n });\n\n return {\n trigger: async <T = ITaskDataInput>(params: ITaskTriggerParams<T>): Promise<ITask<T>> => {\n const { definition: id, input: inputValues, name, parent, delay = 0 } = 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 parentId: parent?.id\n };\n if (definition.onBeforeTrigger) {\n await definition.onBeforeTrigger<T>({\n context,\n data: input\n });\n }\n validateDelay({\n input,\n delay\n });\n\n const task = await context.tasks.createTask<T>(input);\n\n let event: PutEventsCommandOutput | null = null;\n try {\n event = await eventBridgeEventTransport.send(task, delay);\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<ITask> => {\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 const definition = context.tasks.getDefinition(task.definitionId);\n if (!definition) {\n throw new WebinyError(`Task definition was not found!`, \"TASK_DEFINITION_ERROR\", {\n id: task.id\n });\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 * TODO: determine when to kick off the onAbort hook\n */\n if (definition.onAbort) {\n await definition.onAbort({\n context,\n task: updatedTask\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/graphql/index.js
CHANGED
|
@@ -222,7 +222,7 @@ const createGraphQL = () => {
|
|
|
222
222
|
}
|
|
223
223
|
|
|
224
224
|
extend type WebinyBackgroundTaskMutation {
|
|
225
|
-
triggerTask(definition: WebinyBackgroundTaskDefinitionEnum!, input: JSON, name: String): WebinyBackgroundTaskTriggerResponse!
|
|
225
|
+
triggerTask(definition: WebinyBackgroundTaskDefinitionEnum!, input: JSON, name: String, delay: Number): WebinyBackgroundTaskTriggerResponse!
|
|
226
226
|
abortTask(id: ID!, message: String): WebinyBackgroundTaskResponse!
|
|
227
227
|
deleteTask(id: ID!): WebinyBackgroundTaskDeleteResponse!
|
|
228
228
|
}
|