@flowaccount/nx-aws-cdk
Version:
aws-cdk executors and generators for nx workspace
88 lines • 4.55 kB
JavaScript
;
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