@webiny/tasks 5.39.2 → 5.39.3-beta.1

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 (82) hide show
  1. package/crud/EventBridgeEventTransport.d.ts +16 -0
  2. package/crud/EventBridgeEventTransport.js +57 -0
  3. package/crud/EventBridgeEventTransport.js.map +1 -0
  4. package/crud/crud.tasks.js +89 -52
  5. package/crud/crud.tasks.js.map +1 -1
  6. package/crud/model.js +1 -5
  7. package/crud/model.js.map +1 -1
  8. package/crud/trigger.tasks.js +26 -5
  9. package/crud/trigger.tasks.js.map +1 -1
  10. package/graphql/index.js +1 -1
  11. package/graphql/index.js.map +1 -1
  12. package/handler/index.d.ts +2 -2
  13. package/handler/index.js +17 -3
  14. package/handler/index.js.map +1 -1
  15. package/handler/types.d.ts +4 -0
  16. package/handler/types.js.map +1 -1
  17. package/package.json +19 -18
  18. package/response/DatabaseResponse.d.ts +2 -2
  19. package/response/DatabaseResponse.js +7 -1
  20. package/response/DatabaseResponse.js.map +1 -1
  21. package/response/Response.d.ts +3 -1
  22. package/response/Response.js +7 -1
  23. package/response/Response.js.map +1 -1
  24. package/response/ResponseAbortedResult.js +1 -1
  25. package/response/ResponseAbortedResult.js.map +1 -1
  26. package/response/ResponseContinueResult.d.ts +5 -1
  27. package/response/ResponseContinueResult.js +4 -0
  28. package/response/ResponseContinueResult.js.map +1 -1
  29. package/response/TaskResponse.d.ts +1 -1
  30. package/response/TaskResponse.js +6 -1
  31. package/response/TaskResponse.js.map +1 -1
  32. package/response/abstractions/Response.d.ts +1 -0
  33. package/response/abstractions/Response.js.map +1 -1
  34. package/response/abstractions/ResponseContinueResult.d.ts +1 -0
  35. package/response/abstractions/ResponseContinueResult.js.map +1 -1
  36. package/response/abstractions/TaskResponse.d.ts +7 -2
  37. package/response/abstractions/TaskResponse.js.map +1 -1
  38. package/runner/TaskManager.d.ts +2 -3
  39. package/runner/TaskManager.js +23 -20
  40. package/runner/TaskManager.js.map +1 -1
  41. package/runner/TaskManagerStore.d.ts +14 -10
  42. package/runner/TaskManagerStore.js +56 -19
  43. package/runner/TaskManagerStore.js.map +1 -1
  44. package/runner/TaskRunner.d.ts +7 -12
  45. package/runner/TaskRunner.js +22 -15
  46. package/runner/TaskRunner.js.map +1 -1
  47. package/runner/abstractions/TaskManagerStore.d.ts +52 -13
  48. package/runner/abstractions/TaskManagerStore.js.map +1 -1
  49. package/runner/abstractions/TaskRunner.d.ts +1 -7
  50. package/runner/abstractions/TaskRunner.js.map +1 -1
  51. package/task/plugin.js +1 -1
  52. package/task/plugin.js.map +1 -1
  53. package/timer/CustomTimer.d.ts +6 -0
  54. package/timer/CustomTimer.js +21 -0
  55. package/timer/CustomTimer.js.map +1 -0
  56. package/timer/Timer.d.ts +9 -0
  57. package/timer/Timer.js +17 -0
  58. package/timer/Timer.js.map +1 -0
  59. package/timer/abstractions/ITimer.d.ts +6 -0
  60. package/timer/abstractions/ITimer.js +7 -0
  61. package/timer/abstractions/ITimer.js.map +1 -0
  62. package/timer/factory.d.ts +4 -0
  63. package/timer/factory.js +20 -0
  64. package/timer/factory.js.map +1 -0
  65. package/timer/index.d.ts +4 -0
  66. package/timer/index.js +51 -0
  67. package/timer/index.js.map +1 -0
  68. package/types.d.ts +62 -35
  69. package/types.js +11 -5
  70. package/types.js.map +1 -1
  71. package/utils/ObjectUpdater.d.ts +8 -0
  72. package/utils/ObjectUpdater.js +46 -0
  73. package/utils/ObjectUpdater.js.map +1 -0
  74. package/crud/createEventBridgeEvent.d.ts +0 -9
  75. package/crud/createEventBridgeEvent.js +0 -73
  76. package/crud/createEventBridgeEvent.js.map +0 -1
  77. package/runner/utils/getErrorProperties.d.ts +0 -5
  78. package/runner/utils/getErrorProperties.js +0 -18
  79. package/runner/utils/getErrorProperties.js.map +0 -1
  80. package/runner/utils/getObjectProperties.d.ts +0 -4
  81. package/runner/utils/getObjectProperties.js +0 -21
  82. package/runner/utils/getObjectProperties.js.map +0 -1
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","ITaskLogItemType","TaskDataStatus","TaskResponseStatus"],"sources":["types.ts"],"sourcesContent":["import {\n CmsContext as BaseContext,\n CmsEntryListParams,\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 { ITaskManagerStore } from \"./runner/abstractions\";\nimport { EventBridgeClientSendResponse } from \"@webiny/aws-sdk/client-eventbridge\";\nimport { SecurityPermission } from \"@webiny/api-security/types\";\n\nexport * from \"./handler/types\";\nexport * from \"./response/abstractions\";\nexport * from \"./runner/abstractions\";\n\nexport interface ITaskConfig {\n readonly eventBusName: string;\n}\n\nexport interface ITaskDataInput {\n [key: string]: any;\n}\n\nexport enum ITaskLogItemType {\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: ITaskLogItemType;\n data?: ITaskLogItemData;\n}\n\nexport interface ITaskLogItemInfo extends ITaskLogItemBase {\n type: ITaskLogItemType.INFO;\n}\n\nexport interface ITaskLogItemError extends ITaskLogItemBase {\n type: ITaskLogItemType.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 = any,\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: EventBridgeClientSendResponse | undefined;\n iterations: number;\n parentId?: string;\n}\n\nexport type IGetTaskResponse<T = any> = ITask<T> | 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<T = any> = ITask<T>;\nexport type IUpdateTaskResponse<T = any> = ITask<T>;\nexport type IDeleteTaskResponse = boolean;\n\nexport type IListTaskParams = Omit<CmsEntryListParams, \"fields\" | \"search\">;\nexport type IListTaskLogParams = Omit<CmsEntryListParams, \"fields\" | \"search\">;\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?: Record<string, any>;\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>(id: string) => Promise<IGetTaskResponse<T> | 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: <T = any>(\n id: string,\n data: Partial<ITaskUpdateData<T>>\n ) => Promise<IUpdateTaskResponse<T>>;\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 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 ITasksContextConfigObject {\n config: ITaskConfig;\n}\n\nexport interface ITasksContextDefinitionObject {\n getDefinition: <T = ITaskDataInput>(id: string) => ITaskDefinition<Context, T> | null;\n listDefinitions: () => ITaskDefinition[];\n}\n\n/**\n * TODO: implement delayed trigger\n */\nexport interface ITaskTriggerParams<I = ITaskDataInput> {\n parent?: ITask;\n definition: string;\n name?: string;\n input?: I;\n}\n\nexport interface ITaskAbortParams {\n id: string;\n message?: string;\n}\n\nexport interface ITasksContextTriggerObject {\n trigger: <T = ITaskDataInput>(params: ITaskTriggerParams<T>) => Promise<ITask<T>>;\n abort: <T = ITaskDataInput>(params: ITaskAbortParams) => Promise<ITask<T>>;\n}\n\nexport interface ITasksContextObject\n extends ITasksContextCrudObject,\n ITasksContextDefinitionObject,\n ITasksContextTriggerObject,\n ITasksContextConfigObject {}\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: (seconds?: number) => boolean;\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<C extends Context, I = ITaskDataInput> {\n context: C;\n task: ITask<I>;\n}\n\nexport interface ITaskOnErrorParams<C extends Context, I = ITaskDataInput> {\n context: C;\n task: ITask<I>;\n}\n\nexport interface ITaskOnAbortParams<C extends Context> {\n context: C;\n task: ITask;\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 input: I;\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 * 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>) => 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>) => 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 * 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":";;;;;;;;;;;AAkBA,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,IAU1BW,gBAAgB,0BAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA;AAAAN,OAAA,CAAAM,gBAAA,GAAAA,gBAAA;AAAA,IAwChBC,cAAc,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA;AAqK1B;AACA;AACA;AAFAP,OAAA,CAAAO,cAAA,GAAAA,cAAA;AAAA,IAkEYC,kBAAkB,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA;AAAAR,OAAA,CAAAQ,kBAAA,GAAAA,kBAAA"}
1
+ {"version":3,"names":["_clientEventbridge","require","_types","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_abstractions","_abstractions2","ITaskLogItemType","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 { ITaskManagerStore } from \"./runner/abstractions\";\nimport { PutEventsCommandOutput } from \"@webiny/aws-sdk/client-eventbridge\";\nimport { SecurityPermission } from \"@webiny/api-security/types\";\n\nexport { PutEventsCommandOutput };\n\nexport * from \"./handler/types\";\nexport * from \"./response/abstractions\";\nexport * from \"./runner/abstractions\";\n\nexport interface ITaskConfig {\n readonly eventBusName: string;\n}\n\nexport interface ITaskDataInput {\n [key: string]: any;\n}\n\nexport enum ITaskLogItemType {\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: ITaskLogItemType;\n data?: ITaskLogItemData;\n}\n\nexport interface ITaskLogItemInfo extends ITaskLogItemBase {\n type: ITaskLogItemType.INFO;\n}\n\nexport interface ITaskLogItemError extends ITaskLogItemBase {\n type: ITaskLogItemType.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 = any,\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: PutEventsCommandOutput | 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 IListTaskParams extends Omit<CmsEntryListParams, \"fields\" | \"search\"> {\n where?: 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 IListTaskLogParams extends Omit<CmsEntryListParams, \"fields\" | \"search\"> {\n where?: 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}\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?: PutEventsCommandOutput;\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 ITasksContextConfigObject {\n config: ITaskConfig;\n}\n\nexport interface ITasksContextDefinitionObject {\n getDefinition: <T = ITaskDataInput>(id: string) => ITaskDefinition<Context, T> | null;\n listDefinitions: () => ITaskDefinition[];\n}\n\nexport interface ITaskTriggerParams<I = ITaskDataInput> {\n parent?: ITask;\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 ITasksContextTriggerObject {\n trigger: <T = ITaskDataInput>(params: ITaskTriggerParams<T>) => Promise<ITask<T>>;\n abort: <T = ITaskDataInput>(params: ITaskAbortParams) => Promise<ITask<T>>;\n}\n\nexport interface ITasksContextObject\n extends ITasksContextCrudObject,\n ITasksContextDefinitionObject,\n ITasksContextTriggerObject,\n ITasksContextConfigObject {}\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(seconds?: number): boolean;\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<C extends Context, I = ITaskDataInput> {\n context: C;\n task: ITask<I>;\n}\n\nexport interface ITaskOnErrorParams<C extends Context, I = ITaskDataInput> {\n context: C;\n task: ITask<I>;\n}\n\nexport interface ITaskOnAbortParams<C extends Context> {\n context: C;\n task: ITask;\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 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 * 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>): 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>): 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 * 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":";;;;;;;;;;;;;;;;;;;AAgBA,IAAAA,kBAAA,GAAAC,OAAA;AAKA,IAAAC,MAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,MAAA,EAAAG,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,MAAAJ,MAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,MAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,aAAA,GAAAd,OAAA;AAAAE,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,GAAAf,OAAA;AAAAE,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,IAU1BW,gBAAgB,0BAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA;AAAAN,OAAA,CAAAM,gBAAA,GAAAA,gBAAA;AAAA,IAwChBC,cAAc,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA;AAAAP,OAAA,CAAAO,cAAA,GAAAA,cAAA;AAAA,IA+QdC,kBAAkB,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA;AAAAR,OAAA,CAAAQ,kBAAA,GAAAA,kBAAA"}
@@ -0,0 +1,8 @@
1
+ export declare class ObjectUpdater<T> {
2
+ private data;
3
+ merge(target: T, clear?: boolean): T;
4
+ fetch(clear?: boolean): Partial<T>;
5
+ update(input: Partial<T>): void;
6
+ isDirty(): boolean;
7
+ private clear;
8
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ObjectUpdater = void 0;
7
+ var _objectMergeAdvanced = require("object-merge-advanced");
8
+ /**
9
+ * We need to use the object-merge-advanced library to merge array items properly.
10
+ * With plain assign or lodash merge, we will lose array items from the source object.
11
+ */
12
+
13
+ const mergeOptions = {
14
+ hardArrayConcat: true
15
+ };
16
+ class ObjectUpdater {
17
+ data = {};
18
+ merge(target, clear = true) {
19
+ const item = (0, _objectMergeAdvanced.mergeAdvanced)(target, this.data, mergeOptions);
20
+ if (!clear) {
21
+ return item;
22
+ }
23
+ this.clear();
24
+ return item;
25
+ }
26
+ fetch(clear = true) {
27
+ const values = structuredClone(this.data);
28
+ if (!clear) {
29
+ return values;
30
+ }
31
+ this.clear();
32
+ return values;
33
+ }
34
+ update(input) {
35
+ this.data = (0, _objectMergeAdvanced.mergeAdvanced)(this.data, input, mergeOptions);
36
+ }
37
+ isDirty() {
38
+ return Object.keys(this.data).length > 0;
39
+ }
40
+ clear() {
41
+ this.data = {};
42
+ }
43
+ }
44
+ exports.ObjectUpdater = ObjectUpdater;
45
+
46
+ //# sourceMappingURL=ObjectUpdater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_objectMergeAdvanced","require","mergeOptions","hardArrayConcat","ObjectUpdater","data","merge","target","clear","item","mergeAdvanced","fetch","values","structuredClone","update","input","isDirty","Object","keys","length","exports"],"sources":["ObjectUpdater.ts"],"sourcesContent":["/**\n * We need to use the object-merge-advanced library to merge array items properly.\n * With plain assign or lodash merge, we will lose array items from the source object.\n */\nimport { defaults, mergeAdvanced } from \"object-merge-advanced\";\n\nconst mergeOptions: Partial<typeof defaults> = {\n hardArrayConcat: true\n};\n\nexport class ObjectUpdater<T> {\n private data: Partial<T> = {};\n\n public merge(target: T, clear = true): T {\n const item = mergeAdvanced(target, this.data, mergeOptions);\n if (!clear) {\n return item;\n }\n this.clear();\n return item;\n }\n\n public fetch(clear = true): Partial<T> {\n const values = structuredClone(this.data);\n if (!clear) {\n return values;\n }\n this.clear();\n return values;\n }\n public update(input: Partial<T>) {\n this.data = mergeAdvanced(this.data, input, mergeOptions);\n }\n\n public isDirty(): boolean {\n return Object.keys(this.data).length > 0;\n }\n\n private clear() {\n this.data = {};\n }\n}\n"],"mappings":";;;;;;AAIA,IAAAA,oBAAA,GAAAC,OAAA;AAJA;AACA;AACA;AACA;;AAGA,MAAMC,YAAsC,GAAG;EAC3CC,eAAe,EAAE;AACrB,CAAC;AAEM,MAAMC,aAAa,CAAI;EAClBC,IAAI,GAAe,CAAC,CAAC;EAEtBC,KAAKA,CAACC,MAAS,EAAEC,KAAK,GAAG,IAAI,EAAK;IACrC,MAAMC,IAAI,GAAG,IAAAC,kCAAa,EAACH,MAAM,EAAE,IAAI,CAACF,IAAI,EAAEH,YAAY,CAAC;IAC3D,IAAI,CAACM,KAAK,EAAE;MACR,OAAOC,IAAI;IACf;IACA,IAAI,CAACD,KAAK,CAAC,CAAC;IACZ,OAAOC,IAAI;EACf;EAEOE,KAAKA,CAACH,KAAK,GAAG,IAAI,EAAc;IACnC,MAAMI,MAAM,GAAGC,eAAe,CAAC,IAAI,CAACR,IAAI,CAAC;IACzC,IAAI,CAACG,KAAK,EAAE;MACR,OAAOI,MAAM;IACjB;IACA,IAAI,CAACJ,KAAK,CAAC,CAAC;IACZ,OAAOI,MAAM;EACjB;EACOE,MAAMA,CAACC,KAAiB,EAAE;IAC7B,IAAI,CAACV,IAAI,GAAG,IAAAK,kCAAa,EAAC,IAAI,CAACL,IAAI,EAAEU,KAAK,EAAEb,YAAY,CAAC;EAC7D;EAEOc,OAAOA,CAAA,EAAY;IACtB,OAAOC,MAAM,CAACC,IAAI,CAAC,IAAI,CAACb,IAAI,CAAC,CAACc,MAAM,GAAG,CAAC;EAC5C;EAEQX,KAAKA,CAAA,EAAG;IACZ,IAAI,CAACH,IAAI,GAAG,CAAC,CAAC;EAClB;AACJ;AAACe,OAAA,CAAAhB,aAAA,GAAAA,aAAA"}
@@ -1,9 +0,0 @@
1
- import { PutEventsCommandOutput } from "@webiny/aws-sdk/client-eventbridge";
2
- import { ITaskConfig, ITask } from "../types";
3
- export { PutEventsCommandOutput };
4
- export interface IFactoryParams {
5
- config: ITaskConfig;
6
- getTenant: () => string;
7
- getLocale: () => string;
8
- }
9
- export declare const createEventBridgeEventFactory: (params: IFactoryParams) => (task: ITask) => Promise<PutEventsCommandOutput>;
@@ -1,73 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- Object.defineProperty(exports, "PutEventsCommandOutput", {
8
- enumerable: true,
9
- get: function () {
10
- return _clientEventbridge.PutEventsCommandOutput;
11
- }
12
- });
13
- exports.createEventBridgeEventFactory = void 0;
14
- var _error = _interopRequireDefault(require("@webiny/error"));
15
- var _clientEventbridge = require("@webiny/aws-sdk/client-eventbridge");
16
- const createEventBridgeEvent = async params => {
17
- const {
18
- client,
19
- task,
20
- tenant,
21
- locale,
22
- eventBusName
23
- } = params;
24
- /**
25
- * The ITaskEvent is what our handler expect to get.
26
- * Endpoint and stateMachineId are added by the step function.
27
- */
28
- const event = {
29
- webinyTaskId: task.id,
30
- webinyTaskDefinitionId: task.definitionId,
31
- tenant,
32
- locale
33
- };
34
- const cmd = new _clientEventbridge.PutEventsCommand({
35
- Entries: [{
36
- Source: "webiny-api-tasks",
37
- EventBusName: eventBusName,
38
- DetailType: "WebinyBackgroundTask",
39
- Detail: JSON.stringify(event)
40
- }]
41
- });
42
- try {
43
- return await client.send(cmd);
44
- } catch (ex) {
45
- throw new _error.default(ex.message || "Could not trigger task via Event Bridge!", ex.code || "TRIGGER_TASK_ERROR", {
46
- event,
47
- ...(ex.data || {})
48
- });
49
- }
50
- };
51
- const createEventBridgeEventFactory = params => {
52
- const {
53
- config,
54
- getTenant,
55
- getLocale
56
- } = params;
57
- const client = new _clientEventbridge.EventBridgeClient({
58
- region: process.env.AWS_REGION
59
- });
60
- const eventBusName = config.eventBusName;
61
- return task => {
62
- return createEventBridgeEvent({
63
- client,
64
- eventBusName,
65
- task,
66
- tenant: getTenant(),
67
- locale: getLocale()
68
- });
69
- };
70
- };
71
- exports.createEventBridgeEventFactory = createEventBridgeEventFactory;
72
-
73
- //# sourceMappingURL=createEventBridgeEvent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_clientEventbridge","createEventBridgeEvent","params","client","task","tenant","locale","eventBusName","event","webinyTaskId","id","webinyTaskDefinitionId","definitionId","cmd","PutEventsCommand","Entries","Source","EventBusName","DetailType","Detail","JSON","stringify","send","ex","WebinyError","message","code","data","createEventBridgeEventFactory","config","getTenant","getLocale","EventBridgeClient","region","process","env","AWS_REGION","exports"],"sources":["createEventBridgeEvent.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n EventBridgeClient,\n PutEventsCommand,\n PutEventsCommandOutput\n} from \"@webiny/aws-sdk/client-eventbridge\";\nimport { ITaskConfig, ITask } from \"~/types\";\nimport { ITaskEventInput } from \"~/handler/types\";\n\nexport { PutEventsCommandOutput };\n\ninterface CreateEventBridgeEventParams {\n client: EventBridgeClient;\n task: Pick<ITask, \"id\" | \"definitionId\">;\n tenant: string;\n locale: string;\n eventBusName: string;\n}\n\nconst createEventBridgeEvent = async (params: CreateEventBridgeEventParams) => {\n const { client, task, tenant, locale, eventBusName } = params;\n /**\n * The ITaskEvent is what our handler expect to get.\n * Endpoint and stateMachineId are added by the step function.\n */\n const event: ITaskEventInput = {\n webinyTaskId: task.id,\n webinyTaskDefinitionId: task.definitionId,\n tenant,\n locale\n };\n\n const cmd = new PutEventsCommand({\n Entries: [\n {\n Source: \"webiny-api-tasks\",\n EventBusName: eventBusName,\n DetailType: \"WebinyBackgroundTask\",\n Detail: JSON.stringify(event)\n }\n ]\n });\n try {\n return await client.send(cmd);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not trigger task via Event Bridge!\",\n ex.code || \"TRIGGER_TASK_ERROR\",\n {\n event,\n ...(ex.data || {})\n }\n );\n }\n};\n\nexport interface IFactoryParams {\n config: ITaskConfig;\n getTenant: () => string;\n getLocale: () => string;\n}\n\nexport const createEventBridgeEventFactory = (params: IFactoryParams) => {\n const { config, getTenant, getLocale } = params;\n const client = new EventBridgeClient({\n region: process.env.AWS_REGION\n });\n const eventBusName = config.eventBusName;\n return (task: ITask) => {\n return createEventBridgeEvent({\n client,\n eventBusName,\n task,\n tenant: getTenant(),\n locale: getLocale()\n });\n };\n};\n"],"mappings":";;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAkBA,MAAME,sBAAsB,GAAG,MAAOC,MAAoC,IAAK;EAC3E,MAAM;IAAEC,MAAM;IAAEC,IAAI;IAAEC,MAAM;IAAEC,MAAM;IAAEC;EAAa,CAAC,GAAGL,MAAM;EAC7D;AACJ;AACA;AACA;EACI,MAAMM,KAAsB,GAAG;IAC3BC,YAAY,EAAEL,IAAI,CAACM,EAAE;IACrBC,sBAAsB,EAAEP,IAAI,CAACQ,YAAY;IACzCP,MAAM;IACNC;EACJ,CAAC;EAED,MAAMO,GAAG,GAAG,IAAIC,mCAAgB,CAAC;IAC7BC,OAAO,EAAE,CACL;MACIC,MAAM,EAAE,kBAAkB;MAC1BC,YAAY,EAAEV,YAAY;MAC1BW,UAAU,EAAE,sBAAsB;MAClCC,MAAM,EAAEC,IAAI,CAACC,SAAS,CAACb,KAAK;IAChC,CAAC;EAET,CAAC,CAAC;EACF,IAAI;IACA,OAAO,MAAML,MAAM,CAACmB,IAAI,CAACT,GAAG,CAAC;EACjC,CAAC,CAAC,OAAOU,EAAE,EAAE;IACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,0CAA0C,EACxDF,EAAE,CAACG,IAAI,IAAI,oBAAoB,EAC/B;MACIlB,KAAK;MACL,IAAIe,EAAE,CAACI,IAAI,IAAI,CAAC,CAAC;IACrB,CACJ,CAAC;EACL;AACJ,CAAC;AAQM,MAAMC,6BAA6B,GAAI1B,MAAsB,IAAK;EACrE,MAAM;IAAE2B,MAAM;IAAEC,SAAS;IAAEC;EAAU,CAAC,GAAG7B,MAAM;EAC/C,MAAMC,MAAM,GAAG,IAAI6B,oCAAiB,CAAC;IACjCC,MAAM,EAAEC,OAAO,CAACC,GAAG,CAACC;EACxB,CAAC,CAAC;EACF,MAAM7B,YAAY,GAAGsB,MAAM,CAACtB,YAAY;EACxC,OAAQH,IAAW,IAAK;IACpB,OAAOH,sBAAsB,CAAC;MAC1BE,MAAM;MACNI,YAAY;MACZH,IAAI;MACJC,MAAM,EAAEyB,SAAS,CAAC,CAAC;MACnBxB,MAAM,EAAEyB,SAAS,CAAC;IACtB,CAAC,CAAC;EACN,CAAC;AACL,CAAC;AAACM,OAAA,CAAAT,6BAAA,GAAAA,6BAAA"}
@@ -1,5 +0,0 @@
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;
@@ -1,18 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,4 +0,0 @@
1
- /**
2
- * Unfortunately we need some casting as we do not know which properties are available on the object.
3
- */
4
- export declare const getObjectProperties: <T = Record<string, any>>(input: unknown) => T;
@@ -1,21 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getObjectProperties = void 0;
7
- /**
8
- * Unfortunately we need some casting as we do not know which properties are available on the object.
9
- */
10
- const getObjectProperties = input => {
11
- if (!input || typeof input !== "object") {
12
- return {};
13
- }
14
- return Object.getOwnPropertyNames(input).reduce((acc, key) => {
15
- acc[key] = input[key];
16
- return acc;
17
- }, {});
18
- };
19
- exports.getObjectProperties = getObjectProperties;
20
-
21
- //# sourceMappingURL=getObjectProperties.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["getObjectProperties","input","Object","getOwnPropertyNames","reduce","acc","key","exports"],"sources":["getObjectProperties.ts"],"sourcesContent":["/**\n * Unfortunately we need some casting as we do not know which properties are available on the object.\n */\nexport const getObjectProperties = <T = Record<string, any>>(input: unknown): T => {\n if (!input || typeof input !== \"object\") {\n return {} as unknown as T;\n }\n return Object.getOwnPropertyNames(input).reduce<Record<string, any>>((acc, key) => {\n acc[key] = (input as Record<string, any>)[key];\n return acc;\n }, {}) as unknown as T;\n};\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACO,MAAMA,mBAAmB,GAA6BC,KAAc,IAAQ;EAC/E,IAAI,CAACA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IACrC,OAAO,CAAC,CAAC;EACb;EACA,OAAOC,MAAM,CAACC,mBAAmB,CAACF,KAAK,CAAC,CAACG,MAAM,CAAsB,CAACC,GAAG,EAAEC,GAAG,KAAK;IAC/ED,GAAG,CAACC,GAAG,CAAC,GAAIL,KAAK,CAAyBK,GAAG,CAAC;IAC9C,OAAOD,GAAG;EACd,CAAC,EAAE,CAAC,CAAC,CAAC;AACV,CAAC;AAACE,OAAA,CAAAP,mBAAA,GAAAA,mBAAA"}