@webiny/api-sync-system 6.4.5-beta.0 → 6.6.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/index.d.ts +11 -3
  2. package/index.js +8 -3
  3. package/package.json +15 -11
  4. package/resolver/SyncResolverConfig.d.ts +17 -0
  5. package/resolver/SyncResolverConfig.js +5 -0
  6. package/resolver/SyncResolverConfig.js.map +1 -0
  7. package/resolver/SyncResolverLambdaHandler.d.ts +14 -0
  8. package/resolver/SyncResolverLambdaHandler.js +159 -0
  9. package/resolver/SyncResolverLambdaHandler.js.map +1 -0
  10. package/resolver/app/validation/body.d.ts +5 -5
  11. package/resolver/app/validation/detail.d.ts +5 -5
  12. package/resolver/app/validation/event.d.ts +5 -5
  13. package/sync/ApiGatewaySyncDecorator.d.ts +14 -0
  14. package/sync/ApiGatewaySyncDecorator.js +49 -0
  15. package/sync/ApiGatewaySyncDecorator.js.map +1 -0
  16. package/sync/SyncSystemConfig.d.ts +11 -0
  17. package/sync/SyncSystemConfig.js +5 -0
  18. package/sync/SyncSystemConfig.js.map +1 -0
  19. package/sync/utils/manifest.d.ts +2 -6
  20. package/sync/utils/manifest.js +2 -4
  21. package/sync/utils/manifest.js.map +1 -1
  22. package/types.d.ts +0 -2
  23. package/types.js.map +1 -1
  24. package/worker/SyncWorkerConfig.d.ts +9 -0
  25. package/worker/SyncWorkerConfig.js +5 -0
  26. package/worker/SyncWorkerConfig.js.map +1 -0
  27. package/worker/SyncWorkerEventHandler.d.ts +14 -0
  28. package/worker/SyncWorkerEventHandler.js +5 -0
  29. package/worker/SyncWorkerEventHandler.js.map +1 -0
  30. package/worker/SyncWorkerEventType.d.ts +10 -0
  31. package/worker/SyncWorkerEventType.js +24 -0
  32. package/worker/SyncWorkerEventType.js.map +1 -0
  33. package/worker/SyncWorkerLambdaHandler.d.ts +13 -0
  34. package/worker/SyncWorkerLambdaHandler.js +61 -0
  35. package/worker/SyncWorkerLambdaHandler.js.map +1 -0
  36. package/resolver/createEventHandlerPlugin.d.ts +0 -11
  37. package/resolver/createEventHandlerPlugin.js +0 -91
  38. package/resolver/createEventHandlerPlugin.js.map +0 -1
  39. package/resolver/createResolverHandler.d.ts +0 -21
  40. package/resolver/createResolverHandler.js +0 -64
  41. package/resolver/createResolverHandler.js.map +0 -1
  42. package/sync/createSendDataToEventBridgeOnRequestEnd.d.ts +0 -2
  43. package/sync/createSendDataToEventBridgeOnRequestEnd.js +0 -39
  44. package/sync/createSendDataToEventBridgeOnRequestEnd.js.map +0 -1
  45. package/sync/createSyncSystem.d.ts +0 -16
  46. package/sync/createSyncSystem.js +0 -33
  47. package/sync/createSyncSystem.js.map +0 -1
  48. package/sync/requestPlugin.d.ts +0 -9
  49. package/sync/requestPlugin.js +0 -43
  50. package/sync/requestPlugin.js.map +0 -1
  51. package/worker/createWorkerHandler.d.ts +0 -11
  52. package/worker/createWorkerHandler.js +0 -35
  53. package/worker/createWorkerHandler.js.map +0 -1
  54. package/worker/handler/eventHandler.d.ts +0 -1
  55. package/worker/handler/eventHandler.js +0 -22
  56. package/worker/handler/eventHandler.js.map +0 -1
@@ -0,0 +1,5 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+ const SyncWorkerEventHandler = createAbstraction("SyncWorkerEventHandler");
3
+ export { SyncWorkerEventHandler };
4
+
5
+ //# sourceMappingURL=SyncWorkerEventHandler.js.map
@@ -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,2 +0,0 @@
1
- import type { IHandler } from "./types.js";
2
- export declare const createSendDataToEventBridgeOnRequestEnd: (handler: IHandler) => (import("@webiny/handler").OnRequestResponseSendPlugin | import("@webiny/handler").OnRequestTimeoutPlugin)[];
@@ -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;
@@ -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"}
@@ -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>;
@@ -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(params);
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(params);\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,YAAYP;QACpD,IAAIM,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>;