@webiny/api-sync-system 0.0.0-unstable.6f45466a1d → 0.0.0-unstable.7be00a75a9
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/constants.js +2 -1
- package/constants.js.map +1 -1
- package/index.js +0 -2
- package/package.json +26 -22
- package/resolver/app/RecordHandler.js +83 -105
- package/resolver/app/RecordHandler.js.map +1 -1
- package/resolver/app/RecordsValidation.js +11 -14
- package/resolver/app/RecordsValidation.js.map +1 -1
- package/resolver/app/ResolverApplication.js +24 -31
- package/resolver/app/ResolverApplication.js.map +1 -1
- package/resolver/app/abstractions/RecordHandler.js +0 -3
- package/resolver/app/abstractions/RecordsValidation.js +0 -3
- package/resolver/app/abstractions/ResolverApplication.js +0 -3
- package/resolver/app/abstractions/ResolverRecord.js +0 -3
- package/resolver/app/bundler/BaseBundle.js +17 -16
- package/resolver/app/bundler/BaseBundle.js.map +1 -1
- package/resolver/app/bundler/Bundler.js +13 -18
- package/resolver/app/bundler/Bundler.js.map +1 -1
- package/resolver/app/bundler/Bundles.js +21 -26
- package/resolver/app/bundler/Bundles.js.map +1 -1
- package/resolver/app/bundler/CommandBundle.js +7 -16
- package/resolver/app/bundler/CommandBundle.js.map +1 -1
- package/resolver/app/bundler/TableBundle.js +6 -13
- package/resolver/app/bundler/TableBundle.js.map +1 -1
- package/resolver/app/bundler/types.js +0 -3
- package/resolver/app/commandHandler/DeleteCommandHandler.js +22 -29
- package/resolver/app/commandHandler/DeleteCommandHandler.js.map +1 -1
- package/resolver/app/commandHandler/PutCommandHandler.js +16 -22
- package/resolver/app/commandHandler/PutCommandHandler.js.map +1 -1
- package/resolver/app/commandHandler/delete.js +11 -12
- package/resolver/app/commandHandler/delete.js.map +1 -1
- package/resolver/app/commandHandler/put.js +11 -12
- package/resolver/app/commandHandler/put.js.map +1 -1
- package/resolver/app/data/SourceDataContainer.js +28 -30
- package/resolver/app/data/SourceDataContainer.js.map +1 -1
- package/resolver/app/data/types.js +0 -3
- package/resolver/app/fetcher/Fetcher.js +84 -109
- package/resolver/app/fetcher/Fetcher.js.map +1 -1
- package/resolver/app/fetcher/types.js +0 -3
- package/resolver/app/ingestor/Ingestor.js +27 -32
- package/resolver/app/ingestor/Ingestor.js.map +1 -1
- package/resolver/app/ingestor/IngestorResult.js +28 -32
- package/resolver/app/ingestor/IngestorResult.js.map +1 -1
- package/resolver/app/ingestor/types.js +0 -3
- package/resolver/app/storer/Storer.js +71 -85
- package/resolver/app/storer/Storer.js.map +1 -1
- package/resolver/app/storer/types.js +0 -3
- package/resolver/app/transform/TransformHandler.js +45 -56
- package/resolver/app/transform/TransformHandler.js.map +1 -1
- package/resolver/app/transform/middleware.js +13 -20
- package/resolver/app/transform/middleware.js.map +1 -1
- package/resolver/app/utils/Retry.js +21 -24
- package/resolver/app/utils/Retry.js.map +1 -1
- package/resolver/app/utils/sleep.js +4 -5
- package/resolver/app/utils/sleep.js.map +1 -1
- package/resolver/app/validation/body.d.ts +24 -123
- package/resolver/app/validation/body.js +26 -31
- package/resolver/app/validation/body.js.map +1 -1
- package/resolver/app/validation/createJsonTransform.d.ts +1 -1
- package/resolver/app/validation/createJsonTransform.js +12 -13
- package/resolver/app/validation/createJsonTransform.js.map +1 -1
- package/resolver/app/validation/detail.d.ts +17 -70
- package/resolver/app/validation/detail.js +30 -35
- package/resolver/app/validation/detail.js.map +1 -1
- package/resolver/app/validation/event.d.ts +28 -187
- package/resolver/app/validation/event.js +17 -18
- package/resolver/app/validation/event.js.map +1 -1
- package/resolver/app/validation/numericString.d.ts +1 -1
- package/resolver/app/validation/numericString.js +8 -11
- package/resolver/app/validation/numericString.js.map +1 -1
- package/resolver/app/validation/system.d.ts +2 -14
- package/resolver/app/validation/system.js +8 -9
- package/resolver/app/validation/system.js.map +1 -1
- package/resolver/createEventHandlerPlugin.js +70 -99
- package/resolver/createEventHandlerPlugin.js.map +1 -1
- package/resolver/createResolverHandler.js +49 -57
- package/resolver/createResolverHandler.js.map +1 -1
- package/resolver/deployment/Deployment.js +28 -37
- package/resolver/deployment/Deployment.js.map +1 -1
- package/resolver/deployment/Deployments.js +20 -23
- package/resolver/deployment/Deployments.js.map +1 -1
- package/resolver/deployment/DeploymentsFetcher.js +75 -86
- package/resolver/deployment/DeploymentsFetcher.js.map +1 -1
- package/resolver/deployment/types.d.ts +0 -2
- package/resolver/deployment/types.js +0 -3
- package/resolver/lambda/LambdaTrigger.js +24 -26
- package/resolver/lambda/LambdaTrigger.js.map +1 -1
- package/resolver/plugins/CommandHandlerPlugin.js +16 -15
- package/resolver/plugins/CommandHandlerPlugin.js.map +1 -1
- package/resolver/plugins/StorerAfterEachPlugin.js +20 -19
- package/resolver/plugins/StorerAfterEachPlugin.js.map +1 -1
- package/resolver/plugins/TransformRecordPlugin.js +19 -18
- package/resolver/plugins/TransformRecordPlugin.js.map +1 -1
- package/resolver/recordTypes/fileManager/CopyFile.js +44 -67
- package/resolver/recordTypes/fileManager/CopyFile.js.map +1 -1
- package/resolver/recordTypes/fileManager/DeleteFile.js +40 -58
- package/resolver/recordTypes/fileManager/DeleteFile.js.map +1 -1
- package/resolver/recordTypes/fileManager/fileManager.js +5 -3
- package/resolver/recordTypes/fileManager/fileManager.js.map +1 -1
- package/resolver/recordTypes/fileManager/fileManagerOnDelete.js +24 -35
- package/resolver/recordTypes/fileManager/fileManagerOnDelete.js.map +1 -1
- package/resolver/recordTypes/fileManager/fileManagerOnPut.js +24 -35
- package/resolver/recordTypes/fileManager/fileManagerOnPut.js.map +1 -1
- package/resolver/recordTypes/fileManager/shouldBeHandled.js +10 -27
- package/resolver/recordTypes/fileManager/shouldBeHandled.js.map +1 -1
- package/resolver/recordTypes/fileManager/types.js +0 -3
- package/resolver/recordTypes/users/CopyUser.js +44 -54
- package/resolver/recordTypes/users/CopyUser.js.map +1 -1
- package/resolver/recordTypes/users/DeleteUser.js +40 -51
- package/resolver/recordTypes/users/DeleteUser.js.map +1 -1
- package/resolver/recordTypes/users/shouldBeHandled.js +10 -26
- package/resolver/recordTypes/users/shouldBeHandled.js.map +1 -1
- package/resolver/recordTypes/users/types.js +0 -3
- package/resolver/recordTypes/users/users.js +5 -3
- package/resolver/recordTypes/users/users.js.map +1 -1
- package/resolver/recordTypes/users/usersOnDelete.js +23 -34
- package/resolver/recordTypes/users/usersOnDelete.js.map +1 -1
- package/resolver/recordTypes/users/usersOnPut.js +24 -35
- package/resolver/recordTypes/users/usersOnPut.js.map +1 -1
- package/sync/FilterOutRecord.js +9 -17
- package/sync/FilterOutRecord.js.map +1 -1
- package/sync/attachToDynamoDbDocument.js +46 -65
- package/sync/attachToDynamoDbDocument.js.map +1 -1
- package/sync/createHandler.js +31 -40
- package/sync/createHandler.js.map +1 -1
- package/sync/createSendDataToEventBridgeOnRequestEnd.js +32 -37
- package/sync/createSendDataToEventBridgeOnRequestEnd.js.map +1 -1
- package/sync/createSyncSystem.js +24 -26
- package/sync/createSyncSystem.js.map +1 -1
- package/sync/filter/createDefaultFilterOutRecordPlugins.js +37 -76
- package/sync/filter/createDefaultFilterOutRecordPlugins.js.map +1 -1
- package/sync/handler/Handler.js +64 -76
- package/sync/handler/Handler.js.map +1 -1
- package/sync/handler/HandlerConverter.js +21 -29
- package/sync/handler/HandlerConverter.js.map +1 -1
- package/sync/handler/converter/BatchGetCommandConverter.js +12 -11
- package/sync/handler/converter/BatchGetCommandConverter.js.map +1 -1
- package/sync/handler/converter/BatchWriteCommandConverter.js +12 -11
- package/sync/handler/converter/BatchWriteCommandConverter.js.map +1 -1
- package/sync/handler/converter/DeleteCommandConverter.js +12 -11
- package/sync/handler/converter/DeleteCommandConverter.js.map +1 -1
- package/sync/handler/converter/GetCommandConverter.js +12 -11
- package/sync/handler/converter/GetCommandConverter.js.map +1 -1
- package/sync/handler/converter/PutCommandConverter.js +12 -11
- package/sync/handler/converter/PutCommandConverter.js.map +1 -1
- package/sync/handler/converter/QueryCommandConverter.js +12 -11
- package/sync/handler/converter/QueryCommandConverter.js.map +1 -1
- package/sync/handler/converter/ScanCommandConverter.js +12 -11
- package/sync/handler/converter/ScanCommandConverter.js.map +1 -1
- package/sync/handler/converter/UpdateCommandConverter.js +12 -11
- package/sync/handler/converter/UpdateCommandConverter.js.map +1 -1
- package/sync/handler/converter/commands/BatchWriteCommandValue.js +34 -37
- package/sync/handler/converter/commands/BatchWriteCommandValue.js.map +1 -1
- package/sync/handler/converter/commands/DeleteCommandValue.js +19 -16
- package/sync/handler/converter/commands/DeleteCommandValue.js.map +1 -1
- package/sync/handler/converter/commands/NullCommandValue.js +8 -8
- package/sync/handler/converter/commands/NullCommandValue.js.map +1 -1
- package/sync/handler/converter/commands/PutCommandValue.js +19 -16
- package/sync/handler/converter/commands/PutCommandValue.js.map +1 -1
- package/sync/handler/converter/commands/UpdateCommandValue.js +19 -16
- package/sync/handler/converter/commands/UpdateCommandValue.js.map +1 -1
- package/sync/handler/types.js +0 -3
- package/sync/plugins/FilterOutRecordPlugin.js +17 -19
- package/sync/plugins/FilterOutRecordPlugin.js.map +1 -1
- package/sync/requestPlugin.js +33 -48
- package/sync/requestPlugin.js.map +1 -1
- package/sync/types.js +0 -3
- package/sync/utils/getTableType.js +10 -11
- package/sync/utils/getTableType.js.map +1 -1
- package/sync/utils/manifest.d.ts +1 -1
- package/sync/utils/manifest.js +28 -35
- package/sync/utils/manifest.js.map +1 -1
- package/sync/utils/validateSystemInput.js +21 -29
- package/sync/utils/validateSystemInput.js.map +1 -1
- package/types.d.ts +0 -1
- package/types.js +6 -6
- package/types.js.map +1 -1
- package/utils/createSystemName.js +5 -3
- package/utils/createSystemName.js.map +1 -1
- package/worker/actions/copyFile/CopyFile.js +183 -258
- package/worker/actions/copyFile/CopyFile.js.map +1 -1
- package/worker/actions/copyFile/copyFileAction.js +26 -34
- package/worker/actions/copyFile/copyFileAction.js.map +1 -1
- package/worker/actions/copyFile/copyFileSchema.d.ts +6 -38
- package/worker/actions/copyFile/copyFileSchema.js +13 -14
- package/worker/actions/copyFile/copyFileSchema.js.map +1 -1
- package/worker/actions/copyFile/types.js +0 -3
- package/worker/actions/createUser/CreateUser.js +51 -74
- package/worker/actions/createUser/CreateUser.js.map +1 -1
- package/worker/actions/createUser/createUserAction.js +24 -28
- package/worker/actions/createUser/createUserAction.js.map +1 -1
- package/worker/actions/createUser/createUserSchema.d.ts +6 -38
- package/worker/actions/createUser/createUserSchema.js +13 -14
- package/worker/actions/createUser/createUserSchema.js.map +1 -1
- package/worker/actions/createUser/types.js +0 -3
- package/worker/actions/deleteFile/DeleteFile.js +52 -67
- package/worker/actions/deleteFile/DeleteFile.js.map +1 -1
- package/worker/actions/deleteFile/deleteFileAction.js +21 -29
- package/worker/actions/deleteFile/deleteFileAction.js.map +1 -1
- package/worker/actions/deleteFile/deleteFileSchema.d.ts +6 -38
- package/worker/actions/deleteFile/deleteFileSchema.js +13 -14
- package/worker/actions/deleteFile/deleteFileSchema.js.map +1 -1
- package/worker/actions/deleteFile/types.js +0 -3
- package/worker/actions/deleteUser/DeleteUser.js +38 -52
- package/worker/actions/deleteUser/DeleteUser.js.map +1 -1
- package/worker/actions/deleteUser/deleteUserAction.js +22 -26
- package/worker/actions/deleteUser/deleteUserAction.js.map +1 -1
- package/worker/actions/deleteUser/deleteUserSchema.d.ts +5 -23
- package/worker/actions/deleteUser/deleteUserSchema.js +12 -13
- package/worker/actions/deleteUser/deleteUserSchema.js.map +1 -1
- package/worker/actions/deleteUser/types.js +0 -3
- package/worker/actions/logValidationError.js +5 -6
- package/worker/actions/logValidationError.js.map +1 -1
- package/worker/actions/removeCognitoUserAttributes.js +9 -15
- package/worker/actions/removeCognitoUserAttributes.js.map +1 -1
- package/worker/actions/updateUser/UpdateUser.js +48 -65
- package/worker/actions/updateUser/UpdateUser.js.map +1 -1
- package/worker/actions/updateUser/types.js +0 -3
- package/worker/actions/updateUser/updateUserAction.js +24 -28
- package/worker/actions/updateUser/updateUserAction.js.map +1 -1
- package/worker/actions/updateUser/updateUserSchema.d.ts +6 -38
- package/worker/actions/updateUser/updateUserSchema.js +13 -14
- package/worker/actions/updateUser/updateUserSchema.js.map +1 -1
- package/worker/createWorkerHandler.js +24 -30
- package/worker/createWorkerHandler.js.map +1 -1
- package/worker/handler/WorkerActionHandler.js +19 -21
- package/worker/handler/WorkerActionHandler.js.map +1 -1
- package/worker/handler/eventHandler.js +14 -16
- package/worker/handler/eventHandler.js.map +1 -1
- package/worker/plugins/WorkerActionPlugin.js +17 -16
- package/worker/plugins/WorkerActionPlugin.js.map +1 -1
- package/worker/types.js +0 -3
- package/index.js.map +0 -1
- package/resolver/app/abstractions/RecordHandler.js.map +0 -1
- package/resolver/app/abstractions/RecordsValidation.js.map +0 -1
- package/resolver/app/abstractions/ResolverApplication.js.map +0 -1
- package/resolver/app/abstractions/ResolverRecord.js.map +0 -1
- package/resolver/app/bundler/types.js.map +0 -1
- package/resolver/app/data/types.js.map +0 -1
- package/resolver/app/fetcher/types.js.map +0 -1
- package/resolver/app/ingestor/types.js.map +0 -1
- package/resolver/app/storer/types.js.map +0 -1
- package/resolver/deployment/types.js.map +0 -1
- package/resolver/recordTypes/fileManager/types.js.map +0 -1
- package/resolver/recordTypes/users/types.js.map +0 -1
- package/sync/handler/types.js.map +0 -1
- package/sync/types.js.map +0 -1
- package/worker/actions/copyFile/types.js.map +0 -1
- package/worker/actions/createUser/types.js.map +0 -1
- package/worker/actions/deleteFile/types.js.map +0 -1
- package/worker/actions/deleteUser/types.js.map +0 -1
- package/worker/actions/updateUser/types.js.map +0 -1
- package/worker/types.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"resolver/app/storer/Storer.js","sources":["../../../../src/resolver/app/storer/Storer.ts"],"sourcesContent":["import type { IStoreItem, IStorer, IStorerExecParams } from \"./types.js\";\nimport type { IDeployment } from \"~/resolver/deployment/types.js\";\nimport type {\n DeleteCommandOutput,\n DynamoDBDocument,\n PutCommandOutput\n} from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport { DeleteCommand, PutCommand } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport type { CommandType } from \"~/types.js\";\nimport type { ITable } from \"~/sync/types.js\";\nimport { createRetry } from \"../utils/Retry.js\";\nimport { convertException } from \"@webiny/utils\";\n\nexport interface IStorerParamsCreateDocumentClientCallable {\n (deployment: Pick<IDeployment, \"region\">): Pick<DynamoDBDocument, \"send\">;\n}\n\nexport interface IStorerOnErrorParams {\n command: CommandType;\n item: IStoreItem;\n table: ITable;\n error: Error;\n}\n\nexport interface IStorerOnErrorCb {\n (params: IStorerOnErrorParams): Promise<void>;\n}\n\nexport interface ISingleStorerAfterEachParams {\n command: CommandType;\n target: IDeployment;\n source: IDeployment;\n table: ITable;\n item: IStoreItem;\n}\n\nexport interface IStorerAfterEachCb {\n (params: ISingleStorerAfterEachParams): Promise<void>;\n}\n\nexport interface IStorerParams {\n maxRetries?: number;\n retryDelay?: number;\n createDocumentClient: IStorerParamsCreateDocumentClientCallable;\n onError?: IStorerOnErrorCb;\n afterEach?: IStorerAfterEachCb;\n}\n\nexport class Storer implements IStorer {\n private readonly maxRetries: number;\n private readonly retryDelay: number;\n private readonly createDocumentClient: IStorerParamsCreateDocumentClientCallable;\n private readonly afterEach?: IStorerAfterEachCb;\n private readonly onError?: IStorerOnErrorCb;\n\n public constructor(params: IStorerParams) {\n this.maxRetries = params.maxRetries || 10;\n this.retryDelay = params.retryDelay || 1000;\n this.createDocumentClient = params.createDocumentClient;\n this.afterEach = params.afterEach;\n this.onError = params.onError;\n }\n\n public async store(params: IStorerExecParams): Promise<void> {\n const { deployment, bundle, table, command, items } = params;\n if (items.length === 0) {\n return;\n }\n const client = this.createDocumentClient({\n region: deployment.region\n });\n\n const retry = createRetry({\n maxRetries: this.maxRetries,\n retryDelay: this.retryDelay\n });\n\n for (const item of items) {\n const result = await retry.retry(\n async (): Promise<DeleteCommandOutput | PutCommandOutput | null> => {\n switch (command) {\n case \"delete\":\n return await client.send(\n new DeleteCommand({\n TableName: table.name,\n Key: {\n PK: item.PK,\n SK: item.SK\n }\n })\n );\n case \"put\":\n return await client.send(\n new PutCommand({\n TableName: table.name,\n Item: item\n })\n );\n\n default:\n console.error(`Unsupported command type: ${command}`);\n return null;\n }\n },\n {\n onFail: async error => {\n console.error(\"Error executing batch write command.\");\n console.log(convertException(error));\n if (!this.onError) {\n return;\n }\n try {\n await this.onError({\n item,\n command,\n table,\n error\n });\n } catch (ex) {\n console.error(`Error in onError callback for command: ${command}`);\n console.log({\n original: convertException(error),\n error: convertException(ex)\n });\n }\n }\n }\n );\n if (!result || !this.afterEach) {\n continue;\n }\n try {\n await this.afterEach({\n table,\n command,\n item,\n source: bundle.source,\n target: deployment\n });\n } catch (ex) {\n console.error(`Error in afterEach callback for command: ${command}`);\n console.log(convertException(ex));\n }\n }\n }\n}\n\nexport const createStorer = (params: IStorerParams): IStorer => {\n return new Storer(params);\n};\n"],"names":["Storer","params","deployment","bundle","table","command","items","client","retry","createRetry","item","result","DeleteCommand","PutCommand","console","error","convertException","ex","createStorer"],"mappings":";;;AAgDO,MAAMA;IAOT,YAAmBC,MAAqB,CAAE;QACtC,IAAI,CAAC,UAAU,GAAGA,OAAO,UAAU,IAAI;QACvC,IAAI,CAAC,UAAU,GAAGA,OAAO,UAAU,IAAI;QACvC,IAAI,CAAC,oBAAoB,GAAGA,OAAO,oBAAoB;QACvD,IAAI,CAAC,SAAS,GAAGA,OAAO,SAAS;QACjC,IAAI,CAAC,OAAO,GAAGA,OAAO,OAAO;IACjC;IAEA,MAAa,MAAMA,MAAyB,EAAiB;QACzD,MAAM,EAAEC,UAAU,EAAEC,MAAM,EAAEC,KAAK,EAAEC,OAAO,EAAEC,KAAK,EAAE,GAAGL;QACtD,IAAIK,AAAiB,MAAjBA,MAAM,MAAM,EACZ;QAEJ,MAAMC,SAAS,IAAI,CAAC,oBAAoB,CAAC;YACrC,QAAQL,WAAW,MAAM;QAC7B;QAEA,MAAMM,QAAQC,YAAY;YACtB,YAAY,IAAI,CAAC,UAAU;YAC3B,YAAY,IAAI,CAAC,UAAU;QAC/B;QAEA,KAAK,MAAMC,QAAQJ,MAAO;YACtB,MAAMK,SAAS,MAAMH,MAAM,KAAK,CAC5B;gBACI,OAAQH;oBACJ,KAAK;wBACD,OAAO,MAAME,OAAO,IAAI,CACpB,IAAIK,cAAc;4BACd,WAAWR,MAAM,IAAI;4BACrB,KAAK;gCACD,IAAIM,KAAK,EAAE;gCACX,IAAIA,KAAK,EAAE;4BACf;wBACJ;oBAER,KAAK;wBACD,OAAO,MAAMH,OAAO,IAAI,CACpB,IAAIM,WAAW;4BACX,WAAWT,MAAM,IAAI;4BACrB,MAAMM;wBACV;oBAGR;wBACII,QAAQ,KAAK,CAAC,CAAC,0BAA0B,EAAET,SAAS;wBACpD,OAAO;gBACf;YACJ,GACA;gBACI,QAAQ,OAAMU;oBACVD,QAAQ,KAAK,CAAC;oBACdA,QAAQ,GAAG,CAACE,iBAAiBD;oBAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,EACb;oBAEJ,IAAI;wBACA,MAAM,IAAI,CAAC,OAAO,CAAC;4BACfL;4BACAL;4BACAD;4BACAW;wBACJ;oBACJ,EAAE,OAAOE,IAAI;wBACTH,QAAQ,KAAK,CAAC,CAAC,uCAAuC,EAAET,SAAS;wBACjES,QAAQ,GAAG,CAAC;4BACR,UAAUE,iBAAiBD;4BAC3B,OAAOC,iBAAiBC;wBAC5B;oBACJ;gBACJ;YACJ;YAEJ,IAAI,AAACN,UAAW,IAAI,CAAC,SAAS,EAG9B,IAAI;gBACA,MAAM,IAAI,CAAC,SAAS,CAAC;oBACjBP;oBACAC;oBACAK;oBACA,QAAQP,OAAO,MAAM;oBACrB,QAAQD;gBACZ;YACJ,EAAE,OAAOe,IAAI;gBACTH,QAAQ,KAAK,CAAC,CAAC,yCAAyC,EAAET,SAAS;gBACnES,QAAQ,GAAG,CAACE,iBAAiBC;YACjC;QACJ;IACJ;AACJ;AAEO,MAAMC,eAAe,CAACjB,SAClB,IAAID,OAAOC"}
|
|
@@ -1,63 +1,52 @@
|
|
|
1
1
|
import { TransformRecordPlugin } from "../../plugins/TransformRecordPlugin.js";
|
|
2
2
|
import { middleware } from "./middleware.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
async transform(params) {
|
|
9
|
-
const {
|
|
10
|
-
sourceTable,
|
|
11
|
-
sourceDeployment,
|
|
12
|
-
targetDeployment,
|
|
13
|
-
targetTable,
|
|
14
|
-
items
|
|
15
|
-
} = params;
|
|
16
|
-
if (this.plugins.length === 0) {
|
|
17
|
-
process.env.DEBUG === "true" && console.log("There are no transform plugins registered in the system.");
|
|
18
|
-
return {
|
|
19
|
-
items
|
|
20
|
-
};
|
|
3
|
+
class TransformHandler {
|
|
4
|
+
constructor(params){
|
|
5
|
+
this.pluginsContainer = params.plugins;
|
|
6
|
+
this.plugins = params.plugins.byType(TransformRecordPlugin.type);
|
|
21
7
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
8
|
+
async transform(params) {
|
|
9
|
+
const { sourceTable, sourceDeployment, targetDeployment, targetTable, items } = params;
|
|
10
|
+
if (0 === this.plugins.length) {
|
|
11
|
+
"true" === process.env.DEBUG && console.log("There are no transform plugins registered in the system.");
|
|
12
|
+
return {
|
|
13
|
+
items
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
const plugins = this.plugins.filter((plugin)=>{
|
|
17
|
+
if (false === plugin.isForTableType(sourceTable.type)) return false;
|
|
18
|
+
return plugin.canTransform({
|
|
19
|
+
from: sourceDeployment,
|
|
20
|
+
to: targetDeployment
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
if (0 === plugins.length) {
|
|
24
|
+
"true" === process.env.DEBUG && console.log("There are no transform plugins registered for the given deployment versions or sourceTable type.", {
|
|
25
|
+
sourceVersion: sourceDeployment.version.format(),
|
|
26
|
+
targetVersion: targetDeployment.version.format(),
|
|
27
|
+
sourceTable
|
|
28
|
+
});
|
|
29
|
+
return {
|
|
30
|
+
items
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const runner = middleware(plugins.map((plugin)=>async (params, next)=>await plugin.transform(params, next)));
|
|
34
|
+
const results = await Promise.all(items.map(async (input)=>{
|
|
35
|
+
const record = Object.freeze(input);
|
|
36
|
+
return await runner({
|
|
37
|
+
plugins: this.pluginsContainer,
|
|
38
|
+
sourceTable,
|
|
39
|
+
sourceDeployment,
|
|
40
|
+
targetDeployment,
|
|
41
|
+
targetTable,
|
|
42
|
+
record
|
|
43
|
+
}, record);
|
|
44
|
+
}));
|
|
45
|
+
return {
|
|
46
|
+
items: results.filter((item)=>!!item)
|
|
47
|
+
};
|
|
40
48
|
}
|
|
41
|
-
const runner = middleware(plugins.map(plugin => {
|
|
42
|
-
return async (params, next) => {
|
|
43
|
-
return await plugin.transform(params, next);
|
|
44
|
-
};
|
|
45
|
-
}));
|
|
46
|
-
const results = await Promise.all(items.map(async input => {
|
|
47
|
-
const record = Object.freeze(input);
|
|
48
|
-
return await runner({
|
|
49
|
-
plugins: this.pluginsContainer,
|
|
50
|
-
sourceTable,
|
|
51
|
-
sourceDeployment,
|
|
52
|
-
targetDeployment,
|
|
53
|
-
targetTable,
|
|
54
|
-
record
|
|
55
|
-
}, record);
|
|
56
|
-
}));
|
|
57
|
-
return {
|
|
58
|
-
items: results.filter(item => !!item)
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
49
|
}
|
|
50
|
+
export { TransformHandler };
|
|
62
51
|
|
|
63
52
|
//# sourceMappingURL=TransformHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"resolver/app/transform/TransformHandler.js","sources":["../../../../src/resolver/app/transform/TransformHandler.ts"],"sourcesContent":["import type { ITable } from \"~/sync/types.js\";\nimport type { IDeployment } from \"~/resolver/deployment/types.js\";\nimport type { PluginsContainer } from \"@webiny/plugins/types.js\";\nimport { TransformRecordPlugin } from \"~/resolver/plugins/TransformRecordPlugin.js\";\nimport { middleware } from \"./middleware.js\";\nimport type { IStoreItem } from \"../storer/types.js\";\n\nexport interface IMiddlewareParams {\n readonly plugins: PluginsContainer;\n readonly record: IStoreItem;\n readonly sourceDeployment: IDeployment;\n readonly targetDeployment: IDeployment;\n readonly sourceTable: ITable;\n readonly targetTable: ITable;\n}\n\nexport interface ITransformHandlerTransformParams {\n readonly sourceTable: ITable;\n readonly sourceDeployment: IDeployment;\n readonly targetTable: ITable;\n readonly targetDeployment: IDeployment;\n readonly items: IStoreItem[];\n}\n\nexport interface ITransformHandlerTransformResult {\n items: IStoreItem[];\n}\n\nexport interface ITransformHandler {\n transform(params: ITransformHandlerTransformParams): Promise<ITransformHandlerTransformResult>;\n}\n\nexport interface ITransformHandlerParams {\n readonly plugins: PluginsContainer;\n}\n\nexport class TransformHandler implements ITransformHandler {\n private readonly pluginsContainer: PluginsContainer;\n private readonly plugins: TransformRecordPlugin[];\n\n public constructor(params: ITransformHandlerParams) {\n this.pluginsContainer = params.plugins;\n this.plugins = params.plugins.byType<TransformRecordPlugin>(TransformRecordPlugin.type);\n }\n\n public async transform(\n params: ITransformHandlerTransformParams\n ): Promise<ITransformHandlerTransformResult> {\n const { sourceTable, sourceDeployment, targetDeployment, targetTable, items } = params;\n\n if (this.plugins.length === 0) {\n process.env.DEBUG === \"true\" &&\n console.log(\"There are no transform plugins registered in the system.\");\n return {\n items\n };\n }\n\n const plugins = this.plugins.filter(plugin => {\n if (plugin.isForTableType(sourceTable.type) === false) {\n return false;\n }\n return plugin.canTransform({\n from: sourceDeployment,\n to: targetDeployment\n });\n });\n\n if (plugins.length === 0) {\n process.env.DEBUG === \"true\" &&\n console.log(\n \"There are no transform plugins registered for the given deployment versions or sourceTable type.\",\n {\n sourceVersion: sourceDeployment.version.format(),\n targetVersion: targetDeployment.version.format(),\n sourceTable\n }\n );\n return {\n items\n };\n }\n\n const runner = middleware<IMiddlewareParams, IStoreItem>(\n plugins.map(plugin => {\n return async (params, next) => {\n return await plugin.transform(params, next);\n };\n })\n );\n\n const results = await Promise.all(\n items.map(async input => {\n const record = Object.freeze(input);\n return await runner(\n {\n plugins: this.pluginsContainer,\n sourceTable,\n sourceDeployment,\n targetDeployment,\n targetTable,\n record\n },\n record\n );\n })\n );\n return {\n items: results.filter((item): item is IStoreItem => !!item)\n };\n }\n}\n"],"names":["TransformHandler","params","TransformRecordPlugin","sourceTable","sourceDeployment","targetDeployment","targetTable","items","process","console","plugins","plugin","runner","middleware","next","results","Promise","input","record","Object","item"],"mappings":";;AAoCO,MAAMA;IAIT,YAAmBC,MAA+B,CAAE;QAChD,IAAI,CAAC,gBAAgB,GAAGA,OAAO,OAAO;QACtC,IAAI,CAAC,OAAO,GAAGA,OAAO,OAAO,CAAC,MAAM,CAAwBC,sBAAsB,IAAI;IAC1F;IAEA,MAAa,UACTD,MAAwC,EACC;QACzC,MAAM,EAAEE,WAAW,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,WAAW,EAAEC,KAAK,EAAE,GAAGN;QAEhF,IAAI,AAAwB,MAAxB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAQ;YACL,WAAtBO,QAAQ,GAAG,CAAC,KAAK,IACbC,QAAQ,GAAG,CAAC;YAChB,OAAO;gBACHF;YACJ;QACJ;QAEA,MAAMG,UAAU,IAAI,CAAC,OAAO,CAAC,MAAM,CAACC,CAAAA;YAChC,IAAIA,AAA4C,UAA5CA,OAAO,cAAc,CAACR,YAAY,IAAI,GACtC,OAAO;YAEX,OAAOQ,OAAO,YAAY,CAAC;gBACvB,MAAMP;gBACN,IAAIC;YACR;QACJ;QAEA,IAAIK,AAAmB,MAAnBA,QAAQ,MAAM,EAAQ;YACA,WAAtBF,QAAQ,GAAG,CAAC,KAAK,IACbC,QAAQ,GAAG,CACP,oGACA;gBACI,eAAeL,iBAAiB,OAAO,CAAC,MAAM;gBAC9C,eAAeC,iBAAiB,OAAO,CAAC,MAAM;gBAC9CF;YACJ;YAER,OAAO;gBACHI;YACJ;QACJ;QAEA,MAAMK,SAASC,WACXH,QAAQ,GAAG,CAACC,CAAAA,SACD,OAAOV,QAAQa,OACX,MAAMH,OAAO,SAAS,CAACV,QAAQa;QAKlD,MAAMC,UAAU,MAAMC,QAAQ,GAAG,CAC7BT,MAAM,GAAG,CAAC,OAAMU;YACZ,MAAMC,SAASC,OAAO,MAAM,CAACF;YAC7B,OAAO,MAAML,OACT;gBACI,SAAS,IAAI,CAAC,gBAAgB;gBAC9BT;gBACAC;gBACAC;gBACAC;gBACAY;YACJ,GACAA;QAER;QAEJ,OAAO;YACH,OAAOH,QAAQ,MAAM,CAAC,CAACK,OAA6B,CAAC,CAACA;QAC1D;IACJ;AACJ"}
|
|
@@ -1,23 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const fn = middlewares[index];
|
|
14
|
-
if (!fn) {
|
|
15
|
-
return defaultValue;
|
|
16
|
-
}
|
|
17
|
-
return fn(input, () => dispatch(index + 1));
|
|
18
|
-
}
|
|
19
|
-
return dispatch(0);
|
|
20
|
-
};
|
|
1
|
+
function middleware(middlewares) {
|
|
2
|
+
return async function(input, defaultValue) {
|
|
3
|
+
let current = -1;
|
|
4
|
+
async function dispatch(index) {
|
|
5
|
+
if (index <= current) throw new Error("next() called multiple times");
|
|
6
|
+
current = index;
|
|
7
|
+
const fn = middlewares[index];
|
|
8
|
+
if (!fn) return defaultValue;
|
|
9
|
+
return fn(input, ()=>dispatch(index + 1));
|
|
10
|
+
}
|
|
11
|
+
return dispatch(0);
|
|
12
|
+
};
|
|
21
13
|
}
|
|
14
|
+
export { middleware };
|
|
22
15
|
|
|
23
16
|
//# sourceMappingURL=middleware.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"resolver/app/transform/middleware.js","sources":["../../../../src/resolver/app/transform/middleware.ts"],"sourcesContent":["import type { GenericRecord } from \"@webiny/api/types.js\";\n\nexport type Middleware<Input, Output> = (\n input: Input,\n next: () => Promise<Output>\n) => Promise<Output>;\n\nexport function middleware<Input = GenericRecord, Output = GenericRecord>(\n middlewares: Middleware<Input, Output>[]\n) {\n return async function runner(input: Input, defaultValue: Output): Promise<Output> {\n let current = -1;\n\n async function dispatch(index: number): Promise<Output> {\n /**\n * Should not be possible to run next multiple times.\n * Or do we want to allow it? What are possible downsides except something being done multiple times?\n */\n if (index <= current) {\n throw new Error(\"next() called multiple times\");\n }\n current = index;\n\n const fn = middlewares[index];\n if (!fn) {\n return defaultValue;\n }\n\n return fn(input, () => dispatch(index + 1));\n }\n\n return dispatch(0);\n };\n}\n"],"names":["middleware","middlewares","input","defaultValue","current","dispatch","index","Error","fn"],"mappings":"AAOO,SAASA,WACZC,WAAwC;IAExC,OAAO,eAAsBC,KAAY,EAAEC,YAAoB;QAC3D,IAAIC,UAAU;QAEd,eAAeC,SAASC,KAAa;YAKjC,IAAIA,SAASF,SACT,MAAM,IAAIG,MAAM;YAEpBH,UAAUE;YAEV,MAAME,KAAKP,WAAW,CAACK,MAAM;YAC7B,IAAI,CAACE,IACD,OAAOL;YAGX,OAAOK,GAAGN,OAAO,IAAMG,SAASC,QAAQ;QAC5C;QAEA,OAAOD,SAAS;IACpB;AACJ"}
|
|
@@ -1,30 +1,27 @@
|
|
|
1
1
|
import { sleep } from "./sleep.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
2
|
+
class Retry {
|
|
3
|
+
constructor(params){
|
|
4
|
+
this.retryCount = 0;
|
|
5
|
+
this.maxRetries = params.maxRetries;
|
|
6
|
+
this.retryDelay = params.retryDelay;
|
|
7
|
+
}
|
|
8
|
+
async retry(fn, options) {
|
|
9
|
+
try {
|
|
10
|
+
return await fn();
|
|
11
|
+
} catch (ex) {
|
|
12
|
+
if (this.retryCount >= this.maxRetries) {
|
|
13
|
+
if (options?.onFail) await options.onFail(ex);
|
|
14
|
+
throw ex;
|
|
15
|
+
}
|
|
15
16
|
}
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
this.retryCount++;
|
|
18
|
+
await sleep(this.retryDelay);
|
|
19
|
+
const result = await this.retry(fn, options);
|
|
20
|
+
this.retryCount = 0;
|
|
21
|
+
return result;
|
|
18
22
|
}
|
|
19
|
-
this.retryCount++;
|
|
20
|
-
await sleep(this.retryDelay);
|
|
21
|
-
const result = await this.retry(fn, options);
|
|
22
|
-
this.retryCount = 0;
|
|
23
|
-
return result;
|
|
24
|
-
}
|
|
25
23
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
};
|
|
24
|
+
const createRetry = (params)=>new Retry(params);
|
|
25
|
+
export { Retry, createRetry };
|
|
29
26
|
|
|
30
27
|
//# sourceMappingURL=Retry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"resolver/app/utils/Retry.js","sources":["../../../../src/resolver/app/utils/Retry.ts"],"sourcesContent":["import { sleep } from \"./sleep.js\";\n\nexport interface IRetryableRetryOptions {\n onFail?: (error: Error) => Promise<void> | void;\n}\n\nexport interface IRetryable {\n retry<T>(fn: () => Promise<T>, options: IRetryableRetryOptions): Promise<T>;\n}\n\nexport interface IRetryParams {\n maxRetries: number;\n retryDelay: number;\n}\n\nexport class Retry implements IRetryable {\n private readonly maxRetries: number;\n private readonly retryDelay: number;\n private retryCount: number = 0;\n\n public constructor(params: IRetryParams) {\n this.maxRetries = params.maxRetries;\n this.retryDelay = params.retryDelay;\n }\n\n public async retry<T>(fn: () => Promise<T>, options?: IRetryableRetryOptions): Promise<T> {\n try {\n return await fn();\n } catch (ex) {\n if (this.retryCount >= this.maxRetries) {\n if (options?.onFail) {\n await options.onFail(ex as Error);\n }\n throw ex;\n }\n }\n this.retryCount++;\n await sleep(this.retryDelay);\n const result = await this.retry<T>(fn, options);\n this.retryCount = 0;\n return result;\n }\n}\n\nexport const createRetry = (params: IRetryParams): IRetryable => {\n return new Retry(params);\n};\n"],"names":["Retry","params","fn","options","ex","sleep","result","createRetry"],"mappings":";AAeO,MAAMA;IAKT,YAAmBC,MAAoB,CAAE;aAFjC,UAAU,GAAW;QAGzB,IAAI,CAAC,UAAU,GAAGA,OAAO,UAAU;QACnC,IAAI,CAAC,UAAU,GAAGA,OAAO,UAAU;IACvC;IAEA,MAAa,MAASC,EAAoB,EAAEC,OAAgC,EAAc;QACtF,IAAI;YACA,OAAO,MAAMD;QACjB,EAAE,OAAOE,IAAI;YACT,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE;gBACpC,IAAID,SAAS,QACT,MAAMA,QAAQ,MAAM,CAACC;gBAEzB,MAAMA;YACV;QACJ;QACA,IAAI,CAAC,UAAU;QACf,MAAMC,MAAM,IAAI,CAAC,UAAU;QAC3B,MAAMC,SAAS,MAAM,IAAI,CAAC,KAAK,CAAIJ,IAAIC;QACvC,IAAI,CAAC,UAAU,GAAG;QAClB,OAAOG;IACX;AACJ;AAEO,MAAMC,cAAc,CAACN,SACjB,IAAID,MAAMC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"resolver/app/utils/sleep.js","sources":["../../../../src/resolver/app/utils/sleep.ts"],"sourcesContent":["export const sleep = (ms: number) => {\n return new Promise<void>(resolve => {\n setTimeout(resolve, ms);\n });\n};\n"],"names":["sleep","ms","Promise","resolve","setTimeout"],"mappings":"AAAO,MAAMA,QAAQ,CAACC,KACX,IAAIC,QAAcC,CAAAA;QACrBC,WAAWD,SAASF;IACxB"}
|
|
@@ -1,142 +1,43 @@
|
|
|
1
1
|
import zod from "zod";
|
|
2
2
|
export declare const createBodyValidation: () => zod.ZodObject<{
|
|
3
|
-
version: zod.
|
|
3
|
+
version: zod.ZodPipe<zod.ZodString, zod.ZodTransform<`${number}`, string>>;
|
|
4
4
|
id: zod.ZodString;
|
|
5
|
-
"detail-type": zod.
|
|
6
|
-
source: zod.
|
|
7
|
-
account: zod.
|
|
8
|
-
time: zod.
|
|
5
|
+
"detail-type": zod.ZodPipe<zod.ZodString, zod.ZodTransform<"synchronization-input", string>>;
|
|
6
|
+
source: zod.ZodPipe<zod.ZodString, zod.ZodTransform<`webiny:${string}`, string>>;
|
|
7
|
+
account: zod.ZodPipe<zod.ZodString, zod.ZodTransform<`${number}`, string>>;
|
|
8
|
+
time: zod.ZodPipe<zod.ZodString, zod.ZodTransform<Date, string>>;
|
|
9
9
|
region: zod.ZodString;
|
|
10
|
-
resources: zod.ZodArray<zod.ZodString
|
|
10
|
+
resources: zod.ZodArray<zod.ZodString>;
|
|
11
11
|
detail: zod.ZodObject<{
|
|
12
|
-
items: zod.
|
|
12
|
+
items: zod.ZodPipe<zod.ZodArray<zod.ZodObject<{
|
|
13
13
|
PK: zod.ZodString;
|
|
14
14
|
SK: zod.ZodString;
|
|
15
15
|
tableName: zod.ZodString;
|
|
16
|
-
tableType: zod.
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
tableType: zod.ZodPipe<zod.ZodEnum<{
|
|
17
|
+
regular: "regular";
|
|
18
|
+
opensearch: "opensearch";
|
|
19
|
+
unknown: "unknown";
|
|
20
|
+
log: "log";
|
|
21
|
+
}>, zod.ZodTransform<import("../../../types.js").DynamoDBTableType, "regular" | "opensearch" | "unknown" | "log">>;
|
|
22
|
+
command: zod.ZodEnum<{
|
|
23
|
+
put: "put";
|
|
24
|
+
delete: "delete";
|
|
25
|
+
update: "update";
|
|
26
|
+
}>;
|
|
27
|
+
}, zod.core.$strip>>, zod.ZodTransform<import("@webiny/api/types.js").NonEmptyArray<import("../abstractions/ResolverRecord.js").IResolverRecordBodyItem>, {
|
|
19
28
|
PK: string;
|
|
20
29
|
SK: string;
|
|
21
30
|
tableName: string;
|
|
22
31
|
tableType: import("../../../types.js").DynamoDBTableType;
|
|
23
32
|
command: "put" | "delete" | "update";
|
|
24
|
-
}
|
|
25
|
-
PK: string;
|
|
26
|
-
SK: string;
|
|
27
|
-
tableName: string;
|
|
28
|
-
tableType: "unknown" | "regular" | "opensearch" | "log";
|
|
29
|
-
command: "put" | "delete" | "update";
|
|
30
|
-
}>, "many">, {
|
|
31
|
-
PK: string;
|
|
32
|
-
SK: string;
|
|
33
|
-
tableName: string;
|
|
34
|
-
tableType: import("../../../types.js").DynamoDBTableType;
|
|
35
|
-
command: "put" | "delete" | "update";
|
|
36
|
-
}[], {
|
|
37
|
-
PK: string;
|
|
38
|
-
SK: string;
|
|
39
|
-
tableName: string;
|
|
40
|
-
tableType: "unknown" | "regular" | "opensearch" | "log";
|
|
41
|
-
command: "put" | "delete" | "update";
|
|
42
|
-
}[]>, import("@webiny/api/types.js").NonEmptyArray<import("../abstractions/ResolverRecord.js").IResolverRecordBodyItem>, {
|
|
43
|
-
PK: string;
|
|
44
|
-
SK: string;
|
|
45
|
-
tableName: string;
|
|
46
|
-
tableType: "unknown" | "regular" | "opensearch" | "log";
|
|
47
|
-
command: "put" | "delete" | "update";
|
|
48
|
-
}[]>;
|
|
33
|
+
}[]>>;
|
|
49
34
|
source: zod.ZodObject<{
|
|
50
35
|
name: zod.ZodString;
|
|
51
36
|
env: zod.ZodString;
|
|
52
|
-
variant: zod.
|
|
37
|
+
variant: zod.ZodPipe<zod.ZodOptional<zod.ZodNullable<zod.ZodOptional<zod.ZodString>>>, zod.ZodTransform<string | undefined, string | null | undefined>>;
|
|
53
38
|
region: zod.ZodString;
|
|
54
39
|
version: zod.ZodString;
|
|
55
|
-
},
|
|
56
|
-
region: string;
|
|
57
|
-
name: string;
|
|
58
|
-
env: string;
|
|
59
|
-
version: string;
|
|
60
|
-
variant?: string | undefined;
|
|
61
|
-
}, {
|
|
62
|
-
region: string;
|
|
63
|
-
name: string;
|
|
64
|
-
env: string;
|
|
65
|
-
version: string;
|
|
66
|
-
variant?: string | null | undefined;
|
|
67
|
-
}>;
|
|
40
|
+
}, zod.core.$strip>;
|
|
68
41
|
id: zod.ZodString;
|
|
69
|
-
},
|
|
70
|
-
|
|
71
|
-
region: string;
|
|
72
|
-
name: string;
|
|
73
|
-
env: string;
|
|
74
|
-
version: string;
|
|
75
|
-
variant?: string | undefined;
|
|
76
|
-
};
|
|
77
|
-
items: import("@webiny/api/types.js").NonEmptyArray<import("../abstractions/ResolverRecord.js").IResolverRecordBodyItem>;
|
|
78
|
-
id: string;
|
|
79
|
-
}, {
|
|
80
|
-
source: {
|
|
81
|
-
region: string;
|
|
82
|
-
name: string;
|
|
83
|
-
env: string;
|
|
84
|
-
version: string;
|
|
85
|
-
variant?: string | null | undefined;
|
|
86
|
-
};
|
|
87
|
-
items: {
|
|
88
|
-
PK: string;
|
|
89
|
-
SK: string;
|
|
90
|
-
tableName: string;
|
|
91
|
-
tableType: "unknown" | "regular" | "opensearch" | "log";
|
|
92
|
-
command: "put" | "delete" | "update";
|
|
93
|
-
}[];
|
|
94
|
-
id: string;
|
|
95
|
-
}>;
|
|
96
|
-
}, "strip", zod.ZodTypeAny, {
|
|
97
|
-
region: string;
|
|
98
|
-
source: `webiny:${string}`;
|
|
99
|
-
version: `${number}`;
|
|
100
|
-
id: string;
|
|
101
|
-
"detail-type": "synchronization-input";
|
|
102
|
-
account: `${number}`;
|
|
103
|
-
time: Date;
|
|
104
|
-
resources: string[];
|
|
105
|
-
detail: {
|
|
106
|
-
source: {
|
|
107
|
-
region: string;
|
|
108
|
-
name: string;
|
|
109
|
-
env: string;
|
|
110
|
-
version: string;
|
|
111
|
-
variant?: string | undefined;
|
|
112
|
-
};
|
|
113
|
-
items: import("@webiny/api/types.js").NonEmptyArray<import("../abstractions/ResolverRecord.js").IResolverRecordBodyItem>;
|
|
114
|
-
id: string;
|
|
115
|
-
};
|
|
116
|
-
}, {
|
|
117
|
-
region: string;
|
|
118
|
-
source: string;
|
|
119
|
-
version: string;
|
|
120
|
-
id: string;
|
|
121
|
-
"detail-type": string;
|
|
122
|
-
account: string;
|
|
123
|
-
time: string;
|
|
124
|
-
resources: string[];
|
|
125
|
-
detail: {
|
|
126
|
-
source: {
|
|
127
|
-
region: string;
|
|
128
|
-
name: string;
|
|
129
|
-
env: string;
|
|
130
|
-
version: string;
|
|
131
|
-
variant?: string | null | undefined;
|
|
132
|
-
};
|
|
133
|
-
items: {
|
|
134
|
-
PK: string;
|
|
135
|
-
SK: string;
|
|
136
|
-
tableName: string;
|
|
137
|
-
tableType: "unknown" | "regular" | "opensearch" | "log";
|
|
138
|
-
command: "put" | "delete" | "update";
|
|
139
|
-
}[];
|
|
140
|
-
id: string;
|
|
141
|
-
};
|
|
142
|
-
}>;
|
|
42
|
+
}, zod.core.$strip>;
|
|
43
|
+
}, zod.core.$strip>;
|
|
@@ -3,36 +3,31 @@ import { createDetailValidation } from "./detail.js";
|
|
|
3
3
|
import { SQS_EVENT_NAME } from "../../../constants.js";
|
|
4
4
|
import { createNumericStringValidation } from "./numericString.js";
|
|
5
5
|
const detailValidation = createDetailValidation();
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
region: zod.string(),
|
|
33
|
-
resources: zod.array(zod.string()),
|
|
34
|
-
detail: detailValidation
|
|
35
|
-
});
|
|
36
|
-
};
|
|
6
|
+
const createBodyValidation = ()=>zod.object({
|
|
7
|
+
version: createNumericStringValidation("version"),
|
|
8
|
+
id: zod.string(),
|
|
9
|
+
"detail-type": zod.string().transform((value, ctx)=>{
|
|
10
|
+
if (value === SQS_EVENT_NAME) return SQS_EVENT_NAME;
|
|
11
|
+
ctx.addIssue({
|
|
12
|
+
code: zod.ZodIssueCode.custom,
|
|
13
|
+
message: `"detail-type" must be "${SQS_EVENT_NAME}".`
|
|
14
|
+
});
|
|
15
|
+
return zod.NEVER;
|
|
16
|
+
}),
|
|
17
|
+
source: zod.string().transform((value, ctx)=>{
|
|
18
|
+
if (value.startsWith("webiny:")) return value;
|
|
19
|
+
ctx.addIssue({
|
|
20
|
+
code: zod.ZodIssueCode.custom,
|
|
21
|
+
message: '"source" must start with "webiny:".'
|
|
22
|
+
});
|
|
23
|
+
return zod.NEVER;
|
|
24
|
+
}),
|
|
25
|
+
account: createNumericStringValidation("account"),
|
|
26
|
+
time: zod.string().transform((value)=>new Date(value)),
|
|
27
|
+
region: zod.string(),
|
|
28
|
+
resources: zod.array(zod.string()),
|
|
29
|
+
detail: detailValidation
|
|
30
|
+
});
|
|
31
|
+
export { createBodyValidation };
|
|
37
32
|
|
|
38
33
|
//# sourceMappingURL=body.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"resolver/app/validation/body.js","sources":["../../../../src/resolver/app/validation/body.ts"],"sourcesContent":["import zod from \"zod\";\nimport { createDetailValidation } from \"./detail.js\";\nimport { SQS_EVENT_NAME } from \"~/constants.js\";\nimport { createNumericStringValidation } from \"~/resolver/app/validation/numericString.js\";\n\nconst detailValidation = createDetailValidation();\n\nexport const createBodyValidation = () => {\n return zod.object({\n version: createNumericStringValidation(\"version\"),\n id: zod.string(),\n \"detail-type\": zod.string().transform((value, ctx) => {\n if (value === SQS_EVENT_NAME) {\n return SQS_EVENT_NAME;\n }\n ctx.addIssue({\n code: zod.ZodIssueCode.custom,\n message: `\"detail-type\" must be \"${SQS_EVENT_NAME}\".`\n });\n return zod.NEVER;\n }),\n source: zod.string().transform((value, ctx) => {\n if (value.startsWith(\"webiny:\")) {\n return value as `webiny:${string}`;\n }\n ctx.addIssue({\n code: zod.ZodIssueCode.custom,\n message: `\"source\" must start with \"webiny:\".`\n });\n return zod.NEVER;\n }),\n account: createNumericStringValidation(\"account\"),\n time: zod.string().transform(value => new Date(value)),\n region: zod.string(),\n resources: zod.array(zod.string()),\n detail: detailValidation\n });\n};\n"],"names":["detailValidation","createDetailValidation","createBodyValidation","zod","createNumericStringValidation","value","ctx","SQS_EVENT_NAME","Date"],"mappings":";;;;AAKA,MAAMA,mBAAmBC;AAElB,MAAMC,uBAAuB,IACzBC,IAAI,MAAM,CAAC;QACd,SAASC,8BAA8B;QACvC,IAAID,IAAI,MAAM;QACd,eAAeA,IAAI,MAAM,GAAG,SAAS,CAAC,CAACE,OAAOC;YAC1C,IAAID,UAAUE,gBACV,OAAOA;YAEXD,IAAI,QAAQ,CAAC;gBACT,MAAMH,IAAI,YAAY,CAAC,MAAM;gBAC7B,SAAS,CAAC,uBAAuB,EAAEI,eAAe,EAAE,CAAC;YACzD;YACA,OAAOJ,IAAI,KAAK;QACpB;QACA,QAAQA,IAAI,MAAM,GAAG,SAAS,CAAC,CAACE,OAAOC;YACnC,IAAID,MAAM,UAAU,CAAC,YACjB,OAAOA;YAEXC,IAAI,QAAQ,CAAC;gBACT,MAAMH,IAAI,YAAY,CAAC,MAAM;gBAC7B,SAAS;YACb;YACA,OAAOA,IAAI,KAAK;QACpB;QACA,SAASC,8BAA8B;QACvC,MAAMD,IAAI,MAAM,GAAG,SAAS,CAACE,CAAAA,QAAS,IAAIG,KAAKH;QAC/C,QAAQF,IAAI,MAAM;QAClB,WAAWA,IAAI,KAAK,CAACA,IAAI,MAAM;QAC/B,QAAQH;IACZ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import zod from "zod";
|
|
2
|
-
export declare const createJsonTransform: (name: string) => zod.
|
|
2
|
+
export declare const createJsonTransform: (name: string) => zod.ZodPipe<zod.ZodString, zod.ZodTransform<any, string>>;
|