@nathapp/nestjs-notification 2.1.4 → 3.0.0-rc.4

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 (123) hide show
  1. package/CLAUDE.md +21 -0
  2. package/UPGRADE-PLAN-PHASE7-8.md +307 -0
  3. package/UPGRADE-PLAN-PHASE9.md +361 -0
  4. package/UPGRADE-PLAN.md +425 -0
  5. package/dist/email/email.interface.d.ts +1 -1
  6. package/dist/email/email.provider.d.ts +2 -2
  7. package/dist/email/email.provider.js +7 -5
  8. package/dist/email/email.provider.js.map +1 -1
  9. package/dist/email/index.d.ts +1 -3
  10. package/dist/email/index.js +1 -6
  11. package/dist/email/index.js.map +1 -1
  12. package/dist/index.d.ts +4 -3
  13. package/dist/index.js +22 -3
  14. package/dist/index.js.map +1 -1
  15. package/dist/interface/index.d.ts +3 -3
  16. package/dist/interface/message.interface.d.ts +11 -4
  17. package/dist/interface/payload.interface.d.ts +71 -0
  18. package/dist/{push-notification/push-notification-module.interface.js → interface/payload.interface.js} +1 -2
  19. package/dist/interface/payload.interface.js.map +1 -0
  20. package/dist/interface/result.interface.d.ts +2 -1
  21. package/dist/notification/errors.d.ts +3 -0
  22. package/dist/notification/errors.js +11 -0
  23. package/dist/notification/errors.js.map +1 -0
  24. package/dist/notification/index.d.ts +6 -2
  25. package/dist/notification/index.js +7 -1
  26. package/dist/notification/index.js.map +1 -1
  27. package/dist/notification/notification-provider.factory.d.ts +5 -0
  28. package/dist/notification/notification-provider.factory.js +33 -0
  29. package/dist/notification/notification-provider.factory.js.map +1 -0
  30. package/dist/notification/notification.interceptor.d.ts +18 -0
  31. package/dist/notification/notification.interceptor.js +5 -0
  32. package/dist/notification/notification.interceptor.js.map +1 -0
  33. package/dist/notification/notification.module.d.ts +29 -19
  34. package/dist/notification/notification.module.js +338 -65
  35. package/dist/notification/notification.module.js.map +1 -1
  36. package/dist/notification/notification.service.d.ts +18 -2
  37. package/dist/notification/notification.service.js +277 -16
  38. package/dist/notification/notification.service.js.map +1 -1
  39. package/dist/notification/provider-config.d.ts +17 -0
  40. package/dist/{interface/payload.inteface.js → notification/provider-config.js} +1 -1
  41. package/dist/notification/provider-config.js.map +1 -0
  42. package/dist/push-notification/fcm-push-notification.provider.d.ts +3 -0
  43. package/dist/push-notification/fcm-push-notification.provider.js +17 -2
  44. package/dist/push-notification/fcm-push-notification.provider.js.map +1 -1
  45. package/dist/push-notification/firebase.interface.d.ts +1 -0
  46. package/dist/push-notification/index.d.ts +1 -4
  47. package/dist/push-notification/index.js +1 -5
  48. package/dist/push-notification/index.js.map +1 -1
  49. package/dist/push-notification/push-notification-provider.manager.d.ts +8 -3
  50. package/dist/push-notification/push-notification-provider.manager.js +12 -3
  51. package/dist/push-notification/push-notification-provider.manager.js.map +1 -1
  52. package/dist/push-notification/push-notification.provider.d.ts +1 -0
  53. package/dist/push-notification/push-notification.provider.js.map +1 -1
  54. package/dist/push-notification/push-notification.service.js +3 -2
  55. package/dist/push-notification/push-notification.service.js.map +1 -1
  56. package/dist/push-notification/user-token.store.js +7 -7
  57. package/dist/push-notification/user-token.store.js.map +1 -1
  58. package/dist/sms/constant.d.ts +1 -0
  59. package/dist/sms/constant.js +5 -0
  60. package/dist/sms/constant.js.map +1 -0
  61. package/dist/sms/index.d.ts +3 -2
  62. package/dist/sms/index.js +6 -2
  63. package/dist/sms/index.js.map +1 -1
  64. package/dist/sms/sms.provider.d.ts +9 -0
  65. package/dist/sms/sms.provider.js +7 -0
  66. package/dist/sms/sms.provider.js.map +1 -0
  67. package/dist/sms/sms.service.d.ts +8 -7
  68. package/dist/sms/sms.service.js +30 -2
  69. package/dist/sms/sms.service.js.map +1 -1
  70. package/dist/template/constant.d.ts +1 -0
  71. package/dist/template/constant.js +2 -1
  72. package/dist/template/constant.js.map +1 -1
  73. package/dist/template/engines/string-format.engine.d.ts +6 -0
  74. package/dist/template/engines/string-format.engine.js +17 -0
  75. package/dist/template/engines/string-format.engine.js.map +1 -0
  76. package/dist/template/fake-template.loader.js +14 -18
  77. package/dist/template/fake-template.loader.js.map +1 -1
  78. package/dist/template/index.d.ts +4 -2
  79. package/dist/template/index.js +4 -1
  80. package/dist/template/index.js.map +1 -1
  81. package/dist/template/template-engine.d.ts +5 -0
  82. package/dist/template/template-engine.js +3 -0
  83. package/dist/template/template-engine.js.map +1 -0
  84. package/dist/template/template.loader.d.ts +4 -1
  85. package/dist/template/template.loader.js +22 -14
  86. package/dist/template/template.loader.js.map +1 -1
  87. package/dist/whatsapp/constant.d.ts +2 -0
  88. package/dist/whatsapp/constant.js +6 -0
  89. package/dist/whatsapp/constant.js.map +1 -0
  90. package/dist/whatsapp/index.d.ts +3 -0
  91. package/dist/whatsapp/index.js +11 -0
  92. package/dist/whatsapp/index.js.map +1 -0
  93. package/dist/whatsapp/whatsapp.provider.d.ts +9 -0
  94. package/dist/whatsapp/whatsapp.provider.js +7 -0
  95. package/dist/whatsapp/whatsapp.provider.js.map +1 -0
  96. package/dist/whatsapp/whatsapp.service.d.ts +9 -0
  97. package/dist/whatsapp/whatsapp.service.js +35 -0
  98. package/dist/whatsapp/whatsapp.service.js.map +1 -0
  99. package/docs/20260214-fix-plan-notification.md +149 -0
  100. package/docs/20260214-fix-plan-post-refactor.md +118 -0
  101. package/docs/20260214-nestjs-notification-review.md +390 -0
  102. package/docs/20260214-review-post-refactor.md +285 -0
  103. package/docs/20260215-review-notification-post-fix.md +933 -0
  104. package/package.json +2 -1
  105. package/dist/email/email-provider.factory.d.ts +0 -5
  106. package/dist/email/email-provider.factory.js +0 -18
  107. package/dist/email/email-provider.factory.js.map +0 -1
  108. package/dist/email/email.module.d.ts +0 -27
  109. package/dist/email/email.module.js +0 -110
  110. package/dist/email/email.module.js.map +0 -1
  111. package/dist/interface/payload.inteface.d.ts +0 -22
  112. package/dist/interface/payload.inteface.js.map +0 -1
  113. package/dist/push-notification/push-notification-module.interface.d.ts +0 -33
  114. package/dist/push-notification/push-notification-module.interface.js.map +0 -1
  115. package/dist/push-notification/push-notification-provider-module.factory.d.ts +0 -5
  116. package/dist/push-notification/push-notification-provider-module.factory.js +0 -13
  117. package/dist/push-notification/push-notification-provider-module.factory.js.map +0 -1
  118. package/dist/push-notification/push-notification-provider.factory.d.ts +0 -5
  119. package/dist/push-notification/push-notification-provider.factory.js +0 -16
  120. package/dist/push-notification/push-notification-provider.factory.js.map +0 -1
  121. package/dist/push-notification/push-notification.module.d.ts +0 -15
  122. package/dist/push-notification/push-notification.module.js +0 -189
  123. package/dist/push-notification/push-notification.module.js.map +0 -1
@@ -0,0 +1,71 @@
1
+ import { DeviceToken } from '../push-notification';
2
+ import { EmailAttachment } from './message.interface';
3
+ import { SendResult } from './result.interface';
4
+ export interface EmailNotificationPayload {
5
+ email: string;
6
+ templateCode: string;
7
+ options?: {
8
+ locale?: string;
9
+ fallbackLocal?: string;
10
+ args?: any;
11
+ };
12
+ attachments?: EmailAttachment[];
13
+ }
14
+ export interface PushNotificationPayload {
15
+ userId?: string | number;
16
+ deviceToken?: DeviceToken;
17
+ templateCode: string;
18
+ options?: {
19
+ locale?: string;
20
+ fallbackLocal?: string;
21
+ args?: any;
22
+ };
23
+ }
24
+ export type NotificationChannel = 'email' | 'push' | 'sms' | 'whatsapp';
25
+ export interface NotificationPayload {
26
+ templateCode: string;
27
+ channels: NotificationChannel[];
28
+ fallback?: NotificationChannel[];
29
+ options?: {
30
+ locale?: string;
31
+ fallbackLocale?: string;
32
+ args?: any;
33
+ };
34
+ email?: string;
35
+ userId?: string | number;
36
+ deviceToken?: DeviceToken;
37
+ phoneNumber?: string;
38
+ countryIso2?: string;
39
+ dialCode?: string;
40
+ whatsappTemplateName?: string;
41
+ mediaUrl?: string;
42
+ attachments?: EmailAttachment[];
43
+ }
44
+ export interface SmsNotificationPayload {
45
+ phoneNumber: string;
46
+ templateCode: string;
47
+ options?: {
48
+ locale?: string;
49
+ fallbackLocale?: string;
50
+ args?: any;
51
+ };
52
+ countryIso2?: string;
53
+ dialCode?: string;
54
+ }
55
+ export interface WhatsAppNotificationPayload {
56
+ phoneNumber: string;
57
+ templateCode: string;
58
+ options?: {
59
+ locale?: string;
60
+ fallbackLocale?: string;
61
+ args?: any;
62
+ };
63
+ whatsappTemplateName?: string;
64
+ mediaUrl?: string;
65
+ }
66
+ export interface NotificationResult {
67
+ results: Partial<Record<NotificationChannel, SendResult>>;
68
+ success: boolean;
69
+ fallbackAttempted?: NotificationChannel[];
70
+ fallbackSucceeded?: NotificationChannel;
71
+ }
@@ -1,4 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- ;
4
- //# sourceMappingURL=push-notification-module.interface.js.map
3
+ //# sourceMappingURL=payload.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload.interface.js","sourceRoot":"","sources":["../../lib/interface/payload.interface.ts"],"names":[],"mappings":""}
@@ -2,7 +2,8 @@ export interface SendResult {
2
2
  success: boolean;
3
3
  message?: string;
4
4
  requestId?: string;
5
- extra?: any;
5
+ error?: unknown;
6
+ extra?: unknown;
6
7
  }
7
8
  export interface BatchSendResult {
8
9
  results: SendResult[];
@@ -0,0 +1,3 @@
1
+ export declare class NotificationConfigError extends Error {
2
+ constructor(service: string);
3
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotificationConfigError = void 0;
4
+ class NotificationConfigError extends Error {
5
+ constructor(service) {
6
+ super(`${service} is not configured. Configure it in NotificationModule or set strict: false.`);
7
+ this.name = 'NotificationConfigError';
8
+ }
9
+ }
10
+ exports.NotificationConfigError = NotificationConfigError;
11
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../lib/notification/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,uBAAwB,SAAQ,KAAK;IAChD,YAAY,OAAe;QACzB,KAAK,CAAC,GAAG,OAAO,8EAA8E,CAAC,CAAC;QAChG,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AALD,0DAKC"}
@@ -1,4 +1,8 @@
1
1
  import { NOTIFICATION_OPTIONS, NOTIFICATION_SERVICE, TEMPLATE_SERVICE } from "./constant";
2
- import { NotificationModule, NotificationModuleOptions } from "./notification.module";
2
+ import { NotificationModule, NotificationModuleAsyncOptions, NotificationModuleOptions, NotificationModuleOptionsFactory } from "./notification.module";
3
3
  import { NotificationService } from "./notification.service";
4
- export { NOTIFICATION_OPTIONS, NOTIFICATION_SERVICE, TEMPLATE_SERVICE, NotificationModule, NotificationModuleOptions, NotificationService, };
4
+ import { NotificationConfigError } from "./errors";
5
+ import { NotificationInterceptor, NotificationContext, NOTIFICATION_INTERCEPTORS } from "./notification.interceptor";
6
+ import { ProviderConfig, ChannelProviderMap } from "./provider-config";
7
+ import { NotificationProviderFactory } from "./notification-provider.factory";
8
+ export { NOTIFICATION_OPTIONS, NOTIFICATION_SERVICE, TEMPLATE_SERVICE, NotificationModule, NotificationModuleOptions, NotificationModuleAsyncOptions, NotificationModuleOptionsFactory, NotificationService, NotificationConfigError, NotificationInterceptor, NotificationContext, NOTIFICATION_INTERCEPTORS, ProviderConfig, ChannelProviderMap, NotificationProviderFactory, };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NotificationService = exports.NotificationModule = exports.TEMPLATE_SERVICE = exports.NOTIFICATION_SERVICE = exports.NOTIFICATION_OPTIONS = void 0;
3
+ exports.NotificationProviderFactory = exports.NOTIFICATION_INTERCEPTORS = exports.NotificationConfigError = exports.NotificationService = exports.NotificationModule = exports.TEMPLATE_SERVICE = exports.NOTIFICATION_SERVICE = exports.NOTIFICATION_OPTIONS = void 0;
4
4
  const constant_1 = require("./constant");
5
5
  Object.defineProperty(exports, "NOTIFICATION_OPTIONS", { enumerable: true, get: function () { return constant_1.NOTIFICATION_OPTIONS; } });
6
6
  Object.defineProperty(exports, "NOTIFICATION_SERVICE", { enumerable: true, get: function () { return constant_1.NOTIFICATION_SERVICE; } });
@@ -9,4 +9,10 @@ const notification_module_1 = require("./notification.module");
9
9
  Object.defineProperty(exports, "NotificationModule", { enumerable: true, get: function () { return notification_module_1.NotificationModule; } });
10
10
  const notification_service_1 = require("./notification.service");
11
11
  Object.defineProperty(exports, "NotificationService", { enumerable: true, get: function () { return notification_service_1.NotificationService; } });
12
+ const errors_1 = require("./errors");
13
+ Object.defineProperty(exports, "NotificationConfigError", { enumerable: true, get: function () { return errors_1.NotificationConfigError; } });
14
+ const notification_interceptor_1 = require("./notification.interceptor");
15
+ Object.defineProperty(exports, "NOTIFICATION_INTERCEPTORS", { enumerable: true, get: function () { return notification_interceptor_1.NOTIFICATION_INTERCEPTORS; } });
16
+ const notification_provider_factory_1 = require("./notification-provider.factory");
17
+ Object.defineProperty(exports, "NotificationProviderFactory", { enumerable: true, get: function () { return notification_provider_factory_1.NotificationProviderFactory; } });
12
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/notification/index.ts"],"names":[],"mappings":";;;AAAA,yCAA0F;AAKxF,qGALO,+BAAoB,OAKP;AACpB,qGAN6B,+BAAoB,OAM7B;AACpB,iGAPmD,2BAAgB,OAOnD;AANlB,+DAAwJ;AAOtJ,mGAPO,wCAAkB,OAOP;AANpB,iEAA6D;AAU3D,oGAVO,0CAAmB,OAUP"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/notification/index.ts"],"names":[],"mappings":";;;AAAA,yCAA0F;AASxF,qGATO,+BAAoB,OASP;AACpB,qGAV6B,+BAAoB,OAU7B;AACpB,iGAXmD,2BAAgB,OAWnD;AAVlB,+DAAwJ;AAWtJ,mGAXO,wCAAkB,OAWP;AAVpB,iEAA6D;AAc3D,oGAdO,0CAAmB,OAcP;AAbrB,qCAAmD;AAcjD,wGAdO,gCAAuB,OAcP;AAbzB,yEAAqH;AAgBnH,0GAhBqD,oDAAyB,OAgBrD;AAd3B,mFAA8E;AAiB5E,4GAjBO,2DAA2B,OAiBP"}
@@ -0,0 +1,5 @@
1
+ import { ProviderConfig, ChannelProviderMap } from './provider-config';
2
+ export declare class NotificationProviderFactory {
3
+ private static readonly logger;
4
+ static create<C extends keyof ChannelProviderMap>(config: ProviderConfig<C>): ChannelProviderMap[C];
5
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotificationProviderFactory = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const email_1 = require("../email");
6
+ const push_notification_1 = require("../push-notification");
7
+ const sms_1 = require("../sms");
8
+ const whatsapp_1 = require("../whatsapp");
9
+ const CHANNEL_BASE_CLASSES = {
10
+ email: email_1.EmailProvider,
11
+ push: push_notification_1.PushNotificationProvider,
12
+ sms: sms_1.SmsProvider,
13
+ whatsapp: whatsapp_1.WhatsAppProvider,
14
+ };
15
+ class NotificationProviderFactory {
16
+ static create(config) {
17
+ const { channel, provider, options } = config;
18
+ const baseClass = CHANNEL_BASE_CLASSES[channel];
19
+ if (!baseClass) {
20
+ throw new Error(`Unknown notification channel: ${channel}`);
21
+ }
22
+ const instance = new provider(options);
23
+ if (!(instance instanceof baseClass)) {
24
+ throw new Error(`${provider.name} is not a valid ${channel} provider. ` +
25
+ `Expected ${baseClass.name} subclass.`);
26
+ }
27
+ this.logger.log(`Created ${channel} provider: ${provider.name}`);
28
+ return instance;
29
+ }
30
+ }
31
+ exports.NotificationProviderFactory = NotificationProviderFactory;
32
+ NotificationProviderFactory.logger = new common_1.Logger(NotificationProviderFactory.name);
33
+ //# sourceMappingURL=notification-provider.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-provider.factory.js","sourceRoot":"","sources":["../../lib/notification/notification-provider.factory.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAExC,oCAAyC;AACzC,4DAAgE;AAChE,gCAAqC;AACrC,0CAA+C;AAK/C,MAAM,oBAAoB,GAA6B;IACrD,KAAK,EAAE,qBAAa;IACpB,IAAI,EAAE,4CAAwB;IAC9B,GAAG,EAAE,iBAAW;IAChB,QAAQ,EAAE,2BAAgB;CAC3B,CAAC;AAKF,MAAa,2BAA2B;IAoBtC,MAAM,CAAC,MAAM,CACX,MAAyB;QAEzB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAC9C,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAEhD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iCAAiC,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;QAGD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;QAGvC,IAAI,CAAC,CAAC,QAAQ,YAAY,SAAS,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CACb,GAAG,QAAQ,CAAC,IAAI,mBAAmB,OAAO,aAAa;gBACvD,YAAY,SAAS,CAAC,IAAI,YAAY,CACvC,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,OAAO,cAAc,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,OAAO,QAAiC,CAAC;IAC3C,CAAC;;AA3CH,kEA4CC;AA3CyB,kCAAM,GAAG,IAAI,eAAM,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { SendResult, NotificationChannel } from "../interface";
2
+ export interface NotificationContext {
3
+ channel: NotificationChannel;
4
+ templateCode: string;
5
+ recipient: string;
6
+ resolvedMessage?: {
7
+ subject?: string;
8
+ content: string;
9
+ };
10
+ isFallback?: boolean;
11
+ failedChannel?: NotificationChannel;
12
+ }
13
+ export interface NotificationInterceptor {
14
+ beforeSend?(context: NotificationContext): Promise<NotificationContext> | NotificationContext;
15
+ afterSend?(context: NotificationContext, result: SendResult): Promise<void> | void;
16
+ onError?(context: NotificationContext, error: Error): Promise<void> | void;
17
+ }
18
+ export declare const NOTIFICATION_INTERCEPTORS = "NOTIFICATION_INTERCEPTORS";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NOTIFICATION_INTERCEPTORS = void 0;
4
+ exports.NOTIFICATION_INTERCEPTORS = 'NOTIFICATION_INTERCEPTORS';
5
+ //# sourceMappingURL=notification.interceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.interceptor.js","sourceRoot":"","sources":["../../lib/notification/notification.interceptor.ts"],"names":[],"mappings":";;;AAmBa,QAAA,yBAAyB,GAAG,2BAA2B,CAAC"}
@@ -1,39 +1,52 @@
1
1
  import { DynamicModule, ModuleMetadata, Type } from '@nestjs/common';
2
- import { EmailModuleAsyncOptions, EmailModuleOptions } from '../email';
3
- import { TemplateLoader } from '../template';
2
+ import { TemplateLoader, TemplateEngine } from '../template';
4
3
  import { TemplateService } from '../template/template.service';
5
4
  import { NotificationService } from './notification.service';
6
- import { PushNotificationModuleAsyncOptions, PushNotificationModuleOptions } from '../push-notification';
5
+ import { ProviderConfig } from './provider-config';
6
+ import { ProviderManager } from '../push-notification/push-notification-provider.manager';
7
+ import { UserTokenStore } from '../push-notification/user-token.store';
7
8
  export declare class NotificationModule {
8
9
  static forRoot(options: NotificationModuleOptions): DynamicModule;
9
- static forRootAsync(options: NotificationModuleAsyncOptions): Promise<DynamicModule>;
10
+ static forRootAsync(options: NotificationModuleAsyncOptions): DynamicModule;
11
+ private static createChannelProviders;
12
+ private static groupProvidersByChannel;
13
+ private static createInterceptorProviders;
14
+ private static createTemplateEngine;
10
15
  private static createTemplateLoader;
11
16
  private static createTemplateService;
12
17
  private static createNotificationService;
13
- private static santitizeOptions;
14
- private static isEmailModuleAsyncOption;
15
- private static isPushNotificationModuleAsyncOption;
18
+ private static createProviderManagerAsync;
19
+ private static createUserTokenStoreAsync;
20
+ private static sanitizeOptions;
16
21
  private static createAsyncOptionsProviders;
17
22
  private static createAsyncOptionsProvider;
18
23
  }
19
24
  export interface NotificationModuleOptions {
20
- emailOptions?: EmailModuleOptions | EmailModuleAsyncOptions;
21
- pushNotificationOptions?: PushNotificationModuleOptions | PushNotificationModuleAsyncOptions;
22
- templateLoader: Type<TemplateLoader>;
25
+ providers?: ProviderConfig[];
26
+ templateLoader: Type<TemplateLoader> | ProviderAsyncOptions<TemplateLoader>;
27
+ templateEngine?: Type<TemplateEngine>;
23
28
  templateService?: Type<TemplateService>;
24
29
  notificationService?: Type<NotificationService>;
30
+ interceptors?: Type<any>[];
31
+ strict?: boolean;
32
+ providerManager?: Type<ProviderManager>;
33
+ userTokenStore?: Type<UserTokenStore>;
25
34
  }
26
- export type NotificationModuleOptionsWithoutProvider = Omit<NotificationModuleOptions, 'templateLoader' | 'templateService' | 'notificationService'>;
27
35
  export interface NotificationModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
28
- emailOptions?: EmailModuleOptions | EmailModuleAsyncOptions;
29
- pushNotificationOptions?: PushNotificationModuleOptions | PushNotificationModuleAsyncOptions;
30
- useExisting?: Type<NotificationModuleOptionsFactory>;
31
36
  useClass?: Type<NotificationModuleOptionsFactory>;
32
- useFactory?: (...args: any[]) => Promise<NotificationModuleOptionsWithoutProvider> | NotificationModuleOptionsWithoutProvider;
37
+ useExisting?: Type<NotificationModuleOptionsFactory>;
38
+ useFactory?: (...args: any[]) => NotificationModuleOptions | Promise<NotificationModuleOptions>;
33
39
  inject?: any[];
34
- templateLoader: Type<TemplateLoader> | ProviderAsyncOptions<TemplateLoader>;
40
+ templateEngine?: Type<TemplateEngine> | ProviderAsyncOptions<TemplateEngine>;
41
+ templateLoader?: Type<TemplateLoader> | ProviderAsyncOptions<TemplateLoader>;
35
42
  templateService?: Type<TemplateService> | ProviderAsyncOptions<TemplateService>;
36
43
  notificationService?: Type<NotificationService> | ProviderAsyncOptions<NotificationService>;
44
+ interceptors?: Type<any>[];
45
+ providerManager?: Type<ProviderManager> | ProviderAsyncOptions<ProviderManager>;
46
+ userTokenStore?: Type<UserTokenStore> | ProviderAsyncOptions<UserTokenStore>;
47
+ }
48
+ export interface NotificationModuleOptionsFactory {
49
+ createOptions(): NotificationModuleOptions | Promise<NotificationModuleOptions>;
37
50
  }
38
51
  export interface ProviderAsyncOptions<T = any> extends Pick<ModuleMetadata, 'imports'> {
39
52
  useExisting?: Type<T>;
@@ -41,6 +54,3 @@ export interface ProviderAsyncOptions<T = any> extends Pick<ModuleMetadata, 'imp
41
54
  useFactory?: (...args: any[]) => T | Promise<T>;
42
55
  inject?: any[];
43
56
  }
44
- export interface NotificationModuleOptionsFactory {
45
- createOptions(): NotificationModuleOptionsWithoutProvider | Promise<NotificationModuleOptionsWithoutProvider>;
46
- }