UNPKG

@goldstack/template-email-send

Version:

Utilities for packages that implement email sending using AWS SES

70 lines 3.16 kB
"use strict"; 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