@webiny/tasks 5.41.1 → 5.41.2-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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/tasks",
3
- "version": "5.41.1",
3
+ "version": "5.41.2-beta.0",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -14,16 +14,16 @@
14
14
  "dependencies": {
15
15
  "@babel/runtime": "7.24.1",
16
16
  "@types/aws-lambda": "8.10.136",
17
- "@webiny/api": "5.41.1",
18
- "@webiny/api-headless-cms": "5.41.1",
19
- "@webiny/aws-sdk": "5.41.1",
20
- "@webiny/error": "5.41.1",
21
- "@webiny/handler": "5.41.1",
22
- "@webiny/handler-aws": "5.41.1",
23
- "@webiny/handler-graphql": "5.41.1",
24
- "@webiny/plugins": "5.41.1",
25
- "@webiny/pubsub": "5.41.1",
26
- "@webiny/utils": "5.41.1",
17
+ "@webiny/api": "5.41.2-beta.0",
18
+ "@webiny/api-headless-cms": "5.41.2-beta.0",
19
+ "@webiny/aws-sdk": "5.41.2-beta.0",
20
+ "@webiny/error": "5.41.2-beta.0",
21
+ "@webiny/handler": "5.41.2-beta.0",
22
+ "@webiny/handler-aws": "5.41.2-beta.0",
23
+ "@webiny/handler-graphql": "5.41.2-beta.0",
24
+ "@webiny/plugins": "5.41.2-beta.0",
25
+ "@webiny/pubsub": "5.41.2-beta.0",
26
+ "@webiny/utils": "5.41.2-beta.0",
27
27
  "deep-equal": "2.2.3",
28
28
  "lodash": "4.17.21",
29
29
  "object-merge-advanced": "12.1.0",
@@ -35,12 +35,12 @@
35
35
  "@babel/core": "7.24.3",
36
36
  "@babel/preset-env": "7.24.3",
37
37
  "@babel/preset-typescript": "7.24.1",
38
- "@webiny/api-i18n": "5.41.1",
39
- "@webiny/api-security": "5.41.1",
40
- "@webiny/api-tenancy": "5.41.1",
41
- "@webiny/api-wcp": "5.41.1",
42
- "@webiny/cli": "5.41.1",
43
- "@webiny/project-utils": "5.41.1",
38
+ "@webiny/api-i18n": "5.41.2-beta.0",
39
+ "@webiny/api-security": "5.41.2-beta.0",
40
+ "@webiny/api-tenancy": "5.41.2-beta.0",
41
+ "@webiny/api-wcp": "5.41.2-beta.0",
42
+ "@webiny/cli": "5.41.2-beta.0",
43
+ "@webiny/project-utils": "5.41.2-beta.0",
44
44
  "rimraf": "5.0.5",
45
45
  "ttypescript": "1.5.15",
46
46
  "type-fest": "2.19.0",
@@ -54,7 +54,7 @@
54
54
  "build": "yarn webiny run build",
55
55
  "watch": "yarn webiny run watch"
56
56
  },
57
- "gitHead": "4d34943dbfc5a776afc74fffd2cfd2dca60bffcd",
57
+ "gitHead": "a259e2af938ceb1e2d35b2bef9edcee4459352de",
58
58
  "adio": {
59
59
  "ignore": {
60
60
  "src": [
@@ -1,12 +1,14 @@
1
1
  import { ITaskManager, ITaskManagerStorePrivate, ITaskRunner } from "./abstractions";
2
2
  import { Context, ITaskDataInput, ITaskDefinition } from "../types";
3
3
  import { IResponse, IResponseResult, ITaskResponse } from "../response/abstractions";
4
+ type ITaskManagerRunner = Pick<ITaskRunner, "isCloseToTimeout" | "timer">;
4
5
  export declare class TaskManager<T = ITaskDataInput> implements ITaskManager<T> {
5
6
  private readonly runner;
6
7
  private readonly context;
7
8
  private readonly response;
8
9
  private readonly taskResponse;
9
10
  private readonly store;
10
- constructor(runner: Pick<ITaskRunner, "isCloseToTimeout">, context: Context, response: IResponse, taskResponse: ITaskResponse, store: ITaskManagerStorePrivate);
11
+ constructor(runner: ITaskManagerRunner, context: Context, response: IResponse, taskResponse: ITaskResponse, store: ITaskManagerStorePrivate);
11
12
  run(definition: ITaskDefinition): Promise<IResponseResult>;
12
13
  }
14
+ export {};
@@ -107,7 +107,8 @@ class TaskManager {
107
107
  ...params,
108
108
  parent: this.store.getTask()
109
109
  });
110
- }
110
+ },
111
+ timer: this.runner.timer
111
112
  });
112
113
  });
113
114
  } catch (ex) {
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","_getErrorProperties","TaskManager","constructor","runner","context","response","taskResponse","store","run","definition","getStatus","TaskDataStatus","ABORTED","aborted","PENDING","updateTask","taskStatus","RUNNING","startedOn","Date","toISOString","executionName","event","iterations","save","error","getTask","maxIterations","onMaxIterations","task","message","ex","data","getErrorProperties","result","input","structuredClone","getInput","security","withoutAuthorization","isCloseToTimeout","seconds","isAborted","trigger","params","tasks","parent","status","TaskResponseStatus","CONTINUE","continue","wait","ERROR","done","output","exports"],"sources":["TaskManager.ts"],"sourcesContent":["import { ITaskManager, ITaskManagerStorePrivate, ITaskRunner } from \"./abstractions\";\nimport {\n Context,\n ITask,\n ITaskDataInput,\n ITaskDefinition,\n ITaskTriggerParams,\n TaskDataStatus,\n TaskResponseStatus\n} from \"~/types\";\nimport {\n IResponse,\n IResponseResult,\n ITaskResponse,\n ITaskResponseResult\n} from \"~/response/abstractions\";\nimport { getErrorProperties } from \"~/utils/getErrorProperties\";\n\nexport class TaskManager<T = ITaskDataInput> implements ITaskManager<T> {\n private readonly runner: Pick<ITaskRunner, \"isCloseToTimeout\">;\n private readonly context: Context;\n private readonly response: IResponse;\n private readonly taskResponse: ITaskResponse;\n private readonly store: ITaskManagerStorePrivate;\n\n public constructor(\n runner: Pick<ITaskRunner, \"isCloseToTimeout\">,\n context: Context,\n response: IResponse,\n taskResponse: ITaskResponse,\n store: ITaskManagerStorePrivate\n ) {\n this.runner = runner;\n this.context = context;\n this.response = response;\n this.taskResponse = taskResponse;\n this.store = store;\n }\n\n public async run(definition: ITaskDefinition): Promise<IResponseResult> {\n /**\n * If task was aborted, do not run it again, return as it was done.\n */\n if (this.store.getStatus() === TaskDataStatus.ABORTED) {\n return this.response.aborted();\n }\n /**\n * If the task status is pending, update it to running and add a log.\n */\n //\n else if (this.store.getStatus() === TaskDataStatus.PENDING) {\n try {\n await this.store.updateTask({\n taskStatus: TaskDataStatus.RUNNING,\n startedOn: new Date().toISOString(),\n executionName: this.response.event.executionName,\n iterations: 1\n });\n await this.store.save();\n } catch (error) {\n return this.response.error({\n error\n });\n }\n }\n /**\n * We do not want to run the task indefinitely.\n * If the task has reached the max iterations, we will stop it and execute the onMaxIterations handler, if any.\n */\n //\n else if (this.store.getTask().iterations >= definition.maxIterations) {\n try {\n if (definition.onMaxIterations) {\n await definition.onMaxIterations({\n task: this.store.getTask(),\n context: this.context\n });\n }\n return this.response.error({\n error: {\n message: \"Task reached max iterations.\"\n }\n });\n } catch (ex) {\n return this.response.error({\n error: {\n message: \"Failed to execute onMaxIterations handler.\",\n data: getErrorProperties(ex)\n }\n });\n }\n }\n /**\n * Always update the task iteration.\n */\n //\n else {\n try {\n await this.store.updateTask(task => {\n return {\n iterations: task.iterations + 1\n };\n });\n } catch (error) {\n return this.response.error({\n error\n });\n }\n }\n\n let result: ITaskResponseResult;\n\n try {\n const input = structuredClone(this.store.getInput());\n /**\n * We always run the task without authorization because we are running a task without a user - nothing to authorize against.\n */\n result = await this.context.security.withoutAuthorization(async () => {\n return await definition.run({\n input,\n context: this.context,\n response: this.taskResponse,\n isCloseToTimeout: seconds => {\n return this.runner.isCloseToTimeout(seconds);\n },\n isAborted: () => {\n return this.store.getStatus() === TaskDataStatus.ABORTED;\n },\n store: this.store,\n trigger: async <I = ITaskDataInput>(\n params: Omit<ITaskTriggerParams<I>, \"parent\">\n ): Promise<ITask<I>> => {\n return this.context.tasks.trigger({\n ...params,\n parent: this.store.getTask()\n });\n }\n });\n });\n } catch (ex) {\n return this.response.error({\n error: getErrorProperties(ex)\n });\n }\n\n if (result.status === TaskResponseStatus.CONTINUE) {\n return this.response.continue({\n input: result.input,\n wait: result.wait\n });\n } else if (result.status === TaskResponseStatus.ERROR) {\n return this.response.error({\n error: result.error\n });\n } else if (result.status === TaskResponseStatus.ABORTED) {\n return this.response.aborted();\n }\n return this.response.done({\n message: result.message,\n output: result.output\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_types","require","_getErrorProperties","TaskManager","constructor","runner","context","response","taskResponse","store","run","definition","getStatus","TaskDataStatus","ABORTED","aborted","PENDING","updateTask","taskStatus","RUNNING","startedOn","Date","toISOString","executionName","event","iterations","save","error","getTask","maxIterations","onMaxIterations","task","message","ex","data","getErrorProperties","result","input","structuredClone","getInput","security","withoutAuthorization","isCloseToTimeout","seconds","isAborted","trigger","params","tasks","parent","timer","status","TaskResponseStatus","CONTINUE","continue","wait","ERROR","done","output","exports"],"sources":["TaskManager.ts"],"sourcesContent":["import { ITaskManager, ITaskManagerStorePrivate, ITaskRunner } from \"./abstractions\";\nimport {\n Context,\n ITask,\n ITaskDataInput,\n ITaskDefinition,\n ITaskTriggerParams,\n TaskDataStatus,\n TaskResponseStatus\n} from \"~/types\";\nimport {\n IResponse,\n IResponseResult,\n ITaskResponse,\n ITaskResponseResult\n} from \"~/response/abstractions\";\nimport { getErrorProperties } from \"~/utils/getErrorProperties\";\n\ntype ITaskManagerRunner = Pick<ITaskRunner, \"isCloseToTimeout\" | \"timer\">;\n\nexport class TaskManager<T = ITaskDataInput> implements ITaskManager<T> {\n private readonly runner: ITaskManagerRunner;\n private readonly context: Context;\n private readonly response: IResponse;\n private readonly taskResponse: ITaskResponse;\n private readonly store: ITaskManagerStorePrivate;\n\n public constructor(\n runner: ITaskManagerRunner,\n context: Context,\n response: IResponse,\n taskResponse: ITaskResponse,\n store: ITaskManagerStorePrivate\n ) {\n this.runner = runner;\n this.context = context;\n this.response = response;\n this.taskResponse = taskResponse;\n this.store = store;\n }\n\n public async run(definition: ITaskDefinition): Promise<IResponseResult> {\n /**\n * If task was aborted, do not run it again, return as it was done.\n */\n if (this.store.getStatus() === TaskDataStatus.ABORTED) {\n return this.response.aborted();\n }\n /**\n * If the task status is pending, update it to running and add a log.\n */\n //\n else if (this.store.getStatus() === TaskDataStatus.PENDING) {\n try {\n await this.store.updateTask({\n taskStatus: TaskDataStatus.RUNNING,\n startedOn: new Date().toISOString(),\n executionName: this.response.event.executionName,\n iterations: 1\n });\n await this.store.save();\n } catch (error) {\n return this.response.error({\n error\n });\n }\n }\n /**\n * We do not want to run the task indefinitely.\n * If the task has reached the max iterations, we will stop it and execute the onMaxIterations handler, if any.\n */\n //\n else if (this.store.getTask().iterations >= definition.maxIterations) {\n try {\n if (definition.onMaxIterations) {\n await definition.onMaxIterations({\n task: this.store.getTask(),\n context: this.context\n });\n }\n return this.response.error({\n error: {\n message: \"Task reached max iterations.\"\n }\n });\n } catch (ex) {\n return this.response.error({\n error: {\n message: \"Failed to execute onMaxIterations handler.\",\n data: getErrorProperties(ex)\n }\n });\n }\n }\n /**\n * Always update the task iteration.\n */\n //\n else {\n try {\n await this.store.updateTask(task => {\n return {\n iterations: task.iterations + 1\n };\n });\n } catch (error) {\n return this.response.error({\n error\n });\n }\n }\n\n let result: ITaskResponseResult;\n\n try {\n const input = structuredClone(this.store.getInput());\n /**\n * We always run the task without authorization because we are running a task without a user - nothing to authorize against.\n */\n result = await this.context.security.withoutAuthorization(async () => {\n return await definition.run({\n input,\n context: this.context,\n response: this.taskResponse,\n isCloseToTimeout: seconds => {\n return this.runner.isCloseToTimeout(seconds);\n },\n isAborted: () => {\n return this.store.getStatus() === TaskDataStatus.ABORTED;\n },\n store: this.store,\n trigger: async <I = ITaskDataInput>(\n params: Omit<ITaskTriggerParams<I>, \"parent\">\n ): Promise<ITask<I>> => {\n return this.context.tasks.trigger({\n ...params,\n parent: this.store.getTask()\n });\n },\n timer: this.runner.timer\n });\n });\n } catch (ex) {\n return this.response.error({\n error: getErrorProperties(ex)\n });\n }\n\n if (result.status === TaskResponseStatus.CONTINUE) {\n return this.response.continue({\n input: result.input,\n wait: result.wait\n });\n } else if (result.status === TaskResponseStatus.ERROR) {\n return this.response.error({\n error: result.error\n });\n } else if (result.status === TaskResponseStatus.ABORTED) {\n return this.response.aborted();\n }\n return this.response.done({\n message: result.message,\n output: result.output\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -13,8 +13,8 @@ export declare class TaskRunner<C extends Context = Context> implements ITaskRun
13
13
  * Follow the same example for the rest of the properties.
14
14
  */
15
15
  readonly context: C;
16
+ readonly timer: ITimer;
16
17
  private readonly validation;
17
- private readonly timer;
18
18
  /**
19
19
  * We take all required variables separately because they will get injected via DI - so less refactoring is required in the future.
20
20
  */
@@ -1 +1 @@
1
- {"version":3,"names":["_response","require","_TaskControl","_getErrorProperties","transformMinutesIntoMilliseconds","minutes","DEFAULT_TASKS_TIMEOUT_CLOSE_MINUTES","TaskRunner","constructor","context","timer","validation","isCloseToTimeout","seconds","milliseconds","getIsCloseToTimeoutMilliseconds","getRemainingMilliseconds","run","rawEvent","response","Response","event","validate","ex","error","getErrorProperties","setEvent","delay","continue","input","wait","setLocale","control","TaskControl","result","ResponseErrorResult","console","webinyTaskId","value","parseInt","process","env","locale","localeCode","i18n","getLocale","setContentLocale","exports"],"sources":["TaskRunner.ts"],"sourcesContent":["import { ITaskEvent, ITaskRawEvent } from \"~/handler/types\";\nimport { ITaskEventValidation, ITaskRunner } from \"./abstractions\";\nimport { Context } from \"~/types\";\nimport { Response, ResponseErrorResult } from \"~/response\";\nimport { TaskControl } from \"./TaskControl\";\nimport { IResponseResult } from \"~/response/abstractions\";\nimport { getErrorProperties } from \"~/utils/getErrorProperties\";\nimport { ITimer } from \"@webiny/handler-aws/utils\";\n\nconst transformMinutesIntoMilliseconds = (minutes: number) => {\n return minutes * 60000;\n};\n\nconst DEFAULT_TASKS_TIMEOUT_CLOSE_MINUTES = 3;\n\nexport class TaskRunner<C extends Context = Context> implements ITaskRunner<C> {\n /**\n * When DI is introduced, these will get injected.\n *\n * container.bind<Request>(\"Request\").toConstantValue(request);\n * @inject(\"Request\") public readonly request: Request;\n *\n * Follow the same example for the rest of the properties.\n */\n public readonly context: C;\n private readonly validation: ITaskEventValidation;\n private readonly timer: ITimer;\n\n /**\n * We take all required variables separately because they will get injected via DI - so less refactoring is required in the future.\n */\n public constructor(context: C, timer: ITimer, validation: ITaskEventValidation) {\n this.context = context;\n this.timer = timer;\n this.validation = validation;\n }\n\n public isCloseToTimeout(seconds?: number) {\n const milliseconds = seconds ? seconds * 1000 : this.getIsCloseToTimeoutMilliseconds();\n return this.timer.getRemainingMilliseconds() < milliseconds;\n }\n\n public async run(rawEvent: ITaskRawEvent): Promise<IResponseResult> {\n const response = new Response({\n ...rawEvent\n });\n\n let event: ITaskEvent;\n try {\n event = this.validation.validate(rawEvent);\n } catch (ex) {\n return response.error({\n error: getErrorProperties(ex)\n });\n }\n response.setEvent(event);\n /**\n * If we received a delay when initiating the task, we need to send the continue response immediately.\n */\n if (rawEvent.delay && rawEvent.delay > 0) {\n return response.continue({\n input: {},\n wait: rawEvent.delay\n });\n }\n\n /**\n * Here we set the context locale, using the value receive from the event.\n */\n this.setLocale(event);\n\n const control = new TaskControl(this, response, this.context);\n\n try {\n const result = await control.run(event);\n if (result instanceof ResponseErrorResult === false) {\n return result;\n }\n console.error(result);\n return result;\n } catch (ex) {\n console.error(`Failed to execute task \"${event.webinyTaskId}\".`);\n console.error(ex);\n return response.error({\n error: getErrorProperties(ex)\n });\n }\n }\n\n private getIsCloseToTimeoutMilliseconds() {\n const value = parseInt(process.env[\"WEBINY_TASKS_TIMEOUT_CLOSE_MINUTES\"] || \"\");\n const result = value > 0 ? value : DEFAULT_TASKS_TIMEOUT_CLOSE_MINUTES;\n return transformMinutesIntoMilliseconds(result);\n }\n\n private setLocale(event: ITaskEvent) {\n const { locale: localeCode } = event;\n const locale = this.context.i18n.getLocale(localeCode);\n\n if (!locale) {\n return;\n }\n\n this.context.i18n.setContentLocale(locale);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_response","require","_TaskControl","_getErrorProperties","transformMinutesIntoMilliseconds","minutes","DEFAULT_TASKS_TIMEOUT_CLOSE_MINUTES","TaskRunner","constructor","context","timer","validation","isCloseToTimeout","seconds","milliseconds","getIsCloseToTimeoutMilliseconds","getRemainingMilliseconds","run","rawEvent","response","Response","event","validate","ex","error","getErrorProperties","setEvent","delay","continue","input","wait","setLocale","control","TaskControl","result","ResponseErrorResult","console","webinyTaskId","value","parseInt","process","env","locale","localeCode","i18n","getLocale","setContentLocale","exports"],"sources":["TaskRunner.ts"],"sourcesContent":["import { ITaskEvent, ITaskRawEvent } from \"~/handler/types\";\nimport { ITaskEventValidation, ITaskRunner } from \"./abstractions\";\nimport { Context } from \"~/types\";\nimport { Response, ResponseErrorResult } from \"~/response\";\nimport { TaskControl } from \"./TaskControl\";\nimport { IResponseResult } from \"~/response/abstractions\";\nimport { getErrorProperties } from \"~/utils/getErrorProperties\";\nimport { ITimer } from \"@webiny/handler-aws/utils\";\n\nconst transformMinutesIntoMilliseconds = (minutes: number) => {\n return minutes * 60000;\n};\n\nconst DEFAULT_TASKS_TIMEOUT_CLOSE_MINUTES = 3;\n\nexport class TaskRunner<C extends Context = Context> implements ITaskRunner<C> {\n /**\n * When DI is introduced, these will get injected.\n *\n * container.bind<Request>(\"Request\").toConstantValue(request);\n * @inject(\"Request\") public readonly request: Request;\n *\n * Follow the same example for the rest of the properties.\n */\n public readonly context: C;\n public readonly timer: ITimer;\n private readonly validation: ITaskEventValidation;\n\n /**\n * We take all required variables separately because they will get injected via DI - so less refactoring is required in the future.\n */\n public constructor(context: C, timer: ITimer, validation: ITaskEventValidation) {\n this.context = context;\n this.timer = timer;\n this.validation = validation;\n }\n\n public isCloseToTimeout(seconds?: number) {\n const milliseconds = seconds ? seconds * 1000 : this.getIsCloseToTimeoutMilliseconds();\n return this.timer.getRemainingMilliseconds() < milliseconds;\n }\n\n public async run(rawEvent: ITaskRawEvent): Promise<IResponseResult> {\n const response = new Response({\n ...rawEvent\n });\n\n let event: ITaskEvent;\n try {\n event = this.validation.validate(rawEvent);\n } catch (ex) {\n return response.error({\n error: getErrorProperties(ex)\n });\n }\n response.setEvent(event);\n /**\n * If we received a delay when initiating the task, we need to send the continue response immediately.\n */\n if (rawEvent.delay && rawEvent.delay > 0) {\n return response.continue({\n input: {},\n wait: rawEvent.delay\n });\n }\n\n /**\n * Here we set the context locale, using the value receive from the event.\n */\n this.setLocale(event);\n\n const control = new TaskControl(this, response, this.context);\n\n try {\n const result = await control.run(event);\n if (result instanceof ResponseErrorResult === false) {\n return result;\n }\n console.error(result);\n return result;\n } catch (ex) {\n console.error(`Failed to execute task \"${event.webinyTaskId}\".`);\n console.error(ex);\n return response.error({\n error: getErrorProperties(ex)\n });\n }\n }\n\n private getIsCloseToTimeoutMilliseconds() {\n const value = parseInt(process.env[\"WEBINY_TASKS_TIMEOUT_CLOSE_MINUTES\"] || \"\");\n const result = value > 0 ? value : DEFAULT_TASKS_TIMEOUT_CLOSE_MINUTES;\n return transformMinutesIntoMilliseconds(result);\n }\n\n private setLocale(event: ITaskEvent) {\n const { locale: localeCode } = event;\n const locale = this.context.i18n.getLocale(localeCode);\n\n if (!locale) {\n return;\n }\n\n this.context.i18n.setContentLocale(locale);\n }\n}\n"],"mappings":";;;;;;AAGA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,mBAAA,GAAAF,OAAA;AAGA,MAAMG,gCAAgC,GAAIC,OAAe,IAAK;EAC1D,OAAOA,OAAO,GAAG,KAAK;AAC1B,CAAC;AAED,MAAMC,mCAAmC,GAAG,CAAC;AAEtC,MAAMC,UAAU,CAAwD;EAC3E;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;EAKI;AACJ;AACA;EACWC,WAAWA,CAACC,OAAU,EAAEC,KAAa,EAAEC,UAAgC,EAAE;IAC5E,IAAI,CAACF,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAChC;EAEOC,gBAAgBA,CAACC,OAAgB,EAAE;IACtC,MAAMC,YAAY,GAAGD,OAAO,GAAGA,OAAO,GAAG,IAAI,GAAG,IAAI,CAACE,+BAA+B,CAAC,CAAC;IACtF,OAAO,IAAI,CAACL,KAAK,CAACM,wBAAwB,CAAC,CAAC,GAAGF,YAAY;EAC/D;EAEA,MAAaG,GAAGA,CAACC,QAAuB,EAA4B;IAChE,MAAMC,QAAQ,GAAG,IAAIC,kBAAQ,CAAC;MAC1B,GAAGF;IACP,CAAC,CAAC;IAEF,IAAIG,KAAiB;IACrB,IAAI;MACAA,KAAK,GAAG,IAAI,CAACV,UAAU,CAACW,QAAQ,CAACJ,QAAQ,CAAC;IAC9C,CAAC,CAAC,OAAOK,EAAE,EAAE;MACT,OAAOJ,QAAQ,CAACK,KAAK,CAAC;QAClBA,KAAK,EAAE,IAAAC,sCAAkB,EAACF,EAAE;MAChC,CAAC,CAAC;IACN;IACAJ,QAAQ,CAACO,QAAQ,CAACL,KAAK,CAAC;IACxB;AACR;AACA;IACQ,IAAIH,QAAQ,CAACS,KAAK,IAAIT,QAAQ,CAACS,KAAK,GAAG,CAAC,EAAE;MACtC,OAAOR,QAAQ,CAACS,QAAQ,CAAC;QACrBC,KAAK,EAAE,CAAC,CAAC;QACTC,IAAI,EAAEZ,QAAQ,CAACS;MACnB,CAAC,CAAC;IACN;;IAEA;AACR;AACA;IACQ,IAAI,CAACI,SAAS,CAACV,KAAK,CAAC;IAErB,MAAMW,OAAO,GAAG,IAAIC,wBAAW,CAAC,IAAI,EAAEd,QAAQ,EAAE,IAAI,CAACV,OAAO,CAAC;IAE7D,IAAI;MACA,MAAMyB,MAAM,GAAG,MAAMF,OAAO,CAACf,GAAG,CAACI,KAAK,CAAC;MACvC,IAAIa,MAAM,YAAYC,6BAAmB,KAAK,KAAK,EAAE;QACjD,OAAOD,MAAM;MACjB;MACAE,OAAO,CAACZ,KAAK,CAACU,MAAM,CAAC;MACrB,OAAOA,MAAM;IACjB,CAAC,CAAC,OAAOX,EAAE,EAAE;MACTa,OAAO,CAACZ,KAAK,CAAE,2BAA0BH,KAAK,CAACgB,YAAa,IAAG,CAAC;MAChED,OAAO,CAACZ,KAAK,CAACD,EAAE,CAAC;MACjB,OAAOJ,QAAQ,CAACK,KAAK,CAAC;QAClBA,KAAK,EAAE,IAAAC,sCAAkB,EAACF,EAAE;MAChC,CAAC,CAAC;IACN;EACJ;EAEQR,+BAA+BA,CAAA,EAAG;IACtC,MAAMuB,KAAK,GAAGC,QAAQ,CAACC,OAAO,CAACC,GAAG,CAAC,oCAAoC,CAAC,IAAI,EAAE,CAAC;IAC/E,MAAMP,MAAM,GAAGI,KAAK,GAAG,CAAC,GAAGA,KAAK,GAAGhC,mCAAmC;IACtE,OAAOF,gCAAgC,CAAC8B,MAAM,CAAC;EACnD;EAEQH,SAASA,CAACV,KAAiB,EAAE;IACjC,MAAM;MAAEqB,MAAM,EAAEC;IAAW,CAAC,GAAGtB,KAAK;IACpC,MAAMqB,MAAM,GAAG,IAAI,CAACjC,OAAO,CAACmC,IAAI,CAACC,SAAS,CAACF,UAAU,CAAC;IAEtD,IAAI,CAACD,MAAM,EAAE;MACT;IACJ;IAEA,IAAI,CAACjC,OAAO,CAACmC,IAAI,CAACE,gBAAgB,CAACJ,MAAM,CAAC;EAC9C;AACJ;AAACK,OAAA,CAAAxC,UAAA,GAAAA,UAAA","ignoreList":[]}
@@ -1,11 +1,13 @@
1
1
  import { Context } from "../../types";
2
2
  import { ITaskEvent } from "../../handler/types";
3
3
  import { IResponseResult } from "../../response/abstractions";
4
+ import { ITimer } from "@webiny/handler-aws";
4
5
  export interface IIsCloseToTimeoutCallable {
5
6
  (seconds?: number): boolean;
6
7
  }
7
8
  export interface ITaskRunner<C extends Context = Context> {
8
9
  context: C;
9
10
  isCloseToTimeout: IIsCloseToTimeoutCallable;
11
+ timer: ITimer;
10
12
  run(event: ITaskEvent): Promise<IResponseResult>;
11
13
  }
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["TaskRunner.ts"],"sourcesContent":["import { Context } from \"~/types\";\nimport { ITaskEvent } from \"~/handler/types\";\nimport { IResponseResult } from \"~/response/abstractions\";\n\nexport interface IIsCloseToTimeoutCallable {\n (seconds?: number): boolean;\n}\n\nexport interface ITaskRunner<C extends Context = Context> {\n context: C;\n isCloseToTimeout: IIsCloseToTimeoutCallable;\n run(event: ITaskEvent): Promise<IResponseResult>;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["TaskRunner.ts"],"sourcesContent":["import { Context } from \"~/types\";\nimport { ITaskEvent } from \"~/handler/types\";\nimport { IResponseResult } from \"~/response/abstractions\";\nimport { ITimer } from \"@webiny/handler-aws\";\n\nexport interface IIsCloseToTimeoutCallable {\n (seconds?: number): boolean;\n}\n\nexport interface ITaskRunner<C extends Context = Context> {\n context: C;\n isCloseToTimeout: IIsCloseToTimeoutCallable;\n timer: ITimer;\n run(event: ITaskEvent): Promise<IResponseResult>;\n}\n"],"mappings":"","ignoreList":[]}
package/types.d.ts CHANGED
@@ -5,6 +5,7 @@ import { IIsCloseToTimeoutCallable, ITaskManagerStore } from "./runner/abstracti
5
5
  import { SecurityPermission } from "@webiny/api-security/types";
6
6
  import { GenericRecord } from "@webiny/api/types";
7
7
  import { IStepFunctionServiceFetchResult } from "./service/StepFunctionServicePlugin";
8
+ import { ITimer } from "@webiny/handler-aws";
8
9
  import type zod from "zod";
9
10
  export * from "./handler/types";
10
11
  export * from "./response/abstractions";
@@ -229,6 +230,7 @@ export interface ITaskRunParams<C extends Context, I = ITaskDataInput, O extends
229
230
  input: I;
230
231
  store: ITaskManagerStore<I>;
231
232
  trigger<SI = ITaskDataInput>(params: Omit<ITaskTriggerParams<SI>, "parent">): Promise<ITask<SI>>;
233
+ timer: ITimer;
232
234
  }
233
235
  export interface ITaskOnSuccessParams<C extends Context, I = ITaskDataInput, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput> {
234
236
  context: C;
package/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_abstractions","_abstractions2","TaskLogItemType","TaskDataStatus","TaskResponseStatus"],"sources":["types.ts"],"sourcesContent":["import {\n CmsContext as BaseContext,\n CmsEntryListParams,\n CmsEntryListWhere,\n CmsEntryMeta,\n CmsModel,\n CmsModelField\n} from \"@webiny/api-headless-cms/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\nimport {\n IResponseError,\n ITaskResponse,\n ITaskResponseDoneResultOutput,\n ITaskResponseResult\n} from \"~/response/abstractions\";\nimport { IIsCloseToTimeoutCallable, ITaskManagerStore } from \"./runner/abstractions\";\nimport { SecurityPermission } from \"@webiny/api-security/types\";\nimport { GenericRecord } from \"@webiny/api/types\";\nimport { IStepFunctionServiceFetchResult } from \"~/service/StepFunctionServicePlugin\";\n\nimport type zod from \"zod\";\n\nexport * from \"./handler/types\";\nexport * from \"./response/abstractions\";\nexport * from \"./runner/abstractions\";\n\nexport type ITaskDataInput = GenericRecord;\n\nexport enum TaskLogItemType {\n INFO = \"info\",\n ERROR = \"error\"\n}\n\nexport interface ITaskLogItemData {\n [key: string]: any;\n}\n\nexport interface ITaskLogItemBase {\n message: string;\n createdOn: string;\n type: TaskLogItemType;\n data?: ITaskLogItemData;\n}\n\nexport interface ITaskLogItemInfo extends ITaskLogItemBase {\n type: TaskLogItemType.INFO;\n}\n\nexport interface ITaskLogItemError extends ITaskLogItemBase {\n type: TaskLogItemType.ERROR;\n error?: IResponseError;\n}\n\nexport type ITaskLogItem = ITaskLogItemInfo | ITaskLogItemError;\n\nexport interface ITaskLog {\n /**\n * ID without the revision number (for example: #0001).\n */\n id: string;\n createdOn: string;\n createdBy: ITaskIdentity;\n executionName: string;\n task: string;\n iteration: number;\n items: ITaskLogItem[];\n}\n\nexport enum TaskDataStatus {\n PENDING = \"pending\",\n RUNNING = \"running\",\n FAILED = \"failed\",\n SUCCESS = \"success\",\n ABORTED = \"aborted\"\n}\n\nexport interface ITaskIdentity {\n id: string;\n displayName: string | null;\n type: string;\n}\n\nexport interface ITask<\n T = GenericRecord,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n /**\n * ID without the revision number (for example: #0001).\n */\n id: string;\n name: string;\n taskStatus: TaskDataStatus;\n definitionId: string;\n executionName: string;\n input: T;\n output?: O;\n createdOn: string;\n savedOn: string;\n createdBy: ITaskIdentity;\n startedOn?: string;\n finishedOn?: string;\n eventResponse: GenericRecord | undefined;\n iterations: number;\n parentId?: string;\n}\n\nexport type IGetTaskResponse<\n T = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> = ITask<T, O> | null;\n\nexport interface IListTasksResponse<\n T = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n items: ITask<T, O>[];\n meta: CmsEntryMeta;\n}\n\nexport interface IListTaskLogsResponse {\n items: ITaskLog[];\n meta: CmsEntryMeta;\n}\n\nexport type ICreateTaskResponse<\n T = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> = ITask<T, O>;\nexport type IUpdateTaskResponse<\n T = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> = ITask<T, O>;\nexport type IDeleteTaskResponse = boolean;\n\nexport interface IListTaskParamsWhere extends CmsEntryListWhere {\n parentId?: string;\n parentId_not?: string;\n parentId_in?: string[];\n parentId_not_in?: string[];\n definitionId?: string;\n definitionId_not?: string;\n definitionId_in?: string[];\n definitionId_not_in?: string[];\n taskStatus?: string;\n taskStatus_not?: string;\n taskStatus_in?: string[];\n taskStatus_not_in?: string[];\n}\n\nexport interface IListTaskParams extends Omit<CmsEntryListParams, \"fields\" | \"search\"> {\n where?: IListTaskParamsWhere;\n}\n\nexport interface IListTaskLogParamsWhere extends CmsEntryListWhere {\n task?: string;\n task_in?: string[];\n task_not?: string;\n iteration?: number;\n iteration_not?: number;\n iteration_gte?: number;\n iteration_gt?: number;\n iteration_lte?: number;\n iteration_lt?: number;\n}\n\nexport interface IListTaskLogParams extends Omit<CmsEntryListParams, \"fields\" | \"search\"> {\n where?: IListTaskLogParamsWhere;\n}\n\nexport interface ITaskCreateData<T = ITaskDataInput> {\n definitionId: string;\n name: string;\n input: T;\n parentId?: string;\n}\n\nexport interface ITaskUpdateData<\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n name?: string;\n input?: I;\n output?: O;\n taskStatus?: TaskDataStatus;\n executionName?: string;\n startedOn?: string;\n finishedOn?: string;\n eventResponse?: GenericRecord;\n iterations?: number;\n}\n\nexport interface OnTaskBeforeCreateTopicParams {\n input: ITaskCreateData;\n}\n\nexport interface OnTaskAfterCreateTopicParams {\n input: ITaskCreateData;\n task: ITask;\n}\n\nexport interface OnTaskBeforeUpdateTopicParams {\n input: ITaskUpdateData;\n original: ITask;\n}\n\nexport interface OnTaskAfterUpdateTopicParams {\n input: ITaskUpdateData;\n task: ITask;\n}\n\nexport interface OnTaskBeforeDeleteTopicParams {\n task: ITask;\n}\n\nexport interface OnTaskAfterDeleteTopicParams {\n task: ITask;\n}\n\nexport interface ITaskLogCreateInput {\n executionName: string;\n iteration: number;\n}\n\nexport interface ITaskLogUpdateInput {\n items?: ITaskLogItem[];\n}\n\nexport interface ITasksContextCrudObject {\n /**\n * Models\n */\n getTaskModel(): Promise<CmsModel>;\n getLogModel(): Promise<CmsModel>;\n /**\n * Tasks\n */\n getTask<T = any, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput>(\n id: string\n ): Promise<IGetTaskResponse<T, O> | null>;\n listTasks<T = any, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput>(\n params?: IListTaskParams\n ): Promise<IListTasksResponse<T, O>>;\n createTask<T = any>(task: ITaskCreateData<T>): Promise<ICreateTaskResponse<T>>;\n updateTask<\n T = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n id: string,\n data: Partial<ITaskUpdateData<T, O>>\n ): Promise<IUpdateTaskResponse<T, O>>;\n deleteTask(id: string): Promise<IDeleteTaskResponse>;\n /**\n * Logs\n */\n createLog(task: Pick<ITask, \"id\">, data: ITaskLogCreateInput): Promise<ITaskLog>;\n updateLog(id: string, data: ITaskLogUpdateInput): Promise<ITaskLog>;\n deleteLog(id: string): Promise<boolean>;\n getLog(id: string): Promise<ITaskLog | null>;\n getLatestLog(taskId: string): Promise<ITaskLog>;\n listLogs(params: IListTaskLogParams): Promise<IListTaskLogsResponse>;\n /**\n * Lifecycle events.\n */\n onTaskBeforeCreate: Topic<OnTaskBeforeCreateTopicParams>;\n onTaskAfterCreate: Topic<OnTaskAfterCreateTopicParams>;\n onTaskBeforeUpdate: Topic<OnTaskBeforeUpdateTopicParams>;\n onTaskAfterUpdate: Topic<OnTaskAfterUpdateTopicParams>;\n onTaskBeforeDelete: Topic<OnTaskBeforeDeleteTopicParams>;\n onTaskAfterDelete: Topic<OnTaskAfterDeleteTopicParams>;\n}\n\nexport interface ITasksContextDefinitionObject {\n getDefinition: <\n C extends Context = Context,\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n id: string\n ) => ITaskDefinition<C, I, O> | null;\n listDefinitions: () => ITaskDefinition[];\n}\n\nexport interface ITaskTriggerParams<I = ITaskDataInput> {\n parent?: Pick<ITask, \"id\">;\n definition: string;\n name?: string;\n input?: I;\n delay?: number;\n}\n\nexport interface ITaskAbortParams {\n id: string;\n message?: string;\n}\n\nexport interface ITasksContextServiceObject {\n trigger: <\n T = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n params: ITaskTriggerParams<T>\n ) => Promise<ITask<T, O>>;\n abort: <\n T = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n params: ITaskAbortParams\n ) => Promise<ITask<T, O>>;\n fetchServiceInfo: (\n input: ITask<any, any> | string\n ) => Promise<IStepFunctionServiceFetchResult | null>;\n}\n\nexport interface ITasksContextObject\n extends ITasksContextCrudObject,\n ITasksContextDefinitionObject,\n ITasksContextServiceObject {}\n\nexport interface Context extends BaseContext {\n tasks: ITasksContextObject;\n}\n\nexport interface ITaskRunParams<\n C extends Context,\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n context: C;\n response: ITaskResponse<I, O>;\n isCloseToTimeout: IIsCloseToTimeoutCallable;\n isAborted(): boolean;\n input: I;\n store: ITaskManagerStore<I>;\n trigger<SI = ITaskDataInput>(\n params: Omit<ITaskTriggerParams<SI>, \"parent\">\n ): Promise<ITask<SI>>;\n}\n\nexport interface ITaskOnSuccessParams<\n C extends Context,\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n context: C;\n task: ITask<I, O>;\n}\n\nexport interface ITaskOnErrorParams<\n C extends Context,\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n context: C;\n task: ITask<I, O>;\n}\n\nexport interface ITaskOnAbortParams<\n C extends Context,\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n context: C;\n task: ITask<I, O>;\n}\n\nexport interface ITaskOnMaxIterationsParams<C extends Context> {\n context: C;\n task: ITask;\n}\n\nexport enum TaskResponseStatus {\n DONE = \"done\",\n ERROR = \"error\",\n CONTINUE = \"continue\",\n ABORTED = \"aborted\"\n}\n\nexport type ITaskDefinitionField = Pick<\n CmsModelField,\n | \"fieldId\"\n | \"type\"\n | \"label\"\n | \"renderer\"\n | \"helpText\"\n | \"placeholderText\"\n | \"predefinedValues\"\n | \"validation\"\n | \"listValidation\"\n | \"multipleValues\"\n | \"settings\"\n>;\n\nexport interface ITaskBeforeTriggerParams<C extends Context = Context, I = ITaskDataInput> {\n context: C;\n data: ITaskCreateData<I>;\n}\n\nexport interface ITaskCreateInputValidationParams<C extends Context = Context> {\n validator: typeof zod;\n context: C;\n}\n\nexport interface ITaskDefinition<\n C extends Context = Context,\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n /**\n * ID of the task must be unique in the system.\n * It should be in camelCase format, for example: \"myCustomTask\".\n *\n * TODO: figure out a way to force camelCase in types.\n * CamelCase from type-fest does not help with this.\n */\n id: string;\n /**\n * Name should be unique, as it will get used to identify the task in the UI.\n */\n title: string;\n /**\n * A description of the task, for the UI.\n */\n description?: string;\n /**\n * Maximum number a step function can call the Lambda.\n */\n maxIterations: number;\n /**\n * Disable storing logs in database for this task.\n */\n disableDatabaseLogs?: boolean;\n /**\n * Task run method.\n */\n run(params: ITaskRunParams<C, I, O>): Promise<ITaskResponseResult>;\n /**\n * When a new task is about to be triggered, we will run this method.\n * For example, you can use this method to check if there is a task of the same type already running.\n */\n onBeforeTrigger?<T = ITaskDataInput>(params: ITaskBeforeTriggerParams<C, T>): Promise<void>;\n /**\n * When task successfully finishes, this method will be called.\n * This will be called during the run time of the task.\n */\n onDone?(params: ITaskOnSuccessParams<C, I, O>): Promise<void>;\n /**\n * When task fails, this method will be called.\n * This will be called during the run time of the task.\n */\n onError?(params: ITaskOnErrorParams<C, I>): Promise<void>;\n /**\n * When task is aborted, this method will be called.\n * This method will be called when user aborts the task.\n */\n onAbort?(params: ITaskOnAbortParams<C, I, O>): Promise<void>;\n /**\n * When task hits max iterations, this method will be called.\n * This will be called during the run time of the task.\n */\n onMaxIterations?(params: ITaskOnMaxIterationsParams<C>): Promise<void>;\n /**\n * Create a validation schema for the task input.\n * This will be used to validate the input before the task is triggered.\n */\n createInputValidation?: (\n params: ITaskCreateInputValidationParams<C>\n ) => GenericRecord<keyof I, zod.Schema>;\n /**\n * Custom input fields and layout for the task input.\n */\n fields?: ITaskDefinitionField[];\n /**\n * Is the task visible when listing?\n */\n isPrivate?: boolean;\n}\n\nexport interface TaskPermission extends SecurityPermission {\n name: \"task\";\n rwd?: string;\n}\n"],"mappings":";;;;;;;;;;;AAsBA,IAAAA,MAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,MAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,MAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,MAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,aAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,aAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,aAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,aAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,cAAA,GAAAd,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAY,cAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,cAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,cAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AAAsC,IAI1BW,eAAe,GAAAN,OAAA,CAAAM,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAwCfC,cAAc,GAAAP,OAAA,CAAAO,cAAA,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA;AAAA,IA8SdC,kBAAkB,GAAAR,OAAA,CAAAQ,kBAAA,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["_types","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_abstractions","_abstractions2","TaskLogItemType","TaskDataStatus","TaskResponseStatus"],"sources":["types.ts"],"sourcesContent":["import {\n CmsContext as BaseContext,\n CmsEntryListParams,\n CmsEntryListWhere,\n CmsEntryMeta,\n CmsModel,\n CmsModelField\n} from \"@webiny/api-headless-cms/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\nimport {\n IResponseError,\n ITaskResponse,\n ITaskResponseDoneResultOutput,\n ITaskResponseResult\n} from \"~/response/abstractions\";\nimport { IIsCloseToTimeoutCallable, ITaskManagerStore } from \"./runner/abstractions\";\nimport { SecurityPermission } from \"@webiny/api-security/types\";\nimport { GenericRecord } from \"@webiny/api/types\";\nimport { IStepFunctionServiceFetchResult } from \"~/service/StepFunctionServicePlugin\";\nimport { ITimer } from \"@webiny/handler-aws\";\n\nimport type zod from \"zod\";\n\nexport * from \"./handler/types\";\nexport * from \"./response/abstractions\";\nexport * from \"./runner/abstractions\";\n\nexport type ITaskDataInput = GenericRecord;\n\nexport enum TaskLogItemType {\n INFO = \"info\",\n ERROR = \"error\"\n}\n\nexport interface ITaskLogItemData {\n [key: string]: any;\n}\n\nexport interface ITaskLogItemBase {\n message: string;\n createdOn: string;\n type: TaskLogItemType;\n data?: ITaskLogItemData;\n}\n\nexport interface ITaskLogItemInfo extends ITaskLogItemBase {\n type: TaskLogItemType.INFO;\n}\n\nexport interface ITaskLogItemError extends ITaskLogItemBase {\n type: TaskLogItemType.ERROR;\n error?: IResponseError;\n}\n\nexport type ITaskLogItem = ITaskLogItemInfo | ITaskLogItemError;\n\nexport interface ITaskLog {\n /**\n * ID without the revision number (for example: #0001).\n */\n id: string;\n createdOn: string;\n createdBy: ITaskIdentity;\n executionName: string;\n task: string;\n iteration: number;\n items: ITaskLogItem[];\n}\n\nexport enum TaskDataStatus {\n PENDING = \"pending\",\n RUNNING = \"running\",\n FAILED = \"failed\",\n SUCCESS = \"success\",\n ABORTED = \"aborted\"\n}\n\nexport interface ITaskIdentity {\n id: string;\n displayName: string | null;\n type: string;\n}\n\nexport interface ITask<\n T = GenericRecord,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n /**\n * ID without the revision number (for example: #0001).\n */\n id: string;\n name: string;\n taskStatus: TaskDataStatus;\n definitionId: string;\n executionName: string;\n input: T;\n output?: O;\n createdOn: string;\n savedOn: string;\n createdBy: ITaskIdentity;\n startedOn?: string;\n finishedOn?: string;\n eventResponse: GenericRecord | undefined;\n iterations: number;\n parentId?: string;\n}\n\nexport type IGetTaskResponse<\n T = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> = ITask<T, O> | null;\n\nexport interface IListTasksResponse<\n T = any,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n items: ITask<T, O>[];\n meta: CmsEntryMeta;\n}\n\nexport interface IListTaskLogsResponse {\n items: ITaskLog[];\n meta: CmsEntryMeta;\n}\n\nexport type ICreateTaskResponse<\n T = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> = ITask<T, O>;\nexport type IUpdateTaskResponse<\n T = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> = ITask<T, O>;\nexport type IDeleteTaskResponse = boolean;\n\nexport interface IListTaskParamsWhere extends CmsEntryListWhere {\n parentId?: string;\n parentId_not?: string;\n parentId_in?: string[];\n parentId_not_in?: string[];\n definitionId?: string;\n definitionId_not?: string;\n definitionId_in?: string[];\n definitionId_not_in?: string[];\n taskStatus?: string;\n taskStatus_not?: string;\n taskStatus_in?: string[];\n taskStatus_not_in?: string[];\n}\n\nexport interface IListTaskParams extends Omit<CmsEntryListParams, \"fields\" | \"search\"> {\n where?: IListTaskParamsWhere;\n}\n\nexport interface IListTaskLogParamsWhere extends CmsEntryListWhere {\n task?: string;\n task_in?: string[];\n task_not?: string;\n iteration?: number;\n iteration_not?: number;\n iteration_gte?: number;\n iteration_gt?: number;\n iteration_lte?: number;\n iteration_lt?: number;\n}\n\nexport interface IListTaskLogParams extends Omit<CmsEntryListParams, \"fields\" | \"search\"> {\n where?: IListTaskLogParamsWhere;\n}\n\nexport interface ITaskCreateData<T = ITaskDataInput> {\n definitionId: string;\n name: string;\n input: T;\n parentId?: string;\n}\n\nexport interface ITaskUpdateData<\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n name?: string;\n input?: I;\n output?: O;\n taskStatus?: TaskDataStatus;\n executionName?: string;\n startedOn?: string;\n finishedOn?: string;\n eventResponse?: GenericRecord;\n iterations?: number;\n}\n\nexport interface OnTaskBeforeCreateTopicParams {\n input: ITaskCreateData;\n}\n\nexport interface OnTaskAfterCreateTopicParams {\n input: ITaskCreateData;\n task: ITask;\n}\n\nexport interface OnTaskBeforeUpdateTopicParams {\n input: ITaskUpdateData;\n original: ITask;\n}\n\nexport interface OnTaskAfterUpdateTopicParams {\n input: ITaskUpdateData;\n task: ITask;\n}\n\nexport interface OnTaskBeforeDeleteTopicParams {\n task: ITask;\n}\n\nexport interface OnTaskAfterDeleteTopicParams {\n task: ITask;\n}\n\nexport interface ITaskLogCreateInput {\n executionName: string;\n iteration: number;\n}\n\nexport interface ITaskLogUpdateInput {\n items?: ITaskLogItem[];\n}\n\nexport interface ITasksContextCrudObject {\n /**\n * Models\n */\n getTaskModel(): Promise<CmsModel>;\n getLogModel(): Promise<CmsModel>;\n /**\n * Tasks\n */\n getTask<T = any, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput>(\n id: string\n ): Promise<IGetTaskResponse<T, O> | null>;\n listTasks<T = any, O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput>(\n params?: IListTaskParams\n ): Promise<IListTasksResponse<T, O>>;\n createTask<T = any>(task: ITaskCreateData<T>): Promise<ICreateTaskResponse<T>>;\n updateTask<\n T = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n id: string,\n data: Partial<ITaskUpdateData<T, O>>\n ): Promise<IUpdateTaskResponse<T, O>>;\n deleteTask(id: string): Promise<IDeleteTaskResponse>;\n /**\n * Logs\n */\n createLog(task: Pick<ITask, \"id\">, data: ITaskLogCreateInput): Promise<ITaskLog>;\n updateLog(id: string, data: ITaskLogUpdateInput): Promise<ITaskLog>;\n deleteLog(id: string): Promise<boolean>;\n getLog(id: string): Promise<ITaskLog | null>;\n getLatestLog(taskId: string): Promise<ITaskLog>;\n listLogs(params: IListTaskLogParams): Promise<IListTaskLogsResponse>;\n /**\n * Lifecycle events.\n */\n onTaskBeforeCreate: Topic<OnTaskBeforeCreateTopicParams>;\n onTaskAfterCreate: Topic<OnTaskAfterCreateTopicParams>;\n onTaskBeforeUpdate: Topic<OnTaskBeforeUpdateTopicParams>;\n onTaskAfterUpdate: Topic<OnTaskAfterUpdateTopicParams>;\n onTaskBeforeDelete: Topic<OnTaskBeforeDeleteTopicParams>;\n onTaskAfterDelete: Topic<OnTaskAfterDeleteTopicParams>;\n}\n\nexport interface ITasksContextDefinitionObject {\n getDefinition: <\n C extends Context = Context,\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n id: string\n ) => ITaskDefinition<C, I, O> | null;\n listDefinitions: () => ITaskDefinition[];\n}\n\nexport interface ITaskTriggerParams<I = ITaskDataInput> {\n parent?: Pick<ITask, \"id\">;\n definition: string;\n name?: string;\n input?: I;\n delay?: number;\n}\n\nexport interface ITaskAbortParams {\n id: string;\n message?: string;\n}\n\nexport interface ITasksContextServiceObject {\n trigger: <\n T = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n params: ITaskTriggerParams<T>\n ) => Promise<ITask<T, O>>;\n abort: <\n T = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n >(\n params: ITaskAbortParams\n ) => Promise<ITask<T, O>>;\n fetchServiceInfo: (\n input: ITask<any, any> | string\n ) => Promise<IStepFunctionServiceFetchResult | null>;\n}\n\nexport interface ITasksContextObject\n extends ITasksContextCrudObject,\n ITasksContextDefinitionObject,\n ITasksContextServiceObject {}\n\nexport interface Context extends BaseContext {\n tasks: ITasksContextObject;\n}\n\nexport interface ITaskRunParams<\n C extends Context,\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n context: C;\n response: ITaskResponse<I, O>;\n isCloseToTimeout: IIsCloseToTimeoutCallable;\n isAborted(): boolean;\n input: I;\n store: ITaskManagerStore<I>;\n trigger<SI = ITaskDataInput>(\n params: Omit<ITaskTriggerParams<SI>, \"parent\">\n ): Promise<ITask<SI>>;\n timer: ITimer;\n}\n\nexport interface ITaskOnSuccessParams<\n C extends Context,\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n context: C;\n task: ITask<I, O>;\n}\n\nexport interface ITaskOnErrorParams<\n C extends Context,\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n context: C;\n task: ITask<I, O>;\n}\n\nexport interface ITaskOnAbortParams<\n C extends Context,\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n context: C;\n task: ITask<I, O>;\n}\n\nexport interface ITaskOnMaxIterationsParams<C extends Context> {\n context: C;\n task: ITask;\n}\n\nexport enum TaskResponseStatus {\n DONE = \"done\",\n ERROR = \"error\",\n CONTINUE = \"continue\",\n ABORTED = \"aborted\"\n}\n\nexport type ITaskDefinitionField = Pick<\n CmsModelField,\n | \"fieldId\"\n | \"type\"\n | \"label\"\n | \"renderer\"\n | \"helpText\"\n | \"placeholderText\"\n | \"predefinedValues\"\n | \"validation\"\n | \"listValidation\"\n | \"multipleValues\"\n | \"settings\"\n>;\n\nexport interface ITaskBeforeTriggerParams<C extends Context = Context, I = ITaskDataInput> {\n context: C;\n data: ITaskCreateData<I>;\n}\n\nexport interface ITaskCreateInputValidationParams<C extends Context = Context> {\n validator: typeof zod;\n context: C;\n}\n\nexport interface ITaskDefinition<\n C extends Context = Context,\n I = ITaskDataInput,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n /**\n * ID of the task must be unique in the system.\n * It should be in camelCase format, for example: \"myCustomTask\".\n *\n * TODO: figure out a way to force camelCase in types.\n * CamelCase from type-fest does not help with this.\n */\n id: string;\n /**\n * Name should be unique, as it will get used to identify the task in the UI.\n */\n title: string;\n /**\n * A description of the task, for the UI.\n */\n description?: string;\n /**\n * Maximum number a step function can call the Lambda.\n */\n maxIterations: number;\n /**\n * Disable storing logs in database for this task.\n */\n disableDatabaseLogs?: boolean;\n /**\n * Task run method.\n */\n run(params: ITaskRunParams<C, I, O>): Promise<ITaskResponseResult>;\n /**\n * When a new task is about to be triggered, we will run this method.\n * For example, you can use this method to check if there is a task of the same type already running.\n */\n onBeforeTrigger?<T = ITaskDataInput>(params: ITaskBeforeTriggerParams<C, T>): Promise<void>;\n /**\n * When task successfully finishes, this method will be called.\n * This will be called during the run time of the task.\n */\n onDone?(params: ITaskOnSuccessParams<C, I, O>): Promise<void>;\n /**\n * When task fails, this method will be called.\n * This will be called during the run time of the task.\n */\n onError?(params: ITaskOnErrorParams<C, I>): Promise<void>;\n /**\n * When task is aborted, this method will be called.\n * This method will be called when user aborts the task.\n */\n onAbort?(params: ITaskOnAbortParams<C, I, O>): Promise<void>;\n /**\n * When task hits max iterations, this method will be called.\n * This will be called during the run time of the task.\n */\n onMaxIterations?(params: ITaskOnMaxIterationsParams<C>): Promise<void>;\n /**\n * Create a validation schema for the task input.\n * This will be used to validate the input before the task is triggered.\n */\n createInputValidation?: (\n params: ITaskCreateInputValidationParams<C>\n ) => GenericRecord<keyof I, zod.Schema>;\n /**\n * Custom input fields and layout for the task input.\n */\n fields?: ITaskDefinitionField[];\n /**\n * Is the task visible when listing?\n */\n isPrivate?: boolean;\n}\n\nexport interface TaskPermission extends SecurityPermission {\n name: \"task\";\n rwd?: string;\n}\n"],"mappings":";;;;;;;;;;;AAuBA,IAAAA,MAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,MAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,MAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,MAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,aAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,aAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,aAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,aAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,cAAA,GAAAd,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAY,cAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,cAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,cAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AAAsC,IAI1BW,eAAe,GAAAN,OAAA,CAAAM,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAwCfC,cAAc,GAAAP,OAAA,CAAAO,cAAA,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA;AAAA,IA+SdC,kBAAkB,GAAAR,OAAA,CAAAQ,kBAAA,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA","ignoreList":[]}