@brilab-mailer/core 0.0.1-beta.49 → 0.0.1-beta.50

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.
@@ -1 +1 @@
1
- {"version":3,"file":"mailer.module.d.ts","sourceRoot":"","sources":["../../src/lib/mailer.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAa/D,OAAO,KAAK,EAAuB,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEzE,qBAEa,YAAY;IACxB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,GAAG,aAAa;CAqD1D"}
1
+ {"version":3,"file":"mailer.module.d.ts","sourceRoot":"","sources":["../../src/lib/mailer.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAc/D,OAAO,KAAK,EAAuB,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEzE,qBAEa,YAAY;IACxB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,GAAG,aAAa;CAkE1D"}
@@ -2,7 +2,7 @@ var MailerModule_1;
2
2
  import { __decorate } from "tslib";
3
3
  import { Global, Module } from '@nestjs/common';
4
4
  import { ConfigModule, ConfigService } from '@nestjs/config';
5
- import { MAILER_OPTIONS, MAILER_PROVIDER, MAILER_PROVIDER_NATIVE_CLIENT, MAILER_PROVIDER_OPTIONS, MAILER_RETRY_ATTEMPTS, MAILER_RETRY_BACKOFF_MS, } from '@brilab-mailer/contracts';
5
+ import { MAILER_OPTIONS, MAILER_PROVIDER, MAILER_PROVIDER_NATIVE_CLIENT, MAILER_PROVIDER_OPTIONS, MAILER_RETRY_ATTEMPTS, MAILER_RETRY_BACKOFF_MS, MAILER_TEMPLATE_ENGINE, MAILER_TEMPLATE_ENGINE_OPTIONS, } from '@brilab-mailer/contracts';
6
6
  import { MailerService } from './mailer.service.js';
7
7
  import { MAILER_RETRY_ATTEMPTS_DEFAULT, MAILER_RETRY_BACKOFF_MS_DEFAULT } from "./mailer.constants.js";
8
8
  let MailerModule = MailerModule_1 = class MailerModule {
@@ -30,19 +30,31 @@ let MailerModule = MailerModule_1 = class MailerModule {
30
30
  },
31
31
  inject: [ConfigService],
32
32
  },
33
- {
34
- provide: MAILER_PROVIDER_OPTIONS,
35
- useValue: params.providerOptions || {},
36
- },
37
33
  {
38
34
  provide: MAILER_PROVIDER,
39
35
  useClass: params.providerClass,
40
36
  },
37
+ {
38
+ provide: MAILER_PROVIDER_OPTIONS,
39
+ useValue: params.providerOptions || {},
40
+ },
41
41
  {
42
42
  provide: MAILER_PROVIDER_NATIVE_CLIENT,
43
43
  useFactory: (provider) => provider?.getClient?.(),
44
44
  inject: [MAILER_PROVIDER],
45
45
  },
46
+ ...(params.templateEngineClass
47
+ ? [
48
+ {
49
+ provide: MAILER_TEMPLATE_ENGINE,
50
+ useClass: params.templateEngineClass,
51
+ },
52
+ {
53
+ provide: MAILER_TEMPLATE_ENGINE_OPTIONS,
54
+ useValue: params.templateEngineOptions || {},
55
+ },
56
+ ]
57
+ : []),
46
58
  MailerService,
47
59
  ],
48
60
  exports: [
@@ -1,13 +1,15 @@
1
1
  import { MailerMessagesResolved } from '@brilab-mailer/contracts';
2
- import type { MailerProvider, MailerNativeClientType } from '@brilab-mailer/contracts';
2
+ import type { MailerProvider, MailerNativeClientType, MailerTemplateEngine } from '@brilab-mailer/contracts';
3
3
  import type { MailerModuleOptions } from "./types.js";
4
4
  import { MailerSender } from "./mailer-sender.js";
5
5
  export declare class MailerService<Provider extends MailerProvider<any, any, any> = MailerProvider> {
6
6
  private readonly options;
7
7
  private readonly provider;
8
8
  private readonly native_client?;
9
- constructor(options: MailerModuleOptions, provider: Provider, native_client?: MailerNativeClientType<Provider> | undefined);
9
+ private readonly _templater?;
10
+ constructor(options: MailerModuleOptions, provider: Provider, native_client?: MailerNativeClientType<Provider> | undefined, _templater?: MailerTemplateEngine | undefined);
10
11
  get nativeClient(): MailerNativeClientType<Provider>;
12
+ get templater(): MailerTemplateEngine;
11
13
  sender(): MailerSender<object, Provider>;
12
14
  send(resolved: MailerMessagesResolved): Promise<void>;
13
15
  private withRetry;
@@ -1 +1 @@
1
- {"version":3,"file":"mailer.service.d.ts","sourceRoot":"","sources":["../../src/lib/mailer.service.ts"],"names":[],"mappings":"AACA,OAAO,EAGyB,sBAAsB,EACrD,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACX,cAAc,EACd,sBAAsB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlD,qBACa,aAAa,CAAC,QAAQ,SAAS,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,cAAc;IAGxF,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAGzB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;gBALd,OAAO,EAAE,mBAAmB,EAE5B,QAAQ,EAAE,QAAQ,EAGlB,aAAa,CAAC,EAAE,sBAAsB,CAAC,QAAQ,CAAC,YAAA;IAGlE,IAAW,YAAY,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAQ1D;IAEM,MAAM,IAAI,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;IAMlC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;YAcpD,SAAS;CAsBvB"}
1
+ {"version":3,"file":"mailer.service.d.ts","sourceRoot":"","sources":["../../src/lib/mailer.service.ts"],"names":[],"mappings":"AACA,OAAO,EAKN,sBAAsB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACX,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlD,qBACa,aAAa,CAAC,QAAQ,SAAS,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,cAAc;IAGxF,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAGzB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAG/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;gBARX,OAAO,EAAE,mBAAmB,EAE5B,QAAQ,EAAE,QAAQ,EAGlB,aAAa,CAAC,EAAE,sBAAsB,CAAC,QAAQ,CAAC,YAAA,EAGhD,UAAU,CAAC,EAAE,oBAAoB,YAAA;IAGnD,IAAW,YAAY,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAQ1D;IAED,IAAW,SAAS,IAAI,oBAAoB,CAI3C;IAEM,MAAM,IAAI,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;IAMlC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;YAYpD,SAAS;CAsBvB"}
@@ -1,16 +1,18 @@
1
1
  import { __decorate, __metadata, __param } from "tslib";
2
2
  import { Inject, Injectable, Optional } from '@nestjs/common';
3
- import { MAILER_OPTIONS, MAILER_PROVIDER, MAILER_PROVIDER_NATIVE_CLIENT, } from '@brilab-mailer/contracts';
3
+ import { MAILER_OPTIONS, MAILER_PROVIDER, MAILER_PROVIDER_NATIVE_CLIENT, MAILER_TEMPLATE_ENGINE, } from '@brilab-mailer/contracts';
4
4
  import { MailerSender } from "./mailer-sender.js";
5
5
  const SINGLE_SEND = true;
6
6
  let MailerService = class MailerService {
7
7
  options;
8
8
  provider;
9
9
  native_client;
10
- constructor(options, provider, native_client) {
10
+ _templater;
11
+ constructor(options, provider, native_client, _templater) {
11
12
  this.options = options;
12
13
  this.provider = provider;
13
14
  this.native_client = native_client;
15
+ this._templater = _templater;
14
16
  }
15
17
  get nativeClient() {
16
18
  const injected = this.native_client;
@@ -21,18 +23,22 @@ let MailerService = class MailerService {
21
23
  return fromProvider;
22
24
  throw new Error('[MailerService] Native client is not available');
23
25
  }
26
+ get templater() {
27
+ const tmp = this._templater;
28
+ if (!tmp || !('render' in tmp))
29
+ throw new Error('[MailerService] Templater client is not available');
30
+ return tmp;
31
+ }
24
32
  sender() {
25
33
  return new MailerSender((...rest) => this.send.call(this, ...rest));
26
34
  }
27
35
  async send(resolved) {
28
36
  const payload = this.provider.createPayload(resolved);
29
- if (SINGLE_SEND) {
30
- await this.provider.send(payload);
31
- return;
32
- }
33
37
  const run = async () => {
34
38
  await this.provider.send(payload);
35
39
  };
40
+ if (SINGLE_SEND)
41
+ return run();
36
42
  return this.withRetry(run);
37
43
  }
38
44
  async withRetry(fn) {
@@ -62,6 +68,8 @@ MailerService = __decorate([
62
68
  __param(1, Inject(MAILER_PROVIDER)),
63
69
  __param(2, Optional()),
64
70
  __param(2, Inject(MAILER_PROVIDER_NATIVE_CLIENT)),
65
- __metadata("design:paramtypes", [Object, Object, Object])
71
+ __param(3, Optional()),
72
+ __param(3, Inject(MAILER_TEMPLATE_ENGINE)),
73
+ __metadata("design:paramtypes", [Object, Object, Object, Object])
66
74
  ], MailerService);
67
75
  export { MailerService };
package/lib/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Type } from "@nestjs/common";
2
- import { MailerProvider, type MailerProviderOptionsType } from "@brilab-mailer/contracts";
2
+ import { MailerProvider, type MailerProviderOptionsType, MailerTemplateEngine, MailerTemplateEngineOptionsType } from "@brilab-mailer/contracts";
3
3
  export interface MailerModuleOptions {
4
4
  maxAttempts: number;
5
5
  backoffMs: [number, number, number];
@@ -8,5 +8,7 @@ export interface MailerModuleParams {
8
8
  providerClass: Type<MailerProvider<any, any>>;
9
9
  providerOptions?: MailerProviderOptionsType;
10
10
  options?: Partial<MailerModuleOptions>;
11
+ templateEngineClass?: Type<MailerTemplateEngine>;
12
+ templateEngineOptions?: MailerTemplateEngineOptionsType;
11
13
  }
12
14
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EACN,cAAc,EACd,KAAK,yBAAyB,EAC9B,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,mBAAmB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IAClC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9C,eAAe,CAAC,EAAE,yBAAyB,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACvC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EACN,cAAc,EACd,KAAK,yBAAyB,EAAE,oBAAoB,EAAE,+BAA+B,EACrF,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,mBAAmB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IAClC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9C,eAAe,CAAC,EAAE,yBAAyB,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACvC,mBAAmB,CAAC,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjD,qBAAqB,CAAC,EAAE,+BAA+B,CAAC;CAExD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brilab-mailer/core",
3
- "version": "0.0.1-beta.49",
3
+ "version": "0.0.1-beta.50",
4
4
  "author": "Bohdan Radchenko <radchenkobs@gmail.com>",
5
5
  "type": "module",
6
6
  "main": "./index.js",
@@ -1,10 +0,0 @@
1
- import { DynamicModule, Type } from '@nestjs/common';
2
- import { MailerProvider, MailerTemplateEngine } from '@brilab-mailer/contracts';
3
- export interface MailerModuleOptions {
4
- providerClass: Type<MailerProvider>;
5
- templateEngineClass: Type<MailerTemplateEngine>;
6
- }
7
- export declare class MailerModule {
8
- static register(options: MailerModuleOptions): DynamicModule;
9
- }
10
- //# sourceMappingURL=mailer_templater.module.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mailer_templater.module.d.ts","sourceRoot":"","sources":["../../src/lib/mailer_templater.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAU,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,EAGN,cAAc,EACd,oBAAoB,EACpB,MAAM,0BAA0B,CAAC;AAGlC,MAAM,WAAW,mBAAmB;IACnC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACpC,mBAAmB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;CAChD;AAED,qBACa,YAAY;IACxB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,aAAa;CAgC5D"}
@@ -1,38 +0,0 @@
1
- var MailerModule_1;
2
- import { __decorate } from "tslib";
3
- import { Module } from '@nestjs/common';
4
- import { ConfigModule } from '@nestjs/config';
5
- import { MAILER_PROVIDER, MAILER_TEMPLATE_ENGINE, } from '@brilab-mailer/contracts';
6
- import { MailerService } from './mailer.service.js';
7
- let MailerModule = MailerModule_1 = class MailerModule {
8
- static register(options) {
9
- if (!options?.providerClass) {
10
- throw new Error('[MailerModule] providerClass is required. ' +
11
- 'Example: MailerModule.register({ providerClass: MailtrapApiProvider, templateEngineClass: HandlebarsTemplateEngine })');
12
- }
13
- if (!options?.templateEngineClass) {
14
- throw new Error('[MailerModule] templateEngineClass is required. ' +
15
- 'Example: MailerModule.register({ providerClass: MailtrapApiProvider, templateEngineClass: HandlebarsTemplateEngine })');
16
- }
17
- return {
18
- module: MailerModule_1,
19
- imports: [ConfigModule],
20
- providers: [
21
- {
22
- provide: MAILER_PROVIDER,
23
- useClass: options.providerClass,
24
- },
25
- {
26
- provide: MAILER_TEMPLATE_ENGINE,
27
- useClass: options.templateEngineClass,
28
- },
29
- MailerService,
30
- ],
31
- exports: [MailerService],
32
- };
33
- }
34
- };
35
- MailerModule = MailerModule_1 = __decorate([
36
- Module({})
37
- ], MailerModule);
38
- export { MailerModule };