@webda/core 1.5.2 → 1.6.0-beta.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 (150) hide show
  1. package/lib/application.d.ts +0 -7
  2. package/lib/application.js +33 -27
  3. package/lib/application.js.map +1 -1
  4. package/lib/application.spec.js +23 -2
  5. package/lib/application.spec.js.map +1 -1
  6. package/lib/core.d.ts +20 -2
  7. package/lib/core.js +74 -34
  8. package/lib/core.js.map +1 -1
  9. package/lib/core.spec.js +5 -5
  10. package/lib/core.spec.js.map +1 -1
  11. package/lib/index.d.ts +12 -7
  12. package/lib/index.js +12 -7
  13. package/lib/index.js.map +1 -1
  14. package/lib/models/aclmodel.d.ts +63 -5
  15. package/lib/models/aclmodel.js +115 -12
  16. package/lib/models/aclmodel.js.map +1 -1
  17. package/lib/models/aclmodel.spec.js +65 -19
  18. package/lib/models/aclmodel.spec.js.map +1 -1
  19. package/lib/models/coremodel.d.ts +22 -6
  20. package/lib/models/coremodel.js +14 -6
  21. package/lib/models/coremodel.js.map +1 -1
  22. package/lib/models/coremodel.spec.js +0 -1
  23. package/lib/models/coremodel.spec.js.map +1 -1
  24. package/lib/models/ident.d.ts +5 -0
  25. package/lib/models/ident.js +6 -0
  26. package/lib/models/ident.js.map +1 -1
  27. package/lib/models/ident.spec.js +3 -0
  28. package/lib/models/ident.spec.js.map +1 -1
  29. package/lib/models/ownermodel.js +1 -2
  30. package/lib/models/ownermodel.js.map +1 -1
  31. package/lib/models/user.d.ts +30 -0
  32. package/lib/models/user.js +34 -2
  33. package/lib/models/user.js.map +1 -1
  34. package/lib/models/user.spec.js +18 -0
  35. package/lib/models/user.spec.js.map +1 -1
  36. package/lib/queues/memoryqueue.spec.js +0 -1
  37. package/lib/queues/memoryqueue.spec.js.map +1 -1
  38. package/lib/queues/pubsubservice.d.ts +27 -0
  39. package/lib/queues/pubsubservice.js +21 -0
  40. package/lib/queues/pubsubservice.js.map +1 -0
  41. package/lib/queues/queueservice.d.ts +3 -16
  42. package/lib/queues/queueservice.js +2 -13
  43. package/lib/queues/queueservice.js.map +1 -1
  44. package/lib/router.js +1 -1
  45. package/lib/router.js.map +1 -1
  46. package/lib/router.spec.js +1 -1
  47. package/lib/router.spec.js.map +1 -1
  48. package/lib/services/authentication.d.ts +35 -1
  49. package/lib/services/authentication.js +55 -5
  50. package/lib/services/authentication.js.map +1 -1
  51. package/lib/services/authentication.spec.js +9 -0
  52. package/lib/services/authentication.spec.js.map +1 -1
  53. package/lib/services/binary.js +15 -10
  54. package/lib/services/binary.js.map +1 -1
  55. package/lib/services/binary.spec.d.ts +1 -1
  56. package/lib/services/configuration.d.ts +9 -0
  57. package/lib/services/configuration.js +27 -2
  58. package/lib/services/configuration.js.map +1 -1
  59. package/lib/services/configuration.spec.js +19 -2
  60. package/lib/services/configuration.spec.js.map +1 -1
  61. package/lib/services/cron.spec.js +2 -2
  62. package/lib/services/cron.spec.js.map +1 -1
  63. package/lib/services/debugmailer.d.ts +10 -3
  64. package/lib/services/debugmailer.js +18 -4
  65. package/lib/services/debugmailer.js.map +1 -1
  66. package/lib/services/debugmailer.spec.js +1 -0
  67. package/lib/services/debugmailer.spec.js.map +1 -1
  68. package/lib/services/filebinary.spec.js +0 -1
  69. package/lib/services/filebinary.spec.js.map +1 -1
  70. package/lib/services/fileconfiguration.d.ts +7 -1
  71. package/lib/services/fileconfiguration.js +9 -0
  72. package/lib/services/fileconfiguration.js.map +1 -1
  73. package/lib/services/fileconfiguration.spec.js +81 -2
  74. package/lib/services/fileconfiguration.spec.js.map +1 -1
  75. package/lib/services/invitationservice.d.ts +196 -0
  76. package/lib/services/invitationservice.js +441 -0
  77. package/lib/services/invitationservice.js.map +1 -0
  78. package/lib/services/invitationservice.spec.d.ts +1 -0
  79. package/lib/services/invitationservice.spec.js +516 -0
  80. package/lib/services/invitationservice.spec.js.map +1 -0
  81. package/lib/services/kubernetesconfiguration.d.ts +6 -0
  82. package/lib/services/kubernetesconfiguration.js +13 -0
  83. package/lib/services/kubernetesconfiguration.js.map +1 -1
  84. package/lib/services/kubernetesconfiguration.spec.js +31 -7
  85. package/lib/services/kubernetesconfiguration.spec.js.map +1 -1
  86. package/lib/services/mailer.d.ts +93 -3
  87. package/lib/services/mailer.js +55 -11
  88. package/lib/services/mailer.js.map +1 -1
  89. package/lib/services/mailer.spec.js +30 -1
  90. package/lib/services/mailer.spec.js.map +1 -1
  91. package/lib/services/notificationservice.d.ts +74 -0
  92. package/lib/services/notificationservice.js +89 -0
  93. package/lib/services/notificationservice.js.map +1 -0
  94. package/lib/services/notificationservice.spec.d.ts +1 -0
  95. package/lib/services/notificationservice.spec.js +104 -0
  96. package/lib/services/notificationservice.spec.js.map +1 -0
  97. package/lib/services/oauth.spec.js +7 -10
  98. package/lib/services/oauth.spec.js.map +1 -1
  99. package/lib/services/service.d.ts +20 -4
  100. package/lib/services/service.js +35 -5
  101. package/lib/services/service.js.map +1 -1
  102. package/lib/services/service.spec.js +26 -0
  103. package/lib/services/service.spec.js.map +1 -1
  104. package/lib/stores/aggregator.d.ts +43 -0
  105. package/lib/stores/aggregator.js +106 -0
  106. package/lib/stores/aggregator.js.map +1 -0
  107. package/lib/stores/file.d.ts +1 -1
  108. package/lib/stores/file.js +5 -5
  109. package/lib/stores/file.js.map +1 -1
  110. package/lib/stores/file.spec.d.ts +3 -1
  111. package/lib/stores/file.spec.js +48 -19
  112. package/lib/stores/file.spec.js.map +1 -1
  113. package/lib/stores/mapper.d.ts +151 -0
  114. package/lib/stores/mapper.js +320 -0
  115. package/lib/stores/mapper.js.map +1 -0
  116. package/lib/stores/mapper.spec.d.ts +1 -0
  117. package/lib/stores/mapper.spec.js +174 -0
  118. package/lib/stores/mapper.spec.js.map +1 -0
  119. package/lib/stores/memory.js +0 -3
  120. package/lib/stores/memory.js.map +1 -1
  121. package/lib/stores/memory.spec.d.ts +3 -1
  122. package/lib/stores/memory.spec.js +12 -0
  123. package/lib/stores/memory.spec.js.map +1 -1
  124. package/lib/stores/store.d.ts +30 -109
  125. package/lib/stores/store.js +57 -285
  126. package/lib/stores/store.js.map +1 -1
  127. package/lib/stores/store.spec.d.ts +10 -0
  128. package/lib/stores/store.spec.js +41 -14
  129. package/lib/stores/store.spec.js.map +1 -1
  130. package/lib/test.d.ts +2 -1
  131. package/lib/test.js +21 -3
  132. package/lib/test.js.map +1 -1
  133. package/lib/utils/context.d.ts +12 -1
  134. package/lib/utils/context.js +21 -5
  135. package/lib/utils/context.js.map +1 -1
  136. package/lib/utils/context.spec.js +6 -1
  137. package/lib/utils/context.spec.js.map +1 -1
  138. package/lib/utils/cookie.d.ts +12 -0
  139. package/lib/utils/cookie.js +29 -19
  140. package/lib/utils/cookie.js.map +1 -1
  141. package/lib/utils/cookie.spec.js +0 -1
  142. package/lib/utils/cookie.spec.js.map +1 -1
  143. package/package.json +9 -7
  144. package/test/config-file-no-reload.json +70 -0
  145. package/test/config-file-reload.json +7 -1
  146. package/test/config-invitation.json +63 -0
  147. package/test/config-kube-reload.json +7 -1
  148. package/test/config.json +35 -23
  149. package/test/config.old-default.json +0 -16
  150. package/test/config.old.json +0 -16
@@ -23,6 +23,7 @@ const path = require("path");
23
23
  const yaml = require("yaml");
24
24
  const fs_1 = require("fs");
25
25
  const __1 = require("..");
26
+ const sinon_1 = require("sinon");
26
27
  class AbstractKubernetesConfigurationServiceTest extends test_1.WebdaTest {
27
28
  constructor() {
28
29
  super(...arguments);
@@ -30,7 +31,14 @@ class AbstractKubernetesConfigurationServiceTest extends test_1.WebdaTest {
30
31
  this.content = {
31
32
  "webda.json": JSON.stringify({
32
33
  services: {
33
- "Authentication.providers.email.text": "Plop0"
34
+ Authentication: {
35
+ providers: {
36
+ email: {
37
+ text: "Plop1"
38
+ }
39
+ }
40
+ },
41
+ "Authentication.providers.email.text2": "Plop6"
34
42
  }
35
43
  }, undefined, 2),
36
44
  other: "test",
@@ -91,31 +99,47 @@ let KubernetesConfigurationServiceTest = class KubernetesConfigurationServiceTes
91
99
  assert.rejects(() => serv.init(), /Need a source for KubernetesConfigurationService/);
92
100
  serv.getParameters().source = "/notexisting";
93
101
  assert.rejects(() => serv.init(), /Need a source for KubernetesConfigurationService/);
102
+ let mock = (0, sinon_1.stub)(serv, "loadAndStoreConfiguration").callsFake(() => { });
103
+ yield serv.initConfiguration();
104
+ assert.strictEqual(mock.callCount, 1);
94
105
  });
95
106
  }
96
107
  updatedConfigMap() {
97
108
  return __awaiter(this, void 0, void 0, function* () {
98
- assert.strictEqual(this.webda.getConfiguration().services.Authentication.providers.email.text, "Plop0");
109
+ assert.strictEqual(this.webda.getConfiguration().services.Authentication.providers.email.text, "Plop1");
110
+ assert.strictEqual(this.webda.getConfiguration().services.Authentication.providers.email.text2, "Plop6");
99
111
  assert.strictEqual(this.webda.getConfiguration().services.Authentication.providers.email.mailer, "DefinedMailer");
100
112
  yield new Promise(resolve => {
101
113
  this.webda.getService("KubernetesConfigurationService").on("Configuration.Applied", resolve);
102
114
  this.updateConfigMap(Object.assign(Object.assign({}, this.content), { "webda.json": JSON.stringify({
103
115
  services: {
104
- "Authentication.providers.email.text": "Plop"
116
+ Authentication: {
117
+ providers: {
118
+ email: {
119
+ text: "Plop2"
120
+ }
121
+ }
122
+ }
105
123
  }
106
124
  }) }));
107
125
  });
108
- assert.strictEqual(this.webda.getConfiguration().services.Authentication.providers.email.text, "Plop");
126
+ assert.strictEqual(this.webda.getConfiguration().services.Authentication.providers.email.text, "Plop2");
109
127
  assert.strictEqual(this.webda.getConfiguration().services.Authentication.providers.email.mailer, "DefinedMailer");
110
128
  yield new Promise(resolve => {
111
129
  this.webda.getService("KubernetesConfigurationService").on("Configuration.Applied", resolve);
112
130
  this.updateConfigMap(Object.assign(Object.assign({}, this.content), { "webda.json": JSON.stringify({
113
131
  services: {
114
- "Authentication.providers.email.text": "Plop2"
132
+ Authentication: {
133
+ providers: {
134
+ email: {
135
+ text: "Plop3"
136
+ }
137
+ }
138
+ }
115
139
  }
116
140
  }) }));
117
141
  });
118
- assert.strictEqual(this.webda.getConfiguration().services.Authentication.providers.email.text, "Plop2");
142
+ assert.strictEqual(this.webda.getConfiguration().services.Authentication.providers.email.text, "Plop3");
119
143
  assert.strictEqual(this.webda.getConfiguration().services.Authentication.providers.email.mailer, "DefinedMailer");
120
144
  });
121
145
  }
@@ -132,7 +156,7 @@ KubernetesConfigurationServiceTest = __decorate([
132
156
  let EmptyKubernetesConfigurationServiceTest = class EmptyKubernetesConfigurationServiceTest extends AbstractKubernetesConfigurationServiceTest {
133
157
  unmountedConfigMap() {
134
158
  return __awaiter(this, void 0, void 0, function* () {
135
- assert.strictEqual(this.webda.getConfiguration().services.Authentication.providers.email.text, "Test");
159
+ assert.strictEqual(this.webda.getConfiguration().services.Authentication.providers.email.text, "Plop0");
136
160
  assert.strictEqual(this.webda.getConfiguration().services.Authentication.providers.email.mailer, "DefinedMailer");
137
161
  });
138
162
  }
@@ -1 +1 @@
1
- {"version":3,"file":"kubernetesconfiguration.spec.js","sourceRoot":"","sources":["../../src/services/kubernetesconfiguration.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kubernetesconfiguration.spec.js","sourceRoot":"","sources":["../../src/services/kubernetesconfiguration.spec.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
+ import { Ident, User } from "..";
1
2
  import { ModdaDefinition } from "../core";
3
+ import { NotificationService } from "./notificationservice";
2
4
  import { Service, ServiceParameters } from "./service";
3
5
  interface IEmailTemplate {
4
6
  renderAll(file: string, options: any): any;
@@ -6,6 +8,55 @@ interface IEmailTemplate {
6
8
  interface TemplatesMap {
7
9
  [key: string]: IEmailTemplate;
8
10
  }
11
+ /**
12
+ * Represent a mailer service
13
+ */
14
+ export interface MailerService extends NotificationService {
15
+ /**
16
+ *
17
+ * @params options Options to pass to the sendMail option of the nodemailer module
18
+ * @params callback to pass to the sendMail
19
+ */
20
+ send(options: MailerSendOptions, callback: () => void): Promise<any>;
21
+ }
22
+ interface MailerSendOptions {
23
+ /**
24
+ * Sender of the email
25
+ *
26
+ * @default parameters.sender
27
+ */
28
+ from?: string;
29
+ /**
30
+ * Destination of the email
31
+ */
32
+ to: string;
33
+ /**
34
+ * Template to user
35
+ */
36
+ template?: string;
37
+ /**
38
+ * Replacements for the template
39
+ */
40
+ replacements?: any;
41
+ /**
42
+ * Subject of the email
43
+ *
44
+ * Can be overriden by the template
45
+ */
46
+ subject?: string;
47
+ /**
48
+ * HTML of the email
49
+ *
50
+ * Can be overriden by the template
51
+ */
52
+ html?: string;
53
+ /**
54
+ * Text of the email
55
+ *
56
+ * Can be overriden by the template
57
+ */
58
+ text?: string;
59
+ }
9
60
  export declare class MailerParameters extends ServiceParameters {
10
61
  /**
11
62
  * Specify which foldeer contains templates
@@ -23,8 +74,40 @@ export declare class MailerParameters extends ServiceParameters {
23
74
  * Define the default sender
24
75
  */
25
76
  sender: string;
77
+ /**
78
+ * @see https://www.npmjs.com/package/email-templates
79
+ */
80
+ emailTemplateOptions?: any;
81
+ /**
82
+ * Define the type of transport to use
83
+ */
84
+ transport?: string;
85
+ /**
86
+ * SES AWS Bean if transport === "ses"
87
+ */
88
+ SES: any;
26
89
  constructor(params: any);
27
90
  }
91
+ export declare abstract class AbstractMailer<T extends ServiceParameters = ServiceParameters> extends Service<T> implements MailerService {
92
+ /**
93
+ * @inheritdoc
94
+ */
95
+ abstract send(options: MailerSendOptions, callback?: () => void): Promise<any>;
96
+ /**
97
+ * @inheritdoc
98
+ */
99
+ abstract hasNotification(notification: string): any;
100
+ /**
101
+ * If user has an email
102
+ * @param user
103
+ * @returns
104
+ */
105
+ handleNotificationFor(user: User | Ident): Promise<boolean>;
106
+ /**
107
+ * @override
108
+ */
109
+ sendNotification(user: User | Ident, notification: string, replacements: any): Promise<void>;
110
+ }
28
111
  /**
29
112
  * A basic Mailer based on the nodemailer module
30
113
  *
@@ -36,7 +119,7 @@ export declare class MailerParameters extends ServiceParameters {
36
119
  * config: { ... }
37
120
  * @category CoreServices
38
121
  */
39
- declare class Mailer<T extends MailerParameters = MailerParameters> extends Service<T> {
122
+ declare class Mailer<T extends MailerParameters = MailerParameters> extends AbstractMailer<T> {
40
123
  _transporter: any;
41
124
  _templates: TemplatesMap;
42
125
  /**
@@ -56,13 +139,20 @@ declare class Mailer<T extends MailerParameters = MailerParameters> extends Serv
56
139
  * @param name
57
140
  * @returns
58
141
  */
59
- _getTemplate(name: any): IEmailTemplate;
142
+ _getTemplate(name: string): IEmailTemplate;
143
+ /**
144
+ * Check if the email template exists
145
+ *
146
+ * @param name
147
+ * @returns
148
+ */
149
+ hasNotification(name: string): boolean;
60
150
  /**
61
151
  *
62
152
  * @params options Options to pass to the sendMail option of the nodemailer module
63
153
  * @params callback to pass to the sendMail
64
154
  */
65
- send(options: any, callback?: any): Promise<any>;
155
+ send(options: MailerSendOptions, callback?: any): Promise<any>;
66
156
  /**
67
157
  * @inheritdoc
68
158
  */
@@ -9,20 +9,58 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.Mailer = exports.MailerParameters = void 0;
12
+ exports.Mailer = exports.AbstractMailer = exports.MailerParameters = void 0;
13
13
  const Email = require("email-templates");
14
14
  const fs = require("fs");
15
15
  const nodemailer = require("nodemailer");
16
+ const path = require("path");
16
17
  const service_1 = require("./service");
17
18
  class MailerParameters extends service_1.ServiceParameters {
18
19
  constructor(params) {
19
- var _a, _b;
20
+ var _a, _b, _c, _d, _e, _f;
21
+ var _g, _h, _j;
20
22
  super(params);
21
23
  (_a = this.templates) !== null && _a !== void 0 ? _a : (this.templates = "./templates");
24
+ if (!this.templates.endsWith("/")) {
25
+ this.templates += "/";
26
+ }
22
27
  (_b = this.templatesEngine) !== null && _b !== void 0 ? _b : (this.templatesEngine = "mustache");
28
+ (_c = this.emailTemplateOptions) !== null && _c !== void 0 ? _c : (this.emailTemplateOptions = {});
29
+ (_d = (_g = this.emailTemplateOptions).juiceResources) !== null && _d !== void 0 ? _d : (_g.juiceResources = {});
30
+ (_e = (_h = this.emailTemplateOptions.juiceResources).webResources) !== null && _e !== void 0 ? _e : (_h.webResources = {});
31
+ (_f = (_j = this.emailTemplateOptions.juiceResources.webResources).relativeTo) !== null && _f !== void 0 ? _f : (_j.relativeTo = path.resolve(this.templates));
23
32
  }
24
33
  }
25
34
  exports.MailerParameters = MailerParameters;
35
+ class AbstractMailer extends service_1.Service {
36
+ /**
37
+ * If user has an email
38
+ * @param user
39
+ * @returns
40
+ */
41
+ handleNotificationFor(user) {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ return user.getEmail() !== null;
44
+ });
45
+ }
46
+ /**
47
+ * @override
48
+ */
49
+ sendNotification(user, notification, replacements) {
50
+ return __awaiter(this, void 0, void 0, function* () {
51
+ let email = user.getEmail();
52
+ if (!email) {
53
+ throw new Error(`Cannot find a valid email for ${user.__type} '${user.getUuid()}'`);
54
+ }
55
+ return this.send({
56
+ template: notification,
57
+ replacements: Object.assign({}, replacements),
58
+ to: email
59
+ });
60
+ });
61
+ }
62
+ }
63
+ exports.AbstractMailer = AbstractMailer;
26
64
  /**
27
65
  * A basic Mailer based on the nodemailer module
28
66
  *
@@ -34,7 +72,7 @@ exports.MailerParameters = MailerParameters;
34
72
  * config: { ... }
35
73
  * @category CoreServices
36
74
  */
37
- class Mailer extends service_1.Service {
75
+ class Mailer extends AbstractMailer {
38
76
  constructor() {
39
77
  super(...arguments);
40
78
  this._templates = {};
@@ -71,23 +109,29 @@ class Mailer extends service_1.Service {
71
109
  */
72
110
  _getTemplate(name) {
73
111
  if (!this._templates[name]) {
74
- // Load template
75
- let templateDir = this.parameters.templates + "/";
76
- if (!fs.existsSync(templateDir + name)) {
112
+ if (!this.hasNotification(name)) {
77
113
  this._webda.log("WARN", "No template found for", name);
78
114
  return;
79
115
  }
80
- this._templates[name] = new Email({
81
- views: {
82
- root: templateDir,
116
+ this._templates[name] = new Email(Object.assign(Object.assign({}, this.parameters.emailTemplateOptions), { views: {
117
+ root: this.parameters.templates,
83
118
  options: {
84
119
  extension: this.parameters.templatesEngine
85
120
  }
86
- }
87
- });
121
+ } }));
88
122
  }
89
123
  return this._templates[name];
90
124
  }
125
+ /**
126
+ * Check if the email template exists
127
+ *
128
+ * @param name
129
+ * @returns
130
+ */
131
+ hasNotification(name) {
132
+ // Load template
133
+ return fs.existsSync(this.parameters.templates + name);
134
+ }
91
135
  /**
92
136
  *
93
137
  * @params options Options to pass to the sendMail option of the nodemailer module
@@ -1 +1 @@
1
- {"version":3,"file":"mailer.js","sourceRoot":"","sources":["../../src/services/mailer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mailer.js","sourceRoot":"","sources":["../../src/services/mailer.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,7 @@ const mocha_1 = require("@testdeck/mocha");
20
20
  const test_1 = require("../test");
21
21
  const __1 = require("..");
22
22
  const mailer_1 = require("./mailer");
23
+ const sinon = require("sinon");
23
24
  let MailerTest = class MailerTest extends test_1.WebdaTest {
24
25
  before() {
25
26
  const _super = Object.create(null, {
@@ -46,7 +47,7 @@ let MailerTest = class MailerTest extends test_1.WebdaTest {
46
47
  }
47
48
  params() {
48
49
  let params = new __1.MailerParameters({ templates: "ts", templatesEngine: "b" });
49
- assert.strictEqual(params.templates, "ts");
50
+ assert.strictEqual(params.templates, "ts/");
50
51
  assert.strictEqual(params.templatesEngine, "b");
51
52
  }
52
53
  unknownTemplate() {
@@ -117,6 +118,28 @@ let MailerTest = class MailerTest extends test_1.WebdaTest {
117
118
  }), /Cannot send email as no transporter is defined/);
118
119
  });
119
120
  }
121
+ handleNotificationFor() {
122
+ return __awaiter(this, void 0, void 0, function* () {
123
+ const user = new __1.User();
124
+ assert.strictEqual(yield this.mailer.handleNotificationFor(user), false);
125
+ user.load({ email: "test@test.com" });
126
+ assert.strictEqual(yield this.mailer.handleNotificationFor(user), true);
127
+ });
128
+ }
129
+ sendNotification() {
130
+ return __awaiter(this, void 0, void 0, function* () {
131
+ let stub = sinon.stub(this.mailer, "send").callsFake(() => __awaiter(this, void 0, void 0, function* () { }));
132
+ try {
133
+ const user = new __1.User();
134
+ assert.rejects(() => this.mailer.sendNotification(user, "", undefined, undefined), /Cannot find a valid email for user/);
135
+ user.load({ email: "test@test.com" });
136
+ yield this.mailer.sendNotification(user, "", undefined, undefined);
137
+ }
138
+ finally {
139
+ stub.restore();
140
+ }
141
+ });
142
+ }
120
143
  };
121
144
  __decorate([
122
145
  mocha_1.test
@@ -142,6 +165,12 @@ __decorate([
142
165
  __decorate([
143
166
  mocha_1.test
144
167
  ], MailerTest.prototype, "noTransporter", null);
168
+ __decorate([
169
+ mocha_1.test
170
+ ], MailerTest.prototype, "handleNotificationFor", null);
171
+ __decorate([
172
+ mocha_1.test
173
+ ], MailerTest.prototype, "sendNotification", null);
145
174
  MailerTest = __decorate([
146
175
  mocha_1.suite
147
176
  ], MailerTest);
@@ -1 +1 @@
1
- {"version":3,"file":"mailer.spec.js","sourceRoot":"","sources":["../../src/services/mailer.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mailer.spec.js","sourceRoot":"","sources":["../../src/services/mailer.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import { Ident } from "../models/ident";
2
+ import { User } from "../models/user";
3
+ import { Service, ServiceParameters } from "./service";
4
+ /**
5
+ * Define a service that can notify a user based on his info
6
+ * It can use email or SMS or any other media
7
+ */
8
+ export interface NotificationService {
9
+ /**
10
+ * Check if this type of notification is available
11
+ */
12
+ hasNotification(notification: string): Promise<boolean>;
13
+ /**
14
+ * Check if the service can deliver notification to this user
15
+ * @param user
16
+ */
17
+ handleNotificationFor(userOrIdent: User | Ident): Promise<boolean>;
18
+ /**
19
+ * Send the notification to the user
20
+ * @param user
21
+ * @param notification
22
+ * @param replacements
23
+ */
24
+ sendNotification(user: User | Ident, notification: string, replacements: any): Promise<void>;
25
+ }
26
+ /**
27
+ * Parameters for multi notification service
28
+ */
29
+ export declare class MultiNotificationParameters extends ServiceParameters {
30
+ /**
31
+ * Notification service that will send
32
+ * The order of the array is important if multiple is false
33
+ * When multiple is `false` the first available NotificationService will
34
+ * be used, otherwise every available NotificationService will be used
35
+ */
36
+ senders: string[];
37
+ /**
38
+ * Define if it sends one or several notification per user
39
+ * @default false
40
+ */
41
+ multiple?: boolean;
42
+ /**
43
+ * @override
44
+ */
45
+ constructor(params: any);
46
+ }
47
+ /**
48
+ * Allow an aggregation of Notification to send via multiple media
49
+ * like SMS and Email
50
+ */
51
+ export default class MultiNotificationService<T extends MultiNotificationParameters = MultiNotificationParameters> extends Service<T> implements NotificationService {
52
+ senders: NotificationService[];
53
+ /**
54
+ * @override
55
+ */
56
+ loadParameters(params: any): MultiNotificationParameters;
57
+ /**
58
+ * @override
59
+ */
60
+ resolve(): void;
61
+ /**
62
+ * @override
63
+ */
64
+ sendNotification(user: User | Ident, notification: string, replacements: any): Promise<void>;
65
+ /**
66
+ * @override
67
+ */
68
+ handleNotificationFor(user: User | Ident): Promise<boolean>;
69
+ /**
70
+ * @override
71
+ */
72
+ hasNotification(notification: string): Promise<boolean>;
73
+ }
74
+ export { MultiNotificationService };
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MultiNotificationService = exports.MultiNotificationParameters = void 0;
13
+ const service_1 = require("./service");
14
+ /**
15
+ * Parameters for multi notification service
16
+ */
17
+ class MultiNotificationParameters extends service_1.ServiceParameters {
18
+ /**
19
+ * @override
20
+ */
21
+ constructor(params) {
22
+ var _a;
23
+ super(params);
24
+ (_a = this.senders) !== null && _a !== void 0 ? _a : (this.senders = []);
25
+ }
26
+ }
27
+ exports.MultiNotificationParameters = MultiNotificationParameters;
28
+ /**
29
+ * Allow an aggregation of Notification to send via multiple media
30
+ * like SMS and Email
31
+ */
32
+ class MultiNotificationService extends service_1.Service {
33
+ /**
34
+ * @override
35
+ */
36
+ loadParameters(params) {
37
+ return new MultiNotificationParameters(params);
38
+ }
39
+ /**
40
+ * @override
41
+ */
42
+ resolve() {
43
+ this.senders = this.parameters.senders.map(s => {
44
+ let service = this.getService(s);
45
+ if (!service) {
46
+ throw new Error(`Unknown service '${s}'`);
47
+ }
48
+ return service;
49
+ });
50
+ }
51
+ /**
52
+ * @override
53
+ */
54
+ sendNotification(user, notification, replacements) {
55
+ return __awaiter(this, void 0, void 0, function* () {
56
+ const selectedSenders = (yield Promise.all(this.senders.map((s) => __awaiter(this, void 0, void 0, function* () {
57
+ if ((yield s.hasNotification(notification)) && (yield s.handleNotificationFor(user))) {
58
+ return s;
59
+ }
60
+ })))).filter(s => s !== undefined);
61
+ if (!selectedSenders.length) {
62
+ return;
63
+ }
64
+ if (!this.parameters.multiple) {
65
+ return selectedSenders.shift().sendNotification(user, notification, replacements);
66
+ }
67
+ yield Promise.all(selectedSenders.map(s => s.sendNotification(user, notification, replacements)));
68
+ });
69
+ }
70
+ /**
71
+ * @override
72
+ */
73
+ handleNotificationFor(user) {
74
+ return __awaiter(this, void 0, void 0, function* () {
75
+ return (yield Promise.all(this.senders.map(s => s.handleNotificationFor(user)))).some(s => s);
76
+ });
77
+ }
78
+ /**
79
+ * @override
80
+ */
81
+ hasNotification(notification) {
82
+ return __awaiter(this, void 0, void 0, function* () {
83
+ return (yield Promise.all(this.senders.map(s => s.hasNotification(notification)))).some(s => s);
84
+ });
85
+ }
86
+ }
87
+ exports.default = MultiNotificationService;
88
+ exports.MultiNotificationService = MultiNotificationService;
89
+ //# sourceMappingURL=notificationservice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notificationservice.js","sourceRoot":"","sources":["../../src/services/notificationservice.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,uCAAuD;AAyBvD;;GAEG;AACH,MAAa,2BAA4B,SAAQ,2BAAiB;IAchE;;OAEG;IACH,YAAY,MAAW;;QACrB,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,MAAA,IAAI,CAAC,OAAO,oCAAZ,IAAI,CAAC,OAAO,GAAK,EAAE,EAAC;IACtB,CAAC;CACF;AArBD,kEAqBC;AAED;;;GAGG;AACH,MAAqB,wBACnB,SAAQ,iBAAU;IAKlB;;OAEG;IACH,cAAc,CAAC,MAAW;QACxB,OAAO,IAAI,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC7C,IAAI,OAAO,GAAkC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC;YACjE,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;aAC3C;YACD,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACG,gBAAgB,CAAC,IAAkB,EAAE,YAAoB,EAAE,YAAiB;;YAChF,MAAM,eAAe,GAAG,CACtB,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAM,CAAC,EAAC,EAAE;gBACzB,IAAI,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,EAAE;oBACpF,OAAO,CAAC,CAAC;iBACV;YACH,CAAC,CAAA,CAAC,CACH,CACF,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;YAC/B,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;gBAC3B,OAAO;aACR;YACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;gBAC7B,OAAO,eAAe,CAAC,KAAK,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;aACnF;YACD,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;QACpG,CAAC;KAAA;IAED;;OAEG;IACG,qBAAqB,CAAC,IAAkB;;YAC5C,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChG,CAAC;KAAA;IAED;;OAEG;IACG,eAAe,CAAC,YAAoB;;YACxC,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClG,CAAC;KAAA;CACF;AA7DD,2CA6DC;AAEQ,4DAAwB"}
@@ -0,0 +1 @@
1
+ export {};