@payfit/nx-core 5.22.0-ephemeral-local-docker-exec.4 → 5.22.0-ephemeral-local-docker-exec.6
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/dist/src/executors/lambda-local-invoke/README.md +136 -0
- package/dist/src/executors/lambda-local-invoke/executor.js +100 -85
- package/dist/src/executors/lambda-local-invoke/executor.js.map +1 -1
- package/dist/src/executors/lambda-local-invoke/schema.json +19 -17
- package/dist/src/executors/release/executor.js +62 -32
- package/dist/src/executors/release/executor.js.map +1 -1
- package/dist/src/index.js +22 -12
- package/dist/src/index.js.map +1 -1
- package/dist/src/utils/common/types.d.ts +1 -0
- package/dist/src/utils/lambda/local-invoke.d.ts +7 -2
- package/dist/src/utils/lambda/local-invoke.js +51 -24
- package/dist/src/utils/lambda/local-invoke.js.map +1 -1
- package/generators.json +0 -5
- package/package.json +5 -5
- package/dist/src/generators/local-lambda-setup/local-lambda-setup.d.ts +0 -8
- package/dist/src/generators/local-lambda-setup/local-lambda-setup.js +0 -48
- package/dist/src/generators/local-lambda-setup/local-lambda-setup.js.map +0 -1
- package/dist/src/generators/local-lambda-setup/schema.json +0 -24
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# Lambda Local Invoke Executor
|
|
2
|
+
|
|
3
|
+
This executor runs a ZIP-based Lambda locally by starting the public AWS Lambda base image with the project's built output mounted into the container.
|
|
4
|
+
|
|
5
|
+
It is used by inferred Nx targets generated by `@payfit/nx-core` for Lambda projects that are not Docker-packaged.
|
|
6
|
+
|
|
7
|
+
## What It Does
|
|
8
|
+
|
|
9
|
+
For each invocation, the executor:
|
|
10
|
+
|
|
11
|
+
1. Resolves the current project from the Nx executor context.
|
|
12
|
+
2. Resolves the app build output directory.
|
|
13
|
+
3. Reads the Lambda Terraform configuration from `.deploy/infrastructure/**/*.tf` to discover runtime and handler.
|
|
14
|
+
4. Chooses the Docker image from the Lambda runtime unless an explicit image override is provided.
|
|
15
|
+
5. Resolves the event payload file and optional env file.
|
|
16
|
+
6. Starts a temporary Docker container exposing the Lambda runtime locally.
|
|
17
|
+
7. Waits until the runtime is listening.
|
|
18
|
+
8. Invokes the Lambda through the local runtime HTTP endpoint.
|
|
19
|
+
9. Logs the raw response or writes the response body to a file.
|
|
20
|
+
10. Removes the container even if invocation fails.
|
|
21
|
+
|
|
22
|
+
## How it works
|
|
23
|
+
|
|
24
|
+
### 1. Project Metadata
|
|
25
|
+
|
|
26
|
+
For inferred invoke targets, the plugin reads `project.json` metadata and creates targets in the form:
|
|
27
|
+
|
|
28
|
+
- `invoke:<lambdaName>:<eventName>`
|
|
29
|
+
|
|
30
|
+
The most relevant metadata input is:
|
|
31
|
+
|
|
32
|
+
```json
|
|
33
|
+
{
|
|
34
|
+
"metadata": {
|
|
35
|
+
"lambdaFunctions": [
|
|
36
|
+
{
|
|
37
|
+
"name": "my-lambda",
|
|
38
|
+
"healthCheckPayload": "{\"body\":\"healthcheck\"}",
|
|
39
|
+
"writeResponseBodyToFile": true
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
When `writeResponseBodyToFile` is `true`, the inferred target gets a deterministic `responseBodyOutputFile` option (more details below)
|
|
47
|
+
|
|
48
|
+
### 3. Event Files On Disk
|
|
49
|
+
|
|
50
|
+
Inferred invoke targets are created from JSON files found in:
|
|
51
|
+
|
|
52
|
+
- `<projectRoot>/events/<lambdaName>/*.json`
|
|
53
|
+
|
|
54
|
+
Each file becomes a separate invoke target.
|
|
55
|
+
|
|
56
|
+
Example:
|
|
57
|
+
|
|
58
|
+
- `apps/my-app/events/my-lambda/healthcheck.json`
|
|
59
|
+
- `apps/my-app/events/my-lambda/sample.json`
|
|
60
|
+
|
|
61
|
+
This produces:
|
|
62
|
+
|
|
63
|
+
- `invoke:my-lambda:healthcheck`
|
|
64
|
+
- `invoke:my-lambda:sample`
|
|
65
|
+
|
|
66
|
+
### 4. Terraform Configuration
|
|
67
|
+
|
|
68
|
+
The executor reads Terraform files from:
|
|
69
|
+
|
|
70
|
+
- `<projectRoot>/.deploy/infrastructure/**/*.tf`
|
|
71
|
+
|
|
72
|
+
It looks for the module matching the Lambda name and uses that to derive:
|
|
73
|
+
|
|
74
|
+
- runtime
|
|
75
|
+
- handler
|
|
76
|
+
- environment variable keys
|
|
77
|
+
- secret keys
|
|
78
|
+
- SSM parameter keys
|
|
79
|
+
|
|
80
|
+
If no Terraform module matching the Lambda name is found, the executor fails.
|
|
81
|
+
|
|
82
|
+
## Env File Resolution
|
|
83
|
+
|
|
84
|
+
The executor resolves the env file in this order:
|
|
85
|
+
|
|
86
|
+
1. Explicit `envFile` option.
|
|
87
|
+
2. Event-local env file next to the payload: `.env.<eventName>`.
|
|
88
|
+
3. Event-folder default env file: `.env.default`.
|
|
89
|
+
|
|
90
|
+
When an env file exists, the executor compares its keys with the Terraform-declared environment-related keys and logs drift warnings for:
|
|
91
|
+
|
|
92
|
+
- missing local keys that exist in Terraform
|
|
93
|
+
- extra local keys that do not exist in Terraform
|
|
94
|
+
|
|
95
|
+
## Docker Runtime Behavior
|
|
96
|
+
|
|
97
|
+
The executor starts a temporary container with:
|
|
98
|
+
|
|
99
|
+
- the built dist folder mounted read-only at `/var/task`
|
|
100
|
+
- AWS credential mounts and environment forwarding when available
|
|
101
|
+
- `AWS_REGION` and `AWS_DEFAULT_REGION` set
|
|
102
|
+
- port `8080` inside the container bound to a local host port
|
|
103
|
+
|
|
104
|
+
The image is resolved from the Terraform runtime when possible. For example, `nodejs22.x` maps to `public.ecr.aws/lambda/nodejs:22`.
|
|
105
|
+
|
|
106
|
+
## Response Handling
|
|
107
|
+
|
|
108
|
+
After invocation, the executor reads the HTTP response body as text.
|
|
109
|
+
|
|
110
|
+
It then:
|
|
111
|
+
|
|
112
|
+
1. Tries to parse the response as JSON.
|
|
113
|
+
2. Fails if the parsed object contains `errorType` or `errorMessage`.
|
|
114
|
+
3. If `responseBodyOutputFile` is set, writes only the response `body` field.
|
|
115
|
+
4. Otherwise logs the raw response text.
|
|
116
|
+
|
|
117
|
+
Important constraint:
|
|
118
|
+
|
|
119
|
+
- `responseBodyOutputFile` only works when the Lambda response is an object with a string `body` field.
|
|
120
|
+
|
|
121
|
+
If the response does not have that shape, the executor throws an error.
|
|
122
|
+
|
|
123
|
+
## Deterministic Response Output Path
|
|
124
|
+
|
|
125
|
+
When `metadata.lambdaFunctions[].writeResponseBodyToFile` is set to `true`, the inferred target uses a deterministic path:
|
|
126
|
+
|
|
127
|
+
- `tmp/lambda-local-invoke/<projectRoot>/<lambdaName>/<eventName>.response`
|
|
128
|
+
|
|
129
|
+
Example:
|
|
130
|
+
|
|
131
|
+
- project root: `apps/my-app`
|
|
132
|
+
- lambda name: `my-lambda`
|
|
133
|
+
- event file: `apps/my-app/events/my-lambda/healthcheck.json`
|
|
134
|
+
- output file: `tmp/lambda-local-invoke/apps/my-app/my-lambda/healthcheck.response`
|
|
135
|
+
|
|
136
|
+
This keeps local invocation outputs predictable and avoids storing arbitrary paths in project metadata.
|
|
@@ -12,6 +12,35 @@ const local_invoke_1 = require("../../utils/lambda/local-invoke");
|
|
|
12
12
|
function sanitizeName(value) {
|
|
13
13
|
return value.replace(/[^a-zA-Z0-9_.-]/g, '-').slice(0, 63);
|
|
14
14
|
}
|
|
15
|
+
function getEventEnvFilePath(eventFilePath) {
|
|
16
|
+
return (0, node_path_1.join)((0, node_path_1.dirname)(eventFilePath), `.env.${(0, node_path_1.basename)(eventFilePath, '.json')}`);
|
|
17
|
+
}
|
|
18
|
+
function getDefaultEventEnvFilePath(eventFilePath) {
|
|
19
|
+
return (0, node_path_1.join)((0, node_path_1.dirname)(eventFilePath), '.env.default');
|
|
20
|
+
}
|
|
21
|
+
function resolveEnvFilePath(eventFilePath, envFile) {
|
|
22
|
+
if (envFile) {
|
|
23
|
+
return (0, local_invoke_1.resolveLocalInvokePath)(envFile, envFile);
|
|
24
|
+
}
|
|
25
|
+
const eventEnvFilePath = getEventEnvFilePath(eventFilePath);
|
|
26
|
+
if (fs.existsSync(eventEnvFilePath)) {
|
|
27
|
+
return eventEnvFilePath;
|
|
28
|
+
}
|
|
29
|
+
const defaultEventEnvFilePath = getDefaultEventEnvFilePath(eventFilePath);
|
|
30
|
+
if (fs.existsSync(defaultEventEnvFilePath)) {
|
|
31
|
+
return defaultEventEnvFilePath;
|
|
32
|
+
}
|
|
33
|
+
return defaultEventEnvFilePath;
|
|
34
|
+
}
|
|
35
|
+
function warnOnEnvFileDrift(lambdaName, envFilePath, envFileContent, lambdaTerraformConfiguration) {
|
|
36
|
+
const { missingKeys, extraKeys } = (0, local_invoke_1.getLambdaEnvironmentDrift)(lambdaTerraformConfiguration, envFileContent);
|
|
37
|
+
if (missingKeys.length > 0) {
|
|
38
|
+
logger_1.consola.warn(`Env file drift detected for ${lambdaName} at ${envFilePath}: missing Terraform keys ${missingKeys.join(', ')}`);
|
|
39
|
+
}
|
|
40
|
+
if (extraKeys.length > 0) {
|
|
41
|
+
logger_1.consola.warn(`Env file drift detected for ${lambdaName} at ${envFilePath}: extra local keys ${extraKeys.join(', ')}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
15
44
|
async function waitForLambdaRuntime(port, timeoutMs) {
|
|
16
45
|
const deadline = Date.now() + timeoutMs;
|
|
17
46
|
while (Date.now() < deadline) {
|
|
@@ -81,100 +110,86 @@ const runExecutor = async (options, context) => {
|
|
|
81
110
|
if (!projectNode) {
|
|
82
111
|
throw new Error(`Project ${projectName} not found in project graph`);
|
|
83
112
|
}
|
|
84
|
-
if ((options.eventFile || options.envFile || options.responseBodyOutputFile) &&
|
|
85
|
-
!options.lambdaName &&
|
|
86
|
-
(options.lambdaFunctions?.length ?? 0) > 1) {
|
|
87
|
-
throw new Error('eventFile, envFile and responseBodyOutputFile require lambdaName when several lambdas are declared');
|
|
88
|
-
}
|
|
89
113
|
const projectRoot = projectNode.data.root;
|
|
90
114
|
const distDir = await (0, nx_1.getDistForApp)(context);
|
|
91
|
-
const
|
|
115
|
+
const lambdaFunction = options.lambdaFunction;
|
|
116
|
+
const eventFilePath = options.eventFile;
|
|
92
117
|
const region = options.region ?? 'eu-west-3';
|
|
93
118
|
const startupTimeoutMs = options.startupTimeoutMs ?? 15000;
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
119
|
+
const lambdaTerraformConfiguration = await (0, local_invoke_1.getLambdaTerraformConfigurationFromWorkspace)(projectRoot, lambdaFunction.name);
|
|
120
|
+
if (!lambdaTerraformConfiguration) {
|
|
121
|
+
throw new Error(`Terraform configuration not found for lambda ${lambdaFunction.name}`);
|
|
122
|
+
}
|
|
123
|
+
const image = (0, local_invoke_1.resolveLambdaBaseImage)(lambdaTerraformConfiguration.config.runtime, options.image);
|
|
124
|
+
const port = options.port ?? (await (0, get_port_1.default)());
|
|
125
|
+
const envFilePath = resolveEnvFilePath(eventFilePath, options.envFile);
|
|
126
|
+
const responseBodyOutputFile = options.responseBodyOutputFile
|
|
127
|
+
? (0, local_invoke_1.resolveLocalInvokePath)(options.responseBodyOutputFile, options.responseBodyOutputFile)
|
|
128
|
+
: undefined;
|
|
129
|
+
const eventPayload = fs.readFileSync(eventFilePath, 'utf8');
|
|
130
|
+
const containerName = sanitizeName(`nx-local-${projectName}-${lambdaFunction.name}-${(0, node_path_1.basename)(eventFilePath, '.json')}-${port}`);
|
|
131
|
+
const dockerArgs = [
|
|
132
|
+
'run',
|
|
133
|
+
'--rm',
|
|
134
|
+
'-d',
|
|
135
|
+
'--name',
|
|
136
|
+
containerName,
|
|
137
|
+
'-p',
|
|
138
|
+
`127.0.0.1:${port}:8080`,
|
|
139
|
+
'-v',
|
|
140
|
+
`${distDir}:/var/task:ro`,
|
|
141
|
+
...(0, local_invoke_1.getAwsCredentialMountArgs)(),
|
|
142
|
+
...(0, local_invoke_1.getAwsCredentialEnvVars)(process.env),
|
|
143
|
+
'-e',
|
|
144
|
+
`AWS_REGION=${region}`,
|
|
145
|
+
'-e',
|
|
146
|
+
`AWS_DEFAULT_REGION=${region}`,
|
|
147
|
+
];
|
|
148
|
+
if (fs.existsSync(envFilePath)) {
|
|
149
|
+
const envFileContent = fs.readFileSync(envFilePath, 'utf8');
|
|
150
|
+
warnOnEnvFileDrift(lambdaFunction.name, envFilePath, envFileContent, lambdaTerraformConfiguration);
|
|
151
|
+
dockerArgs.push('--env-file', envFilePath);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
logger_1.consola.warn(`No env file found for ${lambdaFunction.name}: ${envFilePath}`);
|
|
155
|
+
}
|
|
156
|
+
dockerArgs.push(image, lambdaTerraformConfiguration.config.handler);
|
|
157
|
+
logger_1.consola.start(`Starting local Lambda ${lambdaFunction.name} with ${image}`);
|
|
158
|
+
try {
|
|
159
|
+
await (0, exec_1.exec)(`docker rm -f ${containerName}`, { throwOnError: false });
|
|
160
|
+
const startResult = await (0, exec_1.exec)(`docker ${dockerArgs.join(' ')}`, {
|
|
161
|
+
throwOnError: true,
|
|
162
|
+
nodeOptions: { cwd: devkit_1.workspaceRoot },
|
|
163
|
+
});
|
|
164
|
+
if (startResult.exitCode !== 0) {
|
|
165
|
+
throw new Error(startResult.stderr);
|
|
98
166
|
}
|
|
99
|
-
|
|
100
|
-
const
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const responseBodyOutputFile = options.responseBodyOutputFile
|
|
106
|
-
? (0, local_invoke_1.resolveLocalInvokePath)(options.responseBodyOutputFile, options.responseBodyOutputFile)
|
|
107
|
-
: undefined;
|
|
108
|
-
const eventPayload = eventFilePath
|
|
109
|
-
? (() => {
|
|
110
|
-
if (!fs.existsSync(eventFilePath)) {
|
|
111
|
-
throw new Error(`Event file not found for ${lambdaFunction.name}: ${eventFilePath}`);
|
|
112
|
-
}
|
|
113
|
-
return fs.readFileSync(eventFilePath, 'utf8');
|
|
114
|
-
})()
|
|
115
|
-
: lambdaFunction.healthCheckPayload;
|
|
116
|
-
const containerName = sanitizeName(`nx-local-${projectName}-${lambdaFunction.name}-${port}`);
|
|
117
|
-
const dockerArgs = [
|
|
118
|
-
'run',
|
|
119
|
-
'--rm',
|
|
120
|
-
'-d',
|
|
121
|
-
'--name',
|
|
122
|
-
containerName,
|
|
123
|
-
'-p',
|
|
124
|
-
`127.0.0.1:${port}:8080`,
|
|
125
|
-
'-v',
|
|
126
|
-
`${distDir}:/var/task:ro`,
|
|
127
|
-
...(0, local_invoke_1.getAwsCredentialMountArgs)(),
|
|
128
|
-
...(0, local_invoke_1.getAwsCredentialEnvVars)(process.env),
|
|
129
|
-
'-e',
|
|
130
|
-
`AWS_REGION=${region}`,
|
|
131
|
-
'-e',
|
|
132
|
-
`AWS_DEFAULT_REGION=${region}`,
|
|
133
|
-
];
|
|
134
|
-
if (fs.existsSync(envFilePath)) {
|
|
135
|
-
dockerArgs.push('--env-file', envFilePath);
|
|
167
|
+
await waitForLambdaRuntime(port, startupTimeoutMs);
|
|
168
|
+
const invokeResponse = await invokeLocalLambda(port, eventPayload, startupTimeoutMs);
|
|
169
|
+
const rawResponse = await invokeResponse.text();
|
|
170
|
+
let parsedResponse = rawResponse;
|
|
171
|
+
try {
|
|
172
|
+
parsedResponse = JSON.parse(rawResponse);
|
|
136
173
|
}
|
|
137
|
-
|
|
138
|
-
|
|
174
|
+
catch {
|
|
175
|
+
// Some lambdas may respond with a plain string.
|
|
139
176
|
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
const startResult = await (0, exec_1.exec)(`docker ${dockerArgs.join(' ')}`, {
|
|
145
|
-
throwOnError: true,
|
|
146
|
-
nodeOptions: { cwd: devkit_1.workspaceRoot },
|
|
147
|
-
});
|
|
148
|
-
if (startResult.exitCode !== 0) {
|
|
149
|
-
throw new Error(startResult.stderr);
|
|
150
|
-
}
|
|
151
|
-
await waitForLambdaRuntime(port, startupTimeoutMs);
|
|
152
|
-
const invokeResponse = await invokeLocalLambda(port, eventPayload, startupTimeoutMs);
|
|
153
|
-
const rawResponse = await invokeResponse.text();
|
|
154
|
-
let parsedResponse = rawResponse;
|
|
155
|
-
try {
|
|
156
|
-
parsedResponse = JSON.parse(rawResponse);
|
|
157
|
-
}
|
|
158
|
-
catch {
|
|
159
|
-
// Some lambdas may respond with a plain string.
|
|
160
|
-
}
|
|
161
|
-
if (typeof parsedResponse === 'object' &&
|
|
162
|
-
parsedResponse !== null &&
|
|
163
|
-
('errorType' in parsedResponse || 'errorMessage' in parsedResponse)) {
|
|
164
|
-
throw new Error(`Local invocation failed: ${rawResponse}`);
|
|
165
|
-
}
|
|
166
|
-
if (responseBodyOutputFile) {
|
|
167
|
-
writeResponseBodyToFile(parsedResponse, responseBodyOutputFile, options.decodeResponseBodyBase64 ?? false);
|
|
168
|
-
logger_1.consola.success(`Saved response body for ${lambdaFunction.name} to ${responseBodyOutputFile}`);
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
logger_1.consola.log(rawResponse);
|
|
172
|
-
}
|
|
173
|
-
logger_1.consola.success(`Local invocation succeeded for ${lambdaFunction.name}`);
|
|
177
|
+
if (typeof parsedResponse === 'object' &&
|
|
178
|
+
parsedResponse !== null &&
|
|
179
|
+
('errorType' in parsedResponse || 'errorMessage' in parsedResponse)) {
|
|
180
|
+
throw new Error(`Local invocation failed: ${rawResponse}`);
|
|
174
181
|
}
|
|
175
|
-
|
|
176
|
-
|
|
182
|
+
if (responseBodyOutputFile) {
|
|
183
|
+
writeResponseBodyToFile(parsedResponse, responseBodyOutputFile, options.decodeResponseBodyBase64 ?? false);
|
|
184
|
+
logger_1.consola.success(`Saved response body for ${lambdaFunction.name} to ${responseBodyOutputFile}`);
|
|
177
185
|
}
|
|
186
|
+
else {
|
|
187
|
+
logger_1.consola.log(rawResponse);
|
|
188
|
+
}
|
|
189
|
+
logger_1.consola.success(`Local invocation succeeded for ${lambdaFunction.name}`);
|
|
190
|
+
}
|
|
191
|
+
finally {
|
|
192
|
+
await (0, exec_1.exec)(`docker rm -f ${containerName}`, { throwOnError: false });
|
|
178
193
|
}
|
|
179
194
|
return { success: true };
|
|
180
195
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../src/executors/lambda-local-invoke/executor.ts"],"names":[],"mappings":";;AAAA,8BAA6B;AAC7B,gCAA+B;AAC/B,
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../src/executors/lambda-local-invoke/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,29 +5,30 @@
|
|
|
5
5
|
"description": "Run Lambda functions locally with the public AWS Lambda base image",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"properties": {
|
|
8
|
-
"
|
|
9
|
-
"type": "
|
|
10
|
-
"description": "Lambda
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
"name": {
|
|
15
|
-
"type": "string"
|
|
16
|
-
},
|
|
17
|
-
"healthCheckPayload": {
|
|
18
|
-
"type": "string"
|
|
19
|
-
}
|
|
8
|
+
"lambdaFunction": {
|
|
9
|
+
"type": "object",
|
|
10
|
+
"description": "Lambda function metadata for the invocation target",
|
|
11
|
+
"properties": {
|
|
12
|
+
"name": {
|
|
13
|
+
"type": "string"
|
|
20
14
|
},
|
|
21
|
-
"
|
|
22
|
-
|
|
15
|
+
"healthCheckPayload": {
|
|
16
|
+
"type": "string"
|
|
17
|
+
},
|
|
18
|
+
"writeResponseBodyToFile": {
|
|
19
|
+
"type": "boolean",
|
|
20
|
+
"description": "When true, inferred invoke targets save the response body to a deterministic file under tmp/lambda-local-invoke/<project>/<lambda>/<event>.response"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"required": ["name", "healthCheckPayload"]
|
|
23
24
|
},
|
|
24
25
|
"lambdaName": {
|
|
25
26
|
"type": "string",
|
|
26
|
-
"description": "
|
|
27
|
+
"description": "Optional lambda name override for custom targets"
|
|
27
28
|
},
|
|
28
29
|
"eventFile": {
|
|
29
30
|
"type": "string",
|
|
30
|
-
"description": "
|
|
31
|
+
"description": "Path to the JSON event payload file to invoke with"
|
|
31
32
|
},
|
|
32
33
|
"envFile": {
|
|
33
34
|
"type": "string",
|
|
@@ -60,5 +61,6 @@
|
|
|
60
61
|
"description": "Maximum time to wait for the local Lambda runtime to start",
|
|
61
62
|
"default": 15000
|
|
62
63
|
}
|
|
63
|
-
}
|
|
64
|
+
},
|
|
65
|
+
"required": ["lambdaFunction", "eventFile"]
|
|
64
66
|
}
|
|
@@ -8,6 +8,43 @@ const github_1 = require("../../utils/common/github");
|
|
|
8
8
|
const logger_1 = require("../../utils/common/logger");
|
|
9
9
|
const octokit_1 = require("../../utils/common/octokit");
|
|
10
10
|
const tsh_1 = require("../../utils/common/tsh");
|
|
11
|
+
const getTagForProject = (projectName, newVersion, releaseConfig) => {
|
|
12
|
+
const groupPattern = Object.values(releaseConfig?.groups || {}).find(group => group.projects?.includes(projectName))?.releaseTag?.pattern ||
|
|
13
|
+
Object.values(releaseConfig?.groups || {}).find(group => group.projects?.includes('*'))?.releaseTag?.pattern ||
|
|
14
|
+
releaseConfig?.groups?.[projectName]?.releaseTag?.pattern;
|
|
15
|
+
const pattern = groupPattern ||
|
|
16
|
+
releaseConfig?.releaseTag?.pattern ||
|
|
17
|
+
'{projectName}@{version}';
|
|
18
|
+
return pattern
|
|
19
|
+
.replace('{projectName}', projectName)
|
|
20
|
+
.replace('{version}', newVersion);
|
|
21
|
+
};
|
|
22
|
+
const cleanupProjectsRelease = async (projects, context) => {
|
|
23
|
+
const nxJson = JSON.parse(fs.readFileSync(path.join(context.root, 'nx.json'), 'utf-8'));
|
|
24
|
+
const releaseConfig = nxJson?.release;
|
|
25
|
+
const octokit = (0, octokit_1.OctokitAuth)();
|
|
26
|
+
let repositoryName;
|
|
27
|
+
try {
|
|
28
|
+
repositoryName = await (0, github_1.getGitRepositoryName)();
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
logger_1.consola.error(`Error while retrieving repository name, skipping release removal: ${error}`);
|
|
32
|
+
}
|
|
33
|
+
for (const { projectName, newVersion } of projects) {
|
|
34
|
+
const tag = getTagForProject(projectName, newVersion, releaseConfig);
|
|
35
|
+
try {
|
|
36
|
+
if (repositoryName) {
|
|
37
|
+
await (0, github_1.removeRelease)(octokit, 'PayFit', repositoryName, tag);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
logger_1.consola.error(`Error while removing release for ${projectName}, skipping release removal: ${error}`);
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
await (0, github_1.removeTag)(tag);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
11
48
|
const runExecutor = async (options, context) => {
|
|
12
49
|
let startTime = Date.now();
|
|
13
50
|
const dryRun = process.env.NX_DRY_RUN === 'true' || options.dryRun || false;
|
|
@@ -58,15 +95,29 @@ const runExecutor = async (options, context) => {
|
|
|
58
95
|
startTime = Date.now();
|
|
59
96
|
// Step 2: Changelog Release
|
|
60
97
|
logger_1.consola.start('Generating & pushing changelogs');
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
98
|
+
try {
|
|
99
|
+
await (0, release_1.releaseChangelog)({
|
|
100
|
+
versionData: projectsVersionData,
|
|
101
|
+
projects: changedProjects,
|
|
102
|
+
version: workspaceVersion,
|
|
103
|
+
dryRun,
|
|
104
|
+
verbose: options.verbose,
|
|
105
|
+
groups: options.groups,
|
|
106
|
+
createRelease: isPreRelease ? false : 'github',
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
logger_1.consola.info(`Failed to generate changelogs: ${error}`);
|
|
111
|
+
logger_1.consola.start('Cleaning up created tags and releases');
|
|
112
|
+
if (!dryRun) {
|
|
113
|
+
const projectsToCleanup = changedProjects.flatMap(projectName => {
|
|
114
|
+
const newVersion = projectsVersionData[projectName]?.newVersion;
|
|
115
|
+
return newVersion ? [{ projectName, newVersion }] : [];
|
|
116
|
+
});
|
|
117
|
+
await cleanupProjectsRelease(projectsToCleanup, context);
|
|
118
|
+
}
|
|
119
|
+
return { success: false };
|
|
120
|
+
}
|
|
70
121
|
logger_1.consola.success('Generated & pushed changelogs successfully!');
|
|
71
122
|
if (options.skipPublish) {
|
|
72
123
|
logger_1.consola.warn('Skipping publishing step as skipPublish = true');
|
|
@@ -98,30 +149,9 @@ const runExecutor = async (options, context) => {
|
|
|
98
149
|
logger_1.consola.success(`Published ${projectName} in version ${newVersion} successfully!`);
|
|
99
150
|
}
|
|
100
151
|
else {
|
|
101
|
-
logger_1.consola.
|
|
152
|
+
logger_1.consola.error(`Failed to publish ${projectName} with exit code ${result.code}`);
|
|
102
153
|
if (newVersion && !dryRun) {
|
|
103
|
-
|
|
104
|
-
const nxJson = JSON.parse(fs.readFileSync(path.join(context.root, 'nx.json'), 'utf-8'));
|
|
105
|
-
const releaseConfig = nxJson?.release;
|
|
106
|
-
// Get the tag pattern - check group-specific config first, then fall back to global
|
|
107
|
-
const groupPattern = Object.values(releaseConfig?.groups || {}).find(group => group.projects?.includes(projectName))?.releaseTag?.pattern ||
|
|
108
|
-
Object.values(releaseConfig?.groups || {}).find(group => group.projects?.includes('*'))?.releaseTag?.pattern ||
|
|
109
|
-
releaseConfig?.groups?.[projectName]?.releaseTag?.pattern;
|
|
110
|
-
const pattern = groupPattern ||
|
|
111
|
-
releaseConfig?.releaseTag?.pattern ||
|
|
112
|
-
'{projectName}@{version}';
|
|
113
|
-
const tag = pattern
|
|
114
|
-
.replace('{projectName}', projectName)
|
|
115
|
-
.replace('{version}', newVersion);
|
|
116
|
-
const octokit = (0, octokit_1.OctokitAuth)();
|
|
117
|
-
const repositoryName = await (0, github_1.getGitRepositoryName)();
|
|
118
|
-
if (repositoryName) {
|
|
119
|
-
await (0, github_1.removeRelease)(octokit, 'PayFit', repositoryName, tag);
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
logger_1.consola.error(`Error while retrieving repository name for ${projectName}, skipping release removal`);
|
|
123
|
-
}
|
|
124
|
-
await (0, github_1.removeTag)(tag);
|
|
154
|
+
await cleanupProjectsRelease([{ projectName, newVersion: newVersion }], context);
|
|
125
155
|
}
|
|
126
156
|
success = false;
|
|
127
157
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../src/executors/release/executor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../src/executors/release/executor.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -6,6 +6,7 @@ const path_1 = require("path");
|
|
|
6
6
|
const devkit_1 = require("@nx/devkit");
|
|
7
7
|
const constants_1 = require("./utils/common/constants");
|
|
8
8
|
const nx_1 = require("./utils/common/nx");
|
|
9
|
+
const local_invoke_1 = require("./utils/lambda/local-invoke");
|
|
9
10
|
exports.createNodesV2 = [
|
|
10
11
|
'**/project.json',
|
|
11
12
|
async (configFiles, options, context) => {
|
|
@@ -47,18 +48,27 @@ async function createNodesInternal(configFilePath, options, context) {
|
|
|
47
48
|
inferredOptions.lambdaFunctions[0].name;
|
|
48
49
|
}
|
|
49
50
|
const localInvokeConfig = (0, devkit_1.readJsonFile)((0, path_1.join)(__dirname, '/executors/lambda-local-invoke/schema.json'));
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
51
|
+
for (const lambda of inferredOptions.lambdaFunctions ?? []) {
|
|
52
|
+
for (const eventFilePath of await (0, local_invoke_1.getLambdaEventFiles)(projectRoot, lambda.name)) {
|
|
53
|
+
const eventFileName = (0, path_1.basename)(eventFilePath, '.json');
|
|
54
|
+
targets[`invoke:${lambda.name}:${eventFileName}`] = {
|
|
55
|
+
executor: '@payfit/nx-core:lambda-local-invoke',
|
|
56
|
+
cache: false,
|
|
57
|
+
dependsOn: ['build'],
|
|
58
|
+
options: {
|
|
59
|
+
lambdaFunction: lambda,
|
|
60
|
+
eventFile: eventFilePath,
|
|
61
|
+
responseBodyOutputFile: lambda.writeResponseBodyToFile
|
|
62
|
+
? (0, local_invoke_1.getLambdaResponseBodyOutputFilePath)(projectRoot, lambda.name, eventFilePath)
|
|
63
|
+
: undefined,
|
|
64
|
+
},
|
|
65
|
+
metadata: {
|
|
66
|
+
technologies: ['lambda'],
|
|
67
|
+
description: `${localInvokeConfig.description} - ${eventFilePath}`,
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
62
72
|
}
|
|
63
73
|
if (isFrontendProject) {
|
|
64
74
|
// Fallback for frontendOciRepository
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAgCA,kDAoLC;AApND,+BAA8C;AAE9C,uCAMmB;AAInB,wDAAuD;AACvD,0CAA2D;AAC3D,8DAGoC;AAEvB,QAAA,aAAa,GAA4C;IACpE,iBAAiB;IACjB,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QACtC,OAAO,MAAM,IAAA,6BAAoB,EAC/B,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAC/B,mBAAmB,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,EACnD,WAAW,EACX,OAAO,EACP,OAAO,CACR,CAAA;IACH,CAAC;CACF,CAAA;AAEM,KAAK,UAAU,mBAAmB,CACvC,cAAsB,EACtB,OAA6C,EAC7C,OAA6B;IAE7B,KAAK,OAAO,CAAA;IACZ,MAAM,oBAAoB,GACxB,IAAA,qBAAY,EAAC,cAAc,CAAC,CAAA;IAC9B,MAAM,WAAW,GAAG,IAAA,cAAO,EAAC,cAAc,CAAC,CAAA;IAE3C,MAAM,aAAa,GAAG,IAAA,4BAAuB,EAC3C,WAAW,EACX,oBAAoB,CACrB,CAAA;IAED,MAAM,OAAO,GAAiD,EAAE,CAAA;IAChE,wCAAwC;IACxC,MAAM,eAAe,GAA6B;QAChD,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;QAClB,GAAG,CAAC,oBAAoB,CAAC,QAAQ,IAAI,EAAE,CAAC;KACzC,CAAA;IAED,4CAA4C;IAC5C,MAAM,eAAe,GAAG,aAAa,CAAC,QAAQ,CAAC,wBAAY,CAAC,MAAM,CAAC,CAAA;IACnE,MAAM,eAAe,GAAG,aAAa,CAAC,QAAQ,CAAC,wBAAY,CAAC,MAAM,CAAC,CAAA;IACnE,MAAM,iBAAiB,GAAG,aAAa,CAAC,QAAQ,CAAC,wBAAY,CAAC,QAAQ,CAAC,CAAA;IACvE,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,wBAAY,CAAC,IAAI,CAAC,CAAA;IAC/D,iDAAiD;IAEjD,IAAI,aAAa,EAAE,CAAC;QAClB,0CAA0C;QAC1C,eAAe,CAAC,eAAe;YAC7B,CAAC,OAAO,eAAe,CAAC,eAAe,KAAK,QAAQ;gBAClD,eAAe,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;gBACzC,SAAS,CAAA;IACb,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QACpB,eAAe,CAAC,gBAAgB,GAAG,eAAe,CAAC,gBAAgB,KAAK,IAAI,CAAA;IAC9E,CAAC;IAED,IAAI,eAAe,IAAI,CAAC,eAAe,EAAE,CAAC;QACxC,kDAAkD;QAClD,IACE,CAAC,eAAe,CAAC,mBAAmB;YACpC,eAAe,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EACpC,CAAC;YACD,eAAe,CAAC,mBAAmB;gBACjC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAC3C,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAA,qBAAY,EACpC,IAAA,WAAI,EAAC,SAAS,EAAE,4CAA4C,CAAC,CAC9D,CAAA;QAED,KAAK,MAAM,MAAM,IAAI,eAAe,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC;YAC3D,KAAK,MAAM,aAAa,IAAI,MAAM,IAAA,kCAAmB,EACnD,WAAW,EACX,MAAM,CAAC,IAAI,CACZ,EAAE,CAAC;gBACF,MAAM,aAAa,GAAG,IAAA,eAAQ,EAAC,aAAa,EAAE,OAAO,CAAC,CAAA;gBAEtD,OAAO,CAAC,UAAU,MAAM,CAAC,IAAI,IAAI,aAAa,EAAE,CAAC,GAAG;oBAClD,QAAQ,EAAE,qCAAqC;oBAC/C,KAAK,EAAE,KAAK;oBACZ,SAAS,EAAE,CAAC,OAAO,CAAC;oBACpB,OAAO,EAAE;wBACP,cAAc,EAAE,MAAM;wBACtB,SAAS,EAAE,aAAa;wBACxB,sBAAsB,EAAE,MAAM,CAAC,uBAAuB;4BACpD,CAAC,CAAC,IAAA,kDAAmC,EACjC,WAAW,EACX,MAAM,CAAC,IAAI,EACX,aAAa,CACd;4BACH,CAAC,CAAC,SAAS;qBACd;oBACD,QAAQ,EAAE;wBACR,YAAY,EAAE,CAAC,QAAQ,CAAC;wBACxB,WAAW,EAAE,GAAG,iBAAiB,CAAC,WAAW,MAAM,aAAa,EAAE;qBACnE;iBACF,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,iBAAiB,EAAE,CAAC;QACtB,qCAAqC;QACrC,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC;YAC3C,eAAe,CAAC,qBAAqB,GAAG,oBAAoB,CAAC,IAAI,CAAA;QACnE,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,WAAW,KAAK,GAAG,CAAA;IAEzC,IAAI,OAAoD,CAAA;IAExD,sFAAsF;IACtF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,eAAe,GAAG,IAAA,qBAAY,EAClC,IAAA,WAAI,EAAC,SAAS,EAAE,kCAAkC,CAAC,CACpD,CAAA;QAED,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,iBAAiB,GAAG,IAAA,qBAAY,EACpC,IAAA,WAAI,EAAC,SAAS,EAAE,qCAAqC,CAAC,CACvD,CAAA;YAED,OAAO,CACL,eAAe,CAAC,gBAAgB;gBAC9B,CAAC,CAAC,qBAAqB;gBACvB,CAAC,CAAC,cAAc,CACnB,GAAG;gBACF,QAAQ,EAAE,8BAA8B;gBACxC,KAAK,EAAE,KAAK;gBACZ,qEAAqE;gBACrE,4DAA4D;gBAC5D,MAAM,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;gBACrC,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,eAAe;gBACxB,QAAQ,EAAE;oBACR,oIAAoI;oBACpI,WAAW,EAAE,iBAAiB,EAAE,WAAW;iBAC5C;aACF,CAAA;QACH,CAAC;QAED,OAAO,CAAC,oBAAoB,CAAC,GAAG;YAC9B,iFAAiF;YACjF,QAAQ,EAAE,2BAA2B;YACrC,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,eAAe;YACxB,QAAQ,EAAE;gBACR,YAAY,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,mEAAmE;gBACjH,WAAW,EAAE,eAAe,CAAC,WAAW;aACzC;SACF,CAAA;QACD,IACE,CAAE,oBAAoB,EAAE,OAAO,EAAE,OAAyC;YACxE,EAAE,cAAc,EAClB,CAAC;YACD,OAAO,GAAG;gBACR,4DAA4D;gBAC5D,OAAO,EAAE;oBACP,cAAc,EAAE,gCAAgC;iBACjD;aACF,CAAA;QACH,CAAC;IACH,CAAC;IACD,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,mBAAmB,GAAG,IAAA,qBAAY,EACtC,IAAA,WAAI,EAAC,SAAS,EAAE,uCAAuC,CAAC,CACzD,CAAA;QACD,OAAO,CAAC,gBAAgB,CAAC,GAAG;YAC1B,QAAQ,EAAE,gCAAgC;YAC1C,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE;gBACR,WAAW,EAAE,mBAAmB,CAAC,WAAW;aAC7C;SACF,CAAA;QACD,MAAM,aAAa,GAAG,IAAA,qBAAY,EAChC,IAAA,WAAI,EAAC,SAAS,EAAE,gCAAgC,CAAC,CAClD,CAAA;QACD,OAAO,CAAC,SAAS,CAAC,GAAG;YACnB,QAAQ,EAAE,yBAAyB;YACnC,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE;gBACR,WAAW,EAAE,aAAa,CAAC,WAAW;aACvC;SACF,CAAA;IACH,CAAC;IAED,OAAO;QACL,QAAQ,EAAE;YACR,CAAC,WAAW,CAAC,EAAE;gBACb,OAAO;gBACP,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChC;SACF;KACF,CAAA;AACH,CAAC;AAED,oDAAoD;AAA3C,sGAAA,UAAU,OAAA;AACnB,0CAAmD;AAA1C,qGAAA,cAAc,OAAA;AACvB,sDAAuD;AAA9C,yGAAA,YAAY,OAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Tree } from '@nx/devkit';
|
|
2
|
-
import { LambdaFunction } from '../common/types';
|
|
3
2
|
export interface LambdaTerraformConfiguration {
|
|
4
3
|
environmentVariables: Record<string, string>;
|
|
5
4
|
secrets: Record<string, string>;
|
|
@@ -10,6 +9,7 @@ export interface LambdaTerraformConfiguration {
|
|
|
10
9
|
timeout: number;
|
|
11
10
|
};
|
|
12
11
|
}
|
|
12
|
+
export declare function getLambdaEventFiles(projectRoot: string, lambdaName: string): Promise<string[]>;
|
|
13
13
|
export declare function getLambdaTerraformConfiguration(tree: Tree, projectRoot: string, lambdaName: string): Promise<{
|
|
14
14
|
environmentVariables: Record<string, string>;
|
|
15
15
|
secrets: Record<string, string>;
|
|
@@ -32,8 +32,13 @@ export declare function getLambdaTerraformConfigurationFromWorkspace(projectRoot
|
|
|
32
32
|
} | null>;
|
|
33
33
|
export declare function getLambdaEnvFilePath(projectRoot: string, lambdaName: string): string;
|
|
34
34
|
export declare function getLambdaEventFilePath(projectRoot: string, lambdaName: string): string;
|
|
35
|
+
export declare function getLambdaResponseBodyOutputFilePath(projectRoot: string, lambdaName: string, eventFilePath: string): string;
|
|
35
36
|
export declare function getLambdaEnvironmentKeys(lambdaTerraformConfiguration: LambdaTerraformConfiguration): string[];
|
|
36
|
-
export declare function
|
|
37
|
+
export declare function getEnvFileKeys(envFileContent: string): string[];
|
|
38
|
+
export declare function getLambdaEnvironmentDrift(lambdaTerraformConfiguration: LambdaTerraformConfiguration, envFileContent: string): {
|
|
39
|
+
missingKeys: string[];
|
|
40
|
+
extraKeys: string[];
|
|
41
|
+
};
|
|
37
42
|
export declare function resolveLocalInvokePath(pathValue: string | undefined, fallbackPath: string): string;
|
|
38
43
|
export declare function resolveLambdaBaseImage(runtime: string, image?: string): string;
|
|
39
44
|
export declare function getAwsCredentialEnvVars(env: NodeJS.ProcessEnv): string[];
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getLambdaEventFiles = getLambdaEventFiles;
|
|
3
4
|
exports.getLambdaTerraformConfiguration = getLambdaTerraformConfiguration;
|
|
4
5
|
exports.getLambdaTerraformConfigurationFromWorkspace = getLambdaTerraformConfigurationFromWorkspace;
|
|
5
6
|
exports.getLambdaEnvFilePath = getLambdaEnvFilePath;
|
|
6
7
|
exports.getLambdaEventFilePath = getLambdaEventFilePath;
|
|
8
|
+
exports.getLambdaResponseBodyOutputFilePath = getLambdaResponseBodyOutputFilePath;
|
|
7
9
|
exports.getLambdaEnvironmentKeys = getLambdaEnvironmentKeys;
|
|
8
|
-
exports.
|
|
10
|
+
exports.getEnvFileKeys = getEnvFileKeys;
|
|
11
|
+
exports.getLambdaEnvironmentDrift = getLambdaEnvironmentDrift;
|
|
9
12
|
exports.resolveLocalInvokePath = resolveLocalInvokePath;
|
|
10
13
|
exports.resolveLambdaBaseImage = resolveLambdaBaseImage;
|
|
11
14
|
exports.getAwsCredentialEnvVars = getAwsCredentialEnvVars;
|
|
@@ -32,6 +35,17 @@ function hasModuleRecord(ast) {
|
|
|
32
35
|
typeof ast.module === 'object' &&
|
|
33
36
|
ast.module !== null);
|
|
34
37
|
}
|
|
38
|
+
async function getLambdaEventFiles(projectRoot, lambdaName) {
|
|
39
|
+
const eventFilesFolder = (0, node_path_1.join)(devkit_1.workspaceRoot, projectRoot, 'events', `${lambdaName}`);
|
|
40
|
+
if (fs.existsSync(eventFilesFolder) &&
|
|
41
|
+
fs.lstatSync(eventFilesFolder).isDirectory()) {
|
|
42
|
+
const files = fs.readdirSync(eventFilesFolder);
|
|
43
|
+
return files
|
|
44
|
+
.filter(file => file.endsWith('.json'))
|
|
45
|
+
.map(file => (0, node_path_1.join)(eventFilesFolder, file));
|
|
46
|
+
}
|
|
47
|
+
return [];
|
|
48
|
+
}
|
|
35
49
|
async function getLambdaTerraformConfiguration(tree, projectRoot, lambdaName) {
|
|
36
50
|
const terraformFiles = await (0, devkit_1.globAsync)(tree, [
|
|
37
51
|
`${projectRoot}/.deploy/infrastructure/**/*.tf`,
|
|
@@ -86,6 +100,9 @@ function getLambdaEnvFilePath(projectRoot, lambdaName) {
|
|
|
86
100
|
function getLambdaEventFilePath(projectRoot, lambdaName) {
|
|
87
101
|
return (0, node_path_1.join)(devkit_1.workspaceRoot, projectRoot, 'events', `${lambdaName}.json`);
|
|
88
102
|
}
|
|
103
|
+
function getLambdaResponseBodyOutputFilePath(projectRoot, lambdaName, eventFilePath) {
|
|
104
|
+
return (0, node_path_1.join)(devkit_1.workspaceRoot, 'tmp', 'lambda-local-invoke', projectRoot, lambdaName, `${(0, node_path_1.basename)(eventFilePath, '.json')}.response`);
|
|
105
|
+
}
|
|
89
106
|
function getLambdaEnvironmentKeys(lambdaTerraformConfiguration) {
|
|
90
107
|
return [
|
|
91
108
|
...Object.keys(lambdaTerraformConfiguration.environmentVariables),
|
|
@@ -93,18 +110,40 @@ function getLambdaEnvironmentKeys(lambdaTerraformConfiguration) {
|
|
|
93
110
|
...Object.keys(lambdaTerraformConfiguration.ssmParameters),
|
|
94
111
|
].filter(key => !key.startsWith('DD'));
|
|
95
112
|
}
|
|
96
|
-
function
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
113
|
+
function getEnvFileKeys(envFileContent) {
|
|
114
|
+
const envKeys = new Set();
|
|
115
|
+
for (const rawLine of envFileContent.split(/\r?\n/u)) {
|
|
116
|
+
const line = rawLine.trim();
|
|
117
|
+
if (line === '' || line.startsWith('#')) {
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const withoutExport = line.startsWith('export ')
|
|
121
|
+
? line.slice('export '.length).trim()
|
|
122
|
+
: line;
|
|
123
|
+
const separatorIndex = withoutExport.indexOf('=');
|
|
124
|
+
if (separatorIndex === -1) {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
const key = withoutExport.slice(0, separatorIndex).trim();
|
|
128
|
+
if (/^[A-Za-z_][A-Za-z0-9_]*$/u.test(key)) {
|
|
129
|
+
envKeys.add(key);
|
|
130
|
+
}
|
|
106
131
|
}
|
|
107
|
-
return [
|
|
132
|
+
return [...envKeys].sort((left, right) => left.localeCompare(right));
|
|
133
|
+
}
|
|
134
|
+
function getLambdaEnvironmentDrift(lambdaTerraformConfiguration, envFileContent) {
|
|
135
|
+
const terraformKeys = new Set(getLambdaEnvironmentKeys(lambdaTerraformConfiguration));
|
|
136
|
+
const envFileKeys = new Set(getEnvFileKeys(envFileContent));
|
|
137
|
+
const missingKeys = [...terraformKeys]
|
|
138
|
+
.filter(key => !envFileKeys.has(key))
|
|
139
|
+
.sort((left, right) => left.localeCompare(right));
|
|
140
|
+
const extraKeys = [...envFileKeys]
|
|
141
|
+
.filter(key => !terraformKeys.has(key))
|
|
142
|
+
.sort((left, right) => left.localeCompare(right));
|
|
143
|
+
return {
|
|
144
|
+
missingKeys,
|
|
145
|
+
extraKeys,
|
|
146
|
+
};
|
|
108
147
|
}
|
|
109
148
|
function resolveLocalInvokePath(pathValue, fallbackPath) {
|
|
110
149
|
if (!pathValue) {
|
|
@@ -122,18 +161,6 @@ function resolveLambdaBaseImage(runtime, image) {
|
|
|
122
161
|
if (runtime.startsWith('nodejs')) {
|
|
123
162
|
return `public.ecr.aws/lambda/nodejs:${runtime.replace('nodejs', '').replace('.x', '')}`;
|
|
124
163
|
}
|
|
125
|
-
if (runtime.startsWith('python')) {
|
|
126
|
-
return `public.ecr.aws/lambda/python:${runtime.replace('python', '')}`;
|
|
127
|
-
}
|
|
128
|
-
if (runtime.startsWith('java')) {
|
|
129
|
-
return `public.ecr.aws/lambda/java:${runtime.replace('java', '')}`;
|
|
130
|
-
}
|
|
131
|
-
if (runtime.startsWith('dotnet')) {
|
|
132
|
-
return `public.ecr.aws/lambda/dotnet:${runtime.replace('dotnet', '')}`;
|
|
133
|
-
}
|
|
134
|
-
if (runtime.startsWith('provided.')) {
|
|
135
|
-
return `public.ecr.aws/lambda/provided:${runtime.replace('provided.', '')}`;
|
|
136
|
-
}
|
|
137
164
|
throw new Error(`Unsupported runtime ${runtime}. Provide the Docker image explicitly with the image option.`);
|
|
138
165
|
}
|
|
139
166
|
function getAwsCredentialEnvVars(env) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-invoke.js","sourceRoot":"","sources":["../../../../src/utils/lambda/local-invoke.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"local-invoke.js","sourceRoot":"","sources":["../../../../src/utils/lambda/local-invoke.ts"],"names":[],"mappings":"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"}
|
package/generators.json
CHANGED
|
@@ -9,11 +9,6 @@
|
|
|
9
9
|
"factory": "./dist/src/generators/sync/sync-list-lambda-functions",
|
|
10
10
|
"schema": "./dist/src/generators/sync/schema.json",
|
|
11
11
|
"description": "sync-list-lambda-functions generator"
|
|
12
|
-
},
|
|
13
|
-
"local-lambda-setup": {
|
|
14
|
-
"factory": "./dist/src/generators/local-lambda-setup/local-lambda-setup",
|
|
15
|
-
"schema": "./dist/src/generators/local-lambda-setup/schema.json",
|
|
16
|
-
"description": "local-lambda-setup generator"
|
|
17
12
|
}
|
|
18
13
|
}
|
|
19
14
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payfit/nx-core",
|
|
3
|
-
"version": "5.22.0-ephemeral-local-docker-exec.
|
|
3
|
+
"version": "5.22.0-ephemeral-local-docker-exec.6",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
"@aws-sdk/client-ecr-public": "^3.887.0",
|
|
17
17
|
"@cdktf/hcl2json": "0.21.0",
|
|
18
18
|
"@graphql-typed-document-node/core": "^3.2.0",
|
|
19
|
-
"@inquirer/prompts": "^8.0.0",
|
|
20
19
|
"@octokit/auth-app": "^8.0.2",
|
|
21
20
|
"@octokit/rest": "^22.0.0",
|
|
22
21
|
"args-tokenizer": "^0.3.0",
|
|
@@ -39,9 +38,10 @@
|
|
|
39
38
|
},
|
|
40
39
|
"devDependencies": {
|
|
41
40
|
"@graphql-codegen/cli": "^6.0.0",
|
|
42
|
-
"@
|
|
43
|
-
"@nx/
|
|
44
|
-
"@nx/
|
|
41
|
+
"@inquirer/prompts": "^8.0.0",
|
|
42
|
+
"@nx/devkit": "22.5.4",
|
|
43
|
+
"@nx/plugin": "22.5.4",
|
|
44
|
+
"@nx/vite": "22.5.4",
|
|
45
45
|
"memfs": "4.56.11",
|
|
46
46
|
"portfinder": "^1.0.32",
|
|
47
47
|
"verdaccio": "^6.1.6",
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Tree } from '@nx/devkit';
|
|
2
|
-
import { getLambdaTerraformConfiguration, LambdaTerraformConfiguration } from '../../utils/lambda/local-invoke';
|
|
3
|
-
import { LocalLambdaSetupGeneratorSchema } from './schema';
|
|
4
|
-
export { getLambdaTerraformConfiguration };
|
|
5
|
-
export declare function createEnvFile(tree: Tree, projectRoot: string, lambdaName: string, lambdaTerraformConfiguration: LambdaTerraformConfiguration): Promise<void>;
|
|
6
|
-
export declare function createJsonEventFile(tree: Tree, projectRoot: string, lambdaName: string): Promise<void>;
|
|
7
|
-
export declare function localLambdaSetupGenerator(tree: Tree, options: LocalLambdaSetupGeneratorSchema): Promise<void>;
|
|
8
|
-
export default localLambdaSetupGenerator;
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getLambdaTerraformConfiguration = void 0;
|
|
4
|
-
exports.createEnvFile = createEnvFile;
|
|
5
|
-
exports.createJsonEventFile = createJsonEventFile;
|
|
6
|
-
exports.localLambdaSetupGenerator = localLambdaSetupGenerator;
|
|
7
|
-
const prompts_1 = require("@inquirer/prompts");
|
|
8
|
-
const devkit_1 = require("@nx/devkit");
|
|
9
|
-
const local_invoke_1 = require("../../utils/lambda/local-invoke");
|
|
10
|
-
Object.defineProperty(exports, "getLambdaTerraformConfiguration", { enumerable: true, get: function () { return local_invoke_1.getLambdaTerraformConfiguration; } });
|
|
11
|
-
async function createEnvFile(tree, projectRoot, lambdaName, lambdaTerraformConfiguration) {
|
|
12
|
-
const environmentVariables = (0, local_invoke_1.getLambdaEnvironmentKeys)(lambdaTerraformConfiguration);
|
|
13
|
-
if (environmentVariables.length > 0) {
|
|
14
|
-
const environmentVariablesValues = [];
|
|
15
|
-
for (const key of environmentVariables) {
|
|
16
|
-
const value = await (0, prompts_1.input)({ message: `Value for ${key}` });
|
|
17
|
-
environmentVariablesValues.push([key, value]);
|
|
18
|
-
}
|
|
19
|
-
const envFileContent = `${environmentVariablesValues.map(([key, value]) => `${key}=${value}`).join('\n')}`;
|
|
20
|
-
tree.write(`${projectRoot}/.env.${lambdaName}`, envFileContent);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
async function createJsonEventFile(tree, projectRoot, lambdaName) {
|
|
24
|
-
const event = await (0, prompts_1.editor)({
|
|
25
|
-
message: 'Enter a test event (JSON format)',
|
|
26
|
-
});
|
|
27
|
-
try {
|
|
28
|
-
JSON.parse(event);
|
|
29
|
-
}
|
|
30
|
-
catch {
|
|
31
|
-
throw new Error('Invalid JSON event');
|
|
32
|
-
}
|
|
33
|
-
tree.write(`${projectRoot}/events/${lambdaName}.json`, event);
|
|
34
|
-
}
|
|
35
|
-
async function localLambdaSetupGenerator(tree, options) {
|
|
36
|
-
const projectConfiguration = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
|
37
|
-
const lambdaTerraformConfiguration = await (0, local_invoke_1.getLambdaTerraformConfiguration)(tree, projectConfiguration.root, options.lambdaName);
|
|
38
|
-
if (!lambdaTerraformConfiguration) {
|
|
39
|
-
throw new Error('Lambda Terraform configuration not found');
|
|
40
|
-
}
|
|
41
|
-
//Create .env file
|
|
42
|
-
await createEnvFile(tree, projectConfiguration.root, options.lambdaName, lambdaTerraformConfiguration);
|
|
43
|
-
//Create event file
|
|
44
|
-
await createJsonEventFile(tree, projectConfiguration.root, options.lambdaName);
|
|
45
|
-
await (0, devkit_1.formatFiles)(tree);
|
|
46
|
-
}
|
|
47
|
-
exports.default = localLambdaSetupGenerator;
|
|
48
|
-
//# sourceMappingURL=local-lambda-setup.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"local-lambda-setup.js","sourceRoot":"","sources":["../../../../src/generators/local-lambda-setup/local-lambda-setup.ts"],"names":[],"mappings":";;;AAYA,sCAkBC;AAED,kDAcC;AAED,8DA2BC;AA3ED,+CAAiD;AACjD,uCAAwE;AAExE,kEAIwC;AAG/B,gHALP,8CAA+B,OAKO;AAEjC,KAAK,UAAU,aAAa,CACjC,IAAU,EACV,WAAmB,EACnB,UAAkB,EAClB,4BAA0D;IAE1D,MAAM,oBAAoB,GAAG,IAAA,uCAAwB,EACnD,4BAA4B,CAC7B,CAAA;IACD,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,0BAA0B,GAA4B,EAAE,CAAA;QAC9D,KAAK,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,MAAM,IAAA,eAAK,EAAC,EAAE,OAAO,EAAE,aAAa,GAAG,EAAE,EAAE,CAAC,CAAA;YAC1D,0BAA0B,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;QAC/C,CAAC;QACD,MAAM,cAAc,GAAG,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QAC1G,IAAI,CAAC,KAAK,CAAC,GAAG,WAAW,SAAS,UAAU,EAAE,EAAE,cAAc,CAAC,CAAA;IACjE,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,mBAAmB,CACvC,IAAU,EACV,WAAmB,EACnB,UAAkB;IAElB,MAAM,KAAK,GAAG,MAAM,IAAA,gBAAM,EAAC;QACzB,OAAO,EAAE,kCAAkC;KAC5C,CAAC,CAAA;IACF,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;IACvC,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,GAAG,WAAW,WAAW,UAAU,OAAO,EAAE,KAAK,CAAC,CAAA;AAC/D,CAAC;AAEM,KAAK,UAAU,yBAAyB,CAC7C,IAAU,EACV,OAAwC;IAExC,MAAM,oBAAoB,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAE5E,MAAM,4BAA4B,GAAG,MAAM,IAAA,8CAA+B,EACxE,IAAI,EACJ,oBAAoB,CAAC,IAAI,EACzB,OAAO,CAAC,UAAU,CACnB,CAAA;IAED,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;IAC7D,CAAC;IAED,kBAAkB;IAClB,MAAM,aAAa,CACjB,IAAI,EACJ,oBAAoB,CAAC,IAAI,EACzB,OAAO,CAAC,UAAU,EAClB,4BAA4B,CAC7B,CAAA;IAED,mBAAmB;IACnB,MAAM,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;IAC9E,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,kBAAe,yBAAyB,CAAA"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://json-schema.org/schema",
|
|
3
|
-
"$id": "LocalLambdaSetup",
|
|
4
|
-
"title": "",
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"lambdaName": {
|
|
8
|
-
"type": "string",
|
|
9
|
-
"description": "",
|
|
10
|
-
"$default": {
|
|
11
|
-
"$source": "argv",
|
|
12
|
-
"index": 0
|
|
13
|
-
},
|
|
14
|
-
"x-prompt": "Name of the lambda to generate the local setup for"
|
|
15
|
-
},
|
|
16
|
-
"project": {
|
|
17
|
-
"type": "string",
|
|
18
|
-
"description": "The project where the component will be located.",
|
|
19
|
-
"x-prompt": "Which project will this component be located in?",
|
|
20
|
-
"x-dropdown": "projects"
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
"required": ["lambdaName", "project"]
|
|
24
|
-
}
|