@webiny/api-sync-system 6.3.0 → 6.4.0-beta.0
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 +14 -14
- 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.js +26 -31
- package/resolver/app/validation/body.js.map +1 -1
- package/resolver/app/validation/createJsonTransform.js +12 -13
- package/resolver/app/validation/createJsonTransform.js.map +1 -1
- package/resolver/app/validation/detail.js +30 -35
- package/resolver/app/validation/detail.js.map +1 -1
- package/resolver/app/validation/event.js +17 -18
- package/resolver/app/validation/event.js.map +1 -1
- package/resolver/app/validation/numericString.js +8 -11
- package/resolver/app/validation/numericString.js.map +1 -1
- 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 -31
- 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 -84
- package/resolver/deployment/DeploymentsFetcher.js.map +1 -1
- 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 -9
- package/sync/utils/getTableType.js.map +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.js +6 -5
- 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.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.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.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.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.js +13 -14
- package/worker/actions/updateUser/updateUserSchema.js.map +1 -1
- package/worker/createWorkerHandler.js +24 -30
- package/worker/createWorkerHandler.js.map +1 -1
- package/worker/handler/WorkerActionHandler.js +19 -21
- package/worker/handler/WorkerActionHandler.js.map +1 -1
- package/worker/handler/eventHandler.js +14 -16
- package/worker/handler/eventHandler.js.map +1 -1
- package/worker/plugins/WorkerActionPlugin.js +17 -16
- package/worker/plugins/WorkerActionPlugin.js.map +1 -1
- package/worker/types.js +0 -3
- package/index.js.map +0 -1
- package/resolver/app/abstractions/RecordHandler.js.map +0 -1
- package/resolver/app/abstractions/RecordsValidation.js.map +0 -1
- package/resolver/app/abstractions/ResolverApplication.js.map +0 -1
- package/resolver/app/abstractions/ResolverRecord.js.map +0 -1
- package/resolver/app/bundler/types.js.map +0 -1
- package/resolver/app/data/types.js.map +0 -1
- package/resolver/app/fetcher/types.js.map +0 -1
- package/resolver/app/ingestor/types.js.map +0 -1
- package/resolver/app/storer/types.js.map +0 -1
- package/resolver/deployment/types.js.map +0 -1
- package/resolver/recordTypes/fileManager/types.js.map +0 -1
- package/resolver/recordTypes/users/types.js.map +0 -1
- package/sync/handler/types.js.map +0 -1
- package/sync/types.js.map +0 -1
- package/worker/actions/copyFile/types.js.map +0 -1
- package/worker/actions/createUser/types.js.map +0 -1
- package/worker/actions/deleteFile/types.js.map +0 -1
- package/worker/actions/deleteUser/types.js.map +0 -1
- package/worker/actions/updateUser/types.js.map +0 -1
- package/worker/types.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"resolver/deployment/Deployments.js","sources":["../../../src/resolver/deployment/Deployments.ts"],"sourcesContent":["import type { IDeployment, IDeployments } from \"./types.js\";\n\nexport interface IDeploymentsParams {\n deployments: IDeployment[];\n}\n\nexport class Deployments implements IDeployments {\n private readonly deployments: IDeployment[];\n\n public constructor(params: IDeploymentsParams) {\n this.deployments = params.deployments;\n }\n\n public hasAny(): boolean {\n return this.deployments.length > 0;\n }\n\n public all(): IDeployment[] {\n return this.deployments;\n }\n\n public get(name: string): IDeployment | null {\n return this.deployments.find(deployment => deployment.name === name) || null;\n }\n\n public without(input: Pick<IDeployment, \"name\">): IDeployments {\n return createDeployments({\n deployments: this.deployments.filter(deployment => {\n return deployment.name !== input.name;\n })\n });\n }\n}\n\nexport const createDeployments = (params: IDeploymentsParams): IDeployments => {\n return new Deployments(params);\n};\n"],"names":["Deployments","params","name","deployment","input","createDeployments"],"mappings":"AAMO,MAAMA;IAGT,YAAmBC,MAA0B,CAAE;QAC3C,IAAI,CAAC,WAAW,GAAGA,OAAO,WAAW;IACzC;IAEO,SAAkB;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG;IACrC;IAEO,MAAqB;QACxB,OAAO,IAAI,CAAC,WAAW;IAC3B;IAEO,IAAIC,IAAY,EAAsB;QACzC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAACC,CAAAA,aAAcA,WAAW,IAAI,KAAKD,SAAS;IAC5E;IAEO,QAAQE,KAAgC,EAAgB;QAC3D,OAAOC,kBAAkB;YACrB,aAAa,IAAI,CAAC,WAAW,CAAC,MAAM,CAACF,CAAAA,aAC1BA,WAAW,IAAI,KAAKC,MAAM,IAAI;QAE7C;IACJ;AACJ;AAEO,MAAMC,oBAAoB,CAACJ,SACvB,IAAID,YAAYC"}
|
|
@@ -6,96 +6,87 @@ import { createZodError } from "@webiny/utils/createZodError.js";
|
|
|
6
6
|
import { createDeployment } from "./Deployment.js";
|
|
7
7
|
import { SemVer } from "semver";
|
|
8
8
|
const deploymentsValidation = zod.array(zod.object({
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
9
|
+
name: zod.string(),
|
|
10
|
+
env: zod.string(),
|
|
11
|
+
variant: zod.string().optional(),
|
|
12
|
+
region: zod.string(),
|
|
13
|
+
version: zod.string(),
|
|
14
|
+
s3Id: zod.string(),
|
|
15
|
+
s3Arn: zod.string(),
|
|
16
|
+
cognitoUserPoolId: zod.string().optional().transform((input)=>input || ""),
|
|
17
|
+
primaryDynamoDbArn: zod.string(),
|
|
18
|
+
primaryDynamoDbName: zod.string(),
|
|
19
|
+
primaryDynamoDbHashKey: zod.string(),
|
|
20
|
+
primaryDynamoDbRangeKey: zod.string(),
|
|
21
|
+
opensearchDynamodbTableArn: zod.string().optional(),
|
|
22
|
+
opensearchDynamodbTableName: zod.string().optional()
|
|
23
23
|
}));
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
async fetch() {
|
|
30
|
-
if (!this.deployments) {
|
|
31
|
-
this.deployments = createDeployments({
|
|
32
|
-
deployments: await this.load()
|
|
33
|
-
});
|
|
24
|
+
class DeploymentsFetcher {
|
|
25
|
+
constructor(params){
|
|
26
|
+
this.client = params.client;
|
|
27
|
+
this.table = params.table;
|
|
34
28
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
IndexName: "GSI1",
|
|
41
|
-
KeyConditionExpression: `GSI1_PK = :pk`,
|
|
42
|
-
ExpressionAttributeValues: {
|
|
43
|
-
":pk": {
|
|
44
|
-
S: "DEPLOYMENTS"
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
let result;
|
|
49
|
-
try {
|
|
50
|
-
result = await this.client.send(cmd);
|
|
51
|
-
} catch (ex) {
|
|
52
|
-
console.error("Error while fetching all deployments to be synced.");
|
|
53
|
-
throw ex;
|
|
29
|
+
async fetch() {
|
|
30
|
+
if (!this.deployments) this.deployments = createDeployments({
|
|
31
|
+
deployments: await this.load()
|
|
32
|
+
});
|
|
33
|
+
return this.deployments;
|
|
54
34
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
35
|
+
async load() {
|
|
36
|
+
const cmd = new QueryCommand({
|
|
37
|
+
TableName: this.table,
|
|
38
|
+
IndexName: "GSI1",
|
|
39
|
+
KeyConditionExpression: "GSI1_PK = :pk",
|
|
40
|
+
ExpressionAttributeValues: {
|
|
41
|
+
":pk": {
|
|
42
|
+
S: "DEPLOYMENTS"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
let result;
|
|
47
|
+
try {
|
|
48
|
+
result = await this.client.send(cmd);
|
|
49
|
+
} catch (ex) {
|
|
50
|
+
console.error("Error while fetching all deployments to be synced.");
|
|
51
|
+
throw ex;
|
|
68
52
|
}
|
|
69
|
-
|
|
53
|
+
return this.output(result);
|
|
70
54
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
55
|
+
output(output) {
|
|
56
|
+
const items = (output.Items || []).map((item)=>{
|
|
57
|
+
const result = unmarshall(item);
|
|
58
|
+
return result.item;
|
|
59
|
+
});
|
|
60
|
+
if (0 === items.length) throw new WebinyError({
|
|
61
|
+
message: "No deployments found which need to be synced.",
|
|
62
|
+
code: "NO_DEPLOYMENTS",
|
|
63
|
+
data: {
|
|
64
|
+
table: this.table
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
const result = deploymentsValidation.safeParse(items);
|
|
68
|
+
if (!result.success) throw createZodError(result.error);
|
|
69
|
+
return result.data.map((item)=>createDeployment({
|
|
70
|
+
name: item.name,
|
|
71
|
+
env: item.env,
|
|
72
|
+
variant: item.variant,
|
|
73
|
+
region: item.region,
|
|
74
|
+
version: new SemVer(item.version),
|
|
75
|
+
services: {
|
|
76
|
+
s3Id: item.s3Id,
|
|
77
|
+
s3Arn: item.s3Arn,
|
|
78
|
+
cognitoUserPoolId: item.cognitoUserPoolId,
|
|
79
|
+
primaryDynamoDbArn: item.primaryDynamoDbArn,
|
|
80
|
+
primaryDynamoDbName: item.primaryDynamoDbName,
|
|
81
|
+
primaryDynamoDbHashKey: item.primaryDynamoDbHashKey,
|
|
82
|
+
primaryDynamoDbRangeKey: item.primaryDynamoDbRangeKey,
|
|
83
|
+
opensearchDynamodbTableArn: item.opensearchDynamodbTableArn,
|
|
84
|
+
opensearchDynamodbTableName: item.opensearchDynamodbTableName
|
|
85
|
+
}
|
|
86
|
+
}));
|
|
74
87
|
}
|
|
75
|
-
return result.data.map(item => {
|
|
76
|
-
return createDeployment({
|
|
77
|
-
name: item.name,
|
|
78
|
-
env: item.env,
|
|
79
|
-
variant: item.variant,
|
|
80
|
-
region: item.region,
|
|
81
|
-
version: new SemVer(item.version),
|
|
82
|
-
services: {
|
|
83
|
-
s3Id: item.s3Id,
|
|
84
|
-
s3Arn: item.s3Arn,
|
|
85
|
-
cognitoUserPoolId: item.cognitoUserPoolId,
|
|
86
|
-
primaryDynamoDbArn: item.primaryDynamoDbArn,
|
|
87
|
-
primaryDynamoDbName: item.primaryDynamoDbName,
|
|
88
|
-
primaryDynamoDbHashKey: item.primaryDynamoDbHashKey,
|
|
89
|
-
primaryDynamoDbRangeKey: item.primaryDynamoDbRangeKey,
|
|
90
|
-
opensearchDynamodbTableArn: item.opensearchDynamodbTableArn,
|
|
91
|
-
opensearchDynamodbTableName: item.opensearchDynamodbTableName
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
88
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
};
|
|
89
|
+
const createDeploymentsFetcher = (params)=>new DeploymentsFetcher(params);
|
|
90
|
+
export { DeploymentsFetcher, createDeploymentsFetcher };
|
|
100
91
|
|
|
101
92
|
//# sourceMappingURL=DeploymentsFetcher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"resolver/deployment/DeploymentsFetcher.js","sources":["../../../src/resolver/deployment/DeploymentsFetcher.ts"],"sourcesContent":["import type { IDeployment, IDeployments, IDeploymentsFetcher } from \"./types.js\";\nimport type {\n DynamoDBDocument,\n QueryCommandOutput\n} from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport { QueryCommand, unmarshall } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport { WebinyError } from \"@webiny/error\";\nimport { createDeployments } from \"./Deployments.js\";\nimport zod from \"zod\";\nimport { createZodError } from \"@webiny/utils/createZodError.js\";\nimport { createDeployment } from \"~/resolver/deployment/Deployment.js\";\nimport { SemVer } from \"semver\";\n\nconst deploymentsValidation = zod.array(\n zod.object({\n name: zod.string(),\n env: zod.string(),\n variant: zod.string().optional(),\n region: zod.string(),\n version: zod.string(),\n s3Id: zod.string(),\n s3Arn: zod.string(),\n cognitoUserPoolId: zod\n .string()\n .optional()\n .transform(input => input || \"\"),\n primaryDynamoDbArn: zod.string(),\n primaryDynamoDbName: zod.string(),\n primaryDynamoDbHashKey: zod.string(),\n primaryDynamoDbRangeKey: zod.string(),\n opensearchDynamodbTableArn: zod.string().optional(),\n opensearchDynamodbTableName: zod.string().optional()\n })\n);\n\nexport interface IDeploymentsFetcherParams {\n client: Pick<DynamoDBDocument, \"send\">;\n table: string;\n}\n\nexport class DeploymentsFetcher implements IDeploymentsFetcher {\n private readonly client: Pick<DynamoDBDocument, \"send\">;\n private deployments: IDeployments | undefined;\n private readonly table: string;\n\n public constructor(params: IDeploymentsFetcherParams) {\n this.client = params.client;\n this.table = params.table;\n }\n\n public async fetch(): Promise<IDeployments> {\n if (!this.deployments) {\n this.deployments = createDeployments({\n deployments: await this.load()\n });\n }\n return this.deployments;\n }\n\n private async load(): Promise<IDeployment[]> {\n const cmd = new QueryCommand({\n TableName: this.table,\n IndexName: \"GSI1\",\n KeyConditionExpression: `GSI1_PK = :pk`,\n ExpressionAttributeValues: {\n \":pk\": {\n S: \"DEPLOYMENTS\"\n }\n }\n });\n\n let result: QueryCommandOutput;\n try {\n result = await this.client.send(cmd);\n } catch (ex) {\n console.error(\"Error while fetching all deployments to be synced.\");\n throw ex;\n }\n return this.output(result);\n }\n\n private output(output: QueryCommandOutput): IDeployment[] {\n const items = (output.Items || []).map(item => {\n const result = unmarshall(item);\n return result.item;\n });\n if (items.length === 0) {\n throw new WebinyError({\n message: \"No deployments found which need to be synced.\",\n code: \"NO_DEPLOYMENTS\",\n data: {\n table: this.table\n }\n });\n }\n\n const result = deploymentsValidation.safeParse(items);\n if (!result.success) {\n throw createZodError(result.error);\n }\n return result.data.map(item => {\n return createDeployment({\n name: item.name,\n env: item.env,\n variant: item.variant,\n region: item.region,\n version: new SemVer(item.version),\n services: {\n s3Id: item.s3Id,\n s3Arn: item.s3Arn,\n cognitoUserPoolId: item.cognitoUserPoolId,\n primaryDynamoDbArn: item.primaryDynamoDbArn,\n primaryDynamoDbName: item.primaryDynamoDbName,\n primaryDynamoDbHashKey: item.primaryDynamoDbHashKey,\n primaryDynamoDbRangeKey: item.primaryDynamoDbRangeKey,\n opensearchDynamodbTableArn: item.opensearchDynamodbTableArn,\n opensearchDynamodbTableName: item.opensearchDynamodbTableName\n }\n });\n });\n }\n}\n\nexport const createDeploymentsFetcher = (\n params: IDeploymentsFetcherParams\n): IDeploymentsFetcher => {\n return new DeploymentsFetcher(params);\n};\n"],"names":["deploymentsValidation","zod","input","DeploymentsFetcher","params","createDeployments","cmd","QueryCommand","result","ex","console","output","items","item","unmarshall","WebinyError","createZodError","createDeployment","SemVer","createDeploymentsFetcher"],"mappings":";;;;;;;AAaA,MAAMA,wBAAwBC,IAAI,KAAK,CACnCA,IAAI,MAAM,CAAC;IACP,MAAMA,IAAI,MAAM;IAChB,KAAKA,IAAI,MAAM;IACf,SAASA,IAAI,MAAM,GAAG,QAAQ;IAC9B,QAAQA,IAAI,MAAM;IAClB,SAASA,IAAI,MAAM;IACnB,MAAMA,IAAI,MAAM;IAChB,OAAOA,IAAI,MAAM;IACjB,mBAAmBA,IAAAA,MACR,GACN,QAAQ,GACR,SAAS,CAACC,CAAAA,QAASA,SAAS;IACjC,oBAAoBD,IAAI,MAAM;IAC9B,qBAAqBA,IAAI,MAAM;IAC/B,wBAAwBA,IAAI,MAAM;IAClC,yBAAyBA,IAAI,MAAM;IACnC,4BAA4BA,IAAI,MAAM,GAAG,QAAQ;IACjD,6BAA6BA,IAAI,MAAM,GAAG,QAAQ;AACtD;AAQG,MAAME;IAKT,YAAmBC,MAAiC,CAAE;QAClD,IAAI,CAAC,MAAM,GAAGA,OAAO,MAAM;QAC3B,IAAI,CAAC,KAAK,GAAGA,OAAO,KAAK;IAC7B;IAEA,MAAa,QAA+B;QACxC,IAAI,CAAC,IAAI,CAAC,WAAW,EACjB,IAAI,CAAC,WAAW,GAAGC,kBAAkB;YACjC,aAAa,MAAM,IAAI,CAAC,IAAI;QAChC;QAEJ,OAAO,IAAI,CAAC,WAAW;IAC3B;IAEA,MAAc,OAA+B;QACzC,MAAMC,MAAM,IAAIC,aAAa;YACzB,WAAW,IAAI,CAAC,KAAK;YACrB,WAAW;YACX,wBAAwB;YACxB,2BAA2B;gBACvB,OAAO;oBACH,GAAG;gBACP;YACJ;QACJ;QAEA,IAAIC;QACJ,IAAI;YACAA,SAAS,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAACF;QACpC,EAAE,OAAOG,IAAI;YACTC,QAAQ,KAAK,CAAC;YACd,MAAMD;QACV;QACA,OAAO,IAAI,CAAC,MAAM,CAACD;IACvB;IAEQ,OAAOG,MAA0B,EAAiB;QACtD,MAAMC,QAASD,AAAAA,CAAAA,OAAO,KAAK,IAAI,EAAC,EAAG,GAAG,CAACE,CAAAA;YACnC,MAAML,SAASM,WAAWD;YAC1B,OAAOL,OAAO,IAAI;QACtB;QACA,IAAII,AAAiB,MAAjBA,MAAM,MAAM,EACZ,MAAM,IAAIG,YAAY;YAClB,SAAS;YACT,MAAM;YACN,MAAM;gBACF,OAAO,IAAI,CAAC,KAAK;YACrB;QACJ;QAGJ,MAAMP,SAASR,sBAAsB,SAAS,CAACY;QAC/C,IAAI,CAACJ,OAAO,OAAO,EACf,MAAMQ,eAAeR,OAAO,KAAK;QAErC,OAAOA,OAAO,IAAI,CAAC,GAAG,CAACK,CAAAA,OACZI,iBAAiB;gBACpB,MAAMJ,KAAK,IAAI;gBACf,KAAKA,KAAK,GAAG;gBACb,SAASA,KAAK,OAAO;gBACrB,QAAQA,KAAK,MAAM;gBACnB,SAAS,IAAIK,OAAOL,KAAK,OAAO;gBAChC,UAAU;oBACN,MAAMA,KAAK,IAAI;oBACf,OAAOA,KAAK,KAAK;oBACjB,mBAAmBA,KAAK,iBAAiB;oBACzC,oBAAoBA,KAAK,kBAAkB;oBAC3C,qBAAqBA,KAAK,mBAAmB;oBAC7C,wBAAwBA,KAAK,sBAAsB;oBACnD,yBAAyBA,KAAK,uBAAuB;oBACrD,4BAA4BA,KAAK,0BAA0B;oBAC3D,6BAA6BA,KAAK,2BAA2B;gBACjE;YACJ;IAER;AACJ;AAEO,MAAMM,2BAA2B,CACpCf,SAEO,IAAID,mBAAmBC"}
|
|
@@ -1,32 +1,30 @@
|
|
|
1
1
|
import { InvokeCommand } from "@webiny/aws-sdk/client-lambda/index.js";
|
|
2
2
|
import { convertException } from "@webiny/utils/exception.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
console.log(convertException(ex));
|
|
27
|
-
throw ex;
|
|
3
|
+
class LambdaTrigger {
|
|
4
|
+
constructor(params){
|
|
5
|
+
this.createLambdaClient = params.createLambdaClient;
|
|
6
|
+
this.arn = params.arn;
|
|
7
|
+
}
|
|
8
|
+
async handle(params) {
|
|
9
|
+
const lambdaClient = this.createLambdaClient({
|
|
10
|
+
region: process.env.AWS_REGION
|
|
11
|
+
});
|
|
12
|
+
const { payload, invocationType } = params;
|
|
13
|
+
const input = {
|
|
14
|
+
FunctionName: this.arn,
|
|
15
|
+
InvocationType: invocationType,
|
|
16
|
+
Payload: Buffer.from(JSON.stringify(payload))
|
|
17
|
+
};
|
|
18
|
+
const cmd = new InvokeCommand(input);
|
|
19
|
+
try {
|
|
20
|
+
return await lambdaClient.send(cmd);
|
|
21
|
+
} catch (ex) {
|
|
22
|
+
console.error(`Error while invoking Lambda function: ${this.arn}.`);
|
|
23
|
+
console.log(convertException(ex));
|
|
24
|
+
throw ex;
|
|
25
|
+
}
|
|
28
26
|
}
|
|
29
|
-
}
|
|
30
27
|
}
|
|
28
|
+
export { LambdaTrigger };
|
|
31
29
|
|
|
32
30
|
//# sourceMappingURL=LambdaTrigger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"resolver/lambda/LambdaTrigger.js","sources":["../../../src/resolver/lambda/LambdaTrigger.ts"],"sourcesContent":["import type {\n InvocationType,\n InvokeCommandInput,\n InvokeCommandOutput,\n LambdaClient,\n LambdaClientConfig\n} from \"@webiny/aws-sdk/client-lambda/index.js\";\nimport { InvokeCommand } from \"@webiny/aws-sdk/client-lambda/index.js\";\nimport { convertException } from \"@webiny/utils/exception.js\";\n\nexport interface IInvokeLambdaTriggerParamsCreateLambdaClientCb {\n (config: LambdaClientConfig): Pick<LambdaClient, \"send\">;\n}\n\nexport interface IInvokeLambdaTriggerParams {\n createLambdaClient: IInvokeLambdaTriggerParamsCreateLambdaClientCb;\n arn: string;\n}\n\nexport interface IInvokeLambdaHandleParams<TPayload> {\n payload: TPayload;\n invocationType: InvocationType;\n}\n\nexport class LambdaTrigger<TPayload> {\n private readonly createLambdaClient: IInvokeLambdaTriggerParamsCreateLambdaClientCb;\n private readonly arn: string;\n\n public constructor(params: IInvokeLambdaTriggerParams) {\n this.createLambdaClient = params.createLambdaClient;\n this.arn = params.arn;\n }\n\n public async handle(params: IInvokeLambdaHandleParams<TPayload>): Promise<InvokeCommandOutput> {\n const lambdaClient = this.createLambdaClient({\n region: process.env.AWS_REGION\n });\n const { payload, invocationType } = params;\n\n const input: InvokeCommandInput = {\n FunctionName: this.arn,\n InvocationType: invocationType,\n Payload: Buffer.from(JSON.stringify(payload))\n };\n\n const cmd = new InvokeCommand(input);\n try {\n return await lambdaClient.send(cmd);\n } catch (ex) {\n console.error(`Error while invoking Lambda function: ${this.arn}.`);\n console.log(convertException(ex));\n throw ex;\n }\n }\n}\n"],"names":["LambdaTrigger","params","lambdaClient","process","payload","invocationType","input","Buffer","JSON","cmd","InvokeCommand","ex","console","convertException"],"mappings":";;AAwBO,MAAMA;IAIT,YAAmBC,MAAkC,CAAE;QACnD,IAAI,CAAC,kBAAkB,GAAGA,OAAO,kBAAkB;QACnD,IAAI,CAAC,GAAG,GAAGA,OAAO,GAAG;IACzB;IAEA,MAAa,OAAOA,MAA2C,EAAgC;QAC3F,MAAMC,eAAe,IAAI,CAAC,kBAAkB,CAAC;YACzC,QAAQC,QAAQ,GAAG,CAAC,UAAU;QAClC;QACA,MAAM,EAAEC,OAAO,EAAEC,cAAc,EAAE,GAAGJ;QAEpC,MAAMK,QAA4B;YAC9B,cAAc,IAAI,CAAC,GAAG;YACtB,gBAAgBD;YAChB,SAASE,OAAO,IAAI,CAACC,KAAK,SAAS,CAACJ;QACxC;QAEA,MAAMK,MAAM,IAAIC,cAAcJ;QAC9B,IAAI;YACA,OAAO,MAAMJ,aAAa,IAAI,CAACO;QACnC,EAAE,OAAOE,IAAI;YACTC,QAAQ,KAAK,CAAC,CAAC,sCAAsC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAClEA,QAAQ,GAAG,CAACC,iBAAiBF;YAC7B,MAAMA;QACV;IACJ;AACJ"}
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import { Plugin } from "@webiny/plugins";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
2
|
+
class CommandHandlerPlugin extends Plugin {
|
|
3
|
+
static{
|
|
4
|
+
this.type = "syncSystem.commandHandlerPlugin";
|
|
5
|
+
}
|
|
6
|
+
constructor(params){
|
|
7
|
+
super();
|
|
8
|
+
this.config = params;
|
|
9
|
+
}
|
|
10
|
+
canHandle(command) {
|
|
11
|
+
return this.config.canHandle(command);
|
|
12
|
+
}
|
|
13
|
+
async handle(params) {
|
|
14
|
+
return await this.config.handle(params);
|
|
15
|
+
}
|
|
14
16
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
};
|
|
17
|
+
const createCommandHandlerPlugin = (params)=>new CommandHandlerPlugin(params);
|
|
18
|
+
export { CommandHandlerPlugin, createCommandHandlerPlugin };
|
|
18
19
|
|
|
19
20
|
//# sourceMappingURL=CommandHandlerPlugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"resolver/plugins/CommandHandlerPlugin.js","sources":["../../../src/resolver/plugins/CommandHandlerPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport type { CommandType } from \"~/types.js\";\nimport type { IStoreItem, IStorer } from \"~/resolver/app/storer/types.js\";\nimport type { IDeployment } from \"~/resolver/deployment/types.js\";\nimport type { ITable } from \"~/sync/types.js\";\nimport type { IBundle } from \"~/resolver/app/bundler/types.js\";\n\nexport interface ICommandHandlerPluginCallable {\n (params: ICommandHandlerPluginHandleParams): Promise<void>;\n}\n\nexport interface ICommandHandlerPluginCanHandleCallable {\n (command: CommandType): boolean;\n}\n\nexport interface ICommandHandlerPluginHandleParams {\n storer: IStorer;\n items: IStoreItem[];\n bundle: IBundle;\n targetDeployment: IDeployment;\n targetTable: ITable;\n}\n\nexport interface ICommandHandlerPluginParams {\n handle: ICommandHandlerPluginCallable;\n canHandle: ICommandHandlerPluginCanHandleCallable;\n}\n\nexport class CommandHandlerPlugin extends Plugin {\n public static override type: string = \"syncSystem.commandHandlerPlugin\";\n\n private readonly config: ICommandHandlerPluginParams;\n\n public constructor(params: ICommandHandlerPluginParams) {\n super();\n this.config = params;\n }\n\n public canHandle(command: CommandType): boolean {\n return this.config.canHandle(command);\n }\n\n public async handle(params: ICommandHandlerPluginHandleParams): Promise<void> {\n return await this.config.handle(params);\n }\n}\n\nexport const createCommandHandlerPlugin = (\n params: ICommandHandlerPluginParams\n): CommandHandlerPlugin => {\n return new CommandHandlerPlugin(params);\n};\n"],"names":["CommandHandlerPlugin","Plugin","params","command","createCommandHandlerPlugin"],"mappings":";AA4BO,MAAMA,6BAA6BC;;aACf,IAAI,GAAW;;IAItC,YAAmBC,MAAmC,CAAE;QACpD,KAAK;QACL,IAAI,CAAC,MAAM,GAAGA;IAClB;IAEO,UAAUC,OAAoB,EAAW;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAACA;IACjC;IAEA,MAAa,OAAOD,MAAyC,EAAiB;QAC1E,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAACA;IACpC;AACJ;AAEO,MAAME,6BAA6B,CACtCF,SAEO,IAAIF,qBAAqBE"}
|
|
@@ -1,24 +1,25 @@
|
|
|
1
1
|
import { Plugin } from "@webiny/plugins/Plugin.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
2
|
+
class StorerAfterEachPlugin extends Plugin {
|
|
3
|
+
static{
|
|
4
|
+
this.type = "syncSystem.storerAfterEachPlugin";
|
|
5
|
+
}
|
|
6
|
+
constructor(config){
|
|
7
|
+
super();
|
|
8
|
+
this.config = config;
|
|
9
|
+
}
|
|
10
|
+
canHandle(params) {
|
|
11
|
+
return this.config.canHandle(params);
|
|
12
|
+
}
|
|
13
|
+
handle(params) {
|
|
14
|
+
return this.config.handle(params);
|
|
15
|
+
}
|
|
14
16
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
plugin.name = `${StorerAfterEachPlugin.type}.${name}`;
|
|
21
|
-
return plugin;
|
|
17
|
+
const createStorerAfterEachPlugin = (params)=>new StorerAfterEachPlugin(params);
|
|
18
|
+
const createStorerAfterEachPluginWithName = (name, params)=>{
|
|
19
|
+
const plugin = createStorerAfterEachPlugin(params);
|
|
20
|
+
plugin.name = `${StorerAfterEachPlugin.type}.${name}`;
|
|
21
|
+
return plugin;
|
|
22
22
|
};
|
|
23
|
+
export { StorerAfterEachPlugin, createStorerAfterEachPlugin, createStorerAfterEachPluginWithName };
|
|
23
24
|
|
|
24
25
|
//# sourceMappingURL=StorerAfterEachPlugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"resolver/plugins/StorerAfterEachPlugin.js","sources":["../../../src/resolver/plugins/StorerAfterEachPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins/Plugin.js\";\nimport type { CommandType } from \"~/types.js\";\nimport type { IStoreItem } from \"~/resolver/app/storer/types.js\";\nimport type { ITable } from \"~/sync/types.js\";\nimport type { IDeployment } from \"~/resolver/deployment/types.js\";\n\nexport interface IStorerAfterEachPluginCanHandleParams {\n command: CommandType;\n target: IDeployment;\n source: IDeployment;\n table: ITable;\n item: IStoreItem;\n}\n\nexport interface IStorerAfterEachPluginHandleParams {\n target: IDeployment;\n source: IDeployment;\n table: ITable;\n item: IStoreItem;\n}\n\nexport interface IStorerAfterEachPluginParams {\n canHandle: (params: IStorerAfterEachPluginCanHandleParams) => boolean;\n handle: (params: IStorerAfterEachPluginHandleParams) => Promise<void>;\n}\n\nexport class StorerAfterEachPlugin extends Plugin {\n public static override readonly type: string = \"syncSystem.storerAfterEachPlugin\";\n\n private readonly config: IStorerAfterEachPluginParams;\n\n public constructor(config: IStorerAfterEachPluginParams) {\n super();\n this.config = config;\n }\n\n public canHandle(params: IStorerAfterEachPluginCanHandleParams): boolean {\n return this.config.canHandle(params);\n }\n\n public handle(params: IStorerAfterEachPluginHandleParams): Promise<void> {\n return this.config.handle(params);\n }\n}\n\nexport const createStorerAfterEachPlugin = (params: IStorerAfterEachPluginParams) => {\n return new StorerAfterEachPlugin(params);\n};\n\nexport const createStorerAfterEachPluginWithName = (\n name: string,\n params: IStorerAfterEachPluginParams\n) => {\n const plugin = createStorerAfterEachPlugin(params);\n plugin.name = `${StorerAfterEachPlugin.type}.${name}`;\n return plugin;\n};\n"],"names":["StorerAfterEachPlugin","Plugin","config","params","createStorerAfterEachPlugin","createStorerAfterEachPluginWithName","name","plugin"],"mappings":";AA0BO,MAAMA,8BAA8BC;;aACP,IAAI,GAAW;;IAI/C,YAAmBC,MAAoC,CAAE;QACrD,KAAK;QACL,IAAI,CAAC,MAAM,GAAGA;IAClB;IAEO,UAAUC,MAA6C,EAAW;QACrE,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAACA;IACjC;IAEO,OAAOA,MAA0C,EAAiB;QACrE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAACA;IAC9B;AACJ;AAEO,MAAMC,8BAA8B,CAACD,SACjC,IAAIH,sBAAsBG;AAG9B,MAAME,sCAAsC,CAC/CC,MACAH;IAEA,MAAMI,SAASH,4BAA4BD;IAC3CI,OAAO,IAAI,GAAG,GAAGP,sBAAsB,IAAI,CAAC,CAAC,EAAEM,MAAM;IACrD,OAAOC;AACX"}
|
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import { Plugin } from "@webiny/plugins";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
2
|
+
class TransformRecordPlugin extends Plugin {
|
|
3
|
+
static{
|
|
4
|
+
this.type = "syncSystem.transformRecordPlugin";
|
|
5
|
+
}
|
|
6
|
+
constructor(config){
|
|
7
|
+
super();
|
|
8
|
+
this.config = config;
|
|
9
|
+
}
|
|
10
|
+
isForTableType(tableType) {
|
|
11
|
+
return this.config.tableType === tableType;
|
|
12
|
+
}
|
|
13
|
+
canTransform(params) {
|
|
14
|
+
return this.config.canTransform(params);
|
|
15
|
+
}
|
|
16
|
+
transform(params, next) {
|
|
17
|
+
return this.config.transform(params, next);
|
|
18
|
+
}
|
|
17
19
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
};
|
|
20
|
+
const createTransformRecordPlugin = (config)=>new TransformRecordPlugin(config);
|
|
21
|
+
export { TransformRecordPlugin, createTransformRecordPlugin };
|
|
21
22
|
|
|
22
23
|
//# sourceMappingURL=TransformRecordPlugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"resolver/plugins/TransformRecordPlugin.js","sources":["../../../src/resolver/plugins/TransformRecordPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport type { ITable } from \"~/sync/types.js\";\nimport type { IDeployment } from \"~/resolver/deployment/types.js\";\nimport type { IStoreItem } from \"~/resolver/app/storer/types.js\";\nimport type { DynamoDBTableType } from \"~/types.js\";\nimport type { PluginsContainer } from \"@webiny/plugins/PluginsContainer.js\";\n\nexport interface ITransformRecordPluginConfigTransformCallableParams {\n readonly plugins: PluginsContainer;\n readonly record: IStoreItem;\n sourceDeployment: IDeployment;\n targetDeployment: IDeployment;\n sourceTable: ITable;\n targetTable: ITable;\n}\n\nexport interface ITransformRecordPluginConfigCanTransformCallableParams {\n from: Omit<IDeployment, \"getTable\">;\n to: Omit<IDeployment, \"getTable\">;\n}\n\nexport interface ITransformRecordPluginConfigCanTransformCallable {\n (params: ITransformRecordPluginConfigCanTransformCallableParams): boolean;\n}\n\nexport interface ITransformRecordPluginConfigTransformCallable {\n (\n params: ITransformRecordPluginConfigTransformCallableParams,\n next: () => Promise<Readonly<IStoreItem>>\n ): Promise<Readonly<IStoreItem>>;\n}\n\nexport interface ITransformRecordPluginConfig {\n tableType: DynamoDBTableType.REGULAR | DynamoDBTableType.OPENSEARCH;\n canTransform: ITransformRecordPluginConfigCanTransformCallable;\n transform: ITransformRecordPluginConfigTransformCallable;\n}\n\nexport class TransformRecordPlugin extends Plugin {\n public static override type: string = \"syncSystem.transformRecordPlugin\";\n\n private readonly config: ITransformRecordPluginConfig;\n\n public constructor(config: ITransformRecordPluginConfig) {\n super();\n this.config = config;\n }\n\n public isForTableType(tableType: DynamoDBTableType): boolean {\n return this.config.tableType === tableType;\n }\n\n public canTransform(params: ITransformRecordPluginConfigCanTransformCallableParams): boolean {\n return this.config.canTransform(params);\n }\n\n public transform(\n params: ITransformRecordPluginConfigTransformCallableParams,\n next: () => Promise<Readonly<IStoreItem>>\n ): Promise<Readonly<IStoreItem>> {\n return this.config.transform(params, next);\n }\n}\n\nexport const createTransformRecordPlugin = (config: ITransformRecordPluginConfig) => {\n return new TransformRecordPlugin(config);\n};\n"],"names":["TransformRecordPlugin","Plugin","config","tableType","params","next","createTransformRecordPlugin"],"mappings":";AAsCO,MAAMA,8BAA8BC;;aAChB,IAAI,GAAW;;IAItC,YAAmBC,MAAoC,CAAE;QACrD,KAAK;QACL,IAAI,CAAC,MAAM,GAAGA;IAClB;IAEO,eAAeC,SAA4B,EAAW;QACzD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,KAAKA;IACrC;IAEO,aAAaC,MAA8D,EAAW;QACzF,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAACA;IACpC;IAEO,UACHA,MAA2D,EAC3DC,IAAyC,EACZ;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAACD,QAAQC;IACzC;AACJ;AAEO,MAAMC,8BAA8B,CAACJ,SACjC,IAAIF,sBAAsBE"}
|
|
@@ -1,74 +1,51 @@
|
|
|
1
1
|
import { HeadObjectCommand } from "@webiny/aws-sdk/client-s3/index.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
async handle(params) {
|
|
8
|
-
const {
|
|
9
|
-
key,
|
|
10
|
-
source,
|
|
11
|
-
target
|
|
12
|
-
} = params;
|
|
13
|
-
/**
|
|
14
|
-
* We need to check on the target if the file already exists.
|
|
15
|
-
*/
|
|
16
|
-
const targetClient = this.createS3Client({
|
|
17
|
-
region: target.region
|
|
18
|
-
});
|
|
19
|
-
const exists = await this.exists({
|
|
20
|
-
client: targetClient,
|
|
21
|
-
bucket: target.services.s3Id,
|
|
22
|
-
key
|
|
23
|
-
});
|
|
24
|
-
if (exists) {
|
|
25
|
-
// If the file already exists, we can skip copying it.
|
|
26
|
-
return null;
|
|
2
|
+
class CopyFile {
|
|
3
|
+
constructor(params){
|
|
4
|
+
this.createS3Client = params.createS3Client;
|
|
5
|
+
this.getLambdaTrigger = params.getLambdaTrigger;
|
|
27
6
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
7
|
+
async handle(params) {
|
|
8
|
+
const { key, source, target } = params;
|
|
9
|
+
const targetClient = this.createS3Client({
|
|
10
|
+
region: target.region
|
|
11
|
+
});
|
|
12
|
+
const exists = await this.exists({
|
|
13
|
+
client: targetClient,
|
|
14
|
+
bucket: target.services.s3Id,
|
|
15
|
+
key
|
|
16
|
+
});
|
|
17
|
+
if (exists) return null;
|
|
18
|
+
return await this.getLambdaTrigger().handle({
|
|
19
|
+
invocationType: "Event",
|
|
20
|
+
payload: {
|
|
21
|
+
action: "copyFile",
|
|
22
|
+
key,
|
|
23
|
+
source: {
|
|
24
|
+
region: source.region,
|
|
25
|
+
bucket: source.services.s3Id
|
|
26
|
+
},
|
|
27
|
+
target: {
|
|
28
|
+
region: target.region,
|
|
29
|
+
bucket: target.services.s3Id
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
async exists(params) {
|
|
35
|
+
const { client, bucket, key } = params;
|
|
36
|
+
const input = {
|
|
37
|
+
Bucket: bucket,
|
|
38
|
+
Key: key
|
|
39
|
+
};
|
|
40
|
+
const cmd = new HeadObjectCommand(input);
|
|
41
|
+
try {
|
|
42
|
+
const result = await client.send(cmd);
|
|
43
|
+
return result.$metadata?.httpStatusCode === 200 && !!result.ETag;
|
|
44
|
+
} catch {
|
|
45
|
+
return false;
|
|
45
46
|
}
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
async exists(params) {
|
|
50
|
-
const {
|
|
51
|
-
client,
|
|
52
|
-
bucket,
|
|
53
|
-
key
|
|
54
|
-
} = params;
|
|
55
|
-
const input = {
|
|
56
|
-
Bucket: bucket,
|
|
57
|
-
Key: key
|
|
58
|
-
};
|
|
59
|
-
const cmd = new HeadObjectCommand(input);
|
|
60
|
-
try {
|
|
61
|
-
const result = await client.send(cmd);
|
|
62
|
-
return result.$metadata?.httpStatusCode === 200 && !!result.ETag;
|
|
63
|
-
} catch {
|
|
64
|
-
/**
|
|
65
|
-
* TODO What happens if this fails? To we continue with the copy or end the process?
|
|
66
|
-
* Do we log the error?
|
|
67
|
-
* For now, we will assume that file does not exist.
|
|
68
|
-
*/
|
|
69
|
-
return false;
|
|
70
47
|
}
|
|
71
|
-
}
|
|
72
48
|
}
|
|
49
|
+
export { CopyFile };
|
|
73
50
|
|
|
74
51
|
//# sourceMappingURL=CopyFile.js.map
|