@go-to-k/cdkd 0.77.0 → 0.78.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 CHANGED
@@ -36,9 +36,9 @@ Numbers below are deploy-phase only (CDK app synthesis is identical between cdkd
36
36
 
37
37
  Stack: S3 Bucket, DynamoDB Table, SQS Queue, SNS Topic, SSM Parameter (5 independent resources, fully parallelized by cdkd's DAG scheduler).
38
38
 
39
- | | cdkd | AWS CDK (CFn) | Speedup |
39
+ | | AWS CDK (CFn) | cdkd | Speedup |
40
40
  | --- | ---: | ---: | ---: |
41
- | Deploy | **17.0s** | **94.4s** | **5.5x** |
41
+ | Deploy | **94.4s** | **17.0s** | **5.5x** |
42
42
 
43
43
  ### VPC + CloudFront + Lambda stack — **15x faster with `--no-wait`** (40s vs 599s)
44
44
 
@@ -54,9 +54,9 @@ The 15x figure requires `cdkd deploy --no-wait`, which returns as soon as each C
54
54
 
55
55
  Stack: SSM Document × 3 + Athena WorkGroup × 2 (no SDK provider — CC API fallback).
56
56
 
57
- | | cdkd | AWS CDK (CFn) | Speedup |
57
+ | | AWS CDK (CFn) | cdkd | Speedup |
58
58
  | --- | ---: | ---: | ---: |
59
- | Deploy | **40.9s** | **64.9s** | **1.6x** |
59
+ | Deploy | **64.9s** | **40.9s** | **1.6x** |
60
60
 
61
61
  Reproduce the first two with `./tests/benchmark/run-benchmark.sh all`. See [tests/benchmark/README.md](tests/benchmark/README.md) for details.
62
62
 
@@ -99,21 +99,11 @@ For a step-by-step walkthrough of the full `cdkd deploy` pipeline (CLI
99
99
  parsing → synthesis → asset publishing → per-stack deploy), see
100
100
  [docs/architecture.md](docs/architecture.md#5-end-to-end-pipeline-walkthrough-cdkd-deploy).
101
101
 
102
- ## Supported Features
103
-
104
- cdkd supports the standard CloudFormation surface — intrinsic functions,
105
- pseudo parameters, parameters / conditions, cross-stack / cross-region
106
- references, asset publishing, custom resources, and so on. See
107
- **[docs/supported-features.md](docs/supported-features.md)** for the
108
- full reference. For per-resource-type provisioning support (SDK Providers
109
- vs Cloud Control API fallback), see
110
- **[docs/supported-resources.md](docs/supported-resources.md)**.
111
-
112
102
  ## Prerequisites
113
103
 
114
104
  - **Node.js** >= 20.0.0
115
105
  - **AWS CDK Bootstrap**: You must run `cdk bootstrap` before using cdkd. cdkd uses CDK's bootstrap bucket (`cdk-hnb659fds-assets-*`) for asset uploads (Lambda code, Docker images). Custom bootstrap qualifiers are supported — CDK embeds the correct bucket/repo names in the asset manifest during synthesis.
116
- - **AWS Credentials**: Configured via environment variables, `~/.aws/credentials`, `--profile`, or `--role-arn` option. **The credentials must have admin-equivalent permissions for the resources being deployed.** Unlike `cdk deploy`, cdkd does NOT route through CloudFormation, so there is no cfn-exec-role to delegate to — every IAM / EC2 / Lambda / etc. API call is issued from cdkd directly. CDK CLI's `cdk-hnb659fds-deploy-role-*` only carries CFn + asset-publish permissions and is therefore NOT sufficient for cdkd. See `--role-arn` in [docs/cli-reference.md](docs/cli-reference.md) for assuming a role with the right permissions.
106
+ - **AWS credentials with admin-equivalent permissions** for the resources being deployed. cdkd does NOT route through CloudFormation, so CDK CLI's `cdk-hnb659fds-deploy-role-*` is NOT sufficient see [`--role-arn`](docs/cli-reference.md).
117
107
 
118
108
  ## Installation
119
109
 
@@ -322,6 +312,16 @@ cdkd state destroy --all -y # every stack in the bucket
322
312
  cdkd state destroy MyStack --region us-east-1
323
313
  ```
324
314
 
315
+ ## Compatibility
316
+
317
+ cdkd supports the standard CloudFormation surface — intrinsic functions,
318
+ pseudo parameters, parameters / conditions, cross-stack / cross-region
319
+ references, asset publishing, custom resources, and so on. See
320
+ **[docs/supported-features.md](docs/supported-features.md)** for the
321
+ full reference. For per-resource-type provisioning support (SDK Providers
322
+ vs Cloud Control API fallback), see
323
+ **[docs/supported-resources.md](docs/supported-resources.md)**.
324
+
325
325
  ## Rollback behavior
326
326
 
327
327
  When a deploy fails mid-stack (e.g. a resource hits a validation error
@@ -498,10 +498,15 @@ Lambda Runtime Interface Emulator (RIE). Modeled on `sam local invoke`
498
498
  but reusing cdkd's synthesis / asset / construct-path plumbing — no
499
499
  `template.yaml` to maintain, no `cdk synth | sam ...` round-trip.
500
500
 
501
- Requires Docker. Supports Node.js, Python, and Ruby runtimes (`nodejs18.x` /
502
- `nodejs20.x` / `nodejs22.x` / `nodejs24.x` / `python3.11` / `python3.12` /
503
- `python3.13` / `python3.14` / `ruby3.2` / `ruby3.3`); other runtimes
504
- (Java / .NET / Go / `provided.*`) are not yet supported.
501
+ Requires Docker. Supports Node.js, Python, Ruby, and Java runtimes
502
+ (`nodejs18.x` / `nodejs20.x` / `nodejs22.x` / `nodejs24.x` / `python3.11` /
503
+ `python3.12` / `python3.13` / `python3.14` / `ruby3.2` / `ruby3.3` /
504
+ `java8.al2` / `java11` / `java17` / `java21`); other runtimes (.NET / Go /
505
+ `provided.*`) are not yet supported. Java Lambdas are **asset-backed only** —
506
+ the Handler shape `package.Class::method` names a compiled class, so use
507
+ `lambda.Code.fromAsset(<dir>)` with a directory containing the compiled
508
+ output (`.class` hierarchy or `.jar`); inline `Code.ZipFile` is rejected
509
+ with a clear routing message.
505
510
 
506
511
  **Container Lambdas** — `lambda.DockerImageFunction(...)` /
507
512
  `Code.ImageUri` is supported alongside ZIP Lambdas. cdkd reads the
package/dist/cli.js CHANGED
@@ -70573,7 +70573,11 @@ var SUPPORTED_RUNTIMES = {
70573
70573
  "python3.13": { image: "public.ecr.aws/lambda/python:3.13", fileExtension: ".py" },
70574
70574
  "python3.14": { image: "public.ecr.aws/lambda/python:3.14", fileExtension: ".py" },
70575
70575
  "ruby3.2": { image: "public.ecr.aws/lambda/ruby:3.2", fileExtension: ".rb" },
70576
- "ruby3.3": { image: "public.ecr.aws/lambda/ruby:3.3", fileExtension: ".rb" }
70576
+ "ruby3.3": { image: "public.ecr.aws/lambda/ruby:3.3", fileExtension: ".rb" },
70577
+ "java8.al2": { image: "public.ecr.aws/lambda/java:8.al2", fileExtension: null },
70578
+ java11: { image: "public.ecr.aws/lambda/java:11", fileExtension: null },
70579
+ java17: { image: "public.ecr.aws/lambda/java:17", fileExtension: null },
70580
+ java21: { image: "public.ecr.aws/lambda/java:21", fileExtension: null }
70577
70581
  };
70578
70582
  var UnsupportedRuntimeError = class _UnsupportedRuntimeError extends Error {
70579
70583
  constructor(runtime, message) {
@@ -70587,7 +70591,14 @@ function resolveRuntimeImage(runtime) {
70587
70591
  return resolveRuntimeSpec(runtime).image;
70588
70592
  }
70589
70593
  function resolveRuntimeFileExtension(runtime) {
70590
- return resolveRuntimeSpec(runtime).fileExtension;
70594
+ const spec = resolveRuntimeSpec(runtime);
70595
+ if (spec.fileExtension === null) {
70596
+ throw new UnsupportedRuntimeError(
70597
+ runtime,
70598
+ `Inline 'Code.ZipFile' is not supported for runtime '${runtime}'. The Lambda Handler shape for this runtime names a compiled artifact (a JVM class, a .NET assembly, or a native binary) that cannot be expressed as a single inline source file. Use \`lambda.Code.fromAsset(<dir>)\` with a directory containing the compiled output (.class hierarchy / JAR / DLL / binary).`
70599
+ );
70600
+ }
70601
+ return spec.fileExtension;
70591
70602
  }
70592
70603
  function resolveRuntimeSpec(runtime) {
70593
70604
  if (typeof runtime !== "string" || runtime.length === 0) {
@@ -70599,15 +70610,15 @@ function resolveRuntimeSpec(runtime) {
70599
70610
  const spec = SUPPORTED_RUNTIMES[runtime];
70600
70611
  if (spec)
70601
70612
  return spec;
70602
- if (runtime.startsWith("java") || runtime.startsWith("dotnet") || runtime.startsWith("go") || runtime.startsWith("provided")) {
70613
+ if (runtime.startsWith("dotnet") || runtime.startsWith("go") || runtime.startsWith("provided")) {
70603
70614
  throw new UnsupportedRuntimeError(
70604
70615
  runtime,
70605
- `Runtime '${runtime}' is not yet supported in cdkd local invoke. Supported runtimes: Node.js (nodejs18.x / nodejs20.x / nodejs22.x / nodejs24.x), Python (python3.11 / python3.12 / python3.13 / python3.14), Ruby (ruby3.2 / ruby3.3). Other runtimes follow in subsequent PRs.`
70616
+ `Runtime '${runtime}' is not yet supported in cdkd local invoke. Supported runtimes: Node.js (nodejs18.x / nodejs20.x / nodejs22.x / nodejs24.x), Python (python3.11 / python3.12 / python3.13 / python3.14), Ruby (ruby3.2 / ruby3.3), Java (java8.al2 / java11 / java17 / java21). Other runtimes follow in subsequent PRs.`
70606
70617
  );
70607
70618
  }
70608
70619
  throw new UnsupportedRuntimeError(
70609
70620
  runtime,
70610
- `Unknown runtime '${runtime}'. cdkd local invoke supports nodejs18.x / nodejs20.x / nodejs22.x / nodejs24.x / python3.11 / python3.12 / python3.13 / python3.14 / ruby3.2 / ruby3.3.`
70621
+ `Unknown runtime '${runtime}'. cdkd local invoke supports nodejs18.x / nodejs20.x / nodejs22.x / nodejs24.x / python3.11 / python3.12 / python3.13 / python3.14 / ruby3.2 / ruby3.3 / java8.al2 / java11 / java17 / java21.`
70611
70622
  );
70612
70623
  }
70613
70624
 
@@ -77032,7 +77043,7 @@ function reorderArgs(argv) {
77032
77043
  }
77033
77044
  async function main() {
77034
77045
  const program = new Command16();
77035
- program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.77.0");
77046
+ program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.78.0");
77036
77047
  program.addCommand(createBootstrapCommand());
77037
77048
  program.addCommand(createSynthCommand());
77038
77049
  program.addCommand(createListCommand());