@mbc-cqrs-serverless/core 0.1.11-beta.0 → 0.1.12-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.controller.d.ts +8 -0
- package/dist/app.controller.js +44 -0
- package/dist/app.controller.js.map +1 -0
- package/dist/app.module-definition.d.ts +2 -0
- package/dist/app.module-definition.js +9 -0
- package/dist/app.module-definition.js.map +1 -0
- package/dist/app.module.d.ts +5 -0
- package/dist/app.module.js +76 -0
- package/dist/app.module.js.map +1 -0
- package/dist/app.service.d.ts +3 -0
- package/dist/app.service.js +20 -0
- package/dist/app.service.js.map +1 -0
- package/dist/bootstrap.d.ts +3 -0
- package/dist/bootstrap.js +118 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/command-events/data-sync.module.d.ts +2 -0
- package/dist/command-events/data-sync.module.js +21 -0
- package/dist/command-events/data-sync.module.js.map +1 -0
- package/dist/command-events/data-sync.new.event.d.ts +16 -0
- package/dist/command-events/data-sync.new.event.handler.d.ts +14 -0
- package/dist/command-events/data-sync.new.event.handler.js +47 -0
- package/dist/command-events/data-sync.new.event.handler.js.map +1 -0
- package/dist/command-events/data-sync.new.event.js +20 -0
- package/dist/command-events/data-sync.new.event.js.map +1 -0
- package/dist/command-events/data-sync.sfn.event.d.ts +24 -0
- package/dist/command-events/data-sync.sfn.event.handler.d.ts +11 -0
- package/dist/command-events/data-sync.sfn.event.handler.js +38 -0
- package/dist/command-events/data-sync.sfn.event.handler.js.map +1 -0
- package/dist/command-events/data-sync.sfn.event.js +57 -0
- package/dist/command-events/data-sync.sfn.event.js.map +1 -0
- package/dist/command-events/index.d.ts +6 -0
- package/dist/command-events/index.js +23 -0
- package/dist/command-events/index.js.map +1 -0
- package/dist/command-events/sfn-name.enum.d.ts +10 -0
- package/dist/command-events/sfn-name.enum.js +15 -0
- package/dist/command-events/sfn-name.enum.js.map +1 -0
- package/dist/commands/command.event.handler.d.ts +23 -0
- package/dist/commands/command.event.handler.js +143 -0
- package/dist/commands/command.event.handler.js.map +1 -0
- package/dist/commands/command.module-definition.d.ts +2 -0
- package/dist/commands/command.module-definition.js +7 -0
- package/dist/commands/command.module-definition.js.map +1 -0
- package/dist/commands/command.module.d.ts +5 -0
- package/dist/commands/command.module.js +46 -0
- package/dist/commands/command.module.js.map +1 -0
- package/dist/commands/command.service.d.ts +40 -0
- package/dist/commands/command.service.js +249 -0
- package/dist/commands/command.service.js.map +1 -0
- package/dist/commands/data.service.d.ts +25 -0
- package/dist/commands/data.service.js +85 -0
- package/dist/commands/data.service.js.map +1 -0
- package/dist/commands/enums/index.d.ts +1 -0
- package/dist/commands/enums/index.js +18 -0
- package/dist/commands/enums/index.js.map +1 -0
- package/dist/commands/enums/status.enum.d.ts +6 -0
- package/dist/commands/enums/status.enum.js +14 -0
- package/dist/commands/enums/status.enum.js.map +1 -0
- package/dist/commands/handlers/data-sync-dds.handler.d.ts +10 -0
- package/dist/commands/handlers/data-sync-dds.handler.js +35 -0
- package/dist/commands/handlers/data-sync-dds.handler.js.map +1 -0
- package/dist/commands/handlers/index.d.ts +1 -0
- package/dist/commands/handlers/index.js +18 -0
- package/dist/commands/handlers/index.js.map +1 -0
- package/dist/commands/history.service.d.ts +17 -0
- package/dist/commands/history.service.js +57 -0
- package/dist/commands/history.service.js.map +1 -0
- package/dist/commands/index.d.ts +7 -0
- package/dist/commands/index.js +24 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/constants/dynamodb-table.d.ts +3 -0
- package/dist/constants/dynamodb-table.js +7 -0
- package/dist/constants/dynamodb-table.js.map +1 -0
- package/dist/constants/index.d.ts +5 -0
- package/dist/constants/index.js +22 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/key.d.ts +4 -0
- package/dist/constants/key.js +8 -0
- package/dist/constants/key.js.map +1 -0
- package/dist/constants/role.d.ts +1 -0
- package/dist/constants/role.js +5 -0
- package/dist/constants/role.js.map +1 -0
- package/dist/constants/sqs-queue.d.ts +1 -0
- package/dist/constants/sqs-queue.js +5 -0
- package/dist/constants/sqs-queue.js.map +1 -0
- package/dist/constants/tenant.d.ts +2 -0
- package/dist/constants/tenant.js +6 -0
- package/dist/constants/tenant.js.map +1 -0
- package/dist/context/index.d.ts +2 -0
- package/dist/context/index.js +19 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/invoke.d.ts +73 -0
- package/dist/context/invoke.js +57 -0
- package/dist/context/invoke.js.map +1 -0
- package/dist/context/user.d.ts +13 -0
- package/dist/context/user.js +36 -0
- package/dist/context/user.js.map +1 -0
- package/dist/data-store/data-store.module.d.ts +2 -0
- package/dist/data-store/data-store.module.js +23 -0
- package/dist/data-store/data-store.module.js.map +1 -0
- package/dist/data-store/dynamodb.service.d.ts +36 -0
- package/dist/data-store/dynamodb.service.js +317 -0
- package/dist/data-store/dynamodb.service.js.map +1 -0
- package/dist/data-store/index.d.ts +3 -0
- package/dist/data-store/index.js +20 -0
- package/dist/data-store/index.js.map +1 -0
- package/dist/data-store/s3.service.d.ts +16 -0
- package/dist/data-store/s3.service.js +55 -0
- package/dist/data-store/s3.service.js.map +1 -0
- package/dist/decorators/auth.decorator.d.ts +7 -0
- package/dist/decorators/auth.decorator.js +29 -0
- package/dist/decorators/auth.decorator.js.map +1 -0
- package/dist/decorators/constants.d.ts +5 -0
- package/dist/decorators/constants.js +9 -0
- package/dist/decorators/constants.js.map +1 -0
- package/dist/decorators/context.decorator.d.ts +1 -0
- package/dist/decorators/context.decorator.js +9 -0
- package/dist/decorators/context.decorator.js.map +1 -0
- package/dist/decorators/data-sync-handler.decorator.d.ts +2 -0
- package/dist/decorators/data-sync-handler.decorator.js +12 -0
- package/dist/decorators/data-sync-handler.decorator.js.map +1 -0
- package/dist/decorators/event-factory.decorator.d.ts +2 -0
- package/dist/decorators/event-factory.decorator.js +12 -0
- package/dist/decorators/event-factory.decorator.js.map +1 -0
- package/dist/decorators/event-handler.decorator.d.ts +3 -0
- package/dist/decorators/event-handler.decorator.js +16 -0
- package/dist/decorators/event-handler.decorator.js.map +1 -0
- package/dist/decorators/index.d.ts +8 -0
- package/dist/decorators/index.js +25 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/decorators/roles.decorator.d.ts +1 -0
- package/dist/decorators/roles.decorator.js +8 -0
- package/dist/decorators/roles.decorator.js.map +1 -0
- package/dist/decorators/swagger-response.decorator.d.ts +2 -0
- package/dist/decorators/swagger-response.decorator.js +10 -0
- package/dist/decorators/swagger-response.decorator.js.map +1 -0
- package/dist/env.validation.d.ts +30 -0
- package/dist/env.validation.js +132 -0
- package/dist/env.validation.js.map +1 -0
- package/dist/events/default-event-factory.d.ts +10 -0
- package/dist/events/default-event-factory.js +51 -0
- package/dist/events/default-event-factory.js.map +1 -0
- package/dist/events/event-bus.d.ts +16 -0
- package/dist/events/event-bus.js +70 -0
- package/dist/events/event-bus.js.map +1 -0
- package/dist/events/event-metadata.interface.d.ts +3 -0
- package/dist/events/event-metadata.interface.js +3 -0
- package/dist/events/event-metadata.interface.js.map +1 -0
- package/dist/events/event.controller.d.ts +14 -0
- package/dist/events/event.controller.js +131 -0
- package/dist/events/event.controller.js.map +1 -0
- package/dist/events/event.module.d.ts +12 -0
- package/dist/events/event.module.js +48 -0
- package/dist/events/event.module.js.map +1 -0
- package/dist/events/event.services.d.ts +21 -0
- package/dist/events/event.services.js +72 -0
- package/dist/events/event.services.js.map +1 -0
- package/dist/events/index.d.ts +6 -0
- package/dist/events/index.js +23 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/mocks/event-handler.mock.d.ts +8 -0
- package/dist/events/mocks/event-handler.mock.js +27 -0
- package/dist/events/mocks/event-handler.mock.js.map +1 -0
- package/dist/events/mocks/other-event-handler.mock.d.ts +8 -0
- package/dist/events/mocks/other-event-handler.mock.js +27 -0
- package/dist/events/mocks/other-event-handler.mock.js.map +1 -0
- package/dist/exceptions/event-not-found.exception.d.ts +3 -0
- package/dist/exceptions/event-not-found.exception.js +10 -0
- package/dist/exceptions/event-not-found.exception.js.map +1 -0
- package/dist/exceptions/event-source.exeption.d.ts +3 -0
- package/dist/exceptions/event-source.exeption.js +10 -0
- package/dist/exceptions/event-source.exeption.js.map +1 -0
- package/dist/exceptions/index.d.ts +3 -0
- package/dist/exceptions/index.js +20 -0
- package/dist/exceptions/index.js.map +1 -0
- package/dist/exceptions/invalid-event-handler.exception.d.ts +3 -0
- package/dist/exceptions/invalid-event-handler.exception.js +10 -0
- package/dist/exceptions/invalid-event-handler.exception.js.map +1 -0
- package/dist/filters/dynamodb-exception.filter.d.ts +13 -0
- package/dist/filters/dynamodb-exception.filter.js +60 -0
- package/dist/filters/dynamodb-exception.filter.js.map +1 -0
- package/dist/filters/event-source-exception.filter.d.ts +4 -0
- package/dist/filters/event-source-exception.filter.js +19 -0
- package/dist/filters/event-source-exception.filter.js.map +1 -0
- package/dist/filters/index.d.ts +2 -0
- package/dist/filters/index.js +19 -0
- package/dist/filters/index.js.map +1 -0
- package/dist/guard/index.d.ts +1 -0
- package/dist/guard/index.js +18 -0
- package/dist/guard/index.js.map +1 -0
- package/dist/guard/roles.guard.d.ts +11 -0
- package/dist/guard/roles.guard.js +60 -0
- package/dist/guard/roles.guard.js.map +1 -0
- package/dist/helpers/datetime.d.ts +4 -0
- package/dist/helpers/datetime.js +47 -0
- package/dist/helpers/datetime.js.map +1 -0
- package/dist/helpers/event-type.d.ts +2 -0
- package/dist/helpers/event-type.js +26 -0
- package/dist/helpers/event-type.js.map +1 -0
- package/dist/helpers/index.d.ts +6 -0
- package/dist/helpers/index.js +26 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/helpers/key.d.ts +9 -0
- package/dist/helpers/key.js +44 -0
- package/dist/helpers/key.js.map +1 -0
- package/dist/helpers/object.d.ts +5 -0
- package/dist/helpers/object.js +51 -0
- package/dist/helpers/object.js.map +1 -0
- package/dist/helpers/source.d.ts +1 -0
- package/dist/helpers/source.js +8 -0
- package/dist/helpers/source.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/app-module-options.interface.d.ts +6 -0
- package/dist/interfaces/app-module-options.interface.js +3 -0
- package/dist/interfaces/app-module-options.interface.js.map +1 -0
- package/dist/interfaces/aws/index.d.ts +1 -0
- package/dist/interfaces/aws/index.js +18 -0
- package/dist/interfaces/aws/index.js.map +1 -0
- package/dist/interfaces/aws/step-function.interface.d.ts +27 -0
- package/dist/interfaces/aws/step-function.interface.js +3 -0
- package/dist/interfaces/aws/step-function.interface.js.map +1 -0
- package/dist/interfaces/command-input-model.interface.d.ts +19 -0
- package/dist/interfaces/command-input-model.interface.js +3 -0
- package/dist/interfaces/command-input-model.interface.js.map +1 -0
- package/dist/interfaces/command-model.interface.d.ts +12 -0
- package/dist/interfaces/command-model.interface.js +3 -0
- package/dist/interfaces/command-model.interface.js.map +1 -0
- package/dist/interfaces/command-module-options.interface.d.ts +8 -0
- package/dist/interfaces/command-module-options.interface.js +3 -0
- package/dist/interfaces/command-module-options.interface.js.map +1 -0
- package/dist/interfaces/command.dto.d.ts +15 -0
- package/dist/interfaces/command.dto.js +76 -0
- package/dist/interfaces/command.dto.js.map +1 -0
- package/dist/interfaces/command.entity.d.ts +26 -0
- package/dist/interfaces/command.entity.js +103 -0
- package/dist/interfaces/command.entity.js.map +1 -0
- package/dist/interfaces/command.options.interface.d.ts +6 -0
- package/dist/interfaces/command.options.interface.js +3 -0
- package/dist/interfaces/command.options.interface.js.map +1 -0
- package/dist/interfaces/data-list.entity.d.ts +7 -0
- package/dist/interfaces/data-list.entity.js +35 -0
- package/dist/interfaces/data-list.entity.js.map +1 -0
- package/dist/interfaces/data-model.interface.d.ts +5 -0
- package/dist/interfaces/data-model.interface.js +3 -0
- package/dist/interfaces/data-model.interface.js.map +1 -0
- package/dist/interfaces/data-sync-handler.interface.d.ts +6 -0
- package/dist/interfaces/data-sync-handler.interface.js +3 -0
- package/dist/interfaces/data-sync-handler.interface.js.map +1 -0
- package/dist/interfaces/data.entity.d.ts +28 -0
- package/dist/interfaces/data.entity.js +110 -0
- package/dist/interfaces/data.entity.js.map +1 -0
- package/dist/interfaces/ddb-update-item.interface.d.ts +19 -0
- package/dist/interfaces/ddb-update-item.interface.js +3 -0
- package/dist/interfaces/ddb-update-item.interface.js.map +1 -0
- package/dist/interfaces/detail-key.interface.d.ts +4 -0
- package/dist/interfaces/detail-key.interface.js +3 -0
- package/dist/interfaces/detail-key.interface.js.map +1 -0
- package/dist/interfaces/detail.dto.d.ts +5 -0
- package/dist/interfaces/detail.dto.js +28 -0
- package/dist/interfaces/detail.dto.js.map +1 -0
- package/dist/interfaces/event-factory.interface.d.ts +11 -0
- package/dist/interfaces/event-factory.interface.js +3 -0
- package/dist/interfaces/event-factory.interface.js.map +1 -0
- package/dist/interfaces/event-handler.interface.d.ts +4 -0
- package/dist/interfaces/event-handler.interface.js +3 -0
- package/dist/interfaces/event-handler.interface.js.map +1 -0
- package/dist/interfaces/event-raw.interface.d.ts +2 -0
- package/dist/interfaces/event-raw.interface.js +3 -0
- package/dist/interfaces/event-raw.interface.js.map +1 -0
- package/dist/interfaces/event.interface.d.ts +3 -0
- package/dist/interfaces/event.interface.js +3 -0
- package/dist/interfaces/event.interface.js.map +1 -0
- package/dist/interfaces/index.d.ts +21 -0
- package/dist/interfaces/index.js +38 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/interfaces/notification.interface.d.ts +17 -0
- package/dist/interfaces/notification.interface.js +3 -0
- package/dist/interfaces/notification.interface.js.map +1 -0
- package/dist/interfaces/paginate.dto.d.ts +5 -0
- package/dist/interfaces/paginate.dto.js +38 -0
- package/dist/interfaces/paginate.dto.js.map +1 -0
- package/dist/interfaces/search.dto.d.ts +8 -0
- package/dist/interfaces/search.dto.js +48 -0
- package/dist/interfaces/search.dto.js.map +1 -0
- package/dist/notifications/appsync.service.d.ts +13 -0
- package/dist/notifications/appsync.service.js +102 -0
- package/dist/notifications/appsync.service.js.map +1 -0
- package/dist/notifications/email.service.d.ts +11 -0
- package/dist/notifications/email.service.js +49 -0
- package/dist/notifications/email.service.js.map +1 -0
- package/dist/notifications/event/index.d.ts +2 -0
- package/dist/notifications/event/index.js +19 -0
- package/dist/notifications/event/index.js.map +1 -0
- package/dist/notifications/event/notification.event.d.ts +15 -0
- package/dist/notifications/event/notification.event.handler.d.ts +9 -0
- package/dist/notifications/event/notification.event.handler.js +34 -0
- package/dist/notifications/event/notification.event.handler.js.map +1 -0
- package/dist/notifications/event/notification.event.js +13 -0
- package/dist/notifications/event/notification.event.js.map +1 -0
- package/dist/notifications/index.d.ts +4 -0
- package/dist/notifications/index.js +21 -0
- package/dist/notifications/index.js.map +1 -0
- package/dist/notifications/notification.module.d.ts +2 -0
- package/dist/notifications/notification.module.js +24 -0
- package/dist/notifications/notification.module.js.map +1 -0
- package/dist/pipe/class.validation.pipe.d.ts +5 -0
- package/dist/pipe/class.validation.pipe.js +34 -0
- package/dist/pipe/class.validation.pipe.js.map +1 -0
- package/dist/pipe/index.d.ts +1 -0
- package/dist/pipe/index.js +18 -0
- package/dist/pipe/index.js.map +1 -0
- package/dist/queue/index.d.ts +3 -0
- package/dist/queue/index.js +20 -0
- package/dist/queue/index.js.map +1 -0
- package/dist/queue/queue.module.d.ts +2 -0
- package/dist/queue/queue.module.js +22 -0
- package/dist/queue/queue.module.js.map +1 -0
- package/dist/queue/sns.event.d.ts +3 -0
- package/dist/queue/sns.event.js +3 -0
- package/dist/queue/sns.event.js.map +1 -0
- package/dist/queue/sns.service.d.ts +13 -0
- package/dist/queue/sns.service.js +47 -0
- package/dist/queue/sns.service.js.map +1 -0
- package/dist/services/explorer.service.d.ts +20 -0
- package/dist/services/explorer.service.js +62 -0
- package/dist/services/explorer.service.js.map +1 -0
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.js +19 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/mocks/event-factory.mock.d.ts +3 -0
- package/dist/services/mocks/event-factory.mock.js +22 -0
- package/dist/services/mocks/event-factory.mock.js.map +1 -0
- package/dist/services/mocks/event-handler.mock.d.ts +7 -0
- package/dist/services/mocks/event-handler.mock.js +23 -0
- package/dist/services/mocks/event-handler.mock.js.map +1 -0
- package/dist/services/mocks/sync-data.handler.mock.d.ts +6 -0
- package/dist/services/mocks/sync-data.handler.mock.js +28 -0
- package/dist/services/mocks/sync-data.handler.mock.js.map +1 -0
- package/dist/services/request-logger.service.d.ts +15 -0
- package/dist/services/request-logger.service.js +89 -0
- package/dist/services/request-logger.service.js.map +1 -0
- package/dist/step-func/index.d.ts +2 -0
- package/dist/step-func/index.js +19 -0
- package/dist/step-func/index.js.map +1 -0
- package/dist/step-func/step-function.module.d.ts +2 -0
- package/dist/step-func/step-function.module.js +22 -0
- package/dist/step-func/step-function.module.js.map +1 -0
- package/dist/step-func/step-function.service.d.ts +11 -0
- package/dist/step-func/step-function.service.js +41 -0
- package/dist/step-func/step-function.service.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DataSyncHandler = void 0;
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
const constants_1 = require("./constants");
|
|
6
|
+
const DataSyncHandler = (commandTableName) => {
|
|
7
|
+
return (target) => {
|
|
8
|
+
Reflect.defineMetadata(constants_1.DATA_SYNC_HANDLER_METADATA, commandTableName, target);
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
exports.DataSyncHandler = DataSyncHandler;
|
|
12
|
+
//# sourceMappingURL=data-sync-handler.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-sync-handler.decorator.js","sourceRoot":"","sources":["../../src/decorators/data-sync-handler.decorator.ts"],"names":[],"mappings":";;;AAAA,4BAAyB;AAEzB,2CAAwD;AAEjD,MAAM,eAAe,GAAG,CAAC,gBAAwB,EAAkB,EAAE;IAC1E,OAAO,CAAC,MAAc,EAAE,EAAE;QACxB,OAAO,CAAC,cAAc,CAAC,sCAA0B,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAA;IAC9E,CAAC,CAAA;AACH,CAAC,CAAA;AAJY,QAAA,eAAe,mBAI3B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EventFactory = void 0;
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
const constants_1 = require("./constants");
|
|
6
|
+
const EventFactory = () => {
|
|
7
|
+
return (target) => {
|
|
8
|
+
Reflect.defineMetadata(constants_1.EVENT_FACTORY_METADATA, constants_1.EVENT_FACTORY_METADATA, target);
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
exports.EventFactory = EventFactory;
|
|
12
|
+
//# sourceMappingURL=event-factory.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-factory.decorator.js","sourceRoot":"","sources":["../../src/decorators/event-factory.decorator.ts"],"names":[],"mappings":";;;AAAA,4BAAyB;AAEzB,2CAAoD;AAE7C,MAAM,YAAY,GAAG,GAAmB,EAAE;IAC/C,OAAO,CAAC,MAAc,EAAE,EAAE;QACxB,OAAO,CAAC,cAAc,CACpB,kCAAsB,EACtB,kCAAsB,EACtB,MAAM,CACP,CAAA;IACH,CAAC,CAAA;AACH,CAAC,CAAA;AARY,QAAA,YAAY,gBAQxB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EventHandler = void 0;
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
const ulid_1 = require("ulid");
|
|
6
|
+
const constants_1 = require("./constants");
|
|
7
|
+
const EventHandler = (event) => {
|
|
8
|
+
return (target) => {
|
|
9
|
+
if (!Reflect.hasOwnMetadata(constants_1.EVENT_METADATA, event)) {
|
|
10
|
+
Reflect.defineMetadata(constants_1.EVENT_METADATA, { id: (0, ulid_1.ulid)() }, event);
|
|
11
|
+
}
|
|
12
|
+
Reflect.defineMetadata(constants_1.EVENT_HANDLER_METADATA, event, target);
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
exports.EventHandler = EventHandler;
|
|
16
|
+
//# sourceMappingURL=event-handler.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-handler.decorator.js","sourceRoot":"","sources":["../../src/decorators/event-handler.decorator.ts"],"names":[],"mappings":";;;AAAA,4BAAyB;AAEzB,+BAA2B;AAG3B,2CAAoE;AAE7D,MAAM,YAAY,GAAG,CAC1B,KAAgD,EAChC,EAAE;IAClB,OAAO,CAAC,MAAc,EAAE,EAAE;QACxB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,0BAAc,EAAE,KAAK,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,cAAc,CAAC,0BAAc,EAAE,EAAE,EAAE,EAAE,IAAA,WAAI,GAAE,EAAE,EAAE,KAAK,CAAC,CAAA;QAC/D,CAAC;QACD,OAAO,CAAC,cAAc,CAAC,kCAAsB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAC/D,CAAC,CAAA;AACH,CAAC,CAAA;AATY,QAAA,YAAY,gBASxB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './auth.decorator';
|
|
2
|
+
export * from './constants';
|
|
3
|
+
export * from './context.decorator';
|
|
4
|
+
export * from './data-sync-handler.decorator';
|
|
5
|
+
export * from './event-factory.decorator';
|
|
6
|
+
export * from './event-handler.decorator';
|
|
7
|
+
export * from './roles.decorator';
|
|
8
|
+
export * from './swagger-response.decorator';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./auth.decorator"), exports);
|
|
18
|
+
__exportStar(require("./constants"), exports);
|
|
19
|
+
__exportStar(require("./context.decorator"), exports);
|
|
20
|
+
__exportStar(require("./data-sync-handler.decorator"), exports);
|
|
21
|
+
__exportStar(require("./event-factory.decorator"), exports);
|
|
22
|
+
__exportStar(require("./event-handler.decorator"), exports);
|
|
23
|
+
__exportStar(require("./roles.decorator"), exports);
|
|
24
|
+
__exportStar(require("./swagger-response.decorator"), exports);
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAgC;AAChC,8CAA2B;AAC3B,sDAAmC;AACnC,gEAA6C;AAC7C,4DAAyC;AACzC,4DAAyC;AACzC,oDAAiC;AACjC,+DAA4C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const Roles: (...roles: string[]) => import("@nestjs/common").CustomDecorator<string>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Roles = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
const constants_1 = require("./constants");
|
|
6
|
+
const Roles = (...roles) => (0, common_1.SetMetadata)(constants_1.ROLE_METADATA, roles);
|
|
7
|
+
exports.Roles = Roles;
|
|
8
|
+
//# sourceMappingURL=roles.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roles.decorator.js","sourceRoot":"","sources":["../../src/decorators/roles.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA4C;AAE5C,2CAA2C;AAEpC,MAAM,KAAK,GAAG,CAAC,GAAG,KAAe,EAAE,EAAE,CAAC,IAAA,oBAAW,EAAC,yBAAa,EAAE,KAAK,CAAC,CAAA;AAAjE,QAAA,KAAK,SAA4D"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SwaggerResponse = void 0;
|
|
4
|
+
class HttpExceptionResponse {
|
|
5
|
+
}
|
|
6
|
+
function SwaggerResponse(ApiResponse, options = {}) {
|
|
7
|
+
return ApiResponse({ type: HttpExceptionResponse, ...options });
|
|
8
|
+
}
|
|
9
|
+
exports.SwaggerResponse = SwaggerResponse;
|
|
10
|
+
//# sourceMappingURL=swagger-response.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swagger-response.decorator.js","sourceRoot":"","sources":["../../src/decorators/swagger-response.decorator.ts"],"names":[],"mappings":";;;AAEA,MAAM,qBAAqB;CAW1B;AAED,SAAgB,eAAe,CAC7B,WAEqC,EACrC,UAA8B,EAAE;IAEhC,OAAO,WAAW,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,GAAG,OAAO,EAAE,CAAC,CAAA;AACjE,CAAC;AAPD,0CAOC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ClassConstructor } from 'class-transformer';
|
|
2
|
+
export declare enum Environment {
|
|
3
|
+
Local = "local",
|
|
4
|
+
Development = "dev",
|
|
5
|
+
Production = "prod",
|
|
6
|
+
Staging = "stg"
|
|
7
|
+
}
|
|
8
|
+
export declare class EnvironmentVariables {
|
|
9
|
+
NODE_ENV: Environment;
|
|
10
|
+
APP_NAME: string;
|
|
11
|
+
APP_PORT: number;
|
|
12
|
+
EVENT_SOURCE_DISABLED: boolean;
|
|
13
|
+
LOG_LEVEL: string;
|
|
14
|
+
DYNAMODB_ENDPOINT: string;
|
|
15
|
+
DYNAMODB_REGION: string;
|
|
16
|
+
ATTRIBUTE_LIMIT_SIZE: number;
|
|
17
|
+
S3_ENDPOINT: string;
|
|
18
|
+
S3_REGION: string;
|
|
19
|
+
S3_BUCKET_NAME: string;
|
|
20
|
+
SFN_ENDPOINT: string;
|
|
21
|
+
SFN_REGION: string;
|
|
22
|
+
SFN_COMMAND_ARN: string;
|
|
23
|
+
SNS_ENDPOINT: string;
|
|
24
|
+
SNS_REGION: string;
|
|
25
|
+
APPSYNC_ENDPOINT: string;
|
|
26
|
+
SES_ENDPOINT: string;
|
|
27
|
+
SES_REGION: string;
|
|
28
|
+
SES_FROM_EMAIL: string;
|
|
29
|
+
}
|
|
30
|
+
export declare function getValidateConfig<T extends EnvironmentVariables>(cls?: ClassConstructor<T>): (config: Record<string, unknown>) => EnvironmentVariables;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.getValidateConfig = exports.EnvironmentVariables = exports.Environment = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
var Environment;
|
|
16
|
+
(function (Environment) {
|
|
17
|
+
Environment["Local"] = "local";
|
|
18
|
+
Environment["Development"] = "dev";
|
|
19
|
+
Environment["Production"] = "prod";
|
|
20
|
+
Environment["Staging"] = "stg";
|
|
21
|
+
})(Environment || (exports.Environment = Environment = {}));
|
|
22
|
+
class EnvironmentVariables {
|
|
23
|
+
}
|
|
24
|
+
exports.EnvironmentVariables = EnvironmentVariables;
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, class_validator_1.IsEnum)(Environment),
|
|
27
|
+
__metadata("design:type", String)
|
|
28
|
+
], EnvironmentVariables.prototype, "NODE_ENV", void 0);
|
|
29
|
+
__decorate([
|
|
30
|
+
(0, class_validator_1.IsString)(),
|
|
31
|
+
__metadata("design:type", String)
|
|
32
|
+
], EnvironmentVariables.prototype, "APP_NAME", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
(0, class_validator_1.IsNumber)(),
|
|
35
|
+
(0, class_validator_1.IsOptional)(),
|
|
36
|
+
__metadata("design:type", Number)
|
|
37
|
+
], EnvironmentVariables.prototype, "APP_PORT", void 0);
|
|
38
|
+
__decorate([
|
|
39
|
+
(0, class_validator_1.IsBoolean)(),
|
|
40
|
+
__metadata("design:type", Boolean)
|
|
41
|
+
], EnvironmentVariables.prototype, "EVENT_SOURCE_DISABLED", void 0);
|
|
42
|
+
__decorate([
|
|
43
|
+
(0, class_validator_1.IsString)(),
|
|
44
|
+
__metadata("design:type", String)
|
|
45
|
+
], EnvironmentVariables.prototype, "LOG_LEVEL", void 0);
|
|
46
|
+
__decorate([
|
|
47
|
+
(0, class_validator_1.IsString)(),
|
|
48
|
+
(0, class_validator_1.IsOptional)(),
|
|
49
|
+
__metadata("design:type", String)
|
|
50
|
+
], EnvironmentVariables.prototype, "DYNAMODB_ENDPOINT", void 0);
|
|
51
|
+
__decorate([
|
|
52
|
+
(0, class_validator_1.IsOptional)(),
|
|
53
|
+
(0, class_validator_1.IsString)(),
|
|
54
|
+
__metadata("design:type", String)
|
|
55
|
+
], EnvironmentVariables.prototype, "DYNAMODB_REGION", void 0);
|
|
56
|
+
__decorate([
|
|
57
|
+
(0, class_validator_1.IsPositive)(),
|
|
58
|
+
__metadata("design:type", Number)
|
|
59
|
+
], EnvironmentVariables.prototype, "ATTRIBUTE_LIMIT_SIZE", void 0);
|
|
60
|
+
__decorate([
|
|
61
|
+
(0, class_validator_1.IsString)(),
|
|
62
|
+
(0, class_validator_1.IsOptional)(),
|
|
63
|
+
__metadata("design:type", String)
|
|
64
|
+
], EnvironmentVariables.prototype, "S3_ENDPOINT", void 0);
|
|
65
|
+
__decorate([
|
|
66
|
+
(0, class_validator_1.IsString)(),
|
|
67
|
+
(0, class_validator_1.IsOptional)(),
|
|
68
|
+
__metadata("design:type", String)
|
|
69
|
+
], EnvironmentVariables.prototype, "S3_REGION", void 0);
|
|
70
|
+
__decorate([
|
|
71
|
+
(0, class_validator_1.IsString)(),
|
|
72
|
+
__metadata("design:type", String)
|
|
73
|
+
], EnvironmentVariables.prototype, "S3_BUCKET_NAME", void 0);
|
|
74
|
+
__decorate([
|
|
75
|
+
(0, class_validator_1.IsString)(),
|
|
76
|
+
(0, class_validator_1.IsOptional)(),
|
|
77
|
+
__metadata("design:type", String)
|
|
78
|
+
], EnvironmentVariables.prototype, "SFN_ENDPOINT", void 0);
|
|
79
|
+
__decorate([
|
|
80
|
+
(0, class_validator_1.IsString)(),
|
|
81
|
+
(0, class_validator_1.IsOptional)(),
|
|
82
|
+
__metadata("design:type", String)
|
|
83
|
+
], EnvironmentVariables.prototype, "SFN_REGION", void 0);
|
|
84
|
+
__decorate([
|
|
85
|
+
(0, class_validator_1.IsString)(),
|
|
86
|
+
__metadata("design:type", String)
|
|
87
|
+
], EnvironmentVariables.prototype, "SFN_COMMAND_ARN", void 0);
|
|
88
|
+
__decorate([
|
|
89
|
+
(0, class_validator_1.IsString)(),
|
|
90
|
+
(0, class_validator_1.IsOptional)(),
|
|
91
|
+
__metadata("design:type", String)
|
|
92
|
+
], EnvironmentVariables.prototype, "SNS_ENDPOINT", void 0);
|
|
93
|
+
__decorate([
|
|
94
|
+
(0, class_validator_1.IsString)(),
|
|
95
|
+
(0, class_validator_1.IsOptional)(),
|
|
96
|
+
__metadata("design:type", String)
|
|
97
|
+
], EnvironmentVariables.prototype, "SNS_REGION", void 0);
|
|
98
|
+
__decorate([
|
|
99
|
+
(0, class_validator_1.IsString)(),
|
|
100
|
+
(0, class_validator_1.IsOptional)(),
|
|
101
|
+
__metadata("design:type", String)
|
|
102
|
+
], EnvironmentVariables.prototype, "APPSYNC_ENDPOINT", void 0);
|
|
103
|
+
__decorate([
|
|
104
|
+
(0, class_validator_1.IsString)(),
|
|
105
|
+
(0, class_validator_1.IsOptional)(),
|
|
106
|
+
__metadata("design:type", String)
|
|
107
|
+
], EnvironmentVariables.prototype, "SES_ENDPOINT", void 0);
|
|
108
|
+
__decorate([
|
|
109
|
+
(0, class_validator_1.IsString)(),
|
|
110
|
+
(0, class_validator_1.IsOptional)(),
|
|
111
|
+
__metadata("design:type", String)
|
|
112
|
+
], EnvironmentVariables.prototype, "SES_REGION", void 0);
|
|
113
|
+
__decorate([
|
|
114
|
+
(0, class_validator_1.IsString)(),
|
|
115
|
+
__metadata("design:type", String)
|
|
116
|
+
], EnvironmentVariables.prototype, "SES_FROM_EMAIL", void 0);
|
|
117
|
+
function getValidateConfig(cls) {
|
|
118
|
+
return function validate(config) {
|
|
119
|
+
const validatedConfig = (0, class_transformer_1.plainToInstance)(cls || EnvironmentVariables, config, {
|
|
120
|
+
enableImplicitConversion: true,
|
|
121
|
+
});
|
|
122
|
+
const errors = (0, class_validator_1.validateSync)(validatedConfig, {
|
|
123
|
+
skipMissingProperties: false,
|
|
124
|
+
});
|
|
125
|
+
if (errors.length > 0) {
|
|
126
|
+
throw new Error(errors.toString());
|
|
127
|
+
}
|
|
128
|
+
return validatedConfig;
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
exports.getValidateConfig = getValidateConfig;
|
|
132
|
+
//# sourceMappingURL=env.validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.validation.js","sourceRoot":"","sources":["../src/env.validation.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAqE;AACrE,qDAQwB;AAExB,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,kCAAmB,CAAA;IACnB,kCAAmB,CAAA;IACnB,8BAAe,CAAA;AACjB,CAAC,EALW,WAAW,2BAAX,WAAW,QAKtB;AAED,MAAa,oBAAoB;CA6DhC;AA7DD,oDA6DC;AA3DC;IADC,IAAA,wBAAM,EAAC,WAAW,CAAC;;sDACC;AAErB;IADC,IAAA,0BAAQ,GAAE;;sDACK;AAIhB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;sDACG;AAGhB;IADC,IAAA,2BAAS,GAAE;;mEACkB;AAG9B;IADC,IAAA,0BAAQ,GAAE;;uDACM;AAIjB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;+DACY;AAGzB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;6DACY;AAEvB;IADC,IAAA,4BAAU,GAAE;;kEACe;AAG5B;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;yDACM;AAGnB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;uDACI;AAEjB;IADC,IAAA,0BAAQ,GAAE;;4DACW;AAItB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;0DACO;AAGpB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;wDACK;AAElB;IADC,IAAA,0BAAQ,GAAE;;6DACY;AAIvB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;0DACO;AAGpB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;wDACK;AAIlB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;8DACW;AAIxB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;0DACO;AAGpB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;wDACK;AAElB;IADC,IAAA,0BAAQ,GAAE;;4DACW;AAGxB,SAAgB,iBAAiB,CAC/B,GAAyB;IAEzB,OAAO,SAAS,QAAQ,CAAC,MAA+B;QACtD,MAAM,eAAe,GAAG,IAAA,mCAAe,EACrC,GAAG,IAAI,oBAAoB,EAC3B,MAAM,EACN;YACE,wBAAwB,EAAE,IAAI;SAC/B,CACF,CAAA;QACD,MAAM,MAAM,GAAG,IAAA,8BAAY,EAAC,eAAe,EAAE;YAC3C,qBAAqB,EAAE,KAAK;SAC7B,CAAC,CAAA;QAEF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;QACpC,CAAC;QACD,OAAO,eAAe,CAAA;IACxB,CAAC,CAAA;AACH,CAAC;AApBD,8CAoBC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DynamoDBStreamEvent, EventBridgeEvent, S3Event, SNSEvent, SQSEvent } from 'aws-lambda';
|
|
2
|
+
import { IEvent, IEventFactory, StepFunctionsEvent } from '../interfaces';
|
|
3
|
+
export declare class DefaultEventFactory implements IEventFactory {
|
|
4
|
+
transformSqs(event: SQSEvent): Promise<IEvent[]>;
|
|
5
|
+
transformSns(event: SNSEvent): Promise<IEvent[]>;
|
|
6
|
+
transformDynamodbStream(event: DynamoDBStreamEvent): Promise<IEvent[]>;
|
|
7
|
+
transformEventBridge(event: EventBridgeEvent<any, any>): Promise<IEvent[]>;
|
|
8
|
+
transformStepFunction(event: StepFunctionsEvent<any>): Promise<IEvent[]>;
|
|
9
|
+
transformS3(event: S3Event): Promise<IEvent[]>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DefaultEventFactory = void 0;
|
|
4
|
+
const data_sync_new_event_1 = require("../command-events/data-sync.new.event");
|
|
5
|
+
const data_sync_sfn_event_1 = require("../command-events/data-sync.sfn.event");
|
|
6
|
+
const constants_1 = require("../constants");
|
|
7
|
+
const notification_event_1 = require("../notifications/event/notification.event");
|
|
8
|
+
class DefaultEventFactory {
|
|
9
|
+
async transformSqs(event) {
|
|
10
|
+
const events = event.Records.map((record) => {
|
|
11
|
+
if (record.eventSourceARN.endsWith(constants_1.DEFAULT_NOTIFICATION_QUEUE)) {
|
|
12
|
+
return new notification_event_1.NotificationEvent().fromSqsRecord(record);
|
|
13
|
+
}
|
|
14
|
+
return undefined;
|
|
15
|
+
}).filter((event) => !!event);
|
|
16
|
+
return events;
|
|
17
|
+
}
|
|
18
|
+
async transformSns(event) {
|
|
19
|
+
return event.Records.map((record) => ({
|
|
20
|
+
...record,
|
|
21
|
+
source: record.EventSource,
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
async transformDynamodbStream(event) {
|
|
25
|
+
const events = event.Records.map((record) => {
|
|
26
|
+
if (record.eventSourceARN.endsWith(constants_1.COMMAND_TABLE_SUFFIX) ||
|
|
27
|
+
record.eventSourceARN.includes(constants_1.COMMAND_TABLE_SUFFIX + '/stream/')) {
|
|
28
|
+
if (record.eventName === 'INSERT') {
|
|
29
|
+
return new data_sync_new_event_1.DataSyncNewCommandEvent().fromDynamoDBRecord(record);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return undefined;
|
|
33
|
+
}).filter((event) => !!event);
|
|
34
|
+
return events;
|
|
35
|
+
}
|
|
36
|
+
async transformEventBridge(event) {
|
|
37
|
+
return [event];
|
|
38
|
+
}
|
|
39
|
+
async transformStepFunction(event) {
|
|
40
|
+
const commandStepFunction = new data_sync_sfn_event_1.DataSyncCommandSfnEvent(event);
|
|
41
|
+
return [commandStepFunction];
|
|
42
|
+
}
|
|
43
|
+
async transformS3(event) {
|
|
44
|
+
return event.Records.map((record) => ({
|
|
45
|
+
...record,
|
|
46
|
+
source: record.eventSource,
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.DefaultEventFactory = DefaultEventFactory;
|
|
51
|
+
//# sourceMappingURL=default-event-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-event-factory.js","sourceRoot":"","sources":["../../src/events/default-event-factory.ts"],"names":[],"mappings":";;;AAQA,+EAA+E;AAC/E,+EAA+E;AAC/E,4CAA+E;AAE/E,kFAA6E;AAE7E,MAAa,mBAAmB;IAC9B,KAAK,CAAC,YAAY,CAAC,KAAe;QAChC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1C,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,sCAA0B,CAAC,EAAE,CAAC;gBAC/D,OAAO,IAAI,sCAAiB,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;YACtD,CAAC;YACD,OAAO,SAAS,CAAA;QAClB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QAE7B,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAe;QAChC,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACpC,GAAG,MAAM;YACT,MAAM,EAAE,MAAM,CAAC,WAAW;SAC3B,CAAC,CAAC,CAAA;IACL,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,KAA0B;QACtD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1C,IACE,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,gCAAoB,CAAC;gBACpD,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,gCAAoB,GAAG,UAAU,CAAC,EACjE,CAAC;gBACD,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;oBAClC,OAAO,IAAI,6CAAuB,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;gBACjE,CAAC;YACH,CAAC;YACD,OAAO,SAAS,CAAA;QAClB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QAE7B,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,KAAiC;QAEjC,OAAO,CAAC,KAAK,CAAC,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,KAA8B;QAE9B,MAAM,mBAAmB,GAAG,IAAI,6CAAuB,CAAC,KAAK,CAAC,CAAA;QAC9D,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAc;QAC9B,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACpC,GAAG,MAAM;YACT,MAAM,EAAE,MAAM,CAAC,WAAW;SAC3B,CAAC,CAAC,CAAA;IACL,CAAC;CACF;AAtDD,kDAsDC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Type } from '@nestjs/common';
|
|
2
|
+
import { ModuleRef } from '@nestjs/core';
|
|
3
|
+
import { IEvent, IEventHandler } from '../interfaces';
|
|
4
|
+
export type EventHandlerType = Type<IEventHandler<IEvent>>;
|
|
5
|
+
export declare class EventBus<EventBase extends IEvent = IEvent> {
|
|
6
|
+
private readonly moduleRef;
|
|
7
|
+
private readonly logger;
|
|
8
|
+
private readonly handlers;
|
|
9
|
+
constructor(moduleRef: ModuleRef);
|
|
10
|
+
execute<T extends EventBase, R = any>(event: T): Promise<R[]>;
|
|
11
|
+
bind<T extends EventBase>(handler: IEventHandler<T>, id: string): void;
|
|
12
|
+
register(handlers?: EventHandlerType[]): void;
|
|
13
|
+
protected registerHandler(handler: EventHandlerType): void;
|
|
14
|
+
private getEventId;
|
|
15
|
+
private reflectEventId;
|
|
16
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var EventBus_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.EventBus = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const core_1 = require("@nestjs/core");
|
|
16
|
+
const decorators_1 = require("../decorators");
|
|
17
|
+
const exceptions_1 = require("../exceptions");
|
|
18
|
+
let EventBus = EventBus_1 = class EventBus {
|
|
19
|
+
constructor(moduleRef) {
|
|
20
|
+
this.moduleRef = moduleRef;
|
|
21
|
+
this.logger = new common_1.Logger(EventBus_1.name);
|
|
22
|
+
this.handlers = new Map();
|
|
23
|
+
}
|
|
24
|
+
execute(event) {
|
|
25
|
+
const eventId = this.getEventId(event);
|
|
26
|
+
const handlers = this.handlers.get(eventId);
|
|
27
|
+
if (!handlers || !handlers.length) {
|
|
28
|
+
throw new exceptions_1.EventHandlerNotFoundException(eventId);
|
|
29
|
+
}
|
|
30
|
+
return Promise.all(handlers.map((handler) => handler.execute(event)));
|
|
31
|
+
}
|
|
32
|
+
bind(handler, id) {
|
|
33
|
+
const handlers = this.handlers.get(id) || [];
|
|
34
|
+
handlers.push(handler);
|
|
35
|
+
this.handlers.set(id, handlers);
|
|
36
|
+
}
|
|
37
|
+
register(handlers = []) {
|
|
38
|
+
handlers.forEach((handler) => this.registerHandler(handler));
|
|
39
|
+
}
|
|
40
|
+
registerHandler(handler) {
|
|
41
|
+
const instance = this.moduleRef.get(handler, { strict: false });
|
|
42
|
+
if (!instance) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const target = this.reflectEventId(handler);
|
|
46
|
+
if (!target) {
|
|
47
|
+
throw new exceptions_1.InvalidEventHandlerException();
|
|
48
|
+
}
|
|
49
|
+
this.bind(instance, target);
|
|
50
|
+
}
|
|
51
|
+
getEventId(event) {
|
|
52
|
+
const { constructor: eventType } = Object.getPrototypeOf(event);
|
|
53
|
+
const eventMetadata = Reflect.getMetadata(decorators_1.EVENT_METADATA, eventType);
|
|
54
|
+
if (!eventMetadata) {
|
|
55
|
+
throw new exceptions_1.EventHandlerNotFoundException(eventType.name);
|
|
56
|
+
}
|
|
57
|
+
return eventMetadata.id;
|
|
58
|
+
}
|
|
59
|
+
reflectEventId(handler) {
|
|
60
|
+
const event = Reflect.getMetadata(decorators_1.EVENT_HANDLER_METADATA, handler);
|
|
61
|
+
const eventMetadata = Reflect.getMetadata(decorators_1.EVENT_METADATA, event);
|
|
62
|
+
return eventMetadata.id;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
exports.EventBus = EventBus;
|
|
66
|
+
exports.EventBus = EventBus = EventBus_1 = __decorate([
|
|
67
|
+
(0, common_1.Injectable)(),
|
|
68
|
+
__metadata("design:paramtypes", [core_1.ModuleRef])
|
|
69
|
+
], EventBus);
|
|
70
|
+
//# sourceMappingURL=event-bus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../src/events/event-bus.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAyD;AACzD,uCAAwC;AAExC,8CAAsE;AACtE,8CAGsB;AAOf,IAAM,QAAQ,gBAAd,MAAM,QAAQ;IAInB,YAA6B,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;QAHhC,WAAM,GAAG,IAAI,eAAM,CAAC,UAAQ,CAAC,IAAI,CAAC,CAAA;QAClC,aAAQ,GAAG,IAAI,GAAG,EAAsC,CAAA;IAErB,CAAC;IAErD,OAAO,CAA+B,KAAQ;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC3C,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,IAAI,0CAA6B,CAAC,OAAO,CAAC,CAAA;QAClD,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACvE,CAAC;IAED,IAAI,CAAsB,OAAyB,EAAE,EAAU;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;QAC5C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;IAUjC,CAAC;IAED,QAAQ,CAAC,WAA+B,EAAE;QACxC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAA;IAC9D,CAAC;IAES,eAAe,CAAC,OAAyB;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QAC/D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAM;QACR,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,yCAA4B,EAAE,CAAA;QAC1C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAoC,EAAE,MAAM,CAAC,CAAA;IACzD,CAAC;IAEO,UAAU,CAAC,KAAgB;QACjC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;QAC/D,MAAM,aAAa,GAAkB,OAAO,CAAC,WAAW,CACtD,2BAAc,EACd,SAAS,CACV,CAAA;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,0CAA6B,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACzD,CAAC;QAED,OAAO,aAAa,CAAC,EAAE,CAAA;IACzB,CAAC;IAEO,cAAc,CAAC,OAAyB;QAC9C,MAAM,KAAK,GAAiB,OAAO,CAAC,WAAW,CAC7C,mCAAsB,EACtB,OAAO,CACR,CAAA;QACD,MAAM,aAAa,GAAkB,OAAO,CAAC,WAAW,CACtD,2BAAc,EACd,KAAK,CACN,CAAA;QACD,OAAO,aAAa,CAAC,EAAE,CAAA;IACzB,CAAC;CACF,CAAA;AAtEY,4BAAQ;mBAAR,QAAQ;IADpB,IAAA,mBAAU,GAAE;qCAK6B,gBAAS;GAJtC,QAAQ,CAsEpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-metadata.interface.js","sourceRoot":"","sources":["../../src/events/event-metadata.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DynamoDBStreamEvent, EventBridgeEvent, S3Event, SNSEvent, SQSEvent } from 'aws-lambda';
|
|
2
|
+
import { StepFunctionsEvent } from '../interfaces';
|
|
3
|
+
import { EventService } from './event.services';
|
|
4
|
+
export declare class EventController {
|
|
5
|
+
private readonly eventService;
|
|
6
|
+
private readonly logger;
|
|
7
|
+
constructor(eventService: EventService);
|
|
8
|
+
handleSnsEvent(event: SNSEvent): Promise<any[][]>;
|
|
9
|
+
handleSqsEvent(event: SQSEvent): Promise<any[][]>;
|
|
10
|
+
handleDynamoDBEvent(event: DynamoDBStreamEvent): Promise<any[][]>;
|
|
11
|
+
handleEventBridgeEvent(event: EventBridgeEvent<any, any>): Promise<any[][]>;
|
|
12
|
+
handleStepFunctionsEvent(event: StepFunctionsEvent<any>): Promise<any[][]>;
|
|
13
|
+
handleS3Event(event: S3Event): Promise<any[][]>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var EventController_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.EventController = void 0;
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
19
|
+
const exceptions_1 = require("../exceptions");
|
|
20
|
+
const filters_1 = require("../filters");
|
|
21
|
+
const event_services_1 = require("./event.services");
|
|
22
|
+
let EventController = EventController_1 = class EventController {
|
|
23
|
+
constructor(eventService) {
|
|
24
|
+
this.eventService = eventService;
|
|
25
|
+
this.logger = new common_1.Logger(EventController_1.name);
|
|
26
|
+
}
|
|
27
|
+
async handleSnsEvent(event) {
|
|
28
|
+
try {
|
|
29
|
+
return await this.eventService.handleSnsEvent(event);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
this.logger.error(error);
|
|
33
|
+
throw new exceptions_1.EventSourceException(error);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async handleSqsEvent(event) {
|
|
37
|
+
try {
|
|
38
|
+
return await this.eventService.handleSqsEvent(event);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
this.logger.error(error);
|
|
42
|
+
throw new exceptions_1.EventSourceException(error);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async handleDynamoDBEvent(event) {
|
|
46
|
+
try {
|
|
47
|
+
return await this.eventService.handleDynamoDBEvent(event);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
this.logger.error(error);
|
|
51
|
+
throw new exceptions_1.EventSourceException(error);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async handleEventBridgeEvent(event) {
|
|
55
|
+
try {
|
|
56
|
+
return await this.eventService.handleEventBridgeEvent(event);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
this.logger.error(error);
|
|
60
|
+
throw new exceptions_1.EventSourceException(error);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
async handleStepFunctionsEvent(event) {
|
|
64
|
+
try {
|
|
65
|
+
return await this.eventService.handleStepFunctionsEvent(event);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
this.logger.error(error);
|
|
69
|
+
throw new exceptions_1.EventSourceException(error);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async handleS3Event(event) {
|
|
73
|
+
try {
|
|
74
|
+
return await this.eventService.handleS3Event(event);
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
this.logger.error(error);
|
|
78
|
+
throw new exceptions_1.EventSourceException(error);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
exports.EventController = EventController;
|
|
83
|
+
__decorate([
|
|
84
|
+
(0, common_1.Post)('sns'),
|
|
85
|
+
__param(0, (0, common_1.Body)()),
|
|
86
|
+
__metadata("design:type", Function),
|
|
87
|
+
__metadata("design:paramtypes", [Object]),
|
|
88
|
+
__metadata("design:returntype", Promise)
|
|
89
|
+
], EventController.prototype, "handleSnsEvent", null);
|
|
90
|
+
__decorate([
|
|
91
|
+
(0, common_1.Post)('sqs'),
|
|
92
|
+
__param(0, (0, common_1.Body)()),
|
|
93
|
+
__metadata("design:type", Function),
|
|
94
|
+
__metadata("design:paramtypes", [Object]),
|
|
95
|
+
__metadata("design:returntype", Promise)
|
|
96
|
+
], EventController.prototype, "handleSqsEvent", null);
|
|
97
|
+
__decorate([
|
|
98
|
+
(0, common_1.Post)('dynamodb'),
|
|
99
|
+
__param(0, (0, common_1.Body)()),
|
|
100
|
+
__metadata("design:type", Function),
|
|
101
|
+
__metadata("design:paramtypes", [Object]),
|
|
102
|
+
__metadata("design:returntype", Promise)
|
|
103
|
+
], EventController.prototype, "handleDynamoDBEvent", null);
|
|
104
|
+
__decorate([
|
|
105
|
+
(0, common_1.Post)('event-bridge'),
|
|
106
|
+
__param(0, (0, common_1.Body)()),
|
|
107
|
+
__metadata("design:type", Function),
|
|
108
|
+
__metadata("design:paramtypes", [Object]),
|
|
109
|
+
__metadata("design:returntype", Promise)
|
|
110
|
+
], EventController.prototype, "handleEventBridgeEvent", null);
|
|
111
|
+
__decorate([
|
|
112
|
+
(0, common_1.Post)('step-functions'),
|
|
113
|
+
__param(0, (0, common_1.Body)()),
|
|
114
|
+
__metadata("design:type", Function),
|
|
115
|
+
__metadata("design:paramtypes", [Object]),
|
|
116
|
+
__metadata("design:returntype", Promise)
|
|
117
|
+
], EventController.prototype, "handleStepFunctionsEvent", null);
|
|
118
|
+
__decorate([
|
|
119
|
+
(0, common_1.Post)('s3'),
|
|
120
|
+
__param(0, (0, common_1.Body)()),
|
|
121
|
+
__metadata("design:type", Function),
|
|
122
|
+
__metadata("design:paramtypes", [Object]),
|
|
123
|
+
__metadata("design:returntype", Promise)
|
|
124
|
+
], EventController.prototype, "handleS3Event", null);
|
|
125
|
+
exports.EventController = EventController = EventController_1 = __decorate([
|
|
126
|
+
(0, common_1.Controller)(),
|
|
127
|
+
(0, common_1.UseFilters)(new filters_1.EventSourceExceptionFilter()),
|
|
128
|
+
(0, swagger_1.ApiExcludeController)(),
|
|
129
|
+
__metadata("design:paramtypes", [event_services_1.EventService])
|
|
130
|
+
], EventController);
|
|
131
|
+
//# sourceMappingURL=event.controller.js.map
|