@ambushsoftworks/nestjs-auth-graphql 0.7.2 → 0.9.0-rc.1
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.
- package/README.md +270 -9
- package/dist/auth.module.d.ts +7 -0
- package/dist/auth.module.d.ts.map +1 -1
- package/dist/auth.module.js +53 -0
- package/dist/auth.module.js.map +1 -1
- package/dist/exceptions/invalid-auth-config.exception.d.ts +4 -0
- package/dist/exceptions/invalid-auth-config.exception.d.ts.map +1 -0
- package/dist/exceptions/invalid-auth-config.exception.js +12 -0
- package/dist/exceptions/invalid-auth-config.exception.js.map +1 -0
- package/dist/guards/tenant.guard.d.ts.map +1 -1
- package/dist/guards/tenant.guard.js +9 -1
- package/dist/guards/tenant.guard.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/auth-lifecycle-hooks.interface.d.ts +1 -0
- package/dist/interfaces/auth-lifecycle-hooks.interface.d.ts.map +1 -1
- package/dist/interfaces/auth-logger.interface.d.ts +2 -0
- package/dist/interfaces/auth-logger.interface.d.ts.map +1 -1
- package/dist/interfaces/auth-logger.interface.js +2 -0
- package/dist/interfaces/auth-logger.interface.js.map +1 -1
- package/dist/interfaces/brute-force-repository.interface.d.ts +1 -0
- package/dist/interfaces/brute-force-repository.interface.d.ts.map +1 -1
- package/dist/interfaces/email-service.interface.d.ts +2 -6
- package/dist/interfaces/email-service.interface.d.ts.map +1 -1
- package/dist/interfaces/email-template-renderer.interface.d.ts +2 -6
- package/dist/interfaces/email-template-renderer.interface.d.ts.map +1 -1
- package/dist/interfaces/realm-extractor.interface.d.ts +1 -1
- package/dist/interfaces/realm-extractor.interface.d.ts.map +1 -1
- package/dist/interfaces/tenant-extractor.interface.d.ts +1 -1
- package/dist/interfaces/tenant-extractor.interface.d.ts.map +1 -1
- package/dist/middleware/realm.middleware.d.ts +2 -1
- package/dist/middleware/realm.middleware.d.ts.map +1 -1
- package/dist/middleware/realm.middleware.js +15 -5
- package/dist/middleware/realm.middleware.js.map +1 -1
- package/dist/repositories/noop-brute-force.repository.d.ts +1 -0
- package/dist/repositories/noop-brute-force.repository.d.ts.map +1 -1
- package/dist/repositories/noop-brute-force.repository.js +4 -0
- package/dist/repositories/noop-brute-force.repository.js.map +1 -1
- package/dist/resolvers/base-auth.resolver.d.ts +1 -0
- package/dist/resolvers/base-auth.resolver.d.ts.map +1 -1
- package/dist/resolvers/base-auth.resolver.js +12 -2
- package/dist/resolvers/base-auth.resolver.js.map +1 -1
- package/dist/services/auth.service.d.ts +9 -0
- package/dist/services/auth.service.d.ts.map +1 -1
- package/dist/services/auth.service.js +34 -11
- package/dist/services/auth.service.js.map +1 -1
- package/dist/services/brute-force-protection.service.d.ts +12 -3
- package/dist/services/brute-force-protection.service.d.ts.map +1 -1
- package/dist/services/brute-force-protection.service.js +70 -6
- package/dist/services/brute-force-protection.service.js.map +1 -1
- package/dist/services/configurable-email.service.d.ts +3 -7
- package/dist/services/configurable-email.service.d.ts.map +1 -1
- package/dist/services/configurable-email.service.js +16 -60
- package/dist/services/configurable-email.service.js.map +1 -1
- package/dist/services/default-email-template-renderer.d.ts +4 -7
- package/dist/services/default-email-template-renderer.d.ts.map +1 -1
- package/dist/services/default-email-template-renderer.js +40 -55
- package/dist/services/default-email-template-renderer.js.map +1 -1
- package/dist/services/noop-email-sender.d.ts +2 -0
- package/dist/services/noop-email-sender.d.ts.map +1 -1
- package/dist/services/noop-email-sender.js +28 -0
- package/dist/services/noop-email-sender.js.map +1 -1
- package/dist/services/noop-email.service.d.ts +2 -6
- package/dist/services/noop-email.service.d.ts.map +1 -1
- package/dist/services/noop-email.service.js +9 -17
- package/dist/services/noop-email.service.js.map +1 -1
- package/dist/services/sendgrid-email.service.d.ts +0 -13
- package/dist/services/sendgrid-email.service.d.ts.map +1 -1
- package/dist/services/sendgrid-email.service.js +4 -528
- package/dist/services/sendgrid-email.service.js.map +1 -1
- package/dist/services/verification.service.d.ts +15 -0
- package/dist/services/verification.service.d.ts.map +1 -1
- package/dist/services/verification.service.js +70 -3
- package/dist/services/verification.service.js.map +1 -1
- package/dist/test-utils/index.d.ts +1 -1
- package/dist/test-utils/index.d.ts.map +1 -1
- package/dist/test-utils/index.js +2 -1
- package/dist/test-utils/index.js.map +1 -1
- package/dist/test-utils/mock-repositories.d.ts.map +1 -1
- package/dist/test-utils/mock-repositories.js +1 -0
- package/dist/test-utils/mock-repositories.js.map +1 -1
- package/dist/test-utils/mock-services.d.ts +2 -0
- package/dist/test-utils/mock-services.d.ts.map +1 -1
- package/dist/test-utils/mock-services.js +10 -4
- package/dist/test-utils/mock-services.js.map +1 -1
- package/dist/utils/ip-hash.d.ts +2 -0
- package/dist/utils/ip-hash.d.ts.map +1 -0
- package/dist/utils/ip-hash.js +11 -0
- package/dist/utils/ip-hash.js.map +1 -0
- package/examples/full-resolver-template.ts +311 -0
- package/package.json +2 -1
|
@@ -38,15 +38,19 @@ let DefaultEmailTemplateRenderer = class DefaultEmailTemplateRenderer {
|
|
|
38
38
|
const urlBlock = params.verificationUrl
|
|
39
39
|
? this.renderButton('Verify Email', params.verificationUrl)
|
|
40
40
|
: '';
|
|
41
|
+
const instruction = params.code
|
|
42
|
+
? `Enter the code below in the ${this.appName} app to verify your account:`
|
|
43
|
+
: `Confirm your email address for ${this.appName} using the link below:`;
|
|
41
44
|
const content = `
|
|
42
45
|
<tr>
|
|
43
46
|
<td style="padding: 40px;">
|
|
44
47
|
<h1 style="margin: 0 0 16px; color: #333333; font-size: 24px; font-weight: 600;">Verify your email</h1>
|
|
45
48
|
<p style="margin: 0 0 24px; color: #555555; font-size: 16px; line-height: 24px;">
|
|
46
|
-
|
|
49
|
+
${instruction}
|
|
47
50
|
</p>
|
|
48
51
|
${codeBlock}
|
|
49
52
|
${urlBlock}
|
|
53
|
+
${this.renderExpiryNote(params.expiresInMinutes, params.code ? 'code' : 'link')}
|
|
50
54
|
<p style="margin: 24px 0 0; color: #888888; font-size: 14px; line-height: 20px;">
|
|
51
55
|
If you didn't create an account with ${this.appName}, you can safely ignore this email.
|
|
52
56
|
</p>
|
|
@@ -97,6 +101,7 @@ let DefaultEmailTemplateRenderer = class DefaultEmailTemplateRenderer {
|
|
|
97
101
|
</p>
|
|
98
102
|
${codeBlock}
|
|
99
103
|
${urlBlock}
|
|
104
|
+
${this.renderExpiryNote(params.expiresInMinutes, params.code ? 'code' : 'link')}
|
|
100
105
|
${this.renderWarningBox('Security Notice', 'If you didn't request this password reset, you can safely ignore this email. Your password will not be changed.')}
|
|
101
106
|
</td>
|
|
102
107
|
</tr>`;
|
|
@@ -166,40 +171,6 @@ let DefaultEmailTemplateRenderer = class DefaultEmailTemplateRenderer {
|
|
|
166
171
|
const text = this.renderEmailChangedText(params);
|
|
167
172
|
return { subject, html, text };
|
|
168
173
|
}
|
|
169
|
-
async renderLoginAlertEmail(params) {
|
|
170
|
-
const details = [];
|
|
171
|
-
if (params.ipAddress) {
|
|
172
|
-
details.push(`<strong>IP Address:</strong> ${(0, escape_html_1.escapeHtml)(params.ipAddress)}`);
|
|
173
|
-
}
|
|
174
|
-
if (params.userAgent) {
|
|
175
|
-
details.push(`<strong>Device:</strong> ${(0, escape_html_1.escapeHtml)(params.userAgent)}`);
|
|
176
|
-
}
|
|
177
|
-
details.push(`<strong>Time:</strong> ${(0, escape_html_1.escapeHtml)(params.timestamp.toISOString())}`);
|
|
178
|
-
const detailsHtml = details
|
|
179
|
-
.map((d) => `<p style="margin: 4px 0; color: #555555; font-size: 14px;">${d}</p>`)
|
|
180
|
-
.join('\n');
|
|
181
|
-
const content = `
|
|
182
|
-
<tr>
|
|
183
|
-
<td style="padding: 40px;">
|
|
184
|
-
<h1 style="margin: 0 0 16px; color: #333333; font-size: 24px; font-weight: 600;">New Login Detected</h1>
|
|
185
|
-
<p style="margin: 0 0 24px; color: #555555; font-size: 16px; line-height: 24px;">
|
|
186
|
-
A new login to your ${this.appName} account was detected:
|
|
187
|
-
</p>
|
|
188
|
-
<table role="presentation" style="width: 100%; margin: 0 0 24px;">
|
|
189
|
-
<tr>
|
|
190
|
-
<td style="padding: 16px; background-color: #F3F4F6; border-radius: 8px;">
|
|
191
|
-
${detailsHtml}
|
|
192
|
-
</td>
|
|
193
|
-
</tr>
|
|
194
|
-
</table>
|
|
195
|
-
${this.renderAlertBox('Not you?', 'If you didn't log in, please change your password immediately and contact support.')}
|
|
196
|
-
</td>
|
|
197
|
-
</tr>`;
|
|
198
|
-
const subject = `New login to your ${this.appName} account`;
|
|
199
|
-
const html = this.renderBaseLayout(subject, content);
|
|
200
|
-
const text = this.renderLoginAlertText(params);
|
|
201
|
-
return { subject, html, text };
|
|
202
|
-
}
|
|
203
174
|
renderBaseLayout(title, content) {
|
|
204
175
|
const logoHtml = this.logoUrl
|
|
205
176
|
? `<img src="${this.logoUrl}" alt="${this.appName}" style="max-height: 40px; display: block; margin: 0 auto;" />`
|
|
@@ -279,6 +250,19 @@ let DefaultEmailTemplateRenderer = class DefaultEmailTemplateRenderer {
|
|
|
279
250
|
</tr>
|
|
280
251
|
</table>`;
|
|
281
252
|
}
|
|
253
|
+
renderExpiryNote(expiresInMinutes, kind) {
|
|
254
|
+
if (typeof expiresInMinutes !== 'number' ||
|
|
255
|
+
!Number.isFinite(expiresInMinutes) ||
|
|
256
|
+
expiresInMinutes <= 0) {
|
|
257
|
+
return '';
|
|
258
|
+
}
|
|
259
|
+
const rounded = Math.round(expiresInMinutes);
|
|
260
|
+
const unit = rounded === 1 ? 'minute' : 'minutes';
|
|
261
|
+
return `
|
|
262
|
+
<p style="margin: 0 0 8px; color: #888888; font-size: 14px; line-height: 20px;">
|
|
263
|
+
This ${kind} expires in ${rounded} ${unit}.
|
|
264
|
+
</p>`;
|
|
265
|
+
}
|
|
282
266
|
renderWarningBox(title, message) {
|
|
283
267
|
return `
|
|
284
268
|
<table role="presentation" style="width: 100%; background-color: #fff3cd; border-left: 4px solid #ffc107; border-radius: 4px; margin: 24px 0 0;">
|
|
@@ -303,17 +287,32 @@ let DefaultEmailTemplateRenderer = class DefaultEmailTemplateRenderer {
|
|
|
303
287
|
</tr>
|
|
304
288
|
</table>`;
|
|
305
289
|
}
|
|
290
|
+
renderExpiryText(expiresInMinutes, kind) {
|
|
291
|
+
if (typeof expiresInMinutes !== 'number' ||
|
|
292
|
+
!Number.isFinite(expiresInMinutes) ||
|
|
293
|
+
expiresInMinutes <= 0) {
|
|
294
|
+
return undefined;
|
|
295
|
+
}
|
|
296
|
+
const rounded = Math.round(expiresInMinutes);
|
|
297
|
+
return `This ${kind} expires in ${rounded} ${rounded === 1 ? 'minute' : 'minutes'}.`;
|
|
298
|
+
}
|
|
306
299
|
renderVerificationText(params) {
|
|
307
300
|
const lines = [
|
|
308
301
|
`${this.appName} - Verify Your Email`,
|
|
309
302
|
'',
|
|
310
|
-
|
|
303
|
+
params.code
|
|
304
|
+
? `Enter this code in the ${this.appName} app to verify your account:`
|
|
305
|
+
: `Confirm your email address for ${this.appName} by visiting:`,
|
|
311
306
|
];
|
|
312
307
|
if (params.code) {
|
|
313
308
|
lines.push('', params.code);
|
|
314
309
|
}
|
|
315
310
|
if (params.verificationUrl) {
|
|
316
|
-
lines.push('', `Or visit: ${params.verificationUrl}`);
|
|
311
|
+
lines.push('', params.code ? `Or visit: ${params.verificationUrl}` : params.verificationUrl);
|
|
312
|
+
}
|
|
313
|
+
const verificationExpiry = this.renderExpiryText(params.expiresInMinutes, params.code ? 'code' : 'link');
|
|
314
|
+
if (verificationExpiry) {
|
|
315
|
+
lines.push('', verificationExpiry);
|
|
317
316
|
}
|
|
318
317
|
lines.push('', `If you didn't create an account with ${this.appName}, you can safely ignore this email.`, '', `(c) ${this.copyrightYear} ${this.companyName}. All rights reserved.`);
|
|
319
318
|
return lines.join('\n');
|
|
@@ -346,6 +345,10 @@ let DefaultEmailTemplateRenderer = class DefaultEmailTemplateRenderer {
|
|
|
346
345
|
if (params.resetUrl) {
|
|
347
346
|
lines.push('', `Reset link: ${params.resetUrl}`);
|
|
348
347
|
}
|
|
348
|
+
const resetExpiry = this.renderExpiryText(params.expiresInMinutes, params.code ? 'code' : 'link');
|
|
349
|
+
if (resetExpiry) {
|
|
350
|
+
lines.push('', resetExpiry);
|
|
351
|
+
}
|
|
349
352
|
lines.push('', 'SECURITY NOTICE:', "If you didn't request this password reset, you can safely ignore this email.", 'Your password will not be changed.', '', `(c) ${this.copyrightYear} ${this.companyName}. All rights reserved.`);
|
|
350
353
|
return lines.join('\n');
|
|
351
354
|
}
|
|
@@ -395,24 +398,6 @@ let DefaultEmailTemplateRenderer = class DefaultEmailTemplateRenderer {
|
|
|
395
398
|
`(c) ${this.copyrightYear} ${this.companyName}. All rights reserved.`,
|
|
396
399
|
].join('\n');
|
|
397
400
|
}
|
|
398
|
-
renderLoginAlertText(params) {
|
|
399
|
-
void params.email;
|
|
400
|
-
const lines = [
|
|
401
|
-
`${this.appName} - New Login Detected`,
|
|
402
|
-
'',
|
|
403
|
-
`A new login to your ${this.appName} account was detected:`,
|
|
404
|
-
'',
|
|
405
|
-
];
|
|
406
|
-
if (params.ipAddress) {
|
|
407
|
-
lines.push(`IP Address: ${params.ipAddress}`);
|
|
408
|
-
}
|
|
409
|
-
if (params.userAgent) {
|
|
410
|
-
lines.push(`Device: ${params.userAgent}`);
|
|
411
|
-
}
|
|
412
|
-
lines.push(`Time: ${params.timestamp.toISOString()}`);
|
|
413
|
-
lines.push('', "If you didn't log in, please change your password immediately and contact support.", '', `(c) ${this.copyrightYear} ${this.companyName}. All rights reserved.`);
|
|
414
|
-
return lines.join('\n');
|
|
415
|
-
}
|
|
416
401
|
};
|
|
417
402
|
exports.DefaultEmailTemplateRenderer = DefaultEmailTemplateRenderer;
|
|
418
403
|
exports.DefaultEmailTemplateRenderer = DefaultEmailTemplateRenderer = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-email-template-renderer.js","sourceRoot":"","sources":["../../src/services/default-email-template-renderer.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAM5C,sDAAkD;AAa3C,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;IAUvC,YACE,QAA6B,EAE7B,aAAsB;QAEtB,IAAI,CAAC,OAAO,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,wBAAU,EAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3E,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW;YACrC,CAAC,CAAC,IAAA,wBAAU,EAAC,QAAQ,CAAC,WAAW,CAAC;YAClC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY;YACvC,CAAC,CAAC,IAAA,wBAAU,EAAC,QAAQ,CAAC,YAAY,CAAC;YACnC,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe;YAC7C,CAAC,CAAC,IAAA,wBAAU,EAAC,QAAQ,CAAC,eAAe,CAAC;YACtC,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc;YAC3C,CAAC,CAAC,IAAA,wBAAU,EAAC,QAAQ,CAAC,cAAc,CAAC;YACrC,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,CAAC,aAAa,GAAG,aAAa,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACjE,CAAC;IAMD,KAAK,CAAC,uBAAuB,CAAC,
|
|
1
|
+
{"version":3,"file":"default-email-template-renderer.js","sourceRoot":"","sources":["../../src/services/default-email-template-renderer.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAM5C,sDAAkD;AAa3C,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;IAUvC,YACE,QAA6B,EAE7B,aAAsB;QAEtB,IAAI,CAAC,OAAO,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,wBAAU,EAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3E,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW;YACrC,CAAC,CAAC,IAAA,wBAAU,EAAC,QAAQ,CAAC,WAAW,CAAC;YAClC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY;YACvC,CAAC,CAAC,IAAA,wBAAU,EAAC,QAAQ,CAAC,YAAY,CAAC;YACnC,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe;YAC7C,CAAC,CAAC,IAAA,wBAAU,EAAC,QAAQ,CAAC,eAAe,CAAC;YACtC,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc;YAC3C,CAAC,CAAC,IAAA,wBAAU,EAAC,QAAQ,CAAC,cAAc,CAAC;YACrC,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,CAAC,aAAa,GAAG,aAAa,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACjE,CAAC;IAMD,KAAK,CAAC,uBAAuB,CAAC,MAK7B;QACC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI;YAC3B,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;YACjC,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe;YACrC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,eAAe,CAAC;YAC3D,CAAC,CAAC,EAAE,CAAC;QAIP,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI;YAC7B,CAAC,CAAC,+BAA+B,IAAI,CAAC,OAAO,8BAA8B;YAC3E,CAAC,CAAC,kCAAkC,IAAI,CAAC,OAAO,wBAAwB,CAAC;QAE3E,MAAM,OAAO,GAAG;;;;;cAKN,WAAW;;YAEb,SAAS;YACT,QAAQ;YACR,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;;uDAElC,IAAI,CAAC,OAAO;;;YAGvD,CAAC;QAET,MAAM,OAAO,GAAG,eAAe,IAAI,CAAC,OAAO,UAAU,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAEjD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,MAGxB;QACC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI;YAC1B,CAAC,CAAC,MAAM,IAAA,wBAAU,EAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACjC,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc;YAClC,CAAC,CAAC,oFAAoF,IAAI,CAAC,cAAc,MAAM;YAC/G,CAAC,CAAC;oCAC4B,IAAI,CAAC,OAAO;eACjC,CAAC;QAEZ,MAAM,OAAO,GAAG;;;6FAGyE,QAAQ;YACzF,QAAQ;;2BAEO,IAAI,CAAC,OAAO;;;YAG3B,CAAC;QAET,MAAM,OAAO,GAAG,cAAc,IAAI,CAAC,OAAO,GAAG,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,MAK9B;QACC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI;YAC3B,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;YACjC,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;YAC9B,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,QAAQ,CAAC;YACtD,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,OAAO,GAAG;;;;;4DAKwC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;;YAE7E,SAAS;YACT,QAAQ;YACR,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YAC7E,IAAI,CAAC,gBAAgB,CACrB,iBAAiB,EACjB,qHAAqH,CACtH;;YAEC,CAAC;QAET,MAAM,OAAO,GAAG,cAAc,IAAI,CAAC,OAAO,WAAW,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAElD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,0BAA0B,CAAC,MAEhC;QACC,MAAM,OAAO,GAAG;;;;;mBAKD,IAAI,CAAC,OAAO;;YAEnB,IAAI,CAAC,cAAc,CACnB,gBAAgB,EAChB,6IAA6I,CAC9I;;2BAEgB,IAAI,CAAC,OAAO;;;YAG3B,CAAC;QAET,MAAM,OAAO,GAAG,QAAQ,IAAI,CAAC,OAAO,uBAAuB,CAAC;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAEpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,MAG9B;QACC,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW;YACjC,CAAC,CAAC,oCAAoC,IAAA,wBAAU,EAAC,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,GAAG;YACrF,CAAC,CAAC,yBAAyB,CAAC;QAE9B,MAAM,OAAO,GAAG;;;;;mBAKD,IAAI,CAAC,OAAO;;;cAGjB,QAAQ;;YAEV,IAAI,CAAC,cAAc,CACnB,iBAAiB,EACjB,4HAA4H,CAC7H;;YAEC,CAAC;QAET,MAAM,OAAO,GAAG,QAAQ,IAAI,CAAC,OAAO,sCAAsC,CAAC;QAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAElD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,MAG7B;QACC,MAAM,YAAY,GAAG,IAAA,wBAAU,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAG;;;;;wCAKoB,IAAI,CAAC,OAAO,mCAAmC,YAAY;;YAEvF,IAAI,CAAC,cAAc,CACnB,gBAAgB,EAChB,yEAAyE,CAC1E;;2BAEgB,IAAI,CAAC,OAAO;;;YAG3B,CAAC;QAET,MAAM,OAAO,GAAG,QAAQ,IAAI,CAAC,OAAO,4BAA4B,CAAC;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAEjD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC;IAMO,gBAAgB,CAAC,KAAa,EAAE,OAAe;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO;YAC3B,CAAC,CAAC,aAAa,IAAI,CAAC,OAAO,UAAU,IAAI,CAAC,OAAO,gEAAgE;YACjH,CAAC,CAAC,2DAA2D,IAAI,CAAC,YAAY,8BAA8B,IAAI,CAAC,OAAO,SAAS,CAAC;QAEpI,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY;YACnC,CAAC,CAAC,mGAAmG,IAAI,CAAC,YAAY,mBAAmB,IAAI,CAAC,YAAY,MAAM,IAAI,CAAC,YAAY,UAAU;YAC3L,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe;YACtC,CAAC,CAAC,gEAAgE,IAAI,CAAC,eAAe,MAAM;YAC5F,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO;;;;;WAKA,KAAK;;;;;;;;;;;gBAWA,QAAQ;;;;;YAKZ,OAAO;;;;;;yBAMM,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW;;gBAE/C,WAAW;gBACX,WAAW;;;;;;;;;;;;QAYnB,CAAC;IACP,CAAC;IAMO,aAAa,CAAC,IAAY;QAChC,MAAM,QAAQ,GAAG,IAAA,wBAAU,EAAC,IAAI,CAAC,CAAC;QAClC,OAAO;;;+HAGoH,IAAI,CAAC,YAAY;6FACnD,IAAI,CAAC,YAAY;oBAC1F,QAAQ;;;;mBAIT,CAAC;IAClB,CAAC;IAEO,YAAY,CAAC,KAAa,EAAE,GAAW;QAC7C,MAAM,OAAO,GAAG,IAAA,wBAAU,EAAC,GAAG,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,IAAA,wBAAU,EAAC,KAAK,CAAC,CAAC;QACpC,OAAO;;;;2BAIgB,OAAO,yEAAyE,IAAI,CAAC,YAAY,oGAAoG,SAAS;;;mBAGtN,CAAC;IAClB,CAAC;IAUO,gBAAgB,CACtB,gBAAoC,EACpC,IAAqB;QAErB,IACE,OAAO,gBAAgB,KAAK,QAAQ;YACpC,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAClC,gBAAgB,IAAI,CAAC,EACrB,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAElD,OAAO;;mBAEQ,IAAI,eAAe,OAAO,IAAI,IAAI;eACtC,CAAC;IACd,CAAC;IAEO,gBAAgB,CAAC,KAAa,EAAE,OAAe;QACrD,OAAO;;;;;4BAKiB,KAAK,cAAc,OAAO;;;;mBAInC,CAAC;IAClB,CAAC;IAEO,cAAc,CAAC,KAAa,EAAE,OAAe;QACnD,OAAO;;;;;4BAKiB,KAAK,cAAc,OAAO;;;;mBAInC,CAAC;IAClB,CAAC;IAOO,gBAAgB,CACtB,gBAAoC,EACpC,IAAqB;QAErB,IACE,OAAO,gBAAgB,KAAK,QAAQ;YACpC,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAClC,gBAAgB,IAAI,CAAC,EACrB,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC7C,OAAO,QAAQ,IAAI,eAAe,OAAO,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC;IACvF,CAAC;IAEO,sBAAsB,CAAC,MAK9B;QACC,MAAM,KAAK,GAAa;YACtB,GAAG,IAAI,CAAC,OAAO,sBAAsB;YACrC,EAAE;YACF,MAAM,CAAC,IAAI;gBACT,CAAC,CAAC,0BAA0B,IAAI,CAAC,OAAO,8BAA8B;gBACtE,CAAC,CAAC,kCAAkC,IAAI,CAAC,OAAO,eAAe;SAClE,CAAC;QACF,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/F,CAAC;QACD,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAC9C,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAC9B,CAAC;QACF,IAAI,kBAAkB,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,CAAC,IAAI,CACR,EAAE,EACF,wCAAwC,IAAI,CAAC,OAAO,qCAAqC,EACzF,EAAE,EACF,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,wBAAwB,CACtE,CAAC;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEO,iBAAiB,CAAC,MAAwC;QAChE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc;YAC9B,CAAC,CAAC,IAAI,CAAC,cAAc;YACrB,CAAC,CAAC,yBAAyB,IAAI,CAAC,OAAO,uCAAuC,CAAC;QACjF,OAAO;YACL,GAAG,IAAI,CAAC,OAAO,MAAM,QAAQ,GAAG;YAChC,EAAE;YACF,IAAI;YACJ,EAAE;YACF,OAAO;YACP,OAAO,IAAI,CAAC,OAAO,OAAO;YAC1B,EAAE;YACF,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,wBAAwB;SACtE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAEO,uBAAuB,CAAC,MAK/B;QACC,MAAM,KAAK,GAAa;YACtB,cAAc,IAAI,CAAC,OAAO,WAAW;YACrC,EAAE;YACF,uCAAuC;SACxC,CAAC;QACF,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,sBAAsB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,eAAe,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CACvC,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAC9B,CAAC;QACF,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QAC9B,CAAC;QACD,KAAK,CAAC,IAAI,CACR,EAAE,EACF,kBAAkB,EAClB,8EAA8E,EAC9E,oCAAoC,EACpC,EAAE,EACF,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,wBAAwB,CACtE,CAAC;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEO,yBAAyB,CAAC,MAAyB;QACzD,KAAK,MAAM,CAAC;QACZ,OAAO;YACL,GAAG,IAAI,CAAC,OAAO,qBAAqB;YACpC,EAAE;YACF,QAAQ,IAAI,CAAC,OAAO,yCAAyC;YAC7D,EAAE;YACF,6FAA6F;YAC7F,6DAA6D;YAC7D,EAAE;YACF,OAAO;YACP,OAAO,IAAI,CAAC,OAAO,OAAO;YAC1B,EAAE;YACF,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,wBAAwB;SACtE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAEO,uBAAuB,CAAC,MAG/B;QACC,KAAK,MAAM,CAAC,KAAK,CAAC;QAClB,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW;YACjC,CAAC,CAAC,oCAAoC,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG;YACzE,CAAC,CAAC,yBAAyB,CAAC;QAC9B,OAAO;YACL,GAAG,IAAI,CAAC,OAAO,+BAA+B;YAC9C,EAAE;YACF,iFAAiF;YACjF,QAAQ;YACR,EAAE;YACF,sEAAsE;YACtE,EAAE;YACF,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,wBAAwB;SACtE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAEO,sBAAsB,CAAC,MAG9B;QACC,OAAO;YACL,GAAG,IAAI,CAAC,OAAO,0BAA0B;YACzC,EAAE;YACF,6BAA6B,IAAI,CAAC,OAAO,2BAA2B,MAAM,CAAC,QAAQ,GAAG;YACtF,EAAE;YACF,qFAAqF;YACrF,EAAE;YACF,OAAO;YACP,OAAO,IAAI,CAAC,OAAO,OAAO;YAC1B,EAAE;YACF,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,wBAAwB;SACtE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACF,CAAA;AAniBY,oEAA4B;uCAA5B,4BAA4B;IADxC,IAAA,mBAAU,GAAE;;GACA,4BAA4B,CAmiBxC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noop-email-sender.d.ts","sourceRoot":"","sources":["../../src/services/noop-email-sender.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"noop-email-sender.d.ts","sourceRoot":"","sources":["../../src/services/noop-email-sender.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAgBpE,qBACa,eAAgB,YAAW,YAAY;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAErD,IAAI,CAAC,MAAM,EAAE;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACvC,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BjB,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,cAAc;CAQvB"}
|
|
@@ -15,6 +15,34 @@ let NoOpEmailSender = NoOpEmailSender_1 = class NoOpEmailSender {
|
|
|
15
15
|
}
|
|
16
16
|
async send(params) {
|
|
17
17
|
this.logger.log(`[NoOp] Would send email to ${params.to} from ${params.from.email} (subject: ${params.subject})`);
|
|
18
|
+
const links = this.extractLinks(params.html, params.text);
|
|
19
|
+
if (links.length === 0) {
|
|
20
|
+
this.logger.log('[NoOp] Message contains no links');
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
for (const link of links) {
|
|
24
|
+
this.logger.log(`[NoOp] Link: ${link}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
extractLinks(html, text) {
|
|
28
|
+
const found = [];
|
|
29
|
+
const hrefPattern = /href\s*=\s*["']([^"']+)["']/gi;
|
|
30
|
+
for (const [, href] of html.matchAll(hrefPattern)) {
|
|
31
|
+
found.push(this.decodeEntities(href));
|
|
32
|
+
}
|
|
33
|
+
if (found.length === 0 && text) {
|
|
34
|
+
const urlPattern = /https?:\/\/[^\s<>"']+/gi;
|
|
35
|
+
found.push(...(text.match(urlPattern) ?? []));
|
|
36
|
+
}
|
|
37
|
+
return [...new Set(found)];
|
|
38
|
+
}
|
|
39
|
+
decodeEntities(value) {
|
|
40
|
+
return value
|
|
41
|
+
.replace(/&/g, '&')
|
|
42
|
+
.replace(/</g, '<')
|
|
43
|
+
.replace(/>/g, '>')
|
|
44
|
+
.replace(/"/g, '"')
|
|
45
|
+
.replace(/'/g, "'");
|
|
18
46
|
}
|
|
19
47
|
};
|
|
20
48
|
exports.NoOpEmailSender = NoOpEmailSender;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noop-email-sender.js","sourceRoot":"","sources":["../../src/services/noop-email-sender.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;
|
|
1
|
+
{"version":3,"file":"noop-email-sender.js","sourceRoot":"","sources":["../../src/services/noop-email-sender.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;AAkB7C,IAAM,eAAe,uBAArB,MAAM,eAAe;IAArB;QACY,WAAM,GAAG,IAAI,eAAM,CAAC,iBAAe,CAAC,IAAI,CAAC,CAAC;IAgE7D,CAAC;IA9DC,KAAK,CAAC,IAAI,CAAC,MAMV;QACC,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,8BAA8B,MAAM,CAAC,EAAE,SAAS,MAAM,CAAC,IAAI,CAAC,KAAK,cAAc,MAAM,CAAC,OAAO,GAAG,CACjG,CAAC;QAOF,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAE1D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAOO,YAAY,CAAC,IAAY,EAAE,IAAa;QAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,MAAM,WAAW,GAAG,+BAA+B,CAAC;QACpD,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAClD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,yBAAyB,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7B,CAAC;IAOO,cAAc,CAAC,KAAa;QAClC,OAAO,KAAK;aACT,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;aACtB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;aACrB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;aACrB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;aACvB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC5B,CAAC;CACF,CAAA;AAjEY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;GACA,eAAe,CAiE3B"}
|
|
@@ -2,12 +2,8 @@ import { IEmailService } from '../interfaces/email-service.interface';
|
|
|
2
2
|
export declare class NoOpEmailService implements IEmailService {
|
|
3
3
|
private readonly logger;
|
|
4
4
|
private maskSecret;
|
|
5
|
-
sendVerificationEmail(email: string, code: string, expiresInMinutes: number): Promise<void>;
|
|
6
|
-
sendPasswordResetEmail(email: string, resetToken: string, resetUrl: string): Promise<void>;
|
|
7
|
-
sendAccountLockedEmail(email: string, lockDurationMinutes: number): Promise<void>;
|
|
8
|
-
sendWelcomeEmail(email: string, name?: string): Promise<void>;
|
|
9
|
-
sendAccountLinkedEmail(email: string, provider: 'google' | 'facebook', linkedAt: Date): Promise<void>;
|
|
10
|
-
sendAccountUnlinkedEmail(email: string, provider: 'google' | 'facebook', unlinkedAt: Date): Promise<void>;
|
|
5
|
+
sendVerificationEmail(email: string, code: string, expiresInMinutes: number, verificationUrl?: string): Promise<void>;
|
|
6
|
+
sendPasswordResetEmail(email: string, resetToken: string, resetUrl: string, expiresInMinutes?: number): Promise<void>;
|
|
11
7
|
sendPasswordChangedEmail(email: string, changedAt: Date, ipAddress?: string): Promise<void>;
|
|
12
8
|
}
|
|
13
9
|
//# sourceMappingURL=noop-email.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noop-email.service.d.ts","sourceRoot":"","sources":["../../src/services/noop-email.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAUtE,qBACa,gBAAiB,YAAW,aAAa;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAG5D,OAAO,CAAC,UAAU;IAKZ,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"noop-email.service.d.ts","sourceRoot":"","sources":["../../src/services/noop-email.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAUtE,qBACa,gBAAiB,YAAW,aAAa;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAG5D,OAAO,CAAC,UAAU;IAKZ,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,EACxB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC;IAaV,sBAAsB,CAC1B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC;IAQV,wBAAwB,CAC5B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,IAAI,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;CAKjB"}
|
|
@@ -18,23 +18,15 @@ let NoOpEmailService = NoOpEmailService_1 = class NoOpEmailService {
|
|
|
18
18
|
return '****';
|
|
19
19
|
return value.substring(0, 2) + '****';
|
|
20
20
|
}
|
|
21
|
-
async sendVerificationEmail(email, code, expiresInMinutes) {
|
|
22
|
-
this.logger.log(`[NoOp] Would send verification email to ${email} with code ${this.maskSecret(code)},
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
async sendWelcomeEmail(email, name) {
|
|
31
|
-
this.logger.log(`[NoOp] Would send welcome email to ${email} for user ${name || 'unknown'}`);
|
|
32
|
-
}
|
|
33
|
-
async sendAccountLinkedEmail(email, provider, linkedAt) {
|
|
34
|
-
this.logger.log(`[NoOp] Would send account linked email to ${email}, provider: ${provider}, linked at: ${linkedAt}`);
|
|
35
|
-
}
|
|
36
|
-
async sendAccountUnlinkedEmail(email, provider, unlinkedAt) {
|
|
37
|
-
this.logger.log(`[NoOp] Would send account unlinked email to ${email}, provider: ${provider}, unlinked at: ${unlinkedAt}`);
|
|
21
|
+
async sendVerificationEmail(email, code, expiresInMinutes, verificationUrl) {
|
|
22
|
+
this.logger.log(`[NoOp] Would send verification email to ${email} with code ${this.maskSecret(code)}, ` +
|
|
23
|
+
`expires in ${expiresInMinutes} minutes` +
|
|
24
|
+
(verificationUrl ? `, URL: ${verificationUrl}` : ''));
|
|
25
|
+
}
|
|
26
|
+
async sendPasswordResetEmail(email, resetToken, resetUrl, expiresInMinutes) {
|
|
27
|
+
this.logger.log(`[NoOp] Would send password reset email to ${email} with token ${this.maskSecret(resetToken)}` +
|
|
28
|
+
(expiresInMinutes ? `, expires in ${expiresInMinutes} minutes` : '') +
|
|
29
|
+
`, URL: ${resetUrl}`);
|
|
38
30
|
}
|
|
39
31
|
async sendPasswordChangedEmail(email, changedAt, ipAddress) {
|
|
40
32
|
this.logger.log(`[NoOp] Would send password changed email to ${email}, changed at: ${changedAt}, IP: ${ipAddress || 'unknown'}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noop-email.service.js","sourceRoot":"","sources":["../../src/services/noop-email.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;AAY7C,IAAM,gBAAgB,wBAAtB,MAAM,gBAAgB;IAAtB;QACY,WAAM,GAAG,IAAI,eAAM,CAAC,kBAAgB,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"noop-email.service.js","sourceRoot":"","sources":["../../src/services/noop-email.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;AAY7C,IAAM,gBAAgB,wBAAtB,MAAM,gBAAgB;IAAtB;QACY,WAAM,GAAG,IAAI,eAAM,CAAC,kBAAgB,CAAC,IAAI,CAAC,CAAC;IAgD9D,CAAC;IA7CS,UAAU,CAAC,KAAa;QAC9B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,MAAM,CAAC;QAC9C,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,KAAa,EACb,IAAY,EACZ,gBAAwB,EACxB,eAAwB;QAOxB,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,2CAA2C,KAAK,cAAc,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI;YACvF,cAAc,gBAAgB,UAAU;YACxC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACrD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,sBAAsB,CAC1B,KAAa,EACb,UAAkB,EAClB,QAAgB,EAChB,gBAAyB;QAEzB,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,6CAA6C,KAAK,eAAe,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;YAC9F,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,gBAAgB,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,UAAU,QAAQ,EAAE,CACrB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,wBAAwB,CAC5B,KAAa,EACb,SAAe,EACf,SAAkB;QAElB,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,+CAA+C,KAAK,iBAAiB,SAAS,SAAS,SAAS,IAAI,SAAS,EAAE,CAChH,CAAC;IACJ,CAAC;CACF,CAAA;AAjDY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;GACA,gBAAgB,CAiD5B"}
|
|
@@ -8,26 +8,13 @@ export declare class EmailService implements IEmailService {
|
|
|
8
8
|
constructor(options: AuthModuleOptions);
|
|
9
9
|
sendVerificationEmail(email: string, code: string, expiresInMinutes: number): Promise<void>;
|
|
10
10
|
sendPasswordResetEmail(email: string, code: string, _resetUrl: string): Promise<void>;
|
|
11
|
-
sendAccountLockedEmail(email: string, lockDurationMinutes: number): Promise<void>;
|
|
12
|
-
sendWelcomeEmail(email: string, name?: string): Promise<void>;
|
|
13
|
-
sendAccountLinkedEmail(email: string, provider: 'google' | 'facebook', linkedAt: Date): Promise<void>;
|
|
14
|
-
sendAccountUnlinkedEmail(email: string, provider: 'google' | 'facebook', unlinkedAt: Date): Promise<void>;
|
|
15
11
|
sendPasswordChangedEmail(email: string, changedAt: Date, ipAddress?: string): Promise<void>;
|
|
16
12
|
private renderVerificationHtmlTemplate;
|
|
17
13
|
private renderPasswordResetHtmlTemplate;
|
|
18
|
-
private renderAccountLockedHtmlTemplate;
|
|
19
|
-
private renderWelcomeHtmlTemplate;
|
|
20
|
-
private renderAccountLinkedHtmlTemplate;
|
|
21
|
-
private renderAccountUnlinkedHtmlTemplate;
|
|
22
14
|
private renderPasswordChangedHtmlTemplate;
|
|
23
15
|
private renderVerificationTextTemplate;
|
|
24
16
|
private renderPasswordResetTextTemplate;
|
|
25
|
-
private renderAccountLockedTextTemplate;
|
|
26
|
-
private renderWelcomeTextTemplate;
|
|
27
|
-
private renderAccountLinkedTextTemplate;
|
|
28
|
-
private renderAccountUnlinkedTextTemplate;
|
|
29
17
|
private renderPasswordChangedTextTemplate;
|
|
30
|
-
private capitalize;
|
|
31
18
|
private formatDate;
|
|
32
19
|
}
|
|
33
20
|
//# sourceMappingURL=sendgrid-email.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sendgrid-email.service.d.ts","sourceRoot":"","sources":["../../src/services/sendgrid-email.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAEtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAiBxD,qBACa,YAAa,YAAW,aAAa;IAKP,OAAO,CAAC,OAAO;IAJxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEe,OAAO,EAAE,iBAAiB;
|
|
1
|
+
{"version":3,"file":"sendgrid-email.service.d.ts","sourceRoot":"","sources":["../../src/services/sendgrid-email.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAEtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAiBxD,qBACa,YAAa,YAAW,aAAa;IAKP,OAAO,CAAC,OAAO;IAJxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEe,OAAO,EAAE,iBAAiB;IAgBrE,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC;IAkBV,sBAAsB,CAC1B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;IAkBV,wBAAwB,CAC5B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,IAAI,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;IAyBhB,OAAO,CAAC,8BAA8B;IA8GtC,OAAO,CAAC,+BAA+B;IA6EvC,OAAO,CAAC,iCAAiC;IA8GzC,OAAO,CAAC,8BAA8B;IAgBtC,OAAO,CAAC,+BAA+B;IAoBvC,OAAO,CAAC,iCAAiC;IA0BzC,OAAO,CAAC,UAAU;CAMnB"}
|