@webiny/api-sync-system 0.0.0-unstable.06b2ede40f → 0.0.0-unstable.0d717d18dd
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/README.md +6 -108
- package/constants.js +2 -7
- package/constants.js.map +1 -1
- package/index.d.ts +11 -3
- package/index.js +8 -40
- package/package.json +31 -26
- package/resolver/SyncResolverConfig.d.ts +17 -0
- package/resolver/SyncResolverConfig.js +5 -0
- package/resolver/SyncResolverConfig.js.map +1 -0
- package/resolver/SyncResolverLambdaHandler.d.ts +14 -0
- package/resolver/SyncResolverLambdaHandler.js +159 -0
- package/resolver/SyncResolverLambdaHandler.js.map +1 -0
- package/resolver/app/RecordHandler.d.ts +6 -6
- package/resolver/app/RecordHandler.js +84 -114
- package/resolver/app/RecordHandler.js.map +1 -1
- package/resolver/app/RecordsValidation.js +13 -24
- package/resolver/app/RecordsValidation.js.map +1 -1
- package/resolver/app/ResolverApplication.d.ts +1 -1
- package/resolver/app/ResolverApplication.js +27 -42
- package/resolver/app/ResolverApplication.js.map +1 -1
- package/resolver/app/abstractions/RecordHandler.d.ts +1 -1
- package/resolver/app/abstractions/RecordHandler.js +0 -7
- package/resolver/app/abstractions/RecordsValidation.d.ts +2 -2
- package/resolver/app/abstractions/RecordsValidation.js +0 -7
- package/resolver/app/abstractions/ResolverApplication.js +0 -7
- package/resolver/app/abstractions/ResolverRecord.d.ts +1 -1
- package/resolver/app/abstractions/ResolverRecord.js +0 -7
- package/resolver/app/bundler/BaseBundle.d.ts +6 -6
- package/resolver/app/bundler/BaseBundle.js +16 -22
- package/resolver/app/bundler/BaseBundle.js.map +1 -1
- package/resolver/app/bundler/Bundler.d.ts +1 -1
- package/resolver/app/bundler/Bundler.js +12 -25
- package/resolver/app/bundler/Bundler.js.map +1 -1
- package/resolver/app/bundler/Bundles.d.ts +2 -2
- package/resolver/app/bundler/Bundles.js +20 -33
- package/resolver/app/bundler/Bundles.js.map +1 -1
- package/resolver/app/bundler/CommandBundle.d.ts +1 -1
- package/resolver/app/bundler/CommandBundle.js +8 -25
- package/resolver/app/bundler/CommandBundle.js.map +1 -1
- package/resolver/app/bundler/TableBundle.d.ts +1 -1
- package/resolver/app/bundler/TableBundle.js +7 -22
- package/resolver/app/bundler/TableBundle.js.map +1 -1
- package/resolver/app/bundler/types.d.ts +2 -2
- package/resolver/app/bundler/types.js +0 -7
- package/resolver/app/commandHandler/DeleteCommandHandler.d.ts +3 -3
- package/resolver/app/commandHandler/DeleteCommandHandler.js +21 -35
- package/resolver/app/commandHandler/DeleteCommandHandler.js.map +1 -1
- package/resolver/app/commandHandler/PutCommandHandler.d.ts +4 -4
- package/resolver/app/commandHandler/PutCommandHandler.js +15 -28
- package/resolver/app/commandHandler/PutCommandHandler.js.map +1 -1
- package/resolver/app/commandHandler/delete.d.ts +1 -1
- package/resolver/app/commandHandler/delete.js +13 -21
- package/resolver/app/commandHandler/delete.js.map +1 -1
- package/resolver/app/commandHandler/put.d.ts +1 -1
- package/resolver/app/commandHandler/put.js +13 -21
- package/resolver/app/commandHandler/put.js.map +1 -1
- package/resolver/app/data/SourceDataContainer.d.ts +3 -3
- package/resolver/app/data/SourceDataContainer.js +27 -36
- package/resolver/app/data/SourceDataContainer.js.map +1 -1
- package/resolver/app/data/types.d.ts +2 -2
- package/resolver/app/data/types.js +0 -7
- package/resolver/app/fetcher/Fetcher.d.ts +3 -3
- package/resolver/app/fetcher/Fetcher.js +87 -121
- package/resolver/app/fetcher/Fetcher.js.map +1 -1
- package/resolver/app/fetcher/types.d.ts +2 -2
- package/resolver/app/fetcher/types.js +0 -7
- package/resolver/app/ingestor/Ingestor.d.ts +1 -1
- package/resolver/app/ingestor/Ingestor.js +26 -39
- package/resolver/app/ingestor/Ingestor.js.map +1 -1
- package/resolver/app/ingestor/IngestorResult.js +27 -39
- package/resolver/app/ingestor/IngestorResult.js.map +1 -1
- package/resolver/app/ingestor/types.d.ts +2 -2
- package/resolver/app/ingestor/types.js +0 -7
- package/resolver/app/storer/Storer.d.ts +3 -3
- package/resolver/app/storer/Storer.js +73 -95
- package/resolver/app/storer/Storer.js.map +1 -1
- package/resolver/app/storer/types.d.ts +2 -2
- package/resolver/app/storer/types.js +0 -7
- package/resolver/app/transform/TransformHandler.d.ts +4 -4
- package/resolver/app/transform/TransformHandler.js +46 -64
- package/resolver/app/transform/TransformHandler.js.map +1 -1
- package/resolver/app/transform/middleware.d.ts +1 -1
- package/resolver/app/transform/middleware.js +12 -25
- package/resolver/app/transform/middleware.js.map +1 -1
- package/resolver/app/utils/Retry.js +21 -32
- package/resolver/app/utils/Retry.js.map +1 -1
- package/resolver/app/utils/sleep.js +4 -12
- package/resolver/app/utils/sleep.js.map +1 -1
- package/resolver/app/validation/body.d.ts +25 -124
- package/resolver/app/validation/body.js +31 -44
- package/resolver/app/validation/body.js.map +1 -1
- package/resolver/app/validation/createJsonTransform.d.ts +1 -1
- package/resolver/app/validation/createJsonTransform.js +13 -22
- package/resolver/app/validation/createJsonTransform.js.map +1 -1
- package/resolver/app/validation/detail.d.ts +19 -72
- package/resolver/app/validation/detail.js +33 -46
- package/resolver/app/validation/detail.js.map +1 -1
- package/resolver/app/validation/event.d.ts +29 -188
- package/resolver/app/validation/event.js +21 -30
- package/resolver/app/validation/event.js.map +1 -1
- package/resolver/app/validation/numericString.d.ts +1 -1
- package/resolver/app/validation/numericString.js +9 -20
- package/resolver/app/validation/numericString.js.map +1 -1
- package/resolver/app/validation/system.d.ts +2 -14
- package/resolver/app/validation/system.js +9 -18
- package/resolver/app/validation/system.js.map +1 -1
- package/resolver/deployment/Deployment.d.ts +2 -3
- package/resolver/deployment/Deployment.js +27 -44
- package/resolver/deployment/Deployment.js.map +1 -1
- package/resolver/deployment/Deployments.js +19 -30
- package/resolver/deployment/Deployments.js.map +1 -1
- package/resolver/deployment/DeploymentsFetcher.js +82 -102
- package/resolver/deployment/DeploymentsFetcher.js.map +1 -1
- package/resolver/deployment/types.d.ts +4 -6
- package/resolver/deployment/types.js +0 -7
- package/resolver/lambda/LambdaTrigger.js +25 -34
- package/resolver/lambda/LambdaTrigger.js.map +1 -1
- package/resolver/plugins/CommandHandlerPlugin.d.ts +3 -3
- package/resolver/plugins/CommandHandlerPlugin.js +17 -24
- package/resolver/plugins/CommandHandlerPlugin.js.map +1 -1
- package/resolver/plugins/StorerAfterEachPlugin.d.ts +2 -2
- package/resolver/plugins/StorerAfterEachPlugin.js +21 -29
- package/resolver/plugins/StorerAfterEachPlugin.js.map +1 -1
- package/resolver/plugins/TransformRecordPlugin.d.ts +3 -3
- package/resolver/plugins/TransformRecordPlugin.js +20 -27
- package/resolver/plugins/TransformRecordPlugin.js.map +1 -1
- package/resolver/recordTypes/fileManager/CopyFile.js +44 -74
- package/resolver/recordTypes/fileManager/CopyFile.js.map +1 -1
- package/resolver/recordTypes/fileManager/DeleteFile.d.ts +1 -1
- package/resolver/recordTypes/fileManager/DeleteFile.js +40 -65
- package/resolver/recordTypes/fileManager/DeleteFile.js.map +1 -1
- package/resolver/recordTypes/fileManager/fileManager.d.ts +1 -1
- package/resolver/recordTypes/fileManager/fileManager.js +7 -12
- package/resolver/recordTypes/fileManager/fileManager.js.map +1 -1
- package/resolver/recordTypes/fileManager/fileManagerOnDelete.d.ts +1 -1
- package/resolver/recordTypes/fileManager/fileManagerOnDelete.js +27 -45
- package/resolver/recordTypes/fileManager/fileManagerOnDelete.js.map +1 -1
- package/resolver/recordTypes/fileManager/fileManagerOnPut.d.ts +1 -1
- package/resolver/recordTypes/fileManager/fileManagerOnPut.js +27 -45
- package/resolver/recordTypes/fileManager/fileManagerOnPut.js.map +1 -1
- package/resolver/recordTypes/fileManager/shouldBeHandled.d.ts +1 -1
- package/resolver/recordTypes/fileManager/shouldBeHandled.js +10 -34
- package/resolver/recordTypes/fileManager/shouldBeHandled.js.map +1 -1
- package/resolver/recordTypes/fileManager/types.d.ts +2 -2
- package/resolver/recordTypes/fileManager/types.js +0 -7
- package/resolver/recordTypes/users/CopyUser.d.ts +2 -2
- package/resolver/recordTypes/users/CopyUser.js +44 -61
- package/resolver/recordTypes/users/CopyUser.js.map +1 -1
- package/resolver/recordTypes/users/DeleteUser.d.ts +2 -2
- package/resolver/recordTypes/users/DeleteUser.js +40 -58
- package/resolver/recordTypes/users/DeleteUser.js.map +1 -1
- package/resolver/recordTypes/users/shouldBeHandled.d.ts +1 -1
- package/resolver/recordTypes/users/shouldBeHandled.js +10 -33
- package/resolver/recordTypes/users/shouldBeHandled.js.map +1 -1
- package/resolver/recordTypes/users/types.d.ts +1 -1
- package/resolver/recordTypes/users/types.js +0 -7
- package/resolver/recordTypes/users/users.js +7 -12
- package/resolver/recordTypes/users/users.js.map +1 -1
- package/resolver/recordTypes/users/usersOnDelete.d.ts +2 -2
- package/resolver/recordTypes/users/usersOnDelete.js +26 -44
- package/resolver/recordTypes/users/usersOnDelete.js.map +1 -1
- package/resolver/recordTypes/users/usersOnPut.d.ts +2 -2
- package/resolver/recordTypes/users/usersOnPut.js +27 -45
- package/resolver/recordTypes/users/usersOnPut.js.map +1 -1
- package/sync/ApiGatewaySyncDecorator.d.ts +14 -0
- package/sync/ApiGatewaySyncDecorator.js +49 -0
- package/sync/ApiGatewaySyncDecorator.js.map +1 -0
- package/sync/FilterOutRecord.d.ts +2 -2
- package/sync/FilterOutRecord.js +8 -24
- package/sync/FilterOutRecord.js.map +1 -1
- package/sync/SyncSystemConfig.d.ts +11 -0
- package/sync/SyncSystemConfig.js +5 -0
- package/sync/SyncSystemConfig.js.map +1 -0
- package/sync/attachToDynamoDbDocument.d.ts +1 -1
- package/sync/attachToDynamoDbDocument.js +48 -75
- package/sync/attachToDynamoDbDocument.js.map +1 -1
- package/sync/createHandler.js +44 -60
- package/sync/createHandler.js.map +1 -1
- package/sync/filter/createDefaultFilterOutRecordPlugins.d.ts +1 -1
- package/sync/filter/createDefaultFilterOutRecordPlugins.js +37 -86
- package/sync/filter/createDefaultFilterOutRecordPlugins.js.map +1 -1
- package/sync/handler/Handler.d.ts +2 -2
- package/sync/handler/Handler.js +66 -86
- package/sync/handler/Handler.js.map +1 -1
- package/sync/handler/HandlerConverter.js +20 -36
- package/sync/handler/HandlerConverter.js.map +1 -1
- package/sync/handler/converter/BatchGetCommandConverter.js +13 -20
- package/sync/handler/converter/BatchGetCommandConverter.js.map +1 -1
- package/sync/handler/converter/BatchWriteCommandConverter.js +13 -20
- package/sync/handler/converter/BatchWriteCommandConverter.js.map +1 -1
- package/sync/handler/converter/DeleteCommandConverter.js +13 -20
- package/sync/handler/converter/DeleteCommandConverter.js.map +1 -1
- package/sync/handler/converter/GetCommandConverter.js +13 -20
- package/sync/handler/converter/GetCommandConverter.js.map +1 -1
- package/sync/handler/converter/PutCommandConverter.js +13 -20
- package/sync/handler/converter/PutCommandConverter.js.map +1 -1
- package/sync/handler/converter/QueryCommandConverter.js +13 -20
- package/sync/handler/converter/QueryCommandConverter.js.map +1 -1
- package/sync/handler/converter/ScanCommandConverter.js +13 -20
- package/sync/handler/converter/ScanCommandConverter.js.map +1 -1
- package/sync/handler/converter/UpdateCommandConverter.js +13 -20
- package/sync/handler/converter/UpdateCommandConverter.js.map +1 -1
- package/sync/handler/converter/commands/BatchWriteCommandValue.d.ts +2 -2
- package/sync/handler/converter/commands/BatchWriteCommandValue.js +34 -44
- package/sync/handler/converter/commands/BatchWriteCommandValue.js.map +1 -1
- package/sync/handler/converter/commands/DeleteCommandValue.d.ts +2 -2
- package/sync/handler/converter/commands/DeleteCommandValue.js +19 -23
- package/sync/handler/converter/commands/DeleteCommandValue.js.map +1 -1
- package/sync/handler/converter/commands/NullCommandValue.d.ts +1 -1
- package/sync/handler/converter/commands/NullCommandValue.js +7 -14
- package/sync/handler/converter/commands/NullCommandValue.js.map +1 -1
- package/sync/handler/converter/commands/PutCommandValue.d.ts +2 -2
- package/sync/handler/converter/commands/PutCommandValue.js +19 -23
- package/sync/handler/converter/commands/PutCommandValue.js.map +1 -1
- package/sync/handler/converter/commands/UpdateCommandValue.d.ts +2 -2
- package/sync/handler/converter/commands/UpdateCommandValue.js +19 -23
- package/sync/handler/converter/commands/UpdateCommandValue.js.map +1 -1
- package/sync/handler/types.d.ts +3 -3
- package/sync/handler/types.js +0 -7
- package/sync/plugins/FilterOutRecordPlugin.d.ts +1 -1
- package/sync/plugins/FilterOutRecordPlugin.js +18 -28
- package/sync/plugins/FilterOutRecordPlugin.js.map +1 -1
- package/sync/types.js +0 -7
- package/sync/utils/getTableType.js +11 -19
- package/sync/utils/getTableType.js.map +1 -1
- package/sync/utils/manifest.d.ts +3 -7
- package/sync/utils/manifest.js +30 -47
- package/sync/utils/manifest.js.map +1 -1
- package/sync/utils/validateSystemInput.d.ts +1 -1
- package/sync/utils/validateSystemInput.js +22 -37
- package/sync/utils/validateSystemInput.js.map +1 -1
- package/types.d.ts +1 -5
- package/types.js +6 -12
- package/types.js.map +1 -1
- package/utils/createSystemName.js +5 -10
- package/utils/createSystemName.js.map +1 -1
- package/worker/SyncWorkerConfig.d.ts +9 -0
- package/worker/SyncWorkerConfig.js +5 -0
- package/worker/SyncWorkerConfig.js.map +1 -0
- package/worker/SyncWorkerEventHandler.d.ts +14 -0
- package/worker/SyncWorkerEventHandler.js +5 -0
- package/worker/SyncWorkerEventHandler.js.map +1 -0
- package/worker/SyncWorkerEventType.d.ts +10 -0
- package/worker/SyncWorkerEventType.js +24 -0
- package/worker/SyncWorkerEventType.js.map +1 -0
- package/worker/SyncWorkerLambdaHandler.d.ts +13 -0
- package/worker/SyncWorkerLambdaHandler.js +61 -0
- package/worker/SyncWorkerLambdaHandler.js.map +1 -0
- package/worker/actions/copyFile/CopyFile.js +185 -268
- package/worker/actions/copyFile/CopyFile.js.map +1 -1
- package/worker/actions/copyFile/copyFileAction.d.ts +1 -1
- package/worker/actions/copyFile/copyFileAction.js +30 -45
- package/worker/actions/copyFile/copyFileAction.js.map +1 -1
- package/worker/actions/copyFile/copyFileSchema.d.ts +6 -38
- package/worker/actions/copyFile/copyFileSchema.js +14 -23
- package/worker/actions/copyFile/copyFileSchema.js.map +1 -1
- package/worker/actions/copyFile/types.js +0 -7
- package/worker/actions/createUser/CreateUser.d.ts +1 -1
- package/worker/actions/createUser/CreateUser.js +53 -83
- package/worker/actions/createUser/CreateUser.js.map +1 -1
- package/worker/actions/createUser/createUserAction.d.ts +2 -2
- package/worker/actions/createUser/createUserAction.js +28 -39
- package/worker/actions/createUser/createUserAction.js.map +1 -1
- package/worker/actions/createUser/createUserSchema.d.ts +6 -38
- package/worker/actions/createUser/createUserSchema.js +14 -23
- package/worker/actions/createUser/createUserSchema.js.map +1 -1
- package/worker/actions/createUser/types.js +0 -7
- package/worker/actions/deleteFile/DeleteFile.js +52 -74
- package/worker/actions/deleteFile/DeleteFile.js.map +1 -1
- package/worker/actions/deleteFile/deleteFileAction.d.ts +1 -1
- package/worker/actions/deleteFile/deleteFileAction.js +25 -40
- package/worker/actions/deleteFile/deleteFileAction.js.map +1 -1
- package/worker/actions/deleteFile/deleteFileSchema.d.ts +6 -38
- package/worker/actions/deleteFile/deleteFileSchema.js +14 -23
- package/worker/actions/deleteFile/deleteFileSchema.js.map +1 -1
- package/worker/actions/deleteFile/types.js +0 -7
- package/worker/actions/deleteUser/DeleteUser.d.ts +2 -2
- package/worker/actions/deleteUser/DeleteUser.js +39 -60
- package/worker/actions/deleteUser/DeleteUser.js.map +1 -1
- package/worker/actions/deleteUser/deleteUserAction.d.ts +1 -1
- package/worker/actions/deleteUser/deleteUserAction.js +26 -37
- package/worker/actions/deleteUser/deleteUserAction.js.map +1 -1
- package/worker/actions/deleteUser/deleteUserSchema.d.ts +5 -23
- package/worker/actions/deleteUser/deleteUserSchema.js +13 -22
- package/worker/actions/deleteUser/deleteUserSchema.js.map +1 -1
- package/worker/actions/deleteUser/types.js +0 -7
- package/worker/actions/logValidationError.js +6 -14
- package/worker/actions/logValidationError.js.map +1 -1
- package/worker/actions/removeCognitoUserAttributes.js +9 -22
- package/worker/actions/removeCognitoUserAttributes.js.map +1 -1
- package/worker/actions/updateUser/UpdateUser.d.ts +1 -1
- package/worker/actions/updateUser/UpdateUser.js +50 -74
- package/worker/actions/updateUser/UpdateUser.js.map +1 -1
- package/worker/actions/updateUser/types.js +0 -7
- package/worker/actions/updateUser/updateUserAction.d.ts +2 -2
- package/worker/actions/updateUser/updateUserAction.js +28 -39
- package/worker/actions/updateUser/updateUserAction.js.map +1 -1
- package/worker/actions/updateUser/updateUserSchema.d.ts +6 -38
- package/worker/actions/updateUser/updateUserSchema.js +14 -23
- package/worker/actions/updateUser/updateUserSchema.js.map +1 -1
- package/worker/handler/WorkerActionHandler.d.ts +2 -2
- package/worker/handler/WorkerActionHandler.js +19 -28
- package/worker/handler/WorkerActionHandler.js.map +1 -1
- package/worker/plugins/WorkerActionPlugin.d.ts +1 -1
- package/worker/plugins/WorkerActionPlugin.js +18 -25
- package/worker/plugins/WorkerActionPlugin.js.map +1 -1
- package/worker/types.js +0 -7
- 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/createEventHandlerPlugin.d.ts +0 -10
- package/resolver/createEventHandlerPlugin.js +0 -127
- package/resolver/createEventHandlerPlugin.js.map +0 -1
- package/resolver/createResolverHandler.d.ts +0 -21
- package/resolver/createResolverHandler.js +0 -79
- package/resolver/createResolverHandler.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/createSendDataToEventBridgeOnRequestEnd.d.ts +0 -2
- package/sync/createSendDataToEventBridgeOnRequestEnd.js +0 -51
- package/sync/createSendDataToEventBridgeOnRequestEnd.js.map +0 -1
- package/sync/createSyncSystem.d.ts +0 -16
- package/sync/createSyncSystem.js +0 -42
- package/sync/createSyncSystem.js.map +0 -1
- package/sync/handler/types.js.map +0 -1
- package/sync/requestPlugin.d.ts +0 -9
- package/sync/requestPlugin.js +0 -59
- package/sync/requestPlugin.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/createWorkerHandler.d.ts +0 -11
- package/worker/createWorkerHandler.js +0 -48
- package/worker/createWorkerHandler.js.map +0 -1
- package/worker/handler/eventHandler.d.ts +0 -1
- package/worker/handler/eventHandler.js +0 -31
- package/worker/handler/eventHandler.js.map +0 -1
- package/worker/types.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,113 +1,11 @@
|
|
|
1
1
|
# @webiny/api-sync-system
|
|
2
|
-
[](https://www.npmjs.com/package/@webiny/api-sync-system)
|
|
3
|
-
[](https://www.npmjs.com/package/@webiny/api-sync-system)
|
|
4
|
-
[](https://github.com/prettier/prettier)
|
|
5
|
-
[](http://makeapullrequest.com)
|
|
6
2
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
```
|
|
3
|
+
> [!NOTE]
|
|
4
|
+
> This package is part of the [Webiny](https://www.webiny.com) monorepo.
|
|
5
|
+
> It’s **included in every Webiny project by default** and is not meant to be used as a standalone package.
|
|
11
6
|
|
|
12
|
-
|
|
7
|
+
📘 **Documentation:** [https://www.webiny.com/docs](https://www.webiny.com/docs)
|
|
13
8
|
|
|
14
|
-
|
|
15
|
-
We will use `dev` environment in the examples.
|
|
9
|
+
---
|
|
16
10
|
|
|
17
|
-
|
|
18
|
-
`horse`, `space`, etc.
|
|
19
|
-
|
|
20
|
-
### Deploy the Sync System
|
|
21
|
-
|
|
22
|
-
Deploy the Sync System to the `dev` environment.
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
yarn webiny deploy sync --env=dev
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
### Deploy `blue` and `green` Webiny
|
|
29
|
-
|
|
30
|
-
It imperative the two systems to be in the same environment as the Sync System, as it will automatically connect Webiny deployments in the same environment.
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
yarn webiny deploy --env=dev --variant=blue && yarn webiny deploy --env=dev --variant=green
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
Also, there can be more than two systems, so you can deploy as many as you like, just make sure to use different variants.
|
|
37
|
-
|
|
38
|
-
### Install Webiny Blue Variant
|
|
39
|
-
|
|
40
|
-
Do a:
|
|
41
|
-
```
|
|
42
|
-
yarn webiny info
|
|
43
|
-
```
|
|
44
|
-
Find the `blue` variant Admin URL, and open it in your browser. Install the system by following the instructions.
|
|
45
|
-
|
|
46
|
-
At that point, green system should be installed as well.
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
# TODO
|
|
50
|
-
|
|
51
|
-
### Add BlueGreen, Resolver and Work Folders to User Projects
|
|
52
|
-
We need to deploy the following folders to the user project:
|
|
53
|
-
- blueGreen
|
|
54
|
-
- sync/resolver
|
|
55
|
-
- sync/worker
|
|
56
|
-
|
|
57
|
-
Maybe have it as a CLI command?
|
|
58
|
-
|
|
59
|
-
### Test the Blue / Green Deployment
|
|
60
|
-
|
|
61
|
-
- create domains api.bg.webiny.com, admin.bg.webiny.com, website.bg.webiny.com, preview.bg.webiny.com
|
|
62
|
-
- deploy the blueGreen application
|
|
63
|
-
- make sure the domains are pointing correctly
|
|
64
|
-
- switch between blue and green deployments to test the resolver
|
|
65
|
-
- create / update entries in blue and green and make sure they are correctly transferred to the other deployment
|
|
66
|
-
|
|
67
|
-
### Cognito User Transfer
|
|
68
|
-
|
|
69
|
-
User is currently transferred but password is not so it results in error where user cannot log in and cannot reset
|
|
70
|
-
password.
|
|
71
|
-
This will be resolved by implementing a login function which will send a code to the user email and log in with that
|
|
72
|
-
code.
|
|
73
|
-
|
|
74
|
-
### Filtering out models which we do not want to sync
|
|
75
|
-
|
|
76
|
-
Currently, models are filtered out when records are being added into the sync pool. That is ok for creating or updating
|
|
77
|
-
records, but when deleting, we do not have the modelId in the item being deleted.
|
|
78
|
-
|
|
79
|
-
Maybe implement filtering in the resolver ?
|
|
80
|
-
|
|
81
|
-
### Add proper logging?
|
|
82
|
-
Use pino to log all events, separated in proper levels (info, warn, error, debug, etc...).
|
|
83
|
-
|
|
84
|
-
### Move Resolver plugins (file manager, users) into their own packages
|
|
85
|
-
We should move the resolver plugins for file manager and users into their own packages, and those packages should register them.
|
|
86
|
-
|
|
87
|
-
### Implement Dependency Injection
|
|
88
|
-
|
|
89
|
-
Currently, we need to pass a ton of methods to the Sync system handlers. It would be simple as
|
|
90
|
-
|
|
91
|
-
```typescript
|
|
92
|
-
const handler = createSyncResolverHandler({
|
|
93
|
-
plugins: [],
|
|
94
|
-
debug: process.env.DEBUG === "true",
|
|
95
|
-
awsWorkerLambdaArn: process.env.AWS_SYNC_WORKER_LAMBDA_ARN,
|
|
96
|
-
});
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
if we did not need to pass all creator methods:
|
|
100
|
-
|
|
101
|
-
```typescript
|
|
102
|
-
const handler = createSyncResolverHandler({
|
|
103
|
-
plugins: [],
|
|
104
|
-
debug: process.env.DEBUG === "true",
|
|
105
|
-
awsWorkerLambdaArn: process.env.AWS_SYNC_WORKER_LAMBDA_ARN,
|
|
106
|
-
createS3Client,
|
|
107
|
-
createLambdaClient,
|
|
108
|
-
createDocumentClient,
|
|
109
|
-
createCognitoIdentityProviderClient
|
|
110
|
-
});
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
And there might be new methods added in the future.
|
|
11
|
+
_This README file is automatically generated during the publish process._
|
package/constants.js
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.SQS_EVENT_NAME = void 0;
|
|
7
|
-
const SQS_EVENT_NAME = exports.SQS_EVENT_NAME = "synchronization-input";
|
|
1
|
+
const SQS_EVENT_NAME = "synchronization-input";
|
|
2
|
+
export { SQS_EVENT_NAME };
|
|
8
3
|
|
|
9
4
|
//# sourceMappingURL=constants.js.map
|
package/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["export const SQS_EVENT_NAME = \"synchronization-input\" as const;\n"],"names":["SQS_EVENT_NAME"],"mappings":"AAAO,MAAMA,iBAAiB"}
|
package/index.d.ts
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
1
|
+
export { SyncResolverConfig } from "./resolver/SyncResolverConfig.js";
|
|
2
|
+
export type { ISyncResolverConfig } from "./resolver/SyncResolverConfig.js";
|
|
3
|
+
export { SyncResolverLambdaHandler } from "./resolver/SyncResolverLambdaHandler.js";
|
|
4
|
+
export { SyncWorkerConfig } from "./worker/SyncWorkerConfig.js";
|
|
5
|
+
export type { ISyncWorkerConfig } from "./worker/SyncWorkerConfig.js";
|
|
6
|
+
export { SyncWorkerEventType } from "./worker/SyncWorkerEventType.js";
|
|
7
|
+
export { SyncWorkerEventHandler } from "./worker/SyncWorkerEventHandler.js";
|
|
8
|
+
export { SyncWorkerLambdaHandler } from "./worker/SyncWorkerLambdaHandler.js";
|
|
9
|
+
export { SyncSystemConfig } from "./sync/SyncSystemConfig.js";
|
|
10
|
+
export type { ISyncSystemConfig } from "./sync/SyncSystemConfig.js";
|
|
11
|
+
export { ApiGatewaySyncDecorator } from "./sync/ApiGatewaySyncDecorator.js";
|
package/index.js
CHANGED
|
@@ -1,40 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
if (key in exports && exports[key] === _createWorkerHandler[key]) return;
|
|
10
|
-
Object.defineProperty(exports, key, {
|
|
11
|
-
enumerable: true,
|
|
12
|
-
get: function () {
|
|
13
|
-
return _createWorkerHandler[key];
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
var _createSyncSystem = require("./sync/createSyncSystem.js");
|
|
18
|
-
Object.keys(_createSyncSystem).forEach(function (key) {
|
|
19
|
-
if (key === "default" || key === "__esModule") return;
|
|
20
|
-
if (key in exports && exports[key] === _createSyncSystem[key]) return;
|
|
21
|
-
Object.defineProperty(exports, key, {
|
|
22
|
-
enumerable: true,
|
|
23
|
-
get: function () {
|
|
24
|
-
return _createSyncSystem[key];
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
var _createResolverHandler = require("./resolver/createResolverHandler.js");
|
|
29
|
-
Object.keys(_createResolverHandler).forEach(function (key) {
|
|
30
|
-
if (key === "default" || key === "__esModule") return;
|
|
31
|
-
if (key in exports && exports[key] === _createResolverHandler[key]) return;
|
|
32
|
-
Object.defineProperty(exports, key, {
|
|
33
|
-
enumerable: true,
|
|
34
|
-
get: function () {
|
|
35
|
-
return _createResolverHandler[key];
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
export { SyncResolverConfig } from "./resolver/SyncResolverConfig.js";
|
|
2
|
+
export { SyncResolverLambdaHandler } from "./resolver/SyncResolverLambdaHandler.js";
|
|
3
|
+
export { SyncWorkerConfig } from "./worker/SyncWorkerConfig.js";
|
|
4
|
+
export { SyncWorkerEventType } from "./worker/SyncWorkerEventType.js";
|
|
5
|
+
export { SyncWorkerEventHandler } from "./worker/SyncWorkerEventHandler.js";
|
|
6
|
+
export { SyncWorkerLambdaHandler } from "./worker/SyncWorkerLambdaHandler.js";
|
|
7
|
+
export { SyncSystemConfig } from "./sync/SyncSystemConfig.js";
|
|
8
|
+
export { ApiGatewaySyncDecorator } from "./sync/ApiGatewaySyncDecorator.js";
|
package/package.json
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-sync-system",
|
|
3
|
-
"version": "0.0.0-unstable.
|
|
4
|
-
"
|
|
3
|
+
"version": "0.0.0-unstable.0d717d18dd",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": "./index.js",
|
|
7
|
+
"./*": "./*"
|
|
8
|
+
},
|
|
5
9
|
"repository": {
|
|
6
10
|
"type": "git",
|
|
7
11
|
"url": "https://github.com/webiny/webiny-js.git"
|
|
@@ -10,36 +14,37 @@
|
|
|
10
14
|
"author": "Webiny LTD",
|
|
11
15
|
"license": "MIT",
|
|
12
16
|
"dependencies": {
|
|
13
|
-
"@webiny/api": "0.0.0-unstable.
|
|
14
|
-
"@webiny/
|
|
15
|
-
"@webiny/
|
|
16
|
-
"@webiny/
|
|
17
|
-
"@webiny/handler-aws": "0.0.0-unstable.
|
|
18
|
-
"@webiny/
|
|
19
|
-
"@webiny/
|
|
17
|
+
"@webiny/api": "0.0.0-unstable.0d717d18dd",
|
|
18
|
+
"@webiny/api-core": "0.0.0-unstable.0d717d18dd",
|
|
19
|
+
"@webiny/aws-sdk": "0.0.0-unstable.0d717d18dd",
|
|
20
|
+
"@webiny/error": "0.0.0-unstable.0d717d18dd",
|
|
21
|
+
"@webiny/event-handler-aws": "0.0.0-unstable.0d717d18dd",
|
|
22
|
+
"@webiny/event-handler-core": "0.0.0-unstable.0d717d18dd",
|
|
23
|
+
"@webiny/feature": "0.0.0-unstable.0d717d18dd",
|
|
24
|
+
"@webiny/handler": "0.0.0-unstable.0d717d18dd",
|
|
25
|
+
"@webiny/plugins": "0.0.0-unstable.0d717d18dd",
|
|
26
|
+
"@webiny/utils": "0.0.0-unstable.0d717d18dd",
|
|
20
27
|
"bytes": "3.1.2",
|
|
21
|
-
"lodash": "4.
|
|
22
|
-
"semver": "7.
|
|
23
|
-
"zod": "
|
|
28
|
+
"lodash": "4.18.1",
|
|
29
|
+
"semver": "7.8.5",
|
|
30
|
+
"zod": "4.4.3"
|
|
24
31
|
},
|
|
25
32
|
"devDependencies": {
|
|
26
|
-
"@faker-js/faker": "
|
|
27
|
-
"@types/lodash": "4.17.
|
|
28
|
-
"@webiny/
|
|
29
|
-
"@webiny/
|
|
33
|
+
"@faker-js/faker": "10.5.0",
|
|
34
|
+
"@types/lodash": "4.17.25",
|
|
35
|
+
"@webiny/api-core-ddb": "0.0.0-unstable.0d717d18dd",
|
|
36
|
+
"@webiny/build-tools": "0.0.0-unstable.0d717d18dd",
|
|
37
|
+
"@webiny/project-utils": "0.0.0-unstable.0d717d18dd",
|
|
30
38
|
"aws-sdk-client-mock": "4.1.0",
|
|
31
|
-
"jest": "29.7.0",
|
|
32
39
|
"jest-dynalite": "3.6.1",
|
|
33
|
-
"rimraf": "6.
|
|
34
|
-
"typescript": "
|
|
40
|
+
"rimraf": "6.1.3",
|
|
41
|
+
"typescript": "7.0.2",
|
|
42
|
+
"vitest": "4.1.10"
|
|
35
43
|
},
|
|
36
44
|
"publishConfig": {
|
|
37
|
-
"access": "public"
|
|
38
|
-
"directory": "dist"
|
|
39
|
-
},
|
|
40
|
-
"scripts": {
|
|
41
|
-
"build": "node ../cli/bin.js run build",
|
|
42
|
-
"watch": "node ../cli/bin.js run watch"
|
|
45
|
+
"access": "public"
|
|
43
46
|
},
|
|
44
|
-
"
|
|
47
|
+
"webiny": {
|
|
48
|
+
"publishFrom": "dist"
|
|
49
|
+
}
|
|
45
50
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { DynamoDBClientConfig, DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb/index.js";
|
|
2
|
+
import type { LambdaClient, LambdaClientConfig } from "@webiny/aws-sdk/client-lambda/index.js";
|
|
3
|
+
import type { S3Client, S3ClientConfig } from "@webiny/aws-sdk/client-s3/index.js";
|
|
4
|
+
import type { CognitoIdentityProvider, CognitoIdentityProviderClientConfig } from "@webiny/aws-sdk/client-cognito-identity-provider/index.js";
|
|
5
|
+
import type { TransformRecordPlugin } from "./plugins/TransformRecordPlugin.js";
|
|
6
|
+
import type { CommandHandlerPlugin } from "./plugins/CommandHandlerPlugin.js";
|
|
7
|
+
export type AllowedResolverPlugins = TransformRecordPlugin | CommandHandlerPlugin;
|
|
8
|
+
export interface ISyncResolverConfig {
|
|
9
|
+
tableName?: string;
|
|
10
|
+
awsWorkerLambdaArn?: string;
|
|
11
|
+
createDocumentClient(params: Partial<DynamoDBClientConfig>): Pick<DynamoDBDocument, "send">;
|
|
12
|
+
createLambdaClient?(config: Partial<LambdaClientConfig>): Pick<LambdaClient, "send">;
|
|
13
|
+
createS3Client?(config: S3ClientConfig): Pick<S3Client, "send">;
|
|
14
|
+
createCognitoIdentityProviderClient?(config: Partial<CognitoIdentityProviderClientConfig>): Pick<CognitoIdentityProvider, "send">;
|
|
15
|
+
plugins?: AllowedResolverPlugins[];
|
|
16
|
+
}
|
|
17
|
+
export declare const SyncResolverConfig: import("@webiny/di").Abstraction<ISyncResolverConfig>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver/SyncResolverConfig.js","sources":["../../src/resolver/SyncResolverConfig.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type {\n DynamoDBClientConfig,\n DynamoDBDocument\n} from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport type { LambdaClient, LambdaClientConfig } from \"@webiny/aws-sdk/client-lambda/index.js\";\nimport type { S3Client, S3ClientConfig } from \"@webiny/aws-sdk/client-s3/index.js\";\nimport type {\n CognitoIdentityProvider,\n CognitoIdentityProviderClientConfig\n} from \"@webiny/aws-sdk/client-cognito-identity-provider/index.js\";\nimport type { TransformRecordPlugin } from \"./plugins/TransformRecordPlugin.js\";\nimport type { CommandHandlerPlugin } from \"./plugins/CommandHandlerPlugin.js\";\n\nexport type AllowedResolverPlugins = TransformRecordPlugin | CommandHandlerPlugin;\n\nexport interface ISyncResolverConfig {\n tableName?: string;\n awsWorkerLambdaArn?: string;\n createDocumentClient(params: Partial<DynamoDBClientConfig>): Pick<DynamoDBDocument, \"send\">;\n createLambdaClient?(config: Partial<LambdaClientConfig>): Pick<LambdaClient, \"send\">;\n createS3Client?(config: S3ClientConfig): Pick<S3Client, \"send\">;\n createCognitoIdentityProviderClient?(\n config: Partial<CognitoIdentityProviderClientConfig>\n ): Pick<CognitoIdentityProvider, \"send\">;\n plugins?: AllowedResolverPlugins[];\n}\n\nexport const SyncResolverConfig = createAbstraction<ISyncResolverConfig>(\"SyncResolverConfig\");\n"],"names":["SyncResolverConfig","createAbstraction"],"mappings":";AA4BO,MAAMA,qBAAqBC,kBAAuC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SqsEventHandler } from "@webiny/event-handler-aws/abstractions/handlers/SqsEventHandler.js";
|
|
2
|
+
import type { SqsResult } from "@webiny/event-handler-aws/abstractions/handlers/SqsEventHandler.js";
|
|
3
|
+
import type { EventContext, NextFunction } from "@webiny/event-handler-core";
|
|
4
|
+
import type { SQSEvent } from "@webiny/aws-sdk/types/index.js";
|
|
5
|
+
import type { ISyncResolverConfig } from "./SyncResolverConfig.js";
|
|
6
|
+
declare class SyncResolverLambdaHandlerImpl implements SqsEventHandler.Interface {
|
|
7
|
+
private config;
|
|
8
|
+
constructor(config: ISyncResolverConfig);
|
|
9
|
+
execute(eventCtx: EventContext<SQSEvent>, _next: NextFunction): Promise<SqsResult>;
|
|
10
|
+
}
|
|
11
|
+
export declare const SyncResolverLambdaHandler: typeof SyncResolverLambdaHandlerImpl & {
|
|
12
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/event-handler-aws/abstractions/handlers/SqsEventHandler.js").ISqsEventHandler>;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { SqsEventHandler } from "@webiny/event-handler-aws/abstractions/handlers/SqsEventHandler.js";
|
|
2
|
+
import { PluginsContainer } from "@webiny/plugins";
|
|
3
|
+
import { WebinyError } from "@webiny/error";
|
|
4
|
+
import { convertException } from "@webiny/utils";
|
|
5
|
+
import { SyncResolverConfig } from "./SyncResolverConfig.js";
|
|
6
|
+
import { createFetcher } from "./app/fetcher/Fetcher.js";
|
|
7
|
+
import { createDeploymentsFetcher } from "./deployment/DeploymentsFetcher.js";
|
|
8
|
+
import { createStorer } from "./app/storer/Storer.js";
|
|
9
|
+
import { TransformHandler } from "./app/transform/TransformHandler.js";
|
|
10
|
+
import { createRecordHandler } from "./app/RecordHandler.js";
|
|
11
|
+
import { createResolverApp } from "./app/ResolverApplication.js";
|
|
12
|
+
import { createBundler } from "./app/bundler/Bundler.js";
|
|
13
|
+
import { createBundles } from "./app/bundler/Bundles.js";
|
|
14
|
+
import { createCommandBundle } from "./app/bundler/CommandBundle.js";
|
|
15
|
+
import { createTableBundle } from "./app/bundler/TableBundle.js";
|
|
16
|
+
import { SourceDataContainer } from "./app/data/SourceDataContainer.js";
|
|
17
|
+
import { StorerAfterEachPlugin } from "./plugins/StorerAfterEachPlugin.js";
|
|
18
|
+
import { createFileManagerPlugins } from "./recordTypes/fileManager/fileManager.js";
|
|
19
|
+
import { LambdaTrigger } from "./lambda/LambdaTrigger.js";
|
|
20
|
+
import { CopyFile } from "./recordTypes/fileManager/CopyFile.js";
|
|
21
|
+
import { DeleteFile } from "./recordTypes/fileManager/DeleteFile.js";
|
|
22
|
+
import { createUsersPlugins } from "./recordTypes/users/users.js";
|
|
23
|
+
import { CopyUser } from "./recordTypes/users/CopyUser.js";
|
|
24
|
+
import { DeleteUser } from "./recordTypes/users/DeleteUser.js";
|
|
25
|
+
import { createPutCommandHandlerPlugin } from "./app/commandHandler/put.js";
|
|
26
|
+
import { createDeleteCommandHandlerPlugin } from "./app/commandHandler/delete.js";
|
|
27
|
+
async function processResolverEvent(records, config, plugins) {
|
|
28
|
+
const tableName = config.tableName || process.env.DB_TABLE;
|
|
29
|
+
if (!tableName) throw new WebinyError({
|
|
30
|
+
message: "Table name variable is not set."
|
|
31
|
+
});
|
|
32
|
+
const fetcher = createFetcher({
|
|
33
|
+
maxRetries: 10,
|
|
34
|
+
retryDelay: 1000,
|
|
35
|
+
createDocumentClient: (deployment)=>config.createDocumentClient({
|
|
36
|
+
region: deployment.region
|
|
37
|
+
})
|
|
38
|
+
});
|
|
39
|
+
const deploymentsFetcher = createDeploymentsFetcher({
|
|
40
|
+
client: config.createDocumentClient({
|
|
41
|
+
region: process.env.AWS_REGION
|
|
42
|
+
}),
|
|
43
|
+
table: tableName
|
|
44
|
+
});
|
|
45
|
+
const deployments = await deploymentsFetcher.fetch();
|
|
46
|
+
const storerAfterEachPlugins = plugins.byType(StorerAfterEachPlugin.type);
|
|
47
|
+
const storer = createStorer({
|
|
48
|
+
createDocumentClient: (deployment)=>config.createDocumentClient({
|
|
49
|
+
region: deployment.region
|
|
50
|
+
}),
|
|
51
|
+
afterEach: async (params)=>{
|
|
52
|
+
for (const plugin of storerAfterEachPlugins)if (plugin.canHandle(params)) await plugin.handle(params);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
const transformHandler = new TransformHandler({
|
|
56
|
+
plugins
|
|
57
|
+
});
|
|
58
|
+
const recordHandler = createRecordHandler({
|
|
59
|
+
plugins,
|
|
60
|
+
fetcher,
|
|
61
|
+
storer,
|
|
62
|
+
deployments,
|
|
63
|
+
transformHandler,
|
|
64
|
+
commandBundler: createBundler({
|
|
65
|
+
createBundles: ()=>createBundles({
|
|
66
|
+
createBundle: createCommandBundle
|
|
67
|
+
})
|
|
68
|
+
}),
|
|
69
|
+
tableBundler: createBundler({
|
|
70
|
+
createBundles: ()=>createBundles({
|
|
71
|
+
createBundle: createTableBundle
|
|
72
|
+
})
|
|
73
|
+
}),
|
|
74
|
+
createSourceDataContainer: ()=>SourceDataContainer.create()
|
|
75
|
+
});
|
|
76
|
+
const app = createResolverApp({
|
|
77
|
+
recordHandler,
|
|
78
|
+
deployments
|
|
79
|
+
});
|
|
80
|
+
await app.resolve({
|
|
81
|
+
records
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
class SyncResolverLambdaHandlerImpl {
|
|
85
|
+
constructor(config){
|
|
86
|
+
this.config = config;
|
|
87
|
+
}
|
|
88
|
+
async execute(eventCtx, _next) {
|
|
89
|
+
const { createLambdaClient, createS3Client, createCognitoIdentityProviderClient } = this.config;
|
|
90
|
+
const awsWorkerLambdaArn = this.config.awsWorkerLambdaArn || process.env.AWS_SYNC_WORKER_LAMBDA_ARN;
|
|
91
|
+
const copyFileTrigger = createLambdaClient && awsWorkerLambdaArn ? new LambdaTrigger({
|
|
92
|
+
arn: awsWorkerLambdaArn,
|
|
93
|
+
createLambdaClient
|
|
94
|
+
}) : void 0;
|
|
95
|
+
const deleteFileTrigger = createLambdaClient && awsWorkerLambdaArn ? new LambdaTrigger({
|
|
96
|
+
arn: awsWorkerLambdaArn,
|
|
97
|
+
createLambdaClient
|
|
98
|
+
}) : void 0;
|
|
99
|
+
const copyUserTrigger = createLambdaClient && awsWorkerLambdaArn ? new LambdaTrigger({
|
|
100
|
+
arn: awsWorkerLambdaArn,
|
|
101
|
+
createLambdaClient
|
|
102
|
+
}) : void 0;
|
|
103
|
+
const deleteUserTrigger = createLambdaClient && awsWorkerLambdaArn ? new LambdaTrigger({
|
|
104
|
+
arn: awsWorkerLambdaArn,
|
|
105
|
+
createLambdaClient
|
|
106
|
+
}) : void 0;
|
|
107
|
+
const copyFile = createS3Client && copyFileTrigger ? new CopyFile({
|
|
108
|
+
createS3Client,
|
|
109
|
+
getLambdaTrigger: ()=>copyFileTrigger
|
|
110
|
+
}) : void 0;
|
|
111
|
+
const deleteFile = createS3Client && deleteFileTrigger ? new DeleteFile({
|
|
112
|
+
createS3Client,
|
|
113
|
+
getLambdaTrigger: ()=>deleteFileTrigger
|
|
114
|
+
}) : void 0;
|
|
115
|
+
const copyUser = createCognitoIdentityProviderClient && copyUserTrigger ? new CopyUser({
|
|
116
|
+
createCognitoIdentityProviderClient,
|
|
117
|
+
getLambdaTrigger: ()=>copyUserTrigger
|
|
118
|
+
}) : void 0;
|
|
119
|
+
const deleteUser = createCognitoIdentityProviderClient && deleteUserTrigger ? new DeleteUser({
|
|
120
|
+
createCognitoIdentityProviderClient,
|
|
121
|
+
getLambdaTrigger: ()=>deleteUserTrigger
|
|
122
|
+
}) : void 0;
|
|
123
|
+
const plugins = new PluginsContainer([
|
|
124
|
+
...copyFile && deleteFile ? createFileManagerPlugins({
|
|
125
|
+
copyFile,
|
|
126
|
+
deleteFile
|
|
127
|
+
}) : [],
|
|
128
|
+
...copyUser && deleteUser ? createUsersPlugins({
|
|
129
|
+
copyUser,
|
|
130
|
+
deleteUser
|
|
131
|
+
}) : [],
|
|
132
|
+
createPutCommandHandlerPlugin(),
|
|
133
|
+
createDeleteCommandHandlerPlugin(),
|
|
134
|
+
...this.config.plugins || []
|
|
135
|
+
]);
|
|
136
|
+
try {
|
|
137
|
+
await processResolverEvent(eventCtx.event.Records, this.config, plugins);
|
|
138
|
+
return {
|
|
139
|
+
success: true
|
|
140
|
+
};
|
|
141
|
+
} catch (ex) {
|
|
142
|
+
const error = convertException(ex);
|
|
143
|
+
console.error(error);
|
|
144
|
+
return {
|
|
145
|
+
success: false,
|
|
146
|
+
message: error.message
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
const SyncResolverLambdaHandler = SqsEventHandler.createImplementation({
|
|
152
|
+
implementation: SyncResolverLambdaHandlerImpl,
|
|
153
|
+
dependencies: [
|
|
154
|
+
SyncResolverConfig
|
|
155
|
+
]
|
|
156
|
+
});
|
|
157
|
+
export { SyncResolverLambdaHandler };
|
|
158
|
+
|
|
159
|
+
//# sourceMappingURL=SyncResolverLambdaHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver/SyncResolverLambdaHandler.js","sources":["../../src/resolver/SyncResolverLambdaHandler.ts"],"sourcesContent":["import { SqsEventHandler } from \"@webiny/event-handler-aws/abstractions/handlers/SqsEventHandler.js\";\nimport type { SqsResult } from \"@webiny/event-handler-aws/abstractions/handlers/SqsEventHandler.js\";\nimport type { EventContext, NextFunction } from \"@webiny/event-handler-core\";\nimport type { SQSEvent } from \"@webiny/aws-sdk/types/index.js\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { WebinyError } from \"@webiny/error\";\nimport { convertException } from \"@webiny/utils\";\nimport { SyncResolverConfig } from \"./SyncResolverConfig.js\";\nimport type { ISyncResolverConfig } from \"./SyncResolverConfig.js\";\nimport { createFetcher } from \"~/resolver/app/fetcher/Fetcher.js\";\nimport { createDeploymentsFetcher } from \"~/resolver/deployment/DeploymentsFetcher.js\";\nimport { createStorer } from \"~/resolver/app/storer/Storer.js\";\nimport { TransformHandler } from \"~/resolver/app/transform/TransformHandler.js\";\nimport { createRecordHandler } from \"~/resolver/app/RecordHandler.js\";\nimport { createResolverApp } from \"~/resolver/app/ResolverApplication.js\";\nimport { createBundler } from \"~/resolver/app/bundler/Bundler.js\";\nimport { createBundles } from \"~/resolver/app/bundler/Bundles.js\";\nimport { createCommandBundle } from \"~/resolver/app/bundler/CommandBundle.js\";\nimport { createTableBundle } from \"~/resolver/app/bundler/TableBundle.js\";\nimport { SourceDataContainer } from \"~/resolver/app/data/SourceDataContainer.js\";\nimport { StorerAfterEachPlugin } from \"~/resolver/plugins/StorerAfterEachPlugin.js\";\nimport { createFileManagerPlugins } from \"~/resolver/recordTypes/fileManager/fileManager.js\";\nimport { LambdaTrigger } from \"~/resolver/lambda/LambdaTrigger.js\";\nimport { CopyFile } from \"~/resolver/recordTypes/fileManager/CopyFile.js\";\nimport { DeleteFile } from \"~/resolver/recordTypes/fileManager/DeleteFile.js\";\nimport { createUsersPlugins } from \"~/resolver/recordTypes/users/users.js\";\nimport { CopyUser } from \"~/resolver/recordTypes/users/CopyUser.js\";\nimport { DeleteUser } from \"~/resolver/recordTypes/users/DeleteUser.js\";\nimport { createPutCommandHandlerPlugin } from \"~/resolver/app/commandHandler/put.js\";\nimport { createDeleteCommandHandlerPlugin } from \"~/resolver/app/commandHandler/delete.js\";\nimport type {\n ICopyFileLambdaPayload,\n IDeleteFileLambdaPayload,\n ICopyUserLambdaPayload,\n IDeleteUserLambdaPayload\n} from \"~/types.js\";\n\nasync function processResolverEvent(\n records: SQSEvent[\"Records\"],\n config: ISyncResolverConfig,\n plugins: PluginsContainer\n): Promise<void> {\n const tableName = config.tableName || process.env.DB_TABLE;\n if (!tableName) {\n throw new WebinyError({ message: \"Table name variable is not set.\" });\n }\n\n const fetcher = createFetcher({\n maxRetries: 10,\n retryDelay: 1000,\n createDocumentClient: deployment =>\n config.createDocumentClient({ region: deployment.region })\n });\n\n const deploymentsFetcher = createDeploymentsFetcher({\n client: config.createDocumentClient({ region: process.env.AWS_REGION }),\n table: tableName\n });\n\n const deployments = await deploymentsFetcher.fetch();\n\n const storerAfterEachPlugins = plugins.byType<StorerAfterEachPlugin>(\n StorerAfterEachPlugin.type\n );\n\n const storer = createStorer({\n createDocumentClient: deployment =>\n config.createDocumentClient({ region: deployment.region }),\n afterEach: async params => {\n for (const plugin of storerAfterEachPlugins) {\n if (!plugin.canHandle(params)) {\n continue;\n }\n await plugin.handle(params);\n }\n }\n });\n\n const transformHandler = new TransformHandler({ plugins });\n const recordHandler = createRecordHandler({\n plugins,\n fetcher,\n storer,\n deployments,\n transformHandler,\n commandBundler: createBundler({\n createBundles: () => createBundles({ createBundle: createCommandBundle })\n }),\n tableBundler: createBundler({\n createBundles: () => createBundles({ createBundle: createTableBundle })\n }),\n createSourceDataContainer: () => SourceDataContainer.create()\n });\n\n const app = createResolverApp({ recordHandler, deployments });\n await app.resolve({ records });\n}\n\nclass SyncResolverLambdaHandlerImpl implements SqsEventHandler.Interface {\n constructor(private config: ISyncResolverConfig) {}\n\n async execute(eventCtx: EventContext<SQSEvent>, _next: NextFunction): Promise<SqsResult> {\n const { createLambdaClient, createS3Client, createCognitoIdentityProviderClient } =\n this.config;\n\n const awsWorkerLambdaArn =\n this.config.awsWorkerLambdaArn || process.env.AWS_SYNC_WORKER_LAMBDA_ARN;\n\n const copyFileTrigger =\n createLambdaClient && awsWorkerLambdaArn\n ? new LambdaTrigger<ICopyFileLambdaPayload>({\n arn: awsWorkerLambdaArn,\n createLambdaClient\n })\n : undefined;\n\n const deleteFileTrigger =\n createLambdaClient && awsWorkerLambdaArn\n ? new LambdaTrigger<IDeleteFileLambdaPayload>({\n arn: awsWorkerLambdaArn,\n createLambdaClient\n })\n : undefined;\n\n const copyUserTrigger =\n createLambdaClient && awsWorkerLambdaArn\n ? new LambdaTrigger<ICopyUserLambdaPayload>({\n arn: awsWorkerLambdaArn,\n createLambdaClient\n })\n : undefined;\n\n const deleteUserTrigger =\n createLambdaClient && awsWorkerLambdaArn\n ? new LambdaTrigger<IDeleteUserLambdaPayload>({\n arn: awsWorkerLambdaArn,\n createLambdaClient\n })\n : undefined;\n\n const copyFile =\n createS3Client && copyFileTrigger\n ? new CopyFile({\n createS3Client,\n getLambdaTrigger: () => copyFileTrigger\n })\n : undefined;\n\n const deleteFile =\n createS3Client && deleteFileTrigger\n ? new DeleteFile({\n createS3Client,\n getLambdaTrigger: () => deleteFileTrigger\n })\n : undefined;\n\n const copyUser =\n createCognitoIdentityProviderClient && copyUserTrigger\n ? new CopyUser({\n createCognitoIdentityProviderClient,\n getLambdaTrigger: () => copyUserTrigger\n })\n : undefined;\n\n const deleteUser =\n createCognitoIdentityProviderClient && deleteUserTrigger\n ? new DeleteUser({\n createCognitoIdentityProviderClient,\n getLambdaTrigger: () => deleteUserTrigger\n })\n : undefined;\n\n const plugins = new PluginsContainer([\n ...(copyFile && deleteFile ? createFileManagerPlugins({ copyFile, deleteFile }) : []),\n ...(copyUser && deleteUser ? createUsersPlugins({ copyUser, deleteUser }) : []),\n createPutCommandHandlerPlugin(),\n createDeleteCommandHandlerPlugin(),\n ...(this.config.plugins || [])\n ]);\n\n try {\n await processResolverEvent(eventCtx.event.Records, this.config, plugins);\n return { success: true };\n } catch (ex) {\n const error = convertException(ex);\n console.error(error);\n return { success: false, message: error.message };\n }\n }\n}\n\nexport const SyncResolverLambdaHandler = SqsEventHandler.createImplementation({\n implementation: SyncResolverLambdaHandlerImpl,\n dependencies: [SyncResolverConfig]\n});\n"],"names":["processResolverEvent","records","config","plugins","tableName","process","WebinyError","fetcher","createFetcher","deployment","deploymentsFetcher","createDeploymentsFetcher","deployments","storerAfterEachPlugins","StorerAfterEachPlugin","storer","createStorer","params","plugin","transformHandler","TransformHandler","recordHandler","createRecordHandler","createBundler","createBundles","createCommandBundle","createTableBundle","SourceDataContainer","app","createResolverApp","SyncResolverLambdaHandlerImpl","eventCtx","_next","createLambdaClient","createS3Client","createCognitoIdentityProviderClient","awsWorkerLambdaArn","copyFileTrigger","LambdaTrigger","undefined","deleteFileTrigger","copyUserTrigger","deleteUserTrigger","copyFile","CopyFile","deleteFile","DeleteFile","copyUser","CopyUser","deleteUser","DeleteUser","PluginsContainer","createFileManagerPlugins","createUsersPlugins","createPutCommandHandlerPlugin","createDeleteCommandHandlerPlugin","ex","error","convertException","console","SyncResolverLambdaHandler","SqsEventHandler","SyncResolverConfig"],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { IRecordHandler, IRecordHandlerHandleParams } from "./abstractions/RecordHandler.js";
|
|
2
2
|
import type { PluginsContainer } from "@webiny/plugins";
|
|
3
|
-
import type { IFetcher } from "
|
|
4
|
-
import type { IStorer } from "
|
|
5
|
-
import type { IBundler } from "
|
|
6
|
-
import type { IDeployments } from "
|
|
7
|
-
import type { ITransformHandler } from "
|
|
8
|
-
import type { ISourceDataContainer } from "
|
|
3
|
+
import type { IFetcher } from "../../resolver/app/fetcher/types.js";
|
|
4
|
+
import type { IStorer } from "../../resolver/app/storer/types.js";
|
|
5
|
+
import type { IBundler } from "../../resolver/app/bundler/types.js";
|
|
6
|
+
import type { IDeployments } from "../../resolver/deployment/types.js";
|
|
7
|
+
import type { ITransformHandler } from "../../resolver/app/transform/TransformHandler.js";
|
|
8
|
+
import type { ISourceDataContainer } from "../../resolver/app/data/types.js";
|
|
9
9
|
export interface IRecordHandlerParams {
|
|
10
10
|
fetcher: IFetcher;
|
|
11
11
|
storer: IStorer;
|