@infodb/lctl 0.1.0
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 +245 -0
- package/bin/cli.js +3 -0
- package/dist/commands/delete.d.ts +7 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +23 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/deploy.d.ts +11 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +98 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/export.d.ts +12 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +50 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/info.d.ts +7 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +48 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +73 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/aws-cli.d.ts +35 -0
- package/dist/utils/aws-cli.d.ts.map +1 -0
- package/dist/utils/aws-cli.js +196 -0
- package/dist/utils/aws-cli.js.map +1 -0
- package/dist/utils/config.d.ts +41 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +119 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +42 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/script-generator.d.ts +19 -0
- package/dist/utils/script-generator.d.ts.map +1 -0
- package/dist/utils/script-generator.js +205 -0
- package/dist/utils/script-generator.js.map +1 -0
- package/dist/utils/zip.d.ts +9 -0
- package/dist/utils/zip.d.ts.map +1 -0
- package/dist/utils/zip.js +122 -0
- package/dist/utils/zip.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Logger } from './logger';
|
|
2
|
+
import { LambdaConfig } from './config';
|
|
3
|
+
export interface LambdaFunctionInfo {
|
|
4
|
+
FunctionName: string;
|
|
5
|
+
Runtime: string;
|
|
6
|
+
Handler: string;
|
|
7
|
+
MemorySize: number;
|
|
8
|
+
Timeout: number;
|
|
9
|
+
LastModified: string;
|
|
10
|
+
CodeSize: number;
|
|
11
|
+
State: string;
|
|
12
|
+
Architectures?: string[];
|
|
13
|
+
Description?: string;
|
|
14
|
+
Environment?: {
|
|
15
|
+
Variables: Record<string, string>;
|
|
16
|
+
};
|
|
17
|
+
Layers?: Array<{
|
|
18
|
+
Arn: string;
|
|
19
|
+
}>;
|
|
20
|
+
}
|
|
21
|
+
export declare class AwsCliManager {
|
|
22
|
+
private region?;
|
|
23
|
+
private profile?;
|
|
24
|
+
private logger?;
|
|
25
|
+
constructor(region?: string | undefined, profile?: string | undefined, logger?: Logger | undefined);
|
|
26
|
+
deployFunction(functionName: string, config: LambdaConfig, zipPath: string): Promise<void>;
|
|
27
|
+
private functionExists;
|
|
28
|
+
private createFunction;
|
|
29
|
+
private updateFunction;
|
|
30
|
+
private setAdditionalConfigurations;
|
|
31
|
+
deleteFunction(functionName: string): Promise<void>;
|
|
32
|
+
getFunctionInfo(functionName: string): Promise<LambdaFunctionInfo>;
|
|
33
|
+
private runAwsCommand;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=aws-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aws-cli.d.ts","sourceRoot":"","sources":["../../src/utils/aws-cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE;QACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACnC,CAAC;IACF,MAAM,CAAC,EAAE,KAAK,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;KACb,CAAC,CAAC;CACJ;AAED,qBAAa,aAAa;IAEtB,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,OAAO,CAAC;IAChB,OAAO,CAAC,MAAM,CAAC;gBAFP,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,OAAO,CAAC,EAAE,MAAM,YAAA,EAChB,MAAM,CAAC,EAAE,MAAM,YAAA;IAGnB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAWlF,cAAc;YASd,cAAc;YAqDd,cAAc;YAgDd,2BAA2B;IAsCnC,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAU1D,aAAa;CA8C5B"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AwsCliManager = void 0;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
class AwsCliManager {
|
|
6
|
+
constructor(region, profile, logger) {
|
|
7
|
+
this.region = region;
|
|
8
|
+
this.profile = profile;
|
|
9
|
+
this.logger = logger;
|
|
10
|
+
}
|
|
11
|
+
async deployFunction(functionName, config, zipPath) {
|
|
12
|
+
// Check if function exists
|
|
13
|
+
const functionExists = await this.functionExists(functionName);
|
|
14
|
+
if (functionExists) {
|
|
15
|
+
await this.updateFunction(functionName, config, zipPath);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
await this.createFunction(functionName, config, zipPath);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
async functionExists(functionName) {
|
|
22
|
+
try {
|
|
23
|
+
await this.runAwsCommand(['lambda', 'get-function', '--function-name', functionName]);
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
async createFunction(functionName, config, zipPath) {
|
|
31
|
+
this.logger?.info('Creating new Lambda function...');
|
|
32
|
+
const args = [
|
|
33
|
+
'lambda', 'create-function',
|
|
34
|
+
'--function-name', functionName,
|
|
35
|
+
'--runtime', config.runtime,
|
|
36
|
+
'--role', config.role,
|
|
37
|
+
'--handler', config.handler,
|
|
38
|
+
'--zip-file', `fileb://${zipPath}`,
|
|
39
|
+
];
|
|
40
|
+
// Add optional parameters
|
|
41
|
+
if (config.description) {
|
|
42
|
+
args.push('--description', config.description);
|
|
43
|
+
}
|
|
44
|
+
if (config.memory) {
|
|
45
|
+
args.push('--memory-size', config.memory.toString());
|
|
46
|
+
}
|
|
47
|
+
if (config.timeout) {
|
|
48
|
+
args.push('--timeout', config.timeout.toString());
|
|
49
|
+
}
|
|
50
|
+
if (config.architecture && config.architecture !== 'x86_64') {
|
|
51
|
+
args.push('--architectures', config.architecture);
|
|
52
|
+
}
|
|
53
|
+
if (config.environment && Object.keys(config.environment).length > 0) {
|
|
54
|
+
const envVars = Object.entries(config.environment)
|
|
55
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
56
|
+
.join(',');
|
|
57
|
+
args.push('--environment', `Variables={${envVars}}`);
|
|
58
|
+
}
|
|
59
|
+
if (config.layers && config.layers.length > 0) {
|
|
60
|
+
args.push('--layers', config.layers.join(' '));
|
|
61
|
+
}
|
|
62
|
+
if (config.tags && Object.keys(config.tags).length > 0) {
|
|
63
|
+
const tags = Object.entries(config.tags)
|
|
64
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
65
|
+
.join(',');
|
|
66
|
+
args.push('--tags', tags);
|
|
67
|
+
}
|
|
68
|
+
await this.runAwsCommand(args);
|
|
69
|
+
// Set additional configurations
|
|
70
|
+
await this.setAdditionalConfigurations(functionName, config);
|
|
71
|
+
}
|
|
72
|
+
async updateFunction(functionName, config, zipPath) {
|
|
73
|
+
this.logger?.info('Updating existing Lambda function...');
|
|
74
|
+
// Update function code
|
|
75
|
+
await this.runAwsCommand([
|
|
76
|
+
'lambda', 'update-function-code',
|
|
77
|
+
'--function-name', functionName,
|
|
78
|
+
'--zip-file', `fileb://${zipPath}`,
|
|
79
|
+
]);
|
|
80
|
+
// Update function configuration
|
|
81
|
+
const configArgs = [
|
|
82
|
+
'lambda', 'update-function-configuration',
|
|
83
|
+
'--function-name', functionName,
|
|
84
|
+
'--runtime', config.runtime,
|
|
85
|
+
'--role', config.role,
|
|
86
|
+
'--handler', config.handler,
|
|
87
|
+
];
|
|
88
|
+
if (config.description) {
|
|
89
|
+
configArgs.push('--description', config.description);
|
|
90
|
+
}
|
|
91
|
+
if (config.memory) {
|
|
92
|
+
configArgs.push('--memory-size', config.memory.toString());
|
|
93
|
+
}
|
|
94
|
+
if (config.timeout) {
|
|
95
|
+
configArgs.push('--timeout', config.timeout.toString());
|
|
96
|
+
}
|
|
97
|
+
if (config.environment) {
|
|
98
|
+
const envVars = Object.entries(config.environment)
|
|
99
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
100
|
+
.join(',');
|
|
101
|
+
configArgs.push('--environment', `Variables={${envVars}}`);
|
|
102
|
+
}
|
|
103
|
+
if (config.layers) {
|
|
104
|
+
configArgs.push('--layers', config.layers.join(' '));
|
|
105
|
+
}
|
|
106
|
+
await this.runAwsCommand(configArgs);
|
|
107
|
+
// Set additional configurations
|
|
108
|
+
await this.setAdditionalConfigurations(functionName, config);
|
|
109
|
+
}
|
|
110
|
+
async setAdditionalConfigurations(functionName, config) {
|
|
111
|
+
// Set reserved concurrency
|
|
112
|
+
if (config.reserved_concurrency !== undefined) {
|
|
113
|
+
await this.runAwsCommand([
|
|
114
|
+
'lambda', 'put-reserved-concurrency-capacity',
|
|
115
|
+
'--function-name', functionName,
|
|
116
|
+
'--reserved-concurrency-capacity', config.reserved_concurrency.toString(),
|
|
117
|
+
]);
|
|
118
|
+
}
|
|
119
|
+
// Set VPC configuration
|
|
120
|
+
if (config.vpc) {
|
|
121
|
+
await this.runAwsCommand([
|
|
122
|
+
'lambda', 'update-function-configuration',
|
|
123
|
+
'--function-name', functionName,
|
|
124
|
+
'--vpc-config', `SubnetIds=${config.vpc.subnets.join(',')},SecurityGroupIds=${config.vpc.security_groups.join(',')}`,
|
|
125
|
+
]);
|
|
126
|
+
}
|
|
127
|
+
// Set dead letter queue
|
|
128
|
+
if (config.dead_letter_queue) {
|
|
129
|
+
await this.runAwsCommand([
|
|
130
|
+
'lambda', 'update-function-configuration',
|
|
131
|
+
'--function-name', functionName,
|
|
132
|
+
'--dead-letter-config', `TargetArn=${config.dead_letter_queue.target_arn}`,
|
|
133
|
+
]);
|
|
134
|
+
}
|
|
135
|
+
// Set ephemeral storage
|
|
136
|
+
if (config.ephemeral_storage) {
|
|
137
|
+
await this.runAwsCommand([
|
|
138
|
+
'lambda', 'update-function-configuration',
|
|
139
|
+
'--function-name', functionName,
|
|
140
|
+
'--ephemeral-storage', `Size=${config.ephemeral_storage}`,
|
|
141
|
+
]);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
async deleteFunction(functionName) {
|
|
145
|
+
await this.runAwsCommand([
|
|
146
|
+
'lambda', 'delete-function',
|
|
147
|
+
'--function-name', functionName,
|
|
148
|
+
]);
|
|
149
|
+
}
|
|
150
|
+
async getFunctionInfo(functionName) {
|
|
151
|
+
const result = await this.runAwsCommand([
|
|
152
|
+
'lambda', 'get-function',
|
|
153
|
+
'--function-name', functionName,
|
|
154
|
+
]);
|
|
155
|
+
const response = JSON.parse(result);
|
|
156
|
+
return response.Configuration;
|
|
157
|
+
}
|
|
158
|
+
async runAwsCommand(args) {
|
|
159
|
+
return new Promise((resolve, reject) => {
|
|
160
|
+
const baseArgs = ['aws'];
|
|
161
|
+
if (this.profile) {
|
|
162
|
+
baseArgs.push('--profile', this.profile);
|
|
163
|
+
}
|
|
164
|
+
if (this.region) {
|
|
165
|
+
baseArgs.push('--region', this.region);
|
|
166
|
+
}
|
|
167
|
+
baseArgs.push('--output', 'json');
|
|
168
|
+
const fullArgs = [...baseArgs, ...args];
|
|
169
|
+
this.logger?.verbose(`Running command: ${fullArgs.join(' ')}`);
|
|
170
|
+
const child = (0, child_process_1.spawn)(fullArgs[0], fullArgs.slice(1), {
|
|
171
|
+
stdio: ['inherit', 'pipe', 'pipe'],
|
|
172
|
+
});
|
|
173
|
+
let stdout = '';
|
|
174
|
+
let stderr = '';
|
|
175
|
+
child.stdout?.on('data', (data) => {
|
|
176
|
+
stdout += data.toString();
|
|
177
|
+
});
|
|
178
|
+
child.stderr?.on('data', (data) => {
|
|
179
|
+
stderr += data.toString();
|
|
180
|
+
});
|
|
181
|
+
child.on('close', (code) => {
|
|
182
|
+
if (code === 0) {
|
|
183
|
+
resolve(stdout);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
reject(new Error(`AWS CLI command failed (exit code ${code}): ${stderr || stdout}`));
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
child.on('error', (error) => {
|
|
190
|
+
reject(new Error(`Failed to spawn AWS CLI: ${error.message}`));
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
exports.AwsCliManager = AwsCliManager;
|
|
196
|
+
//# sourceMappingURL=aws-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aws-cli.js","sourceRoot":"","sources":["../../src/utils/aws-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Logger } from './logger';
|
|
2
|
+
export interface LambdaConfig {
|
|
3
|
+
runtime: string;
|
|
4
|
+
handler: string;
|
|
5
|
+
role: string;
|
|
6
|
+
architecture?: string;
|
|
7
|
+
memory?: number;
|
|
8
|
+
timeout?: number;
|
|
9
|
+
description?: string;
|
|
10
|
+
reserved_concurrency?: number;
|
|
11
|
+
provisioned_concurrency?: number;
|
|
12
|
+
ephemeral_storage?: number;
|
|
13
|
+
files?: string[];
|
|
14
|
+
environment?: Record<string, string>;
|
|
15
|
+
layers?: string[];
|
|
16
|
+
vpc?: {
|
|
17
|
+
subnets: string[];
|
|
18
|
+
security_groups: string[];
|
|
19
|
+
};
|
|
20
|
+
dead_letter_queue?: {
|
|
21
|
+
target_arn: string;
|
|
22
|
+
};
|
|
23
|
+
tags?: Record<string, string>;
|
|
24
|
+
log_retention_days?: number;
|
|
25
|
+
auto_create_log_group?: boolean;
|
|
26
|
+
zip_excludes?: string[];
|
|
27
|
+
}
|
|
28
|
+
export interface DeployConfig {
|
|
29
|
+
runtime?: string;
|
|
30
|
+
handler?: string;
|
|
31
|
+
role?: string;
|
|
32
|
+
}
|
|
33
|
+
export declare class ConfigManager {
|
|
34
|
+
private functionName;
|
|
35
|
+
private params;
|
|
36
|
+
private logger;
|
|
37
|
+
constructor(functionName: string, params: Record<string, string>, logger: Logger);
|
|
38
|
+
loadConfig(overrides: DeployConfig): Promise<LambdaConfig>;
|
|
39
|
+
private substituteVariables;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE;QACJ,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;IACF,iBAAiB,CAAC,EAAE;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAG9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,aAAa;IAEtB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;gBAFN,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,MAAM,EAAE,MAAM;IAGlB,UAAU,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IA8ChE,OAAO,CAAC,mBAAmB;CAkC5B"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ConfigManager = void 0;
|
|
37
|
+
const fs = __importStar(require("fs/promises"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const yaml = __importStar(require("yaml"));
|
|
40
|
+
class ConfigManager {
|
|
41
|
+
constructor(functionName, params, logger) {
|
|
42
|
+
this.functionName = functionName;
|
|
43
|
+
this.params = params;
|
|
44
|
+
this.logger = logger;
|
|
45
|
+
}
|
|
46
|
+
async loadConfig(overrides) {
|
|
47
|
+
const yamlPath = path.join(process.cwd(), `${this.functionName}.yaml`);
|
|
48
|
+
let yamlConfig = {};
|
|
49
|
+
// Try to load YAML config
|
|
50
|
+
try {
|
|
51
|
+
const yamlContent = await fs.readFile(yamlPath, 'utf-8');
|
|
52
|
+
const parsedYaml = yaml.parse(yamlContent);
|
|
53
|
+
yamlConfig = this.substituteVariables(parsedYaml);
|
|
54
|
+
this.logger.verbose(`Loaded YAML config from: ${yamlPath}`);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
this.logger.verbose(`No YAML config found at: ${yamlPath}`);
|
|
58
|
+
}
|
|
59
|
+
// Set defaults
|
|
60
|
+
const defaultHandler = `${this.functionName}.handler`;
|
|
61
|
+
const config = {
|
|
62
|
+
runtime: overrides.runtime || yamlConfig.runtime || 'python3.12',
|
|
63
|
+
handler: overrides.handler || yamlConfig.handler || defaultHandler,
|
|
64
|
+
role: overrides.role || yamlConfig.role || '',
|
|
65
|
+
architecture: yamlConfig.architecture || 'x86_64',
|
|
66
|
+
memory: yamlConfig.memory || 128,
|
|
67
|
+
timeout: yamlConfig.timeout || 3,
|
|
68
|
+
description: yamlConfig.description,
|
|
69
|
+
reserved_concurrency: yamlConfig.reserved_concurrency,
|
|
70
|
+
provisioned_concurrency: yamlConfig.provisioned_concurrency,
|
|
71
|
+
ephemeral_storage: yamlConfig.ephemeral_storage,
|
|
72
|
+
files: yamlConfig.files || ['.'],
|
|
73
|
+
environment: yamlConfig.environment || {},
|
|
74
|
+
layers: yamlConfig.layers || [],
|
|
75
|
+
vpc: yamlConfig.vpc,
|
|
76
|
+
dead_letter_queue: yamlConfig.dead_letter_queue,
|
|
77
|
+
tags: yamlConfig.tags || {},
|
|
78
|
+
log_retention_days: yamlConfig.log_retention_days || 7,
|
|
79
|
+
auto_create_log_group: yamlConfig.auto_create_log_group !== false,
|
|
80
|
+
zip_excludes: yamlConfig.zip_excludes || ['*.git*', 'node_modules/*', '*.zip', 'dist/*', '.DS_Store'],
|
|
81
|
+
};
|
|
82
|
+
// Validate required fields
|
|
83
|
+
if (!config.role) {
|
|
84
|
+
throw new Error('IAM role ARN is required. Specify with --role option or in YAML config.');
|
|
85
|
+
}
|
|
86
|
+
return config;
|
|
87
|
+
}
|
|
88
|
+
substituteVariables(obj) {
|
|
89
|
+
if (typeof obj === 'string') {
|
|
90
|
+
// Replace $key with params
|
|
91
|
+
let result = obj;
|
|
92
|
+
for (const [key, value] of Object.entries(this.params)) {
|
|
93
|
+
result = result.replace(new RegExp(`\\$${key}\\b`, 'g'), value);
|
|
94
|
+
}
|
|
95
|
+
// Replace ${ENV_VAR} with environment variables
|
|
96
|
+
result = result.replace(/\$\{([^}]+)\}/g, (match, envVar) => {
|
|
97
|
+
const envValue = process.env[envVar];
|
|
98
|
+
if (envValue === undefined) {
|
|
99
|
+
throw new Error(`Environment variable ${envVar} is not defined`);
|
|
100
|
+
}
|
|
101
|
+
return envValue;
|
|
102
|
+
});
|
|
103
|
+
return result;
|
|
104
|
+
}
|
|
105
|
+
if (Array.isArray(obj)) {
|
|
106
|
+
return obj.map(item => this.substituteVariables(item));
|
|
107
|
+
}
|
|
108
|
+
if (obj && typeof obj === 'object') {
|
|
109
|
+
const result = {};
|
|
110
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
111
|
+
result[key] = this.substituteVariables(value);
|
|
112
|
+
}
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
return obj;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
exports.ConfigManager = ConfigManager;
|
|
119
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare class Logger {
|
|
2
|
+
private isVerbose;
|
|
3
|
+
constructor(isVerbose?: boolean);
|
|
4
|
+
info(message: string): void;
|
|
5
|
+
success(message: string): void;
|
|
6
|
+
error(message: string): void;
|
|
7
|
+
warning(message: string): void;
|
|
8
|
+
verbose(message: string, data?: any): void;
|
|
9
|
+
debug(message: string, data?: any): void;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAEA,qBAAa,MAAM;IACL,OAAO,CAAC,SAAS;gBAAT,SAAS,GAAE,OAAe;IAE9C,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9B,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAS1C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;CAQzC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
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
|
+
exports.Logger = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
class Logger {
|
|
9
|
+
constructor(isVerbose = false) {
|
|
10
|
+
this.isVerbose = isVerbose;
|
|
11
|
+
}
|
|
12
|
+
info(message) {
|
|
13
|
+
console.log(chalk_1.default.blue('ℹ'), message);
|
|
14
|
+
}
|
|
15
|
+
success(message) {
|
|
16
|
+
console.log(message);
|
|
17
|
+
}
|
|
18
|
+
error(message) {
|
|
19
|
+
console.error(chalk_1.default.red('✗'), message);
|
|
20
|
+
}
|
|
21
|
+
warning(message) {
|
|
22
|
+
console.warn(chalk_1.default.yellow('⚠'), message);
|
|
23
|
+
}
|
|
24
|
+
verbose(message, data) {
|
|
25
|
+
if (this.isVerbose) {
|
|
26
|
+
console.log(chalk_1.default.gray('🔍'), chalk_1.default.gray(message));
|
|
27
|
+
if (data) {
|
|
28
|
+
console.log(chalk_1.default.gray(JSON.stringify(data, null, 2)));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
debug(message, data) {
|
|
33
|
+
if (this.isVerbose) {
|
|
34
|
+
console.log(chalk_1.default.magenta('🐛'), chalk_1.default.magenta(message));
|
|
35
|
+
if (data) {
|
|
36
|
+
console.log(chalk_1.default.magenta(JSON.stringify(data, null, 2)));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.Logger = Logger;
|
|
42
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,MAAa,MAAM;IACjB,YAAoB,YAAqB,KAAK;QAA1B,cAAS,GAAT,SAAS,CAAiB;IAAG,CAAC;IAElD,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,OAAe,EAAE,IAAU;QACjC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACnD,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAAU;QAC/B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,eAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YACzD,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;CACF;AApCD,wBAoCC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { LambdaConfig } from './config';
|
|
2
|
+
import { Logger } from './logger';
|
|
3
|
+
export declare class ScriptGenerator {
|
|
4
|
+
private logger;
|
|
5
|
+
constructor(logger: Logger);
|
|
6
|
+
generateDeployScript(functionName: string, config: LambdaConfig): string;
|
|
7
|
+
private generateEnvironmentSection;
|
|
8
|
+
private generateZipSection;
|
|
9
|
+
private generateEnvironmentVariablesSection;
|
|
10
|
+
private generateLayersSection;
|
|
11
|
+
private generateEnvironmentVariablesFlag;
|
|
12
|
+
private generateLayersFlag;
|
|
13
|
+
private generateDescriptionFlag;
|
|
14
|
+
private generateAdditionalConfigurationCommands;
|
|
15
|
+
private generateLogGroupSection;
|
|
16
|
+
saveScript(outputPath: string, script: string): Promise<string>;
|
|
17
|
+
cleanupScript(scriptPath: string): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=script-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-generator.d.ts","sourceRoot":"","sources":["../../src/utils/script-generator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBAAa,eAAe;IACd,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAElC,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM;IAkDxE,OAAO,CAAC,0BAA0B;IAIlC,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,mCAAmC;IAqB3C,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,gCAAgC;IAOxC,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,uCAAuC;IA0C/C,OAAO,CAAC,uBAAuB;IAuBzB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO/D,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAQvD"}
|