@webiny/api-sync-system 0.0.0-unstable.6844005670 → 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 +24 -20
- 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,47 +1,15 @@
|
|
|
1
1
|
import zod from "zod";
|
|
2
2
|
export declare const createCopyFileSchema: () => zod.ZodObject<{
|
|
3
|
-
action: zod.ZodEnum<
|
|
3
|
+
action: zod.ZodEnum<{
|
|
4
|
+
copyFile: "copyFile";
|
|
5
|
+
}>;
|
|
4
6
|
key: zod.ZodString;
|
|
5
7
|
source: zod.ZodObject<{
|
|
6
8
|
bucket: zod.ZodString;
|
|
7
9
|
region: zod.ZodString;
|
|
8
|
-
},
|
|
9
|
-
region: string;
|
|
10
|
-
bucket: string;
|
|
11
|
-
}, {
|
|
12
|
-
region: string;
|
|
13
|
-
bucket: string;
|
|
14
|
-
}>;
|
|
10
|
+
}, zod.core.$strip>;
|
|
15
11
|
target: zod.ZodObject<{
|
|
16
12
|
bucket: zod.ZodString;
|
|
17
13
|
region: zod.ZodString;
|
|
18
|
-
},
|
|
19
|
-
|
|
20
|
-
bucket: string;
|
|
21
|
-
}, {
|
|
22
|
-
region: string;
|
|
23
|
-
bucket: string;
|
|
24
|
-
}>;
|
|
25
|
-
}, "strip", zod.ZodTypeAny, {
|
|
26
|
-
key: string;
|
|
27
|
-
action: "copyFile";
|
|
28
|
-
source: {
|
|
29
|
-
region: string;
|
|
30
|
-
bucket: string;
|
|
31
|
-
};
|
|
32
|
-
target: {
|
|
33
|
-
region: string;
|
|
34
|
-
bucket: string;
|
|
35
|
-
};
|
|
36
|
-
}, {
|
|
37
|
-
key: string;
|
|
38
|
-
action: "copyFile";
|
|
39
|
-
source: {
|
|
40
|
-
region: string;
|
|
41
|
-
bucket: string;
|
|
42
|
-
};
|
|
43
|
-
target: {
|
|
44
|
-
region: string;
|
|
45
|
-
bucket: string;
|
|
46
|
-
};
|
|
47
|
-
}>;
|
|
14
|
+
}, zod.core.$strip>;
|
|
15
|
+
}, zod.core.$strip>;
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import zod from "zod";
|
|
2
|
-
const createDataSchema = type
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
};
|
|
2
|
+
const createDataSchema = (type)=>zod.object({
|
|
3
|
+
bucket: zod.string().min(1, `${type} Bucket is required.`),
|
|
4
|
+
region: zod.string().min(1, `${type} Region is required.`)
|
|
5
|
+
});
|
|
6
|
+
const createCopyFileSchema = ()=>zod.object({
|
|
7
|
+
action: zod["enum"]([
|
|
8
|
+
"copyFile"
|
|
9
|
+
]),
|
|
10
|
+
key: zod.string().min(1, "Key is required."),
|
|
11
|
+
source: createDataSchema("Source"),
|
|
12
|
+
target: createDataSchema("Target")
|
|
13
|
+
});
|
|
14
|
+
export { createCopyFileSchema };
|
|
16
15
|
|
|
17
16
|
//# sourceMappingURL=copyFileSchema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"worker/actions/copyFile/copyFileSchema.js","sources":["../../../../src/worker/actions/copyFile/copyFileSchema.ts"],"sourcesContent":["import zod from \"zod\";\n\nconst createDataSchema = (type: string) => {\n return zod.object({\n bucket: zod.string().min(1, `${type} Bucket is required.`),\n region: zod.string().min(1, `${type} Region is required.`)\n });\n};\nexport const createCopyFileSchema = () => {\n return zod.object({\n action: zod.enum([\"copyFile\"]),\n key: zod.string().min(1, \"Key is required.\"),\n source: createDataSchema(\"Source\"),\n target: createDataSchema(\"Target\")\n });\n};\n"],"names":["createDataSchema","type","zod","createCopyFileSchema"],"mappings":";AAEA,MAAMA,mBAAmB,CAACC,OACfC,IAAI,MAAM,CAAC;QACd,QAAQA,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,GAAGD,KAAK,oBAAoB,CAAC;QACzD,QAAQC,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,GAAGD,KAAK,oBAAoB,CAAC;IAC7D;AAEG,MAAME,uBAAuB,IACzBD,IAAI,MAAM,CAAC;QACd,QAAQA,GAAG,CAAHA,OAAQ,CAAC;YAAC;SAAW;QAC7B,KAAKA,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG;QACzB,QAAQF,iBAAiB;QACzB,QAAQA,iBAAiB;IAC7B"}
|
|
@@ -1,83 +1,60 @@
|
|
|
1
1
|
import { AdminCreateUserCommand, AdminGetUserCommand } from "@webiny/aws-sdk/client-cognito-identity-provider/index.js";
|
|
2
2
|
import { convertException } from "@webiny/utils/exception.js";
|
|
3
3
|
import { removeCognitoUserAttributes } from "../removeCognitoUserAttributes.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
async create(params) {
|
|
9
|
-
const {
|
|
10
|
-
sourceUserPoolId,
|
|
11
|
-
targetUserPoolId,
|
|
12
|
-
username,
|
|
13
|
-
targetRegion,
|
|
14
|
-
sourceRegion
|
|
15
|
-
} = params;
|
|
16
|
-
const sourceProvider = this.createCognitoProvider({
|
|
17
|
-
region: sourceRegion
|
|
18
|
-
});
|
|
19
|
-
const sourceUser = await this.getUser({
|
|
20
|
-
userPoolId: sourceUserPoolId,
|
|
21
|
-
username,
|
|
22
|
-
provider: sourceProvider
|
|
23
|
-
});
|
|
24
|
-
if (!sourceUser) {
|
|
25
|
-
throw new Error(`Source user "${username}" not found in pool "${sourceUserPoolId}".`);
|
|
4
|
+
class CreateUser {
|
|
5
|
+
constructor(params){
|
|
6
|
+
this.createCognitoProvider = params.createCognitoProvider;
|
|
26
7
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
8
|
+
async create(params) {
|
|
9
|
+
const { sourceUserPoolId, targetUserPoolId, username, targetRegion, sourceRegion } = params;
|
|
10
|
+
const sourceProvider = this.createCognitoProvider({
|
|
11
|
+
region: sourceRegion
|
|
12
|
+
});
|
|
13
|
+
const sourceUser = await this.getUser({
|
|
14
|
+
userPoolId: sourceUserPoolId,
|
|
15
|
+
username,
|
|
16
|
+
provider: sourceProvider
|
|
17
|
+
});
|
|
18
|
+
if (!sourceUser) throw new Error(`Source user "${username}" not found in pool "${sourceUserPoolId}".`);
|
|
19
|
+
const targetProvider = this.createCognitoProvider({
|
|
20
|
+
region: targetRegion
|
|
21
|
+
});
|
|
22
|
+
const targetUser = await this.getUser({
|
|
23
|
+
userPoolId: targetUserPoolId,
|
|
24
|
+
username,
|
|
25
|
+
provider: targetProvider
|
|
26
|
+
});
|
|
27
|
+
if (targetUser) return void console.log(`Target user "${username}" already exists in pool "${targetUserPoolId}".`);
|
|
28
|
+
const input = {
|
|
29
|
+
DesiredDeliveryMediums: [],
|
|
30
|
+
ForceAliasCreation: false,
|
|
31
|
+
MessageAction: "SUPPRESS",
|
|
32
|
+
UserAttributes: removeCognitoUserAttributes(sourceUser.UserAttributes || []),
|
|
33
|
+
UserPoolId: targetUserPoolId,
|
|
34
|
+
Username: username
|
|
35
|
+
};
|
|
36
|
+
const cmd = new AdminCreateUserCommand(input);
|
|
37
|
+
try {
|
|
38
|
+
await targetProvider.send(cmd);
|
|
39
|
+
} catch (ex) {
|
|
40
|
+
console.error(`Failed to create user "${username}" in pool "${targetUserPoolId}". More info in next log line.`);
|
|
41
|
+
console.log(convertException(ex));
|
|
42
|
+
}
|
|
38
43
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
};
|
|
52
|
-
const cmd = new AdminCreateUserCommand(input);
|
|
53
|
-
try {
|
|
54
|
-
await targetProvider.send(cmd);
|
|
55
|
-
} catch (ex) {
|
|
56
|
-
console.error(`Failed to create user "${username}" in pool "${targetUserPoolId}". More info in next log line.`);
|
|
57
|
-
console.log(convertException(ex));
|
|
44
|
+
async getUser(params) {
|
|
45
|
+
const { userPoolId, username, provider } = params;
|
|
46
|
+
const input = {
|
|
47
|
+
UserPoolId: userPoolId,
|
|
48
|
+
Username: username
|
|
49
|
+
};
|
|
50
|
+
const cmd = new AdminGetUserCommand(input);
|
|
51
|
+
try {
|
|
52
|
+
const result = await provider.send(cmd);
|
|
53
|
+
if (result.$metadata?.httpStatusCode === 200) return result;
|
|
54
|
+
} catch {}
|
|
55
|
+
return null;
|
|
58
56
|
}
|
|
59
|
-
}
|
|
60
|
-
async getUser(params) {
|
|
61
|
-
const {
|
|
62
|
-
userPoolId,
|
|
63
|
-
username,
|
|
64
|
-
provider
|
|
65
|
-
} = params;
|
|
66
|
-
const input = {
|
|
67
|
-
UserPoolId: userPoolId,
|
|
68
|
-
Username: username
|
|
69
|
-
};
|
|
70
|
-
const cmd = new AdminGetUserCommand(input);
|
|
71
|
-
try {
|
|
72
|
-
const result = await provider.send(cmd);
|
|
73
|
-
if (result.$metadata?.httpStatusCode === 200) {
|
|
74
|
-
return result;
|
|
75
|
-
}
|
|
76
|
-
} catch {
|
|
77
|
-
//
|
|
78
|
-
}
|
|
79
|
-
return null;
|
|
80
|
-
}
|
|
81
57
|
}
|
|
58
|
+
export { CreateUser };
|
|
82
59
|
|
|
83
60
|
//# sourceMappingURL=CreateUser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"worker/actions/createUser/CreateUser.js","sources":["../../../../src/worker/actions/createUser/CreateUser.ts"],"sourcesContent":["import type {\n AdminCreateUserCommandInput,\n AdminGetUserCommandInput,\n AdminGetUserCommandOutput,\n CognitoIdentityProvider,\n CognitoIdentityProviderClientConfig\n} from \"@webiny/aws-sdk/client-cognito-identity-provider/index.js\";\nimport {\n AdminCreateUserCommand,\n AdminGetUserCommand\n} from \"@webiny/aws-sdk/client-cognito-identity-provider/index.js\";\nimport { convertException } from \"@webiny/utils/exception.js\";\nimport { removeCognitoUserAttributes } from \"~/worker/actions/removeCognitoUserAttributes.js\";\n\nexport interface ICreateUserParams {\n createCognitoProvider: (\n config: Partial<CognitoIdentityProviderClientConfig>\n ) => Pick<CognitoIdentityProvider, \"send\">;\n}\n\nexport interface ICreateUserCreateParams {\n username: string;\n sourceRegion: string;\n targetRegion: string;\n sourceUserPoolId: string;\n targetUserPoolId: string;\n}\n\ninterface ICreateUserGetUserParams {\n userPoolId: string;\n username: string;\n provider: Pick<CognitoIdentityProvider, \"send\">;\n}\n\nexport class CreateUser {\n private readonly createCognitoProvider: (\n config: Partial<CognitoIdentityProviderClientConfig>\n ) => Pick<CognitoIdentityProvider, \"send\">;\n\n public constructor(params: ICreateUserParams) {\n this.createCognitoProvider = params.createCognitoProvider;\n }\n\n public async create(params: ICreateUserCreateParams): Promise<void> {\n const { sourceUserPoolId, targetUserPoolId, username, targetRegion, sourceRegion } = params;\n\n const sourceProvider = this.createCognitoProvider({\n region: sourceRegion\n });\n\n const sourceUser = await this.getUser({\n userPoolId: sourceUserPoolId,\n username,\n provider: sourceProvider\n });\n if (!sourceUser) {\n throw new Error(`Source user \"${username}\" not found in pool \"${sourceUserPoolId}\".`);\n }\n const targetProvider = this.createCognitoProvider({\n region: targetRegion\n });\n const targetUser = await this.getUser({\n userPoolId: targetUserPoolId,\n username,\n provider: targetProvider\n });\n if (targetUser) {\n console.log(`Target user \"${username}\" already exists in pool \"${targetUserPoolId}\".`);\n return;\n }\n /**\n * TODO: verify that this is everything that is required to create a user.\n * We cannot just spread the sourceUser as it causes an exception:\n * `Cannot modify the non-mutable attribute sub`\n */\n const input: AdminCreateUserCommandInput = {\n DesiredDeliveryMediums: [],\n ForceAliasCreation: false,\n MessageAction: \"SUPPRESS\",\n UserAttributes: removeCognitoUserAttributes(sourceUser.UserAttributes || []),\n UserPoolId: targetUserPoolId,\n Username: username\n };\n\n const cmd = new AdminCreateUserCommand(input);\n\n try {\n await targetProvider.send(cmd);\n } catch (ex) {\n console.error(\n `Failed to create user \"${username}\" in pool \"${targetUserPoolId}\". More info in next log line.`\n );\n console.log(convertException(ex));\n }\n }\n\n private async getUser(\n params: ICreateUserGetUserParams\n ): Promise<AdminGetUserCommandOutput | null> {\n const { userPoolId, username, provider } = params;\n const input: AdminGetUserCommandInput = {\n UserPoolId: userPoolId,\n Username: username\n };\n\n const cmd = new AdminGetUserCommand(input);\n\n try {\n const result = await provider.send(cmd);\n if (result.$metadata?.httpStatusCode === 200) {\n return result;\n }\n } catch {\n //\n }\n return null;\n }\n}\n"],"names":["CreateUser","params","sourceUserPoolId","targetUserPoolId","username","targetRegion","sourceRegion","sourceProvider","sourceUser","Error","targetProvider","targetUser","console","input","removeCognitoUserAttributes","cmd","AdminCreateUserCommand","ex","convertException","userPoolId","provider","AdminGetUserCommand","result"],"mappings":";;;AAkCO,MAAMA;IAKT,YAAmBC,MAAyB,CAAE;QAC1C,IAAI,CAAC,qBAAqB,GAAGA,OAAO,qBAAqB;IAC7D;IAEA,MAAa,OAAOA,MAA+B,EAAiB;QAChE,MAAM,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,QAAQ,EAAEC,YAAY,EAAEC,YAAY,EAAE,GAAGL;QAErF,MAAMM,iBAAiB,IAAI,CAAC,qBAAqB,CAAC;YAC9C,QAAQD;QACZ;QAEA,MAAME,aAAa,MAAM,IAAI,CAAC,OAAO,CAAC;YAClC,YAAYN;YACZE;YACA,UAAUG;QACd;QACA,IAAI,CAACC,YACD,MAAM,IAAIC,MAAM,CAAC,aAAa,EAAEL,SAAS,qBAAqB,EAAEF,iBAAiB,EAAE,CAAC;QAExF,MAAMQ,iBAAiB,IAAI,CAAC,qBAAqB,CAAC;YAC9C,QAAQL;QACZ;QACA,MAAMM,aAAa,MAAM,IAAI,CAAC,OAAO,CAAC;YAClC,YAAYR;YACZC;YACA,UAAUM;QACd;QACA,IAAIC,YAAY,YACZC,QAAQ,GAAG,CAAC,CAAC,aAAa,EAAER,SAAS,0BAA0B,EAAED,iBAAiB,EAAE,CAAC;QAQzF,MAAMU,QAAqC;YACvC,wBAAwB,EAAE;YAC1B,oBAAoB;YACpB,eAAe;YACf,gBAAgBC,4BAA4BN,WAAW,cAAc,IAAI,EAAE;YAC3E,YAAYL;YACZ,UAAUC;QACd;QAEA,MAAMW,MAAM,IAAIC,uBAAuBH;QAEvC,IAAI;YACA,MAAMH,eAAe,IAAI,CAACK;QAC9B,EAAE,OAAOE,IAAI;YACTL,QAAQ,KAAK,CACT,CAAC,uBAAuB,EAAER,SAAS,WAAW,EAAED,iBAAiB,8BAA8B,CAAC;YAEpGS,QAAQ,GAAG,CAACM,iBAAiBD;QACjC;IACJ;IAEA,MAAc,QACVhB,MAAgC,EACS;QACzC,MAAM,EAAEkB,UAAU,EAAEf,QAAQ,EAAEgB,QAAQ,EAAE,GAAGnB;QAC3C,MAAMY,QAAkC;YACpC,YAAYM;YACZ,UAAUf;QACd;QAEA,MAAMW,MAAM,IAAIM,oBAAoBR;QAEpC,IAAI;YACA,MAAMS,SAAS,MAAMF,SAAS,IAAI,CAACL;YACnC,IAAIO,OAAO,SAAS,EAAE,mBAAmB,KACrC,OAAOA;QAEf,EAAE,OAAM,CAER;QACA,OAAO;IACX;AACJ"}
|
|
@@ -2,34 +2,30 @@ import { createWorkerActionPlugin } from "../../plugins/WorkerActionPlugin.js";
|
|
|
2
2
|
import { createCreateUserSchema } from "./createUserSchema.js";
|
|
3
3
|
import { CreateUser } from "./CreateUser.js";
|
|
4
4
|
import { logValidationError } from "../logValidationError.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
targetRegion: data.target.region,
|
|
29
|
-
targetUserPoolId: data.target.userPoolId
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
});
|
|
5
|
+
const createCreateUserAction = (params)=>{
|
|
6
|
+
const createUser = new CreateUser({
|
|
7
|
+
createCognitoProvider: params.createCognitoProvider
|
|
8
|
+
});
|
|
9
|
+
return createWorkerActionPlugin({
|
|
10
|
+
name: "sync.worker.action.createUser",
|
|
11
|
+
parse: (input)=>{
|
|
12
|
+
const schema = createCreateUserSchema();
|
|
13
|
+
const result = schema.safeParse(input);
|
|
14
|
+
if (!result.success || result.error) return void logValidationError(result.error);
|
|
15
|
+
return result.data;
|
|
16
|
+
},
|
|
17
|
+
async handle (params) {
|
|
18
|
+
const { data } = params;
|
|
19
|
+
return createUser.create({
|
|
20
|
+
username: data.username,
|
|
21
|
+
sourceRegion: data.source.region,
|
|
22
|
+
sourceUserPoolId: data.source.userPoolId,
|
|
23
|
+
targetRegion: data.target.region,
|
|
24
|
+
targetUserPoolId: data.target.userPoolId
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
});
|
|
33
28
|
};
|
|
29
|
+
export { createCreateUserAction };
|
|
34
30
|
|
|
35
31
|
//# sourceMappingURL=createUserAction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"worker/actions/createUser/createUserAction.js","sources":["../../../../src/worker/actions/createUser/createUserAction.ts"],"sourcesContent":["import { createWorkerActionPlugin } from \"~/worker/plugins/WorkerActionPlugin.js\";\nimport type { ICreateUserActionEvent } from \"~/worker/actions/createUser/types.js\";\nimport { createCreateUserSchema } from \"./createUserSchema.js\";\nimport type {\n CognitoIdentityProvider,\n CognitoIdentityProviderClientConfig\n} from \"@webiny/aws-sdk/client-cognito-identity-provider/index.js\";\nimport { CreateUser } from \"~/worker/actions/createUser/CreateUser.js\";\nimport { logValidationError } from \"~/worker/actions/logValidationError.js\";\n\nexport interface ICreateCreateUserActionParams {\n createCognitoProvider(\n config: Partial<CognitoIdentityProviderClientConfig>\n ): Pick<CognitoIdentityProvider, \"send\">;\n}\n\nexport const createCreateUserAction = (params: ICreateCreateUserActionParams) => {\n const createUser = new CreateUser({\n createCognitoProvider: params.createCognitoProvider\n });\n return createWorkerActionPlugin<ICreateUserActionEvent>({\n name: \"sync.worker.action.createUser\",\n parse: input => {\n const schema = createCreateUserSchema();\n\n const result = schema.safeParse(input);\n if (!result.success || result.error) {\n logValidationError(result.error);\n return undefined;\n }\n return result.data;\n },\n async handle(params) {\n const { data } = params;\n return createUser.create({\n username: data.username,\n sourceRegion: data.source.region,\n sourceUserPoolId: data.source.userPoolId,\n targetRegion: data.target.region,\n targetUserPoolId: data.target.userPoolId\n });\n }\n });\n};\n"],"names":["createCreateUserAction","params","createUser","CreateUser","createWorkerActionPlugin","input","schema","createCreateUserSchema","result","logValidationError","data"],"mappings":";;;;AAgBO,MAAMA,yBAAyB,CAACC;IACnC,MAAMC,aAAa,IAAIC,WAAW;QAC9B,uBAAuBF,OAAO,qBAAqB;IACvD;IACA,OAAOG,yBAAiD;QACpD,MAAM;QACN,OAAOC,CAAAA;YACH,MAAMC,SAASC;YAEf,MAAMC,SAASF,OAAO,SAAS,CAACD;YAChC,IAAI,CAACG,OAAO,OAAO,IAAIA,OAAO,KAAK,EAAE,YACjCC,mBAAmBD,OAAO,KAAK;YAGnC,OAAOA,OAAO,IAAI;QACtB;QACA,MAAM,QAAOP,MAAM;YACf,MAAM,EAAES,IAAI,EAAE,GAAGT;YACjB,OAAOC,WAAW,MAAM,CAAC;gBACrB,UAAUQ,KAAK,QAAQ;gBACvB,cAAcA,KAAK,MAAM,CAAC,MAAM;gBAChC,kBAAkBA,KAAK,MAAM,CAAC,UAAU;gBACxC,cAAcA,KAAK,MAAM,CAAC,MAAM;gBAChC,kBAAkBA,KAAK,MAAM,CAAC,UAAU;YAC5C;QACJ;IACJ;AACJ"}
|
|
@@ -1,47 +1,15 @@
|
|
|
1
1
|
import zod from "zod";
|
|
2
2
|
export declare const createCreateUserSchema: () => zod.ZodObject<{
|
|
3
|
-
action: zod.ZodEnum<
|
|
3
|
+
action: zod.ZodEnum<{
|
|
4
|
+
createUser: "createUser";
|
|
5
|
+
}>;
|
|
4
6
|
username: zod.ZodString;
|
|
5
7
|
source: zod.ZodObject<{
|
|
6
8
|
userPoolId: zod.ZodString;
|
|
7
9
|
region: zod.ZodString;
|
|
8
|
-
},
|
|
9
|
-
region: string;
|
|
10
|
-
userPoolId: string;
|
|
11
|
-
}, {
|
|
12
|
-
region: string;
|
|
13
|
-
userPoolId: string;
|
|
14
|
-
}>;
|
|
10
|
+
}, zod.core.$strip>;
|
|
15
11
|
target: zod.ZodObject<{
|
|
16
12
|
userPoolId: zod.ZodString;
|
|
17
13
|
region: zod.ZodString;
|
|
18
|
-
},
|
|
19
|
-
|
|
20
|
-
userPoolId: string;
|
|
21
|
-
}, {
|
|
22
|
-
region: string;
|
|
23
|
-
userPoolId: string;
|
|
24
|
-
}>;
|
|
25
|
-
}, "strip", zod.ZodTypeAny, {
|
|
26
|
-
action: "createUser";
|
|
27
|
-
source: {
|
|
28
|
-
region: string;
|
|
29
|
-
userPoolId: string;
|
|
30
|
-
};
|
|
31
|
-
target: {
|
|
32
|
-
region: string;
|
|
33
|
-
userPoolId: string;
|
|
34
|
-
};
|
|
35
|
-
username: string;
|
|
36
|
-
}, {
|
|
37
|
-
action: "createUser";
|
|
38
|
-
source: {
|
|
39
|
-
region: string;
|
|
40
|
-
userPoolId: string;
|
|
41
|
-
};
|
|
42
|
-
target: {
|
|
43
|
-
region: string;
|
|
44
|
-
userPoolId: string;
|
|
45
|
-
};
|
|
46
|
-
username: string;
|
|
47
|
-
}>;
|
|
14
|
+
}, zod.core.$strip>;
|
|
15
|
+
}, zod.core.$strip>;
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import zod from "zod";
|
|
2
|
-
const createDataSchema = type
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
};
|
|
2
|
+
const createDataSchema = (type)=>zod.object({
|
|
3
|
+
userPoolId: zod.string().min(1, `${type} UserPoolId is required.`),
|
|
4
|
+
region: zod.string().min(1, `${type} Region is required.`)
|
|
5
|
+
});
|
|
6
|
+
const createCreateUserSchema = ()=>zod.object({
|
|
7
|
+
action: zod["enum"]([
|
|
8
|
+
"createUser"
|
|
9
|
+
]),
|
|
10
|
+
username: zod.string().min(1, "Username is required."),
|
|
11
|
+
source: createDataSchema("Source"),
|
|
12
|
+
target: createDataSchema("Target")
|
|
13
|
+
});
|
|
14
|
+
export { createCreateUserSchema };
|
|
16
15
|
|
|
17
16
|
//# sourceMappingURL=createUserSchema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"worker/actions/createUser/createUserSchema.js","sources":["../../../../src/worker/actions/createUser/createUserSchema.ts"],"sourcesContent":["import zod from \"zod\";\n\nconst createDataSchema = (type: string) => {\n return zod.object({\n userPoolId: zod.string().min(1, `${type} UserPoolId is required.`),\n region: zod.string().min(1, `${type} Region is required.`)\n });\n};\nexport const createCreateUserSchema = () => {\n return zod.object({\n action: zod.enum([\"createUser\"]),\n username: zod.string().min(1, \"Username is required.\"),\n source: createDataSchema(\"Source\"),\n target: createDataSchema(\"Target\")\n });\n};\n"],"names":["createDataSchema","type","zod","createCreateUserSchema"],"mappings":";AAEA,MAAMA,mBAAmB,CAACC,OACfC,IAAI,MAAM,CAAC;QACd,YAAYA,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,GAAGD,KAAK,wBAAwB,CAAC;QACjE,QAAQC,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,GAAGD,KAAK,oBAAoB,CAAC;IAC7D;AAEG,MAAME,yBAAyB,IAC3BD,IAAI,MAAM,CAAC;QACd,QAAQA,GAAG,CAAHA,OAAQ,CAAC;YAAC;SAAa;QAC/B,UAAUA,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG;QAC9B,QAAQF,iBAAiB;QACzB,QAAQA,iBAAiB;IAC7B"}
|
|
@@ -1,75 +1,60 @@
|
|
|
1
1
|
import { DeleteObjectCommand, HeadObjectCommand } from "@webiny/aws-sdk/client-s3/index.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
} = params;
|
|
10
|
-
this.region = region;
|
|
11
|
-
this.createS3Client = createS3Client;
|
|
12
|
-
this.maxRetries = maxRetries;
|
|
13
|
-
this.baseDelayMs = baseDelayMs;
|
|
14
|
-
}
|
|
15
|
-
async delete(params) {
|
|
16
|
-
const {
|
|
17
|
-
bucket,
|
|
18
|
-
key
|
|
19
|
-
} = params;
|
|
20
|
-
const client = this.createS3Client({
|
|
21
|
-
region: this.region
|
|
22
|
-
});
|
|
23
|
-
if (!(await this.objectExists({
|
|
24
|
-
client,
|
|
25
|
-
bucket,
|
|
26
|
-
key
|
|
27
|
-
}))) {
|
|
28
|
-
return;
|
|
2
|
+
class DeleteFile {
|
|
3
|
+
constructor(params){
|
|
4
|
+
const { createS3Client, region, maxRetries = 5, baseDelayMs = 100 } = params;
|
|
5
|
+
this.region = region;
|
|
6
|
+
this.createS3Client = createS3Client;
|
|
7
|
+
this.maxRetries = maxRetries;
|
|
8
|
+
this.baseDelayMs = baseDelayMs;
|
|
29
9
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
});
|
|
35
|
-
return await client.send(cmd);
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
async objectExists(params) {
|
|
39
|
-
const {
|
|
40
|
-
client,
|
|
41
|
-
bucket,
|
|
42
|
-
key
|
|
43
|
-
} = params;
|
|
44
|
-
try {
|
|
45
|
-
const result = await this.withRetry(async () => {
|
|
46
|
-
const cmd = new HeadObjectCommand({
|
|
47
|
-
Bucket: bucket,
|
|
48
|
-
Key: key
|
|
10
|
+
async delete(params) {
|
|
11
|
+
const { bucket, key } = params;
|
|
12
|
+
const client = this.createS3Client({
|
|
13
|
+
region: this.region
|
|
49
14
|
});
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
15
|
+
if (!await this.objectExists({
|
|
16
|
+
client,
|
|
17
|
+
bucket,
|
|
18
|
+
key
|
|
19
|
+
})) return;
|
|
20
|
+
await this.withRetry(async ()=>{
|
|
21
|
+
const cmd = new DeleteObjectCommand({
|
|
22
|
+
Bucket: bucket,
|
|
23
|
+
Key: key
|
|
24
|
+
});
|
|
25
|
+
return await client.send(cmd);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
async objectExists(params) {
|
|
29
|
+
const { client, bucket, key } = params;
|
|
30
|
+
try {
|
|
31
|
+
const result = await this.withRetry(async ()=>{
|
|
32
|
+
const cmd = new HeadObjectCommand({
|
|
33
|
+
Bucket: bucket,
|
|
34
|
+
Key: key
|
|
35
|
+
});
|
|
36
|
+
return await client.send(cmd);
|
|
37
|
+
});
|
|
38
|
+
return result.$metadata?.httpStatusCode === 200;
|
|
39
|
+
} catch (ex) {
|
|
40
|
+
if (ex?.$metadata?.httpStatusCode === 404) return false;
|
|
41
|
+
throw ex;
|
|
42
|
+
}
|
|
58
43
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
44
|
+
async withRetry(operation, attempt = 0) {
|
|
45
|
+
try {
|
|
46
|
+
return await operation();
|
|
47
|
+
} catch (error) {
|
|
48
|
+
const retryable = error?.name === "Throttling" || error?.name === "TooManyRequestsException" || error?.name === "SlowDown";
|
|
49
|
+
if (retryable && attempt < this.maxRetries) {
|
|
50
|
+
const delay = this.baseDelayMs * Math.pow(2, attempt);
|
|
51
|
+
await new Promise((resolve)=>setTimeout(resolve, delay));
|
|
52
|
+
return this.withRetry(operation, attempt + 1);
|
|
53
|
+
}
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
71
56
|
}
|
|
72
|
-
}
|
|
73
57
|
}
|
|
58
|
+
export { DeleteFile };
|
|
74
59
|
|
|
75
60
|
//# sourceMappingURL=DeleteFile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"worker/actions/deleteFile/DeleteFile.js","sources":["../../../../src/worker/actions/deleteFile/DeleteFile.ts"],"sourcesContent":["import type { S3Client, S3ClientConfig } from \"@webiny/aws-sdk/client-s3/index.js\";\nimport { DeleteObjectCommand, HeadObjectCommand } from \"@webiny/aws-sdk/client-s3/index.js\";\n\nexport interface IDeleteFileParamsGetS3ClientCb {\n (config: Partial<S3ClientConfig>): Pick<S3Client, \"send\">;\n}\n\nexport interface IDeleteFileParams {\n region: string;\n createS3Client: IDeleteFileParamsGetS3ClientCb;\n maxRetries?: number;\n baseDelayMs?: number;\n}\n\nexport interface IDeleteFileInput {\n bucket: string;\n key: string;\n}\n\ninterface IDeleteFileObjectExistsParams {\n client: Pick<S3Client, \"send\">;\n bucket: string;\n key: string;\n}\n\nexport class DeleteFile {\n private readonly region: string;\n private readonly createS3Client: IDeleteFileParamsGetS3ClientCb;\n private readonly maxRetries: number;\n private readonly baseDelayMs: number;\n\n public constructor(params: IDeleteFileParams) {\n const { createS3Client, region, maxRetries = 5, baseDelayMs = 100 } = params;\n this.region = region;\n this.createS3Client = createS3Client;\n this.maxRetries = maxRetries;\n this.baseDelayMs = baseDelayMs;\n }\n\n public async delete(params: IDeleteFileInput): Promise<void> {\n const { bucket, key } = params;\n const client = this.createS3Client({\n region: this.region\n });\n\n if (!(await this.objectExists({ client, bucket, key }))) {\n return;\n }\n\n await this.withRetry(async () => {\n const cmd = new DeleteObjectCommand({\n Bucket: bucket,\n Key: key\n });\n return await client.send(cmd);\n });\n }\n\n private async objectExists(params: IDeleteFileObjectExistsParams): Promise<boolean> {\n const { client, bucket, key } = params;\n try {\n const result = await this.withRetry(async () => {\n const cmd = new HeadObjectCommand({\n Bucket: bucket,\n Key: key\n });\n return await client.send(cmd);\n });\n return result.$metadata?.httpStatusCode === 200;\n } catch (ex) {\n if (ex?.$metadata?.httpStatusCode === 404) {\n return false;\n }\n throw ex;\n }\n }\n\n private async withRetry<T>(operation: () => Promise<T>, attempt = 0): Promise<T> {\n try {\n return await operation();\n } catch (error: any) {\n const retryable =\n error?.name === \"Throttling\" ||\n error?.name === \"TooManyRequestsException\" ||\n error?.name === \"SlowDown\";\n\n if (retryable && attempt < this.maxRetries) {\n const delay = this.baseDelayMs * Math.pow(2, attempt);\n await new Promise(resolve => setTimeout(resolve, delay));\n return this.withRetry(operation, attempt + 1);\n }\n\n throw error;\n }\n }\n}\n"],"names":["DeleteFile","params","createS3Client","region","maxRetries","baseDelayMs","bucket","key","client","cmd","DeleteObjectCommand","result","HeadObjectCommand","ex","operation","attempt","error","retryable","delay","Math","Promise","resolve","setTimeout"],"mappings":";AAyBO,MAAMA;IAMT,YAAmBC,MAAyB,CAAE;QAC1C,MAAM,EAAEC,cAAc,EAAEC,MAAM,EAAEC,aAAa,CAAC,EAAEC,cAAc,GAAG,EAAE,GAAGJ;QACtE,IAAI,CAAC,MAAM,GAAGE;QACd,IAAI,CAAC,cAAc,GAAGD;QACtB,IAAI,CAAC,UAAU,GAAGE;QAClB,IAAI,CAAC,WAAW,GAAGC;IACvB;IAEA,MAAa,OAAOJ,MAAwB,EAAiB;QACzD,MAAM,EAAEK,MAAM,EAAEC,GAAG,EAAE,GAAGN;QACxB,MAAMO,SAAS,IAAI,CAAC,cAAc,CAAC;YAC/B,QAAQ,IAAI,CAAC,MAAM;QACvB;QAEA,IAAI,CAAE,MAAM,IAAI,CAAC,YAAY,CAAC;YAAEA;YAAQF;YAAQC;QAAI,IAChD;QAGJ,MAAM,IAAI,CAAC,SAAS,CAAC;YACjB,MAAME,MAAM,IAAIC,oBAAoB;gBAChC,QAAQJ;gBACR,KAAKC;YACT;YACA,OAAO,MAAMC,OAAO,IAAI,CAACC;QAC7B;IACJ;IAEA,MAAc,aAAaR,MAAqC,EAAoB;QAChF,MAAM,EAAEO,MAAM,EAAEF,MAAM,EAAEC,GAAG,EAAE,GAAGN;QAChC,IAAI;YACA,MAAMU,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC;gBAChC,MAAMF,MAAM,IAAIG,kBAAkB;oBAC9B,QAAQN;oBACR,KAAKC;gBACT;gBACA,OAAO,MAAMC,OAAO,IAAI,CAACC;YAC7B;YACA,OAAOE,OAAO,SAAS,EAAE,mBAAmB;QAChD,EAAE,OAAOE,IAAI;YACT,IAAIA,IAAI,WAAW,mBAAmB,KAClC,OAAO;YAEX,MAAMA;QACV;IACJ;IAEA,MAAc,UAAaC,SAA2B,EAAEC,UAAU,CAAC,EAAc;QAC7E,IAAI;YACA,OAAO,MAAMD;QACjB,EAAE,OAAOE,OAAY;YACjB,MAAMC,YACFD,OAAO,SAAS,gBAChBA,OAAO,SAAS,8BAChBA,OAAO,SAAS;YAEpB,IAAIC,aAAaF,UAAU,IAAI,CAAC,UAAU,EAAE;gBACxC,MAAMG,QAAQ,IAAI,CAAC,WAAW,GAAGC,KAAK,GAAG,CAAC,GAAGJ;gBAC7C,MAAM,IAAIK,QAAQC,CAAAA,UAAWC,WAAWD,SAASH;gBACjD,OAAO,IAAI,CAAC,SAAS,CAACJ,WAAWC,UAAU;YAC/C;YAEA,MAAMC;QACV;IACJ;AACJ"}
|