@mondomob/gae-node-nestjs 11.0.2 → 12.0.0-alpha-2
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/.claude/settings.local.json +7 -0
- package/CHANGELOG.md +0 -13
- package/mondomob-gae-node-nestjs-12.0.0-alpha-1.tgz +0 -0
- package/mondomob-gae-node-nestjs-12.0.0-alpha-2.tgz +0 -0
- package/package.json +12 -12
- package/server-start.js +72 -1
- package/dist/_test/mocks.d.ts +0 -9
- package/dist/_test/mocks.js +0 -27
- package/dist/_test/mocks.js.map +0 -1
- package/dist/_test/request-scope-test-utils.d.ts +0 -3
- package/dist/_test/request-scope-test-utils.js +0 -18
- package/dist/_test/request-scope-test-utils.js.map +0 -1
- package/dist/auth/auth-user.model.d.ts +0 -9
- package/dist/auth/auth-user.model.js +0 -33
- package/dist/auth/auth-user.model.js.map +0 -1
- package/dist/auth/auth.callbacks.d.ts +0 -8
- package/dist/auth/auth.callbacks.js +0 -5
- package/dist/auth/auth.callbacks.js.map +0 -1
- package/dist/auth/auth.configurer.d.ts +0 -35
- package/dist/auth/auth.configurer.js +0 -212
- package/dist/auth/auth.configurer.js.map +0 -1
- package/dist/auth/auth.controller.d.ts +0 -27
- package/dist/auth/auth.controller.js +0 -312
- package/dist/auth/auth.controller.js.map +0 -1
- package/dist/auth/auth.guard.d.ts +0 -16
- package/dist/auth/auth.guard.js +0 -127
- package/dist/auth/auth.guard.js.map +0 -1
- package/dist/auth/auth.listener.d.ts +0 -5
- package/dist/auth/auth.listener.js +0 -5
- package/dist/auth/auth.listener.js.map +0 -1
- package/dist/auth/auth.repository.d.ts +0 -52
- package/dist/auth/auth.repository.js +0 -79
- package/dist/auth/auth.repository.js.map +0 -1
- package/dist/auth/auth.resolver.d.ts +0 -13
- package/dist/auth/auth.resolver.js +0 -86
- package/dist/auth/auth.resolver.js.map +0 -1
- package/dist/auth/auth.service.d.ts +0 -35
- package/dist/auth/auth.service.js +0 -299
- package/dist/auth/auth.service.js.map +0 -1
- package/dist/auth/auth.task.controller.d.ts +0 -13
- package/dist/auth/auth.task.controller.js +0 -76
- package/dist/auth/auth.task.controller.js.map +0 -1
- package/dist/auth/auth.task.service.d.ts +0 -8
- package/dist/auth/auth.task.service.js +0 -26
- package/dist/auth/auth.task.service.js.map +0 -1
- package/dist/auth/csrf.interceptor.d.ts +0 -11
- package/dist/auth/csrf.interceptor.js +0 -38
- package/dist/auth/csrf.interceptor.js.map +0 -1
- package/dist/auth/invite-user.service.d.ts +0 -45
- package/dist/auth/invite-user.service.js +0 -215
- package/dist/auth/invite-user.service.js.map +0 -1
- package/dist/auth/invite.callbacks.d.ts +0 -6
- package/dist/auth/invite.callbacks.js +0 -5
- package/dist/auth/invite.callbacks.js.map +0 -1
- package/dist/auth/login-identifier.repository.d.ts +0 -13
- package/dist/auth/login-identifier.repository.js +0 -28
- package/dist/auth/login-identifier.repository.js.map +0 -1
- package/dist/auth/password-reset.service.d.ts +0 -15
- package/dist/auth/password-reset.service.js +0 -81
- package/dist/auth/password-reset.service.js.map +0 -1
- package/dist/auth/user.service.d.ts +0 -27
- package/dist/auth/user.service.js +0 -94
- package/dist/auth/user.service.js.map +0 -1
- package/dist/configuration.d.ts +0 -84
- package/dist/configuration.js +0 -5
- package/dist/configuration.js.map +0 -1
- package/dist/configure.d.ts +0 -40
- package/dist/configure.js +0 -85
- package/dist/configure.js.map +0 -1
- package/dist/context/context-middleware.d.ts +0 -15
- package/dist/context/context-middleware.js +0 -37
- package/dist/context/context-middleware.js.map +0 -1
- package/dist/context/context-request-scope.d.ts +0 -8
- package/dist/context/context-request-scope.js +0 -29
- package/dist/context/context-request-scope.js.map +0 -1
- package/dist/context/index.d.ts +0 -2
- package/dist/context/index.js +0 -9
- package/dist/context/index.js.map +0 -1
- package/dist/datastore/context.d.ts +0 -36
- package/dist/datastore/context.js +0 -27
- package/dist/datastore/context.js.map +0 -1
- package/dist/datastore/datastore.provider.d.ts +0 -8
- package/dist/datastore/datastore.provider.js +0 -30
- package/dist/datastore/datastore.provider.js.map +0 -1
- package/dist/datastore/filters.d.ts +0 -19
- package/dist/datastore/filters.js +0 -27
- package/dist/datastore/filters.js.map +0 -1
- package/dist/datastore/loader.d.ts +0 -50
- package/dist/datastore/loader.js +0 -147
- package/dist/datastore/loader.js.map +0 -1
- package/dist/datastore/node-datastore-session.d.ts +0 -17
- package/dist/datastore/node-datastore-session.js +0 -87
- package/dist/datastore/node-datastore-session.js.map +0 -1
- package/dist/datastore/repository.d.ts +0 -45
- package/dist/datastore/repository.js +0 -150
- package/dist/datastore/repository.js.map +0 -1
- package/dist/datastore/transactional.d.ts +0 -4
- package/dist/datastore/transactional.js +0 -13
- package/dist/datastore/transactional.js.map +0 -1
- package/dist/error/NonFatalError.d.ts +0 -3
- package/dist/error/NonFatalError.js +0 -11
- package/dist/error/NonFatalError.js.map +0 -1
- package/dist/filter.d.ts +0 -5
- package/dist/filter.js +0 -40
- package/dist/filter.js.map +0 -1
- package/dist/gcloud/logging.d.ts +0 -1
- package/dist/gcloud/logging.js +0 -5
- package/dist/gcloud/logging.js.map +0 -1
- package/dist/gcloud/storage.provider.d.ts +0 -12
- package/dist/gcloud/storage.provider.js +0 -41
- package/dist/gcloud/storage.provider.js.map +0 -1
- package/dist/gcloud/tasks.d.ts +0 -10
- package/dist/gcloud/tasks.js +0 -68
- package/dist/gcloud/tasks.js.map +0 -1
- package/dist/graphql/GraphQLMiddleware.d.ts +0 -0
- package/dist/graphql/GraphQLMiddleware.js +0 -2
- package/dist/graphql/GraphQLMiddleware.js.map +0 -1
- package/dist/index.d.ts +0 -28
- package/dist/index.js +0 -65
- package/dist/index.js.map +0 -1
- package/dist/logging/index.d.ts +0 -1
- package/dist/logging/index.js +0 -8
- package/dist/logging/index.js.map +0 -1
- package/dist/logging/logging-internal.d.ts +0 -2
- package/dist/logging/logging-internal.js +0 -20
- package/dist/logging/logging-internal.js.map +0 -1
- package/dist/logging/logging-request-scope.d.ts +0 -15
- package/dist/logging/logging-request-scope.js +0 -39
- package/dist/logging/logging-request-scope.js.map +0 -1
- package/dist/logging/logging.d.ts +0 -34
- package/dist/logging/logging.js +0 -55
- package/dist/logging/logging.js.map +0 -1
- package/dist/mail/gmail/gmail.configurer.d.ts +0 -15
- package/dist/mail/gmail/gmail.configurer.js +0 -59
- package/dist/mail/gmail/gmail.configurer.js.map +0 -1
- package/dist/mail/gmail/gmail.controller.d.ts +0 -9
- package/dist/mail/gmail/gmail.controller.js +0 -62
- package/dist/mail/gmail/gmail.controller.js.map +0 -1
- package/dist/mail/gmail/gmail.sender.d.ts +0 -12
- package/dist/mail/gmail/gmail.sender.js +0 -62
- package/dist/mail/gmail/gmail.sender.js.map +0 -1
- package/dist/mail/gmail/stored.credentials.repository.d.ts +0 -12
- package/dist/mail/gmail/stored.credentials.repository.js +0 -23
- package/dist/mail/gmail/stored.credentials.repository.js.map +0 -1
- package/dist/mail/mail-logging.sender.d.ts +0 -9
- package/dist/mail/mail-logging.sender.js +0 -42
- package/dist/mail/mail-logging.sender.js.map +0 -1
- package/dist/mail/mail-subject.sender.d.ts +0 -12
- package/dist/mail/mail-subject.sender.js +0 -33
- package/dist/mail/mail-subject.sender.js.map +0 -1
- package/dist/mail/mail-whitelist.sender.d.ts +0 -14
- package/dist/mail/mail-whitelist.sender.js +0 -59
- package/dist/mail/mail-whitelist.sender.js.map +0 -1
- package/dist/mail/mail.diverter.d.ts +0 -13
- package/dist/mail/mail.diverter.js +0 -65
- package/dist/mail/mail.diverter.js.map +0 -1
- package/dist/mail/mail.sender.d.ts +0 -6
- package/dist/mail/mail.sender.js +0 -5
- package/dist/mail/mail.sender.js.map +0 -1
- package/dist/mail/smtp/smtp.sender.d.ts +0 -10
- package/dist/mail/smtp/smtp.sender.js +0 -65
- package/dist/mail/smtp/smtp.sender.js.map +0 -1
- package/dist/mail-templates/base.d.ts +0 -2
- package/dist/mail-templates/base.js +0 -328
- package/dist/mail-templates/base.js.map +0 -1
- package/dist/mail-templates/invite.d.ts +0 -1
- package/dist/mail-templates/invite.js +0 -19
- package/dist/mail-templates/invite.js.map +0 -1
- package/dist/module.d.ts +0 -16
- package/dist/module.js +0 -136
- package/dist/module.js.map +0 -1
- package/dist/request-scope/index.d.ts +0 -2
- package/dist/request-scope/index.js +0 -9
- package/dist/request-scope/index.js.map +0 -1
- package/dist/request-scope/request-scope-interceptor.d.ts +0 -5
- package/dist/request-scope/request-scope-interceptor.js +0 -3
- package/dist/request-scope/request-scope-interceptor.js.map +0 -1
- package/dist/request-scope/request-scope.d.ts +0 -12
- package/dist/request-scope/request-scope.js +0 -79
- package/dist/request-scope/request-scope.js.map +0 -1
- package/dist/request-scope/request-scope.middleware.d.ts +0 -15
- package/dist/request-scope/request-scope.middleware.js +0 -53
- package/dist/request-scope/request-scope.middleware.js.map +0 -1
- package/dist/search/search.service.d.ts +0 -52
- package/dist/search/search.service.js +0 -90
- package/dist/search/search.service.js.map +0 -1
- package/dist/search/searchable.repository.d.ts +0 -36
- package/dist/search/searchable.repository.js +0 -95
- package/dist/search/searchable.repository.js.map +0 -1
- package/dist/types.d.ts +0 -3
- package/dist/types.js +0 -9
- package/dist/types.js.map +0 -1
- package/dist/util/arrays.d.ts +0 -1
- package/dist/util/arrays.js +0 -10
- package/dist/util/arrays.js.map +0 -1
- package/dist/util/guards.d.ts +0 -1
- package/dist/util/guards.js +0 -7
- package/dist/util/guards.js.map +0 -1
- package/dist/util/index.d.ts +0 -1
- package/dist/util/index.js +0 -5
- package/dist/util/index.js.map +0 -1
- package/dist/util/nestjs.d.ts +0 -9
- package/dist/util/nestjs.js +0 -9
- package/dist/util/nestjs.js.map +0 -1
- package/dist/util/types.d.ts +0 -4
- package/dist/util/types.js +0 -8
- package/dist/util/types.js.map +0 -1
- package/dist/validator.d.ts +0 -1
- package/dist/validator.js +0 -5
- package/dist/validator.js.map +0 -1
- package/mondomob-gae-node-nestjs-11.0.2-alpha.tgz +0 -0
- package/mondomob-gae-node-nestjs-11.0.2-alpha1.tgz +0 -0
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GmailSender = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const common_1 = require("@nestjs/common");
|
|
6
|
-
const gmail_configurer_1 = require("./gmail.configurer");
|
|
7
|
-
const nodemailer_1 = require("nodemailer");
|
|
8
|
-
const configuration_1 = require("../../configuration");
|
|
9
|
-
const logging_1 = require("../../logging");
|
|
10
|
-
let GmailSender = class GmailSender {
|
|
11
|
-
constructor(gmailConfigurer, configurationProvider) {
|
|
12
|
-
this.gmailConfigurer = gmailConfigurer;
|
|
13
|
-
this.configurationProvider = configurationProvider;
|
|
14
|
-
this.logger = (0, logging_1.createLogger)('gmail-sender');
|
|
15
|
-
this.logger.info('Created GmailSender');
|
|
16
|
-
}
|
|
17
|
-
async send(context, mailOptions) {
|
|
18
|
-
const credential = await this.gmailConfigurer.getCredential(context);
|
|
19
|
-
if (!credential) {
|
|
20
|
-
this.logger.error('Gmail OAuth is not configured yet. No StoredCredential entity with id "gmail-credential"');
|
|
21
|
-
}
|
|
22
|
-
else if (!this.configurationProvider.auth.google) {
|
|
23
|
-
this.logger.error('Gmail OAuth is not configured yet. No environment configuration exists for "auth.google"');
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
const auth = {
|
|
27
|
-
type: 'oauth2',
|
|
28
|
-
user: this.configurationProvider.gmailUser,
|
|
29
|
-
clientId: this.configurationProvider.auth.google.clientId,
|
|
30
|
-
clientSecret: this.configurationProvider.auth.google.secret,
|
|
31
|
-
refreshToken: credential.value,
|
|
32
|
-
};
|
|
33
|
-
const transport = {
|
|
34
|
-
service: 'gmail',
|
|
35
|
-
auth,
|
|
36
|
-
};
|
|
37
|
-
const transporter = (0, nodemailer_1.createTransport)(transport);
|
|
38
|
-
this.logger.info({
|
|
39
|
-
logDetails: {
|
|
40
|
-
to: mailOptions.to,
|
|
41
|
-
cc: mailOptions.cc,
|
|
42
|
-
bcc: mailOptions.bcc,
|
|
43
|
-
},
|
|
44
|
-
}, 'Sending email (see logDetails property for to, cc, bcc) with subject: %s', mailOptions.subject);
|
|
45
|
-
await new Promise((resolve, reject) => transporter.sendMail(Object.assign({ from: auth.user }, mailOptions), (err, res) => {
|
|
46
|
-
if (err) {
|
|
47
|
-
reject(err);
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
resolve(res);
|
|
51
|
-
}
|
|
52
|
-
}));
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
exports.GmailSender = GmailSender;
|
|
57
|
-
exports.GmailSender = GmailSender = tslib_1.__decorate([
|
|
58
|
-
(0, common_1.Injectable)(),
|
|
59
|
-
tslib_1.__param(1, (0, common_1.Inject)(configuration_1.CONFIGURATION)),
|
|
60
|
-
tslib_1.__metadata("design:paramtypes", [gmail_configurer_1.GmailConfigurer, Object])
|
|
61
|
-
], GmailSender);
|
|
62
|
-
//# sourceMappingURL=gmail.sender.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gmail.sender.js","sourceRoot":"","sources":["../../../src/mail/gmail/gmail.sender.ts"],"names":[],"mappings":";;;;AAAA,2CAAoD;AAEpD,yDAAqD;AACrD,2CAA8D;AAE9D,uDAAmE;AAEnE,2CAAqD;AAG9C,IAAM,WAAW,GAAjB,MAAM,WAAW;IAGtB,YACmB,eAAgC,EAC1B,qBAAqD;QAD3D,oBAAe,GAAf,eAAe,CAAiB;QACT,0BAAqB,GAArB,qBAAqB,CAAe;QAJtE,WAAM,GAAW,IAAA,sBAAY,EAAC,cAAc,CAAC,CAAC;QAMpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAgB,EAAE,WAAoB;QAC/C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAErE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0FAA0F,CAAC,CAAC;QAChH,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0FAA0F,CAAC,CAAC;QAChH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG;gBACX,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,SAAS;gBAC1C,QAAQ,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;gBACzD,YAAY,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;gBAC3D,YAAY,EAAE,UAAU,CAAC,KAAK;aAC/B,CAAC;YAEF,MAAM,SAAS,GAAQ;gBACrB,OAAO,EAAE,OAAO;gBAChB,IAAI;aACL,CAAC;YACF,MAAM,WAAW,GAAG,IAAA,4BAAe,EAAC,SAAS,CAAC,CAAC;YAE/C,IAAI,CAAC,MAAM,CAAC,IAAI,CACd;gBACE,UAAU,EAAE;oBACV,EAAE,EAAE,WAAW,CAAC,EAAE;oBAClB,EAAE,EAAE,WAAW,CAAC,EAAE;oBAClB,GAAG,EAAE,WAAW,CAAC,GAAG;iBACrB;aACF,EACD,0EAA0E,EAC1E,WAAW,CAAC,OAAO,CACpB,CAAC;YAEF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CACpC,WAAW,CAAC,QAAQ,iBAEhB,IAAI,EAAE,IAAI,CAAC,IAAI,IACZ,WAAW,GAEhB,CAAC,GAAiB,EAAE,GAAoB,EAAE,EAAE;gBAC1C,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,CAAC;gBACf,CAAC;YACH,CAAC,CACF,CACF,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AA7DY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;IAMR,mBAAA,IAAA,eAAM,EAAC,6BAAa,CAAC,CAAA;6CADY,kCAAe;GAJxC,WAAW,CA6DvB"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import * as t from 'io-ts';
|
|
2
|
-
import { Repository } from '../../datastore/repository';
|
|
3
|
-
import { DatastoreProvider } from '../../datastore/datastore.provider';
|
|
4
|
-
declare const storedCredential: t.TypeC<{
|
|
5
|
-
id: t.StringC;
|
|
6
|
-
value: t.StringC;
|
|
7
|
-
}>;
|
|
8
|
-
export type StoredCredential = t.TypeOf<typeof storedCredential>;
|
|
9
|
-
export declare class StoredCredentialsRepository extends Repository<StoredCredential> {
|
|
10
|
-
constructor(datastore: DatastoreProvider);
|
|
11
|
-
}
|
|
12
|
-
export {};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StoredCredentialsRepository = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const common_1 = require("@nestjs/common");
|
|
6
|
-
const t = require("io-ts");
|
|
7
|
-
const repository_1 = require("../../datastore/repository");
|
|
8
|
-
const datastore_provider_1 = require("../../datastore/datastore.provider");
|
|
9
|
-
const storedCredential = t.interface({
|
|
10
|
-
id: t.string,
|
|
11
|
-
value: t.string,
|
|
12
|
-
});
|
|
13
|
-
let StoredCredentialsRepository = class StoredCredentialsRepository extends repository_1.Repository {
|
|
14
|
-
constructor(datastore) {
|
|
15
|
-
super(datastore.datastore, 'StoredCredential', storedCredential, {});
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
exports.StoredCredentialsRepository = StoredCredentialsRepository;
|
|
19
|
-
exports.StoredCredentialsRepository = StoredCredentialsRepository = tslib_1.__decorate([
|
|
20
|
-
(0, common_1.Injectable)(),
|
|
21
|
-
tslib_1.__metadata("design:paramtypes", [datastore_provider_1.DatastoreProvider])
|
|
22
|
-
], StoredCredentialsRepository);
|
|
23
|
-
//# sourceMappingURL=stored.credentials.repository.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stored.credentials.repository.js","sourceRoot":"","sources":["../../../src/mail/gmail/stored.credentials.repository.ts"],"names":[],"mappings":";;;;AAAA,2CAA4C;AAC5C,2BAA2B;AAC3B,2DAAwD;AACxD,2EAAuE;AAEvE,MAAM,gBAAgB,GAAG,CAAC,CAAC,SAAS,CAAC;IACnC,EAAE,EAAE,CAAC,CAAC,MAAM;IACZ,KAAK,EAAE,CAAC,CAAC,MAAM;CAChB,CAAC,CAAC;AAKI,IAAM,2BAA2B,GAAjC,MAAM,2BAA4B,SAAQ,uBAA4B;IAC3E,YAAY,SAA4B;QACtC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC;CACF,CAAA;AAJY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,mBAAU,GAAE;6CAEY,sCAAiB;GAD7B,2BAA2B,CAIvC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Options } from 'nodemailer/lib/mailer';
|
|
2
|
-
import { Context } from '../datastore/context';
|
|
3
|
-
import { MailSender } from './mail.sender';
|
|
4
|
-
export declare class MailLoggingSender implements MailSender {
|
|
5
|
-
private readonly logger;
|
|
6
|
-
constructor();
|
|
7
|
-
send(context: Context, mailOptions: Options): Promise<void>;
|
|
8
|
-
private stringify;
|
|
9
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MailLoggingSender = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const common_1 = require("@nestjs/common");
|
|
6
|
-
const logging_1 = require("../logging");
|
|
7
|
-
const htmlToText = require("html-to-text");
|
|
8
|
-
let MailLoggingSender = class MailLoggingSender {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.logger = (0, logging_1.createLogger)('mail-logging-sender');
|
|
11
|
-
this.logger.info('MailSender instance is MailLoggingSender');
|
|
12
|
-
}
|
|
13
|
-
async send(context, mailOptions) {
|
|
14
|
-
if (!mailOptions.to && !mailOptions.cc && !mailOptions.bcc) {
|
|
15
|
-
throw new Error('No recipients defined');
|
|
16
|
-
}
|
|
17
|
-
const content = mailOptions.text ||
|
|
18
|
-
(typeof mailOptions.html === 'string' && htmlToText.fromString(mailOptions.html)) ||
|
|
19
|
-
'-body not loggable-';
|
|
20
|
-
this.logger.info('Logging email send\n\n' +
|
|
21
|
-
'to: %s\n' +
|
|
22
|
-
'cc: %s\n' +
|
|
23
|
-
'bcc: %s\n' +
|
|
24
|
-
'attachments: %s\n' +
|
|
25
|
-
'subject: %s\n' +
|
|
26
|
-
'\n' +
|
|
27
|
-
'%s\n' +
|
|
28
|
-
'\n\n', this.stringify(mailOptions.to), this.stringify(mailOptions.cc), this.stringify(mailOptions.bcc), (mailOptions.attachments && mailOptions.attachments.length) || 0, this.stringify(mailOptions.subject), content);
|
|
29
|
-
}
|
|
30
|
-
stringify(source) {
|
|
31
|
-
if (!source) {
|
|
32
|
-
return '';
|
|
33
|
-
}
|
|
34
|
-
return typeof source === 'string' ? source : JSON.stringify(source);
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
exports.MailLoggingSender = MailLoggingSender;
|
|
38
|
-
exports.MailLoggingSender = MailLoggingSender = tslib_1.__decorate([
|
|
39
|
-
(0, common_1.Injectable)(),
|
|
40
|
-
tslib_1.__metadata("design:paramtypes", [])
|
|
41
|
-
], MailLoggingSender);
|
|
42
|
-
//# sourceMappingURL=mail-logging.sender.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mail-logging.sender.js","sourceRoot":"","sources":["../../src/mail/mail-logging.sender.ts"],"names":[],"mappings":";;;;AAAA,2CAA4C;AAG5C,wCAAkD;AAElD,2CAA2C;AAGpC,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAG5B;QAFiB,WAAM,GAAW,IAAA,sBAAY,EAAC,qBAAqB,CAAC,CAAC;QAGpE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAgB,EAAE,WAAoB;QAC/C,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,OAAO,GACX,WAAW,CAAC,IAAI;YAChB,CAAC,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACjF,qBAAqB,CAAC;QAExB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,wBAAwB;YACtB,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;YACnB,IAAI;YACJ,MAAM;YACN,MAAM,EACR,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,EAC9B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,EAC9B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,EAC/B,CAAC,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAChE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,EACnC,OAAO,CACR,CAAC;IACJ,CAAC;IAEO,SAAS,CAAC,MAAY;QAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtE,CAAC;CACF,CAAA;AA1CY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;;GACA,iBAAiB,CA0C7B"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Options } from 'nodemailer/lib/mailer';
|
|
2
|
-
import { Configuration } from '../configuration';
|
|
3
|
-
import { Context } from '../datastore/context';
|
|
4
|
-
import { MailSender } from './mail.sender';
|
|
5
|
-
export declare class MailSubjectSender implements MailSender {
|
|
6
|
-
private readonly mailSender;
|
|
7
|
-
private readonly configurationProvider;
|
|
8
|
-
private readonly logger;
|
|
9
|
-
private readonly subjectPrefix;
|
|
10
|
-
constructor(mailSender: MailSender, configurationProvider: Configuration);
|
|
11
|
-
send(context: Context, mailOptions: Options): Promise<void>;
|
|
12
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MailSubjectSender = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const common_1 = require("@nestjs/common");
|
|
6
|
-
const lodash_1 = require("lodash");
|
|
7
|
-
const configuration_1 = require("../configuration");
|
|
8
|
-
const logging_1 = require("../logging");
|
|
9
|
-
let MailSubjectSender = class MailSubjectSender {
|
|
10
|
-
constructor(mailSender, configurationProvider) {
|
|
11
|
-
this.mailSender = mailSender;
|
|
12
|
-
this.configurationProvider = configurationProvider;
|
|
13
|
-
this.logger = (0, logging_1.createLogger)('mail-subject-sender');
|
|
14
|
-
const { devHooks } = this.configurationProvider;
|
|
15
|
-
if (!devHooks || (0, lodash_1.isEmpty)(devHooks.emailSubjectPrefix)) {
|
|
16
|
-
throw new Error('No subject prefix defined');
|
|
17
|
-
}
|
|
18
|
-
this.subjectPrefix = `${devHooks.emailSubjectPrefix}: `;
|
|
19
|
-
this.logger.info(`Configuring mail with subject prefix '${this.subjectPrefix}'`);
|
|
20
|
-
}
|
|
21
|
-
async send(context, mailOptions) {
|
|
22
|
-
const subject = `${this.subjectPrefix}${mailOptions.subject}`;
|
|
23
|
-
this.logger.info(`Sending email with prefixed subject: '${subject}'`);
|
|
24
|
-
return this.mailSender.send(context, Object.assign(Object.assign({}, mailOptions), { subject }));
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
exports.MailSubjectSender = MailSubjectSender;
|
|
28
|
-
exports.MailSubjectSender = MailSubjectSender = tslib_1.__decorate([
|
|
29
|
-
(0, common_1.Injectable)(),
|
|
30
|
-
tslib_1.__param(1, (0, common_1.Inject)(configuration_1.CONFIGURATION)),
|
|
31
|
-
tslib_1.__metadata("design:paramtypes", [Object, Object])
|
|
32
|
-
], MailSubjectSender);
|
|
33
|
-
//# sourceMappingURL=mail-subject.sender.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mail-subject.sender.js","sourceRoot":"","sources":["../../src/mail/mail-subject.sender.ts"],"names":[],"mappings":";;;;AAAA,2CAAoD;AACpD,mCAAiC;AAEjC,oDAAgE;AAEhE,wCAAkD;AAI3C,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAI5B,YACmB,UAAsB,EAChB,qBAAqD;QAD3D,eAAU,GAAV,UAAU,CAAY;QACC,0BAAqB,GAArB,qBAAqB,CAAe;QAL7D,WAAM,GAAW,IAAA,sBAAY,EAAC,qBAAqB,CAAC,CAAC;QAOpE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAChD,IAAI,CAAC,QAAQ,IAAI,IAAA,gBAAO,EAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,GAAG,QAAQ,CAAC,kBAAkB,IAAI,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAgB,EAAE,WAAoB;QAC/C,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,OAAO,GAAG,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,kCAAO,WAAW,KAAE,OAAO,IAAG,CAAC;IACpE,CAAC;CACF,CAAA;AArBY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;IAOR,mBAAA,IAAA,eAAM,EAAC,6BAAa,CAAC,CAAA;;GANb,iBAAiB,CAqB7B"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Options } from 'nodemailer/lib/mailer';
|
|
2
|
-
import { Configuration } from '../configuration';
|
|
3
|
-
import { Context } from '../datastore/context';
|
|
4
|
-
import { MailSender } from './mail.sender';
|
|
5
|
-
export declare class MailWhitelistSender implements MailSender {
|
|
6
|
-
private readonly mailSender;
|
|
7
|
-
private readonly configurationProvider;
|
|
8
|
-
private readonly logger;
|
|
9
|
-
private readonly emailWhitelist;
|
|
10
|
-
constructor(mailSender: MailSender, configurationProvider: Configuration);
|
|
11
|
-
send(context: Context, mailOptions: Options): Promise<void>;
|
|
12
|
-
private filterAddresses;
|
|
13
|
-
private filterAddress;
|
|
14
|
-
}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MailWhitelistSender = void 0;
|
|
4
|
-
const lodash_1 = require("lodash");
|
|
5
|
-
const logging_1 = require("../logging");
|
|
6
|
-
const guards_1 = require("../util/guards");
|
|
7
|
-
const mail_logging_sender_1 = require("./mail-logging.sender");
|
|
8
|
-
class MailWhitelistSender {
|
|
9
|
-
constructor(mailSender, configurationProvider) {
|
|
10
|
-
this.mailSender = mailSender;
|
|
11
|
-
this.configurationProvider = configurationProvider;
|
|
12
|
-
this.logger = (0, logging_1.createLogger)('mail-whitelist-sender');
|
|
13
|
-
this.filterAddresses = (actualAddresses) => {
|
|
14
|
-
if ((0, guards_1.isEmpty)(actualAddresses)) {
|
|
15
|
-
return [];
|
|
16
|
-
}
|
|
17
|
-
if (typeof actualAddresses === 'string') {
|
|
18
|
-
const addresses = actualAddresses.split(',');
|
|
19
|
-
return addresses
|
|
20
|
-
.map(address => address.trim())
|
|
21
|
-
.filter(address => this.filterAddress(address))
|
|
22
|
-
.join(',');
|
|
23
|
-
}
|
|
24
|
-
return (0, lodash_1.castArray)(actualAddresses).filter(address => this.filterAddress(address));
|
|
25
|
-
};
|
|
26
|
-
this.filterAddress = (address) => {
|
|
27
|
-
const email = typeof address === 'string' ? address.trim() : address.address.trim();
|
|
28
|
-
if (this.emailWhitelist.includes(email)) {
|
|
29
|
-
return true;
|
|
30
|
-
}
|
|
31
|
-
this.logger.info(`Filtering non-whitelist email: ${email}`);
|
|
32
|
-
return false;
|
|
33
|
-
};
|
|
34
|
-
const { devHooks } = this.configurationProvider;
|
|
35
|
-
if (!devHooks || (0, guards_1.isEmpty)(devHooks.emailWhitelist)) {
|
|
36
|
-
throw new Error('No whitelisted email address(es) defined');
|
|
37
|
-
}
|
|
38
|
-
this.logger.info('MailSender instance is MailWhitelistSender');
|
|
39
|
-
this.logger.info(`Configuring mail whitelist: ${devHooks.emailWhitelist}`);
|
|
40
|
-
this.emailWhitelist = devHooks.emailWhitelist;
|
|
41
|
-
}
|
|
42
|
-
async send(context, mailOptions) {
|
|
43
|
-
const filteredAddresses = {
|
|
44
|
-
to: this.filterAddresses(mailOptions.to),
|
|
45
|
-
cc: this.filterAddresses(mailOptions.cc),
|
|
46
|
-
bcc: this.filterAddresses(mailOptions.bcc),
|
|
47
|
-
};
|
|
48
|
-
if ((0, guards_1.isEmpty)(filteredAddresses.to) && (0, guards_1.isEmpty)(filteredAddresses.cc) && (0, guards_1.isEmpty)(filteredAddresses.bcc)) {
|
|
49
|
-
this.logger.warn('Cannot send email - no whitelisted recipients found');
|
|
50
|
-
return new mail_logging_sender_1.MailLoggingSender().send(context, mailOptions);
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
this.logger.info('Sending email using whitelisted addresses: ', filteredAddresses);
|
|
54
|
-
return this.mailSender.send(context, Object.assign(Object.assign({}, mailOptions), filteredAddresses));
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
exports.MailWhitelistSender = MailWhitelistSender;
|
|
59
|
-
//# sourceMappingURL=mail-whitelist.sender.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mail-whitelist.sender.js","sourceRoot":"","sources":["../../src/mail/mail-whitelist.sender.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Options } from 'nodemailer/lib/mailer';
|
|
2
|
-
import { Configuration } from '../configuration';
|
|
3
|
-
import { Context } from '../datastore/context';
|
|
4
|
-
import { MailSender } from './mail.sender';
|
|
5
|
-
export declare class MailDiverter implements MailSender {
|
|
6
|
-
private readonly mailSender;
|
|
7
|
-
private readonly configurationProvider;
|
|
8
|
-
private readonly logger;
|
|
9
|
-
constructor(mailSender: MailSender, configurationProvider: Configuration);
|
|
10
|
-
send(context: Context, mailOptions: Options): Promise<void>;
|
|
11
|
-
private divertAddresses;
|
|
12
|
-
private getDivertedFromAddressesAsString;
|
|
13
|
-
}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MailDiverter = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const common_1 = require("@nestjs/common");
|
|
6
|
-
const lodash_1 = require("lodash");
|
|
7
|
-
const configuration_1 = require("../configuration");
|
|
8
|
-
const logging_1 = require("../logging");
|
|
9
|
-
let MailDiverter = class MailDiverter {
|
|
10
|
-
constructor(mailSender, configurationProvider) {
|
|
11
|
-
this.mailSender = mailSender;
|
|
12
|
-
this.configurationProvider = configurationProvider;
|
|
13
|
-
this.logger = (0, logging_1.createLogger)('mail-diverter');
|
|
14
|
-
this.divertAddresses = (actualAddresses) => {
|
|
15
|
-
if (!(0, lodash_1.isEmpty)(actualAddresses)) {
|
|
16
|
-
const divertedFromAddresses = this.getDivertedFromAddressesAsString(actualAddresses);
|
|
17
|
-
return this.configurationProvider.devHooks.divertEmailTo.map(divertToAddress => {
|
|
18
|
-
return {
|
|
19
|
-
name: divertedFromAddresses,
|
|
20
|
-
address: divertToAddress,
|
|
21
|
-
};
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
return [];
|
|
25
|
-
};
|
|
26
|
-
this.getDivertedFromAddressesAsString = (actualAddress) => {
|
|
27
|
-
let addressList = [actualAddress];
|
|
28
|
-
if (actualAddress instanceof Array) {
|
|
29
|
-
addressList = actualAddress;
|
|
30
|
-
}
|
|
31
|
-
const justAddresses = addressList
|
|
32
|
-
.map(address => {
|
|
33
|
-
if (typeof address === 'string') {
|
|
34
|
-
return address.trim();
|
|
35
|
-
}
|
|
36
|
-
return address.address.trim();
|
|
37
|
-
})
|
|
38
|
-
.join(', ');
|
|
39
|
-
const deAttedAddresses = (0, lodash_1.replace)(justAddresses, /@/g, '.at.');
|
|
40
|
-
return `Diverted from ${deAttedAddresses}`;
|
|
41
|
-
};
|
|
42
|
-
const { devHooks } = this.configurationProvider;
|
|
43
|
-
if (!devHooks || (0, lodash_1.isEmpty)(devHooks.divertEmailTo)) {
|
|
44
|
-
throw new Error('No divert-to email address(es) defined');
|
|
45
|
-
}
|
|
46
|
-
this.logger.info('MailSender instance is MailDiverter');
|
|
47
|
-
this.logger.info(`Configuring mail diversion to: ${devHooks.divertEmailTo}`);
|
|
48
|
-
}
|
|
49
|
-
async send(context, mailOptions) {
|
|
50
|
-
const diversionOverrides = {
|
|
51
|
-
to: this.divertAddresses(mailOptions.to),
|
|
52
|
-
cc: this.divertAddresses(mailOptions.cc),
|
|
53
|
-
bcc: this.divertAddresses(mailOptions.bcc),
|
|
54
|
-
};
|
|
55
|
-
this.logger.info('Diverting mail with overrides: ', diversionOverrides);
|
|
56
|
-
return this.mailSender.send(context, Object.assign(Object.assign({}, mailOptions), diversionOverrides));
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
exports.MailDiverter = MailDiverter;
|
|
60
|
-
exports.MailDiverter = MailDiverter = tslib_1.__decorate([
|
|
61
|
-
(0, common_1.Injectable)(),
|
|
62
|
-
tslib_1.__param(1, (0, common_1.Inject)(configuration_1.CONFIGURATION)),
|
|
63
|
-
tslib_1.__metadata("design:paramtypes", [Object, Object])
|
|
64
|
-
], MailDiverter);
|
|
65
|
-
//# sourceMappingURL=mail.diverter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mail.diverter.js","sourceRoot":"","sources":["../../src/mail/mail.diverter.ts"],"names":[],"mappings":";;;;AAAA,2CAAoD;AACpD,mCAA0C;AAE1C,oDAAgE;AAEhE,wCAAkD;AAI3C,IAAM,YAAY,GAAlB,MAAM,YAAY;IAGvB,YACmB,UAAsB,EAChB,qBAAqD;QAD3D,eAAU,GAAV,UAAU,CAAY;QACC,0BAAqB,GAArB,qBAAqB,CAAe;QAJ7D,WAAM,GAAW,IAAA,sBAAY,EAAC,eAAe,CAAC,CAAC;QAwBxD,oBAAe,GAAG,CAAC,eAAuE,EAAE,EAAE;YACpG,IAAI,CAAC,IAAA,gBAAO,EAAC,eAAe,CAAC,EAAE,CAAC;gBAE9B,MAAM,qBAAqB,GAAG,IAAI,CAAC,gCAAgC,CAAC,eAAe,CAAC,CAAC;gBAErF,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;oBAC7E,OAAO;wBACL,IAAI,EAAE,qBAAqB;wBAC3B,OAAO,EAAE,eAAe;qBACzB,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QAEM,qCAAgC,GAAG,CAAC,aAAyD,EAAE,EAAE;YAEvG,IAAI,WAAW,GAAG,CAAC,aAAa,CAAC,CAAC;YAClC,IAAI,aAAa,YAAY,KAAK,EAAE,CAAC;gBACnC,WAAW,GAAG,aAAa,CAAC;YAC9B,CAAC;YAED,MAAM,aAAa,GAAG,WAAW;iBAC9B,GAAG,CAAC,OAAO,CAAC,EAAE;gBACb,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;oBAChC,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;gBACxB,CAAC;gBAED,OAAQ,OAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC7C,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,MAAM,gBAAgB,GAAG,IAAA,gBAAO,EAAC,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAC9D,OAAO,iBAAiB,gBAAgB,EAAE,CAAC;QAC7C,CAAC,CAAC;QApDA,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAChD,IAAI,CAAC,QAAQ,IAAI,IAAA,gBAAO,EAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAgB,EAAE,WAAoB;QAC/C,MAAM,kBAAkB,GAAG;YACzB,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;YACxC,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;YACxC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC;SAC3C,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,kBAAkB,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,kCAAO,WAAW,GAAK,kBAAkB,EAAG,CAAC;IAClF,CAAC;CAqCF,CAAA;AA5DY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;IAMR,mBAAA,IAAA,eAAM,EAAC,6BAAa,CAAC,CAAA;;GALb,YAAY,CA4DxB"}
|
package/dist/mail/mail.sender.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mail.sender.js","sourceRoot":"","sources":["../../src/mail/mail.sender.ts"],"names":[],"mappings":";;;AAOa,QAAA,WAAW,GAAG,YAAY,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Options } from 'nodemailer/lib/mailer';
|
|
2
|
-
import { Context } from '../..';
|
|
3
|
-
import { Configuration } from '../../configuration';
|
|
4
|
-
import { MailSender } from '../mail.sender';
|
|
5
|
-
export declare class SmtpSender implements MailSender {
|
|
6
|
-
private readonly configurationProvider;
|
|
7
|
-
private readonly logger;
|
|
8
|
-
constructor(configurationProvider: Configuration);
|
|
9
|
-
send(context: Context, mailOptions: Options): Promise<void>;
|
|
10
|
-
}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SmtpSender = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const _ = require("lodash");
|
|
6
|
-
const common_1 = require("@nestjs/common");
|
|
7
|
-
const nodemailer_1 = require("nodemailer");
|
|
8
|
-
const configuration_1 = require("../../configuration");
|
|
9
|
-
const logging_1 = require("../../logging");
|
|
10
|
-
const ENDS_WITH_EMAIL = /(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/;
|
|
11
|
-
let SmtpSender = class SmtpSender {
|
|
12
|
-
constructor(configurationProvider) {
|
|
13
|
-
this.configurationProvider = configurationProvider;
|
|
14
|
-
this.logger = (0, logging_1.createLogger)('smtp-sender');
|
|
15
|
-
this.logger.info('Created SmtpSender');
|
|
16
|
-
}
|
|
17
|
-
async send(context, mailOptions) {
|
|
18
|
-
if (!this.configurationProvider.auth.smtp || !this.configurationProvider.auth.smtp.enabled) {
|
|
19
|
-
this.logger.error('Smtp credentials are not configured yet. No environment configuration exists for "auth.smtp"');
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
const mailConfig = {
|
|
23
|
-
auth: {
|
|
24
|
-
user: this.configurationProvider.auth.smtp.user,
|
|
25
|
-
pass: this.configurationProvider.auth.smtp.password,
|
|
26
|
-
},
|
|
27
|
-
host: this.configurationProvider.auth.smtp.host,
|
|
28
|
-
port: this.configurationProvider.auth.smtp.port,
|
|
29
|
-
secure: this.configurationProvider.auth.smtp.secure,
|
|
30
|
-
from: this.configurationProvider.auth.smtp.from,
|
|
31
|
-
};
|
|
32
|
-
const transport = Object.assign({ pool: true }, mailConfig);
|
|
33
|
-
const transporter = (0, nodemailer_1.createTransport)(transport);
|
|
34
|
-
this.logger.info({
|
|
35
|
-
logDetails: {
|
|
36
|
-
to: mailOptions.to,
|
|
37
|
-
cc: mailOptions.cc,
|
|
38
|
-
bcc: mailOptions.bcc,
|
|
39
|
-
},
|
|
40
|
-
}, 'Sending email via smtp (see logDetails property for to, cc, bcc) with subject: %s', mailOptions.subject);
|
|
41
|
-
let from = mailOptions.from;
|
|
42
|
-
if (!from) {
|
|
43
|
-
from = mailConfig.from;
|
|
44
|
-
}
|
|
45
|
-
else if (_.isString(from) && !from.match(ENDS_WITH_EMAIL)) {
|
|
46
|
-
from = { name: from, address: mailConfig.from.address };
|
|
47
|
-
}
|
|
48
|
-
await new Promise((resolve, reject) => transporter.sendMail(Object.assign(Object.assign({}, mailOptions), { from }), (err, res) => {
|
|
49
|
-
if (err) {
|
|
50
|
-
reject(err);
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
resolve(res);
|
|
54
|
-
}
|
|
55
|
-
}));
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
exports.SmtpSender = SmtpSender;
|
|
60
|
-
exports.SmtpSender = SmtpSender = tslib_1.__decorate([
|
|
61
|
-
(0, common_1.Injectable)(),
|
|
62
|
-
tslib_1.__param(0, (0, common_1.Inject)(configuration_1.CONFIGURATION)),
|
|
63
|
-
tslib_1.__metadata("design:paramtypes", [Object])
|
|
64
|
-
], SmtpSender);
|
|
65
|
-
//# sourceMappingURL=smtp.sender.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"smtp.sender.js","sourceRoot":"","sources":["../../../src/mail/smtp/smtp.sender.ts"],"names":[],"mappings":";;;;AAAA,4BAA4B;AAC5B,2CAAoD;AACpD,2CAA8D;AAG9D,uDAAmE;AACnE,2CAA6C;AAG7C,MAAM,eAAe,GACnB,sHAAsH,CAAC;AAGlH,IAAM,UAAU,GAAhB,MAAM,UAAU;IAGrB,YAAmC,qBAAqD;QAApC,0BAAqB,GAArB,qBAAqB,CAAe;QAFvE,WAAM,GAAG,IAAA,sBAAY,EAAC,aAAa,CAAC,CAAC;QAGpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAgB,EAAE,WAAoB;QAC/C,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8FAA8F,CAAC,CAAC;QACpH,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG;gBACjB,IAAI,EAAE;oBACJ,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;oBAC/C,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;iBACpD;gBACD,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;gBAC/C,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;gBAC/C,MAAM,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;gBACnD,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;aAChD,CAAC;YAEF,MAAM,SAAS,mBACb,IAAI,EAAE,IAAI,IACP,UAAU,CACd,CAAC;YAEF,MAAM,WAAW,GAAG,IAAA,4BAAe,EAAC,SAAS,CAAC,CAAC;YAE/C,IAAI,CAAC,MAAM,CAAC,IAAI,CACd;gBACE,UAAU,EAAE;oBACV,EAAE,EAAE,WAAW,CAAC,EAAE;oBAClB,EAAE,EAAE,WAAW,CAAC,EAAE;oBAClB,GAAG,EAAE,WAAW,CAAC,GAAG;iBACrB;aACF,EACD,mFAAmF,EACnF,WAAW,CAAC,OAAO,CACpB,CAAC;YAGF,IAAI,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;YACzB,CAAC;iBAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC5D,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1D,CAAC;YAED,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CACpC,WAAW,CAAC,QAAQ,iCAEb,WAAW,KACd,IAAI,KAEN,CAAC,GAAiB,EAAE,GAAoB,EAAE,EAAE;gBAC1C,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,CAAC;gBACf,CAAC;YACH,CAAC,CACF,CACF,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AAlEY,gCAAU;qBAAV,UAAU;IADtB,IAAA,mBAAU,GAAE;IAIE,mBAAA,IAAA,eAAM,EAAC,6BAAa,CAAC,CAAA;;GAHvB,UAAU,CAkEtB"}
|