@mbc-cqrs-serverless/core 1.3.1 → 1.3.3

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 (80) hide show
  1. package/README.md +0 -37
  2. package/dist/app.module.js +0 -2
  3. package/dist/app.module.js.map +1 -1
  4. package/dist/context/invoke.d.ts +0 -1
  5. package/dist/context/invoke.js.map +1 -1
  6. package/dist/context/user.d.ts +0 -4
  7. package/dist/context/user.js +0 -50
  8. package/dist/context/user.js.map +1 -1
  9. package/dist/decorators/constants.d.ts +0 -2
  10. package/dist/decorators/constants.js +1 -3
  11. package/dist/decorators/constants.js.map +1 -1
  12. package/dist/decorators/index.d.ts +0 -2
  13. package/dist/decorators/index.js +0 -2
  14. package/dist/decorators/index.js.map +1 -1
  15. package/dist/env.validation.d.ts +0 -19
  16. package/dist/env.validation.js +1 -22
  17. package/dist/env.validation.js.map +1 -1
  18. package/dist/guard/roles.guard.d.ts +1 -11
  19. package/dist/guard/roles.guard.js +8 -44
  20. package/dist/guard/roles.guard.js.map +1 -1
  21. package/dist/index.d.ts +0 -1
  22. package/dist/index.js +0 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/notifications/appsync.service.d.ts +2 -3
  25. package/dist/notifications/appsync.service.js +12 -20
  26. package/dist/notifications/appsync.service.js.map +1 -1
  27. package/dist/notifications/event/notification.event.handler.d.ts +5 -13
  28. package/dist/notifications/event/notification.event.handler.js +7 -31
  29. package/dist/notifications/event/notification.event.handler.js.map +1 -1
  30. package/dist/notifications/index.d.ts +0 -3
  31. package/dist/notifications/index.js +0 -3
  32. package/dist/notifications/index.js.map +1 -1
  33. package/dist/notifications/notification.module.js +2 -12
  34. package/dist/notifications/notification.module.js.map +1 -1
  35. package/dist/services/explorer.service.d.ts +0 -5
  36. package/dist/services/explorer.service.js +0 -9
  37. package/dist/services/explorer.service.js.map +1 -1
  38. package/package.json +2 -2
  39. package/dist/auth/auth.module.d.ts +0 -2
  40. package/dist/auth/auth.module.js +0 -30
  41. package/dist/auth/auth.module.js.map +0 -1
  42. package/dist/auth/authz-bootstrap.service.d.ts +0 -11
  43. package/dist/auth/authz-bootstrap.service.js +0 -47
  44. package/dist/auth/authz-bootstrap.service.js.map +0 -1
  45. package/dist/auth/group-role-resolver.interface.d.ts +0 -13
  46. package/dist/auth/group-role-resolver.interface.js +0 -3
  47. package/dist/auth/group-role-resolver.interface.js.map +0 -1
  48. package/dist/auth/group-role-resolver.registry.d.ts +0 -6
  49. package/dist/auth/group-role-resolver.registry.js +0 -26
  50. package/dist/auth/group-role-resolver.registry.js.map +0 -1
  51. package/dist/auth/index.d.ts +0 -4
  52. package/dist/auth/index.js +0 -21
  53. package/dist/auth/index.js.map +0 -1
  54. package/dist/decorators/group-role-resolver.decorator.d.ts +0 -9
  55. package/dist/decorators/group-role-resolver.decorator.js +0 -17
  56. package/dist/decorators/group-role-resolver.decorator.js.map +0 -1
  57. package/dist/decorators/notification-transport.decorator.d.ts +0 -6
  58. package/dist/decorators/notification-transport.decorator.js +0 -14
  59. package/dist/decorators/notification-transport.decorator.js.map +0 -1
  60. package/dist/notification-env.validation.d.ts +0 -8
  61. package/dist/notification-env.validation.js +0 -36
  62. package/dist/notification-env.validation.js.map +0 -1
  63. package/dist/notifications/appsync-events.service.d.ts +0 -44
  64. package/dist/notifications/appsync-events.service.js +0 -147
  65. package/dist/notifications/appsync-events.service.js.map +0 -1
  66. package/dist/notifications/enums/index.d.ts +0 -1
  67. package/dist/notifications/enums/index.js +0 -18
  68. package/dist/notifications/enums/index.js.map +0 -1
  69. package/dist/notifications/enums/notification-transport.enum.d.ts +0 -4
  70. package/dist/notifications/enums/notification-transport.enum.js +0 -9
  71. package/dist/notifications/enums/notification-transport.enum.js.map +0 -1
  72. package/dist/notifications/interfaces/index.d.ts +0 -1
  73. package/dist/notifications/interfaces/index.js +0 -18
  74. package/dist/notifications/interfaces/index.js.map +0 -1
  75. package/dist/notifications/interfaces/notification-transport.interface.d.ts +0 -7
  76. package/dist/notifications/interfaces/notification-transport.interface.js +0 -5
  77. package/dist/notifications/interfaces/notification-transport.interface.js.map +0 -1
  78. package/dist/services/mocks/group-role-resolver.mock.d.ts +0 -4
  79. package/dist/services/mocks/group-role-resolver.mock.js +0 -20
  80. package/dist/services/mocks/group-role-resolver.mock.js.map +0 -1
@@ -12,48 +12,24 @@ var NotificationEventHandler_1;
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.NotificationEventHandler = void 0;
14
14
  const common_1 = require("@nestjs/common");
15
- const config_1 = require("@nestjs/config");
16
- const core_1 = require("@nestjs/core");
17
15
  const decorators_1 = require("../../decorators");
18
- const notification_env_validation_1 = require("../../notification-env.validation");
19
- const services_1 = require("../../services");
16
+ const appsync_service_1 = require("../appsync.service");
20
17
  const notification_event_1 = require("./notification.event");
21
18
  let NotificationEventHandler = NotificationEventHandler_1 = class NotificationEventHandler {
22
- constructor(moduleRef, explorerService, config) {
23
- this.moduleRef = moduleRef;
24
- this.explorerService = explorerService;
25
- this.config = config;
19
+ constructor(appSyncService) {
20
+ this.appSyncService = appSyncService;
26
21
  this.logger = new common_1.Logger(NotificationEventHandler_1.name);
27
- this.transports = new Map();
28
- this.activeTransportNames = (0, notification_env_validation_1.parseNotificationTransports)(this.config.get('NOTIFICATION_TRANSPORTS'));
29
- }
30
- onModuleInit() {
31
- this.logger.debug('Finding notification transports from decorators');
32
- const { notificationTransports } = this.explorerService.exploreNotificationTransports();
33
- for (const TransportClass of notificationTransports) {
34
- const name = Reflect.getMetadata(decorators_1.NOTIFICATION_TRANSPORT_METADATA, TransportClass);
35
- if (this.activeTransportNames.includes(name)) {
36
- const instance = this.moduleRef.get(TransportClass, { strict: false });
37
- // Give the instance its decorator name automatically if it isn't set
38
- if (!instance.name) {
39
- instance.name = name;
40
- }
41
- this.transports.set(name, instance);
42
- }
43
- }
44
- this.logger.debug(`Initialized active transports: [${[...this.transports.keys()].join(', ')}]`);
45
22
  }
46
23
  async execute(event) {
24
+ this.logger.debug('notification event executing:: ', event);
25
+ //send to appsync
47
26
  const body = JSON.parse(event.body);
48
- this.logger.debug(`execute:: broadcasting via ${this.transports.size} transport(s)`);
49
- await Promise.all([...this.transports.values()].map((t) => t.sendMessage(body)));
27
+ return await this.appSyncService.sendMessage(body);
50
28
  }
51
29
  };
52
30
  exports.NotificationEventHandler = NotificationEventHandler;
53
31
  exports.NotificationEventHandler = NotificationEventHandler = NotificationEventHandler_1 = __decorate([
54
32
  (0, decorators_1.EventHandler)(notification_event_1.NotificationEvent),
55
- __metadata("design:paramtypes", [core_1.ModuleRef,
56
- services_1.ExplorerService,
57
- config_1.ConfigService])
33
+ __metadata("design:paramtypes", [appsync_service_1.AppSyncService])
58
34
  ], NotificationEventHandler);
59
35
  //# sourceMappingURL=notification.event.handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"notification.event.handler.js","sourceRoot":"","sources":["../../../src/notifications/event/notification.event.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAqD;AACrD,2CAA8C;AAC9C,uCAAwC;AAExC,iDAAgF;AAEhF,mFAA+E;AAC/E,6CAAgD;AAEhD,6DAAwD;AAGjD,IAAM,wBAAwB,gCAA9B,MAAM,wBAAwB;IAOnC,YACmB,SAAoB,EACpB,eAAgC,EAChC,MAAqB;QAFrB,cAAS,GAAT,SAAS,CAAW;QACpB,oBAAe,GAAf,eAAe,CAAiB;QAChC,WAAM,GAAN,MAAM,CAAe;QAPvB,WAAM,GAAG,IAAI,eAAM,CAAC,0BAAwB,CAAC,IAAI,CAAC,CAAA;QAClD,eAAU,GAAG,IAAI,GAAG,EAAkC,CAAA;QAQrE,IAAI,CAAC,oBAAoB,GAAG,IAAA,yDAA2B,EACrD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAS,yBAAyB,CAAC,CACnD,CAAA;IACH,CAAC;IAED,YAAY;QACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAA;QAEpE,MAAM,EAAE,sBAAsB,EAAE,GAC9B,IAAI,CAAC,eAAe,CAAC,6BAA6B,EAAE,CAAA;QAEtD,KAAK,MAAM,cAAc,IAAI,sBAAsB,EAAE,CAAC;YACpD,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAC9B,4CAA+B,EAC/B,cAAc,CACf,CAAA;YAED,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CACjC,cAAc,EACd,EAAE,MAAM,EAAE,KAAK,EAAE,CAClB,CAAA;gBAED,qEAAqE;gBACrE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACnB,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAA;gBACtB,CAAC;gBAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YACrC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,mCAAmC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC7E,CAAA;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAwB;QACpC,MAAM,IAAI,GAAkB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAElD,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,8BAA8B,IAAI,CAAC,UAAU,CAAC,IAAI,eAAe,CAClE,CAAA;QAED,MAAM,OAAO,CAAC,GAAG,CACf,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAC9D,CAAA;IACH,CAAC;CACF,CAAA;AA5DY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,yBAAY,EAAC,sCAAiB,CAAC;qCASA,gBAAS;QACH,0BAAe;QACxB,sBAAa;GAV7B,wBAAwB,CA4DpC"}
1
+ {"version":3,"file":"notification.event.handler.js","sourceRoot":"","sources":["../../../src/notifications/event/notification.event.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAuC;AAEvC,iDAA+C;AAE/C,wDAAmD;AACnD,6DAAwD;AAGjD,IAAM,wBAAwB,gCAA9B,MAAM,wBAAwB;IAKnC,YAA6B,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;QAF1C,WAAM,GAAG,IAAI,eAAM,CAAC,0BAAwB,CAAC,IAAI,CAAC,CAAA;IAEL,CAAC;IAE/D,KAAK,CAAC,OAAO,CAAC,KAAwB;QACpC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAA;QAC3D,iBAAiB;QACjB,MAAM,IAAI,GAAkB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAClD,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IACpD,CAAC;CACF,CAAA;AAbY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,yBAAY,EAAC,sCAAiB,CAAC;qCAMe,gCAAc;GALhD,wBAAwB,CAapC"}
@@ -1,7 +1,4 @@
1
1
  export * from './appsync.service';
2
- export * from './appsync-events.service';
3
2
  export * from './email.service';
4
- export * from './enums';
5
3
  export * from './event';
6
- export * from './interfaces';
7
4
  export * from './notification.module';
@@ -15,10 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./appsync.service"), exports);
18
- __exportStar(require("./appsync-events.service"), exports);
19
18
  __exportStar(require("./email.service"), exports);
20
- __exportStar(require("./enums"), exports);
21
19
  __exportStar(require("./event"), exports);
22
- __exportStar(require("./interfaces"), exports);
23
20
  __exportStar(require("./notification.module"), exports);
24
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAiC;AACjC,2DAAwC;AACxC,kDAA+B;AAC/B,0CAAuB;AACvB,0CAAuB;AACvB,+CAA4B;AAC5B,wDAAqC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAiC;AACjC,kDAA+B;AAC/B,0CAAuB;AACvB,wDAAqC"}
@@ -8,10 +8,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.NotificationModule = void 0;
10
10
  const common_1 = require("@nestjs/common");
11
- const config_1 = require("@nestjs/config");
12
- const services_1 = require("../services");
13
11
  const appsync_service_1 = require("./appsync.service");
14
- const appsync_events_service_1 = require("./appsync-events.service");
15
12
  const email_service_1 = require("./email.service");
16
13
  const notification_event_handler_1 = require("./event/notification.event.handler");
17
14
  let NotificationModule = class NotificationModule {
@@ -20,15 +17,8 @@ exports.NotificationModule = NotificationModule;
20
17
  exports.NotificationModule = NotificationModule = __decorate([
21
18
  (0, common_1.Global)(),
22
19
  (0, common_1.Module)({
23
- imports: [config_1.ConfigModule],
24
- providers: [
25
- services_1.ExplorerService,
26
- email_service_1.EmailService,
27
- notification_event_handler_1.NotificationEventHandler,
28
- appsync_service_1.AppSyncService,
29
- appsync_events_service_1.AppSyncEventsService,
30
- ],
31
- exports: [email_service_1.EmailService, appsync_service_1.AppSyncService, appsync_events_service_1.AppSyncEventsService],
20
+ providers: [appsync_service_1.AppSyncService, email_service_1.EmailService, notification_event_handler_1.NotificationEventHandler],
21
+ exports: [appsync_service_1.AppSyncService, email_service_1.EmailService],
32
22
  })
33
23
  ], NotificationModule);
34
24
  //# sourceMappingURL=notification.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"notification.module.js","sourceRoot":"","sources":["../../src/notifications/notification.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA+C;AAC/C,2CAA6C;AAE7C,0CAA6C;AAC7C,uDAAkD;AAClD,qEAA+D;AAC/D,mDAA8C;AAC9C,mFAA6E;AActE,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAAG,CAAA;AAArB,gDAAkB;6BAAlB,kBAAkB;IAZ9B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,qBAAY,CAAC;QACvB,SAAS,EAAE;YACT,0BAAe;YACf,4BAAY;YACZ,qDAAwB;YACxB,gCAAc;YACd,6CAAoB;SACrB;QACD,OAAO,EAAE,CAAC,4BAAY,EAAE,gCAAc,EAAE,6CAAoB,CAAC;KAC9D,CAAC;GACW,kBAAkB,CAAG"}
1
+ {"version":3,"file":"notification.module.js","sourceRoot":"","sources":["../../src/notifications/notification.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA+C;AAE/C,uDAAkD;AAClD,mDAA8C;AAC9C,mFAA6E;AAOtE,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAAG,CAAA;AAArB,gDAAkB;6BAAlB,kBAAkB;IAL9B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,gCAAc,EAAE,4BAAY,EAAE,qDAAwB,CAAC;QACnE,OAAO,EAAE,CAAC,gCAAc,EAAE,4BAAY,CAAC;KACxC,CAAC;GACW,kBAAkB,CAAG"}
@@ -2,7 +2,6 @@ import { Type } from '@nestjs/common';
2
2
  import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper';
3
3
  import { Module } from '@nestjs/core/injector/module';
4
4
  import { ModulesContainer } from '@nestjs/core/injector/modules-container';
5
- import { IGroupRoleResolver } from '../auth/group-role-resolver.interface';
6
5
  import { IDataSyncHandler, IEventFactory, IEventHandler } from '../interfaces';
7
6
  export declare class ExplorerService {
8
7
  private readonly modulesContainer;
@@ -15,10 +14,6 @@ export declare class ExplorerService {
15
14
  exploreDataSyncHandlers(commandTableName: string): {
16
15
  dataSyncHandlers: Type<IDataSyncHandler<any, any>>[];
17
16
  };
18
- exploreNotificationTransports(): {
19
- notificationTransports: Type<any>[];
20
- };
21
- exploreGroupRoleResolvers(): Type<IGroupRoleResolver>[];
22
17
  flatMap<T>(modules: Module[], callback: (instance: InstanceWrapper) => Type<any> | undefined): Type<T>[];
23
18
  filterProvider(wrapper: InstanceWrapper, metadataKey: string, metadataValue?: string): Type<any> | undefined;
24
19
  extractMetadata(instance: Record<string, any>, metadataKey: string, metadataValue?: string): Type<any>;
@@ -30,15 +30,6 @@ let ExplorerService = ExplorerService_1 = class ExplorerService {
30
30
  const dataSyncHandlers = this.flatMap(modules, (instance) => this.filterProvider(instance, decorators_1.DATA_SYNC_HANDLER_METADATA, commandTableName));
31
31
  return { dataSyncHandlers };
32
32
  }
33
- exploreNotificationTransports() {
34
- const modules = [...this.modulesContainer.values()];
35
- const notificationTransports = this.flatMap(modules, (instance) => this.filterProvider(instance, decorators_1.NOTIFICATION_TRANSPORT_METADATA));
36
- return { notificationTransports };
37
- }
38
- exploreGroupRoleResolvers() {
39
- const modules = [...this.modulesContainer.values()];
40
- return this.flatMap(modules, (instance) => this.filterProvider(instance, decorators_1.GROUP_ROLE_RESOLVER_METADATA));
41
- }
42
33
  flatMap(modules, callback) {
43
34
  const items = modules
44
35
  .map((module) => [...module.providers.values()].map(callback))
@@ -1 +1 @@
1
- {"version":3,"file":"explorer.service.js","sourceRoot":"","sources":["../../src/services/explorer.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAyD;AAGzD,+EAA0E;AAG1E,8CAMsB;AAIf,IAAM,eAAe,uBAArB,MAAM,eAAe;IAG1B,YAA6B,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAF9C,WAAM,GAAG,IAAI,eAAM,CAAC,iBAAe,CAAC,IAAI,CAAC,CAAA;IAEQ,CAAC;IAEnE,OAAO;QACL,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAA;QAEnD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAgB,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAC/D,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,mCAAsB,CAAC,CACtD,CAAA;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAgB,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CACtE,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,mCAAsB,CAAC,CACtD,CAAA;QACD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAA;IAClC,CAAC;IAED,uBAAuB,CAAC,gBAAwB;QAC9C,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAA;QACnD,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CACnC,OAAO,EACP,CAAC,QAAQ,EAAE,EAAE,CACX,IAAI,CAAC,cAAc,CACjB,QAAQ,EACR,uCAA0B,EAC1B,gBAAgB,CACjB,CACJ,CAAA;QACD,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC7B,CAAC;IAED,6BAA6B;QAC3B,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAA;QACnD,MAAM,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAM,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CACrE,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,4CAA+B,CAAC,CAC/D,CAAA;QACD,OAAO,EAAE,sBAAsB,EAAE,CAAA;IACnC,CAAC;IAED,yBAAyB;QACvB,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAA;QACnD,OAAO,IAAI,CAAC,OAAO,CAAqB,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAC5D,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,yCAA4B,CAAC,CAC5D,CAAA;IACH,CAAC;IAED,OAAO,CACL,OAAiB,EACjB,QAA8D;QAE9D,MAAM,KAAK,GAAG,OAAO;aAClB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;aAC7D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACpC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAc,CAAA;IAC1D,CAAC;IAED,cAAc,CACZ,OAAwB,EACxB,WAAmB,EACnB,aAAsB;QAEtB,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;QAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,aAAa,CAAC,CAAA;IACnE,CAAC;IAED,eAAe,CACb,QAA6B,EAC7B,WAAmB,EACnB,aAAsB;QAEtB,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC1B,OAAM;QACR,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;QACvE,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa,IAAI,QAAQ,KAAK,aAAa,CAAC,EAAE,CAAC;YAC/D,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,QAAQ,CAAC,WAAwB,CAAA;IAC1C,CAAC;CACF,CAAA;AAlFY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;qCAIoC,oCAAgB;GAHpD,eAAe,CAkF3B"}
1
+ {"version":3,"file":"explorer.service.js","sourceRoot":"","sources":["../../src/services/explorer.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAyD;AAGzD,+EAA0E;AAE1E,8CAIsB;AAIf,IAAM,eAAe,uBAArB,MAAM,eAAe;IAG1B,YAA6B,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAF9C,WAAM,GAAG,IAAI,eAAM,CAAC,iBAAe,CAAC,IAAI,CAAC,CAAA;IAEQ,CAAC;IAEnE,OAAO;QACL,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAA;QAEnD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAgB,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAC/D,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,mCAAsB,CAAC,CACtD,CAAA;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAgB,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CACtE,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,mCAAsB,CAAC,CACtD,CAAA;QACD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAA;IAClC,CAAC;IAED,uBAAuB,CAAC,gBAAwB;QAC9C,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAA;QACnD,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CACnC,OAAO,EACP,CAAC,QAAQ,EAAE,EAAE,CACX,IAAI,CAAC,cAAc,CACjB,QAAQ,EACR,uCAA0B,EAC1B,gBAAgB,CACjB,CACJ,CAAA;QACD,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC7B,CAAC;IAED,OAAO,CACL,OAAiB,EACjB,QAA8D;QAE9D,MAAM,KAAK,GAAG,OAAO;aAClB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;aAC7D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACpC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAc,CAAA;IAC1D,CAAC;IAED,cAAc,CACZ,OAAwB,EACxB,WAAmB,EACnB,aAAsB;QAEtB,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;QAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,aAAa,CAAC,CAAA;IACnE,CAAC;IAED,eAAe,CACb,QAA6B,EAC7B,WAAmB,EACnB,aAAsB;QAEtB,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC1B,OAAM;QACR,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;QACvE,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa,IAAI,QAAQ,KAAK,aAAa,CAAC,EAAE,CAAC;YAC/D,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,QAAQ,CAAC,WAAwB,CAAA;IAC1C,CAAC;CACF,CAAA;AAnEY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;qCAIoC,oCAAgB;GAHpD,eAAe,CAmE3B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mbc-cqrs-serverless/core",
3
- "version": "1.3.1",
3
+ "version": "1.3.3",
4
4
  "description": "CQRS and event base core",
5
5
  "keywords": [
6
6
  "mbc",
@@ -88,5 +88,5 @@
88
88
  "serverless-step-functions-local": "^0.5.1",
89
89
  "supertest": "^7.0.0"
90
90
  },
91
- "gitHead": "9acc296b83e2120876c13dae8d44175345d3aa98"
91
+ "gitHead": "3307005192eff1d8ac1eae7e72b838fe7ff95af9"
92
92
  }
@@ -1,2 +0,0 @@
1
- export declare class AuthModule {
2
- }
@@ -1,30 +0,0 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.AuthModule = void 0;
10
- const common_1 = require("@nestjs/common");
11
- const roles_guard_1 = require("../guard/roles.guard");
12
- const explorer_service_1 = require("../services/explorer.service");
13
- const authz_bootstrap_service_1 = require("./authz-bootstrap.service");
14
- const group_role_resolver_registry_1 = require("./group-role-resolver.registry");
15
- let AuthModule = class AuthModule {
16
- };
17
- exports.AuthModule = AuthModule;
18
- exports.AuthModule = AuthModule = __decorate([
19
- (0, common_1.Global)(),
20
- (0, common_1.Module)({
21
- providers: [
22
- explorer_service_1.ExplorerService,
23
- group_role_resolver_registry_1.GroupRoleResolverRegistry,
24
- authz_bootstrap_service_1.AuthzBootstrapService,
25
- roles_guard_1.RolesGuard,
26
- ],
27
- exports: [group_role_resolver_registry_1.GroupRoleResolverRegistry, roles_guard_1.RolesGuard, explorer_service_1.ExplorerService],
28
- })
29
- ], AuthModule);
30
- //# sourceMappingURL=auth.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../../src/auth/auth.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA+C;AAE/C,sDAAiD;AACjD,mEAA8D;AAC9D,uEAAiE;AACjE,iFAA0E;AAYnE,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IAVtB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT,kCAAe;YACf,wDAAyB;YACzB,+CAAqB;YACrB,wBAAU;SACX;QACD,OAAO,EAAE,CAAC,wDAAyB,EAAE,wBAAU,EAAE,kCAAe,CAAC;KAClE,CAAC;GACW,UAAU,CAAG"}
@@ -1,11 +0,0 @@
1
- import { OnApplicationBootstrap } from '@nestjs/common';
2
- import { ModuleRef } from '@nestjs/core';
3
- import { ExplorerService } from '../services/explorer.service';
4
- import { GroupRoleResolverRegistry } from './group-role-resolver.registry';
5
- export declare class AuthzBootstrapService implements OnApplicationBootstrap {
6
- private readonly explorerService;
7
- private readonly moduleRef;
8
- private readonly registry;
9
- constructor(explorerService: ExplorerService, moduleRef: ModuleRef, registry: GroupRoleResolverRegistry);
10
- onApplicationBootstrap(): void;
11
- }
@@ -1,47 +0,0 @@
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.AuthzBootstrapService = void 0;
13
- const common_1 = require("@nestjs/common");
14
- const core_1 = require("@nestjs/core");
15
- const explorer_service_1 = require("../services/explorer.service");
16
- const group_role_resolver_registry_1 = require("./group-role-resolver.registry");
17
- let AuthzBootstrapService = class AuthzBootstrapService {
18
- constructor(explorerService, moduleRef, registry) {
19
- this.explorerService = explorerService;
20
- this.moduleRef = moduleRef;
21
- this.registry = registry;
22
- }
23
- onApplicationBootstrap() {
24
- const types = this.explorerService.exploreGroupRoleResolvers();
25
- if (types.length > 1) {
26
- throw new Error('Only one @GroupRoleResolver() is allowed per application');
27
- }
28
- if (types.length === 0) {
29
- return;
30
- }
31
- const instance = this.moduleRef.get(types[0], {
32
- strict: false,
33
- });
34
- if (!instance) {
35
- throw new Error(`GroupRoleResolver ${types[0].name} was discovered but could not be resolved from DI`);
36
- }
37
- this.registry.set(instance);
38
- }
39
- };
40
- exports.AuthzBootstrapService = AuthzBootstrapService;
41
- exports.AuthzBootstrapService = AuthzBootstrapService = __decorate([
42
- (0, common_1.Injectable)(),
43
- __metadata("design:paramtypes", [explorer_service_1.ExplorerService,
44
- core_1.ModuleRef,
45
- group_role_resolver_registry_1.GroupRoleResolverRegistry])
46
- ], AuthzBootstrapService);
47
- //# sourceMappingURL=authz-bootstrap.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"authz-bootstrap.service.js","sourceRoot":"","sources":["../../src/auth/authz-bootstrap.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAmE;AACnE,uCAAwC;AAExC,mEAA8D;AAE9D,iFAA0E;AAGnE,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAChC,YACmB,eAAgC,EAChC,SAAoB,EACpB,QAAmC;QAFnC,oBAAe,GAAf,eAAe,CAAiB;QAChC,cAAS,GAAT,SAAS,CAAW;QACpB,aAAQ,GAAR,QAAQ,CAA2B;IACnD,CAAC;IAEJ,sBAAsB;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,yBAAyB,EAAE,CAAA;QAE9D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAA;QACH,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAM;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAqB,KAAK,CAAC,CAAC,CAAC,EAAE;YAChE,MAAM,EAAE,KAAK;SACd,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,qBAAqB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,mDAAmD,CACtF,CAAA;QACH,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC7B,CAAC;CACF,CAAA;AAhCY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;qCAGyB,kCAAe;QACrB,gBAAS;QACV,wDAAyB;GAJ3C,qBAAqB,CAgCjC"}
@@ -1,13 +0,0 @@
1
- import { JwtClaims } from '../context/invoke';
2
- export interface TenantGroupMembership {
3
- tenant: string;
4
- groups: string[];
5
- }
6
- export interface ResolveGroupRolesInput {
7
- tenantCode: string;
8
- groupIds: string[];
9
- claims?: JwtClaims;
10
- }
11
- export interface IGroupRoleResolver {
12
- resolveRoles(input: ResolveGroupRolesInput): Promise<string[]>;
13
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=group-role-resolver.interface.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"group-role-resolver.interface.js","sourceRoot":"","sources":["../../src/auth/group-role-resolver.interface.ts"],"names":[],"mappings":""}
@@ -1,6 +0,0 @@
1
- import { IGroupRoleResolver } from './group-role-resolver.interface';
2
- export declare class GroupRoleResolverRegistry {
3
- private resolver?;
4
- set(resolver: IGroupRoleResolver): void;
5
- get(): IGroupRoleResolver | undefined;
6
- }
@@ -1,26 +0,0 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.GroupRoleResolverRegistry = void 0;
10
- const common_1 = require("@nestjs/common");
11
- let GroupRoleResolverRegistry = class GroupRoleResolverRegistry {
12
- set(resolver) {
13
- if (this.resolver) {
14
- throw new Error('Only one @GroupRoleResolver() is allowed per application');
15
- }
16
- this.resolver = resolver;
17
- }
18
- get() {
19
- return this.resolver;
20
- }
21
- };
22
- exports.GroupRoleResolverRegistry = GroupRoleResolverRegistry;
23
- exports.GroupRoleResolverRegistry = GroupRoleResolverRegistry = __decorate([
24
- (0, common_1.Injectable)()
25
- ], GroupRoleResolverRegistry);
26
- //# sourceMappingURL=group-role-resolver.registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"group-role-resolver.registry.js","sourceRoot":"","sources":["../../src/auth/group-role-resolver.registry.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA2C;AAKpC,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IAGpC,GAAG,CAAC,QAA4B;QAC9B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAA;QACH,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;CACF,CAAA;AAfY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,mBAAU,GAAE;GACA,yBAAyB,CAerC"}
@@ -1,4 +0,0 @@
1
- export * from './auth.module';
2
- export * from './authz-bootstrap.service';
3
- export * from './group-role-resolver.interface';
4
- export * from './group-role-resolver.registry';
@@ -1,21 +0,0 @@
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.module"), exports);
18
- __exportStar(require("./authz-bootstrap.service"), exports);
19
- __exportStar(require("./group-role-resolver.interface"), exports);
20
- __exportStar(require("./group-role-resolver.registry"), exports);
21
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA6B;AAC7B,4DAAyC;AACzC,kEAA+C;AAC/C,iEAA8C"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Marks a class as the application's `IGroupRoleResolver` (exactly one per app).
3
- * Discovered at bootstrap and registered in `GroupRoleResolverRegistry`.
4
- *
5
- * Applies `@Injectable()` with default (singleton) scope. Do **not** add `@Injectable()`
6
- * on the same class — a second decorator can override scope (e.g. `REQUEST`) and break
7
- * bootstrap, which resolves one instance at application startup.
8
- */
9
- export declare function GroupRoleResolver(): ClassDecorator;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GroupRoleResolver = GroupRoleResolver;
4
- const common_1 = require("@nestjs/common");
5
- const constants_1 = require("./constants");
6
- /**
7
- * Marks a class as the application's `IGroupRoleResolver` (exactly one per app).
8
- * Discovered at bootstrap and registered in `GroupRoleResolverRegistry`.
9
- *
10
- * Applies `@Injectable()` with default (singleton) scope. Do **not** add `@Injectable()`
11
- * on the same class — a second decorator can override scope (e.g. `REQUEST`) and break
12
- * bootstrap, which resolves one instance at application startup.
13
- */
14
- function GroupRoleResolver() {
15
- return (0, common_1.applyDecorators)((0, common_1.SetMetadata)(constants_1.GROUP_ROLE_RESOLVER_METADATA, true), (0, common_1.Injectable)());
16
- }
17
- //# sourceMappingURL=group-role-resolver.decorator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"group-role-resolver.decorator.js","sourceRoot":"","sources":["../../src/decorators/group-role-resolver.decorator.ts"],"names":[],"mappings":";;AAYA,8CAKC;AAjBD,2CAAyE;AAEzE,2CAA0D;AAE1D;;;;;;;GAOG;AACH,SAAgB,iBAAiB;IAC/B,OAAO,IAAA,wBAAe,EACpB,IAAA,oBAAW,EAAC,wCAA4B,EAAE,IAAI,CAAC,EAC/C,IAAA,mBAAU,GAAE,CACK,CAAA;AACrB,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Decorator to register a class as a Notification Transport.
3
- * Automatically marks the class as an @Injectable() provider.
4
- * @param name The unique identifier for this transport (e.g., 'pusher', 'appsync-event')
5
- */
6
- export declare function NotificationTransport(name: string): ClassDecorator;
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NotificationTransport = NotificationTransport;
4
- const common_1 = require("@nestjs/common");
5
- const constants_1 = require("./constants");
6
- /**
7
- * Decorator to register a class as a Notification Transport.
8
- * Automatically marks the class as an @Injectable() provider.
9
- * @param name The unique identifier for this transport (e.g., 'pusher', 'appsync-event')
10
- */
11
- function NotificationTransport(name) {
12
- return (0, common_1.applyDecorators)((0, common_1.SetMetadata)(constants_1.NOTIFICATION_TRANSPORT_METADATA, name), (0, common_1.Injectable)());
13
- }
14
- //# sourceMappingURL=notification-transport.decorator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notification-transport.decorator.js","sourceRoot":"","sources":["../../src/decorators/notification-transport.decorator.ts"],"names":[],"mappings":";;AASA,sDAKC;AAdD,2CAAyE;AAEzE,2CAA6D;AAE7D;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,IAAY;IAChD,OAAO,IAAA,wBAAe,EACpB,IAAA,oBAAW,EAAC,2CAA+B,EAAE,IAAI,CAAC,EAClD,IAAA,mBAAU,GAAE,CACK,CAAA;AACrB,CAAC"}
@@ -1,8 +0,0 @@
1
- /** Built-in transports and their required endpoint environment variables. */
2
- export declare const BUILTIN_NOTIFICATION_TRANSPORT_ENV: Record<string, string>;
3
- /**
4
- * Parses NOTIFICATION_TRANSPORTS the same way as NotificationEventHandler.
5
- * Defaults to appsync-graphql when unset or empty.
6
- */
7
- export declare function parseNotificationTransports(raw: string | undefined): string[];
8
- export declare function validateBuiltinNotificationTransportEnv(config: Record<string, unknown>): void;
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BUILTIN_NOTIFICATION_TRANSPORT_ENV = void 0;
4
- exports.parseNotificationTransports = parseNotificationTransports;
5
- exports.validateBuiltinNotificationTransportEnv = validateBuiltinNotificationTransportEnv;
6
- const enums_1 = require("./notifications/enums");
7
- /** Built-in transports and their required endpoint environment variables. */
8
- exports.BUILTIN_NOTIFICATION_TRANSPORT_ENV = {
9
- [enums_1.NotificationTransports.APPSYNC_GRAPHQL]: 'APPSYNC_ENDPOINT',
10
- [enums_1.NotificationTransports.APPSYNC_EVENT]: 'APPSYNC_EVENTS_ENDPOINT',
11
- };
12
- /**
13
- * Parses NOTIFICATION_TRANSPORTS the same way as NotificationEventHandler.
14
- * Defaults to appsync-graphql when unset or empty.
15
- */
16
- function parseNotificationTransports(raw) {
17
- const names = (raw ?? '')
18
- .split(',')
19
- .map((s) => s.trim())
20
- .filter(Boolean);
21
- return names.length > 0 ? names : [enums_1.NotificationTransports.APPSYNC_GRAPHQL];
22
- }
23
- function validateBuiltinNotificationTransportEnv(config) {
24
- const active = parseNotificationTransports(config.NOTIFICATION_TRANSPORTS);
25
- for (const name of active) {
26
- const envKey = exports.BUILTIN_NOTIFICATION_TRANSPORT_ENV[name];
27
- if (!envKey) {
28
- continue;
29
- }
30
- const value = config[envKey];
31
- if (typeof value !== 'string' || !value.trim()) {
32
- throw new Error(`Notification transport "${name}" is enabled (NOTIFICATION_TRANSPORTS) but ${envKey} is not set.`);
33
- }
34
- }
35
- }
36
- //# sourceMappingURL=notification-env.validation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notification-env.validation.js","sourceRoot":"","sources":["../src/notification-env.validation.ts"],"names":[],"mappings":";;;AAYA,kEAMC;AAED,0FAoBC;AAxCD,iDAA8D;AAE9D,6EAA6E;AAChE,QAAA,kCAAkC,GAA2B;IACxE,CAAC,8BAAsB,CAAC,eAAe,CAAC,EAAE,kBAAkB;IAC5D,CAAC,8BAAsB,CAAC,aAAa,CAAC,EAAE,yBAAyB;CAClE,CAAA;AAED;;;GAGG;AACH,SAAgB,2BAA2B,CAAC,GAAuB;IACjE,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;SACtB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC,CAAA;IAClB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,8BAAsB,CAAC,eAAe,CAAC,CAAA;AAC5E,CAAC;AAED,SAAgB,uCAAuC,CACrD,MAA+B;IAE/B,MAAM,MAAM,GAAG,2BAA2B,CACxC,MAAM,CAAC,uBAA6C,CACrD,CAAA;IAED,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,0CAAkC,CAAC,IAAI,CAAC,CAAA;QACvD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,SAAQ;QACV,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;QAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CACb,2BAA2B,IAAI,8CAA8C,MAAM,cAAc,CAClG,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,44 +0,0 @@
1
- import { ConfigService } from '@nestjs/config';
2
- import { INotification } from '../interfaces';
3
- import { INotificationTransport } from './interfaces';
4
- export declare class AppSyncEventsService implements INotificationTransport {
5
- private readonly config;
6
- private readonly logger;
7
- private readonly url;
8
- private readonly namespace;
9
- private readonly signer;
10
- constructor(config: ConfigService);
11
- /**
12
- * Publish INotification to an AppSync Events channel via IAM SigV4.
13
- *
14
- * Channel structure (max 5 segments, seg 1 = namespace):
15
- * /{namespace}/{tenantCode}/{action}/{sanitizedId}
16
- *
17
- * Client subscription options (wildcard /* catches all sub-channels):
18
- * /{namespace}/{tenantCode}/* — all events for tenant
19
- * /{namespace}/{tenantCode}/{action}/* — filtered by action
20
- * /{namespace}/{tenantCode}/{action}/{id} — specific command
21
- *
22
- * Requires: Lambda execution role must have appsync:EventPublish permission.
23
- */
24
- sendMessage(notification: INotification): Promise<void>;
25
- /**
26
- * Resolves the most specific channel path for a notification.
27
- * Non-alphanumeric characters (e.g. #, @) are sanitized to dashes
28
- * since AppSync Events channel segments only allow [a-zA-Z0-9-].
29
- */
30
- resolveChannel(notification: INotification): string;
31
- /**
32
- * Formats a string to comply with AppSync Events API channel segment rules:
33
- * 1. Only alphanumeric characters and dashes.
34
- * 2. Cannot start or end with a dash.
35
- * 3. Maximum length of 50 characters.
36
- */
37
- private sanitizeSegment;
38
- private postToChannel;
39
- /**
40
- * Builds and signs an HttpRequest for the given channel and notification.
41
- * Separating signing from the fetch call makes each step independently testable.
42
- */
43
- private signRequest;
44
- }