nx-serverless-cdk
Version:
nx-serverless-cdk is an Nx plugin for creating AWS CDK applications and libraries inside an Nx monorepo. It offers the possibility to test and debug CDK applications as well as AWS Lambda functions locally. The plugin provides the full flexibility of the
172 lines • 5.9 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.createProjectConfiguration = exports.createTargets = void 0;
const devkit_1 = require("@nx/devkit");
const workspace_1 = require("@nx/workspace");
const app_type_1 = require("./app-type");
const createPredefinedArguments = ({ command, commandSuffix, environments, }) => {
const commandSuffixNormalized = commandSuffix ?? [];
return {
...environments.reduce((acc, environment) => {
acc[environment] = {
predefinedArguments: [
command,
`${environment}/*`,
...commandSuffixNormalized,
],
};
return acc;
}, {}),
};
};
const createTargets = ({ defaultEnvironment, environments, type, customTargetNames, }) => {
const names = {
cdkTargetName: 'cdk',
deployTargetName: 'deploy',
deployAllTargetName: 'deploy-all',
destroyTargetName: 'destroy',
diffTargetName: 'diff',
lsTargetName: 'ls',
synthTargetName: 'synth',
watchTargetName: 'watch',
generateEventTargetName: 'generate-event',
invokeTargetName: 'invoke',
startApiTargetName: 'start-api',
startLambdaTargetName: 'start-lambda',
...customTargetNames,
};
let targets = {
[names.cdkTargetName]: {
executor: 'nx-serverless-cdk:cdk',
options: {},
},
[names.deployTargetName]: {
executor: 'nx-serverless-cdk:cdk',
defaultConfiguration: defaultEnvironment,
options: {
predefinedArguments: ['deploy'],
},
configurations: createPredefinedArguments({
command: 'deploy',
environments,
}),
},
[names.deployAllTargetName]: {
executor: 'nx-serverless-cdk:cdk',
dependsOn: [
{
dependencies: true,
params: 'forward',
target: names.deployAllTargetName,
},
],
defaultConfiguration: defaultEnvironment,
options: {
predefinedArguments: ['deploy'],
},
configurations: createPredefinedArguments({
command: 'deploy',
environments,
}),
},
[names.destroyTargetName]: {
executor: 'nx-serverless-cdk:cdk',
defaultConfiguration: defaultEnvironment,
options: {
predefinedArguments: ['destroy', '--force'],
},
configurations: createPredefinedArguments({
command: 'destroy',
environments,
commandSuffix: ['--force'],
}),
},
[names.diffTargetName]: {
executor: 'nx-serverless-cdk:cdk',
defaultConfiguration: defaultEnvironment,
options: {
predefinedArguments: ['diff'],
},
configurations: createPredefinedArguments({
command: 'diff',
environments,
}),
},
[names.lsTargetName]: {
executor: 'nx-serverless-cdk:cdk',
defaultConfiguration: defaultEnvironment,
options: {
predefinedArguments: ['ls'],
},
configurations: createPredefinedArguments({
command: 'ls',
environments,
}),
},
[names.synthTargetName]: {
executor: 'nx-serverless-cdk:cdk',
defaultConfiguration: defaultEnvironment,
options: {
predefinedArguments: ['synth'],
},
configurations: createPredefinedArguments({
command: 'synth',
environments,
}),
},
[names.watchTargetName]: {
executor: 'nx-serverless-cdk:cdk',
defaultConfiguration: defaultEnvironment,
options: {
predefinedArguments: ['watch'],
},
configurations: createPredefinedArguments({
command: 'watch',
environments,
}),
},
};
if (type === app_type_1.AppType.lambda) {
targets = {
...targets,
[names.generateEventTargetName]: {
executor: 'nx-serverless-cdk:generate-event',
options: {},
},
[names.invokeTargetName]: {
executor: 'nx-serverless-cdk:invoke',
options: {},
},
[names.startApiTargetName]: {
executor: 'nx-serverless-cdk:start-api',
options: {},
},
[names.startLambdaTargetName]: {
executor: 'nx-serverless-cdk:start-lambda',
options: {},
},
};
}
return targets;
};
exports.createTargets = createTargets;
const createProjectConfiguration = ({ options, projectOptions, useInferencePlugins, }) => {
const { projectRoot } = projectOptions;
return {
root: projectRoot,
sourceRoot: (0, devkit_1.joinPathFragments)(projectRoot, 'cdk'),
projectType: workspace_1.ProjectType.Application,
implicitDependencies: [],
targets: useInferencePlugins
? {}
: (0, exports.createTargets)({
defaultEnvironment: options.defaultEnvironment,
environments: options.environments,
type: options.type,
customTargetNames: {},
}),
tags: ['cdk-app'],
};
};
exports.createProjectConfiguration = createProjectConfiguration;
//# sourceMappingURL=create-project-configuration.js.map
;