@webiny/api-sync-system 0.0.0-unstable.a4f3e4ea8b → 0.0.0-unstable.a85ef555b2
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/index.d.ts +11 -3
- package/index.js +8 -3
- package/package.json +17 -15
- 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/sync/ApiGatewaySyncDecorator.d.ts +14 -0
- package/sync/ApiGatewaySyncDecorator.js +49 -0
- package/sync/ApiGatewaySyncDecorator.js.map +1 -0
- package/sync/SyncSystemConfig.d.ts +11 -0
- package/sync/SyncSystemConfig.js +5 -0
- package/sync/SyncSystemConfig.js.map +1 -0
- package/sync/filter/createDefaultFilterOutRecordPlugins.js +0 -1
- package/sync/filter/createDefaultFilterOutRecordPlugins.js.map +1 -1
- package/types.d.ts +0 -2
- package/types.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/resolver/createEventHandlerPlugin.d.ts +0 -11
- package/resolver/createEventHandlerPlugin.js +0 -91
- package/resolver/createEventHandlerPlugin.js.map +0 -1
- package/resolver/createResolverHandler.d.ts +0 -21
- package/resolver/createResolverHandler.js +0 -64
- package/resolver/createResolverHandler.js.map +0 -1
- package/sync/createSendDataToEventBridgeOnRequestEnd.d.ts +0 -2
- package/sync/createSendDataToEventBridgeOnRequestEnd.js +0 -39
- package/sync/createSendDataToEventBridgeOnRequestEnd.js.map +0 -1
- package/sync/createSyncSystem.d.ts +0 -16
- package/sync/createSyncSystem.js +0 -33
- package/sync/createSyncSystem.js.map +0 -1
- package/sync/requestPlugin.d.ts +0 -9
- package/sync/requestPlugin.js +0 -43
- package/sync/requestPlugin.js.map +0 -1
- package/worker/createWorkerHandler.d.ts +0 -11
- package/worker/createWorkerHandler.js +0 -35
- package/worker/createWorkerHandler.js.map +0 -1
- package/worker/handler/eventHandler.d.ts +0 -1
- package/worker/handler/eventHandler.js +0 -22
- package/worker/handler/eventHandler.js.map +0 -1
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,3 +1,8 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
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,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-sync-system",
|
|
3
|
-
"version": "0.0.0-unstable.
|
|
3
|
+
"version": "0.0.0-unstable.a85ef555b2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./index.js",
|
|
@@ -14,30 +14,32 @@
|
|
|
14
14
|
"author": "Webiny LTD",
|
|
15
15
|
"license": "MIT",
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@webiny/api": "0.0.0-unstable.
|
|
18
|
-
"@webiny/api-core": "0.0.0-unstable.
|
|
19
|
-
"@webiny/aws-sdk": "0.0.0-unstable.
|
|
20
|
-
"@webiny/error": "0.0.0-unstable.
|
|
21
|
-
"@webiny/handler": "0.0.0-unstable.
|
|
22
|
-
"@webiny/handler-
|
|
23
|
-
"@webiny/
|
|
24
|
-
"@webiny/
|
|
17
|
+
"@webiny/api": "0.0.0-unstable.a85ef555b2",
|
|
18
|
+
"@webiny/api-core": "0.0.0-unstable.a85ef555b2",
|
|
19
|
+
"@webiny/aws-sdk": "0.0.0-unstable.a85ef555b2",
|
|
20
|
+
"@webiny/error": "0.0.0-unstable.a85ef555b2",
|
|
21
|
+
"@webiny/event-handler-aws": "0.0.0-unstable.a85ef555b2",
|
|
22
|
+
"@webiny/event-handler-core": "0.0.0-unstable.a85ef555b2",
|
|
23
|
+
"@webiny/feature": "0.0.0-unstable.a85ef555b2",
|
|
24
|
+
"@webiny/handler": "0.0.0-unstable.a85ef555b2",
|
|
25
|
+
"@webiny/plugins": "0.0.0-unstable.a85ef555b2",
|
|
26
|
+
"@webiny/utils": "0.0.0-unstable.a85ef555b2",
|
|
25
27
|
"bytes": "3.1.2",
|
|
26
28
|
"lodash": "4.18.1",
|
|
27
29
|
"semver": "7.8.5",
|
|
28
30
|
"zod": "4.4.3"
|
|
29
31
|
},
|
|
30
32
|
"devDependencies": {
|
|
31
|
-
"@faker-js/faker": "10.
|
|
32
|
-
"@types/lodash": "4.17.
|
|
33
|
-
"@webiny/api-core-ddb": "0.0.0-unstable.
|
|
34
|
-
"@webiny/build-tools": "0.0.0-unstable.
|
|
35
|
-
"@webiny/
|
|
33
|
+
"@faker-js/faker": "10.6.0",
|
|
34
|
+
"@types/lodash": "4.17.25",
|
|
35
|
+
"@webiny/api-core-ddb": "0.0.0-unstable.a85ef555b2",
|
|
36
|
+
"@webiny/build-tools": "0.0.0-unstable.a85ef555b2",
|
|
37
|
+
"@webiny/db-dynamodb": "0.0.0-unstable.a85ef555b2",
|
|
36
38
|
"aws-sdk-client-mock": "4.1.0",
|
|
37
39
|
"jest-dynalite": "3.6.1",
|
|
38
40
|
"rimraf": "6.1.3",
|
|
39
41
|
"typescript": "7.0.2",
|
|
40
|
-
"vitest": "4.1.
|
|
42
|
+
"vitest": "4.1.11"
|
|
41
43
|
},
|
|
42
44
|
"publishConfig": {
|
|
43
45
|
"access": "public"
|
|
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;AAqCA,eAAeA,qBACXC,OAA4B,EAC5BC,MAA2B,EAC3BC,OAAyB;IAEzB,MAAMC,YAAYF,OAAO,SAAS,IAAIG,QAAQ,GAAG,CAAC,QAAQ;IAC1D,IAAI,CAACD,WACD,MAAM,IAAIE,YAAY;QAAE,SAAS;IAAkC;IAGvE,MAAMC,UAAUC,cAAc;QAC1B,YAAY;QACZ,YAAY;QACZ,sBAAsBC,CAAAA,aAClBP,OAAO,oBAAoB,CAAC;gBAAE,QAAQO,WAAW,MAAM;YAAC;IAChE;IAEA,MAAMC,qBAAqBC,yBAAyB;QAChD,QAAQT,OAAO,oBAAoB,CAAC;YAAE,QAAQG,QAAQ,GAAG,CAAC,UAAU;QAAC;QACrE,OAAOD;IACX;IAEA,MAAMQ,cAAc,MAAMF,mBAAmB,KAAK;IAElD,MAAMG,yBAAyBV,QAAQ,MAAM,CACzCW,sBAAsB,IAAI;IAG9B,MAAMC,SAASC,aAAa;QACxB,sBAAsBP,CAAAA,aAClBP,OAAO,oBAAoB,CAAC;gBAAE,QAAQO,WAAW,MAAM;YAAC;QAC5D,WAAW,OAAMQ;YACb,KAAK,MAAMC,UAAUL,uBACjB,IAAKK,OAAO,SAAS,CAACD,SAGtB,MAAMC,OAAO,MAAM,CAACD;QAE5B;IACJ;IAEA,MAAME,mBAAmB,IAAIC,iBAAiB;QAAEjB;IAAQ;IACxD,MAAMkB,gBAAgBC,oBAAoB;QACtCnB;QACAI;QACAQ;QACAH;QACAO;QACA,gBAAgBI,cAAc;YAC1B,eAAe,IAAMC,cAAc;oBAAE,cAAcC;gBAAoB;QAC3E;QACA,cAAcF,cAAc;YACxB,eAAe,IAAMC,cAAc;oBAAE,cAAcE;gBAAkB;QACzE;QACA,2BAA2B,IAAMC,oBAAoB,MAAM;IAC/D;IAEA,MAAMC,MAAMC,kBAAkB;QAAER;QAAeT;IAAY;IAC3D,MAAMgB,IAAI,OAAO,CAAC;QAAE3B;IAAQ;AAChC;AAEA,MAAM6B;IACF,YAAoB5B,MAA2B,CAAE;aAA7BA,MAAM,GAANA;IAA8B;IAElD,MAAM,QAAQ6B,QAAgC,EAAEC,KAAmB,EAAsB;QACrF,MAAM,EAAEC,kBAAkB,EAAEC,cAAc,EAAEC,mCAAmC,EAAE,GAC7E,IAAI,CAAC,MAAM;QAEf,MAAMC,qBACF,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI/B,QAAQ,GAAG,CAAC,0BAA0B;QAE5E,MAAMgC,kBACFJ,sBAAsBG,qBAChB,IAAIE,cAAsC;YACtC,KAAKF;YACLH;QACJ,KACAM;QAEV,MAAMC,oBACFP,sBAAsBG,qBAChB,IAAIE,cAAwC;YACxC,KAAKF;YACLH;QACJ,KACAM;QAEV,MAAME,kBACFR,sBAAsBG,qBAChB,IAAIE,cAAsC;YACtC,KAAKF;YACLH;QACJ,KACAM;QAEV,MAAMG,oBACFT,sBAAsBG,qBAChB,IAAIE,cAAwC;YACxC,KAAKF;YACLH;QACJ,KACAM;QAEV,MAAMI,WACFT,kBAAkBG,kBACZ,IAAIO,SAAS;YACTV;YACA,kBAAkB,IAAMG;QAC5B,KACAE;QAEV,MAAMM,aACFX,kBAAkBM,oBACZ,IAAIM,WAAW;YACXZ;YACA,kBAAkB,IAAMM;QAC5B,KACAD;QAEV,MAAMQ,WACFZ,uCAAuCM,kBACjC,IAAIO,SAAS;YACTb;YACA,kBAAkB,IAAMM;QAC5B,KACAF;QAEV,MAAMU,aACFd,uCAAuCO,oBACjC,IAAIQ,WAAW;YACXf;YACA,kBAAkB,IAAMO;QAC5B,KACAH;QAEV,MAAMpC,UAAU,IAAIgD,iBAAiB;eAC7BR,YAAYE,aAAaO,yBAAyB;gBAAET;gBAAUE;YAAW,KAAK,EAAE;eAChFE,YAAYE,aAAaI,mBAAmB;gBAAEN;gBAAUE;YAAW,KAAK,EAAE;YAC9EK;YACAC;eACI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE;SAChC;QAED,IAAI;YACA,MAAMvD,qBAAqB+B,SAAS,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE5B;YAChE,OAAO;gBAAE,SAAS;YAAK;QAC3B,EAAE,OAAOqD,IAAI;YACT,MAAMC,QAAQC,iBAAiBF;YAC/BG,QAAQ,KAAK,CAACF;YACd,OAAO;gBAAE,SAAS;gBAAO,SAASA,MAAM,OAAO;YAAC;QACpD;IACJ;AACJ;AAEO,MAAMG,4BAA4BC,gBAAgB,oBAAoB,CAAC;IAC1E,gBAAgB/B;IAChB,cAAc;QAACgC;KAAmB;AACtC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { APIGatewayProxyEvent } from "@webiny/aws-sdk/types/index.js";
|
|
2
|
+
import { ApiGatewayEventHandler } from "@webiny/event-handler-aws/abstractions/handlers/ApiGatewayEventHandler.js";
|
|
3
|
+
import type { EventContext, NextFunction } from "@webiny/event-handler-core";
|
|
4
|
+
import type { ISyncSystemConfig } from "./SyncSystemConfig.js";
|
|
5
|
+
declare class ApiGatewaySyncDecoratorImpl implements ApiGatewayEventHandler.Interface {
|
|
6
|
+
private config;
|
|
7
|
+
private inner;
|
|
8
|
+
constructor(config: ISyncSystemConfig, inner: ApiGatewayEventHandler.Interface);
|
|
9
|
+
execute(ctx: EventContext<APIGatewayProxyEvent>, next: NextFunction): Promise<any>;
|
|
10
|
+
}
|
|
11
|
+
export declare const ApiGatewaySyncDecorator: typeof ApiGatewaySyncDecoratorImpl & {
|
|
12
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/event-handler-aws/abstractions/handlers/ApiGatewayEventHandler.js").IApiGatewayEventHandler>;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ApiGatewayEventHandler } from "@webiny/event-handler-aws/abstractions/handlers/ApiGatewayEventHandler.js";
|
|
2
|
+
import { PluginsContainer } from "@webiny/plugins";
|
|
3
|
+
import { SyncSystemConfig } from "./SyncSystemConfig.js";
|
|
4
|
+
import { createHandler } from "./createHandler.js";
|
|
5
|
+
import { getManifest } from "./utils/manifest.js";
|
|
6
|
+
import { decorateClientWithHandler } from "./attachToDynamoDbDocument.js";
|
|
7
|
+
import { createDefaultFilterOutRecordPlugins } from "./filter/createDefaultFilterOutRecordPlugins.js";
|
|
8
|
+
class ApiGatewaySyncDecoratorImpl {
|
|
9
|
+
constructor(config, inner){
|
|
10
|
+
this.config = config;
|
|
11
|
+
this.inner = inner;
|
|
12
|
+
}
|
|
13
|
+
async execute(ctx, next) {
|
|
14
|
+
const { data: manifest, error } = await getManifest();
|
|
15
|
+
if (error || !manifest?.sync?.region) {
|
|
16
|
+
if ("true" === process.env.DEBUG) console.warn("[ApiGatewaySyncDecorator] Manifest not available — sync disabled.");
|
|
17
|
+
return this.inner.execute(ctx, next);
|
|
18
|
+
}
|
|
19
|
+
const filterPlugins = [
|
|
20
|
+
...createDefaultFilterOutRecordPlugins(),
|
|
21
|
+
...this.config.plugins || []
|
|
22
|
+
];
|
|
23
|
+
const { handler } = createHandler({
|
|
24
|
+
getEventBridgeClient: this.config.getEventBridgeClient,
|
|
25
|
+
system: this.config.system,
|
|
26
|
+
manifest,
|
|
27
|
+
getPlugins: ()=>new PluginsContainer(filterPlugins)
|
|
28
|
+
});
|
|
29
|
+
const documentClient = this.config.getDocumentClient();
|
|
30
|
+
decorateClientWithHandler({
|
|
31
|
+
handler,
|
|
32
|
+
client: documentClient
|
|
33
|
+
});
|
|
34
|
+
try {
|
|
35
|
+
return await this.inner.execute(ctx, next);
|
|
36
|
+
} finally{
|
|
37
|
+
await handler.flush();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const ApiGatewaySyncDecorator = ApiGatewayEventHandler.createDecorator({
|
|
42
|
+
decorator: ApiGatewaySyncDecoratorImpl,
|
|
43
|
+
dependencies: [
|
|
44
|
+
SyncSystemConfig
|
|
45
|
+
]
|
|
46
|
+
});
|
|
47
|
+
export { ApiGatewaySyncDecorator };
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=ApiGatewaySyncDecorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync/ApiGatewaySyncDecorator.js","sources":["../../src/sync/ApiGatewaySyncDecorator.ts"],"sourcesContent":["import type { APIGatewayProxyEvent } from \"@webiny/aws-sdk/types/index.js\";\nimport { ApiGatewayEventHandler } from \"@webiny/event-handler-aws/abstractions/handlers/ApiGatewayEventHandler.js\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport type { EventContext, NextFunction } from \"@webiny/event-handler-core\";\nimport { SyncSystemConfig } from \"./SyncSystemConfig.js\";\nimport type { ISyncSystemConfig } from \"./SyncSystemConfig.js\";\nimport { createHandler } from \"~/sync/createHandler.js\";\nimport { getManifest } from \"~/sync/utils/manifest.js\";\nimport { decorateClientWithHandler } from \"~/sync/attachToDynamoDbDocument.js\";\nimport { createDefaultFilterOutRecordPlugins } from \"~/sync/filter/createDefaultFilterOutRecordPlugins.js\";\n\nclass ApiGatewaySyncDecoratorImpl implements ApiGatewayEventHandler.Interface {\n constructor(\n private config: ISyncSystemConfig,\n private inner: ApiGatewayEventHandler.Interface\n ) {}\n\n async execute(ctx: EventContext<APIGatewayProxyEvent>, next: NextFunction): Promise<any> {\n const { data: manifest, error } = await getManifest();\n if (error || !manifest?.sync?.region) {\n if (process.env.DEBUG === \"true\") {\n console.warn(\"[ApiGatewaySyncDecorator] Manifest not available — sync disabled.\");\n }\n return this.inner.execute(ctx, next);\n }\n\n const filterPlugins = [\n ...createDefaultFilterOutRecordPlugins(),\n ...(this.config.plugins || [])\n ];\n\n const { handler } = createHandler({\n getEventBridgeClient: this.config.getEventBridgeClient,\n system: this.config.system,\n manifest,\n getPlugins: () => new PluginsContainer(filterPlugins)\n });\n\n const documentClient = this.config.getDocumentClient();\n decorateClientWithHandler({ handler, client: documentClient as any });\n\n try {\n return await this.inner.execute(ctx, next);\n } finally {\n await handler.flush();\n }\n }\n}\n\nexport const ApiGatewaySyncDecorator = ApiGatewayEventHandler.createDecorator({\n decorator: ApiGatewaySyncDecoratorImpl,\n dependencies: [SyncSystemConfig]\n});\n"],"names":["ApiGatewaySyncDecoratorImpl","config","inner","ctx","next","manifest","error","getManifest","process","console","filterPlugins","createDefaultFilterOutRecordPlugins","handler","createHandler","PluginsContainer","documentClient","decorateClientWithHandler","ApiGatewaySyncDecorator","ApiGatewayEventHandler","SyncSystemConfig"],"mappings":";;;;;;;AAWA,MAAMA;IACF,YACYC,MAAyB,EACzBC,KAAuC,CACjD;aAFUD,MAAM,GAANA;aACAC,KAAK,GAALA;IACT;IAEH,MAAM,QAAQC,GAAuC,EAAEC,IAAkB,EAAgB;QACrF,MAAM,EAAE,MAAMC,QAAQ,EAAEC,KAAK,EAAE,GAAG,MAAMC;QACxC,IAAID,SAAS,CAACD,UAAU,MAAM,QAAQ;YAClC,IAAIG,AAAsB,WAAtBA,QAAQ,GAAG,CAAC,KAAK,EACjBC,QAAQ,IAAI,CAAC;YAEjB,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAACN,KAAKC;QACnC;QAEA,MAAMM,gBAAgB;eACfC;eACC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE;SAChC;QAED,MAAM,EAAEC,OAAO,EAAE,GAAGC,cAAc;YAC9B,sBAAsB,IAAI,CAAC,MAAM,CAAC,oBAAoB;YACtD,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1BR;YACA,YAAY,IAAM,IAAIS,iBAAiBJ;QAC3C;QAEA,MAAMK,iBAAiB,IAAI,CAAC,MAAM,CAAC,iBAAiB;QACpDC,0BAA0B;YAAEJ;YAAS,QAAQG;QAAsB;QAEnE,IAAI;YACA,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAACZ,KAAKC;QACzC,SAAU;YACN,MAAMQ,QAAQ,KAAK;QACvB;IACJ;AACJ;AAEO,MAAMK,0BAA0BC,uBAAuB,eAAe,CAAC;IAC1E,WAAWlB;IACX,cAAc;QAACmB;KAAiB;AACpC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { EventBridgeClient } from "@webiny/aws-sdk/client-eventbridge/index.js";
|
|
2
|
+
import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb/index.js";
|
|
3
|
+
import type { ISystem } from "./types.js";
|
|
4
|
+
import type { FilterOutRecordPlugin } from "./plugins/FilterOutRecordPlugin.js";
|
|
5
|
+
export interface ISyncSystemConfig {
|
|
6
|
+
getDocumentClient(): Pick<DynamoDBDocument, "send">;
|
|
7
|
+
getEventBridgeClient(): Pick<EventBridgeClient, "send">;
|
|
8
|
+
system: ISystem;
|
|
9
|
+
plugins?: FilterOutRecordPlugin[];
|
|
10
|
+
}
|
|
11
|
+
export declare const SyncSystemConfig: import("@webiny/di").Abstraction<ISyncSystemConfig>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync/SyncSystemConfig.js","sources":["../../src/sync/SyncSystemConfig.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { EventBridgeClient } from \"@webiny/aws-sdk/client-eventbridge/index.js\";\nimport type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport type { ISystem } from \"./types.js\";\nimport type { FilterOutRecordPlugin } from \"./plugins/FilterOutRecordPlugin.js\";\n\nexport interface ISyncSystemConfig {\n getDocumentClient(): Pick<DynamoDBDocument, \"send\">;\n getEventBridgeClient(): Pick<EventBridgeClient, \"send\">;\n system: ISystem;\n plugins?: FilterOutRecordPlugin[];\n}\n\nexport const SyncSystemConfig = createAbstraction<ISyncSystemConfig>(\"SyncSystemConfig\");\n"],"names":["SyncSystemConfig","createAbstraction"],"mappings":";AAaO,MAAMA,mBAAmBC,kBAAqC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync/filter/createDefaultFilterOutRecordPlugins.js","sources":["../../../src/sync/filter/createDefaultFilterOutRecordPlugins.ts"],"sourcesContent":["import {\n createFilterOutRecordPlugin,\n FilterOutRecordPlugin\n} from \"~/sync/plugins/FilterOutRecordPlugin.js\";\n\n/**\n * Order keys by what is most like to be filtered out - most inserts/updates/deletes.\n * This is out of my head, so it might not be the best order.\n */\nexport const equalKeys: string[] = [\n // Logging - every request\n \"LOG\",\n // P\n \"PS#SETTINGS\",\n // Websockets - on every user login\n \"WS#CONNECTIONS\",\n /**\n * packages/db-dynamodb/src/DynamoDbDriver.ts\n */\n //`W#INTERNAL`,\n
|
|
1
|
+
{"version":3,"file":"sync/filter/createDefaultFilterOutRecordPlugins.js","sources":["../../../src/sync/filter/createDefaultFilterOutRecordPlugins.ts"],"sourcesContent":["import {\n createFilterOutRecordPlugin,\n FilterOutRecordPlugin\n} from \"~/sync/plugins/FilterOutRecordPlugin.js\";\n\n/**\n * Order keys by what is most like to be filtered out - most inserts/updates/deletes.\n * This is out of my head, so it might not be the best order.\n */\nexport const equalKeys: string[] = [\n // Logging - every request\n \"LOG\",\n // P\n \"PS#SETTINGS\",\n // Websockets - on every user login\n \"WS#CONNECTIONS\",\n /**\n * packages/db-dynamodb/src/DynamoDbDriver.ts\n */\n //`W#INTERNAL`,\n // Deployments - on every deployment\n \"DEPLOYMENTS\",\n // Admin\n \"ADMIN#SETTINGS\"\n].map(key => {\n return key.toLowerCase();\n});\n\nexport const startsWithKeys: string[] = [\n // Websockets - on every user login\n \"WS#\",\n // Migrations - on every deployment\n \"MIGRATION_RUN#\",\n \"MIGRATION#\",\n // Service Manifest - on deployment if something was changed in the service manifest\n \"SERVICE_MANIFEST#\",\n // Deployments - on every deployment\n \"DEPLOYMENT#\"\n].map(key => {\n return key.toLowerCase();\n});\n/**\n * TODO figure out a way to skip these models.\n * When deleting a record, we do not have a modelId in the values.\n */\nexport const skipModels: string[] = [\n // RECORD LOCKING\n \"wbyRecordLock\",\n // TASKS\n \"wbyTaskLog\",\n \"wbyTask\"\n].map(key => {\n return key.toLowerCase();\n});\n\nexport const createDefaultFilterOutRecordPlugins = (): FilterOutRecordPlugin[] => {\n return [\n createFilterOutRecordPlugin({\n name: FilterOutRecordPlugin.createName(\"default\"),\n filterOut: record => {\n const pk = record.PK.toLowerCase();\n if (equalKeys.includes(pk)) {\n return true;\n }\n for (const key of startsWithKeys) {\n if (pk.startsWith(key)) {\n return true;\n }\n }\n /**\n * TODO figure out a way to skip models without using expect-error.\n */\n // @ts-expect-error\n const modelId = record.input?.input?.Item?.modelId?.toLowerCase();\n if (!modelId) {\n return false;\n } else if (skipModels.includes(modelId)) {\n return true;\n }\n return false;\n }\n })\n ];\n};\n"],"names":["equalKeys","key","startsWithKeys","skipModels","createDefaultFilterOutRecordPlugins","createFilterOutRecordPlugin","FilterOutRecordPlugin","record","pk","modelId"],"mappings":";AASO,MAAMA,YAAsB;IAE/B;IAEA;IAEA;IAMA;IAEA;CACH,CAAC,GAAG,CAACC,CAAAA,MACKA,IAAI,WAAW;AAGnB,MAAMC,iBAA2B;IAEpC;IAEA;IACA;IAEA;IAEA;CACH,CAAC,GAAG,CAACD,CAAAA,MACKA,IAAI,WAAW;AAMnB,MAAME,aAAuB;IAEhC;IAEA;IACA;CACH,CAAC,GAAG,CAACF,CAAAA,MACKA,IAAI,WAAW;AAGnB,MAAMG,sCAAsC,IACxC;QACHC,4BAA4B;YACxB,MAAMC,sBAAsB,UAAU,CAAC;YACvC,WAAWC,CAAAA;gBACP,MAAMC,KAAKD,OAAO,EAAE,CAAC,WAAW;gBAChC,IAAIP,UAAU,QAAQ,CAACQ,KACnB,OAAO;gBAEX,KAAK,MAAMP,OAAOC,eACd,IAAIM,GAAG,UAAU,CAACP,MACd,OAAO;gBAOf,MAAMQ,UAAUF,OAAO,KAAK,EAAE,OAAO,MAAM,SAAS;gBACpD,IAAKE,SAEE;oBAAA,IAAIN,WAAW,QAAQ,CAACM,UAC3B,OAAO;gBACX;gBACA,OAAO;YACX;QACJ;KACH"}
|
package/types.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { Context as BaseContext } from "@webiny/handler-aws/types.js";
|
|
2
1
|
export type CommandType = "put" | "delete";
|
|
3
2
|
export type ExtendedCommandType = "put" | "delete" | "update";
|
|
4
3
|
export type AllCommandType = ExtendedCommandType | "batchWrite" | "null";
|
|
@@ -7,7 +6,6 @@ export declare enum DynamoDBTableType {
|
|
|
7
6
|
OPENSEARCH = "opensearch",
|
|
8
7
|
UNKNOWN = "unknown"
|
|
9
8
|
}
|
|
10
|
-
export type Context = BaseContext;
|
|
11
9
|
export interface IFileLambdaPayloadInfo {
|
|
12
10
|
bucket: string;
|
|
13
11
|
region: string;
|
package/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["export type CommandType = \"put\" | \"delete\";\nexport type ExtendedCommandType = \"put\" | \"delete\" | \"update\";\nexport type AllCommandType = ExtendedCommandType | \"batchWrite\" | \"null\";\n\nexport enum DynamoDBTableType {\n REGULAR = \"regular\",\n OPENSEARCH = \"opensearch\",\n UNKNOWN = \"unknown\"\n}\n\nexport interface IFileLambdaPayloadInfo {\n bucket: string;\n region: string;\n}\n\nexport interface ICopyFileLambdaPayload {\n action: \"copyFile\";\n key: string;\n source: IFileLambdaPayloadInfo;\n target: IFileLambdaPayloadInfo;\n}\n\nexport interface IDeleteFileLambdaPayload {\n action: \"deleteFile\";\n key: string;\n target: IFileLambdaPayloadInfo;\n}\n\nexport interface IUserLambdaPayloadInfo {\n region: string;\n userPoolId: string;\n}\n\nexport interface IDeleteUserLambdaPayload {\n action: \"deleteUser\";\n username: string;\n target: IUserLambdaPayloadInfo;\n}\n\nexport interface ICopyUserLambdaPayload {\n action: \"createUser\" | \"updateUser\";\n username: string;\n source: IUserLambdaPayloadInfo;\n target: IUserLambdaPayloadInfo;\n}\n"],"names":["DynamoDBTableType"],"mappings":"AAIO,IAAKA,0BAAiBA,WAAAA,GAAAA,SAAjBA,iBAAiB;;;;WAAjBA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { S3Client, S3ClientConfig } from "@webiny/aws-sdk/client-s3/index.js";
|
|
2
|
+
import type { CognitoIdentityProvider, CognitoIdentityProviderClientConfig } from "@webiny/aws-sdk/client-cognito-identity-provider/index.js";
|
|
3
|
+
import type { Plugin } from "@webiny/plugins/types.js";
|
|
4
|
+
export interface ISyncWorkerConfig {
|
|
5
|
+
createS3Client(config: S3ClientConfig): Pick<S3Client, "send">;
|
|
6
|
+
createCognitoIdentityProviderClient(config: CognitoIdentityProviderClientConfig): Pick<CognitoIdentityProvider, "send">;
|
|
7
|
+
plugins?: Plugin[];
|
|
8
|
+
}
|
|
9
|
+
export declare const SyncWorkerConfig: import("@webiny/di").Abstraction<ISyncWorkerConfig>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker/SyncWorkerConfig.js","sources":["../../src/worker/SyncWorkerConfig.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\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 { Plugin } from \"@webiny/plugins/types.js\";\n\nexport interface ISyncWorkerConfig {\n createS3Client(config: S3ClientConfig): Pick<S3Client, \"send\">;\n createCognitoIdentityProviderClient(\n config: CognitoIdentityProviderClientConfig\n ): Pick<CognitoIdentityProvider, \"send\">;\n plugins?: Plugin[];\n}\n\nexport const SyncWorkerConfig = createAbstraction<ISyncWorkerConfig>(\"SyncWorkerConfig\");\n"],"names":["SyncWorkerConfig","createAbstraction"],"mappings":";AAgBO,MAAMA,mBAAmBC,kBAAqC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { IEventHandler } from "@webiny/event-handler-core";
|
|
2
|
+
export interface ISyncWorkerEvent {
|
|
3
|
+
action: string;
|
|
4
|
+
[key: string]: unknown;
|
|
5
|
+
}
|
|
6
|
+
export interface ISyncWorkerResult {
|
|
7
|
+
success: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface ISyncWorkerEventHandler extends IEventHandler<ISyncWorkerEvent, ISyncWorkerResult> {
|
|
10
|
+
}
|
|
11
|
+
export declare const SyncWorkerEventHandler: import("@webiny/di").Abstraction<ISyncWorkerEventHandler>;
|
|
12
|
+
export declare namespace SyncWorkerEventHandler {
|
|
13
|
+
type Interface = ISyncWorkerEventHandler;
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker/SyncWorkerEventHandler.js","sources":["../../src/worker/SyncWorkerEventHandler.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/event-handler-core\";\n\nexport interface ISyncWorkerEvent {\n action: string;\n [key: string]: unknown;\n}\n\nexport interface ISyncWorkerResult {\n success: boolean;\n}\n\nexport interface ISyncWorkerEventHandler extends IEventHandler<\n ISyncWorkerEvent,\n ISyncWorkerResult\n> {}\n\nexport const SyncWorkerEventHandler =\n createAbstraction<ISyncWorkerEventHandler>(\"SyncWorkerEventHandler\");\n\nexport namespace SyncWorkerEventHandler {\n export type Interface = ISyncWorkerEventHandler;\n}\n"],"names":["SyncWorkerEventHandler","createAbstraction"],"mappings":";AAiBO,MAAMA,yBACTC,kBAA2C"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IEventType } from "@webiny/event-handler-core";
|
|
2
|
+
import type { ISyncWorkerEvent } from "./SyncWorkerEventHandler.js";
|
|
3
|
+
declare class SyncWorkerEventTypeImpl implements IEventType<ISyncWorkerEvent> {
|
|
4
|
+
canHandle(event: any): event is ISyncWorkerEvent;
|
|
5
|
+
getHandlerAbstraction(): import("@webiny/di").Abstraction<import("./SyncWorkerEventHandler.js").ISyncWorkerEventHandler>;
|
|
6
|
+
}
|
|
7
|
+
export declare const SyncWorkerEventType: typeof SyncWorkerEventTypeImpl & {
|
|
8
|
+
__abstraction: import("@webiny/di").Abstraction<IEventType<any>>;
|
|
9
|
+
};
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { EventType } from "@webiny/event-handler-core";
|
|
2
|
+
import { SyncWorkerEventHandler } from "./SyncWorkerEventHandler.js";
|
|
3
|
+
const SYNC_WORKER_ACTIONS = [
|
|
4
|
+
"copyFile",
|
|
5
|
+
"deleteFile",
|
|
6
|
+
"createUser",
|
|
7
|
+
"updateUser",
|
|
8
|
+
"deleteUser"
|
|
9
|
+
];
|
|
10
|
+
class SyncWorkerEventTypeImpl {
|
|
11
|
+
canHandle(event) {
|
|
12
|
+
return "string" == typeof event?.action && SYNC_WORKER_ACTIONS.includes(event.action);
|
|
13
|
+
}
|
|
14
|
+
getHandlerAbstraction() {
|
|
15
|
+
return SyncWorkerEventHandler;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
const SyncWorkerEventType = EventType.createImplementation({
|
|
19
|
+
implementation: SyncWorkerEventTypeImpl,
|
|
20
|
+
dependencies: []
|
|
21
|
+
});
|
|
22
|
+
export { SyncWorkerEventType };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=SyncWorkerEventType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker/SyncWorkerEventType.js","sources":["../../src/worker/SyncWorkerEventType.ts"],"sourcesContent":["import { EventType } from \"@webiny/event-handler-core\";\nimport type { IEventType } from \"@webiny/event-handler-core\";\nimport { SyncWorkerEventHandler } from \"./SyncWorkerEventHandler.js\";\nimport type { ISyncWorkerEvent } from \"./SyncWorkerEventHandler.js\";\n\nconst SYNC_WORKER_ACTIONS = [\n \"copyFile\",\n \"deleteFile\",\n \"createUser\",\n \"updateUser\",\n \"deleteUser\"\n] as const;\n\nclass SyncWorkerEventTypeImpl implements IEventType<ISyncWorkerEvent> {\n canHandle(event: any): event is ISyncWorkerEvent {\n return (\n typeof event?.action === \"string\" &&\n SYNC_WORKER_ACTIONS.includes(event.action as (typeof SYNC_WORKER_ACTIONS)[number])\n );\n }\n\n getHandlerAbstraction() {\n return SyncWorkerEventHandler;\n }\n}\n\nexport const SyncWorkerEventType = EventType.createImplementation({\n implementation: SyncWorkerEventTypeImpl,\n dependencies: []\n});\n"],"names":["SYNC_WORKER_ACTIONS","SyncWorkerEventTypeImpl","event","SyncWorkerEventHandler","SyncWorkerEventType","EventType"],"mappings":";;AAKA,MAAMA,sBAAsB;IACxB;IACA;IACA;IACA;IACA;CACH;AAED,MAAMC;IACF,UAAUC,KAAU,EAA6B;QAC7C,OACI,AAAyB,YAAzB,OAAOA,OAAO,UACdF,oBAAoB,QAAQ,CAACE,MAAM,MAAM;IAEjD;IAEA,wBAAwB;QACpB,OAAOC;IACX;AACJ;AAEO,MAAMC,sBAAsBC,UAAU,oBAAoB,CAAC;IAC9D,gBAAgBJ;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { EventContext, NextFunction } from "@webiny/event-handler-core";
|
|
2
|
+
import { SyncWorkerEventHandler } from "./SyncWorkerEventHandler.js";
|
|
3
|
+
import type { ISyncWorkerEvent, ISyncWorkerResult } from "./SyncWorkerEventHandler.js";
|
|
4
|
+
import type { ISyncWorkerConfig } from "./SyncWorkerConfig.js";
|
|
5
|
+
declare class SyncWorkerLambdaHandlerImpl implements SyncWorkerEventHandler.Interface {
|
|
6
|
+
private config;
|
|
7
|
+
constructor(config: ISyncWorkerConfig);
|
|
8
|
+
execute(eventCtx: EventContext<ISyncWorkerEvent>, _next: NextFunction): Promise<ISyncWorkerResult>;
|
|
9
|
+
}
|
|
10
|
+
export declare const SyncWorkerLambdaHandler: typeof SyncWorkerLambdaHandlerImpl & {
|
|
11
|
+
__abstraction: import("@webiny/di").Abstraction<import("./SyncWorkerEventHandler.js").ISyncWorkerEventHandler>;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { convertException } from "@webiny/utils";
|
|
2
|
+
import { PluginsContainer } from "@webiny/plugins";
|
|
3
|
+
import { SyncWorkerEventHandler } from "./SyncWorkerEventHandler.js";
|
|
4
|
+
import { SyncWorkerConfig } from "./SyncWorkerConfig.js";
|
|
5
|
+
import { WorkerActionHandler } from "./handler/WorkerActionHandler.js";
|
|
6
|
+
import { WorkerActionPlugin } from "./plugins/WorkerActionPlugin.js";
|
|
7
|
+
import { createCopyFileAction } from "./actions/copyFile/copyFileAction.js";
|
|
8
|
+
import { createDeleteFileAction } from "./actions/deleteFile/deleteFileAction.js";
|
|
9
|
+
import { createCreateUserAction } from "./actions/createUser/createUserAction.js";
|
|
10
|
+
import { createUpdateUserAction } from "./actions/updateUser/updateUserAction.js";
|
|
11
|
+
import { createDeleteUserAction } from "./actions/deleteUser/deleteUserAction.js";
|
|
12
|
+
class SyncWorkerLambdaHandlerImpl {
|
|
13
|
+
constructor(config){
|
|
14
|
+
this.config = config;
|
|
15
|
+
}
|
|
16
|
+
async execute(eventCtx, _next) {
|
|
17
|
+
const { createS3Client, createCognitoIdentityProviderClient } = this.config;
|
|
18
|
+
const plugins = new PluginsContainer([
|
|
19
|
+
createCopyFileAction({
|
|
20
|
+
createS3Client
|
|
21
|
+
}),
|
|
22
|
+
createDeleteFileAction({
|
|
23
|
+
createS3Client
|
|
24
|
+
}),
|
|
25
|
+
createCreateUserAction({
|
|
26
|
+
createCognitoProvider: createCognitoIdentityProviderClient
|
|
27
|
+
}),
|
|
28
|
+
createUpdateUserAction({
|
|
29
|
+
createCognitoProvider: createCognitoIdentityProviderClient
|
|
30
|
+
}),
|
|
31
|
+
createDeleteUserAction({
|
|
32
|
+
createCognitoProvider: createCognitoIdentityProviderClient
|
|
33
|
+
}),
|
|
34
|
+
...this.config.plugins || []
|
|
35
|
+
]);
|
|
36
|
+
const handler = new WorkerActionHandler({
|
|
37
|
+
plugins: plugins.byType(WorkerActionPlugin.type)
|
|
38
|
+
});
|
|
39
|
+
try {
|
|
40
|
+
await handler.handle(eventCtx.event);
|
|
41
|
+
return {
|
|
42
|
+
success: true
|
|
43
|
+
};
|
|
44
|
+
} catch (ex) {
|
|
45
|
+
console.error("Error while handling sync worker action.");
|
|
46
|
+
console.log(convertException(ex));
|
|
47
|
+
return {
|
|
48
|
+
success: false
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const SyncWorkerLambdaHandler = SyncWorkerEventHandler.createImplementation({
|
|
54
|
+
implementation: SyncWorkerLambdaHandlerImpl,
|
|
55
|
+
dependencies: [
|
|
56
|
+
SyncWorkerConfig
|
|
57
|
+
]
|
|
58
|
+
});
|
|
59
|
+
export { SyncWorkerLambdaHandler };
|
|
60
|
+
|
|
61
|
+
//# sourceMappingURL=SyncWorkerLambdaHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker/SyncWorkerLambdaHandler.js","sources":["../../src/worker/SyncWorkerLambdaHandler.ts"],"sourcesContent":["import { convertException } from \"@webiny/utils\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport type { EventContext, NextFunction } from \"@webiny/event-handler-core\";\nimport { SyncWorkerEventHandler } from \"./SyncWorkerEventHandler.js\";\nimport type { ISyncWorkerEvent, ISyncWorkerResult } from \"./SyncWorkerEventHandler.js\";\nimport { SyncWorkerConfig } from \"./SyncWorkerConfig.js\";\nimport type { ISyncWorkerConfig } from \"./SyncWorkerConfig.js\";\nimport { WorkerActionHandler } from \"~/worker/handler/WorkerActionHandler.js\";\nimport { WorkerActionPlugin } from \"~/worker/plugins/WorkerActionPlugin.js\";\nimport { createCopyFileAction } from \"~/worker/actions/copyFile/copyFileAction.js\";\nimport { createDeleteFileAction } from \"~/worker/actions/deleteFile/deleteFileAction.js\";\nimport { createCreateUserAction } from \"~/worker/actions/createUser/createUserAction.js\";\nimport { createUpdateUserAction } from \"~/worker/actions/updateUser/updateUserAction.js\";\nimport { createDeleteUserAction } from \"~/worker/actions/deleteUser/deleteUserAction.js\";\n\nclass SyncWorkerLambdaHandlerImpl implements SyncWorkerEventHandler.Interface {\n constructor(private config: ISyncWorkerConfig) {}\n\n async execute(\n eventCtx: EventContext<ISyncWorkerEvent>,\n _next: NextFunction\n ): Promise<ISyncWorkerResult> {\n const { createS3Client, createCognitoIdentityProviderClient } = this.config;\n\n const plugins = new PluginsContainer([\n createCopyFileAction({ createS3Client }),\n createDeleteFileAction({ createS3Client }),\n createCreateUserAction({ createCognitoProvider: createCognitoIdentityProviderClient }),\n createUpdateUserAction({ createCognitoProvider: createCognitoIdentityProviderClient }),\n createDeleteUserAction({ createCognitoProvider: createCognitoIdentityProviderClient }),\n ...(this.config.plugins || [])\n ]);\n\n const handler = new WorkerActionHandler({\n plugins: plugins.byType<WorkerActionPlugin>(WorkerActionPlugin.type)\n });\n\n try {\n await handler.handle(eventCtx.event);\n return { success: true };\n } catch (ex) {\n console.error(\"Error while handling sync worker action.\");\n console.log(convertException(ex));\n return { success: false };\n }\n }\n}\n\nexport const SyncWorkerLambdaHandler = SyncWorkerEventHandler.createImplementation({\n implementation: SyncWorkerLambdaHandlerImpl,\n dependencies: [SyncWorkerConfig]\n});\n"],"names":["SyncWorkerLambdaHandlerImpl","config","eventCtx","_next","createS3Client","createCognitoIdentityProviderClient","plugins","PluginsContainer","createCopyFileAction","createDeleteFileAction","createCreateUserAction","createUpdateUserAction","createDeleteUserAction","handler","WorkerActionHandler","WorkerActionPlugin","ex","console","convertException","SyncWorkerLambdaHandler","SyncWorkerEventHandler","SyncWorkerConfig"],"mappings":";;;;;;;;;;;AAeA,MAAMA;IACF,YAAoBC,MAAyB,CAAE;aAA3BA,MAAM,GAANA;IAA4B;IAEhD,MAAM,QACFC,QAAwC,EACxCC,KAAmB,EACO;QAC1B,MAAM,EAAEC,cAAc,EAAEC,mCAAmC,EAAE,GAAG,IAAI,CAAC,MAAM;QAE3E,MAAMC,UAAU,IAAIC,iBAAiB;YACjCC,qBAAqB;gBAAEJ;YAAe;YACtCK,uBAAuB;gBAAEL;YAAe;YACxCM,uBAAuB;gBAAE,uBAAuBL;YAAoC;YACpFM,uBAAuB;gBAAE,uBAAuBN;YAAoC;YACpFO,uBAAuB;gBAAE,uBAAuBP;YAAoC;eAChF,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE;SAChC;QAED,MAAMQ,UAAU,IAAIC,oBAAoB;YACpC,SAASR,QAAQ,MAAM,CAAqBS,mBAAmB,IAAI;QACvE;QAEA,IAAI;YACA,MAAMF,QAAQ,MAAM,CAACX,SAAS,KAAK;YACnC,OAAO;gBAAE,SAAS;YAAK;QAC3B,EAAE,OAAOc,IAAI;YACTC,QAAQ,KAAK,CAAC;YACdA,QAAQ,GAAG,CAACC,iBAAiBF;YAC7B,OAAO;gBAAE,SAAS;YAAM;QAC5B;IACJ;AACJ;AAEO,MAAMG,0BAA0BC,uBAAuB,oBAAoB,CAAC;IAC/E,gBAAgBpB;IAChB,cAAc;QAACqB;KAAiB;AACpC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { DynamoDBClientConfig, DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb/index.js";
|
|
2
|
-
import type { Reply as FastifyReply } from "@webiny/handler/types.js";
|
|
3
|
-
import { SQSEventHandler } from "@webiny/handler-aws/sqs/plugins/SQSEventHandler.js";
|
|
4
|
-
export interface ICreateEventHandlerPluginParams {
|
|
5
|
-
tableName: string | undefined;
|
|
6
|
-
createDocumentClient: (params: DynamoDBClientConfig) => Pick<DynamoDBDocument, "send">;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* TODO maybe add logger?
|
|
10
|
-
*/
|
|
11
|
-
export declare const createEventHandlerPlugin: (params: ICreateEventHandlerPluginParams) => SQSEventHandler<FastifyReply>;
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { createEventHandler } from "@webiny/handler-aws/sqs/index.js";
|
|
2
|
-
import { createResolverApp } from "./app/ResolverApplication.js";
|
|
3
|
-
import { convertException } from "@webiny/utils";
|
|
4
|
-
import { createRecordHandler } from "./app/RecordHandler.js";
|
|
5
|
-
import { createFetcher } from "./app/fetcher/Fetcher.js";
|
|
6
|
-
import { createDeploymentsFetcher } from "./deployment/DeploymentsFetcher.js";
|
|
7
|
-
import { WebinyError } from "@webiny/error";
|
|
8
|
-
import { createBundler } from "./app/bundler/Bundler.js";
|
|
9
|
-
import { createBundles } from "./app/bundler/Bundles.js";
|
|
10
|
-
import { createCommandBundle } from "./app/bundler/CommandBundle.js";
|
|
11
|
-
import { createTableBundle } from "./app/bundler/TableBundle.js";
|
|
12
|
-
import { TransformHandler } from "./app/transform/TransformHandler.js";
|
|
13
|
-
import { SQSEventHandler } from "@webiny/handler-aws/sqs/plugins/SQSEventHandler.js";
|
|
14
|
-
import { createStorer } from "./app/storer/Storer.js";
|
|
15
|
-
import { StorerAfterEachPlugin } from "./plugins/StorerAfterEachPlugin.js";
|
|
16
|
-
import { SourceDataContainer } from "./app/data/SourceDataContainer.js";
|
|
17
|
-
const createEventHandlerPlugin = (params)=>{
|
|
18
|
-
const { createDocumentClient, tableName } = params;
|
|
19
|
-
const plugin = createEventHandler(async ({ event, context, reply })=>{
|
|
20
|
-
if (!tableName) throw new WebinyError({
|
|
21
|
-
message: "Table name variable is not set."
|
|
22
|
-
});
|
|
23
|
-
try {
|
|
24
|
-
const fetcher = createFetcher({
|
|
25
|
-
maxRetries: 10,
|
|
26
|
-
retryDelay: 1000,
|
|
27
|
-
createDocumentClient: (deployment)=>createDocumentClient({
|
|
28
|
-
region: deployment.region
|
|
29
|
-
})
|
|
30
|
-
});
|
|
31
|
-
const deploymentsFetcher = createDeploymentsFetcher({
|
|
32
|
-
client: createDocumentClient({
|
|
33
|
-
region: process.env.AWS_REGION
|
|
34
|
-
}),
|
|
35
|
-
table: tableName
|
|
36
|
-
});
|
|
37
|
-
const deployments = await deploymentsFetcher.fetch();
|
|
38
|
-
const storerAfterEachPlugins = context.plugins.byType(StorerAfterEachPlugin.type);
|
|
39
|
-
const storer = createStorer({
|
|
40
|
-
createDocumentClient: (deployment)=>createDocumentClient({
|
|
41
|
-
region: deployment.region
|
|
42
|
-
}),
|
|
43
|
-
afterEach: async (params)=>{
|
|
44
|
-
for (const plugin of storerAfterEachPlugins)if (plugin.canHandle(params)) await plugin.handle(params);
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
const transformHandler = new TransformHandler({
|
|
48
|
-
plugins: context.plugins
|
|
49
|
-
});
|
|
50
|
-
const recordHandler = createRecordHandler({
|
|
51
|
-
plugins: context.plugins,
|
|
52
|
-
fetcher,
|
|
53
|
-
storer,
|
|
54
|
-
deployments,
|
|
55
|
-
transformHandler,
|
|
56
|
-
commandBundler: createBundler({
|
|
57
|
-
createBundles: ()=>createBundles({
|
|
58
|
-
createBundle: createCommandBundle
|
|
59
|
-
})
|
|
60
|
-
}),
|
|
61
|
-
tableBundler: createBundler({
|
|
62
|
-
createBundles: ()=>createBundles({
|
|
63
|
-
createBundle: createTableBundle
|
|
64
|
-
})
|
|
65
|
-
}),
|
|
66
|
-
createSourceDataContainer: ()=>SourceDataContainer.create()
|
|
67
|
-
});
|
|
68
|
-
const app = createResolverApp({
|
|
69
|
-
recordHandler,
|
|
70
|
-
deployments
|
|
71
|
-
});
|
|
72
|
-
await app.resolve({
|
|
73
|
-
records: event.Records
|
|
74
|
-
});
|
|
75
|
-
return reply.send({
|
|
76
|
-
ok: true
|
|
77
|
-
});
|
|
78
|
-
} catch (ex) {
|
|
79
|
-
const error = convertException(ex);
|
|
80
|
-
console.error(error);
|
|
81
|
-
return reply.send({
|
|
82
|
-
error
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
plugin.name = `${SQSEventHandler.type}.syncResolver`;
|
|
87
|
-
return plugin;
|
|
88
|
-
};
|
|
89
|
-
export { createEventHandlerPlugin };
|
|
90
|
-
|
|
91
|
-
//# sourceMappingURL=createEventHandlerPlugin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolver/createEventHandlerPlugin.js","sources":["../../src/resolver/createEventHandlerPlugin.ts"],"sourcesContent":["import { createEventHandler as createSQSEventHandler } from \"@webiny/handler-aws/sqs/index.js\";\nimport { createResolverApp } from \"./app/ResolverApplication.js\";\nimport { convertException } from \"@webiny/utils\";\nimport { createRecordHandler } from \"./app/RecordHandler.js\";\nimport { createFetcher } from \"~/resolver/app/fetcher/Fetcher.js\";\nimport { createDeploymentsFetcher } from \"~/resolver/deployment/DeploymentsFetcher.js\";\nimport { WebinyError } from \"@webiny/error\";\nimport type {\n DynamoDBClientConfig,\n DynamoDBDocument\n} from \"@webiny/aws-sdk/client-dynamodb/index.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 { TransformHandler } from \"~/resolver/app/transform/TransformHandler.js\";\nimport type { Reply as FastifyReply } from \"@webiny/handler/types.js\";\nimport { SQSEventHandler } from \"@webiny/handler-aws/sqs/plugins/SQSEventHandler.js\";\nimport { createStorer } from \"./app/storer/Storer.js\";\nimport { StorerAfterEachPlugin } from \"./plugins/StorerAfterEachPlugin.js\";\nimport { SourceDataContainer } from \"~/resolver/app/data/SourceDataContainer.js\";\n\nexport interface ICreateEventHandlerPluginParams {\n tableName: string | undefined;\n createDocumentClient: (params: DynamoDBClientConfig) => Pick<DynamoDBDocument, \"send\">;\n}\n/**\n * TODO maybe add logger?\n */\nexport const createEventHandlerPlugin = (params: ICreateEventHandlerPluginParams) => {\n const { createDocumentClient, tableName } = params;\n\n const plugin = createSQSEventHandler(\n async ({ event, context, reply }): Promise<FastifyReply> => {\n if (!tableName) {\n throw new WebinyError({\n message: \"Table name variable is not set.\"\n });\n }\n try {\n const fetcher = createFetcher({\n maxRetries: 10,\n retryDelay: 1000,\n createDocumentClient: deployment => {\n return createDocumentClient({\n region: deployment.region\n });\n }\n });\n\n const deploymentsFetcher = createDeploymentsFetcher({\n client: createDocumentClient({\n region: process.env.AWS_REGION\n }),\n table: tableName\n });\n /**\n * Fetch all possible deployments, out of which we will filter out the deployment that the records came from.\n */\n const deployments = await deploymentsFetcher.fetch();\n\n const storerAfterEachPlugins = context.plugins.byType<StorerAfterEachPlugin>(\n StorerAfterEachPlugin.type\n );\n\n const storer = createStorer({\n createDocumentClient: deployment => {\n return createDocumentClient({\n region: deployment.region\n });\n },\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({\n plugins: context.plugins\n });\n\n const recordHandler = createRecordHandler({\n plugins: context.plugins,\n fetcher,\n storer,\n deployments,\n transformHandler,\n commandBundler: createBundler({\n createBundles: () => {\n return createBundles({\n createBundle: createCommandBundle\n });\n }\n }),\n tableBundler: createBundler({\n createBundles: () => {\n return createBundles({\n createBundle: createTableBundle\n });\n }\n }),\n createSourceDataContainer: () => {\n return SourceDataContainer.create();\n }\n });\n const app = createResolverApp({\n recordHandler,\n deployments\n });\n\n await app.resolve({\n records: event.Records\n });\n return reply.send({\n ok: true\n });\n } catch (ex) {\n const error = convertException(ex);\n console.error(error);\n return reply.send({\n error\n });\n }\n }\n );\n\n plugin.name = `${SQSEventHandler.type}.syncResolver`;\n\n return plugin;\n};\n"],"names":["createEventHandlerPlugin","params","createDocumentClient","tableName","plugin","createSQSEventHandler","event","context","reply","WebinyError","fetcher","createFetcher","deployment","deploymentsFetcher","createDeploymentsFetcher","process","deployments","storerAfterEachPlugins","StorerAfterEachPlugin","storer","createStorer","transformHandler","TransformHandler","recordHandler","createRecordHandler","createBundler","createBundles","createCommandBundle","createTableBundle","SourceDataContainer","app","createResolverApp","ex","error","convertException","console","SQSEventHandler"],"mappings":";;;;;;;;;;;;;;;;AA6BO,MAAMA,2BAA2B,CAACC;IACrC,MAAM,EAAEC,oBAAoB,EAAEC,SAAS,EAAE,GAAGF;IAE5C,MAAMG,SAASC,mBACX,OAAO,EAAEC,KAAK,EAAEC,OAAO,EAAEC,KAAK,EAAE;QAC5B,IAAI,CAACL,WACD,MAAM,IAAIM,YAAY;YAClB,SAAS;QACb;QAEJ,IAAI;YACA,MAAMC,UAAUC,cAAc;gBAC1B,YAAY;gBACZ,YAAY;gBACZ,sBAAsBC,CAAAA,aACXV,qBAAqB;wBACxB,QAAQU,WAAW,MAAM;oBAC7B;YAER;YAEA,MAAMC,qBAAqBC,yBAAyB;gBAChD,QAAQZ,qBAAqB;oBACzB,QAAQa,QAAQ,GAAG,CAAC,UAAU;gBAClC;gBACA,OAAOZ;YACX;YAIA,MAAMa,cAAc,MAAMH,mBAAmB,KAAK;YAElD,MAAMI,yBAAyBV,QAAQ,OAAO,CAAC,MAAM,CACjDW,sBAAsB,IAAI;YAG9B,MAAMC,SAASC,aAAa;gBACxB,sBAAsBR,CAAAA,aACXV,qBAAqB;wBACxB,QAAQU,WAAW,MAAM;oBAC7B;gBAEJ,WAAW,OAAMX;oBACb,KAAK,MAAMG,UAAUa,uBACjB,IAAKb,OAAO,SAAS,CAACH,SAGtB,MAAMG,OAAO,MAAM,CAACH;gBAE5B;YACJ;YAEA,MAAMoB,mBAAmB,IAAIC,iBAAiB;gBAC1C,SAASf,QAAQ,OAAO;YAC5B;YAEA,MAAMgB,gBAAgBC,oBAAoB;gBACtC,SAASjB,QAAQ,OAAO;gBACxBG;gBACAS;gBACAH;gBACAK;gBACA,gBAAgBI,cAAc;oBAC1B,eAAe,IACJC,cAAc;4BACjB,cAAcC;wBAClB;gBAER;gBACA,cAAcF,cAAc;oBACxB,eAAe,IACJC,cAAc;4BACjB,cAAcE;wBAClB;gBAER;gBACA,2BAA2B,IAChBC,oBAAoB,MAAM;YAEzC;YACA,MAAMC,MAAMC,kBAAkB;gBAC1BR;gBACAP;YACJ;YAEA,MAAMc,IAAI,OAAO,CAAC;gBACd,SAASxB,MAAM,OAAO;YAC1B;YACA,OAAOE,MAAM,IAAI,CAAC;gBACd,IAAI;YACR;QACJ,EAAE,OAAOwB,IAAI;YACT,MAAMC,QAAQC,iBAAiBF;YAC/BG,QAAQ,KAAK,CAACF;YACd,OAAOzB,MAAM,IAAI,CAAC;gBACdyB;YACJ;QACJ;IACJ;IAGJ7B,OAAO,IAAI,GAAG,GAAGgC,gBAAgB,IAAI,CAAC,aAAa,CAAC;IAEpD,OAAOhC;AACX"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { HandlerCallable, HandlerParams } from "@webiny/handler-aws/sqs/index.js";
|
|
2
|
-
import type { TransformRecordPlugin } from "./plugins/TransformRecordPlugin.js";
|
|
3
|
-
import type { CommandHandlerPlugin } from "./plugins/CommandHandlerPlugin.js";
|
|
4
|
-
import type { DynamoDBClientConfig, DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb/index.js";
|
|
5
|
-
import type { LambdaClient, LambdaClientConfig } from "@webiny/aws-sdk/client-lambda/index.js";
|
|
6
|
-
import type { S3Client, S3ClientConfig } from "@webiny/aws-sdk/client-s3/index.js";
|
|
7
|
-
import type { CognitoIdentityProviderClient, CognitoIdentityProviderClientConfig } from "@webiny/aws-sdk/client-cognito-identity-provider/index.js";
|
|
8
|
-
export type AllowedResolverPlugins = TransformRecordPlugin | CommandHandlerPlugin;
|
|
9
|
-
export interface ICreateResolverHandlerParams extends HandlerParams {
|
|
10
|
-
plugins: AllowedResolverPlugins[];
|
|
11
|
-
createS3Client: (params: S3ClientConfig) => Pick<S3Client, "send">;
|
|
12
|
-
createLambdaClient: (config: Partial<LambdaClientConfig>) => Pick<LambdaClient, "send">;
|
|
13
|
-
createDocumentClient: (params: Partial<DynamoDBClientConfig>) => Pick<DynamoDBDocument, "send">;
|
|
14
|
-
createCognitoIdentityProviderClient: (config: Partial<CognitoIdentityProviderClientConfig>) => Pick<CognitoIdentityProviderClient, "send">;
|
|
15
|
-
tableName?: string;
|
|
16
|
-
awsWorkerLambdaArn?: string;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Handler for the Sync System Resolver - based on SQS handler.
|
|
20
|
-
*/
|
|
21
|
-
export declare const createResolverHandler: (params: ICreateResolverHandlerParams) => HandlerCallable;
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { createHandler } from "@webiny/handler-aws/sqs/index.js";
|
|
2
|
-
import { PluginsContainer } from "@webiny/plugins";
|
|
3
|
-
import { createEventHandlerPlugin } from "./createEventHandlerPlugin.js";
|
|
4
|
-
import { createPutCommandHandlerPlugin } from "./app/commandHandler/put.js";
|
|
5
|
-
import { createDeleteCommandHandlerPlugin } from "./app/commandHandler/delete.js";
|
|
6
|
-
import { createFileManagerPlugins } from "./recordTypes/fileManager/fileManager.js";
|
|
7
|
-
import { LambdaTrigger } from "./lambda/LambdaTrigger.js";
|
|
8
|
-
import { CopyFile } from "./recordTypes/fileManager/CopyFile.js";
|
|
9
|
-
import { DeleteFile } from "./recordTypes/fileManager/DeleteFile.js";
|
|
10
|
-
import { createUsersPlugins } from "./recordTypes/users/users.js";
|
|
11
|
-
import { CopyUser } from "./recordTypes/users/CopyUser.js";
|
|
12
|
-
import { DeleteUser } from "./recordTypes/users/DeleteUser.js";
|
|
13
|
-
const createResolverHandler = (params)=>{
|
|
14
|
-
const awsWorkerLambdaArn = params.awsWorkerLambdaArn || process.env.AWS_SYNC_WORKER_LAMBDA_ARN;
|
|
15
|
-
if (!awsWorkerLambdaArn) {
|
|
16
|
-
const message = 'Missing "process.env.AWS_SYNC_WORKER_LAMBDA_ARN".';
|
|
17
|
-
console.error(message);
|
|
18
|
-
throw new Error(message);
|
|
19
|
-
}
|
|
20
|
-
const lambdaTrigger = new LambdaTrigger({
|
|
21
|
-
arn: awsWorkerLambdaArn,
|
|
22
|
-
createLambdaClient: params.createLambdaClient
|
|
23
|
-
});
|
|
24
|
-
const copyFile = new CopyFile({
|
|
25
|
-
createS3Client: params.createS3Client,
|
|
26
|
-
getLambdaTrigger: ()=>lambdaTrigger
|
|
27
|
-
});
|
|
28
|
-
const deleteFile = new DeleteFile({
|
|
29
|
-
createS3Client: params.createS3Client,
|
|
30
|
-
getLambdaTrigger: ()=>lambdaTrigger
|
|
31
|
-
});
|
|
32
|
-
const copyUser = new CopyUser({
|
|
33
|
-
createCognitoIdentityProviderClient: params.createCognitoIdentityProviderClient,
|
|
34
|
-
getLambdaTrigger: ()=>lambdaTrigger
|
|
35
|
-
});
|
|
36
|
-
const deleteUser = new DeleteUser({
|
|
37
|
-
createCognitoIdentityProviderClient: params.createCognitoIdentityProviderClient,
|
|
38
|
-
getLambdaTrigger: ()=>lambdaTrigger
|
|
39
|
-
});
|
|
40
|
-
const plugins = new PluginsContainer([
|
|
41
|
-
createFileManagerPlugins({
|
|
42
|
-
copyFile,
|
|
43
|
-
deleteFile
|
|
44
|
-
}),
|
|
45
|
-
createUsersPlugins({
|
|
46
|
-
copyUser,
|
|
47
|
-
deleteUser
|
|
48
|
-
}),
|
|
49
|
-
createEventHandlerPlugin({
|
|
50
|
-
createDocumentClient: params.createDocumentClient,
|
|
51
|
-
tableName: params.tableName || process.env.DB_TABLE
|
|
52
|
-
}),
|
|
53
|
-
createPutCommandHandlerPlugin(),
|
|
54
|
-
createDeleteCommandHandlerPlugin()
|
|
55
|
-
]);
|
|
56
|
-
plugins.register(params.plugins);
|
|
57
|
-
return createHandler({
|
|
58
|
-
...params,
|
|
59
|
-
plugins
|
|
60
|
-
});
|
|
61
|
-
};
|
|
62
|
-
export { createResolverHandler };
|
|
63
|
-
|
|
64
|
-
//# sourceMappingURL=createResolverHandler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolver/createResolverHandler.js","sources":["../../src/resolver/createResolverHandler.ts"],"sourcesContent":["import type { HandlerCallable, HandlerParams } from \"@webiny/handler-aws/sqs/index.js\";\nimport { createHandler as createSQSHandler } from \"@webiny/handler-aws/sqs/index.js\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { createEventHandlerPlugin } from \"./createEventHandlerPlugin.js\";\nimport type { TransformRecordPlugin } from \"./plugins/TransformRecordPlugin.js\";\nimport type { CommandHandlerPlugin } from \"./plugins/CommandHandlerPlugin.js\";\nimport { createPutCommandHandlerPlugin } from \"./app/commandHandler/put.js\";\nimport { createDeleteCommandHandlerPlugin } from \"./app/commandHandler/delete.js\";\nimport type {\n DynamoDBClientConfig,\n DynamoDBDocument\n} from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport { createFileManagerPlugins } from \"./recordTypes/fileManager/fileManager.js\";\nimport { LambdaTrigger } from \"./lambda/LambdaTrigger.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 { CopyFile } from \"~/resolver/recordTypes/fileManager/CopyFile.js\";\nimport { DeleteFile } from \"./recordTypes/fileManager/DeleteFile.js\";\nimport { createUsersPlugins } from \"~/resolver/recordTypes/users/users.js\";\nimport { CopyUser } from \"./recordTypes/users/CopyUser.js\";\nimport type {\n CognitoIdentityProviderClient,\n CognitoIdentityProviderClientConfig\n} from \"@webiny/aws-sdk/client-cognito-identity-provider/index.js\";\nimport { DeleteUser } from \"./recordTypes/users/DeleteUser.js\";\n\nexport type AllowedResolverPlugins = TransformRecordPlugin | CommandHandlerPlugin;\n\nexport interface ICreateResolverHandlerParams extends HandlerParams {\n plugins: AllowedResolverPlugins[];\n createS3Client: (params: S3ClientConfig) => Pick<S3Client, \"send\">;\n createLambdaClient: (config: Partial<LambdaClientConfig>) => Pick<LambdaClient, \"send\">;\n createDocumentClient: (params: Partial<DynamoDBClientConfig>) => Pick<DynamoDBDocument, \"send\">;\n createCognitoIdentityProviderClient: (\n config: Partial<CognitoIdentityProviderClientConfig>\n ) => Pick<CognitoIdentityProviderClient, \"send\">;\n tableName?: string;\n awsWorkerLambdaArn?: string;\n}\n/**\n * Handler for the Sync System Resolver - based on SQS handler.\n */\nexport const createResolverHandler = (params: ICreateResolverHandlerParams): HandlerCallable => {\n const awsWorkerLambdaArn = params.awsWorkerLambdaArn || process.env.AWS_SYNC_WORKER_LAMBDA_ARN;\n if (!awsWorkerLambdaArn) {\n const message = `Missing \"process.env.AWS_SYNC_WORKER_LAMBDA_ARN\".`;\n console.error(message);\n throw new Error(message);\n }\n\n const lambdaTrigger = new LambdaTrigger({\n arn: awsWorkerLambdaArn,\n createLambdaClient: params.createLambdaClient\n });\n\n const copyFile = new CopyFile({\n createS3Client: params.createS3Client,\n getLambdaTrigger: () => {\n return lambdaTrigger;\n }\n });\n const deleteFile = new DeleteFile({\n createS3Client: params.createS3Client,\n getLambdaTrigger: () => {\n return lambdaTrigger;\n }\n });\n\n const copyUser = new CopyUser({\n createCognitoIdentityProviderClient: params.createCognitoIdentityProviderClient,\n getLambdaTrigger: () => {\n return lambdaTrigger;\n }\n });\n const deleteUser = new DeleteUser({\n createCognitoIdentityProviderClient: params.createCognitoIdentityProviderClient,\n getLambdaTrigger: () => {\n return lambdaTrigger;\n }\n });\n\n const plugins = new PluginsContainer([\n // TODO move into related packages\n createFileManagerPlugins({\n copyFile,\n deleteFile\n }),\n createUsersPlugins({\n copyUser,\n deleteUser\n }),\n // leave here\n createEventHandlerPlugin({\n createDocumentClient: params.createDocumentClient,\n tableName: params.tableName || process.env.DB_TABLE\n }),\n createPutCommandHandlerPlugin(),\n createDeleteCommandHandlerPlugin()\n ]);\n\n plugins.register(params.plugins);\n\n return createSQSHandler({\n ...params,\n plugins\n });\n};\n"],"names":["createResolverHandler","params","awsWorkerLambdaArn","process","message","console","Error","lambdaTrigger","LambdaTrigger","copyFile","CopyFile","deleteFile","DeleteFile","copyUser","CopyUser","deleteUser","DeleteUser","plugins","PluginsContainer","createFileManagerPlugins","createUsersPlugins","createEventHandlerPlugin","createPutCommandHandlerPlugin","createDeleteCommandHandlerPlugin","createSQSHandler"],"mappings":";;;;;;;;;;;;AA0CO,MAAMA,wBAAwB,CAACC;IAClC,MAAMC,qBAAqBD,OAAO,kBAAkB,IAAIE,QAAQ,GAAG,CAAC,0BAA0B;IAC9F,IAAI,CAACD,oBAAoB;QACrB,MAAME,UAAU;QAChBC,QAAQ,KAAK,CAACD;QACd,MAAM,IAAIE,MAAMF;IACpB;IAEA,MAAMG,gBAAgB,IAAIC,cAAc;QACpC,KAAKN;QACL,oBAAoBD,OAAO,kBAAkB;IACjD;IAEA,MAAMQ,WAAW,IAAIC,SAAS;QAC1B,gBAAgBT,OAAO,cAAc;QACrC,kBAAkB,IACPM;IAEf;IACA,MAAMI,aAAa,IAAIC,WAAW;QAC9B,gBAAgBX,OAAO,cAAc;QACrC,kBAAkB,IACPM;IAEf;IAEA,MAAMM,WAAW,IAAIC,SAAS;QAC1B,qCAAqCb,OAAO,mCAAmC;QAC/E,kBAAkB,IACPM;IAEf;IACA,MAAMQ,aAAa,IAAIC,WAAW;QAC9B,qCAAqCf,OAAO,mCAAmC;QAC/E,kBAAkB,IACPM;IAEf;IAEA,MAAMU,UAAU,IAAIC,iBAAiB;QAEjCC,yBAAyB;YACrBV;YACAE;QACJ;QACAS,mBAAmB;YACfP;YACAE;QACJ;QAEAM,yBAAyB;YACrB,sBAAsBpB,OAAO,oBAAoB;YACjD,WAAWA,OAAO,SAAS,IAAIE,QAAQ,GAAG,CAAC,QAAQ;QACvD;QACAmB;QACAC;KACH;IAEDN,QAAQ,QAAQ,CAAChB,OAAO,OAAO;IAE/B,OAAOuB,cAAiB;QACpB,GAAGvB,MAAM;QACTgB;IACJ;AACJ"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { createOnRequestResponseSend, createOnRequestTimeout } from "@webiny/handler";
|
|
2
|
-
import { convertException } from "@webiny/utils/exception.js";
|
|
3
|
-
const execute = async (handler)=>{
|
|
4
|
-
try {
|
|
5
|
-
return await handler.flush();
|
|
6
|
-
} catch (ex) {
|
|
7
|
-
const error = convertException(ex);
|
|
8
|
-
console.error({
|
|
9
|
-
flushError: error
|
|
10
|
-
});
|
|
11
|
-
return {
|
|
12
|
-
error
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
|
-
const isOptionsRequest = (request)=>{
|
|
17
|
-
if (!request?.method) return false;
|
|
18
|
-
return "OPTIONS" === request.method.toUpperCase();
|
|
19
|
-
};
|
|
20
|
-
const createSendDataToEventBridgeOnRequestEnd = (handler)=>{
|
|
21
|
-
const onRequestResponseSend = createOnRequestResponseSend(async (request, _, payload)=>{
|
|
22
|
-
if (isOptionsRequest(request)) return payload;
|
|
23
|
-
await execute(handler);
|
|
24
|
-
return payload;
|
|
25
|
-
});
|
|
26
|
-
onRequestResponseSend.name = "sync.onRequestResponseSend";
|
|
27
|
-
const onRequestTimeout = createOnRequestTimeout(async (request)=>{
|
|
28
|
-
if (isOptionsRequest(request)) return;
|
|
29
|
-
return await execute(handler);
|
|
30
|
-
});
|
|
31
|
-
onRequestTimeout.name = "sync.onRequestTimeout";
|
|
32
|
-
return [
|
|
33
|
-
onRequestResponseSend,
|
|
34
|
-
onRequestTimeout
|
|
35
|
-
];
|
|
36
|
-
};
|
|
37
|
-
export { createSendDataToEventBridgeOnRequestEnd };
|
|
38
|
-
|
|
39
|
-
//# sourceMappingURL=createSendDataToEventBridgeOnRequestEnd.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sync/createSendDataToEventBridgeOnRequestEnd.js","sources":["../../src/sync/createSendDataToEventBridgeOnRequestEnd.ts"],"sourcesContent":["import type { IHandler } from \"./types.js\";\nimport { createOnRequestResponseSend, createOnRequestTimeout } from \"@webiny/handler\";\nimport type { Request as FastifyRequest } from \"@webiny/handler/types.js\";\nimport { convertException } from \"@webiny/utils/exception.js\";\n\nconst execute = async (handler: IHandler) => {\n try {\n return await handler.flush();\n } catch (ex) {\n const error = convertException(ex);\n console.error({\n flushError: error\n });\n return {\n error\n };\n /**\n * We do not want to throw an error here, because we are in the request end.\n */\n }\n};\n\nconst isOptionsRequest = (request: FastifyRequest): boolean => {\n if (!request?.method) {\n return false;\n }\n return request.method.toUpperCase() === \"OPTIONS\";\n};\n\nexport const createSendDataToEventBridgeOnRequestEnd = (handler: IHandler) => {\n const onRequestResponseSend = createOnRequestResponseSend(async (request, _, payload) => {\n if (isOptionsRequest(request)) {\n return payload;\n }\n await execute(handler);\n return payload;\n });\n onRequestResponseSend.name = \"sync.onRequestResponseSend\";\n\n const onRequestTimeout = createOnRequestTimeout(async request => {\n if (isOptionsRequest(request)) {\n return;\n }\n return await execute(handler);\n });\n onRequestTimeout.name = \"sync.onRequestTimeout\";\n\n return [onRequestResponseSend, onRequestTimeout];\n};\n"],"names":["execute","handler","ex","error","convertException","console","isOptionsRequest","request","createSendDataToEventBridgeOnRequestEnd","onRequestResponseSend","createOnRequestResponseSend","_","payload","onRequestTimeout","createOnRequestTimeout"],"mappings":";;AAKA,MAAMA,UAAU,OAAOC;IACnB,IAAI;QACA,OAAO,MAAMA,QAAQ,KAAK;IAC9B,EAAE,OAAOC,IAAI;QACT,MAAMC,QAAQC,iBAAiBF;QAC/BG,QAAQ,KAAK,CAAC;YACV,YAAYF;QAChB;QACA,OAAO;YACHA;QACJ;IAIJ;AACJ;AAEA,MAAMG,mBAAmB,CAACC;IACtB,IAAI,CAACA,SAAS,QACV,OAAO;IAEX,OAAOA,AAAiC,cAAjCA,QAAQ,MAAM,CAAC,WAAW;AACrC;AAEO,MAAMC,0CAA0C,CAACP;IACpD,MAAMQ,wBAAwBC,4BAA4B,OAAOH,SAASI,GAAGC;QACzE,IAAIN,iBAAiBC,UACjB,OAAOK;QAEX,MAAMZ,QAAQC;QACd,OAAOW;IACX;IACAH,sBAAsB,IAAI,GAAG;IAE7B,MAAMI,mBAAmBC,uBAAuB,OAAMP;QAClD,IAAID,iBAAiBC,UACjB;QAEJ,OAAO,MAAMP,QAAQC;IACzB;IACAY,iBAAiB,IAAI,GAAG;IAExB,OAAO;QAACJ;QAAuBI;KAAiB;AACpD"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { Plugin } from "@webiny/plugins/types.js";
|
|
2
|
-
import type { IGetEventBridgeCallable, ISystem } from "./types.js";
|
|
3
|
-
import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb/index.js";
|
|
4
|
-
import type { PossiblyUndefinedProperties } from "@webiny/api/types.js";
|
|
5
|
-
import type { FilterOutRecordPlugin } from "./plugins/FilterOutRecordPlugin.js";
|
|
6
|
-
export type IAllowedPlugins = FilterOutRecordPlugin;
|
|
7
|
-
export interface ICreateSyncSystemParams {
|
|
8
|
-
getDocumentClient(): Pick<DynamoDBDocument, "send">;
|
|
9
|
-
getEventBridgeClient: IGetEventBridgeCallable;
|
|
10
|
-
system: PossiblyUndefinedProperties<Omit<ISystem, "name">>;
|
|
11
|
-
plugins?: IAllowedPlugins[];
|
|
12
|
-
}
|
|
13
|
-
export interface ICreateSyncSystemResponse {
|
|
14
|
-
plugins(): Plugin[];
|
|
15
|
-
}
|
|
16
|
-
export declare const createSyncSystem: (params: ICreateSyncSystemParams) => ICreateSyncSystemResponse;
|
package/sync/createSyncSystem.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { validateSystemInput } from "./utils/validateSystemInput.js";
|
|
2
|
-
import { createSyncSystemHandlerOnRequestPlugin } from "./requestPlugin.js";
|
|
3
|
-
import { createDefaultFilterOutRecordPlugins } from "./filter/createDefaultFilterOutRecordPlugins.js";
|
|
4
|
-
const emptyResponse = {
|
|
5
|
-
plugins () {
|
|
6
|
-
return [];
|
|
7
|
-
}
|
|
8
|
-
};
|
|
9
|
-
const createSyncSystem = (params)=>{
|
|
10
|
-
const { system, error } = validateSystemInput(params.system);
|
|
11
|
-
if (error) {
|
|
12
|
-
console.error(error);
|
|
13
|
-
return emptyResponse;
|
|
14
|
-
}
|
|
15
|
-
if (!system) {
|
|
16
|
-
console.error("Sync System: No system provided. Sync System will not be attached.");
|
|
17
|
-
return emptyResponse;
|
|
18
|
-
}
|
|
19
|
-
return {
|
|
20
|
-
plugins: ()=>[
|
|
21
|
-
...params.plugins || [],
|
|
22
|
-
...createDefaultFilterOutRecordPlugins(),
|
|
23
|
-
createSyncSystemHandlerOnRequestPlugin({
|
|
24
|
-
getDocumentClient: params.getDocumentClient,
|
|
25
|
-
getEventBridgeClient: params.getEventBridgeClient,
|
|
26
|
-
system
|
|
27
|
-
})
|
|
28
|
-
]
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
export { createSyncSystem };
|
|
32
|
-
|
|
33
|
-
//# sourceMappingURL=createSyncSystem.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sync/createSyncSystem.js","sources":["../../src/sync/createSyncSystem.ts"],"sourcesContent":["import type { Plugin } from \"@webiny/plugins/types.js\";\nimport type { IGetEventBridgeCallable, ISystem } from \"./types.js\";\nimport { validateSystemInput } from \"./utils/validateSystemInput.js\";\nimport type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport type { PossiblyUndefinedProperties } from \"@webiny/api/types.js\";\nimport { createSyncSystemHandlerOnRequestPlugin } from \"./requestPlugin.js\";\nimport type { FilterOutRecordPlugin } from \"./plugins/FilterOutRecordPlugin.js\";\nimport { createDefaultFilterOutRecordPlugins } from \"./filter/createDefaultFilterOutRecordPlugins.js\";\n\nexport type IAllowedPlugins = FilterOutRecordPlugin;\n\nexport interface ICreateSyncSystemParams {\n getDocumentClient(): Pick<DynamoDBDocument, \"send\">;\n getEventBridgeClient: IGetEventBridgeCallable;\n system: PossiblyUndefinedProperties<Omit<ISystem, \"name\">>;\n plugins?: IAllowedPlugins[];\n}\n\nexport interface ICreateSyncSystemResponse {\n plugins(): Plugin[];\n}\n\nconst emptyResponse: ICreateSyncSystemResponse = {\n plugins(): Plugin[] {\n return [];\n }\n};\n\nexport const createSyncSystem = (params: ICreateSyncSystemParams): ICreateSyncSystemResponse => {\n const { system, error } = validateSystemInput(params.system);\n /**\n * We do not want to throw any errors. We will log them and just return a function which returns empty array as plugins.\n */\n if (error) {\n console.error(error);\n return emptyResponse;\n } else if (!system) {\n console.error(\"Sync System: No system provided. Sync System will not be attached.\");\n return emptyResponse;\n }\n\n return {\n plugins: () => {\n return [\n ...(params.plugins || []),\n ...createDefaultFilterOutRecordPlugins(),\n createSyncSystemHandlerOnRequestPlugin({\n getDocumentClient: params.getDocumentClient,\n getEventBridgeClient: params.getEventBridgeClient,\n system\n })\n ];\n }\n };\n};\n"],"names":["emptyResponse","createSyncSystem","params","system","error","validateSystemInput","console","createDefaultFilterOutRecordPlugins","createSyncSystemHandlerOnRequestPlugin"],"mappings":";;;AAsBA,MAAMA,gBAA2C;IAC7C;QACI,OAAO,EAAE;IACb;AACJ;AAEO,MAAMC,mBAAmB,CAACC;IAC7B,MAAM,EAAEC,MAAM,EAAEC,KAAK,EAAE,GAAGC,oBAAoBH,OAAO,MAAM;IAI3D,IAAIE,OAAO;QACPE,QAAQ,KAAK,CAACF;QACd,OAAOJ;IACX;IAAO,IAAI,CAACG,QAAQ;QAChBG,QAAQ,KAAK,CAAC;QACd,OAAON;IACX;IAEA,OAAO;QACH,SAAS,IACE;mBACCE,OAAO,OAAO,IAAI,EAAE;mBACrBK;gBACHC,uCAAuC;oBACnC,mBAAmBN,OAAO,iBAAiB;oBAC3C,sBAAsBA,OAAO,oBAAoB;oBACjDC;gBACJ;aACH;IAET;AACJ"}
|
package/sync/requestPlugin.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb/index.js";
|
|
2
|
-
import type { ICommandConverter, IGetEventBridgeCallable, ISystem } from "../sync/types.js";
|
|
3
|
-
export interface ICreateSyncSystemHandlerOnRequestPluginParams {
|
|
4
|
-
getDocumentClient(): Pick<DynamoDBDocument, "send">;
|
|
5
|
-
getEventBridgeClient: IGetEventBridgeCallable;
|
|
6
|
-
system: ISystem;
|
|
7
|
-
commandConverters?: ICommandConverter[];
|
|
8
|
-
}
|
|
9
|
-
export declare const createSyncSystemHandlerOnRequestPlugin: (params: ICreateSyncSystemHandlerOnRequestPluginParams) => import("@webiny/handler").HandlerOnRequestPlugin<import("@webiny/handler/types.js").Context>;
|
package/sync/requestPlugin.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { createHandlerOnRequest } from "@webiny/handler";
|
|
2
|
-
import { getManifest } from "./utils/manifest.js";
|
|
3
|
-
import { attachToDynamoDbDocument } from "./attachToDynamoDbDocument.js";
|
|
4
|
-
import { createSendDataToEventBridgeOnRequestEnd } from "./createSendDataToEventBridgeOnRequestEnd.js";
|
|
5
|
-
import { createHandler } from "./createHandler.js";
|
|
6
|
-
import { convertException } from "@webiny/utils/exception.js";
|
|
7
|
-
const createSyncSystemHandlerOnRequestPlugin = (params)=>createHandlerOnRequest(async (_, __, context)=>{
|
|
8
|
-
const { data: manifest, error } = await getManifest();
|
|
9
|
-
if (error) {
|
|
10
|
-
if ("true" !== process.env.DEBUG) return;
|
|
11
|
-
console.error("Error happened when fetching manifest.");
|
|
12
|
-
console.log(JSON.stringify({
|
|
13
|
-
error: convertException(error)
|
|
14
|
-
}));
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
if (!manifest?.sync?.region) {
|
|
18
|
-
if ("true" !== process.env.DEBUG) return;
|
|
19
|
-
console.error("There is no manifest.");
|
|
20
|
-
console.log(JSON.stringify({
|
|
21
|
-
manifest
|
|
22
|
-
}));
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
const { handler } = createHandler({
|
|
26
|
-
getEventBridgeClient: ()=>params.getEventBridgeClient({
|
|
27
|
-
region: manifest.sync.region
|
|
28
|
-
}),
|
|
29
|
-
system: params.system,
|
|
30
|
-
manifest,
|
|
31
|
-
commandConverters: params.commandConverters,
|
|
32
|
-
getPlugins: ()=>context.plugins
|
|
33
|
-
});
|
|
34
|
-
attachToDynamoDbDocument({
|
|
35
|
-
handler
|
|
36
|
-
});
|
|
37
|
-
context.plugins.register([
|
|
38
|
-
createSendDataToEventBridgeOnRequestEnd(handler)
|
|
39
|
-
]);
|
|
40
|
-
});
|
|
41
|
-
export { createSyncSystemHandlerOnRequestPlugin };
|
|
42
|
-
|
|
43
|
-
//# sourceMappingURL=requestPlugin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sync/requestPlugin.js","sources":["../../src/sync/requestPlugin.ts"],"sourcesContent":["import type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport type { ICommandConverter, IGetEventBridgeCallable, ISystem } from \"~/sync/types.js\";\nimport { createHandlerOnRequest } from \"@webiny/handler\";\nimport { getManifest } from \"~/sync/utils/manifest.js\";\nimport { attachToDynamoDbDocument } from \"~/sync/attachToDynamoDbDocument.js\";\nimport { createSendDataToEventBridgeOnRequestEnd } from \"~/sync/createSendDataToEventBridgeOnRequestEnd.js\";\nimport { createHandler } from \"./createHandler.js\";\nimport { convertException } from \"@webiny/utils/exception.js\";\n\nexport interface ICreateSyncSystemHandlerOnRequestPluginParams {\n getDocumentClient(): Pick<DynamoDBDocument, \"send\">;\n getEventBridgeClient: IGetEventBridgeCallable;\n system: ISystem;\n commandConverters?: ICommandConverter[];\n}\n\nexport const createSyncSystemHandlerOnRequestPlugin = (\n params: ICreateSyncSystemHandlerOnRequestPluginParams\n) => {\n return createHandlerOnRequest(async (_, __, context) => {\n const { data: manifest, error } = await getManifest();\n if (error) {\n if (process.env.DEBUG !== \"true\") {\n return;\n }\n console.error(\"Error happened when fetching manifest.\");\n console.log(\n JSON.stringify({\n error: convertException(error)\n })\n );\n return;\n } else if (!manifest?.sync?.region) {\n if (process.env.DEBUG !== \"true\") {\n return;\n }\n console.error(\"There is no manifest.\");\n console.log(\n JSON.stringify({\n manifest\n })\n );\n return;\n }\n\n const { handler } = createHandler({\n getEventBridgeClient: () => {\n return params.getEventBridgeClient({\n region: manifest.sync.region\n });\n },\n system: params.system,\n manifest,\n commandConverters: params.commandConverters,\n getPlugins: () => {\n return context.plugins;\n }\n });\n\n attachToDynamoDbDocument({\n handler\n });\n context.plugins.register([\n /**\n * When request ends, send the data to the EventBridge.\n */\n createSendDataToEventBridgeOnRequestEnd(handler)\n ]);\n });\n};\n"],"names":["createSyncSystemHandlerOnRequestPlugin","params","createHandlerOnRequest","_","__","context","manifest","error","getManifest","process","console","JSON","convertException","handler","createHandler","attachToDynamoDbDocument","createSendDataToEventBridgeOnRequestEnd"],"mappings":";;;;;;AAgBO,MAAMA,yCAAyC,CAClDC,SAEOC,uBAAuB,OAAOC,GAAGC,IAAIC;QACxC,MAAM,EAAE,MAAMC,QAAQ,EAAEC,KAAK,EAAE,GAAG,MAAMC;QACxC,IAAID,OAAO;YACP,IAAIE,AAAsB,WAAtBA,QAAQ,GAAG,CAAC,KAAK,EACjB;YAEJC,QAAQ,KAAK,CAAC;YACdA,QAAQ,GAAG,CACPC,KAAK,SAAS,CAAC;gBACX,OAAOC,iBAAiBL;YAC5B;YAEJ;QACJ;QAAO,IAAI,CAACD,UAAU,MAAM,QAAQ;YAChC,IAAIG,AAAsB,WAAtBA,QAAQ,GAAG,CAAC,KAAK,EACjB;YAEJC,QAAQ,KAAK,CAAC;YACdA,QAAQ,GAAG,CACPC,KAAK,SAAS,CAAC;gBACXL;YACJ;YAEJ;QACJ;QAEA,MAAM,EAAEO,OAAO,EAAE,GAAGC,cAAc;YAC9B,sBAAsB,IACXb,OAAO,oBAAoB,CAAC;oBAC/B,QAAQK,SAAS,IAAI,CAAC,MAAM;gBAChC;YAEJ,QAAQL,OAAO,MAAM;YACrBK;YACA,mBAAmBL,OAAO,iBAAiB;YAC3C,YAAY,IACDI,QAAQ,OAAO;QAE9B;QAEAU,yBAAyB;YACrBF;QACJ;QACAR,QAAQ,OAAO,CAAC,QAAQ,CAAC;YAIrBW,wCAAwCH;SAC3C;IACL"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { CreateHandlerParams } from "@webiny/handler-aws/raw/index.js";
|
|
2
|
-
import type { Plugin } from "@webiny/plugins/types.js";
|
|
3
|
-
import type { S3Client, S3ClientConfig } from "@webiny/aws-sdk/client-s3/index.js";
|
|
4
|
-
import { type CognitoIdentityProvider, type CognitoIdentityProviderClientConfig } from "@webiny/aws-sdk/client-cognito-identity-provider/index.js";
|
|
5
|
-
export type IAllowedWorkerHandlerPlugins = Plugin[];
|
|
6
|
-
export interface IWorkerHandlerParams extends Omit<CreateHandlerParams, "plugins"> {
|
|
7
|
-
plugins?: IAllowedWorkerHandlerPlugins[];
|
|
8
|
-
createS3Client: (params: S3ClientConfig) => Pick<S3Client, "send">;
|
|
9
|
-
createCognitoIdentityProviderClient(input: CognitoIdentityProviderClientConfig): Pick<CognitoIdentityProvider, "send">;
|
|
10
|
-
}
|
|
11
|
-
export declare const createWorkerHandler: (params: IWorkerHandlerParams) => import("@webiny/handler-aws/raw/index.js").HandlerCallable<any, import("aws-lambda").APIGatewayProxyResult>;
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { createHandler } from "@webiny/handler-aws/raw/index.js";
|
|
2
|
-
import { createEventHandlerPlugin } from "./handler/eventHandler.js";
|
|
3
|
-
import { PluginsContainer } from "@webiny/plugins/PluginsContainer.js";
|
|
4
|
-
import { createCopyFileAction } from "./actions/copyFile/copyFileAction.js";
|
|
5
|
-
import { createDeleteFileAction } from "./actions/deleteFile/deleteFileAction.js";
|
|
6
|
-
import { createCreateUserAction } from "./actions/createUser/createUserAction.js";
|
|
7
|
-
import { createUpdateUserAction } from "./actions/updateUser/updateUserAction.js";
|
|
8
|
-
import { createDeleteUserAction } from "./actions/deleteUser/deleteUserAction.js";
|
|
9
|
-
const createWorkerHandler = (params)=>{
|
|
10
|
-
const { createS3Client, createCognitoIdentityProviderClient } = params;
|
|
11
|
-
const plugins = new PluginsContainer(params.plugins || []);
|
|
12
|
-
plugins.register(createCopyFileAction({
|
|
13
|
-
createS3Client
|
|
14
|
-
}));
|
|
15
|
-
plugins.register(createDeleteFileAction({
|
|
16
|
-
createS3Client
|
|
17
|
-
}));
|
|
18
|
-
plugins.register(createCreateUserAction({
|
|
19
|
-
createCognitoProvider: createCognitoIdentityProviderClient
|
|
20
|
-
}));
|
|
21
|
-
plugins.register(createUpdateUserAction({
|
|
22
|
-
createCognitoProvider: createCognitoIdentityProviderClient
|
|
23
|
-
}));
|
|
24
|
-
plugins.register(createDeleteUserAction({
|
|
25
|
-
createCognitoProvider: createCognitoIdentityProviderClient
|
|
26
|
-
}));
|
|
27
|
-
plugins.register(createEventHandlerPlugin());
|
|
28
|
-
return createHandler({
|
|
29
|
-
...params,
|
|
30
|
-
plugins
|
|
31
|
-
});
|
|
32
|
-
};
|
|
33
|
-
export { createWorkerHandler };
|
|
34
|
-
|
|
35
|
-
//# sourceMappingURL=createWorkerHandler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worker/createWorkerHandler.js","sources":["../../src/worker/createWorkerHandler.ts"],"sourcesContent":["import type { CreateHandlerParams } from \"@webiny/handler-aws/raw/index.js\";\nimport { createHandler } from \"@webiny/handler-aws/raw/index.js\";\nimport { createEventHandlerPlugin } from \"./handler/eventHandler.js\";\nimport { PluginsContainer } from \"@webiny/plugins/PluginsContainer.js\";\nimport type { Plugin } from \"@webiny/plugins/types.js\";\nimport { createCopyFileAction } from \"~/worker/actions/copyFile/copyFileAction.js\";\nimport { createDeleteFileAction } from \"~/worker/actions/deleteFile/deleteFileAction.js\";\nimport type { S3Client, S3ClientConfig } from \"@webiny/aws-sdk/client-s3/index.js\";\nimport { createCreateUserAction } from \"~/worker/actions/createUser/createUserAction.js\";\nimport { createUpdateUserAction } from \"~/worker/actions/updateUser/updateUserAction.js\";\nimport {\n type CognitoIdentityProvider,\n type CognitoIdentityProviderClientConfig\n} from \"@webiny/aws-sdk/client-cognito-identity-provider/index.js\";\nimport { createDeleteUserAction } from \"~/worker/actions/deleteUser/deleteUserAction.js\";\n\nexport type IAllowedWorkerHandlerPlugins = Plugin[];\n\nexport interface IWorkerHandlerParams extends Omit<CreateHandlerParams, \"plugins\"> {\n plugins?: IAllowedWorkerHandlerPlugins[];\n createS3Client: (params: S3ClientConfig) => Pick<S3Client, \"send\">;\n createCognitoIdentityProviderClient(\n input: CognitoIdentityProviderClientConfig\n ): Pick<CognitoIdentityProvider, \"send\">;\n}\n\nexport const createWorkerHandler = (params: IWorkerHandlerParams) => {\n const { createS3Client, createCognitoIdentityProviderClient } = params;\n const plugins = new PluginsContainer(params.plugins || []);\n\n /**\n * Default action plugins are registered here.\n */\n plugins.register(\n createCopyFileAction({\n createS3Client\n })\n );\n plugins.register(\n createDeleteFileAction({\n createS3Client\n })\n );\n plugins.register(\n createCreateUserAction({\n createCognitoProvider: createCognitoIdentityProviderClient\n })\n );\n plugins.register(\n createUpdateUserAction({\n createCognitoProvider: createCognitoIdentityProviderClient\n })\n );\n plugins.register(\n createDeleteUserAction({\n createCognitoProvider: createCognitoIdentityProviderClient\n })\n );\n\n plugins.register(createEventHandlerPlugin());\n return createHandler({\n ...params,\n plugins\n });\n};\n"],"names":["createWorkerHandler","params","createS3Client","createCognitoIdentityProviderClient","plugins","PluginsContainer","createCopyFileAction","createDeleteFileAction","createCreateUserAction","createUpdateUserAction","createDeleteUserAction","createEventHandlerPlugin","createHandler"],"mappings":";;;;;;;;AA0BO,MAAMA,sBAAsB,CAACC;IAChC,MAAM,EAAEC,cAAc,EAAEC,mCAAmC,EAAE,GAAGF;IAChE,MAAMG,UAAU,IAAIC,iBAAiBJ,OAAO,OAAO,IAAI,EAAE;IAKzDG,QAAQ,QAAQ,CACZE,qBAAqB;QACjBJ;IACJ;IAEJE,QAAQ,QAAQ,CACZG,uBAAuB;QACnBL;IACJ;IAEJE,QAAQ,QAAQ,CACZI,uBAAuB;QACnB,uBAAuBL;IAC3B;IAEJC,QAAQ,QAAQ,CACZK,uBAAuB;QACnB,uBAAuBN;IAC3B;IAEJC,QAAQ,QAAQ,CACZM,uBAAuB;QACnB,uBAAuBP;IAC3B;IAGJC,QAAQ,QAAQ,CAACO;IACjB,OAAOC,cAAc;QACjB,GAAGX,MAAM;QACTG;IACJ;AACJ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const createEventHandlerPlugin: () => import("@webiny/handler-aws/raw/index.js").RawEventHandler<unknown, import("@webiny/handler/types.js").Context, any>;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { convertException } from "@webiny/utils";
|
|
2
|
-
import { WorkerActionHandler } from "./WorkerActionHandler.js";
|
|
3
|
-
import { createEventHandler } from "@webiny/handler-aws/raw/index.js";
|
|
4
|
-
import { WorkerActionPlugin } from "../plugins/WorkerActionPlugin.js";
|
|
5
|
-
const createEventHandlerPlugin = ()=>{
|
|
6
|
-
const plugin = createEventHandler(async ({ payload, context })=>{
|
|
7
|
-
const handler = new WorkerActionHandler({
|
|
8
|
-
plugins: context.plugins.byType(WorkerActionPlugin.type)
|
|
9
|
-
});
|
|
10
|
-
try {
|
|
11
|
-
await handler.handle(payload);
|
|
12
|
-
} catch (ex) {
|
|
13
|
-
console.error("Error while handling action.");
|
|
14
|
-
console.log(convertException(ex));
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
plugin.name = "sync.worker.eventHandler";
|
|
18
|
-
return plugin;
|
|
19
|
-
};
|
|
20
|
-
export { createEventHandlerPlugin };
|
|
21
|
-
|
|
22
|
-
//# sourceMappingURL=eventHandler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worker/handler/eventHandler.js","sources":["../../../src/worker/handler/eventHandler.ts"],"sourcesContent":["import { convertException } from \"@webiny/utils\";\nimport { WorkerActionHandler } from \"./WorkerActionHandler.js\";\nimport { createEventHandler } from \"@webiny/handler-aws/raw/index.js\";\nimport { WorkerActionPlugin } from \"../plugins/WorkerActionPlugin.js\";\n\nexport const createEventHandlerPlugin = () => {\n const plugin = createEventHandler<unknown>(async ({ payload, context }) => {\n const handler = new WorkerActionHandler({\n plugins: context.plugins.byType<WorkerActionPlugin>(WorkerActionPlugin.type)\n });\n\n try {\n await handler.handle(payload);\n } catch (ex) {\n console.error(\"Error while handling action.\");\n console.log(convertException(ex));\n }\n });\n\n plugin.name = `sync.worker.eventHandler`;\n\n return plugin;\n};\n"],"names":["createEventHandlerPlugin","plugin","createEventHandler","payload","context","handler","WorkerActionHandler","WorkerActionPlugin","ex","console","convertException"],"mappings":";;;;AAKO,MAAMA,2BAA2B;IACpC,MAAMC,SAASC,mBAA4B,OAAO,EAAEC,OAAO,EAAEC,OAAO,EAAE;QAClE,MAAMC,UAAU,IAAIC,oBAAoB;YACpC,SAASF,QAAQ,OAAO,CAAC,MAAM,CAAqBG,mBAAmB,IAAI;QAC/E;QAEA,IAAI;YACA,MAAMF,QAAQ,MAAM,CAACF;QACzB,EAAE,OAAOK,IAAI;YACTC,QAAQ,KAAK,CAAC;YACdA,QAAQ,GAAG,CAACC,iBAAiBF;QACjC;IACJ;IAEAP,OAAO,IAAI,GAAG;IAEd,OAAOA;AACX"}
|