@webiny/tasks 5.42.1-beta.1 → 5.42.1-beta.3
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/package.json +18 -18
- package/service/EventBridgeEventTransportPlugin.js +2 -1
- package/service/EventBridgeEventTransportPlugin.js.map +1 -1
- package/service/StepFunctionServicePlugin.js +4 -1
- package/service/StepFunctionServicePlugin.js.map +1 -1
- package/task/plugin.d.ts +2 -1
- package/task/plugin.js +3 -0
- package/task/plugin.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/tasks",
|
|
3
|
-
"version": "5.42.1-beta.
|
|
3
|
+
"version": "5.42.1-beta.3",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -12,16 +12,16 @@
|
|
|
12
12
|
],
|
|
13
13
|
"license": "MIT",
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@webiny/api": "5.42.1-beta.
|
|
16
|
-
"@webiny/api-headless-cms": "5.42.1-beta.
|
|
17
|
-
"@webiny/aws-sdk": "5.42.1-beta.
|
|
18
|
-
"@webiny/error": "5.42.1-beta.
|
|
19
|
-
"@webiny/handler": "5.42.1-beta.
|
|
20
|
-
"@webiny/handler-aws": "5.42.1-beta.
|
|
21
|
-
"@webiny/handler-graphql": "5.42.1-beta.
|
|
22
|
-
"@webiny/plugins": "5.42.1-beta.
|
|
23
|
-
"@webiny/pubsub": "5.42.1-beta.
|
|
24
|
-
"@webiny/utils": "5.42.1-beta.
|
|
15
|
+
"@webiny/api": "5.42.1-beta.3",
|
|
16
|
+
"@webiny/api-headless-cms": "5.42.1-beta.3",
|
|
17
|
+
"@webiny/aws-sdk": "5.42.1-beta.3",
|
|
18
|
+
"@webiny/error": "5.42.1-beta.3",
|
|
19
|
+
"@webiny/handler": "5.42.1-beta.3",
|
|
20
|
+
"@webiny/handler-aws": "5.42.1-beta.3",
|
|
21
|
+
"@webiny/handler-graphql": "5.42.1-beta.3",
|
|
22
|
+
"@webiny/plugins": "5.42.1-beta.3",
|
|
23
|
+
"@webiny/pubsub": "5.42.1-beta.3",
|
|
24
|
+
"@webiny/utils": "5.42.1-beta.3",
|
|
25
25
|
"deep-equal": "2.2.3",
|
|
26
26
|
"lodash": "4.17.21",
|
|
27
27
|
"object-merge-advanced": "12.1.0",
|
|
@@ -29,12 +29,12 @@
|
|
|
29
29
|
"zod": "3.23.8"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@webiny/api-i18n": "5.42.1-beta.
|
|
33
|
-
"@webiny/api-security": "5.42.1-beta.
|
|
34
|
-
"@webiny/api-tenancy": "5.42.1-beta.
|
|
35
|
-
"@webiny/api-wcp": "5.42.1-beta.
|
|
36
|
-
"@webiny/cli": "5.42.1-beta.
|
|
37
|
-
"@webiny/project-utils": "5.42.1-beta.
|
|
32
|
+
"@webiny/api-i18n": "5.42.1-beta.3",
|
|
33
|
+
"@webiny/api-security": "5.42.1-beta.3",
|
|
34
|
+
"@webiny/api-tenancy": "5.42.1-beta.3",
|
|
35
|
+
"@webiny/api-wcp": "5.42.1-beta.3",
|
|
36
|
+
"@webiny/cli": "5.42.1-beta.3",
|
|
37
|
+
"@webiny/project-utils": "5.42.1-beta.3",
|
|
38
38
|
"rimraf": "6.0.1",
|
|
39
39
|
"ttypescript": "1.5.15",
|
|
40
40
|
"type-fest": "3.13.1",
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"build": "yarn webiny run build",
|
|
49
49
|
"watch": "yarn webiny run watch"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "f48143ded4859e333305e30d91b6e9df6692a9bf"
|
|
52
52
|
}
|
|
@@ -37,7 +37,8 @@ class EventBridgeService {
|
|
|
37
37
|
}]
|
|
38
38
|
});
|
|
39
39
|
try {
|
|
40
|
-
|
|
40
|
+
const result = await this.client.send(cmd);
|
|
41
|
+
return JSON.parse(JSON.stringify(result));
|
|
41
42
|
} catch (ex) {
|
|
42
43
|
throw new _error.WebinyError(ex.message || "Could not trigger task via Event Bridge!", ex.code || "TRIGGER_TASK_ERROR", {
|
|
43
44
|
event,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_plugins","require","_clientEventbridge","_error","EventBridgeService","constructor","params","client","EventBridgeClient","region","process","env","AWS_REGION","context","getTenant","getLocale","send","task","delay","event","webinyTaskId","id","webinyTaskDefinitionId","definitionId","tenant","locale","cmd","PutEventsCommand","Entries","Source","EventBusName","String","EVENT_BUS","DetailType","Detail","JSON","stringify","ex","WebinyError","message","code","data","fetch","EventBridgeEventTransportPlugin","TaskServicePlugin","name","createService","exports"],"sources":["EventBridgeEventTransportPlugin.ts"],"sourcesContent":["import {\n ITaskService,\n ITaskServiceCreatePluginParams,\n ITaskServiceTask,\n TaskServicePlugin\n} from \"~/plugins\";\nimport { Context, ITaskEventInput } from \"~/types\";\nimport type { PutEventsCommandOutput } from \"@webiny/aws-sdk/client-eventbridge\";\nimport { EventBridgeClient, PutEventsCommand } from \"@webiny/aws-sdk/client-eventbridge\";\nimport { WebinyError } from \"@webiny/error\";\nimport { GenericRecord } from \"@webiny/api/types\";\n\nclass EventBridgeService implements ITaskService {\n protected readonly context: Context;\n protected readonly getTenant: () => string;\n protected readonly getLocale: () => string;\n private readonly client: EventBridgeClient;\n\n public constructor(params: ITaskServiceCreatePluginParams) {\n this.client = new EventBridgeClient({\n region: process.env.AWS_REGION\n });\n this.context = params.context;\n this.getTenant = params.getTenant;\n this.getLocale = params.getLocale;\n }\n\n public async send(task: ITaskServiceTask, delay: number): Promise<PutEventsCommandOutput> {\n /**\n * The ITaskEvent is what our handler expect to get.\n * Endpoint and stateMachineId are added by the step function.\n */\n const event: ITaskEventInput = {\n webinyTaskId: task.id,\n webinyTaskDefinitionId: task.definitionId,\n tenant: this.getTenant(),\n locale: this.getLocale(),\n delay\n };\n\n const cmd = new PutEventsCommand({\n Entries: [\n {\n Source: \"webiny-api-tasks\",\n EventBusName: String(process.env.EVENT_BUS),\n DetailType: \"WebinyBackgroundTask\",\n Detail: JSON.stringify(event)\n }\n ]\n });\n try {\n
|
|
1
|
+
{"version":3,"names":["_plugins","require","_clientEventbridge","_error","EventBridgeService","constructor","params","client","EventBridgeClient","region","process","env","AWS_REGION","context","getTenant","getLocale","send","task","delay","event","webinyTaskId","id","webinyTaskDefinitionId","definitionId","tenant","locale","cmd","PutEventsCommand","Entries","Source","EventBusName","String","EVENT_BUS","DetailType","Detail","JSON","stringify","result","parse","ex","WebinyError","message","code","data","fetch","EventBridgeEventTransportPlugin","TaskServicePlugin","name","createService","exports"],"sources":["EventBridgeEventTransportPlugin.ts"],"sourcesContent":["import {\n ITaskService,\n ITaskServiceCreatePluginParams,\n ITaskServiceTask,\n TaskServicePlugin\n} from \"~/plugins\";\nimport { Context, ITaskEventInput } from \"~/types\";\nimport type { PutEventsCommandOutput } from \"@webiny/aws-sdk/client-eventbridge\";\nimport { EventBridgeClient, PutEventsCommand } from \"@webiny/aws-sdk/client-eventbridge\";\nimport { WebinyError } from \"@webiny/error\";\nimport { GenericRecord } from \"@webiny/api/types\";\n\nclass EventBridgeService implements ITaskService {\n protected readonly context: Context;\n protected readonly getTenant: () => string;\n protected readonly getLocale: () => string;\n private readonly client: EventBridgeClient;\n\n public constructor(params: ITaskServiceCreatePluginParams) {\n this.client = new EventBridgeClient({\n region: process.env.AWS_REGION\n });\n this.context = params.context;\n this.getTenant = params.getTenant;\n this.getLocale = params.getLocale;\n }\n\n public async send(task: ITaskServiceTask, delay: number): Promise<PutEventsCommandOutput> {\n /**\n * The ITaskEvent is what our handler expect to get.\n * Endpoint and stateMachineId are added by the step function.\n */\n const event: ITaskEventInput = {\n webinyTaskId: task.id,\n webinyTaskDefinitionId: task.definitionId,\n tenant: this.getTenant(),\n locale: this.getLocale(),\n delay\n };\n\n const cmd = new PutEventsCommand({\n Entries: [\n {\n Source: \"webiny-api-tasks\",\n EventBusName: String(process.env.EVENT_BUS),\n DetailType: \"WebinyBackgroundTask\",\n Detail: JSON.stringify(event)\n }\n ]\n });\n try {\n const result = await this.client.send(cmd);\n\n return JSON.parse(JSON.stringify(result));\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not trigger task via Event Bridge!\",\n ex.code || \"TRIGGER_TASK_ERROR\",\n {\n event,\n ...(ex.data || {})\n }\n );\n }\n }\n\n public async fetch(): Promise<GenericRecord> {\n throw new WebinyError(\"Not implemented!\", \"NOT_IMPLEMENTED\");\n }\n}\n\nexport class EventBridgeEventTransportPlugin extends TaskServicePlugin {\n public override name = \"task.eventBridgeEventTransport\";\n public createService(params: ITaskServiceCreatePluginParams) {\n return new EventBridgeService(params);\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAQA,IAAAC,kBAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAGA,MAAMG,kBAAkB,CAAyB;EAMtCC,WAAWA,CAACC,MAAsC,EAAE;IACvD,IAAI,CAACC,MAAM,GAAG,IAAIC,oCAAiB,CAAC;MAChCC,MAAM,EAAEC,OAAO,CAACC,GAAG,CAACC;IACxB,CAAC,CAAC;IACF,IAAI,CAACC,OAAO,GAAGP,MAAM,CAACO,OAAO;IAC7B,IAAI,CAACC,SAAS,GAAGR,MAAM,CAACQ,SAAS;IACjC,IAAI,CAACC,SAAS,GAAGT,MAAM,CAACS,SAAS;EACrC;EAEA,MAAaC,IAAIA,CAACC,IAAsB,EAAEC,KAAa,EAAmC;IACtF;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,EAAEC,MAAM,CAACrB,OAAO,CAACC,GAAG,CAACqB,SAAS,CAAC;QAC3CC,UAAU,EAAE,sBAAsB;QAClCC,MAAM,EAAEC,IAAI,CAACC,SAAS,CAACjB,KAAK;MAChC,CAAC;IAET,CAAC,CAAC;IACF,IAAI;MACA,MAAMkB,MAAM,GAAG,MAAM,IAAI,CAAC9B,MAAM,CAACS,IAAI,CAACU,GAAG,CAAC;MAE1C,OAAOS,IAAI,CAACG,KAAK,CAACH,IAAI,CAACC,SAAS,CAACC,MAAM,CAAC,CAAC;IAC7C,CAAC,CAAC,OAAOE,EAAE,EAAE;MACT,MAAM,IAAIC,kBAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,0CAA0C,EACxDF,EAAE,CAACG,IAAI,IAAI,oBAAoB,EAC/B;QACIvB,KAAK;QACL,IAAIoB,EAAE,CAACI,IAAI,IAAI,CAAC,CAAC;MACrB,CACJ,CAAC;IACL;EACJ;EAEA,MAAaC,KAAKA,CAAA,EAA2B;IACzC,MAAM,IAAIJ,kBAAW,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;EAChE;AACJ;AAEO,MAAMK,+BAA+B,SAASC,0BAAiB,CAAC;EACnDC,IAAI,GAAG,gCAAgC;EAChDC,aAAaA,CAAC1C,MAAsC,EAAE;IACzD,OAAO,IAAIF,kBAAkB,CAACE,MAAM,CAAC;EACzC;AACJ;AAAC2C,OAAA,CAAAJ,+BAAA,GAAAA,+BAAA","ignoreList":[]}
|
|
@@ -65,7 +65,10 @@ class StepFunctionService {
|
|
|
65
65
|
const result = await this.get({
|
|
66
66
|
executionArn
|
|
67
67
|
});
|
|
68
|
-
|
|
68
|
+
if (!result) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
return JSON.parse(JSON.stringify(result));
|
|
69
72
|
} catch (ex) {
|
|
70
73
|
console.log("Could not get the execution details.");
|
|
71
74
|
console.error(ex);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_plugins","require","_clientSfn","_utils","_api","StepFunctionService","constructor","params","getTenant","getLocale","client","createStepFunctionClient","trigger","triggerStepFunctionFactory","get","describeExecutionFactory","send","task","delay","manifest","ServiceDiscovery","load","console","error","bgTaskSfn","api","input","webinyTaskId","id","webinyTaskDefinitionId","definitionId","tenant","locale","name","generateAlphaNumericId","result","detail","stateMachineArn","ex","log","fetch","executionArn","eventResponse","StepFunctionServicePlugin","TaskServicePlugin","createService","exports"],"sources":["StepFunctionServicePlugin.ts"],"sourcesContent":["import {\n ITaskService,\n ITaskServiceCreatePluginParams,\n ITaskServiceTask,\n TaskServicePlugin\n} from \"~/plugins\";\nimport {\n createStepFunctionClient,\n DescribeExecutionCommandOutput,\n describeExecutionFactory,\n triggerStepFunctionFactory\n} from \"@webiny/aws-sdk/client-sfn\";\nimport { ITaskEventInput } from \"~/handler/types\";\nimport { generateAlphaNumericId } from \"@webiny/utils\";\nimport { ServiceDiscovery } from \"@webiny/api\";\nimport { ITask } from \"~/types\";\n\nexport type IStepFunctionServiceFetchResult = DescribeExecutionCommandOutput;\n\nexport interface IDetailWrapper<T> {\n detail: T;\n}\n\nclass StepFunctionService implements ITaskService {\n private readonly getTenant: () => string;\n private readonly getLocale: () => string;\n private readonly trigger: ReturnType<typeof triggerStepFunctionFactory>;\n private readonly get: ReturnType<typeof describeExecutionFactory>;\n\n public constructor(params: ITaskServiceCreatePluginParams) {\n this.getTenant = params.getTenant;\n this.getLocale = params.getLocale;\n const client = createStepFunctionClient();\n this.trigger = triggerStepFunctionFactory(client);\n this.get = describeExecutionFactory(client);\n }\n public async send(task: ITaskServiceTask, delay: number) {\n const manifest = await ServiceDiscovery.load();\n if (!manifest) {\n console.error(\"Service manifest not found.\");\n return null;\n }\n const { bgTaskSfn } = manifest.api || {};\n if (!bgTaskSfn) {\n console.error(\"Background task state machine not found.\");\n return null;\n }\n\n const input: ITaskEventInput = {\n webinyTaskId: task.id,\n webinyTaskDefinitionId: task.definitionId,\n tenant: this.getTenant(),\n locale: this.getLocale(),\n delay\n };\n const name = `${task.definitionId}_${task.id}_${generateAlphaNumericId(10)}`;\n try {\n const result = await this.trigger<IDetailWrapper<ITaskEventInput>>({\n input: {\n detail: input\n },\n stateMachineArn: bgTaskSfn,\n name\n });\n return {\n ...result,\n name\n };\n } catch (ex) {\n console.log(\"Could not trigger a step function.\");\n console.error(ex);\n return null;\n }\n }\n\n public async fetch(task: ITask): Promise<IStepFunctionServiceFetchResult | null> {\n const executionArn = task.eventResponse?.executionArn;\n if (!executionArn) {\n console.error(`Execution ARN not found in task \"${task.id}\".`);\n return null;\n }\n try {\n const result = await this.get({\n executionArn\n });\n
|
|
1
|
+
{"version":3,"names":["_plugins","require","_clientSfn","_utils","_api","StepFunctionService","constructor","params","getTenant","getLocale","client","createStepFunctionClient","trigger","triggerStepFunctionFactory","get","describeExecutionFactory","send","task","delay","manifest","ServiceDiscovery","load","console","error","bgTaskSfn","api","input","webinyTaskId","id","webinyTaskDefinitionId","definitionId","tenant","locale","name","generateAlphaNumericId","result","detail","stateMachineArn","ex","log","fetch","executionArn","eventResponse","JSON","parse","stringify","StepFunctionServicePlugin","TaskServicePlugin","createService","exports"],"sources":["StepFunctionServicePlugin.ts"],"sourcesContent":["import {\n ITaskService,\n ITaskServiceCreatePluginParams,\n ITaskServiceTask,\n TaskServicePlugin\n} from \"~/plugins\";\nimport {\n createStepFunctionClient,\n DescribeExecutionCommandOutput,\n describeExecutionFactory,\n triggerStepFunctionFactory\n} from \"@webiny/aws-sdk/client-sfn\";\nimport { ITaskEventInput } from \"~/handler/types\";\nimport { generateAlphaNumericId } from \"@webiny/utils\";\nimport { ServiceDiscovery } from \"@webiny/api\";\nimport { ITask } from \"~/types\";\n\nexport type IStepFunctionServiceFetchResult = DescribeExecutionCommandOutput;\n\nexport interface IDetailWrapper<T> {\n detail: T;\n}\n\nclass StepFunctionService implements ITaskService {\n private readonly getTenant: () => string;\n private readonly getLocale: () => string;\n private readonly trigger: ReturnType<typeof triggerStepFunctionFactory>;\n private readonly get: ReturnType<typeof describeExecutionFactory>;\n\n public constructor(params: ITaskServiceCreatePluginParams) {\n this.getTenant = params.getTenant;\n this.getLocale = params.getLocale;\n const client = createStepFunctionClient();\n this.trigger = triggerStepFunctionFactory(client);\n this.get = describeExecutionFactory(client);\n }\n public async send(task: ITaskServiceTask, delay: number) {\n const manifest = await ServiceDiscovery.load();\n if (!manifest) {\n console.error(\"Service manifest not found.\");\n return null;\n }\n const { bgTaskSfn } = manifest.api || {};\n if (!bgTaskSfn) {\n console.error(\"Background task state machine not found.\");\n return null;\n }\n\n const input: ITaskEventInput = {\n webinyTaskId: task.id,\n webinyTaskDefinitionId: task.definitionId,\n tenant: this.getTenant(),\n locale: this.getLocale(),\n delay\n };\n const name = `${task.definitionId}_${task.id}_${generateAlphaNumericId(10)}`;\n try {\n const result = await this.trigger<IDetailWrapper<ITaskEventInput>>({\n input: {\n detail: input\n },\n stateMachineArn: bgTaskSfn,\n name\n });\n return {\n ...result,\n name\n };\n } catch (ex) {\n console.log(\"Could not trigger a step function.\");\n console.error(ex);\n return null;\n }\n }\n\n public async fetch(task: ITask): Promise<IStepFunctionServiceFetchResult | null> {\n const executionArn = task.eventResponse?.executionArn;\n if (!executionArn) {\n console.error(`Execution ARN not found in task \"${task.id}\".`);\n return null;\n }\n try {\n const result = await this.get({\n executionArn\n });\n if (!result) {\n return null;\n }\n return JSON.parse(JSON.stringify(result));\n } catch (ex) {\n console.log(\"Could not get the execution details.\");\n console.error(ex);\n return null;\n }\n }\n}\n\nexport class StepFunctionServicePlugin extends TaskServicePlugin {\n public override name = \"task.stepFunctionTriggerTransport\";\n\n public createService(params: ITaskServiceCreatePluginParams) {\n return new StepFunctionService(params);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/task/plugin.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Plugin } from "@webiny/plugins";
|
|
2
|
-
import { Context, ITaskDefinition, ITaskDefinitionField, ITaskResponseDoneResultOutput } from "../types";
|
|
2
|
+
import { Context, ITaskBeforeTriggerParams, ITaskDefinition, ITaskDefinitionField, ITaskResponseDoneResultOutput } from "../types";
|
|
3
3
|
export interface ITaskPluginSetFieldsCallback {
|
|
4
4
|
(fields: ITaskDefinitionField[]): ITaskDefinitionField[] | undefined;
|
|
5
5
|
}
|
|
@@ -21,6 +21,7 @@ export declare class TaskDefinitionPlugin<C extends Context = Context, I = any,
|
|
|
21
21
|
get onError(): ((params: import("../types").ITaskOnErrorParams<C, I, ITaskResponseDoneResultOutput>) => Promise<void>) | undefined;
|
|
22
22
|
get onMaxIterations(): ((params: import("../types").ITaskOnMaxIterationsParams<C>) => Promise<void>) | undefined;
|
|
23
23
|
get maxIterations(): number;
|
|
24
|
+
onBeforeTrigger?: (params: ITaskBeforeTriggerParams<C>) => Promise<void>;
|
|
24
25
|
constructor(task: ITaskDefinitionParams<C, I, O>);
|
|
25
26
|
getTask(): ITaskDefinition<C, I, O>;
|
|
26
27
|
setFields(cb: ITaskPluginSetFieldsCallback): void;
|
package/task/plugin.js
CHANGED
package/task/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_camelCase","_interopRequireDefault","require","_error","_plugins","DEFAULT_MAX_ITERATIONS","TaskDefinitionPlugin","Plugin","type","id","task","title","fields","createInputValidation","run","onDone","onAbort","onError","onMaxIterations","maxIterations","constructor","isPrivate","config","validate","getTask","setFields","cb","Array","from","addField","field","concat","camelCase","message","console","log","WebinyError","exports","createTaskDefinition","params","createPrivateTaskDefinition","createTaskDefinitionField"],"sources":["plugin.ts"],"sourcesContent":["import camelCase from \"lodash/camelCase\";\nimport WebinyError from \"@webiny/error\";\nimport { Plugin } from \"@webiny/plugins\";\nimport {\n Context,\n ITaskDefinition,\n ITaskDefinitionField,\n ITaskResponseDoneResultOutput\n} from \"~/types\";\n\n/**\n * By default, we will stop iterating through the task after DEFAULT_MAX_ITERATIONS.\n *\n * This mechanism will prevent infinite loops in case of a bug in the task code.\n */\nconst DEFAULT_MAX_ITERATIONS = 50;\n\nexport interface ITaskPluginSetFieldsCallback {\n (fields: ITaskDefinitionField[]): ITaskDefinitionField[] | undefined;\n}\n\nexport interface ITaskDefinitionParams<\n C extends Context = Context,\n I = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> extends Omit<ITaskDefinition<C, I, O>, \"fields\" | \"maxIterations\"> {\n config?: (task: Pick<TaskDefinitionPlugin<C, I, O>, \"addField\" | \"setFields\">) => void;\n maxIterations?: number;\n}\n\nexport class TaskDefinitionPlugin<\n C extends Context = Context,\n I = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >\n extends Plugin\n implements ITaskDefinition<C, I, O>\n{\n public static override readonly type: string = \"webiny.backgroundTask\";\n\n public readonly isPrivate: boolean;\n\n private readonly task: ITaskDefinition<C, I, O>;\n\n public get id() {\n return this.task.id;\n }\n\n public get title() {\n return this.task.title;\n }\n\n public get fields() {\n return this.task.fields;\n }\n\n public get createInputValidation() {\n return this.task.createInputValidation;\n }\n\n public get run() {\n return this.task.run;\n }\n\n public get onDone() {\n return this.task.onDone;\n }\n\n public get onAbort() {\n return this.task.onAbort;\n }\n\n public get onError() {\n return this.task.onError;\n }\n\n public get onMaxIterations() {\n return this.task.onMaxIterations;\n }\n\n public get maxIterations(): number {\n return this.task.maxIterations || DEFAULT_MAX_ITERATIONS;\n }\n\n public constructor(task: ITaskDefinitionParams<C, I, O>) {\n super();\n this.isPrivate = task.isPrivate || false;\n this.task = {\n ...task,\n maxIterations: task.maxIterations || DEFAULT_MAX_ITERATIONS,\n fields: []\n };\n if (typeof task.config === \"function\") {\n task.config(this);\n }\n this.validate();\n }\n\n public getTask() {\n return this.task;\n }\n\n public setFields(cb: ITaskPluginSetFieldsCallback) {\n const fields = Array.from(this.task.fields || []);\n this.task.fields = cb(fields);\n }\n\n public addField(field: ITaskDefinitionField) {\n this.task.fields = (this.task.fields || []).concat([field]);\n }\n /**\n * TODO implement zod validation if validation becomes too complex\n */\n private validate(): void {\n if (camelCase(this.task.id) !== this.task.id) {\n /**\n * We want to log and throw the message so it can be seen in the CloudWatch logs.\n */\n const message = `Task ID \"${this.task.id}\" is invalid. It must be in camelCase format, for example: \"myCustomTask\".`;\n console.log(message);\n throw new WebinyError(message);\n }\n }\n}\n\nexport const createTaskDefinition = <\n C extends Context = Context,\n I = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n>(\n params: ITaskDefinitionParams<C, I, O>\n) => {\n return new TaskDefinitionPlugin<C, I, O>(params);\n};\n\nexport const createPrivateTaskDefinition = <\n C extends Context = Context,\n I = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n>(\n params: ITaskDefinitionParams<C, I, O>\n) => {\n return new TaskDefinitionPlugin<C, I, O>({\n ...params,\n isPrivate: true\n });\n};\n\nexport const createTaskDefinitionField = (params: ITaskDefinitionField) => {\n return params;\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;
|
|
1
|
+
{"version":3,"names":["_camelCase","_interopRequireDefault","require","_error","_plugins","DEFAULT_MAX_ITERATIONS","TaskDefinitionPlugin","Plugin","type","id","task","title","fields","createInputValidation","run","onDone","onAbort","onError","onMaxIterations","maxIterations","constructor","isPrivate","config","validate","onBeforeTrigger","getTask","setFields","cb","Array","from","addField","field","concat","camelCase","message","console","log","WebinyError","exports","createTaskDefinition","params","createPrivateTaskDefinition","createTaskDefinitionField"],"sources":["plugin.ts"],"sourcesContent":["import camelCase from \"lodash/camelCase\";\nimport WebinyError from \"@webiny/error\";\nimport { Plugin } from \"@webiny/plugins\";\nimport {\n Context,\n ITaskBeforeTriggerParams,\n ITaskDefinition,\n ITaskDefinitionField,\n ITaskResponseDoneResultOutput\n} from \"~/types\";\n\n/**\n * By default, we will stop iterating through the task after DEFAULT_MAX_ITERATIONS.\n *\n * This mechanism will prevent infinite loops in case of a bug in the task code.\n */\nconst DEFAULT_MAX_ITERATIONS = 50;\n\nexport interface ITaskPluginSetFieldsCallback {\n (fields: ITaskDefinitionField[]): ITaskDefinitionField[] | undefined;\n}\n\nexport interface ITaskDefinitionParams<\n C extends Context = Context,\n I = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> extends Omit<ITaskDefinition<C, I, O>, \"fields\" | \"maxIterations\"> {\n config?: (task: Pick<TaskDefinitionPlugin<C, I, O>, \"addField\" | \"setFields\">) => void;\n maxIterations?: number;\n}\n\nexport class TaskDefinitionPlugin<\n C extends Context = Context,\n I = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >\n extends Plugin\n implements ITaskDefinition<C, I, O>\n{\n public static override readonly type: string = \"webiny.backgroundTask\";\n\n public readonly isPrivate: boolean;\n\n private readonly task: ITaskDefinition<C, I, O>;\n\n public get id() {\n return this.task.id;\n }\n\n public get title() {\n return this.task.title;\n }\n\n public get fields() {\n return this.task.fields;\n }\n\n public get createInputValidation() {\n return this.task.createInputValidation;\n }\n\n public get run() {\n return this.task.run;\n }\n\n public get onDone() {\n return this.task.onDone;\n }\n\n public get onAbort() {\n return this.task.onAbort;\n }\n\n public get onError() {\n return this.task.onError;\n }\n\n public get onMaxIterations() {\n return this.task.onMaxIterations;\n }\n\n public get maxIterations(): number {\n return this.task.maxIterations || DEFAULT_MAX_ITERATIONS;\n }\n\n public onBeforeTrigger?: (params: ITaskBeforeTriggerParams<C>) => Promise<void>;\n\n public constructor(task: ITaskDefinitionParams<C, I, O>) {\n super();\n this.isPrivate = task.isPrivate || false;\n this.task = {\n ...task,\n maxIterations: task.maxIterations || DEFAULT_MAX_ITERATIONS,\n fields: []\n };\n if (typeof task.config === \"function\") {\n task.config(this);\n }\n this.validate();\n if (task.onBeforeTrigger) {\n this.onBeforeTrigger = task.onBeforeTrigger;\n }\n }\n\n public getTask() {\n return this.task;\n }\n\n public setFields(cb: ITaskPluginSetFieldsCallback) {\n const fields = Array.from(this.task.fields || []);\n this.task.fields = cb(fields);\n }\n\n public addField(field: ITaskDefinitionField) {\n this.task.fields = (this.task.fields || []).concat([field]);\n }\n /**\n * TODO implement zod validation if validation becomes too complex\n */\n private validate(): void {\n if (camelCase(this.task.id) !== this.task.id) {\n /**\n * We want to log and throw the message so it can be seen in the CloudWatch logs.\n */\n const message = `Task ID \"${this.task.id}\" is invalid. It must be in camelCase format, for example: \"myCustomTask\".`;\n console.log(message);\n throw new WebinyError(message);\n }\n }\n}\n\nexport const createTaskDefinition = <\n C extends Context = Context,\n I = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n>(\n params: ITaskDefinitionParams<C, I, O>\n) => {\n return new TaskDefinitionPlugin<C, I, O>(params);\n};\n\nexport const createPrivateTaskDefinition = <\n C extends Context = Context,\n I = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n>(\n params: ITaskDefinitionParams<C, I, O>\n) => {\n return new TaskDefinitionPlugin<C, I, O>({\n ...params,\n isPrivate: true\n });\n};\n\nexport const createTaskDefinitionField = (params: ITaskDefinitionField) => {\n return params;\n};\n"],"mappings":"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","ignoreList":[]}
|