UNPKG

@flowaccount/nx-aws-cdk

Version:

aws-cdk executors and generators for nx workspace

88 lines 4.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.appSchematic = exports.slsApplicationGenerator = void 0; const tslib_1 = require("tslib"); const devkit_1 = require("@nx/devkit"); const common_schematics_1 = require("../common-schematics"); const eslint_1 = require("@nx/eslint"); const path = require("path"); const aws_cdk_stack_1 = require("@flowaccount/aws-cdk-stack"); // import { SqsStackBuilder } from '../../stacks/builders/sqs-stack-builder'; // import { ServerlessApplicationBuilder } from "../../stacks/builders/serverless-application-builder"; const strings_1 = require("@angular-devkit/core/src/utils/strings"); const stringUtils = { classify: strings_1.classify, dasherize: strings_1.dasherize, camelize: strings_1.camelize, underscore: strings_1.underscore }; function initStack(host, options, filesRelativePath) { //add builder to build template options from input options const stagingEnvironmentConfig = { region: options.region, stackName: options.name, stage: 'staging', _app: options.name, _isProduction: false, }; const productionEnvironmentConfig = { region: options.region, stackName: options.name, stage: 'production', _app: options.name, _isProduction: false, }; const sqsOptions = { builderName: 'SqsConfigurationBuilder', queueName: `test-sqs`, visibilityTimeout: 60, }; stagingEnvironmentConfig.sqs = [ new aws_cdk_stack_1.SqsStackBuilder(stagingEnvironmentConfig, sqsOptions).BuildSqsStack(), ]; const _lambdaFunctions = []; for (let i = 0; i < options.functionNames.length; i++) { _lambdaFunctions.push({ builderName: 'TypescriptLambdaConfigurationBuilder', securityGroupIds: options.securityGroupIds, handler: options.handlers[i], memmorySize: options.memmorySizes[i] ? options.memmorySizes[i] : 256, timeout: options.timeouts[i] ? options.timeouts[i] : 60, name: options.functionNames[i], }); } const subnets = []; for (let i = 0; i < options.subnetIds.length; i++) { for (let j = 0; j < options.availabilityZones.length; j++) { subnets.push({ id: options.subnetIds[i], availabilityZone: `${options.region}${options.availabilityZones[j]}`, }); } } // _lambdaFunctions[0].eventProperties.sqsEventSource = options.sqsEvent ? : // stagingEnvironmentConfig.serverless = <ServerlessApplicationStackConfiguration>(new ServerlessApplicationBuilder(stagingEnvironmentConfig, _lambdaFunctions).BuildStackConfiguration()) const templateOptions = Object.assign(Object.assign(Object.assign(Object.assign({}, stringUtils), options), (0, devkit_1.names)(options.name)), { offset: (0, devkit_1.offsetFromRoot)(options.appProjectRoot), template: '', root: options.appProjectRoot, vpcId: options.vpcId, rds: false, sqs: Object.assign({}, stagingEnvironmentConfig.sqs), lambdaFunctions: Object.assign({}, _lambdaFunctions), subnets: subnets, stage: stagingEnvironmentConfig.stage, isProduction: stagingEnvironmentConfig._isProduction, accountid: options.accountid }); (0, devkit_1.generateFiles)(host, path.join(__dirname, filesRelativePath), options.appProjectRoot, templateOptions); } function slsApplicationGenerator(host, schema) { return tslib_1.__awaiter(this, void 0, void 0, function* () { devkit_1.logger.info('normalizing options'); const options = (0, common_schematics_1.normalizeOptions)(schema); // initGenerator(host, { // skipFormat: true, // expressProxy: false, // unitTestRunner: options.unitTestRunner, // }); initStack(host, options, 'files'); (0, common_schematics_1.updateWorkspaceJson)(host, options); yield (0, eslint_1.lintProjectGenerator)(host, { project: options.name, skipFormat: true }); // if (!options.unitTestRunner || options.unitTestRunner === 'jest') { // await jestProjectGenerator(host, { // project: options.name, // setupFile: 'none', // skipSerializers: true, // }); // } yield (0, devkit_1.formatFiles)(host); }); } exports.slsApplicationGenerator = slsApplicationGenerator; exports.default = slsApplicationGenerator; exports.appSchematic = (0, devkit_1.convertNxGenerator)(slsApplicationGenerator); //# sourceMappingURL=app.js.map