@softkit/mail
Version:
The Mailgun Mail Module is a comprehensive solution for integrating Mailgun's email functionality into NestJS applications. It provides a seamless way to send emails using Mailgun with minimal setup and configuration.
73 lines • 2.86 kB
JavaScript
;
var MailgunMailModule_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MailgunMailModule = void 0;
const tslib_1 = require("tslib");
const common_1 = require("@nestjs/common");
const services_1 = require("../../services");
const constants_1 = require("../../constants");
const services_2 = require("../../services");
const form_data_1 = tslib_1.__importDefault(require("form-data"));
let MailgunMailModule = MailgunMailModule_1 = class MailgunMailModule {
static forRoot(mailConfig, global = true) {
const mailProvider = {
provide: constants_1.MAILGUN_CONFIG_TOKEN,
useValue: mailConfig,
};
const defaultProvidersAndExports = this.createDefaultProvidersAndExports();
if (defaultProvidersAndExports.providers) {
defaultProvidersAndExports.providers.push(mailProvider);
}
return {
global,
...defaultProvidersAndExports,
};
}
static forRootAsync(options, global = true) {
const defaultProvidersAndExports = this.createDefaultProvidersAndExports();
const asyncConfigProvider = this.createAsyncProvider(options);
const providers = [
asyncConfigProvider,
...(defaultProvidersAndExports.providers || []),
];
return {
global,
module: MailgunMailModule_1,
imports: options.imports || [],
providers,
exports: [...(defaultProvidersAndExports.exports || [])],
};
}
static createDefaultProvidersAndExports() {
return {
module: MailgunMailModule_1,
providers: [
{
provide: services_1.AbstractMailService,
useClass: services_2.MailgunService,
},
{
provide: constants_1.MAILGUN_CLIENT_TOKEN,
useFactory: async (authCredentials) => {
const Mailgun = await Promise.resolve().then(() => tslib_1.__importStar(require('mailgun.js')));
return new Mailgun.default(form_data_1.default).client(authCredentials);
},
inject: [constants_1.MAILGUN_CONFIG_TOKEN],
},
],
exports: [services_1.AbstractMailService, constants_1.MAILGUN_CLIENT_TOKEN],
};
}
};
exports.MailgunMailModule = MailgunMailModule;
MailgunMailModule.createAsyncProvider = (options) => {
return {
provide: constants_1.MAILGUN_CONFIG_TOKEN,
useFactory: options.useFactory,
inject: options.inject,
};
};
exports.MailgunMailModule = MailgunMailModule = MailgunMailModule_1 = tslib_1.__decorate([
(0, common_1.Module)({})
], MailgunMailModule);
//# sourceMappingURL=mail.module.js.map