cdk-local 0.12.0 → 0.13.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 +6 -5
- package/dist/cli.js +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/{local-start-service-D7VpREhn.js → local-start-service-CorTpgvY.js} +198 -61
- package/dist/local-start-service-CorTpgvY.js.map +1 -0
- package/package.json +1 -1
- package/dist/local-start-service-D7VpREhn.js.map +0 -1
package/README.md
CHANGED
|
@@ -161,18 +161,19 @@ Use this for production debugging, integration verification with real AWS resour
|
|
|
161
161
|
|
|
162
162
|
## `--watch` (hot reload)
|
|
163
163
|
|
|
164
|
-
Pass `--watch` to `cdkl start-api` and the server hot-reloads when your CDK app's
|
|
164
|
+
Pass `--watch` to `cdkl start-api` and the server re-synths and hot-reloads when your CDK app's **source** changes — edit a handler or construct, save, and the change is live:
|
|
165
165
|
|
|
166
166
|
```bash
|
|
167
167
|
cdkl start-api MyStack/MyApi --watch
|
|
168
168
|
```
|
|
169
169
|
|
|
170
|
-
- 500 ms debounced [chokidar](https://github.com/paulmillr/chokidar) file watcher on `cdk.
|
|
171
|
-
-
|
|
170
|
+
- 500 ms debounced [chokidar](https://github.com/paulmillr/chokidar) file watcher on your CDK app's source tree (the directory holding `cdk.json`). Honors `cdk.json`'s `watch.include` / `watch.exclude` globs, exactly like `cdk watch`.
|
|
171
|
+
- `cdk.out/`, `node_modules`, and `.git` are always excluded — the reload's own re-synth writes to `cdk.out/` never re-trigger the watcher, so there is no reload loop.
|
|
172
|
+
- Re-synths and re-discovers routes on each firing — adding a new route to your CDK app shows up locally on save. No separate `cdk watch` / `cdk synth` process is needed.
|
|
172
173
|
- Synth failures keep the previous version serving (warn-and-continue, never crashes the server).
|
|
173
|
-
- Compatible with `--from-cfn-stack`: each reload re-reads the deployed CloudFormation stack so
|
|
174
|
+
- Compatible with `--from-cfn-stack`: each reload re-reads the deployed CloudFormation stack so newly-deployed ARNs are picked up on your next source save without restarting the server.
|
|
174
175
|
|
|
175
|
-
See [docs/local-emulation.md](docs/local-emulation.md#hot-reload---watch) for the full lifecycle,
|
|
176
|
+
See [docs/local-emulation.md](docs/local-emulation.md#hot-reload---watch) for the full lifecycle, `watch.include` / `watch.exclude` semantics, and known limitations.
|
|
176
177
|
|
|
177
178
|
## Override env vars without a state source
|
|
178
179
|
|
package/dist/cli.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { i as createLocalStartApiCommand, k as createLocalInvokeCommand, r as createLocalRunTaskCommand, t as createLocalStartServiceCommand } from "./local-start-service-
|
|
2
|
+
import { i as createLocalStartApiCommand, k as createLocalInvokeCommand, r as createLocalRunTaskCommand, t as createLocalStartServiceCommand } from "./local-start-service-CorTpgvY.js";
|
|
3
3
|
import { Command } from "commander";
|
|
4
4
|
|
|
5
5
|
//#region src/cli/index.ts
|
|
6
6
|
const program = new Command();
|
|
7
|
-
program.name("cdkl").description("Run AWS CDK stacks locally with Docker.").version("0.
|
|
7
|
+
program.name("cdkl").description("Run AWS CDK stacks locally with Docker.").version("0.13.0");
|
|
8
8
|
program.addCommand(createLocalInvokeCommand());
|
|
9
9
|
program.addCommand(createLocalStartApiCommand());
|
|
10
10
|
program.addCommand(createLocalRunTaskCommand());
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/types/state.ts","../src/local/state-resolver.ts","../src/local/local-state-provider.ts","../src/cli/commands/local-state-source.ts","../src/local/embed-config.ts","../src/types/resource.ts","../src/synthesis/assembly-reader.ts","../src/cli/commands/local-invoke.ts","../src/local/httpv2-service-integration.ts","../src/local/container-pool.ts","../src/local/integration-response-selector.ts","../src/local/rest-v1-integrations.ts","../src/local/route-discovery.ts","../src/local/authorizer-resolver.ts","../src/local/authorizer-cache.ts","../src/local/cognito-jwt.ts","../src/cli/commands/local-start-api.ts","../src/cli/commands/local-run-task.ts","../src/cli/commands/local-start-service.ts","../src/local/cfn-local-state-provider.ts","../src/local/intrinsic-utils.ts","../src/local/intrinsic-lambda-arn.ts","../src/local/parameter-mapping.ts","../src/local/api-gateway-response.ts","../src/local/docker-inspect.ts","../src/local/route-matcher.ts","../src/local/api-gateway-event.ts","../src/local/websocket-route-discovery.ts","../src/local/lambda-authorizer.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/types/state.ts","../src/local/state-resolver.ts","../src/local/local-state-provider.ts","../src/cli/commands/local-state-source.ts","../src/local/embed-config.ts","../src/types/resource.ts","../src/synthesis/assembly-reader.ts","../src/cli/commands/local-invoke.ts","../src/local/httpv2-service-integration.ts","../src/local/container-pool.ts","../src/local/integration-response-selector.ts","../src/local/rest-v1-integrations.ts","../src/local/route-discovery.ts","../src/local/authorizer-resolver.ts","../src/local/authorizer-cache.ts","../src/local/cognito-jwt.ts","../src/cli/commands/local-start-api.ts","../src/cli/commands/local-run-task.ts","../src/cli/commands/local-start-service.ts","../src/local/cfn-local-state-provider.ts","../src/local/intrinsic-utils.ts","../src/local/intrinsic-lambda-arn.ts","../src/local/parameter-mapping.ts","../src/local/api-gateway-response.ts","../src/local/docker-inspect.ts","../src/local/route-matcher.ts","../src/local/api-gateway-event.ts","../src/local/websocket-route-discovery.ts","../src/local/lambda-authorizer.ts"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { A as LocalStateSourceError, C as discoverWebSocketApis, D as pickRefLogicalId, E as discoverRoutes, F as resolveCfnRegion, I as resolveCfnStackName, L as CfnLocalStateProvider, M as isCfnFlagPresent, N as rejectExplicitCfnStackWithMultipleStacks, O as resolveLambdaArnIntrinsic, P as resolveCfnFallbackRegion, S as buildRestV1Event, T as parseSelectionExpressionPath, _ as invokeTokenAuthorizer, a as createAuthorizerCache, b as applyAuthorizerOverlay, c as buildCognitoJwksUrl, d as verifyCognitoJwt, f as verifyJwtAuthorizer, g as invokeRequestAuthorizer, h as evaluateCachedLambdaPolicy, i as createLocalStartApiCommand, j as createLocalStateProvider, k as createLocalInvokeCommand, l as buildJwksUrlFromIssuer, m as computeRequestIdentityHash, n as getContainerNetworkIp, o as resolveSelectionExpression, p as buildMethodArn, r as createLocalRunTaskCommand, s as resolveServiceIntegrationParameters, t as createLocalStartServiceCommand, u as createJwksCache, v as matchRoute, w as discoverWebSocketApisOrThrow, x as buildHttpApiV2Event, y as translateLambdaResponse } from "./local-start-service-
|
|
1
|
+
import { A as LocalStateSourceError, C as discoverWebSocketApis, D as pickRefLogicalId, E as discoverRoutes, F as resolveCfnRegion, I as resolveCfnStackName, L as CfnLocalStateProvider, M as isCfnFlagPresent, N as rejectExplicitCfnStackWithMultipleStacks, O as resolveLambdaArnIntrinsic, P as resolveCfnFallbackRegion, S as buildRestV1Event, T as parseSelectionExpressionPath, _ as invokeTokenAuthorizer, a as createAuthorizerCache, b as applyAuthorizerOverlay, c as buildCognitoJwksUrl, d as verifyCognitoJwt, f as verifyJwtAuthorizer, g as invokeRequestAuthorizer, h as evaluateCachedLambdaPolicy, i as createLocalStartApiCommand, j as createLocalStateProvider, k as createLocalInvokeCommand, l as buildJwksUrlFromIssuer, m as computeRequestIdentityHash, n as getContainerNetworkIp, o as resolveSelectionExpression, p as buildMethodArn, r as createLocalRunTaskCommand, s as resolveServiceIntegrationParameters, t as createLocalStartServiceCommand, u as createJwksCache, v as matchRoute, w as discoverWebSocketApisOrThrow, x as buildHttpApiV2Event, y as translateLambdaResponse } from "./local-start-service-CorTpgvY.js";
|
|
2
2
|
|
|
3
3
|
export { CfnLocalStateProvider, LocalStateSourceError, applyAuthorizerOverlay, buildCognitoJwksUrl, buildHttpApiV2Event, buildJwksUrlFromIssuer, buildMethodArn, buildRestV1Event, computeRequestIdentityHash, createAuthorizerCache, createJwksCache, createLocalInvokeCommand, createLocalRunTaskCommand, createLocalStartApiCommand, createLocalStartServiceCommand, createLocalStateProvider, discoverRoutes, discoverWebSocketApis, discoverWebSocketApisOrThrow, evaluateCachedLambdaPolicy, getContainerNetworkIp, invokeRequestAuthorizer, invokeTokenAuthorizer, isCfnFlagPresent, matchRoute, parseSelectionExpressionPath, pickRefLogicalId, rejectExplicitCfnStackWithMultipleStacks, resolveCfnFallbackRegion, resolveCfnRegion, resolveCfnStackName, resolveLambdaArnIntrinsic, resolveSelectionExpression, resolveServiceIntegrationParameters, translateLambdaResponse, verifyCognitoJwt, verifyJwtAuthorizer };
|
|
@@ -411,6 +411,9 @@ function loadCdkJson() {
|
|
|
411
411
|
return null;
|
|
412
412
|
}
|
|
413
413
|
}
|
|
414
|
+
function normalizeGlobList(value) {
|
|
415
|
+
return (typeof value === "string" ? [value] : Array.isArray(value) ? value : []).filter((entry) => typeof entry === "string" && entry.length > 0);
|
|
416
|
+
}
|
|
414
417
|
/**
|
|
415
418
|
* Resolve the `--app` option from CLI, `CDKL_APP` env var, or `cdk.json`.
|
|
416
419
|
*
|
|
@@ -428,6 +431,26 @@ function resolveApp(cliApp) {
|
|
|
428
431
|
if (envApp) return envApp;
|
|
429
432
|
return loadCdkJson()?.app ?? void 0;
|
|
430
433
|
}
|
|
434
|
+
/**
|
|
435
|
+
* Resolve the `cdk.json` `watch` block, mirroring `cdk watch`'s
|
|
436
|
+
* include / exclude semantics for `cdkl start-api --watch` source-tree
|
|
437
|
+
* watching.
|
|
438
|
+
*
|
|
439
|
+
* Defaults when the keys are absent: `include` -> `['**']` (watch the
|
|
440
|
+
* whole app directory), `exclude` -> `[]`. Unlike `cdk watch`, a missing
|
|
441
|
+
* `watch` block is NOT an error — `--watch` still works against the
|
|
442
|
+
* defaults. The caller layers in mandatory excludes (the synth output
|
|
443
|
+
* directory, `node_modules`, `.git`) so re-synth writes never re-trigger
|
|
444
|
+
* a reload and large noise directories are pruned.
|
|
445
|
+
*/
|
|
446
|
+
function resolveWatchConfig() {
|
|
447
|
+
const watch = loadCdkJson()?.watch;
|
|
448
|
+
const include = normalizeGlobList(watch?.include);
|
|
449
|
+
return {
|
|
450
|
+
include: include.length > 0 ? include : ["**"],
|
|
451
|
+
exclude: normalizeGlobList(watch?.exclude)
|
|
452
|
+
};
|
|
453
|
+
}
|
|
431
454
|
|
|
432
455
|
//#endregion
|
|
433
456
|
//#region src/cli/cdk-path.ts
|
|
@@ -1295,6 +1318,12 @@ function resolveImageIntrinsicAny(node, resources, context) {
|
|
|
1295
1318
|
if (resources[logicalId]?.Type !== "AWS::ECR::Repository") return void 0;
|
|
1296
1319
|
const cached = context?.stateResources?.[logicalId]?.attributes?.[attr];
|
|
1297
1320
|
if (typeof cached === "string" && cached.length > 0) return cached;
|
|
1321
|
+
const physicalId = context?.stateResources?.[logicalId]?.physicalId;
|
|
1322
|
+
const p = context?.pseudoParameters;
|
|
1323
|
+
if (physicalId && p?.region && p.accountId) {
|
|
1324
|
+
if (attr === "Arn" && p.partition) return `arn:${p.partition}:ecr:${p.region}:${p.accountId}:repository/${physicalId}`;
|
|
1325
|
+
if (attr === "RepositoryUri" && p.urlSuffix) return `${p.accountId}.dkr.ecr.${p.region}.${p.urlSuffix}/${physicalId}`;
|
|
1326
|
+
}
|
|
1298
1327
|
return;
|
|
1299
1328
|
}
|
|
1300
1329
|
if (intrinsic === "Fn::Split") {
|
|
@@ -5761,6 +5790,99 @@ function createLocalInvokeCommand(opts = {}) {
|
|
|
5761
5790
|
return invoke;
|
|
5762
5791
|
}
|
|
5763
5792
|
|
|
5793
|
+
//#endregion
|
|
5794
|
+
//#region src/utils/glob-match.ts
|
|
5795
|
+
/**
|
|
5796
|
+
* Normalize a glob and split it into path-segment tokens. Returns
|
|
5797
|
+
* `null` for an empty pattern (callers skip it). A slash-free pattern is
|
|
5798
|
+
* prefixed with a `**` token so it matches its basename at any depth.
|
|
5799
|
+
*/
|
|
5800
|
+
function compilePattern(glob) {
|
|
5801
|
+
const g = glob.replace(/\\/g, "/").replace(/^\.\//, "").replace(/\/+$/, "");
|
|
5802
|
+
if (g === "") return null;
|
|
5803
|
+
if (!g.includes("/")) return ["**", g];
|
|
5804
|
+
return g.split("/");
|
|
5805
|
+
}
|
|
5806
|
+
/**
|
|
5807
|
+
* Linear wildcard match for ONE path segment (no `/`). `*` matches any
|
|
5808
|
+
* run of characters, `?` matches exactly one. Classic two-pointer
|
|
5809
|
+
* algorithm with single backtrack pointer — O(len(pat) * len(str)),
|
|
5810
|
+
* never exponential.
|
|
5811
|
+
*/
|
|
5812
|
+
function matchSegment(pat, str) {
|
|
5813
|
+
let s = 0;
|
|
5814
|
+
let p = 0;
|
|
5815
|
+
let starP = -1;
|
|
5816
|
+
let starS = 0;
|
|
5817
|
+
while (s < str.length) {
|
|
5818
|
+
const pc = pat[p];
|
|
5819
|
+
if (p < pat.length && (pc === str[s] || pc === "?")) {
|
|
5820
|
+
s++;
|
|
5821
|
+
p++;
|
|
5822
|
+
} else if (pc === "*") {
|
|
5823
|
+
starP = p;
|
|
5824
|
+
starS = s;
|
|
5825
|
+
p++;
|
|
5826
|
+
} else if (starP !== -1) {
|
|
5827
|
+
p = starP + 1;
|
|
5828
|
+
starS++;
|
|
5829
|
+
s = starS;
|
|
5830
|
+
} else return false;
|
|
5831
|
+
}
|
|
5832
|
+
while (pat[p] === "*") p++;
|
|
5833
|
+
return p === pat.length;
|
|
5834
|
+
}
|
|
5835
|
+
/**
|
|
5836
|
+
* Match a compiled pattern's segment tokens against a path's segments. A
|
|
5837
|
+
* `**` token matches zero or more path segments; every other token
|
|
5838
|
+
* matches exactly one segment via {@link matchSegment}. The pattern
|
|
5839
|
+
* matches when it consumes a PREFIX of the path (the contents rule), so
|
|
5840
|
+
* a directory pattern also matches everything beneath it. Single
|
|
5841
|
+
* backtrack pointer over `**` — O(patSegs * pathSegs), never
|
|
5842
|
+
* exponential.
|
|
5843
|
+
*/
|
|
5844
|
+
function matchSegments(pat, path) {
|
|
5845
|
+
let pi = 0;
|
|
5846
|
+
let si = 0;
|
|
5847
|
+
let starPi = -1;
|
|
5848
|
+
let starSi = 0;
|
|
5849
|
+
while (si < path.length) {
|
|
5850
|
+
if (pi === pat.length) return true;
|
|
5851
|
+
if (pat[pi] === "**") {
|
|
5852
|
+
starPi = pi;
|
|
5853
|
+
starSi = si;
|
|
5854
|
+
pi++;
|
|
5855
|
+
} else if (matchSegment(pat[pi], path[si])) {
|
|
5856
|
+
pi++;
|
|
5857
|
+
si++;
|
|
5858
|
+
} else if (starPi !== -1) {
|
|
5859
|
+
pi = starPi + 1;
|
|
5860
|
+
starSi++;
|
|
5861
|
+
si = starSi;
|
|
5862
|
+
} else return false;
|
|
5863
|
+
}
|
|
5864
|
+
if (pi === pat.length) return true;
|
|
5865
|
+
while (pi < pat.length && pat[pi] === "**") pi++;
|
|
5866
|
+
return pi === pat.length;
|
|
5867
|
+
}
|
|
5868
|
+
/**
|
|
5869
|
+
* Compile a list of globs into a single matcher. The returned predicate
|
|
5870
|
+
* is `true` when the (relative, POSIX-normalized) path matches ANY
|
|
5871
|
+
* pattern. An empty or all-invalid pattern list yields a matcher that
|
|
5872
|
+
* never matches.
|
|
5873
|
+
*/
|
|
5874
|
+
function createGlobMatcher(patterns) {
|
|
5875
|
+
const compiled = [];
|
|
5876
|
+
for (const p of patterns) {
|
|
5877
|
+
const segs = compilePattern(p);
|
|
5878
|
+
if (segs) compiled.push(segs);
|
|
5879
|
+
}
|
|
5880
|
+
return (relPath) => {
|
|
5881
|
+
const pathSegs = relPath.replace(/\\/g, "/").split("/");
|
|
5882
|
+
return compiled.some((pat) => matchSegments(pat, pathSegs));
|
|
5883
|
+
};
|
|
5884
|
+
}
|
|
5885
|
+
|
|
5764
5886
|
//#endregion
|
|
5765
5887
|
//#region src/local/intrinsic-lambda-arn.ts
|
|
5766
5888
|
/**
|
|
@@ -14308,7 +14430,8 @@ function createFileWatcher(options) {
|
|
|
14308
14430
|
const watcher = chokidar.watch([...options.paths], {
|
|
14309
14431
|
ignoreInitial,
|
|
14310
14432
|
followSymlinks: false,
|
|
14311
|
-
ignorePermissionErrors: true
|
|
14433
|
+
ignorePermissionErrors: true,
|
|
14434
|
+
...options.ignored && { ignored: options.ignored }
|
|
14312
14435
|
});
|
|
14313
14436
|
let timer = null;
|
|
14314
14437
|
let closed = false;
|
|
@@ -14326,34 +14449,24 @@ function createFileWatcher(options) {
|
|
|
14326
14449
|
}, debounceMs);
|
|
14327
14450
|
timer.unref?.();
|
|
14328
14451
|
};
|
|
14329
|
-
|
|
14330
|
-
|
|
14331
|
-
|
|
14452
|
+
const onEvent = (path) => {
|
|
14453
|
+
if (options.shouldTrigger && !options.shouldTrigger(path)) return;
|
|
14454
|
+
fire();
|
|
14455
|
+
};
|
|
14456
|
+
watcher.on("add", onEvent);
|
|
14457
|
+
watcher.on("change", onEvent);
|
|
14458
|
+
watcher.on("unlink", onEvent);
|
|
14332
14459
|
watcher.on("error", (err) => {
|
|
14333
14460
|
logger.debug(`chokidar error: ${err instanceof Error ? err.message : String(err)}. Continuing.`);
|
|
14334
14461
|
});
|
|
14335
|
-
|
|
14336
|
-
|
|
14337
|
-
|
|
14338
|
-
|
|
14339
|
-
|
|
14340
|
-
const toAdd = [];
|
|
14341
|
-
const toRemove = [];
|
|
14342
|
-
for (const p of next) if (!currentPaths.has(p)) toAdd.push(p);
|
|
14343
|
-
for (const p of currentPaths) if (!next.has(p)) toRemove.push(p);
|
|
14344
|
-
if (toAdd.length > 0) watcher.add(toAdd);
|
|
14345
|
-
if (toRemove.length > 0) watcher.unwatch(toRemove);
|
|
14346
|
-
currentPaths = next;
|
|
14347
|
-
},
|
|
14348
|
-
close: async () => {
|
|
14349
|
-
closed = true;
|
|
14350
|
-
if (timer) {
|
|
14351
|
-
clearTimeout(timer);
|
|
14352
|
-
timer = null;
|
|
14353
|
-
}
|
|
14354
|
-
await watcher.close();
|
|
14462
|
+
return { close: async () => {
|
|
14463
|
+
closed = true;
|
|
14464
|
+
if (timer) {
|
|
14465
|
+
clearTimeout(timer);
|
|
14466
|
+
timer = null;
|
|
14355
14467
|
}
|
|
14356
|
-
|
|
14468
|
+
await watcher.close();
|
|
14469
|
+
} };
|
|
14357
14470
|
}
|
|
14358
14471
|
|
|
14359
14472
|
//#endregion
|
|
@@ -14427,7 +14540,6 @@ async function localStartApiCommand(target, options, extraStateProviders) {
|
|
|
14427
14540
|
const inlineTmpDirs = /* @__PURE__ */ new Set();
|
|
14428
14541
|
const layerTmpDirs = /* @__PURE__ */ new Set();
|
|
14429
14542
|
let profileCredsFile;
|
|
14430
|
-
const lastAssetPaths = { value: [] };
|
|
14431
14543
|
const authorizerCache = createAuthorizerCache();
|
|
14432
14544
|
const jwksCache = createJwksCache();
|
|
14433
14545
|
const jwksWarnedUrls = /* @__PURE__ */ new Set();
|
|
@@ -14556,30 +14668,7 @@ async function localStartApiCommand(target, options, extraStateProviders) {
|
|
|
14556
14668
|
});
|
|
14557
14669
|
return pool;
|
|
14558
14670
|
};
|
|
14559
|
-
/**
|
|
14560
|
-
* Compute the watched-asset list from a spec map. Pure helper —
|
|
14561
|
-
* keeps the side-effect (`lastAssetPaths.value = ...`) confined to
|
|
14562
|
-
* the post-swap call sites (initial boot + post-reload). For ZIP
|
|
14563
|
-
* Lambdas `codeDir` is either the unzipped asset directory or the
|
|
14564
|
-
* inline-code tmpdir; both are watch-worthy. IMAGE Lambdas
|
|
14565
|
-
* (`kind: 'image'`) don't have a host-side bind-mount source — the
|
|
14566
|
-
* code is baked into the docker image at build time. Their build
|
|
14567
|
-
* context (Dockerfile + source directory) is rebuilt on every
|
|
14568
|
-
* reload via `synthesizeAndBuild` → `buildContainerSpec` →
|
|
14569
|
-
* `resolveContainerImageForStartApi`, so a source edit DOES trigger
|
|
14570
|
-
* rebuild AND the deterministic `image` tag changes — but watching
|
|
14571
|
-
* the build-context dir explicitly here is deferred to a follow-up
|
|
14572
|
-
* (the watched-asset list is currently sourced from `cdk.out/`
|
|
14573
|
-
* which transitively covers most container-Lambda asset dirs since
|
|
14574
|
-
* `cdk synth` re-stages them on every synth call).
|
|
14575
|
-
*/
|
|
14576
|
-
const computeAssetPaths = (specs) => {
|
|
14577
|
-
const assetPaths = /* @__PURE__ */ new Set();
|
|
14578
|
-
for (const spec of specs.values()) if (spec.kind === "zip") assetPaths.add(spec.codeDir);
|
|
14579
|
-
return [...assetPaths];
|
|
14580
|
-
};
|
|
14581
14671
|
const initialMaterial = await synthesizeAndBuild();
|
|
14582
|
-
lastAssetPaths.value = computeAssetPaths(initialMaterial.specs);
|
|
14583
14672
|
await prewarmJwks(initialMaterial.routes, jwksCache);
|
|
14584
14673
|
warnVpcConfigLambdas(initialMaterial.routes, initialMaterial.stacks ?? []);
|
|
14585
14674
|
sigV4CredentialsLoader = defaultCredentialsLoader();
|
|
@@ -14720,23 +14809,27 @@ async function localStartApiCommand(target, options, extraStateProviders) {
|
|
|
14720
14809
|
let watcher;
|
|
14721
14810
|
let reloadChain = Promise.resolve();
|
|
14722
14811
|
if (options.watch) {
|
|
14812
|
+
const watchRoot = process.cwd();
|
|
14813
|
+
const { ignored, shouldTrigger, excludePatterns } = createWatchPredicates({
|
|
14814
|
+
watchRoot,
|
|
14815
|
+
output: options.output,
|
|
14816
|
+
watchConfig: resolveWatchConfig()
|
|
14817
|
+
});
|
|
14723
14818
|
watcher = createFileWatcher({
|
|
14724
|
-
paths: [
|
|
14819
|
+
paths: [watchRoot],
|
|
14820
|
+
ignored,
|
|
14821
|
+
shouldTrigger,
|
|
14725
14822
|
onChange: () => {
|
|
14726
|
-
logger.info("Detected
|
|
14823
|
+
logger.info("Detected source change; reloading...");
|
|
14727
14824
|
reloadChain = reloadChain.then(() => reloadAllServers({
|
|
14728
14825
|
synthesizeAndBuild,
|
|
14729
14826
|
servers,
|
|
14730
14827
|
buildPool,
|
|
14731
|
-
computeAssetPaths,
|
|
14732
|
-
lastAssetPaths,
|
|
14733
|
-
watcher,
|
|
14734
|
-
output: options.output,
|
|
14735
14828
|
logger
|
|
14736
14829
|
})).catch(() => void 0);
|
|
14737
14830
|
}
|
|
14738
14831
|
});
|
|
14739
|
-
logger.info(`Watching ${
|
|
14832
|
+
logger.info(`Watching ${watchRoot} for source changes (excluding ${excludePatterns.join(", ")}).`);
|
|
14740
14833
|
}
|
|
14741
14834
|
let shutdownStarted = false;
|
|
14742
14835
|
let firstSignal;
|
|
@@ -14838,6 +14931,52 @@ async function localStartApiCommand(target, options, extraStateProviders) {
|
|
|
14838
14931
|
await new Promise(() => void 0);
|
|
14839
14932
|
}
|
|
14840
14933
|
/**
|
|
14934
|
+
* Build the `--watch` file-watcher predicates for a source tree rooted
|
|
14935
|
+
* at `watchRoot` (the synth working directory).
|
|
14936
|
+
*
|
|
14937
|
+
* The synth output directory is always excluded so the reload's own
|
|
14938
|
+
* re-synth writes never re-trigger the watcher (no loop); `node_modules`
|
|
14939
|
+
* / `.git` are excluded for traversal cost. `cdk.json` `watch.exclude`
|
|
14940
|
+
* globs layer on top, and `watch.include` gates which changes fire a
|
|
14941
|
+
* reload. The output dir is only added as a glob when it lives UNDER the
|
|
14942
|
+
* watch root — when it equals the root (`''`) or sits outside it
|
|
14943
|
+
* (`..`-prefixed), a watcher rooted at `watchRoot` never traverses it,
|
|
14944
|
+
* so no exclude entry is needed (and a `''` / `..` glob is meaningless).
|
|
14945
|
+
*
|
|
14946
|
+
* `@internal` exported for unit tests (the exclude/include composition +
|
|
14947
|
+
* the output-dir relativization edge cases).
|
|
14948
|
+
*/
|
|
14949
|
+
function createWatchPredicates(args) {
|
|
14950
|
+
const { watchRoot, output, watchConfig } = args;
|
|
14951
|
+
const toRel = (abs) => path.relative(watchRoot, abs).split(path.sep).join("/");
|
|
14952
|
+
const outputRel = toRel(path.resolve(watchRoot, output));
|
|
14953
|
+
const excludePatterns = [
|
|
14954
|
+
...outputRel !== "" && !outputRel.startsWith("..") ? [outputRel] : [],
|
|
14955
|
+
"node_modules",
|
|
14956
|
+
".git",
|
|
14957
|
+
...watchConfig.exclude
|
|
14958
|
+
];
|
|
14959
|
+
const excludeMatcher = createGlobMatcher(excludePatterns);
|
|
14960
|
+
const includeMatcher = createGlobMatcher(watchConfig.include);
|
|
14961
|
+
const ignored = (absPath) => {
|
|
14962
|
+
const rel = toRel(absPath);
|
|
14963
|
+
if (rel === "") return false;
|
|
14964
|
+
if (rel.startsWith("..")) return true;
|
|
14965
|
+
return excludeMatcher(rel);
|
|
14966
|
+
};
|
|
14967
|
+
const shouldTrigger = (absPath) => {
|
|
14968
|
+
const rel = toRel(absPath);
|
|
14969
|
+
if (rel === "" || rel.startsWith("..")) return false;
|
|
14970
|
+
if (excludeMatcher(rel)) return false;
|
|
14971
|
+
return includeMatcher(rel);
|
|
14972
|
+
};
|
|
14973
|
+
return {
|
|
14974
|
+
ignored,
|
|
14975
|
+
shouldTrigger,
|
|
14976
|
+
excludePatterns
|
|
14977
|
+
};
|
|
14978
|
+
}
|
|
14979
|
+
/**
|
|
14841
14980
|
* Match the `--stack` pattern (or single-stack auto-detect) to a list
|
|
14842
14981
|
* of stacks the route-discovery walks. Mirrors the deploy/diff matcher
|
|
14843
14982
|
* routing rules.
|
|
@@ -15739,7 +15878,7 @@ function warnSsrfRiskyIntegrations(routes, logger) {
|
|
|
15739
15878
|
* server restart in v1.
|
|
15740
15879
|
*/
|
|
15741
15880
|
async function reloadAllServers(args) {
|
|
15742
|
-
const { synthesizeAndBuild, servers, buildPool,
|
|
15881
|
+
const { synthesizeAndBuild, servers, buildPool, logger } = args;
|
|
15743
15882
|
let material;
|
|
15744
15883
|
try {
|
|
15745
15884
|
material = await synthesizeAndBuild();
|
|
@@ -15770,8 +15909,6 @@ async function reloadAllServers(args) {
|
|
|
15770
15909
|
logger.debug(`Previous pool dispose() failed for ${group.displayName}: ${err instanceof Error ? err.message : String(err)}`);
|
|
15771
15910
|
});
|
|
15772
15911
|
}
|
|
15773
|
-
lastAssetPaths.value = computeAssetPaths(material.specs);
|
|
15774
|
-
if (watcher) watcher.update([output, ...lastAssetPaths.value]);
|
|
15775
15912
|
printPerServerRouteTables(servers);
|
|
15776
15913
|
const allRoutes = servers.flatMap((s) => s.group.routes.map((r) => r.route));
|
|
15777
15914
|
warnUnsupportedRoutes(allRoutes, logger);
|
|
@@ -15955,7 +16092,7 @@ function resolveMtlsConfig(options) {
|
|
|
15955
16092
|
*/
|
|
15956
16093
|
function createLocalStartApiCommand(opts = {}) {
|
|
15957
16094
|
setEmbedConfig(opts.embedConfig);
|
|
15958
|
-
const startApi = new Command("start-api").description("Run a long-running local HTTP server that maps API Gateway routes (REST v1, HTTP API, Function URL) to Lambda invocations against the AWS Lambda Runtime Interface Emulator (Docker required). Supports Lambda TOKEN/REQUEST authorizers, Cognito User Pool / HTTP v2 JWT authorizers, and AWS_IAM auth (REST v1 `AuthorizationType: AWS_IAM` and Function URL `AuthType: AWS_IAM` — SigV4 signature verification only; IAM policy evaluation is NOT emulated). When JWKS is unreachable, JWT authorizers fall back to pass-through (every token accepted) with a warn line — local dev fallback. VPC-config Lambdas run locally and surface a warn line at startup; their containers do NOT get attached to the deployed VPC subnets, so calls to private RDS / ElastiCache will fail.").argument("[target]", `Optional API filter. Accepts the bare CDK logical id ('MyHttpApi'; single-stack apps only), stack-qualified logical id ('MyStack:MyHttpApi'), full CDK Construct path ('MyStack/MyHttpApi/Resource'), or an ancestor Construct path that prefix-matches ('MyStack/MyHttpApi'). When omitted, every discovered API gets its own server. Mirrors \`${getEmbedConfig().cliName} invoke\` / \`${getEmbedConfig().cliName} run-task\` target syntax.`).addOption(new Option("--port <port>", "HTTP server port (default: auto-allocate)").default("0")).addOption(new Option("--host <host>", "Bind address").default("127.0.0.1")).addOption(new Option("--stack <name>", "Stack to start (single-stack apps auto-detect)")).addOption(new Option("--all-stacks", "Serve every stack's API in a multi-stack app (each API on its own port) instead of erroring out. Mutually exclusive with a positional target, --stack, and an explicit --from-cfn-stack <name>; the bare --from-cfn-stack flag stays compatible (binds each routed stack to its own CFn stack).").default(false)).addOption(new Option("--warm", "Pre-start one container per Lambda at server boot").default(false)).addOption(new Option("--per-lambda-concurrency <n>", "Pool size cap per Lambda (default 2, max 4)").default("2")).addOption(new Option("--no-pull", "Skip docker pull (cached image)")).addOption(new Option("--container-host <host>", "IP the host uses to bind/probe the RIE port (must be a numeric IP — `docker run -p <ip>:<port>:8080` rejects hostnames). Defaults to 127.0.0.1.").default("127.0.0.1")).addOption(new Option("--debug-port-base <port>", "Reserve a contiguous --debug-port range (one per Lambda)")).addOption(new Option("--env-vars <file>", "JSON env-var overrides (SAM-compatible: {\"LogicalId\":{\"KEY\":\"VALUE\"}, \"Parameters\": {...}})")).addOption(new Option("--assume-role <arn-or-pair>", "Assume the Lambda's execution role and forward STS-issued temp creds. Bare <arn> = global default; <LogicalId>=<arn> = per-Lambda override (repeatable). Per-Lambda > global > unset (developer creds passed through).").argParser((raw, prev) => parseAssumeRoleToken(raw, prev))).addOption(new Option("--watch", "Hot-reload: re-synth + re-discover routes when cdk.
|
|
16095
|
+
const startApi = new Command("start-api").description("Run a long-running local HTTP server that maps API Gateway routes (REST v1, HTTP API, Function URL) to Lambda invocations against the AWS Lambda Runtime Interface Emulator (Docker required). Supports Lambda TOKEN/REQUEST authorizers, Cognito User Pool / HTTP v2 JWT authorizers, and AWS_IAM auth (REST v1 `AuthorizationType: AWS_IAM` and Function URL `AuthType: AWS_IAM` — SigV4 signature verification only; IAM policy evaluation is NOT emulated). When JWKS is unreachable, JWT authorizers fall back to pass-through (every token accepted) with a warn line — local dev fallback. VPC-config Lambdas run locally and surface a warn line at startup; their containers do NOT get attached to the deployed VPC subnets, so calls to private RDS / ElastiCache will fail.").argument("[target]", `Optional API filter. Accepts the bare CDK logical id ('MyHttpApi'; single-stack apps only), stack-qualified logical id ('MyStack:MyHttpApi'), full CDK Construct path ('MyStack/MyHttpApi/Resource'), or an ancestor Construct path that prefix-matches ('MyStack/MyHttpApi'). When omitted, every discovered API gets its own server. Mirrors \`${getEmbedConfig().cliName} invoke\` / \`${getEmbedConfig().cliName} run-task\` target syntax.`).addOption(new Option("--port <port>", "HTTP server port (default: auto-allocate)").default("0")).addOption(new Option("--host <host>", "Bind address").default("127.0.0.1")).addOption(new Option("--stack <name>", "Stack to start (single-stack apps auto-detect)")).addOption(new Option("--all-stacks", "Serve every stack's API in a multi-stack app (each API on its own port) instead of erroring out. Mutually exclusive with a positional target, --stack, and an explicit --from-cfn-stack <name>; the bare --from-cfn-stack flag stays compatible (binds each routed stack to its own CFn stack).").default(false)).addOption(new Option("--warm", "Pre-start one container per Lambda at server boot").default(false)).addOption(new Option("--per-lambda-concurrency <n>", "Pool size cap per Lambda (default 2, max 4)").default("2")).addOption(new Option("--no-pull", "Skip docker pull (cached image)")).addOption(new Option("--container-host <host>", "IP the host uses to bind/probe the RIE port (must be a numeric IP — `docker run -p <ip>:<port>:8080` rejects hostnames). Defaults to 127.0.0.1.").default("127.0.0.1")).addOption(new Option("--debug-port-base <port>", "Reserve a contiguous --debug-port range (one per Lambda)")).addOption(new Option("--env-vars <file>", "JSON env-var overrides (SAM-compatible: {\"LogicalId\":{\"KEY\":\"VALUE\"}, \"Parameters\": {...}})")).addOption(new Option("--assume-role <arn-or-pair>", "Assume the Lambda's execution role and forward STS-issued temp creds. Bare <arn> = global default; <LogicalId>=<arn> = per-Lambda override (repeatable). Per-Lambda > global > unset (developer creds passed through).").argParser((raw, prev) => parseAssumeRoleToken(raw, prev))).addOption(new Option("--watch", "Hot-reload: re-synth + re-discover routes when the CDK app's source changes (honors cdk.json watch.include/exclude; cdk.out, node_modules, .git are always excluded). Off by default; the server keeps the previous version serving when synth fails mid-reload.").default(false)).addOption(new Option("--stage <name>", "Select an API Gateway Stage by its 'StageName'. Default: the first Stage attached to each API. Drives event.stageVariables for both REST v1 and HTTP API v2. NOTE: For HTTP API v2 routes, requestContext.stage is always '$default' regardless of this flag (AWS-side limitation — HTTP API only exposes one stage to the integration event); only event.stageVariables is affected for v2 routes. For REST v1 routes the selected StageName is also threaded into requestContext.stage.")).addOption(new Option("--api <id>", "DEPRECATED — use the positional <target> argument instead. Same accepted forms (bare logical id, stack-qualified, Construct path, ancestor prefix). Will be removed in a future major release.")).addOption(new Option("--layer-role-arn <arn>", "Role to sts:AssumeRole before calling lambda:GetLayerVersion on every literal-ARN entry in Properties.Layers (issue #448). Use only when the dev credentials cannot read the layer — typically cross-account layers. AWS-published public layers (e.g. Lambda Powertools) are readable from every account and need no role.")).addOption(new Option("--from-cfn-stack [cfn-stack-name]", "Read a deployed CloudFormation stack via ListStackResources and substitute Ref / Fn::ImportValue in Lambda env vars with the deployed physical IDs / exports. Use for CDK apps deployed via the upstream CDK CLI (`cdk deploy`). Bare form uses the resolved stack name per routed stack; pass an explicit value when a single CFn stack should serve every routed stack. Fn::GetAtt is warn-and-dropped in v1 (CFn ListStackResources does not return per-attribute values).")).addOption(new Option("--stack-region <region>", "Region of the state record to read. Used with --from-cfn-stack as the CFn client region.")).addOption(new Option("--mtls-truststore <path>", `PEM-encoded CA bundle for client-certificate verification (mutual TLS). When set, the local server switches from HTTP to HTTPS and the TLS handshake rejects clients whose certificate doesn't chain to one of these CAs. Verified certs are surfaced on the Lambda event under requestContext.identity.clientCert (REST v1) / requestContext.authentication.clientCert (HTTP API v2). Must be set together with --mtls-cert + --mtls-key; partial flag sets are rejected. Generate a CA + server + client cert for local dev: openssl req -x509 -newkey rsa:2048 -nodes -keyout ca-key.pem -out ca.pem -subj "/CN=${getEmbedConfig().resourceNamePrefix}-ca" -days 365; openssl req -newkey rsa:2048 -nodes -keyout server-key.pem -out server-csr.pem -subj "/CN=localhost"; openssl x509 -req -in server-csr.pem -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -days 365; openssl req -newkey rsa:2048 -nodes -keyout client-key.pem -out client-csr.pem -subj "/CN=client"; openssl x509 -req -in client-csr.pem -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem -days 365; curl --cacert ca.pem --cert client-cert.pem --key client-key.pem https://localhost:<port>/...`)).addOption(new Option("--mtls-cert <path>", "PEM-encoded server certificate for mutual TLS. Self-signed is fine for local dev. Must be set together with --mtls-truststore + --mtls-key.")).addOption(new Option("--mtls-key <path>", "PEM-encoded server private key matching --mtls-cert. Must be set together with --mtls-truststore + --mtls-cert.")).addOption(new Option("--strict-sigv4", "Opt-in: DENY AWS_IAM SigV4 requests that cannot be cryptographically verified (foreign access-key-id — e.g. a federated / Cognito Identity Pool / cross-account signer — OR no local AWS credentials configured) instead of the default warn-and-pass. DEFAULT off: cdk-local warn-and-passes unverifiable IAM requests with a placeholder principalId so local dev exercises app logic without reproducing an auth boundary it cannot fully emulate. OAC-fronted Function URLs always warn-and-pass regardless.").default(false)).action(withErrorHandling(async (target, options) => {
|
|
15959
16096
|
await localStartApiCommand(target, options, opts.extraStateProviders);
|
|
15960
16097
|
}));
|
|
15961
16098
|
[
|
|
@@ -18539,4 +18676,4 @@ function createLocalStartServiceCommand(opts = {}) {
|
|
|
18539
18676
|
|
|
18540
18677
|
//#endregion
|
|
18541
18678
|
export { LocalStateSourceError as A, discoverWebSocketApis as C, pickRefLogicalId as D, discoverRoutes as E, resolveCfnRegion as F, resolveCfnStackName as I, CfnLocalStateProvider as L, isCfnFlagPresent as M, rejectExplicitCfnStackWithMultipleStacks as N, resolveLambdaArnIntrinsic as O, resolveCfnFallbackRegion as P, buildRestV1Event as S, parseSelectionExpressionPath as T, invokeTokenAuthorizer as _, createAuthorizerCache as a, applyAuthorizerOverlay as b, buildCognitoJwksUrl as c, verifyCognitoJwt as d, verifyJwtAuthorizer as f, invokeRequestAuthorizer as g, evaluateCachedLambdaPolicy as h, createLocalStartApiCommand as i, createLocalStateProvider as j, createLocalInvokeCommand as k, buildJwksUrlFromIssuer as l, computeRequestIdentityHash as m, getContainerNetworkIp as n, resolveSelectionExpression as o, buildMethodArn as p, createLocalRunTaskCommand as r, resolveServiceIntegrationParameters as s, createLocalStartServiceCommand as t, createJwksCache as u, matchRoute as v, discoverWebSocketApisOrThrow as w, buildHttpApiV2Event as x, translateLambdaResponse as y };
|
|
18542
|
-
//# sourceMappingURL=local-start-service-
|
|
18679
|
+
//# sourceMappingURL=local-start-service-CorTpgvY.js.map
|