@webiny/tasks 0.0.0-unstable.2696f9d9e8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +10 -0
  3. package/context.d.ts +3 -0
  4. package/context.js +37 -0
  5. package/context.js.map +1 -0
  6. package/crud/createEventBridgeEvent.d.ts +7 -0
  7. package/crud/createEventBridgeEvent.js +67 -0
  8. package/crud/createEventBridgeEvent.js.map +1 -0
  9. package/crud/crud.tasks.d.ts +2 -0
  10. package/crud/crud.tasks.js +220 -0
  11. package/crud/crud.tasks.js.map +1 -0
  12. package/crud/definition.tasks.d.ts +2 -0
  13. package/crud/definition.tasks.js +29 -0
  14. package/crud/definition.tasks.js.map +1 -0
  15. package/crud/model.d.ts +5 -0
  16. package/crud/model.js +212 -0
  17. package/crud/model.js.map +1 -0
  18. package/crud/trigger.tasks.d.ts +2 -0
  19. package/crud/trigger.tasks.js +116 -0
  20. package/crud/trigger.tasks.js.map +1 -0
  21. package/crud/where.d.ts +1 -0
  22. package/crud/where.js +33 -0
  23. package/crud/where.js.map +1 -0
  24. package/graphql/checkPermissions.d.ts +7 -0
  25. package/graphql/checkPermissions.js +46 -0
  26. package/graphql/checkPermissions.js.map +1 -0
  27. package/graphql/index.d.ts +3 -0
  28. package/graphql/index.js +344 -0
  29. package/graphql/index.js.map +1 -0
  30. package/graphql/utils.d.ts +9 -0
  31. package/graphql/utils.js +28 -0
  32. package/graphql/utils.js.map +1 -0
  33. package/handler/index.d.ts +9 -0
  34. package/handler/index.js +65 -0
  35. package/handler/index.js.map +1 -0
  36. package/handler/register.d.ts +1 -0
  37. package/handler/register.js +21 -0
  38. package/handler/register.js.map +1 -0
  39. package/handler/types.d.ts +19 -0
  40. package/handler/types.js +7 -0
  41. package/handler/types.js.map +1 -0
  42. package/index.d.ts +7 -0
  43. package/index.js +47 -0
  44. package/index.js.map +1 -0
  45. package/package.json +56 -0
  46. package/response/DatabaseResponse.d.ts +12 -0
  47. package/response/DatabaseResponse.js +142 -0
  48. package/response/DatabaseResponse.js.map +1 -0
  49. package/response/Response.d.ts +11 -0
  50. package/response/Response.js +73 -0
  51. package/response/Response.js.map +1 -0
  52. package/response/ResponseAbortedResult.d.ts +10 -0
  53. package/response/ResponseAbortedResult.js +19 -0
  54. package/response/ResponseAbortedResult.js.map +1 -0
  55. package/response/ResponseContinueResult.d.ts +13 -0
  56. package/response/ResponseContinueResult.js +22 -0
  57. package/response/ResponseContinueResult.js.map +1 -0
  58. package/response/ResponseDoneResult.d.ts +11 -0
  59. package/response/ResponseDoneResult.js +20 -0
  60. package/response/ResponseDoneResult.js.map +1 -0
  61. package/response/ResponseErrorResult.d.ts +11 -0
  62. package/response/ResponseErrorResult.js +20 -0
  63. package/response/ResponseErrorResult.js.map +1 -0
  64. package/response/TaskResponse.d.ts +10 -0
  65. package/response/TaskResponse.js +55 -0
  66. package/response/TaskResponse.js.map +1 -0
  67. package/response/abstractions/Response.d.ts +23 -0
  68. package/response/abstractions/Response.js +7 -0
  69. package/response/abstractions/Response.js.map +1 -0
  70. package/response/abstractions/ResponseAbortedResult.d.ts +5 -0
  71. package/response/abstractions/ResponseAbortedResult.js +7 -0
  72. package/response/abstractions/ResponseAbortedResult.js.map +1 -0
  73. package/response/abstractions/ResponseBaseResult.d.ts +8 -0
  74. package/response/abstractions/ResponseBaseResult.js +7 -0
  75. package/response/abstractions/ResponseBaseResult.js.map +1 -0
  76. package/response/abstractions/ResponseContinueResult.d.ts +19 -0
  77. package/response/abstractions/ResponseContinueResult.js +7 -0
  78. package/response/abstractions/ResponseContinueResult.js.map +1 -0
  79. package/response/abstractions/ResponseDoneResult.d.ts +12 -0
  80. package/response/abstractions/ResponseDoneResult.js +7 -0
  81. package/response/abstractions/ResponseDoneResult.js.map +1 -0
  82. package/response/abstractions/ResponseErrorResult.d.ts +18 -0
  83. package/response/abstractions/ResponseErrorResult.js +7 -0
  84. package/response/abstractions/ResponseErrorResult.js.map +1 -0
  85. package/response/abstractions/TaskResponse.d.ts +32 -0
  86. package/response/abstractions/TaskResponse.js +7 -0
  87. package/response/abstractions/TaskResponse.js.map +1 -0
  88. package/response/abstractions/index.d.ts +7 -0
  89. package/response/abstractions/index.js +84 -0
  90. package/response/abstractions/index.js.map +1 -0
  91. package/response/index.d.ts +7 -0
  92. package/response/index.js +84 -0
  93. package/response/index.js.map +1 -0
  94. package/runner/TaskControl.d.ts +13 -0
  95. package/runner/TaskControl.js +142 -0
  96. package/runner/TaskControl.js.map +1 -0
  97. package/runner/TaskEventValidation.d.ts +5 -0
  98. package/runner/TaskEventValidation.js +30 -0
  99. package/runner/TaskEventValidation.js.map +1 -0
  100. package/runner/TaskManager.d.ts +13 -0
  101. package/runner/TaskManager.js +101 -0
  102. package/runner/TaskManager.js.map +1 -0
  103. package/runner/TaskManagerStore.d.ts +19 -0
  104. package/runner/TaskManagerStore.js +90 -0
  105. package/runner/TaskManagerStore.js.map +1 -0
  106. package/runner/TaskRunner.d.ts +30 -0
  107. package/runner/TaskRunner.js +67 -0
  108. package/runner/TaskRunner.js.map +1 -0
  109. package/runner/abstractions/TaskControl.d.ts +10 -0
  110. package/runner/abstractions/TaskControl.js +7 -0
  111. package/runner/abstractions/TaskControl.js.map +1 -0
  112. package/runner/abstractions/TaskEventValidation.d.ts +5 -0
  113. package/runner/abstractions/TaskEventValidation.js +7 -0
  114. package/runner/abstractions/TaskEventValidation.js.map +1 -0
  115. package/runner/abstractions/TaskManager.d.ts +5 -0
  116. package/runner/abstractions/TaskManager.js +7 -0
  117. package/runner/abstractions/TaskManager.js.map +1 -0
  118. package/runner/abstractions/TaskManagerStore.d.ts +39 -0
  119. package/runner/abstractions/TaskManagerStore.js +7 -0
  120. package/runner/abstractions/TaskManagerStore.js.map +1 -0
  121. package/runner/abstractions/TaskRunner.d.ts +14 -0
  122. package/runner/abstractions/TaskRunner.js +7 -0
  123. package/runner/abstractions/TaskRunner.js.map +1 -0
  124. package/runner/abstractions/index.d.ts +5 -0
  125. package/runner/abstractions/index.js +62 -0
  126. package/runner/abstractions/index.js.map +1 -0
  127. package/runner/index.d.ts +1 -0
  128. package/runner/index.js +18 -0
  129. package/runner/index.js.map +1 -0
  130. package/runner/utils/getErrorProperties.d.ts +5 -0
  131. package/runner/utils/getErrorProperties.js +18 -0
  132. package/runner/utils/getErrorProperties.js.map +1 -0
  133. package/runner/utils/getObjectProperties.d.ts +4 -0
  134. package/runner/utils/getObjectProperties.js +21 -0
  135. package/runner/utils/getObjectProperties.js.map +1 -0
  136. package/task/index.d.ts +2 -0
  137. package/task/index.js +29 -0
  138. package/task/index.js.map +1 -0
  139. package/task/input.d.ts +15 -0
  140. package/task/input.js +21 -0
  141. package/task/input.js.map +1 -0
  142. package/task/plugin.d.ts +28 -0
  143. package/task/plugin.js +76 -0
  144. package/task/plugin.js.map +1 -0
  145. package/types.d.ts +258 -0
  146. package/types.js +60 -0
  147. package/types.js.map +1 -0
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TaskManager = void 0;
7
+ var _types = require("../types");
8
+ var _getObjectProperties = require("./utils/getObjectProperties");
9
+ class TaskManager {
10
+ constructor(runner, context, response, taskResponse, store) {
11
+ this.runner = runner;
12
+ this.context = context;
13
+ this.response = response;
14
+ this.taskResponse = taskResponse;
15
+ this.store = store;
16
+ }
17
+ async run(definition) {
18
+ /**
19
+ * If task was aborted, do not run it again, return as it was done.
20
+ */
21
+ if (this.store.getStatus() === _types.TaskDataStatus.ABORTED) {
22
+ return this.response.aborted();
23
+ }
24
+ /**
25
+ * If the task status is pending, update it to running and add a log.
26
+ */
27
+ //
28
+ else if (this.store.getStatus() === _types.TaskDataStatus.PENDING) {
29
+ try {
30
+ await this.store.updateTask({
31
+ taskStatus: _types.TaskDataStatus.RUNNING,
32
+ startedOn: new Date().toISOString(),
33
+ executionName: this.response.event.executionName,
34
+ iterations: 1
35
+ });
36
+ await this.store.addInfoLog({
37
+ message: "Task started."
38
+ });
39
+ } catch (ex) {
40
+ return this.response.error({
41
+ error: (0, _getObjectProperties.getObjectProperties)(ex)
42
+ });
43
+ }
44
+ }
45
+ /**
46
+ * Always update the task iteration.
47
+ */
48
+ //
49
+ else {
50
+ try {
51
+ await this.store.updateTask(task => {
52
+ return {
53
+ iterations: task.iterations + 1
54
+ };
55
+ });
56
+ } catch (ex) {
57
+ return this.response.error({
58
+ error: (0, _getObjectProperties.getObjectProperties)(ex)
59
+ });
60
+ }
61
+ }
62
+ let result;
63
+ try {
64
+ const input = structuredClone(this.store.getInput());
65
+ result = await definition.run({
66
+ input,
67
+ context: this.context,
68
+ response: this.taskResponse,
69
+ isCloseToTimeout: () => {
70
+ return this.runner.isCloseToTimeout();
71
+ },
72
+ isAborted: () => {
73
+ return this.store.getStatus() === _types.TaskDataStatus.ABORTED;
74
+ },
75
+ store: this.store
76
+ });
77
+ } catch (ex) {
78
+ return this.response.error({
79
+ error: (0, _getObjectProperties.getObjectProperties)(ex)
80
+ });
81
+ }
82
+ if (result.status === _types.TaskResponseStatus.CONTINUE) {
83
+ return this.response.continue({
84
+ input: result.input,
85
+ wait: result.wait
86
+ });
87
+ } else if (result.status === _types.TaskResponseStatus.ERROR) {
88
+ return this.response.error({
89
+ error: result.error
90
+ });
91
+ } else if (result.status === _types.TaskResponseStatus.ABORTED) {
92
+ return this.response.aborted();
93
+ }
94
+ return this.response.done({
95
+ message: result.message
96
+ });
97
+ }
98
+ }
99
+ exports.TaskManager = TaskManager;
100
+
101
+ //# sourceMappingURL=TaskManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_types","require","_getObjectProperties","TaskManager","constructor","runner","context","response","taskResponse","store","run","definition","getStatus","TaskDataStatus","ABORTED","aborted","PENDING","updateTask","taskStatus","RUNNING","startedOn","Date","toISOString","executionName","event","iterations","addInfoLog","message","ex","error","getObjectProperties","task","result","input","structuredClone","getInput","isCloseToTimeout","isAborted","status","TaskResponseStatus","CONTINUE","continue","wait","ERROR","done","exports"],"sources":["TaskManager.ts"],"sourcesContent":["import { ITaskManager, ITaskRunner } from \"./abstractions\";\nimport {\n Context,\n ITaskDataInput,\n ITaskDefinition,\n TaskDataStatus,\n TaskResponseStatus\n} from \"~/types\";\nimport {\n IResponse,\n IResponseResult,\n ITaskResponse,\n ITaskResponseResult\n} from \"~/response/abstractions\";\nimport { ITaskManagerStore } from \"~/runner/abstractions\";\nimport { getObjectProperties } from \"~/runner/utils/getObjectProperties\";\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: ITaskManagerStore;\n\n public constructor(\n runner: Pick<ITaskRunner, \"isCloseToTimeout\">,\n context: Context,\n response: IResponse,\n taskResponse: ITaskResponse,\n store: ITaskManagerStore\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.addInfoLog({\n message: \"Task started.\"\n });\n } catch (ex) {\n return this.response.error({\n error: getObjectProperties(ex)\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 (ex) {\n return this.response.error({\n error: getObjectProperties(ex)\n });\n }\n }\n\n let result: ITaskResponseResult;\n\n try {\n const input = structuredClone(this.store.getInput());\n result = await definition.run({\n input,\n context: this.context,\n response: this.taskResponse,\n isCloseToTimeout: () => {\n return this.runner.isCloseToTimeout();\n },\n isAborted: () => {\n return this.store.getStatus() === TaskDataStatus.ABORTED;\n },\n store: this.store\n });\n } catch (ex) {\n return this.response.error({\n error: getObjectProperties(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 });\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { ITaskData, ITaskDataInput, ITaskLog, ITaskManagerStoreInfoLog, ITasksContextObject, TaskDataStatus } from "../types";
2
+ import { ITaskManagerStore, ITaskManagerStoreErrorLog, ITaskManagerStoreUpdateTaskInputParam, ITaskManagerStoreUpdateTaskParam } from "./abstractions";
3
+ export interface TaskManagerStoreContext {
4
+ tasks: Pick<ITasksContextObject, "updateTask" | "updateLog">;
5
+ }
6
+ export declare class TaskManagerStore implements ITaskManagerStore {
7
+ private readonly context;
8
+ private task;
9
+ private taskLog;
10
+ constructor(context: TaskManagerStoreContext, task: ITaskData, log: ITaskLog);
11
+ getStatus(): TaskDataStatus;
12
+ setTask(task: ITaskData): void;
13
+ getTask<T extends ITaskDataInput = ITaskDataInput>(): ITaskData<T>;
14
+ updateTask(param: ITaskManagerStoreUpdateTaskParam): Promise<void>;
15
+ updateInput<T extends ITaskDataInput = ITaskDataInput>(param: ITaskManagerStoreUpdateTaskInputParam<T>): Promise<void>;
16
+ getInput<T extends ITaskDataInput = ITaskDataInput>(): T;
17
+ addInfoLog(log: ITaskManagerStoreInfoLog): Promise<void>;
18
+ addErrorLog(log: ITaskManagerStoreErrorLog): Promise<void>;
19
+ }
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.TaskManagerStore = void 0;
8
+ var _types = require("../types");
9
+ var _deepEqual = _interopRequireDefault(require("deep-equal"));
10
+ var _getObjectProperties = require("./utils/getObjectProperties");
11
+ /**
12
+ * Package deep-equal does not have types.
13
+ */ // @ts-expect-error
14
+ const getInput = (originalInput, input) => {
15
+ if (typeof input === "function") {
16
+ return input(originalInput);
17
+ }
18
+ return {
19
+ ...originalInput,
20
+ ...input
21
+ };
22
+ };
23
+ class TaskManagerStore {
24
+ constructor(context, task, log) {
25
+ this.context = context;
26
+ this.task = task;
27
+ this.taskLog = log;
28
+ }
29
+ getStatus() {
30
+ return this.task.taskStatus;
31
+ }
32
+ setTask(task) {
33
+ this.task = task;
34
+ }
35
+ getTask() {
36
+ return this.task;
37
+ }
38
+ async updateTask(param) {
39
+ const data = typeof param === "function" ? param(this.task) : param;
40
+ /**
41
+ * No need to update if nothing changed.
42
+ */
43
+ if ((0, _deepEqual.default)(data, this.task)) {
44
+ return;
45
+ }
46
+ this.task = await this.context.tasks.updateTask(this.task.id, {
47
+ ...this.task,
48
+ ...data
49
+ });
50
+ }
51
+ async updateInput(param) {
52
+ const input = getInput(this.task.input, param);
53
+
54
+ /**
55
+ * No need to update if nothing changed.
56
+ */
57
+ if ((0, _deepEqual.default)(input, this.task.input)) {
58
+ return;
59
+ }
60
+ this.task = await this.context.tasks.updateTask(this.task.id, {
61
+ input
62
+ });
63
+ }
64
+ getInput() {
65
+ return this.task.input;
66
+ }
67
+ async addInfoLog(log) {
68
+ this.taskLog = await this.context.tasks.updateLog(this.taskLog.id, {
69
+ items: this.taskLog.items.concat([{
70
+ message: log.message,
71
+ data: log.data,
72
+ type: _types.ITaskLogItemType.INFO,
73
+ createdOn: new Date().toISOString()
74
+ }])
75
+ });
76
+ }
77
+ async addErrorLog(log) {
78
+ this.taskLog = await this.context.tasks.updateLog(this.taskLog.id, {
79
+ items: this.taskLog.items.concat([{
80
+ message: log.message,
81
+ error: (0, _getObjectProperties.getObjectProperties)(log.error),
82
+ type: _types.ITaskLogItemType.ERROR,
83
+ createdOn: new Date().toISOString()
84
+ }])
85
+ });
86
+ }
87
+ }
88
+ exports.TaskManagerStore = TaskManagerStore;
89
+
90
+ //# sourceMappingURL=TaskManagerStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_types","require","_deepEqual","_interopRequireDefault","_getObjectProperties","getInput","originalInput","input","TaskManagerStore","constructor","context","task","log","taskLog","getStatus","taskStatus","setTask","getTask","updateTask","param","data","deepEqual","tasks","id","updateInput","addInfoLog","updateLog","items","concat","message","type","ITaskLogItemType","INFO","createdOn","Date","toISOString","addErrorLog","error","getObjectProperties","ERROR","exports"],"sources":["TaskManagerStore.ts"],"sourcesContent":["import {\n ITaskData,\n ITaskDataInput,\n ITaskLog,\n ITaskLogItemType,\n ITaskManagerStoreInfoLog,\n ITasksContextObject,\n TaskDataStatus\n} from \"~/types\";\nimport {\n ITaskManagerStore,\n ITaskManagerStoreErrorLog,\n ITaskManagerStoreUpdateTaskInputParam,\n ITaskManagerStoreUpdateTaskParam\n} from \"./abstractions\";\n/**\n * Package deep-equal does not have types.\n */\n// @ts-expect-error\nimport deepEqual from \"deep-equal\";\nimport { getObjectProperties } from \"~/runner/utils/getObjectProperties\";\n\nconst getInput = <T extends ITaskDataInput = ITaskDataInput>(\n originalInput: T,\n input: ITaskManagerStoreUpdateTaskInputParam<T>\n) => {\n if (typeof input === \"function\") {\n return input(originalInput);\n }\n return {\n ...originalInput,\n ...input\n };\n};\n\nexport interface TaskManagerStoreContext {\n tasks: Pick<ITasksContextObject, \"updateTask\" | \"updateLog\">;\n}\n\nexport class TaskManagerStore implements ITaskManagerStore {\n private readonly context: TaskManagerStoreContext;\n private task: ITaskData;\n private taskLog: ITaskLog;\n\n public constructor(context: TaskManagerStoreContext, task: ITaskData, log: ITaskLog) {\n this.context = context;\n this.task = task;\n this.taskLog = log;\n }\n\n public getStatus(): TaskDataStatus {\n return this.task.taskStatus;\n }\n\n public setTask(task: ITaskData): void {\n this.task = task;\n }\n\n public getTask<T extends ITaskDataInput = ITaskDataInput>(): ITaskData<T> {\n return this.task as ITaskData<T>;\n }\n\n public async updateTask(param: ITaskManagerStoreUpdateTaskParam): Promise<void> {\n const data = typeof param === \"function\" ? param(this.task) : param;\n /**\n * No need to update if nothing changed.\n */\n if (deepEqual(data, this.task)) {\n return;\n }\n this.task = await this.context.tasks.updateTask(this.task.id, {\n ...this.task,\n ...data\n });\n }\n\n public async updateInput<T extends ITaskDataInput = ITaskDataInput>(\n param: ITaskManagerStoreUpdateTaskInputParam<T>\n ): Promise<void> {\n const input = getInput<T>(this.task.input, param);\n\n /**\n * No need to update if nothing changed.\n */\n if (deepEqual(input, this.task.input)) {\n return;\n }\n this.task = await this.context.tasks.updateTask(this.task.id, {\n input\n });\n }\n\n public getInput<T extends ITaskDataInput = ITaskDataInput>(): T {\n return this.task.input as T;\n }\n\n public async addInfoLog(log: ITaskManagerStoreInfoLog): Promise<void> {\n this.taskLog = await this.context.tasks.updateLog(this.taskLog.id, {\n items: this.taskLog.items.concat([\n {\n message: log.message,\n data: log.data,\n type: ITaskLogItemType.INFO,\n createdOn: new Date().toISOString()\n }\n ])\n });\n }\n\n public async addErrorLog(log: ITaskManagerStoreErrorLog): Promise<void> {\n this.taskLog = await this.context.tasks.updateLog(this.taskLog.id, {\n items: this.taskLog.items.concat([\n {\n message: log.message,\n error: getObjectProperties(log.error),\n type: ITaskLogItemType.ERROR,\n createdOn: new Date().toISOString()\n }\n ])\n });\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { Context as LambdaContext } from "aws-lambda/handler";
2
+ import { Reply, Request } from "@webiny/handler/types";
3
+ import { ITaskEvent } from "../handler/types";
4
+ import { ITaskRunner } from "./abstractions";
5
+ import { Context } from "../types";
6
+ import { TaskEventValidation } from "./TaskEventValidation";
7
+ import { IResponseResult } from "../response/abstractions";
8
+ export declare class TaskRunner<C extends Context = Context> implements ITaskRunner<C> {
9
+ /**
10
+ * When DI is introduced, these will get injected.
11
+ *
12
+ * container.bind<Request>("Request").toConstantValue(request);
13
+ * @inject("Request") public readonly request: Request;
14
+ *
15
+ * Follow the same example for the rest of the properties.
16
+ */
17
+ readonly request: Request;
18
+ readonly reply: Reply;
19
+ readonly context: C;
20
+ readonly lambdaContext: LambdaContext;
21
+ private readonly validation;
22
+ /**
23
+ * We take all required variables separately because they will get injected via DI - so less refactoring is required in the future.
24
+ */
25
+ constructor(lambdaContext: LambdaContext, request: Request, reply: Reply, context: C, validation?: TaskEventValidation);
26
+ isCloseToTimeout(): boolean;
27
+ getRemainingTime(): number;
28
+ run(input: ITaskEvent): Promise<IResponseResult>;
29
+ private getIsCloseToTimeoutMinutes;
30
+ }
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TaskRunner = void 0;
7
+ var _response = require("../response");
8
+ var _TaskControl = require("./TaskControl");
9
+ var _TaskEventValidation = require("./TaskEventValidation");
10
+ var _getObjectProperties = require("./utils/getObjectProperties");
11
+ const transformMinutesIntoMilliseconds = minutes => {
12
+ return minutes * 60000;
13
+ };
14
+ const DEFAULT_TASKS_TIMEOUT_CLOSE_MINUTES = 3;
15
+ class TaskRunner {
16
+ /**
17
+ * When DI is introduced, these will get injected.
18
+ *
19
+ * container.bind<Request>("Request").toConstantValue(request);
20
+ * @inject("Request") public readonly request: Request;
21
+ *
22
+ * Follow the same example for the rest of the properties.
23
+ */
24
+
25
+ /**
26
+ * We take all required variables separately because they will get injected via DI - so less refactoring is required in the future.
27
+ */
28
+ constructor(lambdaContext, request, reply, context, validation = new _TaskEventValidation.TaskEventValidation()) {
29
+ this.request = request;
30
+ this.reply = reply;
31
+ this.context = context;
32
+ this.lambdaContext = lambdaContext;
33
+ this.validation = validation;
34
+ }
35
+ isCloseToTimeout() {
36
+ return this.lambdaContext.getRemainingTimeInMillis() < transformMinutesIntoMilliseconds(this.getIsCloseToTimeoutMinutes());
37
+ }
38
+ getRemainingTime() {
39
+ return this.lambdaContext.getRemainingTimeInMillis();
40
+ }
41
+ async run(input) {
42
+ const response = new _response.Response(input);
43
+ let event;
44
+ try {
45
+ event = this.validation.validate(input);
46
+ } catch (ex) {
47
+ return response.error({
48
+ error: (0, _getObjectProperties.getObjectProperties)(ex)
49
+ });
50
+ }
51
+ const control = new _TaskControl.TaskControl(this, response, this.context);
52
+ try {
53
+ return await control.run(event);
54
+ } catch (ex) {
55
+ return response.error({
56
+ error: (0, _getObjectProperties.getObjectProperties)(ex)
57
+ });
58
+ }
59
+ }
60
+ getIsCloseToTimeoutMinutes() {
61
+ const value = parseInt(process.env["WEBINY_TASKS_TIMEOUT_CLOSE_MINUTES"] || "");
62
+ return value > 0 ? value : DEFAULT_TASKS_TIMEOUT_CLOSE_MINUTES;
63
+ }
64
+ }
65
+ exports.TaskRunner = TaskRunner;
66
+
67
+ //# sourceMappingURL=TaskRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_response","require","_TaskControl","_TaskEventValidation","_getObjectProperties","transformMinutesIntoMilliseconds","minutes","DEFAULT_TASKS_TIMEOUT_CLOSE_MINUTES","TaskRunner","constructor","lambdaContext","request","reply","context","validation","TaskEventValidation","isCloseToTimeout","getRemainingTimeInMillis","getIsCloseToTimeoutMinutes","getRemainingTime","run","input","response","Response","event","validate","ex","error","getObjectProperties","control","TaskControl","value","parseInt","process","env","exports"],"sources":["TaskRunner.ts"],"sourcesContent":["import { Context as LambdaContext } from \"aws-lambda/handler\";\nimport { Reply, Request } from \"@webiny/handler/types\";\nimport { ITaskEvent } from \"~/handler/types\";\nimport { ITaskRunner } from \"./abstractions\";\nimport { Context } from \"~/types\";\nimport { Response } from \"~/response\";\nimport { TaskControl } from \"./TaskControl\";\nimport { TaskEventValidation } from \"./TaskEventValidation\";\nimport { IResponseResult } from \"~/response/abstractions\";\nimport { getObjectProperties } from \"~/runner/utils/getObjectProperties\";\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 request: Request;\n public readonly reply: Reply;\n public readonly context: C;\n public readonly lambdaContext: LambdaContext;\n private readonly validation: TaskEventValidation;\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(\n lambdaContext: LambdaContext,\n request: Request,\n reply: Reply,\n context: C,\n validation: TaskEventValidation = new TaskEventValidation()\n ) {\n this.request = request;\n this.reply = reply;\n this.context = context;\n this.lambdaContext = lambdaContext;\n this.validation = validation;\n }\n\n public isCloseToTimeout() {\n return (\n this.lambdaContext.getRemainingTimeInMillis() <\n transformMinutesIntoMilliseconds(this.getIsCloseToTimeoutMinutes())\n );\n }\n\n public getRemainingTime() {\n return this.lambdaContext.getRemainingTimeInMillis();\n }\n\n public async run(input: ITaskEvent): Promise<IResponseResult> {\n const response = new Response(input);\n\n let event: ITaskEvent;\n try {\n event = this.validation.validate(input);\n } catch (ex) {\n return response.error({\n error: getObjectProperties(ex)\n });\n }\n\n const control = new TaskControl(this, response, this.context);\n\n try {\n return await control.run(event);\n } catch (ex) {\n return response.error({\n error: getObjectProperties(ex)\n });\n }\n }\n\n private getIsCloseToTimeoutMinutes() {\n const value = parseInt(process.env[\"WEBINY_TASKS_TIMEOUT_CLOSE_MINUTES\"] || \"\");\n return value > 0 ? value : DEFAULT_TASKS_TIMEOUT_CLOSE_MINUTES;\n }\n}\n"],"mappings":";;;;;;AAKA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,oBAAA,GAAAF,OAAA;AAEA,IAAAG,oBAAA,GAAAH,OAAA;AAEA,MAAMI,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;;EAOI;AACJ;AACA;EACWC,WAAWA,CACdC,aAA4B,EAC5BC,OAAgB,EAChBC,KAAY,EACZC,OAAU,EACVC,UAA+B,GAAG,IAAIC,wCAAmB,CAAC,CAAC,EAC7D;IACE,IAAI,CAACJ,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACH,aAAa,GAAGA,aAAa;IAClC,IAAI,CAACI,UAAU,GAAGA,UAAU;EAChC;EAEOE,gBAAgBA,CAAA,EAAG;IACtB,OACI,IAAI,CAACN,aAAa,CAACO,wBAAwB,CAAC,CAAC,GAC7CZ,gCAAgC,CAAC,IAAI,CAACa,0BAA0B,CAAC,CAAC,CAAC;EAE3E;EAEOC,gBAAgBA,CAAA,EAAG;IACtB,OAAO,IAAI,CAACT,aAAa,CAACO,wBAAwB,CAAC,CAAC;EACxD;EAEA,MAAaG,GAAGA,CAACC,KAAiB,EAA4B;IAC1D,MAAMC,QAAQ,GAAG,IAAIC,kBAAQ,CAACF,KAAK,CAAC;IAEpC,IAAIG,KAAiB;IACrB,IAAI;MACAA,KAAK,GAAG,IAAI,CAACV,UAAU,CAACW,QAAQ,CAACJ,KAAK,CAAC;IAC3C,CAAC,CAAC,OAAOK,EAAE,EAAE;MACT,OAAOJ,QAAQ,CAACK,KAAK,CAAC;QAClBA,KAAK,EAAE,IAAAC,wCAAmB,EAACF,EAAE;MACjC,CAAC,CAAC;IACN;IAEA,MAAMG,OAAO,GAAG,IAAIC,wBAAW,CAAC,IAAI,EAAER,QAAQ,EAAE,IAAI,CAACT,OAAO,CAAC;IAE7D,IAAI;MACA,OAAO,MAAMgB,OAAO,CAACT,GAAG,CAACI,KAAK,CAAC;IACnC,CAAC,CAAC,OAAOE,EAAE,EAAE;MACT,OAAOJ,QAAQ,CAACK,KAAK,CAAC;QAClBA,KAAK,EAAE,IAAAC,wCAAmB,EAACF,EAAE;MACjC,CAAC,CAAC;IACN;EACJ;EAEQR,0BAA0BA,CAAA,EAAG;IACjC,MAAMa,KAAK,GAAGC,QAAQ,CAACC,OAAO,CAACC,GAAG,CAAC,oCAAoC,CAAC,IAAI,EAAE,CAAC;IAC/E,OAAOH,KAAK,GAAG,CAAC,GAAGA,KAAK,GAAGxB,mCAAmC;EAClE;AACJ;AAAC4B,OAAA,CAAA3B,UAAA,GAAAA,UAAA"}
@@ -0,0 +1,10 @@
1
+ import { ITaskRunner } from ".";
2
+ import { IResponse, IResponseResult } from "../../response/abstractions";
3
+ import { Context } from "../../types";
4
+ import { ITaskEvent } from "../../handler/types";
5
+ export interface ITaskControl {
6
+ runner: ITaskRunner;
7
+ response: IResponse;
8
+ context: Context;
9
+ run(event: ITaskEvent): Promise<IResponseResult>;
10
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ //# sourceMappingURL=TaskControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["TaskControl.ts"],"sourcesContent":["import { ITaskRunner } from \"~/runner/abstractions\";\nimport { IResponse, IResponseResult } from \"~/response/abstractions\";\nimport { Context } from \"~/types\";\nimport { ITaskEvent } from \"~/handler/types\";\n\nexport interface ITaskControl {\n runner: ITaskRunner;\n response: IResponse;\n context: Context;\n\n run(event: ITaskEvent): Promise<IResponseResult>;\n}\n"],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { ITaskEvent } from "../../handler/types";
2
+ export declare type ITaskEventValidationResult = ITaskEvent;
3
+ export interface ITaskEventValidation {
4
+ validate: (event: Partial<ITaskEvent>) => ITaskEventValidationResult;
5
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ //# sourceMappingURL=TaskEventValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["TaskEventValidation.ts"],"sourcesContent":["import { ITaskEvent } from \"~/handler/types\";\n\nexport type ITaskEventValidationResult = ITaskEvent;\n\nexport interface ITaskEventValidation {\n validate: (event: Partial<ITaskEvent>) => ITaskEventValidationResult;\n}\n"],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { IResponseResult } from "../../response/abstractions";
2
+ import { ITaskData, ITaskDataInput, ITaskDefinition } from "../../types";
3
+ export interface ITaskManager<T = ITaskDataInput> {
4
+ run: (definition: ITaskDefinition, task: ITaskData<T>) => Promise<IResponseResult>;
5
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ //# sourceMappingURL=TaskManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["TaskManager.ts"],"sourcesContent":["import { IResponseResult } from \"~/response/abstractions\";\nimport { ITaskData, ITaskDataInput, ITaskDefinition } from \"~/types\";\n\nexport interface ITaskManager<T = ITaskDataInput> {\n run: (definition: ITaskDefinition, task: ITaskData<T>) => Promise<IResponseResult>;\n}\n"],"mappings":""}
@@ -0,0 +1,39 @@
1
+ import { IResponseError, ITaskData, ITaskDataInput, ITaskLogItemData, ITaskUpdateData, TaskDataStatus } from "../../types";
2
+ export declare type ITaskManagerStoreUpdateTaskValues<T extends ITaskDataInput = ITaskDataInput> = T;
3
+ export interface ITaskManagerStoreUpdateTaskValuesCb<T extends ITaskDataInput = ITaskDataInput> {
4
+ (input: T): Partial<T>;
5
+ }
6
+ export declare type ITaskManagerStoreUpdateTaskInputParam<T extends ITaskDataInput = ITaskDataInput> = ITaskManagerStoreUpdateTaskValuesCb<T> | Partial<ITaskManagerStoreUpdateTaskValues<T>>;
7
+ export interface ITaskManagerStoreUpdateTaskParamCb<T extends ITaskDataInput = ITaskDataInput> {
8
+ (task: ITaskData<T>): ITaskUpdateData<T>;
9
+ }
10
+ export declare type ITaskManagerStoreUpdateTask<T extends ITaskDataInput = ITaskDataInput> = ITaskUpdateData<T>;
11
+ export declare type ITaskManagerStoreUpdateTaskParam<T extends ITaskDataInput = ITaskDataInput> = ITaskManagerStoreUpdateTaskParamCb<T> | Partial<ITaskManagerStoreUpdateTask<T>>;
12
+ export interface ITaskManagerStoreInfoLog {
13
+ message: string;
14
+ data?: ITaskLogItemData;
15
+ }
16
+ export interface ITaskManagerStoreErrorLog {
17
+ message: string;
18
+ data?: ITaskLogItemData;
19
+ error: IResponseError;
20
+ }
21
+ export interface ITaskManagerStore<T extends ITaskDataInput = ITaskDataInput> {
22
+ setTask: (task: ITaskData<T>) => void;
23
+ getTask: () => ITaskData<T>;
24
+ getStatus: () => TaskDataStatus;
25
+ /**
26
+ * @throws {Error} If task not found or something goes wrong during the database update.
27
+ */
28
+ updateTask: (params: ITaskManagerStoreUpdateTaskParam) => Promise<void>;
29
+ /**
30
+ * Update task input, which are used to store custom user data.
31
+ * You can send partial input, and they will be merged with the existing input.
32
+ *
33
+ * @throws {Error} If task not found or something goes wrong during the database update.
34
+ */
35
+ updateInput: (params: ITaskManagerStoreUpdateTaskInputParam<T>) => Promise<void>;
36
+ getInput: () => T;
37
+ addInfoLog: (log: ITaskManagerStoreInfoLog) => Promise<void>;
38
+ addErrorLog: (log: ITaskManagerStoreErrorLog) => Promise<void>;
39
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ //# sourceMappingURL=TaskManagerStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["TaskManagerStore.ts"],"sourcesContent":["import {\n IResponseError,\n ITaskData,\n ITaskDataInput,\n ITaskLogItemData,\n ITaskUpdateData,\n TaskDataStatus\n} from \"~/types\";\n\nexport type ITaskManagerStoreUpdateTaskValues<T extends ITaskDataInput = ITaskDataInput> = T;\n\nexport interface ITaskManagerStoreUpdateTaskValuesCb<T extends ITaskDataInput = ITaskDataInput> {\n (input: T): Partial<T>;\n}\n\nexport type ITaskManagerStoreUpdateTaskInputParam<T extends ITaskDataInput = ITaskDataInput> =\n | ITaskManagerStoreUpdateTaskValuesCb<T>\n | Partial<ITaskManagerStoreUpdateTaskValues<T>>;\n\nexport interface ITaskManagerStoreUpdateTaskParamCb<T extends ITaskDataInput = ITaskDataInput> {\n (task: ITaskData<T>): ITaskUpdateData<T>;\n}\n\nexport type ITaskManagerStoreUpdateTask<T extends ITaskDataInput = ITaskDataInput> =\n ITaskUpdateData<T>;\n\nexport type ITaskManagerStoreUpdateTaskParam<T extends ITaskDataInput = ITaskDataInput> =\n | ITaskManagerStoreUpdateTaskParamCb<T>\n | Partial<ITaskManagerStoreUpdateTask<T>>;\n\nexport interface ITaskManagerStoreInfoLog {\n message: string;\n data?: ITaskLogItemData;\n}\n\nexport interface ITaskManagerStoreErrorLog {\n message: string;\n data?: ITaskLogItemData;\n error: IResponseError;\n}\n\nexport interface ITaskManagerStore<T extends ITaskDataInput = ITaskDataInput> {\n setTask: (task: ITaskData<T>) => void;\n getTask: () => ITaskData<T>;\n getStatus: () => TaskDataStatus;\n /**\n * @throws {Error} If task not found or something goes wrong during the database update.\n */\n updateTask: (params: ITaskManagerStoreUpdateTaskParam) => Promise<void>;\n /**\n * Update task input, which are used to store custom user data.\n * You can send partial input, and they will be merged with the existing input.\n *\n * @throws {Error} If task not found or something goes wrong during the database update.\n */\n updateInput: (params: ITaskManagerStoreUpdateTaskInputParam<T>) => Promise<void>;\n getInput: () => T;\n addInfoLog: (log: ITaskManagerStoreInfoLog) => Promise<void>;\n addErrorLog: (log: ITaskManagerStoreErrorLog) => Promise<void>;\n}\n"],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { Context as LambdaContext } from "aws-lambda/handler";
2
+ import { Context } from "../../types";
3
+ import { Reply, Request } from "@webiny/handler/types";
4
+ import { ITaskEvent } from "../../handler/types";
5
+ import { IResponseResult } from "../../response/abstractions";
6
+ export interface ITaskRunner<C extends Context = Context> {
7
+ request: Request;
8
+ reply: Reply;
9
+ context: C;
10
+ lambdaContext: LambdaContext;
11
+ isCloseToTimeout: () => boolean;
12
+ getRemainingTime: () => number;
13
+ run(event: ITaskEvent): Promise<IResponseResult>;
14
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ //# sourceMappingURL=TaskRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["TaskRunner.ts"],"sourcesContent":["import { Context as LambdaContext } from \"aws-lambda/handler\";\nimport { Context } from \"~/types\";\nimport { Reply, Request } from \"@webiny/handler/types\";\nimport { ITaskEvent } from \"~/handler/types\";\nimport { IResponseResult } from \"~/response/abstractions\";\n\nexport interface ITaskRunner<C extends Context = Context> {\n request: Request;\n reply: Reply;\n context: C;\n lambdaContext: LambdaContext;\n isCloseToTimeout: () => boolean;\n getRemainingTime: () => number;\n\n run(event: ITaskEvent): Promise<IResponseResult>;\n}\n"],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export * from "./TaskControl";
2
+ export * from "./TaskEventValidation";
3
+ export * from "./TaskManager";
4
+ export * from "./TaskRunner";
5
+ export * from "./TaskManagerStore";
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _TaskControl = require("./TaskControl");
7
+ Object.keys(_TaskControl).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _TaskControl[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _TaskControl[key];
14
+ }
15
+ });
16
+ });
17
+ var _TaskEventValidation = require("./TaskEventValidation");
18
+ Object.keys(_TaskEventValidation).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _TaskEventValidation[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _TaskEventValidation[key];
25
+ }
26
+ });
27
+ });
28
+ var _TaskManager = require("./TaskManager");
29
+ Object.keys(_TaskManager).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _TaskManager[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _TaskManager[key];
36
+ }
37
+ });
38
+ });
39
+ var _TaskRunner = require("./TaskRunner");
40
+ Object.keys(_TaskRunner).forEach(function (key) {
41
+ if (key === "default" || key === "__esModule") return;
42
+ if (key in exports && exports[key] === _TaskRunner[key]) return;
43
+ Object.defineProperty(exports, key, {
44
+ enumerable: true,
45
+ get: function () {
46
+ return _TaskRunner[key];
47
+ }
48
+ });
49
+ });
50
+ var _TaskManagerStore = require("./TaskManagerStore");
51
+ Object.keys(_TaskManagerStore).forEach(function (key) {
52
+ if (key === "default" || key === "__esModule") return;
53
+ if (key in exports && exports[key] === _TaskManagerStore[key]) return;
54
+ Object.defineProperty(exports, key, {
55
+ enumerable: true,
56
+ get: function () {
57
+ return _TaskManagerStore[key];
58
+ }
59
+ });
60
+ });
61
+
62
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_TaskControl","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_TaskEventValidation","_TaskManager","_TaskRunner","_TaskManagerStore"],"sources":["index.ts"],"sourcesContent":["export * from \"./TaskControl\";\nexport * from \"./TaskEventValidation\";\nexport * from \"./TaskManager\";\nexport * from \"./TaskRunner\";\nexport * from \"./TaskManagerStore\";\n"],"mappings":";;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,YAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,YAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,YAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,oBAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,oBAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,oBAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,oBAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,YAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,YAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,YAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,YAAA,CAAAN,GAAA;IAAA;EAAA;AAAA;AACA,IAAAO,WAAA,GAAAX,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAS,WAAA,EAAAR,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAO,WAAA,CAAAP,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,WAAA,CAAAP,GAAA;IAAA;EAAA;AAAA;AACA,IAAAQ,iBAAA,GAAAZ,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAU,iBAAA,EAAAT,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAQ,iBAAA,CAAAR,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAI,iBAAA,CAAAR,GAAA;IAAA;EAAA;AAAA"}
@@ -0,0 +1 @@
1
+ export * from "./TaskRunner";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _TaskRunner = require("./TaskRunner");
7
+ Object.keys(_TaskRunner).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _TaskRunner[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _TaskRunner[key];
14
+ }
15
+ });
16
+ });
17
+
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_TaskRunner","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["index.ts"],"sourcesContent":["export * from \"./TaskRunner\";\n"],"mappings":";;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,WAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,WAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,WAAA,CAAAK,GAAA;IAAA;EAAA;AAAA"}
@@ -0,0 +1,5 @@
1
+ import { IResponseError } from "../../response/abstractions";
2
+ /**
3
+ * Unfortunately we need some casting as we do not know which properties are available on the error object.
4
+ */
5
+ export declare const getErrorProperties: (error: Error) => IResponseError;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getErrorProperties = void 0;
7
+ /**
8
+ * Unfortunately we need some casting as we do not know which properties are available on the error object.
9
+ */
10
+ const getErrorProperties = error => {
11
+ return Object.getOwnPropertyNames(error).reduce((acc, key) => {
12
+ acc[key] = error[key];
13
+ return acc;
14
+ }, {});
15
+ };
16
+ exports.getErrorProperties = getErrorProperties;
17
+
18
+ //# sourceMappingURL=getErrorProperties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getErrorProperties","error","Object","getOwnPropertyNames","reduce","acc","key","exports"],"sources":["getErrorProperties.ts"],"sourcesContent":["import { IResponseError } from \"~/response/abstractions\";\n\n/**\n * Unfortunately we need some casting as we do not know which properties are available on the error object.\n */\nexport const getErrorProperties = (error: Error): IResponseError => {\n return Object.getOwnPropertyNames(error).reduce<Record<string, any>>((acc, key) => {\n acc[key] = error[key as keyof Error];\n return acc;\n }, {}) as unknown as IResponseError;\n};\n"],"mappings":";;;;;;AAEA;AACA;AACA;AACO,MAAMA,kBAAkB,GAAIC,KAAY,IAAqB;EAChE,OAAOC,MAAM,CAACC,mBAAmB,CAACF,KAAK,CAAC,CAACG,MAAM,CAAsB,CAACC,GAAG,EAAEC,GAAG,KAAK;IAC/ED,GAAG,CAACC,GAAG,CAAC,GAAGL,KAAK,CAACK,GAAG,CAAgB;IACpC,OAAOD,GAAG;EACd,CAAC,EAAE,CAAC,CAAC,CAAC;AACV,CAAC;AAACE,OAAA,CAAAP,kBAAA,GAAAA,kBAAA"}