@webiny/tasks 6.3.0-beta.4 → 6.4.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/context.js +31 -43
- package/context.js.map +1 -1
- package/crud/TaskLogPrivateModel.js +33 -27
- package/crud/TaskLogPrivateModel.js.map +1 -1
- package/crud/TaskPrivateModel.js +48 -39
- package/crud/TaskPrivateModel.js.map +1 -1
- package/crud/cleanupTaskSubtree.js +55 -69
- package/crud/cleanupTaskSubtree.js.map +1 -1
- package/crud/crud.tasks.js +289 -352
- package/crud/crud.tasks.js.map +1 -1
- package/crud/definition.tasks.js +13 -16
- package/crud/definition.tasks.js.map +1 -1
- package/crud/service.tasks.js +119 -155
- package/crud/service.tasks.js.map +1 -1
- package/decorators/RunnableTaskDecorator.js +61 -77
- package/decorators/RunnableTaskDecorator.js.map +1 -1
- package/decorators/SelfCleaningTaskDecorator.js +75 -89
- package/decorators/SelfCleaningTaskDecorator.js.map +1 -1
- package/domain/errors.js +35 -39
- package/domain/errors.js.map +1 -1
- package/events/TaskAfterCreateEvent.js +8 -5
- package/events/TaskAfterCreateEvent.js.map +1 -1
- package/events/TaskAfterDeleteEvent.js +8 -5
- package/events/TaskAfterDeleteEvent.js.map +1 -1
- package/events/TaskAfterUpdateEvent.js +8 -5
- package/events/TaskAfterUpdateEvent.js.map +1 -1
- package/events/TaskBeforeCreateEvent.js +8 -5
- package/events/TaskBeforeCreateEvent.js.map +1 -1
- package/events/TaskBeforeDeleteEvent.js +8 -5
- package/events/TaskBeforeDeleteEvent.js.map +1 -1
- package/events/TaskBeforeUpdateEvent.js +8 -5
- package/events/TaskBeforeUpdateEvent.js.map +1 -1
- package/events/abstractions.js +7 -36
- package/events/abstractions.js.map +1 -1
- package/events/index.js +0 -2
- package/features/AbortTask/AbortTaskUseCase.js +9 -8
- package/features/AbortTask/AbortTaskUseCase.js.map +1 -1
- package/features/AbortTask/abstractions.js +2 -1
- package/features/AbortTask/abstractions.js.map +1 -1
- package/features/AbortTask/feature.js +6 -5
- package/features/AbortTask/feature.js.map +1 -1
- package/features/AbortTask/index.js +0 -2
- package/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js +8 -7
- package/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js.map +1 -1
- package/features/CleanupTaskSubtree/abstractions.js +2 -1
- package/features/CleanupTaskSubtree/abstractions.js.map +1 -1
- package/features/CleanupTaskSubtree/index.js +0 -2
- package/features/GetTask/GetTaskUseCase.js +8 -7
- package/features/GetTask/GetTaskUseCase.js.map +1 -1
- package/features/GetTask/abstractions.js +2 -1
- package/features/GetTask/abstractions.js.map +1 -1
- package/features/GetTask/feature.js +6 -5
- package/features/GetTask/feature.js.map +1 -1
- package/features/GetTask/index.js +0 -2
- package/features/GetTaskDefinition/GetTaskDefinitionUseCase.js +18 -16
- package/features/GetTaskDefinition/GetTaskDefinitionUseCase.js.map +1 -1
- package/features/GetTaskDefinition/abstractions.js +2 -1
- package/features/GetTaskDefinition/abstractions.js.map +1 -1
- package/features/GetTaskDefinition/feature.js +6 -5
- package/features/GetTaskDefinition/feature.js.map +1 -1
- package/features/GetTaskDefinition/index.js +0 -2
- package/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.js +18 -12
- package/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.js.map +1 -1
- package/features/ListTaskDefinitions/abstractions.js +2 -1
- package/features/ListTaskDefinitions/abstractions.js.map +1 -1
- package/features/ListTaskDefinitions/feature.js +6 -5
- package/features/ListTaskDefinitions/feature.js.map +1 -1
- package/features/ListTaskDefinitions/index.js +0 -2
- package/features/ListTasks/ListTasksUseCase.js +8 -7
- package/features/ListTasks/ListTasksUseCase.js.map +1 -1
- package/features/ListTasks/abstractions.js +2 -1
- package/features/ListTasks/abstractions.js.map +1 -1
- package/features/ListTasks/feature.js +6 -5
- package/features/ListTasks/feature.js.map +1 -1
- package/features/ListTasks/index.js +0 -2
- package/features/TaskController/TaskController.js +60 -60
- package/features/TaskController/TaskController.js.map +1 -1
- package/features/TaskController/augmentation.js +0 -3
- package/features/TaskController/index.js +0 -5
- package/features/TaskExecutionContext/TaskExecutionContext.js +38 -45
- package/features/TaskExecutionContext/TaskExecutionContext.js.map +1 -1
- package/features/TaskExecutionContext/abstractions.js +2 -10
- package/features/TaskExecutionContext/abstractions.js.map +1 -1
- package/features/TaskExecutionContext/feature.js +6 -5
- package/features/TaskExecutionContext/feature.js.map +1 -1
- package/features/TaskExecutionContext/index.js +0 -2
- package/features/TriggerTask/TriggerTaskUseCase.js +9 -8
- package/features/TriggerTask/TriggerTaskUseCase.js.map +1 -1
- package/features/TriggerTask/abstractions.js +2 -1
- package/features/TriggerTask/abstractions.js.map +1 -1
- package/features/TriggerTask/feature.js +6 -5
- package/features/TriggerTask/feature.js.map +1 -1
- package/features/TriggerTask/index.js +0 -2
- package/global.js +0 -2
- package/graphql/checkPermissions.js +16 -35
- package/graphql/checkPermissions.js.map +1 -1
- package/graphql/index.js +154 -187
- package/graphql/index.js.map +1 -1
- package/graphql/utils.js +15 -14
- package/graphql/utils.js.map +1 -1
- package/handler/index.js +46 -53
- package/handler/index.js.map +1 -1
- package/handler/register.js +7 -15
- package/handler/register.js.map +1 -1
- package/handler/types.js +0 -3
- package/index.js +2 -4
- package/package.json +17 -17
- package/plugins/TaskServicePlugin.js +9 -6
- package/plugins/TaskServicePlugin.js.map +1 -1
- package/plugins/index.js +0 -2
- package/response/DatabaseResponse.js +113 -132
- package/response/DatabaseResponse.js.map +1 -1
- package/response/Response.js +78 -96
- package/response/Response.js.map +1 -1
- package/response/ResponseAbortedResult.js +8 -7
- package/response/ResponseAbortedResult.js.map +1 -1
- package/response/ResponseContinueResult.js +12 -14
- package/response/ResponseContinueResult.js.map +1 -1
- package/response/ResponseDoneResult.js +10 -9
- package/response/ResponseDoneResult.js.map +1 -1
- package/response/ResponseErrorResult.js +9 -8
- package/response/ResponseErrorResult.js.map +1 -1
- package/response/TaskResponse.js +44 -64
- package/response/TaskResponse.js.map +1 -1
- package/response/abstractions/Response.js +0 -3
- package/response/abstractions/ResponseAbortedResult.js +0 -3
- package/response/abstractions/ResponseBaseResult.js +0 -3
- package/response/abstractions/ResponseContinueResult.js +0 -3
- package/response/abstractions/ResponseDoneResult.js +0 -3
- package/response/abstractions/ResponseErrorResult.js +0 -3
- package/response/abstractions/TaskResponse.js +0 -3
- package/response/abstractions/index.js +0 -2
- package/response/index.js +0 -2
- package/runner/TaskControl.js +150 -221
- package/runner/TaskControl.js.map +1 -1
- package/runner/TaskEventValidation.js +12 -13
- package/runner/TaskEventValidation.js.map +1 -1
- package/runner/TaskManager.js +68 -106
- package/runner/TaskManager.js.map +1 -1
- package/runner/TaskManagerStore.js +90 -139
- package/runner/TaskManagerStore.js.map +1 -1
- package/runner/TaskRunner.js +45 -65
- package/runner/TaskRunner.js.map +1 -1
- package/runner/abstractions/TaskControl.js +0 -3
- package/runner/abstractions/TaskEventValidation.js +0 -3
- package/runner/abstractions/TaskManager.js +0 -3
- package/runner/abstractions/TaskManagerStore.js +0 -3
- package/runner/abstractions/TaskRunner.js +0 -3
- package/runner/abstractions/index.js +0 -2
- package/runner/index.js +0 -2
- package/service/EventBridgeEventTransportPlugin.js +43 -42
- package/service/EventBridgeEventTransportPlugin.js.map +1 -1
- package/service/StepFunctionServicePlugin.js +65 -66
- package/service/StepFunctionServicePlugin.js.map +1 -1
- package/service/createService.js +10 -13
- package/service/createService.js.map +1 -1
- package/service/index.js +7 -5
- package/service/index.js.map +1 -1
- package/tasks/testingRunTask.js +11 -10
- package/tasks/testingRunTask.js.map +1 -1
- package/types.js +12 -12
- package/types.js.map +1 -1
- package/utils/ObjectUpdater.js +25 -31
- package/utils/ObjectUpdater.js.map +1 -1
- package/utils/getErrorProperties.js +5 -4
- package/utils/getErrorProperties.js.map +1 -1
- package/utils/getObjectProperties.js +8 -15
- package/utils/getObjectProperties.js.map +1 -1
- package/utils/index.js +0 -2
- package/utils/normalizeSelfCleanup.js +13 -12
- package/utils/normalizeSelfCleanup.js.map +1 -1
- package/events/index.js.map +0 -1
- package/features/AbortTask/index.js.map +0 -1
- package/features/CleanupTaskSubtree/index.js.map +0 -1
- package/features/GetTask/index.js.map +0 -1
- package/features/GetTaskDefinition/index.js.map +0 -1
- package/features/ListTaskDefinitions/index.js.map +0 -1
- package/features/ListTasks/index.js.map +0 -1
- package/features/TaskController/augmentation.js.map +0 -1
- package/features/TaskController/index.js.map +0 -1
- package/features/TaskExecutionContext/index.js.map +0 -1
- package/features/TriggerTask/index.js.map +0 -1
- package/global.js.map +0 -1
- package/handler/types.js.map +0 -1
- package/index.js.map +0 -1
- package/plugins/index.js.map +0 -1
- package/response/abstractions/Response.js.map +0 -1
- package/response/abstractions/ResponseAbortedResult.js.map +0 -1
- package/response/abstractions/ResponseBaseResult.js.map +0 -1
- package/response/abstractions/ResponseContinueResult.js.map +0 -1
- package/response/abstractions/ResponseDoneResult.js.map +0 -1
- package/response/abstractions/ResponseErrorResult.js.map +0 -1
- package/response/abstractions/TaskResponse.js.map +0 -1
- package/response/abstractions/index.js.map +0 -1
- package/response/index.js.map +0 -1
- package/runner/abstractions/TaskControl.js.map +0 -1
- package/runner/abstractions/TaskEventValidation.js.map +0 -1
- package/runner/abstractions/TaskManager.js.map +0 -1
- package/runner/abstractions/TaskManagerStore.js.map +0 -1
- package/runner/abstractions/TaskRunner.js.map +0 -1
- package/runner/abstractions/index.js.map +0 -1
- package/runner/index.js.map +0 -1
- package/utils/index.js.map +0 -1
package/handler/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"handler/index.js","sources":["../../src/handler/index.ts"],"sourcesContent":["import { createHandler as createBaseHandler } from \"@webiny/handler\";\nimport { registerDefaultPlugins } from \"@webiny/handler-aws/plugins/index.js\";\nimport { execute } from \"@webiny/handler-aws/execute.js\";\nimport type {\n APIGatewayProxyResult,\n Context as LambdaContext\n} from \"@webiny/aws-sdk/types/index.js\";\nimport type { Context } from \"~/types.js\";\nimport type { HandlerParams, ITaskRawEvent } from \"~/handler/types.js\";\nimport { TaskRunner } from \"~/runner/index.js\";\nimport type WebinyError from \"@webiny/error\";\nimport { timerFactory } from \"@webiny/handler-aws/utils/index.js\";\nimport { TaskEventValidation } from \"~/runner/TaskEventValidation.js\";\nimport { TaskResultStatus } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\n\nexport interface HandlerCallable {\n (event: ITaskRawEvent, context: LambdaContext): Promise<APIGatewayProxyResult>;\n}\n\nconst url = \"/webiny-background-task-event\";\n\nexport const createHandler = (params: HandlerParams): HandlerCallable => {\n return async (event, context) => {\n const app = createBaseHandler({\n ...params,\n options: {\n logger: params.debug === true,\n ...(params.options || {})\n }\n });\n\n registerDefaultPlugins(app.webiny);\n\n app.addHook(\"preSerialization\", async (_, __, payload: Record<string, any>) => {\n if (!payload.body) {\n return payload;\n }\n return payload.body;\n });\n\n await app.register(async taskApp => {\n taskApp.setErrorHandler<WebinyError>(async (error, _, reply) => {\n app.__webiny_raw_result = {\n error: {\n message: error.message,\n code: error.code,\n data: error.data\n },\n status: TaskResultStatus.ERROR\n };\n return reply.send();\n });\n\n taskApp.post(url, async (_, reply) => {\n const handler = new TaskRunner(\n /**\n * We can safely cast because we know that the context is of type tasks/Context\n */\n app.webiny as Context,\n timerFactory(context),\n new TaskEventValidation()\n );\n\n app.__webiny_raw_result = await handler.run(event);\n return reply.send({});\n });\n });\n\n return execute({\n app,\n url,\n payload: {\n ...event,\n headers: {\n [\"x-tenant\"]: event.tenant,\n [\"x-webiny-cms-endpoint\"]: event.endpoint,\n [\"accept-language\"]: \"en-US\"\n }\n }\n });\n };\n};\n"],"names":["url","createHandler","params","event","context","app","createBaseHandler","registerDefaultPlugins","_","__","payload","taskApp","error","reply","TaskResultStatus","handler","TaskRunner","timerFactory","TaskEventValidation","execute"],"mappings":";;;;;;;AAmBA,MAAMA,MAAM;AAEL,MAAMC,wBAAgB,CAACC,SACnB,OAAOC,OAAOC;QACjB,MAAMC,MAAMC,cAAkB;YAC1B,GAAGJ,MAAM;YACT,SAAS;gBACL,QAAQA,AAAiB,SAAjBA,OAAO,KAAK;gBACpB,GAAIA,OAAO,OAAO,IAAI,CAAC,CAAC;YAC5B;QACJ;QAEAK,uBAAuBF,IAAI,MAAM;QAEjCA,IAAI,OAAO,CAAC,oBAAoB,OAAOG,GAAGC,IAAIC;YAC1C,IAAI,CAACA,QAAQ,IAAI,EACb,OAAOA;YAEX,OAAOA,QAAQ,IAAI;QACvB;QAEA,MAAML,IAAI,QAAQ,CAAC,OAAMM;YACrBA,QAAQ,eAAe,CAAc,OAAOC,OAAOJ,GAAGK;gBAClDR,IAAI,mBAAmB,GAAG;oBACtB,OAAO;wBACH,SAASO,MAAM,OAAO;wBACtB,MAAMA,MAAM,IAAI;wBAChB,MAAMA,MAAM,IAAI;oBACpB;oBACA,QAAQE,iBAAiB,KAAK;gBAClC;gBACA,OAAOD,MAAM,IAAI;YACrB;YAEAF,QAAQ,IAAI,CAACX,KAAK,OAAOQ,GAAGK;gBACxB,MAAME,UAAU,IAAIC,WAIhBX,IAAI,MAAM,EACVY,aAAab,UACb,IAAIc;gBAGRb,IAAI,mBAAmB,GAAG,MAAMU,QAAQ,GAAG,CAACZ;gBAC5C,OAAOU,MAAM,IAAI,CAAC,CAAC;YACvB;QACJ;QAEA,OAAOM,QAAQ;YACXd;YACAL,KAAAA;YACA,SAAS;gBACL,GAAGG,KAAK;gBACR,SAAS;oBACL,CAAC,WAAW,EAAEA,MAAM,MAAM;oBAC1B,CAAC,wBAAwB,EAAEA,MAAM,QAAQ;oBACzC,CAAC,kBAAkB,EAAE;gBACzB;YACJ;QACJ;IACJ"}
|
package/handler/register.js
CHANGED
|
@@ -1,23 +1,15 @@
|
|
|
1
1
|
import { registry } from "@webiny/handler-aws/registry.js";
|
|
2
2
|
import { createSourceHandler } from "@webiny/handler-aws";
|
|
3
3
|
const handler = createSourceHandler({
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
event,
|
|
11
|
-
context
|
|
12
|
-
}) => {
|
|
13
|
-
const {
|
|
14
|
-
createHandler
|
|
15
|
-
} = await import(/* webpackChunkName: "tasks.handler.createHandler" */"./index.js");
|
|
16
|
-
return createHandler(params)(event.payload, context);
|
|
17
|
-
}
|
|
4
|
+
name: "handler-webiny-background-task",
|
|
5
|
+
canUse: (event)=>!!event.payload?.webinyTaskId,
|
|
6
|
+
handle: async ({ params, event, context })=>{
|
|
7
|
+
const { createHandler } = await import("./index.js");
|
|
8
|
+
return createHandler(params)(event.payload, context);
|
|
9
|
+
}
|
|
18
10
|
});
|
|
19
11
|
registry.register(handler, {
|
|
20
|
-
|
|
12
|
+
silent: true
|
|
21
13
|
});
|
|
22
14
|
|
|
23
15
|
//# sourceMappingURL=register.js.map
|
package/handler/register.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"handler/register.js","sources":["../../src/handler/register.ts"],"sourcesContent":["import { registry } from \"@webiny/handler-aws/registry.js\";\nimport { createSourceHandler } from \"@webiny/handler-aws\";\nimport type { HandlerParams, IIncomingEvent, ITaskEvent } from \"./types.js\";\n\nconst handler = createSourceHandler<IIncomingEvent<ITaskEvent>, HandlerParams>({\n name: \"handler-webiny-background-task\",\n canUse: event => {\n return !!event.payload?.webinyTaskId;\n },\n handle: async ({ params, event, context }) => {\n const { createHandler } = await import(\n /* webpackChunkName: \"tasks.handler.createHandler\" */\n \"./index.js\"\n );\n return createHandler(params)(event.payload, context);\n }\n});\n\nregistry.register(handler, {\n silent: true\n});\n"],"names":["handler","createSourceHandler","event","params","context","createHandler","registry"],"mappings":";;AAIA,MAAMA,UAAUC,oBAA+D;IAC3E,MAAM;IACN,QAAQC,CAAAA,QACG,CAAC,CAACA,MAAM,OAAO,EAAE;IAE5B,QAAQ,OAAO,EAAEC,MAAM,EAAED,KAAK,EAAEE,OAAO,EAAE;QACrC,MAAM,EAAEC,aAAa,EAAE,GAAG,MAAM,MAAM,CAAN;QAIhC,OAAOA,cAAcF,QAAQD,MAAM,OAAO,EAAEE;IAChD;AACJ;AAEAE,SAAS,QAAQ,CAACN,SAAS;IACvB,QAAQ;AACZ"}
|
package/handler/types.js
CHANGED
package/index.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import "./handler/register.js";
|
|
2
|
-
export { createBackgroundTaskGraphQL } from "./graphql/index.js";
|
|
3
|
-
export { createBackgroundTaskContext } from "./context.js";
|
|
4
2
|
export * from "./response/index.js";
|
|
5
3
|
export * from "./types.js";
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
export { createBackgroundTaskGraphQL } from "./graphql/index.js";
|
|
5
|
+
export { createBackgroundTaskContext } from "./context.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/tasks",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.4.0-beta.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./index.js",
|
|
@@ -16,34 +16,34 @@
|
|
|
16
16
|
],
|
|
17
17
|
"license": "MIT",
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@webiny/api": "6.
|
|
20
|
-
"@webiny/api-core": "6.
|
|
21
|
-
"@webiny/api-headless-cms": "6.
|
|
22
|
-
"@webiny/aws-sdk": "6.
|
|
23
|
-
"@webiny/error": "6.
|
|
24
|
-
"@webiny/feature": "6.
|
|
25
|
-
"@webiny/handler": "6.
|
|
26
|
-
"@webiny/handler-aws": "6.
|
|
27
|
-
"@webiny/handler-graphql": "6.
|
|
28
|
-
"@webiny/plugins": "6.
|
|
29
|
-
"@webiny/utils": "6.
|
|
19
|
+
"@webiny/api": "6.4.0-beta.0",
|
|
20
|
+
"@webiny/api-core": "6.4.0-beta.0",
|
|
21
|
+
"@webiny/api-headless-cms": "6.4.0-beta.0",
|
|
22
|
+
"@webiny/aws-sdk": "6.4.0-beta.0",
|
|
23
|
+
"@webiny/error": "6.4.0-beta.0",
|
|
24
|
+
"@webiny/feature": "6.4.0-beta.0",
|
|
25
|
+
"@webiny/handler": "6.4.0-beta.0",
|
|
26
|
+
"@webiny/handler-aws": "6.4.0-beta.0",
|
|
27
|
+
"@webiny/handler-graphql": "6.4.0-beta.0",
|
|
28
|
+
"@webiny/plugins": "6.4.0-beta.0",
|
|
29
|
+
"@webiny/utils": "6.4.0-beta.0",
|
|
30
30
|
"deep-equal": "2.2.3",
|
|
31
31
|
"lodash": "4.18.1",
|
|
32
32
|
"object-merge-advanced": "14.1.3",
|
|
33
33
|
"object-sizeof": "2.6.5",
|
|
34
|
-
"zod": "4.3
|
|
34
|
+
"zod": "4.4.3"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@webiny/build-tools": "6.
|
|
38
|
-
"@webiny/project-utils": "6.
|
|
37
|
+
"@webiny/build-tools": "6.4.0-beta.0",
|
|
38
|
+
"@webiny/project-utils": "6.4.0-beta.0",
|
|
39
39
|
"rimraf": "6.1.3",
|
|
40
40
|
"type-fest": "5.6.0",
|
|
41
41
|
"typescript": "6.0.3",
|
|
42
|
-
"vitest": "4.1.
|
|
42
|
+
"vitest": "4.1.6"
|
|
43
43
|
},
|
|
44
44
|
"publishConfig": {
|
|
45
45
|
"access": "public",
|
|
46
46
|
"directory": "dist"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "a545d7529828af07d08d49c3da1bcb967483b9ce"
|
|
49
49
|
}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { Plugin } from "@webiny/plugins";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
class TaskServicePlugin extends Plugin {
|
|
3
|
+
static{
|
|
4
|
+
this.type = "tasks.taskService";
|
|
5
|
+
}
|
|
6
|
+
constructor(params){
|
|
7
|
+
super();
|
|
8
|
+
this.default = !!params?.default;
|
|
9
|
+
}
|
|
8
10
|
}
|
|
11
|
+
export { TaskServicePlugin };
|
|
9
12
|
|
|
10
13
|
//# sourceMappingURL=TaskServicePlugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"plugins/TaskServicePlugin.js","sources":["../../src/plugins/TaskServicePlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport type { ITask } from \"~/types.js\";\n\nexport interface ITaskServiceCreatePluginParams {\n getTenant(): string;\n}\n\nexport type ITaskServiceTask = Pick<ITask, \"id\" | \"definitionId\">;\n\nexport interface ITaskService {\n send(task: ITaskServiceTask, delay: number): Promise<unknown | null>;\n fetch(task: ITask): Promise<unknown | null>;\n}\n\nexport interface ITaskServicePluginParams {\n default?: boolean;\n}\n\nexport abstract class TaskServicePlugin extends Plugin {\n public static override readonly type: string = \"tasks.taskService\";\n public readonly default: boolean;\n\n public constructor(params?: ITaskServicePluginParams) {\n super();\n this.default = !!params?.default;\n }\n\n public abstract createService(params: ITaskServiceCreatePluginParams): ITaskService;\n}\n"],"names":["TaskServicePlugin","Plugin","params"],"mappings":";AAkBO,MAAeA,0BAA0BC;;aACZ,IAAI,GAAW;;IAG/C,YAAmBC,MAAiC,CAAE;QAClD,KAAK;QACL,IAAI,CAAC,OAAO,GAAG,CAAC,CAACA,QAAQ;IAC7B;AAGJ"}
|
package/plugins/index.js
CHANGED
|
@@ -2,145 +2,126 @@ import { TaskDataStatus } from "../types.js";
|
|
|
2
2
|
import { NotFoundError } from "@webiny/handler-graphql";
|
|
3
3
|
import { getErrorProperties } from "../utils/getErrorProperties.js";
|
|
4
4
|
import { TaskResultStatus } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
from(result) {
|
|
11
|
-
switch (result.status) {
|
|
12
|
-
case TaskResultStatus.DONE:
|
|
13
|
-
return this.done(result);
|
|
14
|
-
case TaskResultStatus.CONTINUE:
|
|
15
|
-
return this.continue(result);
|
|
16
|
-
case TaskResultStatus.ERROR:
|
|
17
|
-
return this.error(result);
|
|
18
|
-
case TaskResultStatus.ABORTED:
|
|
19
|
-
return this.aborted();
|
|
5
|
+
class DatabaseResponse {
|
|
6
|
+
constructor(response, store){
|
|
7
|
+
this.response = response;
|
|
8
|
+
this.store = store;
|
|
20
9
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
finishedOn: new Date().toISOString(),
|
|
32
|
-
output
|
|
33
|
-
});
|
|
34
|
-
await this.store.addInfoLog({
|
|
35
|
-
message: message || "Task done."
|
|
36
|
-
});
|
|
37
|
-
await this.store.save();
|
|
38
|
-
} catch (ex) {
|
|
39
|
-
message = `Task done, but failed to update task log. (${ex.message || "unknown"})`;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Default behavior is to return the done response.
|
|
43
|
-
*/
|
|
44
|
-
return this.response.done({
|
|
45
|
-
...rest,
|
|
46
|
-
message,
|
|
47
|
-
output
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
async aborted() {
|
|
51
|
-
return this.response.aborted();
|
|
52
|
-
}
|
|
53
|
-
async continue(params) {
|
|
54
|
-
try {
|
|
55
|
-
const task = this.store.getTask();
|
|
56
|
-
await this.store.updateTask({
|
|
57
|
-
input: {
|
|
58
|
-
...task.input,
|
|
59
|
-
...params.input
|
|
60
|
-
},
|
|
61
|
-
taskStatus: TaskDataStatus.RUNNING
|
|
62
|
-
});
|
|
63
|
-
await this.store.addInfoLog({
|
|
64
|
-
message: "Task continuing.",
|
|
65
|
-
data: params.input
|
|
66
|
-
});
|
|
67
|
-
await this.store.save();
|
|
68
|
-
} catch (ex) {
|
|
69
|
-
/**
|
|
70
|
-
* If task was not found, we just return the error.
|
|
71
|
-
*/
|
|
72
|
-
if (ex instanceof NotFoundError) {
|
|
73
|
-
return this.response.error({
|
|
74
|
-
error: {
|
|
75
|
-
message: ex.message || `Task not found.`,
|
|
76
|
-
code: ex.code || "TASK_NOT_FOUND",
|
|
77
|
-
data: {
|
|
78
|
-
...ex.data,
|
|
79
|
-
input: this.store.getInput()
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Otherwise, we store the error and return it...
|
|
86
|
-
*/
|
|
87
|
-
return this.error({
|
|
88
|
-
error: {
|
|
89
|
-
message: `Failed to update task input: ${ex.message || "unknown error"}`,
|
|
90
|
-
code: ex.code || "TASK_UPDATE_ERROR"
|
|
10
|
+
from(result) {
|
|
11
|
+
switch(result.status){
|
|
12
|
+
case TaskResultStatus.DONE:
|
|
13
|
+
return this.done(result);
|
|
14
|
+
case TaskResultStatus.CONTINUE:
|
|
15
|
+
return this.continue(result);
|
|
16
|
+
case TaskResultStatus.ERROR:
|
|
17
|
+
return this.error(result);
|
|
18
|
+
case TaskResultStatus.ABORTED:
|
|
19
|
+
return this.aborted();
|
|
91
20
|
}
|
|
92
|
-
});
|
|
93
21
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
22
|
+
async done(params) {
|
|
23
|
+
const { output, ...rest } = params;
|
|
24
|
+
let message = params.message;
|
|
25
|
+
try {
|
|
26
|
+
await this.store.updateTask({
|
|
27
|
+
taskStatus: TaskDataStatus.SUCCESS,
|
|
28
|
+
finishedOn: new Date().toISOString(),
|
|
29
|
+
output
|
|
30
|
+
});
|
|
31
|
+
await this.store.addInfoLog({
|
|
32
|
+
message: message || "Task done."
|
|
33
|
+
});
|
|
34
|
+
await this.store.save();
|
|
35
|
+
} catch (ex) {
|
|
36
|
+
message = `Task done, but failed to update task log. (${ex.message || "unknown"})`;
|
|
107
37
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
38
|
+
return this.response.done({
|
|
39
|
+
...rest,
|
|
40
|
+
message,
|
|
41
|
+
output
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
async aborted() {
|
|
45
|
+
return this.response.aborted();
|
|
46
|
+
}
|
|
47
|
+
async continue(params) {
|
|
48
|
+
try {
|
|
49
|
+
const task = this.store.getTask();
|
|
50
|
+
await this.store.updateTask({
|
|
51
|
+
input: {
|
|
52
|
+
...task.input,
|
|
53
|
+
...params.input
|
|
54
|
+
},
|
|
55
|
+
taskStatus: TaskDataStatus.RUNNING
|
|
56
|
+
});
|
|
57
|
+
await this.store.addInfoLog({
|
|
58
|
+
message: "Task continuing.",
|
|
59
|
+
data: params.input
|
|
60
|
+
});
|
|
61
|
+
await this.store.save();
|
|
62
|
+
} catch (ex) {
|
|
63
|
+
if (ex instanceof NotFoundError) return this.response.error({
|
|
64
|
+
error: {
|
|
65
|
+
message: ex.message || "Task not found.",
|
|
66
|
+
code: ex.code || "TASK_NOT_FOUND",
|
|
67
|
+
data: {
|
|
68
|
+
...ex.data,
|
|
69
|
+
input: this.store.getInput()
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
return this.error({
|
|
74
|
+
error: {
|
|
75
|
+
message: `Failed to update task input: ${ex.message || "unknown error"}`,
|
|
76
|
+
code: ex.code || "TASK_UPDATE_ERROR"
|
|
77
|
+
}
|
|
78
|
+
});
|
|
127
79
|
}
|
|
128
|
-
|
|
80
|
+
return this.response.continue(params);
|
|
129
81
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
82
|
+
async error(params) {
|
|
83
|
+
const error = params.error instanceof Error ? getErrorProperties(params.error) : params.error;
|
|
84
|
+
try {
|
|
85
|
+
await this.store.updateTask({
|
|
86
|
+
taskStatus: TaskDataStatus.FAILED,
|
|
87
|
+
finishedOn: new Date().toISOString(),
|
|
88
|
+
output: {
|
|
89
|
+
error
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
await this.store.addErrorLog({
|
|
93
|
+
message: params.error.message,
|
|
94
|
+
data: this.store.getInput(),
|
|
95
|
+
error
|
|
96
|
+
});
|
|
97
|
+
await this.store.save();
|
|
98
|
+
} catch (ex) {
|
|
99
|
+
return this.response.error({
|
|
100
|
+
...params,
|
|
101
|
+
error: {
|
|
102
|
+
...error,
|
|
103
|
+
message: ex.message || error.message,
|
|
104
|
+
code: ex.code || error.code,
|
|
105
|
+
data: {
|
|
106
|
+
...error.data,
|
|
107
|
+
...ex.data,
|
|
108
|
+
input: this.store.getInput()
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
});
|
|
140
112
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
113
|
+
return this.response.error({
|
|
114
|
+
...params,
|
|
115
|
+
error: {
|
|
116
|
+
...params.error,
|
|
117
|
+
data: {
|
|
118
|
+
...error.data,
|
|
119
|
+
input: this.store.getInput()
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
144
124
|
}
|
|
125
|
+
export { DatabaseResponse };
|
|
145
126
|
|
|
146
127
|
//# sourceMappingURL=DatabaseResponse.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"response/DatabaseResponse.js","sources":["../../src/response/DatabaseResponse.ts"],"sourcesContent":["import { TaskDataStatus } from \"~/types.js\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport type {\n IResponse,\n IResponseAsync,\n IResponseContinueParams,\n IResponseContinueResult,\n IResponseDoneParams,\n IResponseDoneResult,\n IResponseErrorParams,\n IResponseErrorResult,\n IResponseResult\n} from \"./abstractions/index.js\";\nimport type { ITaskManagerStorePrivate } from \"~/runner/abstractions/index.js\";\nimport { getErrorProperties } from \"~/utils/getErrorProperties.js\";\nimport { TaskResultStatus } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\n\nexport class DatabaseResponse implements IResponseAsync {\n public readonly response: IResponse;\n\n private readonly store: ITaskManagerStorePrivate;\n\n public constructor(response: IResponse, store: ITaskManagerStorePrivate) {\n this.response = response;\n this.store = store;\n }\n\n public from(result: IResponseResult): Promise<IResponseResult> {\n switch (result.status) {\n case TaskResultStatus.DONE:\n return this.done(result);\n case TaskResultStatus.CONTINUE:\n return this.continue(result);\n case TaskResultStatus.ERROR:\n return this.error(result);\n case TaskResultStatus.ABORTED:\n return this.aborted();\n }\n }\n\n public async done(params: IResponseDoneParams): Promise<IResponseDoneResult> {\n const { output, ...rest } = params;\n let message = params.message;\n try {\n await this.store.updateTask({\n taskStatus: TaskDataStatus.SUCCESS,\n finishedOn: new Date().toISOString(),\n output\n });\n await this.store.addInfoLog({\n message: message || \"Task done.\"\n });\n await this.store.save();\n } catch (ex) {\n message = `Task done, but failed to update task log. (${ex.message || \"unknown\"})`;\n }\n /**\n * Default behavior is to return the done response.\n */\n return this.response.done({\n ...rest,\n message,\n output\n });\n }\n\n public async aborted() {\n return this.response.aborted();\n }\n\n public async continue(\n params: IResponseContinueParams\n ): Promise<IResponseContinueResult | IResponseErrorResult> {\n try {\n const task = this.store.getTask();\n await this.store.updateTask({\n input: {\n ...task.input,\n ...params.input\n },\n taskStatus: TaskDataStatus.RUNNING\n });\n await this.store.addInfoLog({\n message: \"Task continuing.\",\n data: params.input\n });\n await this.store.save();\n } catch (ex) {\n /**\n * If task was not found, we just return the error.\n */\n if (ex instanceof NotFoundError) {\n return this.response.error({\n error: {\n message: ex.message || `Task not found.`,\n code: ex.code || \"TASK_NOT_FOUND\",\n data: {\n ...ex.data,\n input: this.store.getInput()\n }\n }\n });\n }\n /**\n * Otherwise, we store the error and return it...\n */\n return this.error({\n error: {\n message: `Failed to update task input: ${ex.message || \"unknown error\"}`,\n code: ex.code || \"TASK_UPDATE_ERROR\"\n }\n });\n }\n /**\n * Default behavior is to return the continue response.\n */\n return this.response.continue(params);\n }\n\n public async error(params: IResponseErrorParams): Promise<IResponseErrorResult> {\n const error =\n params.error instanceof Error ? getErrorProperties(params.error) : params.error;\n try {\n await this.store.updateTask({\n taskStatus: TaskDataStatus.FAILED,\n finishedOn: new Date().toISOString(),\n output: {\n error\n }\n });\n await this.store.addErrorLog({\n message: params.error.message,\n data: this.store.getInput(),\n error\n });\n await this.store.save();\n } catch (ex) {\n return this.response.error({\n ...params,\n error: {\n ...error,\n message: ex.message || error.message,\n code: ex.code || error.code,\n data: {\n ...error.data,\n ...ex.data,\n input: this.store.getInput()\n }\n }\n });\n }\n /**\n * Default behavior is to return the error response.\n */\n return this.response.error({\n ...params,\n error: {\n ...params.error,\n data: {\n ...error.data,\n input: this.store.getInput()\n }\n }\n });\n }\n}\n"],"names":["DatabaseResponse","response","store","result","TaskResultStatus","params","output","rest","message","TaskDataStatus","Date","ex","task","NotFoundError","error","Error","getErrorProperties"],"mappings":"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"}
|