@goldstack/template-lambda-api 0.3.73
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/bin/template +12 -0
- package/bin/template.ts +6 -0
- package/dist/src/generateLambdaConfig.d.ts +8 -0
- package/dist/src/generateLambdaConfig.d.ts.map +1 -0
- package/dist/src/generateLambdaConfig.js +51 -0
- package/dist/src/generateLambdaConfig.js.map +1 -0
- package/dist/src/generateLambdaConfig.spec.d.ts +2 -0
- package/dist/src/generateLambdaConfig.spec.d.ts.map +1 -0
- package/dist/src/generateLambdaConfig.spec.js +65 -0
- package/dist/src/generateLambdaConfig.spec.js.map +1 -0
- package/dist/src/templateLambdaApi.d.ts +3 -0
- package/dist/src/templateLambdaApi.d.ts.map +1 -0
- package/dist/src/templateLambdaApi.js +79 -0
- package/dist/src/templateLambdaApi.js.map +1 -0
- package/dist/src/templateLambdaApiBuild.d.ts +5 -0
- package/dist/src/templateLambdaApiBuild.d.ts.map +1 -0
- package/dist/src/templateLambdaApiBuild.js +36 -0
- package/dist/src/templateLambdaApiBuild.js.map +1 -0
- package/dist/src/templateLambdaApiDeploy.d.ts +10 -0
- package/dist/src/templateLambdaApiDeploy.d.ts.map +1 -0
- package/dist/src/templateLambdaApiDeploy.js +38 -0
- package/dist/src/templateLambdaApiDeploy.js.map +1 -0
- package/dist/src/templateLambdaConsts.d.ts +2 -0
- package/dist/src/templateLambdaConsts.d.ts.map +1 -0
- package/dist/src/templateLambdaConsts.js +5 -0
- package/dist/src/templateLambdaConsts.js.map +1 -0
- package/dist/src/types/LambdaApiPackage.d.ts +75 -0
- package/dist/src/types/LambdaApiPackage.d.ts.map +1 -0
- package/dist/src/types/LambdaApiPackage.js +3 -0
- package/dist/src/types/LambdaApiPackage.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/jest.config.js +11 -0
- package/package.json +84 -0
- package/schemas/deployment-configuration.schema.json +70 -0
- package/schemas/deployment.schema.json +156 -0
- package/schemas/package-configuration.schema.json +16 -0
- package/schemas/package.schema.json +224 -0
- package/scripts/generateSchemas.ts +3 -0
- package/src/generateLambdaConfig.spec.ts +74 -0
- package/src/generateLambdaConfig.ts +61 -0
- package/src/templateLambdaApi.ts +82 -0
- package/src/templateLambdaApiBuild.ts +33 -0
- package/src/templateLambdaApiDeploy.ts +48 -0
- package/src/templateLambdaConsts.ts +1 -0
- package/src/types/LambdaApiPackage.ts +89 -0
- package/testData/$default.ts +0 -0
- package/testData/folder/nested.ts +0 -0
- package/testData/folder/{pathparam}.ts +0 -0
- package/testData/health/$index.ts +0 -0
- package/testData/index.ts +0 -0
- package/testData/resource/{path}/object.ts +0 -0
- package/testData/resource.ts +0 -0
- package/tsconfig.generate.json +12 -0
- package/tsconfig.json +64 -0
package/README.md
ADDED
package/bin/template
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
3
|
+
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
5
|
+
require('source-map-support').install();
|
|
6
|
+
|
|
7
|
+
require('./../dist/src/templateLambdaApi')
|
|
8
|
+
.run(process.argv)
|
|
9
|
+
.catch((e) => {
|
|
10
|
+
console.log(e);
|
|
11
|
+
process.exit(1);
|
|
12
|
+
});
|
package/bin/template.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LambdaConfig } from '@goldstack/utils-aws-lambda';
|
|
2
|
+
import { LambdaRoutesConfig, LambdaApiDeployment } from './types/LambdaApiPackage';
|
|
3
|
+
/**
|
|
4
|
+
* Generates a valid function name for a route
|
|
5
|
+
*/
|
|
6
|
+
export declare const generateFunctionName: (deployment: LambdaApiDeployment, config: LambdaConfig) => string;
|
|
7
|
+
export declare const generateLambdaConfig: (deployment: LambdaApiDeployment, config: LambdaConfig[]) => LambdaRoutesConfig;
|
|
8
|
+
//# sourceMappingURL=generateLambdaConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateLambdaConfig.d.ts","sourceRoot":"","sources":["../../src/generateLambdaConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAYlC;;GAEG;AACH,eAAO,MAAM,oBAAoB,eACnB,mBAAmB,UACvB,YAAY,KACnB,MA0BF,CAAC;AAEF,eAAO,MAAM,oBAAoB,eACnB,mBAAmB,UACvB,YAAY,EAAE,KACrB,kBAOF,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateLambdaConfig = exports.generateFunctionName = void 0;
|
|
4
|
+
const santiseFunctionName = (input) => {
|
|
5
|
+
return input
|
|
6
|
+
.replace(/\//g, '-')
|
|
7
|
+
.replace(/\$/g, '_')
|
|
8
|
+
.replace(/\{/g, '_')
|
|
9
|
+
.replace(/\}/g, '_')
|
|
10
|
+
.replace(/\+/g, '_')
|
|
11
|
+
.replace(/[^\w\-_]/gi, '_');
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Generates a valid function name for a route
|
|
15
|
+
*/
|
|
16
|
+
const generateFunctionName = (deployment, config) => {
|
|
17
|
+
let name = config.name;
|
|
18
|
+
if (name === '$default') {
|
|
19
|
+
// '$' is not a valid character in a lambda function name
|
|
20
|
+
name = 'default_gateway_lambda_2281';
|
|
21
|
+
}
|
|
22
|
+
if (name === '$index') {
|
|
23
|
+
name = 'index_root_lambda_4423';
|
|
24
|
+
}
|
|
25
|
+
name = santiseFunctionName(name);
|
|
26
|
+
let pathPrefix = '';
|
|
27
|
+
const segments = config.path.split('/');
|
|
28
|
+
if (segments.length === 2 && name === 'index_root_lambda_4423') {
|
|
29
|
+
pathPrefix = `${segments[1]}-`;
|
|
30
|
+
}
|
|
31
|
+
if (segments.length > 2) {
|
|
32
|
+
segments.shift(); // remove first element since path starts with '/' and thus the first element is always ''
|
|
33
|
+
segments.pop(); // remove the last element since that is the name of the function in the route
|
|
34
|
+
pathPrefix = santiseFunctionName(segments.join('-'));
|
|
35
|
+
pathPrefix = `${pathPrefix}-`;
|
|
36
|
+
}
|
|
37
|
+
name = `${pathPrefix}${name}`;
|
|
38
|
+
name = (`${deployment.configuration.lambdaNamePrefix}-` || '') + name;
|
|
39
|
+
return name;
|
|
40
|
+
};
|
|
41
|
+
exports.generateFunctionName = generateFunctionName;
|
|
42
|
+
const generateLambdaConfig = (deployment, config) => {
|
|
43
|
+
return config.reduce((last, curr) => {
|
|
44
|
+
last[curr.route] = {
|
|
45
|
+
function_name: (0, exports.generateFunctionName)(deployment, curr),
|
|
46
|
+
};
|
|
47
|
+
return last;
|
|
48
|
+
}, {});
|
|
49
|
+
};
|
|
50
|
+
exports.generateLambdaConfig = generateLambdaConfig;
|
|
51
|
+
//# sourceMappingURL=generateLambdaConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateLambdaConfig.js","sourceRoot":"","sources":["../../src/generateLambdaConfig.ts"],"names":[],"mappings":";;;AAMA,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAU,EAAE;IACpD,OAAO,KAAK;SACT,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF;;GAEG;AACI,MAAM,oBAAoB,GAAG,CAClC,UAA+B,EAC/B,MAAoB,EACZ,EAAE;IACV,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACvB,IAAI,IAAI,KAAK,UAAU,EAAE;QACvB,yDAAyD;QACzD,IAAI,GAAG,6BAA6B,CAAC;KACtC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE;QACrB,IAAI,GAAG,wBAAwB,CAAC;KACjC;IACD,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAEjC,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,wBAAwB,EAAE;QAC9D,UAAU,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;KAChC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;QACvB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,0FAA0F;QAC5G,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,8EAA8E;QAC9F,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,UAAU,GAAG,GAAG,UAAU,GAAG,CAAC;KAC/B;IAED,IAAI,GAAG,GAAG,UAAU,GAAG,IAAI,EAAE,CAAC;IAC9B,IAAI,GAAG,CAAC,GAAG,UAAU,CAAC,aAAa,CAAC,gBAAgB,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACtE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AA7BW,QAAA,oBAAoB,wBA6B/B;AAEK,MAAM,oBAAoB,GAAG,CAClC,UAA+B,EAC/B,MAAsB,EACF,EAAE;IACtB,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;QAClC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;YACjB,aAAa,EAAE,IAAA,4BAAoB,EAAC,UAAU,EAAE,IAAI,CAAC;SACtD,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC,CAAC;AAVW,QAAA,oBAAoB,wBAU/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateLambdaConfig.spec.d.ts","sourceRoot":"","sources":["../../src/generateLambdaConfig.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const utils_aws_lambda_1 = require("@goldstack/utils-aws-lambda");
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const generateLambdaConfig_1 = require("./generateLambdaConfig");
|
|
9
|
+
const templateLambdaApiBuild_1 = require("./templateLambdaApiBuild");
|
|
10
|
+
const dummyDeployment = {
|
|
11
|
+
awsRegion: 'ap-east-1',
|
|
12
|
+
awsUser: 'dummy',
|
|
13
|
+
configuration: {
|
|
14
|
+
lambdaNamePrefix: 'test-lambdas',
|
|
15
|
+
apiDomain: 'domain',
|
|
16
|
+
hostedZoneDomain: 'domain',
|
|
17
|
+
lambdas: {},
|
|
18
|
+
},
|
|
19
|
+
name: 'test',
|
|
20
|
+
};
|
|
21
|
+
describe('Generate Lambda config', () => {
|
|
22
|
+
const routesConfig = (0, utils_aws_lambda_1.readLambdaConfig)('./testData');
|
|
23
|
+
const config = (0, generateLambdaConfig_1.generateLambdaConfig)(dummyDeployment, routesConfig);
|
|
24
|
+
test('Should render config for Terraform', () => {
|
|
25
|
+
(0, assert_1.default)(config['$default'].function_name);
|
|
26
|
+
(0, assert_1.default)(config['ANY /folder/nested'].function_name.indexOf(dummyDeployment.configuration.lambdaNamePrefix || 'fail') !== -1);
|
|
27
|
+
});
|
|
28
|
+
test('Should determine correct output dirs for dist', () => {
|
|
29
|
+
const nestedRoute = routesConfig.find((e) => e.path === '/folder/nested');
|
|
30
|
+
(0, assert_1.default)(nestedRoute);
|
|
31
|
+
const dir = (0, templateLambdaApiBuild_1.getOutDirForLambda)(nestedRoute);
|
|
32
|
+
(0, assert_1.default)(dir === './distLambda/folder/nested');
|
|
33
|
+
});
|
|
34
|
+
test('Should determine path parametmers for file names', () => {
|
|
35
|
+
const nestedRoute = routesConfig.find((e) => e.path === '/folder/{pathparam}');
|
|
36
|
+
(0, assert_1.default)(nestedRoute);
|
|
37
|
+
const functionName = (0, generateLambdaConfig_1.generateFunctionName)(dummyDeployment, nestedRoute);
|
|
38
|
+
(0, assert_1.default)(functionName.indexOf('folder') !== -1);
|
|
39
|
+
(0, assert_1.default)(functionName.indexOf('{') === -1);
|
|
40
|
+
(0, assert_1.default)(functionName.indexOf('}') === -1);
|
|
41
|
+
});
|
|
42
|
+
test('Should determine path parametmers for folder names', () => {
|
|
43
|
+
const nestedRoute = routesConfig.find((e) => e.path === '/resource/{path}/object');
|
|
44
|
+
(0, assert_1.default)(nestedRoute);
|
|
45
|
+
const functionName = (0, generateLambdaConfig_1.generateFunctionName)(dummyDeployment, nestedRoute);
|
|
46
|
+
(0, assert_1.default)(functionName.indexOf('object') !== -1);
|
|
47
|
+
(0, assert_1.default)(functionName.indexOf('resource') !== -1);
|
|
48
|
+
(0, assert_1.default)(functionName.indexOf('{') === -1);
|
|
49
|
+
(0, assert_1.default)(functionName.indexOf('}') === -1);
|
|
50
|
+
});
|
|
51
|
+
test('Should provide a correct path for a nested index file', () => {
|
|
52
|
+
const nestedRoute = routesConfig.find((e) => e.path === '/health');
|
|
53
|
+
(0, assert_1.default)(nestedRoute);
|
|
54
|
+
const functionName = (0, generateLambdaConfig_1.generateFunctionName)(dummyDeployment, nestedRoute);
|
|
55
|
+
(0, assert_1.default)(functionName.indexOf('health') !== -1);
|
|
56
|
+
});
|
|
57
|
+
test('Should provide a correct path for a file in the API root', () => {
|
|
58
|
+
var _a;
|
|
59
|
+
const nestedRoute = routesConfig.find((e) => e.path === '/resource');
|
|
60
|
+
(0, assert_1.default)(nestedRoute);
|
|
61
|
+
const functionName = (0, generateLambdaConfig_1.generateFunctionName)(dummyDeployment, nestedRoute);
|
|
62
|
+
(0, assert_1.default)(((_a = functionName.match(/resource/g)) === null || _a === void 0 ? void 0 : _a.length) === 1);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=generateLambdaConfig.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateLambdaConfig.spec.js","sourceRoot":"","sources":["../../src/generateLambdaConfig.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateLambdaApi.d.ts","sourceRoot":"","sources":["../../src/templateLambdaApi.ts"],"names":[],"mappings":"AAOA,cAAc,0BAA0B,CAAC;AAYzC,eAAO,MAAM,GAAG,SAAgB,MAAM,EAAE,KAAG,QAAQ,IAAI,CA8DtD,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
|
+
};
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.run = void 0;
|
|
17
|
+
const utils_package_1 = require("@goldstack/utils-package");
|
|
18
|
+
const utils_cli_1 = require("@goldstack/utils-cli");
|
|
19
|
+
const utils_terraform_1 = require("@goldstack/utils-terraform");
|
|
20
|
+
const templateLambdaApiDeploy_1 = require("./templateLambdaApiDeploy");
|
|
21
|
+
const utils_terraform_aws_1 = require("@goldstack/utils-terraform-aws");
|
|
22
|
+
const utils_package_config_1 = require("@goldstack/utils-package-config");
|
|
23
|
+
const utils_package_2 = require("@goldstack/utils-package");
|
|
24
|
+
__exportStar(require("./types/LambdaApiPackage"), exports);
|
|
25
|
+
const yargs_1 = __importDefault(require("yargs"));
|
|
26
|
+
const fs_1 = __importDefault(require("fs"));
|
|
27
|
+
const utils_aws_lambda_1 = require("@goldstack/utils-aws-lambda");
|
|
28
|
+
const generateLambdaConfig_1 = require("./generateLambdaConfig");
|
|
29
|
+
const templateLambdaConsts_1 = require("./templateLambdaConsts");
|
|
30
|
+
const templateLambdaApiBuild_1 = require("./templateLambdaApiBuild");
|
|
31
|
+
const run = async (args) => {
|
|
32
|
+
await (0, utils_cli_1.wrapCli)(async () => {
|
|
33
|
+
const argv = (0, utils_package_1.buildCli)({
|
|
34
|
+
yargs: yargs_1.default,
|
|
35
|
+
deployCommands: (0, utils_package_1.buildDeployCommands)(),
|
|
36
|
+
infraCommands: (0, utils_terraform_1.infraCommands)(),
|
|
37
|
+
})
|
|
38
|
+
.command('build [deployment]', 'Build all lambdas', () => {
|
|
39
|
+
return yargs_1.default.positional('deployment', {
|
|
40
|
+
type: 'string',
|
|
41
|
+
describe: 'Name of the deployment this command should be applied to',
|
|
42
|
+
default: '',
|
|
43
|
+
});
|
|
44
|
+
})
|
|
45
|
+
.help().argv;
|
|
46
|
+
const packageConfig = new utils_package_config_1.PackageConfig({
|
|
47
|
+
packagePath: './',
|
|
48
|
+
});
|
|
49
|
+
const config = packageConfig.getConfig();
|
|
50
|
+
// update routes
|
|
51
|
+
if (!fs_1.default.existsSync('./src/routes')) {
|
|
52
|
+
throw new Error('Please specify lambda function handlers in ./src/routes so that API Gateway route configuration can be generated.');
|
|
53
|
+
}
|
|
54
|
+
const lambdaRoutes = (0, utils_aws_lambda_1.readLambdaConfig)(templateLambdaConsts_1.defaultRoutesPath);
|
|
55
|
+
config.deployments = config.deployments.map((e) => {
|
|
56
|
+
const lambdasConfigs = (0, generateLambdaConfig_1.generateLambdaConfig)(e, lambdaRoutes);
|
|
57
|
+
e.configuration.lambdas = lambdasConfigs;
|
|
58
|
+
return e;
|
|
59
|
+
});
|
|
60
|
+
(0, utils_package_2.writePackageConfig)(config);
|
|
61
|
+
const command = argv._[0];
|
|
62
|
+
const [, , , ...opArgs] = args;
|
|
63
|
+
if (command === 'infra') {
|
|
64
|
+
await (0, utils_terraform_aws_1.terraformAwsCli)(opArgs);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (command === 'build') {
|
|
68
|
+
await (0, templateLambdaApiBuild_1.buildLambdas)(lambdaRoutes);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (command === 'deploy') {
|
|
72
|
+
await (0, templateLambdaApiDeploy_1.deployCli)(packageConfig.getDeployment(config, opArgs[0]), lambdaRoutes);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
throw new Error('Unknown command: ' + command);
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
exports.run = run;
|
|
79
|
+
//# sourceMappingURL=templateLambdaApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateLambdaApi.js","sourceRoot":"","sources":["../../src/templateLambdaApi.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAAyE;AACzE,oDAA+C;AAC/C,gEAA2D;AAC3D,uEAAsD;AACtD,wEAAiE;AACjE,0EAAgE;AAChE,4DAA8D;AAC9D,2DAAyC;AACzC,kDAA0B;AAC1B,4CAAoB;AAKpB,kEAA+D;AAC/D,iEAA8D;AAC9D,iEAA2D;AAC3D,qEAAwD;AAEjD,MAAM,GAAG,GAAG,KAAK,EAAE,IAAc,EAAiB,EAAE;IACzD,MAAM,IAAA,mBAAO,EAAC,KAAK,IAAI,EAAE;QACvB,MAAM,IAAI,GAAG,IAAA,wBAAQ,EAAC;YACpB,KAAK,EAAL,eAAK;YACL,cAAc,EAAE,IAAA,mCAAmB,GAAE;YACrC,aAAa,EAAE,IAAA,+BAAa,GAAE;SAC/B,CAAC;aACC,OAAO,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,GAAG,EAAE;YACvD,OAAO,eAAK,CAAC,UAAU,CAAC,YAAY,EAAE;gBACpC,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,0DAA0D;gBACpE,OAAO,EAAE,EAAE;aACZ,CAAC,CAAC;QACL,CAAC,CAAC;aACD,IAAI,EAAE,CAAC,IAAI,CAAC;QAEf,MAAM,aAAa,GAAG,IAAI,oCAAa,CAGrC;YACA,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;QAEzC,gBAAgB;QAChB,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;YAClC,MAAM,IAAI,KAAK,CACb,mHAAmH,CACpH,CAAC;SACH;QACD,MAAM,YAAY,GAAG,IAAA,mCAAgB,EAAC,wCAAiB,CAAC,CAAC;QACzD,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAChD,MAAM,cAAc,GAAG,IAAA,2CAAoB,EAAC,CAAC,EAAE,YAAY,CAAC,CAAC;YAC7D,CAAC,CAAC,aAAa,CAAC,OAAO,GAAG,cAAc,CAAC;YACzC,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QACH,IAAA,kCAAkB,EAAC,MAAM,CAAC,CAAC;QAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,EAAE,AAAD,EAAG,AAAD,EAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;QAE/B,IAAI,OAAO,KAAK,OAAO,EAAE;YACvB,MAAM,IAAA,qCAAe,EAAC,MAAM,CAAC,CAAC;YAC9B,OAAO;SACR;QAED,IAAI,OAAO,KAAK,OAAO,EAAE;YACvB,MAAM,IAAA,qCAAY,EAAC,YAAY,CAAC,CAAC;YACjC,OAAO;SACR;QAED,IAAI,OAAO,KAAK,QAAQ,EAAE;YACxB,MAAM,IAAA,mCAAS,EACb,aAAa,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAC9C,YAAY,CACb,CAAC;YACF,OAAO;SACR;QAED,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,OAAO,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AA9DW,QAAA,GAAG,OA8Dd"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { LambdaConfig } from '@goldstack/utils-aws-lambda';
|
|
2
|
+
export declare const getOutDirForLambda: (config: LambdaConfig) => string;
|
|
3
|
+
export declare const getOutFileForLambda: (config: LambdaConfig) => string;
|
|
4
|
+
export declare const buildLambdas: (configs: LambdaConfig[]) => Promise<void>;
|
|
5
|
+
//# sourceMappingURL=templateLambdaApiBuild.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateLambdaApiBuild.d.ts","sourceRoot":"","sources":["../../src/templateLambdaApiBuild.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAI3D,eAAO,MAAM,kBAAkB,WAAY,YAAY,KAAG,MAKzD,CAAC;AAEF,eAAO,MAAM,mBAAmB,WAAY,YAAY,KAAG,MAE1D,CAAC;AAEF,eAAO,MAAM,YAAY,YAAmB,YAAY,EAAE,KAAG,QAAQ,IAAI,CAexE,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildLambdas = exports.getOutFileForLambda = exports.getOutDirForLambda = void 0;
|
|
4
|
+
const esbuild_1 = require("esbuild");
|
|
5
|
+
const esbuild_plugin_pnp_1 = require("@yarnpkg/esbuild-plugin-pnp");
|
|
6
|
+
const utils_sh_1 = require("@goldstack/utils-sh");
|
|
7
|
+
const templateLambdaConsts_1 = require("./templateLambdaConsts");
|
|
8
|
+
const getOutDirForLambda = (config) => {
|
|
9
|
+
if (config.path === '$default') {
|
|
10
|
+
return `./distLambda/${config.path}`;
|
|
11
|
+
}
|
|
12
|
+
return `./distLambda${config.path}`;
|
|
13
|
+
};
|
|
14
|
+
exports.getOutDirForLambda = getOutDirForLambda;
|
|
15
|
+
const getOutFileForLambda = (config) => {
|
|
16
|
+
return `${(0, exports.getOutDirForLambda)(config)}/lambda.js`;
|
|
17
|
+
};
|
|
18
|
+
exports.getOutFileForLambda = getOutFileForLambda;
|
|
19
|
+
const buildLambdas = async (configs) => {
|
|
20
|
+
for await (const config of configs) {
|
|
21
|
+
(0, utils_sh_1.mkdir)('-p', (0, exports.getOutDirForLambda)(config));
|
|
22
|
+
await (0, esbuild_1.build)({
|
|
23
|
+
plugins: [(0, esbuild_plugin_pnp_1.pnpPlugin)()],
|
|
24
|
+
bundle: true,
|
|
25
|
+
entryPoints: [`${templateLambdaConsts_1.defaultRoutesPath}/${config.relativeFilePath}`],
|
|
26
|
+
external: ['aws-sdk'],
|
|
27
|
+
minify: true,
|
|
28
|
+
format: 'cjs',
|
|
29
|
+
target: 'node12.0',
|
|
30
|
+
sourcemap: true,
|
|
31
|
+
outfile: (0, exports.getOutFileForLambda)(config),
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
exports.buildLambdas = buildLambdas;
|
|
36
|
+
//# sourceMappingURL=templateLambdaApiBuild.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateLambdaApiBuild.js","sourceRoot":"","sources":["../../src/templateLambdaApiBuild.ts"],"names":[],"mappings":";;;AAAA,qCAAgC;AAChC,oEAAwD;AAExD,kDAA4C;AAC5C,iEAA2D;AAEpD,MAAM,kBAAkB,GAAG,CAAC,MAAoB,EAAU,EAAE;IACjE,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE;QAC9B,OAAO,gBAAgB,MAAM,CAAC,IAAI,EAAE,CAAC;KACtC;IACD,OAAO,eAAe,MAAM,CAAC,IAAI,EAAE,CAAC;AACtC,CAAC,CAAC;AALW,QAAA,kBAAkB,sBAK7B;AAEK,MAAM,mBAAmB,GAAG,CAAC,MAAoB,EAAU,EAAE;IAClE,OAAO,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,YAAY,CAAC;AACnD,CAAC,CAAC;AAFW,QAAA,mBAAmB,uBAE9B;AAEK,MAAM,YAAY,GAAG,KAAK,EAAE,OAAuB,EAAiB,EAAE;IAC3E,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,OAAO,EAAE;QAClC,IAAA,gBAAK,EAAC,IAAI,EAAE,IAAA,0BAAkB,EAAC,MAAM,CAAC,CAAC,CAAC;QACxC,MAAM,IAAA,eAAK,EAAC;YACV,OAAO,EAAE,CAAC,IAAA,8BAAS,GAAE,CAAC;YACtB,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,CAAC,GAAG,wCAAiB,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAChE,QAAQ,EAAE,CAAC,SAAS,CAAC;YACrB,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,IAAA,2BAAmB,EAAC,MAAM,CAAC;SACrC,CAAC,CAAC;KACJ;AACH,CAAC,CAAC;AAfW,QAAA,YAAY,gBAevB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { LambdaApiDeployment } from './types/LambdaApiPackage';
|
|
2
|
+
import { LambdaConfig } from '@goldstack/utils-aws-lambda';
|
|
3
|
+
interface DeployLambdaParams {
|
|
4
|
+
deployment: LambdaApiDeployment;
|
|
5
|
+
config: LambdaConfig[];
|
|
6
|
+
}
|
|
7
|
+
export declare const deployLambdas: (params: DeployLambdaParams) => Promise<void>;
|
|
8
|
+
export declare const deployCli: (deployment: LambdaApiDeployment, config: LambdaConfig[]) => Promise<void>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=templateLambdaApiDeploy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateLambdaApiDeploy.d.ts","sourceRoot":"","sources":["../../src/templateLambdaApiDeploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAkB,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAS3E,UAAU,kBAAkB;IAC1B,UAAU,EAAE,mBAAmB,CAAC;IAChC,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED,eAAO,MAAM,aAAa,WAChB,kBAAkB,KACzB,QAAQ,IAAI,CAmBd,CAAC;AAEF,eAAO,MAAM,SAAS,eACR,mBAAmB,UACvB,YAAY,EAAE,KACrB,QAAQ,IAAI,CAKd,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deployCli = exports.deployLambdas = void 0;
|
|
4
|
+
const infra_aws_1 = require("@goldstack/infra-aws");
|
|
5
|
+
const utils_aws_lambda_1 = require("@goldstack/utils-aws-lambda");
|
|
6
|
+
const utils_aws_lambda_2 = require("@goldstack/utils-aws-lambda");
|
|
7
|
+
const templateLambdaConsts_1 = require("./templateLambdaConsts");
|
|
8
|
+
const utils_sh_1 = require("@goldstack/utils-sh");
|
|
9
|
+
const generateLambdaConfig_1 = require("./generateLambdaConfig");
|
|
10
|
+
const templateLambdaApiBuild_1 = require("./templateLambdaApiBuild");
|
|
11
|
+
const deployLambdas = async (params) => {
|
|
12
|
+
const lambdaConfig = (0, utils_aws_lambda_2.readLambdaConfig)(templateLambdaConsts_1.defaultRoutesPath);
|
|
13
|
+
const operations = lambdaConfig.map(async (config) => {
|
|
14
|
+
const functionName = (0, generateLambdaConfig_1.generateFunctionName)(params.deployment, config);
|
|
15
|
+
console.log(`[${functionName}]: Starting deployment`);
|
|
16
|
+
const functionDir = (0, templateLambdaApiBuild_1.getOutDirForLambda)(config);
|
|
17
|
+
(0, utils_sh_1.mkdir)('-p', functionDir);
|
|
18
|
+
const targetArchive = `${functionDir}/${config.name}.zip`;
|
|
19
|
+
await (0, utils_aws_lambda_1.deployFunction)({
|
|
20
|
+
targetArchiveName: targetArchive,
|
|
21
|
+
lambdaPackageDir: functionDir,
|
|
22
|
+
awsCredentials: await (0, infra_aws_1.getAWSUser)(params.deployment.awsUser),
|
|
23
|
+
region: params.deployment.awsRegion,
|
|
24
|
+
functionName,
|
|
25
|
+
});
|
|
26
|
+
console.log(`[${functionName}]: Deployment completed`);
|
|
27
|
+
});
|
|
28
|
+
await Promise.all(operations);
|
|
29
|
+
};
|
|
30
|
+
exports.deployLambdas = deployLambdas;
|
|
31
|
+
const deployCli = async (deployment, config) => {
|
|
32
|
+
await (0, exports.deployLambdas)({
|
|
33
|
+
deployment,
|
|
34
|
+
config,
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
exports.deployCli = deployCli;
|
|
38
|
+
//# sourceMappingURL=templateLambdaApiDeploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateLambdaApiDeploy.js","sourceRoot":"","sources":["../../src/templateLambdaApiDeploy.ts"],"names":[],"mappings":";;;AACA,oDAAkD;AAClD,kEAA2E;AAE3E,kEAA+D;AAC/D,iEAA2D;AAE3D,kDAA4C;AAC5C,iEAA8D;AAC9D,qEAA8D;AAOvD,MAAM,aAAa,GAAG,KAAK,EAChC,MAA0B,EACX,EAAE;IACjB,MAAM,YAAY,GAAG,IAAA,mCAAgB,EAAC,wCAAiB,CAAC,CAAC;IAEzD,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QACnD,MAAM,YAAY,GAAG,IAAA,2CAAoB,EAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,IAAI,YAAY,wBAAwB,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAA,2CAAkB,EAAC,MAAM,CAAC,CAAC;QAC/C,IAAA,gBAAK,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACzB,MAAM,aAAa,GAAG,GAAG,WAAW,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC;QAC1D,MAAM,IAAA,iCAAc,EAAC;YACnB,iBAAiB,EAAE,aAAa;YAChC,gBAAgB,EAAE,WAAW;YAC7B,cAAc,EAAE,MAAM,IAAA,sBAAU,EAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;YAC3D,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS;YACnC,YAAY;SACb,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,IAAI,YAAY,yBAAyB,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC,CAAC;AArBW,QAAA,aAAa,iBAqBxB;AAEK,MAAM,SAAS,GAAG,KAAK,EAC5B,UAA+B,EAC/B,MAAsB,EACP,EAAE;IACjB,MAAM,IAAA,qBAAa,EAAC;QAClB,UAAU;QACV,MAAM;KACP,CAAC,CAAC;AACL,CAAC,CAAC;AARW,QAAA,SAAS,aAQpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateLambdaConsts.d.ts","sourceRoot":"","sources":["../../src/templateLambdaConsts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateLambdaConsts.js","sourceRoot":"","sources":["../../src/templateLambdaConsts.ts"],"names":[],"mappings":";;;AAAa,QAAA,iBAAiB,GAAG,cAAc,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { AWSDeployment } from '@goldstack/infra-aws';
|
|
2
|
+
import { TerraformDeployment } from '@goldstack/utils-terraform';
|
|
3
|
+
import { Deployment, DeploymentConfiguration } from '@goldstack/infra';
|
|
4
|
+
import { Package, Configuration } from '@goldstack/utils-package';
|
|
5
|
+
/**
|
|
6
|
+
* The prefix to be used for names of the generated lambdas for the API endpoints.
|
|
7
|
+
*
|
|
8
|
+
* @title Lambda Name Prefix
|
|
9
|
+
* @pattern ^[A-Za-z0-9-_]*$
|
|
10
|
+
*/
|
|
11
|
+
declare type LambdaNamePrefix = string;
|
|
12
|
+
/**
|
|
13
|
+
* The domain name that the API should be deployed to (e.g. api.mysite.com)
|
|
14
|
+
*
|
|
15
|
+
* @title API Domain
|
|
16
|
+
* @pattern ^[^\s]*
|
|
17
|
+
*/
|
|
18
|
+
export declare type APIDomain = string;
|
|
19
|
+
/**
|
|
20
|
+
* The domain name of the Route 53 hosted zone that the domain for this API should be added to.
|
|
21
|
+
*
|
|
22
|
+
* @title Hosted Zone Domain
|
|
23
|
+
* @pattern ^[^\s]*
|
|
24
|
+
*/
|
|
25
|
+
export declare type HostedZoneDomain = string;
|
|
26
|
+
/**
|
|
27
|
+
* Optional URL for an UI that should be allowed to access this server.
|
|
28
|
+
*
|
|
29
|
+
* @title CORS Header
|
|
30
|
+
* @pattern ^[^\s]*
|
|
31
|
+
*/
|
|
32
|
+
export declare type CorsHeader = string;
|
|
33
|
+
export interface LambdaRouteConfig {
|
|
34
|
+
function_name: string;
|
|
35
|
+
}
|
|
36
|
+
export declare type LambdaRoutesConfig = {
|
|
37
|
+
[key: string]: LambdaRouteConfig;
|
|
38
|
+
};
|
|
39
|
+
export interface ThisDeploymentConfiguration extends DeploymentConfiguration {
|
|
40
|
+
lambdaNamePrefix?: LambdaNamePrefix;
|
|
41
|
+
apiDomain: APIDomain;
|
|
42
|
+
hostedZoneDomain: HostedZoneDomain;
|
|
43
|
+
cors?: CorsHeader;
|
|
44
|
+
lambdas: LambdaRoutesConfig;
|
|
45
|
+
}
|
|
46
|
+
export interface ThisDeployment extends Deployment, AWSDeployment, TerraformDeployment {
|
|
47
|
+
configuration: ThisDeploymentConfiguration;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Places where the lambda should be deployed to.
|
|
51
|
+
*
|
|
52
|
+
* @title Deployments
|
|
53
|
+
*/
|
|
54
|
+
export declare type LambdaApiDeployments = ThisDeployment[];
|
|
55
|
+
/**
|
|
56
|
+
* Configures this lambda.
|
|
57
|
+
*
|
|
58
|
+
* @title Lambda Configuration
|
|
59
|
+
*
|
|
60
|
+
*/
|
|
61
|
+
export declare type ThisPackageConfiguration = Configuration;
|
|
62
|
+
/**
|
|
63
|
+
* A deployment for a lambda API.
|
|
64
|
+
*
|
|
65
|
+
* @title Lambda API Package
|
|
66
|
+
*/
|
|
67
|
+
export interface ThisPackage extends Package {
|
|
68
|
+
configuration: ThisPackageConfiguration;
|
|
69
|
+
deployments: LambdaApiDeployments;
|
|
70
|
+
}
|
|
71
|
+
export { ThisDeploymentConfiguration as LambdaApiDeploymentConfiguration };
|
|
72
|
+
export { ThisDeployment as LambdaApiDeployment };
|
|
73
|
+
export { ThisPackageConfiguration as LambdaApiConfiguration };
|
|
74
|
+
export { ThisPackage as LambdaApiPackage };
|
|
75
|
+
//# sourceMappingURL=LambdaApiPackage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LambdaApiPackage.d.ts","sourceRoot":"","sources":["../../../src/types/LambdaApiPackage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;;;GAKG;AACH,aAAK,gBAAgB,GAAG,MAAM,CAAC;AAE/B;;;;;GAKG;AACH,oBAAY,SAAS,GAAG,MAAM,CAAC;AAE/B;;;;;GAKG;AACH,oBAAY,gBAAgB,GAAG,MAAM,CAAC;AAEtC;;;;;GAKG;AACH,oBAAY,UAAU,GAAG,MAAM,CAAC;AAEhC,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,oBAAY,kBAAkB,GAAG;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAC;CAClC,CAAC;AAEF,MAAM,WAAW,2BAA4B,SAAQ,uBAAuB;IAC1E,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,SAAS,EAAE,SAAS,CAAC;IACrB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,kBAAkB,CAAC;CAC7B;AAED,MAAM,WAAW,cACf,SAAQ,UAAU,EAChB,aAAa,EACb,mBAAmB;IACrB,aAAa,EAAE,2BAA2B,CAAC;CAC5C;AAED;;;;GAIG;AACH,oBAAY,oBAAoB,GAAG,cAAc,EAAE,CAAC;AAEpD;;;;;GAKG;AACH,oBAAY,wBAAwB,GAAG,aAAa,CAAC;AAErD;;;;GAIG;AACH,MAAM,WAAW,WAAY,SAAQ,OAAO;IAC1C,aAAa,EAAE,wBAAwB,CAAC;IACxC,WAAW,EAAE,oBAAoB,CAAC;CACnC;AAED,OAAO,EAAE,2BAA2B,IAAI,gCAAgC,EAAE,CAAC;AAC3E,OAAO,EAAE,cAAc,IAAI,mBAAmB,EAAE,CAAC;AACjD,OAAO,EAAE,wBAAwB,IAAI,sBAAsB,EAAE,CAAC;AAC9D,OAAO,EAAE,WAAW,IAAI,gBAAgB,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LambdaApiPackage.js","sourceRoot":"","sources":["../../../src/types/LambdaApiPackage.ts"],"names":[],"mappings":""}
|