@goldstack/template-email-send
Version:
Utilities for packages that implement email sending using AWS SES
70 lines • 3.16 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getFromDomain = exports.connect = exports.getMockedSES = void 0;
const client_ses_1 = require("@aws-sdk/client-ses");
const credential_providers_1 = require("@aws-sdk/credential-providers");
const utils_esbuild_1 = require("@goldstack/utils-esbuild");
const utils_package_config_embedded_1 = require("@goldstack/utils-package-config-embedded");
const assert_1 = __importDefault(require("assert"));
let mockedSES;
const getMockedSES = () => {
const createSESClient = require((0, utils_esbuild_1.excludeInBundle)('./mockedSES')).createSESClient;
if (!mockedSES) {
mockedSES = createSESClient();
}
return mockedSES;
};
exports.getMockedSES = getMockedSES;
const connect = async (goldstackConfig, packageSchema, deploymentName) => {
const packageConfig = new utils_package_config_embedded_1.EmbeddedPackageConfig({
goldstackJson: goldstackConfig,
packageSchema,
});
if (!deploymentName) {
(0, assert_1.default)(process.env.GOLDSTACK_DEPLOYMENT, `Cannot connect to SES for package ${goldstackConfig.name}. Either specify a deploymentName or ensure environment variable GOLDSTACK_DEPLOYMENT is defined.`);
deploymentName = process.env.GOLDSTACK_DEPLOYMENT;
}
if (deploymentName === 'local') {
if (!mockedSES) {
const createSESClient = require((0, utils_esbuild_1.excludeInBundle)('./mockedSES')).createSESClient;
mockedSES = createSESClient();
}
return mockedSES;
}
const deployment = packageConfig.getDeployment(deploymentName);
let awsUser;
if (process.env.AWS_ACCESS_KEY_ID) {
awsUser = (0, credential_providers_1.fromEnv)();
}
else {
// load this in lazy to enable omitting the dependency when bundling lambdas
const infraAWSLib = require((0, utils_esbuild_1.excludeInBundle)('@goldstack/infra-aws'));
awsUser = await infraAWSLib.getAWSUser(deployment.awsUser);
}
const ses = new client_ses_1.SESClient({
credentials: awsUser,
region: deployment.awsRegion,
});
return ses;
};
exports.connect = connect;
const getFromDomain = async (goldstackConfig, packageSchema, deploymentName) => {
const packageConfig = new utils_package_config_embedded_1.EmbeddedPackageConfig({
goldstackJson: goldstackConfig,
packageSchema,
});
if (!deploymentName) {
(0, assert_1.default)(process.env.GOLDSTACK_DEPLOYMENT, `Cannot connect to SES for package ${goldstackConfig.name}. Either specify a deploymentName or ensure environment variable GOLDSTACK_DEPLOYMENT is defined.`);
deploymentName = process.env.GOLDSTACK_DEPLOYMENT;
}
if (deploymentName === 'local') {
return 'test.local';
}
const deployment = packageConfig.getDeployment(deploymentName);
return deployment.configuration.domain;
};
exports.getFromDomain = getFromDomain;
//# sourceMappingURL=sesConnect.js.map