@recursyve/nestjs-pidgey 8.0.4 → 9.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/guards/webhook.guard.d.ts +7 -0
  2. package/guards/webhook.guard.js +44 -0
  3. package/index.d.ts +1 -0
  4. package/index.js +9 -4
  5. package/modules/auth0/auth/services/auth.service.js +1 -1
  6. package/modules/auth0/auth.client.js +1 -1
  7. package/modules/auth0/auth0.module.js +1 -1
  8. package/modules/auth0/auth0.service.js +1 -1
  9. package/modules/config/services/pidgey-config-store.service.js +1 -1
  10. package/modules/config/services/pidgey-config.service.d.ts +1 -0
  11. package/modules/config/services/pidgey-config.service.js +5 -4
  12. package/modules/mails/index.d.ts +1 -0
  13. package/modules/mails/index.js +7 -2
  14. package/modules/mails/services/mail-templates.service.js +7 -7
  15. package/modules/mails/services/mails.service.js +3 -3
  16. package/modules/postal/index.js +6 -2
  17. package/modules/postal/services/postal-templates.service.js +7 -7
  18. package/modules/service-base/service-base.js +9 -9
  19. package/modules/service-base/service-base.module.js +1 -1
  20. package/modules/sms/index.js +6 -2
  21. package/modules/sms/services/sms-templates.service.js +7 -7
  22. package/modules/tenants/index.js +6 -2
  23. package/modules/tenants/services/tenants.service.js +2 -2
  24. package/modules/transport/index.js +6 -2
  25. package/modules/transport/services/email-transport.service.js +5 -3
  26. package/modules/transport/services/postal-transport.service.js +3 -3
  27. package/modules/transport/services/sms-transport.service.js +3 -3
  28. package/modules/webhooks/guards/webhook.guard.d.ts +7 -0
  29. package/modules/webhooks/guards/webhook.guard.js +44 -0
  30. package/modules/webhooks/index.d.ts +5 -0
  31. package/modules/webhooks/index.js +21 -0
  32. package/modules/webhooks/models/mail-status-updated-webhooks.event.d.ts +5 -0
  33. package/modules/webhooks/models/mail-status-updated-webhooks.event.js +2 -0
  34. package/modules/webhooks/models/webhooks-event.interface.d.ts +6 -0
  35. package/modules/webhooks/models/webhooks-event.interface.js +2 -0
  36. package/modules/webhooks/models/webhooks.event.d.ts +2 -0
  37. package/modules/webhooks/models/webhooks.event.js +2 -0
  38. package/modules/webhooks/models/webhooks.type.d.ts +1 -0
  39. package/modules/webhooks/models/webhooks.type.js +2 -0
  40. package/package.json +18 -18
  41. package/recursyve-nestjs-pidgey-9.1.0.tgz +0 -0
  42. package/recursyve-nestjs-pidgey-9.1.1.tgz +0 -0
  43. package/testbed.js +2 -2
@@ -0,0 +1,7 @@
1
+ import { CanActivate, ExecutionContext } from "@nestjs/common";
2
+ import { PidgeyConfigService } from "../modules/config/services/pidgey-config.service";
3
+ export declare class PidgeyWebhookGuard implements CanActivate {
4
+ private config;
5
+ constructor(config: PidgeyConfigService);
6
+ canActivate(context: ExecutionContext): boolean;
7
+ }
@@ -0,0 +1,44 @@
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.PidgeyWebhookGuard = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const crypto = require("crypto");
15
+ const pidgey_config_service_1 = require("../modules/config/services/pidgey-config.service");
16
+ let PidgeyWebhookGuard = class PidgeyWebhookGuard {
17
+ constructor(config) {
18
+ this.config = config;
19
+ }
20
+ canActivate(context) {
21
+ const req = context.switchToHttp().getRequest();
22
+ const signature = req.header("pidgey-webhook-signature");
23
+ if (!signature) {
24
+ throw new common_1.NotAcceptableException();
25
+ }
26
+ const timestamp = req.body.timestamp;
27
+ if (!timestamp) {
28
+ throw new common_1.NotAcceptableException();
29
+ }
30
+ const generatedSignature = crypto
31
+ .createHmac("sha256", this.config.webhookSecret)
32
+ .update(`${req.body.type}:${timestamp}`)
33
+ .digest("hex");
34
+ if (signature !== generatedSignature) {
35
+ throw new common_1.NotAcceptableException();
36
+ }
37
+ return true;
38
+ }
39
+ };
40
+ PidgeyWebhookGuard = __decorate([
41
+ (0, common_1.Injectable)(),
42
+ __metadata("design:paramtypes", [pidgey_config_service_1.PidgeyConfigService])
43
+ ], PidgeyWebhookGuard);
44
+ exports.PidgeyWebhookGuard = PidgeyWebhookGuard;
package/index.d.ts CHANGED
@@ -7,3 +7,4 @@ export * from "./modules/sms";
7
7
  export * from "./modules/postal";
8
8
  export * from "./modules/tenants";
9
9
  export * from "./modules/transport";
10
+ export * from "./modules/webhooks";
package/index.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[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);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -36,7 +40,7 @@ let PidgeyModule = PidgeyModule_1 = class PidgeyModule {
36
40
  },
37
41
  {
38
42
  provide: constant_1.TENANT,
39
- useFactory: tenant_factory_1.tenantFactory(config.tenantId),
43
+ useFactory: (0, tenant_factory_1.tenantFactory)(config.tenantId),
40
44
  inject: [tenants_1.TenantsService, pidgey_config_service_1.PidgeyConfigService]
41
45
  },
42
46
  {
@@ -49,8 +53,8 @@ let PidgeyModule = PidgeyModule_1 = class PidgeyModule {
49
53
  }
50
54
  };
51
55
  PidgeyModule = PidgeyModule_1 = __decorate([
52
- common_1.Global(),
53
- common_1.Module({
56
+ (0, common_1.Global)(),
57
+ (0, common_1.Module)({
54
58
  imports: [tenants_1.TenantsModule],
55
59
  providers: [pidgey_config_store_service_1.PidgeyConfigStoreService],
56
60
  exports: [pidgey_config_store_service_1.PidgeyConfigStoreService]
@@ -62,3 +66,4 @@ __exportStar(require("./modules/sms"), exports);
62
66
  __exportStar(require("./modules/postal"), exports);
63
67
  __exportStar(require("./modules/tenants"), exports);
64
68
  __exportStar(require("./modules/transport"), exports);
69
+ __exportStar(require("./modules/webhooks"), exports);
@@ -47,7 +47,7 @@ let AuthService = class AuthService extends auth_client_1.Auth0AuthClient {
47
47
  }
48
48
  };
49
49
  AuthService = __decorate([
50
- common_1.Injectable(),
50
+ (0, common_1.Injectable)(),
51
51
  __metadata("design:paramtypes", [pidgey_config_service_1.PidgeyConfigService, pidgey_config_store_service_1.PidgeyConfigStoreService])
52
52
  ], AuthService);
53
53
  exports.AuthService = AuthService;
@@ -20,7 +20,7 @@ let Auth0AuthClient = class Auth0AuthClient {
20
20
  }
21
21
  };
22
22
  Auth0AuthClient = __decorate([
23
- common_1.Injectable(),
23
+ (0, common_1.Injectable)(),
24
24
  __metadata("design:paramtypes", [pidgey_config_service_1.PidgeyConfigService])
25
25
  ], Auth0AuthClient);
26
26
  exports.Auth0AuthClient = Auth0AuthClient;
@@ -13,7 +13,7 @@ const auth0_service_1 = require("./auth0.service");
13
13
  let Auth0Module = class Auth0Module {
14
14
  };
15
15
  Auth0Module = __decorate([
16
- common_1.Module({
16
+ (0, common_1.Module)({
17
17
  providers: [auth0_service_1.Auth0Service, auth_service_1.AuthService],
18
18
  exports: [auth0_service_1.Auth0Service, auth_service_1.AuthService]
19
19
  })
@@ -21,7 +21,7 @@ let Auth0Service = class Auth0Service {
21
21
  }
22
22
  };
23
23
  Auth0Service = __decorate([
24
- common_1.Injectable(),
24
+ (0, common_1.Injectable)(),
25
25
  __metadata("design:paramtypes", [auth_service_1.AuthService])
26
26
  ], Auth0Service);
27
27
  exports.Auth0Service = Auth0Service;
@@ -59,6 +59,6 @@ let PidgeyConfigStoreService = class PidgeyConfigStoreService {
59
59
  }
60
60
  };
61
61
  PidgeyConfigStoreService = __decorate([
62
- common_1.Injectable()
62
+ (0, common_1.Injectable)()
63
63
  ], PidgeyConfigStoreService);
64
64
  exports.PidgeyConfigStoreService = PidgeyConfigStoreService;
@@ -6,6 +6,7 @@ export declare class PidgeyConfigService {
6
6
  serverConfig: ServerConfig;
7
7
  auth0Config: Auth0Config;
8
8
  tenantId: string;
9
+ webhookSecret: string;
9
10
  get pubSubConfig(): PubSubConfig;
10
11
  constructor(tenantId?: string);
11
12
  setPubSubConfig(config: PubSubConfig): void;
@@ -15,24 +15,25 @@ const dotenv = require("dotenv");
15
15
  const auth0_config_1 = require("../models/auth0-config");
16
16
  const server_config_1 = require("../models/server-config");
17
17
  let PidgeyConfigService = class PidgeyConfigService {
18
+ get pubSubConfig() {
19
+ return this._pubSubConfig;
20
+ }
18
21
  constructor(tenantId = null) {
19
22
  dotenv.config();
20
23
  this.tenantId = tenantId !== null && tenantId !== void 0 ? tenantId : process.env.PIDGEY_TENANT_ID;
24
+ this.webhookSecret = tenantId !== null && tenantId !== void 0 ? tenantId : process.env.PIDGEY_WEBHOOK_SECRET;
21
25
  if (!this.tenantId) {
22
26
  throw new Error("PIDGEY_TENANT_ID must be defined");
23
27
  }
24
28
  this.serverConfig = new server_config_1.ServerConfig();
25
29
  this.auth0Config = new auth0_config_1.Auth0Config();
26
30
  }
27
- get pubSubConfig() {
28
- return this._pubSubConfig;
29
- }
30
31
  setPubSubConfig(config) {
31
32
  this._pubSubConfig = config;
32
33
  }
33
34
  };
34
35
  PidgeyConfigService = __decorate([
35
- common_1.Injectable(),
36
+ (0, common_1.Injectable)(),
36
37
  __metadata("design:paramtypes", [String])
37
38
  ], PidgeyConfigService);
38
39
  exports.PidgeyConfigService = PidgeyConfigService;
@@ -3,5 +3,6 @@ export declare class MailsModule {
3
3
  static forFeature(tenantId: string): DynamicModule;
4
4
  }
5
5
  export * from "./dto/mail-templates.dto";
6
+ export * from "./models/mails.model";
6
7
  export * from "./models/mail-templates.model";
7
8
  export * from "./services/mail-templates.service";
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[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);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -37,7 +41,7 @@ let MailsModule = MailsModule_1 = class MailsModule {
37
41
  }
38
42
  };
39
43
  MailsModule = MailsModule_1 = __decorate([
40
- common_1.Module({
44
+ (0, common_1.Module)({
41
45
  imports: [service_base_module_1.ServiceBaseModule],
42
46
  providers: [mails_service_1.MailsService, mail_templates_service_1.MailTemplatesService],
43
47
  exports: [mails_service_1.MailsService, mail_templates_service_1.MailTemplatesService]
@@ -45,5 +49,6 @@ MailsModule = MailsModule_1 = __decorate([
45
49
  ], MailsModule);
46
50
  exports.MailsModule = MailsModule;
47
51
  __exportStar(require("./dto/mail-templates.dto"), exports);
52
+ __exportStar(require("./models/mails.model"), exports);
48
53
  __exportStar(require("./models/mail-templates.model"), exports);
49
54
  __exportStar(require("./services/mail-templates.service"), exports);
@@ -33,24 +33,24 @@ let MailTemplatesService = MailTemplatesService_1 = class MailTemplatesService e
33
33
  return service;
34
34
  }
35
35
  create(dto) {
36
- return this.post("", dto).pipe(operators_1.map((res) => res.data));
36
+ return this.post("", dto).pipe((0, operators_1.map)((res) => res.data));
37
37
  }
38
38
  findById(id) {
39
- return this.get(`${id}`).pipe(operators_1.map((res) => res.data));
39
+ return this.get(`${id}`).pipe((0, operators_1.map)((res) => res.data));
40
40
  }
41
41
  findByName(name) {
42
- return this.get(`name/${name}`).pipe(operators_1.map((res) => res.data));
42
+ return this.get(`name/${name}`).pipe((0, operators_1.map)((res) => res.data));
43
43
  }
44
44
  update(id, dto) {
45
- return this.put(`${id}`, dto).pipe(operators_1.map((res) => res.data));
45
+ return this.put(`${id}`, dto).pipe((0, operators_1.map)((res) => res.data));
46
46
  }
47
47
  remove(id) {
48
- return this.delete(`${id}`).pipe(operators_1.map((res) => res.status === common_1.HttpStatus.NO_CONTENT));
48
+ return this.delete(`${id}`).pipe((0, operators_1.map)((res) => res.status === common_1.HttpStatus.NO_CONTENT));
49
49
  }
50
50
  };
51
51
  MailTemplatesService = MailTemplatesService_1 = __decorate([
52
- common_1.Injectable(),
53
- __param(0, common_1.Inject(constant_1.TENANT_ID)),
52
+ (0, common_1.Injectable)(),
53
+ __param(0, (0, common_1.Inject)(constant_1.TENANT_ID)),
54
54
  __metadata("design:paramtypes", [String])
55
55
  ], MailTemplatesService);
56
56
  exports.MailTemplatesService = MailTemplatesService;
@@ -41,12 +41,12 @@ let MailsService = MailsService_1 = class MailsService extends service_base_1.Se
41
41
  if (filter === null || filter === void 0 ? void 0 : filter.to) {
42
42
  options["to"] = filter.to.toISOString();
43
43
  }
44
- return this.get(querystring.encode(options)).pipe(operators_1.map((res) => res.data));
44
+ return this.get(querystring.encode(options)).pipe((0, operators_1.map)((res) => res.data));
45
45
  }
46
46
  };
47
47
  MailsService = MailsService_1 = __decorate([
48
- common_1.Injectable(),
49
- __param(0, common_1.Inject(constant_1.TENANT_ID)),
48
+ (0, common_1.Injectable)(),
49
+ __param(0, (0, common_1.Inject)(constant_1.TENANT_ID)),
50
50
  __metadata("design:paramtypes", [String])
51
51
  ], MailsService);
52
52
  exports.MailsService = MailsService;
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[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);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -36,7 +40,7 @@ let PostalModule = PostalModule_1 = class PostalModule {
36
40
  }
37
41
  };
38
42
  PostalModule = PostalModule_1 = __decorate([
39
- common_1.Module({
43
+ (0, common_1.Module)({
40
44
  imports: [service_base_module_1.ServiceBaseModule],
41
45
  providers: [postal_templates_service_1.PostalTemplatesService],
42
46
  exports: [postal_templates_service_1.PostalTemplatesService]
@@ -33,24 +33,24 @@ let PostalTemplatesService = PostalTemplatesService_1 = class PostalTemplatesSer
33
33
  return service;
34
34
  }
35
35
  create(dto) {
36
- return this.post("", dto).pipe(operators_1.map((res) => res.data));
36
+ return this.post("", dto).pipe((0, operators_1.map)((res) => res.data));
37
37
  }
38
38
  findById(id) {
39
- return this.get(`${id}`).pipe(operators_1.map((res) => res.data));
39
+ return this.get(`${id}`).pipe((0, operators_1.map)((res) => res.data));
40
40
  }
41
41
  findByName(name) {
42
- return this.get(`name/${name}`).pipe(operators_1.map((res) => res.data));
42
+ return this.get(`name/${name}`).pipe((0, operators_1.map)((res) => res.data));
43
43
  }
44
44
  update(id, dto) {
45
- return this.put(`${id}`, dto).pipe(operators_1.map((res) => res.data));
45
+ return this.put(`${id}`, dto).pipe((0, operators_1.map)((res) => res.data));
46
46
  }
47
47
  remove(id) {
48
- return this.delete(`${id}`).pipe(operators_1.map((res) => res.status === common_1.HttpStatus.NO_CONTENT));
48
+ return this.delete(`${id}`).pipe((0, operators_1.map)((res) => res.status === common_1.HttpStatus.NO_CONTENT));
49
49
  }
50
50
  };
51
51
  PostalTemplatesService = PostalTemplatesService_1 = __decorate([
52
- common_1.Injectable(),
53
- __param(0, common_1.Inject(constant_1.TENANT_ID)),
52
+ (0, common_1.Injectable)(),
53
+ __param(0, (0, common_1.Inject)(constant_1.TENANT_ID)),
54
54
  __metadata("design:paramtypes", [String])
55
55
  ], PostalTemplatesService);
56
56
  exports.PostalTemplatesService = PostalTemplatesService;
@@ -21,25 +21,25 @@ class ServiceBase {
21
21
  this.resource = resource;
22
22
  }
23
23
  get(path = "", config = {}) {
24
- return this.setupRequestConfig(config).pipe(operators_1.switchMap((c) => this.httpService.get(this.url(path), c)));
24
+ return this.setupRequestConfig(config).pipe((0, operators_1.switchMap)((c) => this.httpService.get(this.url(path), c)));
25
25
  }
26
26
  delete(path = "", config = {}) {
27
- return this.setupRequestConfig(config).pipe(operators_1.switchMap((c) => this.httpService.delete(this.url(path), c)));
27
+ return this.setupRequestConfig(config).pipe((0, operators_1.switchMap)((c) => this.httpService.delete(this.url(path), c)));
28
28
  }
29
29
  patch(path = "", data, config = {}) {
30
- return this.setupRequestConfig(config).pipe(operators_1.switchMap((c) => this.httpService.patch(this.url(path), data, c)));
30
+ return this.setupRequestConfig(config).pipe((0, operators_1.switchMap)((c) => this.httpService.patch(this.url(path), data, c)));
31
31
  }
32
32
  post(path = "", data, config = {}) {
33
- return this.setupRequestConfig(config).pipe(operators_1.switchMap((c) => this.httpService.post(this.url(path), data, c)));
33
+ return this.setupRequestConfig(config).pipe((0, operators_1.switchMap)((c) => this.httpService.post(this.url(path), data, c)));
34
34
  }
35
35
  put(path = "", data, config = {}) {
36
- return this.setupRequestConfig(config).pipe(operators_1.switchMap((c) => this.httpService.put(this.url(path), data, c)));
36
+ return this.setupRequestConfig(config).pipe((0, operators_1.switchMap)((c) => this.httpService.put(this.url(path), data, c)));
37
37
  }
38
38
  url(path = "") {
39
39
  return `${this.configService.serverConfig.url}/${this.resource}/${path}`;
40
40
  }
41
41
  setupRequestConfig(config = {}) {
42
- return rxjs_1.from(this.auth0Service.auth.getAccessToken()).pipe(operators_1.map((token) => ({
42
+ return (0, rxjs_1.from)(this.auth0Service.auth.getAccessToken()).pipe((0, operators_1.map)((token) => ({
43
43
  ...config,
44
44
  headers: {
45
45
  ...(config.headers || {}),
@@ -49,15 +49,15 @@ class ServiceBase {
49
49
  }
50
50
  }
51
51
  __decorate([
52
- common_1.Inject(),
52
+ (0, common_1.Inject)(),
53
53
  __metadata("design:type", pidgey_config_service_1.PidgeyConfigService)
54
54
  ], ServiceBase.prototype, "configService", void 0);
55
55
  __decorate([
56
- common_1.Inject(),
56
+ (0, common_1.Inject)(),
57
57
  __metadata("design:type", axios_1.HttpService)
58
58
  ], ServiceBase.prototype, "httpService", void 0);
59
59
  __decorate([
60
- common_1.Inject(),
60
+ (0, common_1.Inject)(),
61
61
  __metadata("design:type", auth0_service_1.Auth0Service)
62
62
  ], ServiceBase.prototype, "auth0Service", void 0);
63
63
  exports.ServiceBase = ServiceBase;
@@ -13,7 +13,7 @@ const auth0_module_1 = require("../auth0/auth0.module");
13
13
  let ServiceBaseModule = class ServiceBaseModule {
14
14
  };
15
15
  ServiceBaseModule = __decorate([
16
- common_1.Module({
16
+ (0, common_1.Module)({
17
17
  imports: [axios_1.HttpModule, auth0_module_1.Auth0Module],
18
18
  exports: [axios_1.HttpModule, auth0_module_1.Auth0Module]
19
19
  })
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[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);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -36,7 +40,7 @@ let SmsModule = SmsModule_1 = class SmsModule {
36
40
  }
37
41
  };
38
42
  SmsModule = SmsModule_1 = __decorate([
39
- common_1.Module({
43
+ (0, common_1.Module)({
40
44
  imports: [service_base_module_1.ServiceBaseModule],
41
45
  providers: [sms_templates_service_1.SmsTemplatesService],
42
46
  exports: [sms_templates_service_1.SmsTemplatesService]
@@ -33,24 +33,24 @@ let SmsTemplatesService = SmsTemplatesService_1 = class SmsTemplatesService exte
33
33
  return service;
34
34
  }
35
35
  create(dto) {
36
- return this.post("", dto).pipe(operators_1.map((res) => res.data));
36
+ return this.post("", dto).pipe((0, operators_1.map)((res) => res.data));
37
37
  }
38
38
  findById(id) {
39
- return this.get(`${id}`).pipe(operators_1.map((res) => res.data));
39
+ return this.get(`${id}`).pipe((0, operators_1.map)((res) => res.data));
40
40
  }
41
41
  findByName(name) {
42
- return this.get(`name/${name}`).pipe(operators_1.map((res) => res.data));
42
+ return this.get(`name/${name}`).pipe((0, operators_1.map)((res) => res.data));
43
43
  }
44
44
  update(id, dto) {
45
- return this.put(`${id}`, dto).pipe(operators_1.map((res) => res.data));
45
+ return this.put(`${id}`, dto).pipe((0, operators_1.map)((res) => res.data));
46
46
  }
47
47
  remove(id) {
48
- return this.delete(`${id}`).pipe(operators_1.map((res) => res.status === common_1.HttpStatus.NO_CONTENT));
48
+ return this.delete(`${id}`).pipe((0, operators_1.map)((res) => res.status === common_1.HttpStatus.NO_CONTENT));
49
49
  }
50
50
  };
51
51
  SmsTemplatesService = SmsTemplatesService_1 = __decorate([
52
- common_1.Injectable(),
53
- __param(0, common_1.Inject(constant_1.TENANT_ID)),
52
+ (0, common_1.Injectable)(),
53
+ __param(0, (0, common_1.Inject)(constant_1.TENANT_ID)),
54
54
  __metadata("design:paramtypes", [String])
55
55
  ], SmsTemplatesService);
56
56
  exports.SmsTemplatesService = SmsTemplatesService;
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[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);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -36,7 +40,7 @@ let TenantsModule = TenantsModule_1 = class TenantsModule {
36
40
  }
37
41
  };
38
42
  TenantsModule = TenantsModule_1 = __decorate([
39
- common_1.Module({
43
+ (0, common_1.Module)({
40
44
  imports: [service_base_module_1.ServiceBaseModule],
41
45
  providers: [tenants_service_1.TenantsService],
42
46
  exports: [tenants_service_1.TenantsService]
@@ -8,10 +8,10 @@ class TenantsService extends service_base_1.ServiceBase {
8
8
  super(`tenant`);
9
9
  }
10
10
  findById(id) {
11
- return this.get(`${id}`).pipe(operators_1.map((res) => res.data));
11
+ return this.get(`${id}`).pipe((0, operators_1.map)((res) => res.data));
12
12
  }
13
13
  getCredentials(id) {
14
- return this.get(`${id}/credential`).pipe(operators_1.map((res) => res.data));
14
+ return this.get(`${id}/credential`).pipe((0, operators_1.map)((res) => res.data));
15
15
  }
16
16
  }
17
17
  exports.TenantsService = TenantsService;
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[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);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -27,7 +31,7 @@ Object.defineProperty(exports, "PostalTransportService", { enumerable: true, get
27
31
  let TransportModule = class TransportModule {
28
32
  };
29
33
  TransportModule = __decorate([
30
- common_1.Module({
34
+ (0, common_1.Module)({
31
35
  providers: [email_transport_service_1.EmailTransportService, sms_transport_service_1.SmsTransportService, postal_transport_service_1.PostalTransportService],
32
36
  exports: [email_transport_service_1.EmailTransportService, sms_transport_service_1.SmsTransportService, postal_transport_service_1.PostalTransportService]
33
37
  })
@@ -39,12 +39,14 @@ let EmailTransportService = class EmailTransportService {
39
39
  if (!this.topic) {
40
40
  throw new Error("Email transport is not initialized");
41
41
  }
42
- await this.topic.publishJSON(email);
42
+ await this.topic.publishMessage({
43
+ json: email
44
+ });
43
45
  }
44
46
  };
45
47
  EmailTransportService = __decorate([
46
- common_1.Injectable(),
47
- __param(0, common_1.Inject(constant_1.TENANT)),
48
+ (0, common_1.Injectable)(),
49
+ __param(0, (0, common_1.Inject)(constant_1.TENANT)),
48
50
  __metadata("design:paramtypes", [Object, pidgey_config_service_1.PidgeyConfigService])
49
51
  ], EmailTransportService);
50
52
  exports.EmailTransportService = EmailTransportService;
@@ -39,12 +39,12 @@ let PostalTransportService = class PostalTransportService {
39
39
  if (!this.topic) {
40
40
  throw new Error("Postal transport is not initialized");
41
41
  }
42
- await this.topic.publishJSON(postal);
42
+ await this.topic.publishMessage({ json: postal });
43
43
  }
44
44
  };
45
45
  PostalTransportService = __decorate([
46
- common_1.Injectable(),
47
- __param(0, common_1.Inject(constant_1.TENANT)),
46
+ (0, common_1.Injectable)(),
47
+ __param(0, (0, common_1.Inject)(constant_1.TENANT)),
48
48
  __metadata("design:paramtypes", [Object, pidgey_config_service_1.PidgeyConfigService])
49
49
  ], PostalTransportService);
50
50
  exports.PostalTransportService = PostalTransportService;
@@ -39,12 +39,12 @@ let SmsTransportService = class SmsTransportService {
39
39
  if (!this.topic) {
40
40
  throw new Error("Sms transport is not initialized");
41
41
  }
42
- await this.topic.publishJSON(sms);
42
+ await this.topic.publishMessage({ json: sms });
43
43
  }
44
44
  };
45
45
  SmsTransportService = __decorate([
46
- common_1.Injectable(),
47
- __param(0, common_1.Inject(constant_1.TENANT)),
46
+ (0, common_1.Injectable)(),
47
+ __param(0, (0, common_1.Inject)(constant_1.TENANT)),
48
48
  __metadata("design:paramtypes", [Object, pidgey_config_service_1.PidgeyConfigService])
49
49
  ], SmsTransportService);
50
50
  exports.SmsTransportService = SmsTransportService;
@@ -0,0 +1,7 @@
1
+ import { CanActivate, ExecutionContext } from "@nestjs/common";
2
+ import { PidgeyConfigService } from "../../config/services/pidgey-config.service";
3
+ export declare class PidgeyWebhookGuard implements CanActivate {
4
+ private config;
5
+ constructor(config: PidgeyConfigService);
6
+ canActivate(context: ExecutionContext): boolean;
7
+ }
@@ -0,0 +1,44 @@
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.PidgeyWebhookGuard = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const crypto = require("crypto");
15
+ const pidgey_config_service_1 = require("../../config/services/pidgey-config.service");
16
+ let PidgeyWebhookGuard = class PidgeyWebhookGuard {
17
+ constructor(config) {
18
+ this.config = config;
19
+ }
20
+ canActivate(context) {
21
+ const req = context.switchToHttp().getRequest();
22
+ const signature = req.header("pidgey-webhook-signature");
23
+ if (!signature) {
24
+ throw new common_1.NotAcceptableException();
25
+ }
26
+ const timestamp = req.body.timestamp;
27
+ if (!timestamp) {
28
+ throw new common_1.NotAcceptableException();
29
+ }
30
+ const generatedSignature = crypto
31
+ .createHmac("sha256", this.config.webhookSecret)
32
+ .update(`${req.body.type}:${timestamp}`)
33
+ .digest("hex");
34
+ if (signature !== generatedSignature) {
35
+ throw new common_1.NotAcceptableException();
36
+ }
37
+ return true;
38
+ }
39
+ };
40
+ PidgeyWebhookGuard = __decorate([
41
+ (0, common_1.Injectable)(),
42
+ __metadata("design:paramtypes", [pidgey_config_service_1.PidgeyConfigService])
43
+ ], PidgeyWebhookGuard);
44
+ exports.PidgeyWebhookGuard = PidgeyWebhookGuard;
@@ -0,0 +1,5 @@
1
+ export * from "./guards/webhook.guard";
2
+ export * from "./models/webhooks.event";
3
+ export * from "./models/webhooks.type";
4
+ export * from "./models/webhooks-event.interface";
5
+ export * from "./models/mail-status-updated-webhooks.event";
@@ -0,0 +1,21 @@
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("./guards/webhook.guard"), exports);
18
+ __exportStar(require("./models/webhooks.event"), exports);
19
+ __exportStar(require("./models/webhooks.type"), exports);
20
+ __exportStar(require("./models/webhooks-event.interface"), exports);
21
+ __exportStar(require("./models/mail-status-updated-webhooks.event"), exports);
@@ -0,0 +1,5 @@
1
+ import { MailsModel } from "../../mails/models/mails.model";
2
+ import { WebhooksEventsInterface } from "./webhooks-event.interface";
3
+ export interface MailStatusUpdatedWebhooksEvents extends WebhooksEventsInterface<MailsModel> {
4
+ type: "mail_status_updated";
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import { WebhooksTypes } from "./webhooks.type";
2
+ export interface WebhooksEventsInterface<T> {
3
+ type: WebhooksTypes;
4
+ data: T;
5
+ timestamp: number;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ import { MailStatusUpdatedWebhooksEvents } from "./mail-status-updated-webhooks.event";
2
+ export type WebhooksEvents = MailStatusUpdatedWebhooksEvents;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export type WebhooksTypes = "mail_status_updated";
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@recursyve/nestjs-pidgey",
3
- "version": "8.0.4",
3
+ "version": "9.1.0",
4
4
  "description": "Recursyve's pidgey client for NestJs",
5
5
  "repository": {
6
6
  "type": "git",
@@ -12,29 +12,29 @@
12
12
  "test": "jest"
13
13
  },
14
14
  "peerDependencies": {
15
- "@nestjs/common": ">= 8.0.0",
16
- "@nestjs/core": ">= 8.0.0",
17
- "@nestjs/axios": ">= 0.0.5",
15
+ "@nestjs/common": ">= 9.0.0",
16
+ "@nestjs/core": ">= 9.0.0",
17
+ "@nestjs/axios": ">= 1.0.0",
18
18
  "dotenv": ">= 10.0.0",
19
19
  "rxjs": ">= 7.0.0",
20
20
  "reflect-metadata": ">= 0.1.13"
21
21
  },
22
22
  "dependencies": {
23
- "@google-cloud/pubsub": "^2.16.0",
24
- "auth0": "^2.0.0"
23
+ "@google-cloud/pubsub": "^3.2.1",
24
+ "auth0": "^3.0.1"
25
25
  },
26
26
  "devDependencies": {
27
- "@nestjs/axios": "0.0.5",
28
- "@nestjs/common": "^8.0.0",
29
- "@nestjs/core": "^8.0.0",
30
- "@nestjs/testing": "^8.0.0",
31
- "@types/auth0": "^2.33.4",
32
- "@types/jest": "^26.0.0",
33
- "dotenv": "^8.0.0",
34
- "jest": "^26.0.0",
35
- "reflect-metadata": "^0.1.0",
36
- "rxjs": "^7.2.0",
37
- "ts-jest": "^26.0.0",
38
- "typescript": "^4.3.5"
27
+ "@nestjs/axios": "^1.0.1",
28
+ "@nestjs/common": "^9.2.1",
29
+ "@nestjs/core": "^9.2.1",
30
+ "@nestjs/testing": "^9.2.1",
31
+ "@types/auth0": "^2.35.8",
32
+ "@types/jest": "^29.2.5",
33
+ "dotenv": "^16.0.3",
34
+ "jest": "^29.3.1",
35
+ "reflect-metadata": "^0.1.13",
36
+ "rxjs": "^7.8.0",
37
+ "ts-jest": "^29.0.3",
38
+ "typescript": "^4.9.4"
39
39
  }
40
40
  }
package/testbed.js CHANGED
@@ -49,7 +49,7 @@ let PidgeyTestBedModule = PidgeyTestBedModule_1 = class PidgeyTestBedModule {
49
49
  }
50
50
  };
51
51
  PidgeyTestBedModule = PidgeyTestBedModule_1 = __decorate([
52
- common_1.Global(),
53
- common_1.Module({})
52
+ (0, common_1.Global)(),
53
+ (0, common_1.Module)({})
54
54
  ], PidgeyTestBedModule);
55
55
  exports.PidgeyTestBedModule = PidgeyTestBedModule;