@go-to-k/cdkd 0.176.0 → 0.178.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/dist/cli.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { _ as withSkipPrefix, a as runDockerStreaming, c as getLogger, d as getLiveRenderer, f as PATTERN_B_NAME_PROPERTIES, g as generateResourceNameWithFallback, h as generateResourceName, i as runDockerForeground, n as formatDockerLoginError, p as PATTERN_B_RESOURCE_TYPES, r as getDockerCmd, u as runStackBuffered, v as withStackName } from "./docker-cmd-iDMcWcre.js";
3
- import { A as S3StateBackend, B as resolveCaptureObservedState, C as assertRegionMatch, D as DagBuilder, E as DiffCalculator, F as buildDockerImage, G as CFN_TEMPLATE_BODY_LIMIT, H as resolveStateBucketWithDefault, I as Synthesizer, J as findLargeInlineResources, K as CFN_TEMPLATE_URL_LIMIT, L as getDefaultStateBucketName, M as AssetPublisher, N as stringifyValue, O as TemplateParser, P as WorkGraph, Q as resolveBucketRegion, R as getLegacyStateBucketName, S as CloudControlProvider, T as applyRoleArnIfSet, U as resolveStateBucketWithDefaultAndSource, V as resolveSkipPrefix, W as warnDeprecatedNoPrefixCliFlag, X as AssemblyReader, Y as uploadCfnTemplate, _ as matchesCdkPath, a as withRetry, at as LocalStartServiceError, b as ProviderRegistry, bt as withErrorHandling, c as bold, ct as NestedStackChildDirectDestroyError, d as green, dt as ResourceTimeoutError, et as CdkdError, f as red, ft as ResourceUpdateNotSupportedError, g as CDK_PATH_TAG, h as collectInlinePolicyNamesManagedBySiblings, i as withResourceDeadline, it as LocalMigrateError, j as shouldRetainResource, k as LockManager, l as cyan, lt as PartialFailureError, m as IAMRoleProvider, mt as StackTerminationProtectionError, n as DEFAULT_RESOURCE_WARN_AFTER_MS, o as IMPLICIT_DELETE_DEPENDENCIES, p as yellow, pt as StackHasActiveImportsError, q as MIGRATE_TMP_PREFIX, r as DeployEngine, rt as LocalInvokeBuildError$1, s as formatResourceLine, st as MissingCdkCliError, t as DEFAULT_RESOURCE_TIMEOUT_MS, u as gray, ut as ProvisioningError, v as normalizeAwsTagsToCfn, w as IntrinsicFunctionResolver, x as findActionableSilentDrops, y as resolveExplicitPhysicalId, yt as normalizeAwsError, z as resolveApp } from "./deploy-engine-DgR-Ev-E.js";
3
+ import { A as S3StateBackend, B as resolveCaptureObservedState, C as assertRegionMatch, D as DagBuilder, E as DiffCalculator, F as buildDockerImage, G as CFN_TEMPLATE_BODY_LIMIT, H as resolveStateBucketWithDefault, I as Synthesizer, J as findLargeInlineResources, K as CFN_TEMPLATE_URL_LIMIT, L as getDefaultStateBucketName, M as AssetPublisher, N as stringifyValue, O as TemplateParser, P as WorkGraph, Q as resolveBucketRegion, R as getLegacyStateBucketName, S as CloudControlProvider, T as applyRoleArnIfSet, U as resolveStateBucketWithDefaultAndSource, V as resolveSkipPrefix, W as warnDeprecatedNoPrefixCliFlag, X as AssemblyReader, Y as uploadCfnTemplate, _ as matchesCdkPath, a as withRetry, at as LocalStartServiceError, b as ProviderRegistry, bt as withErrorHandling, c as bold, ct as NestedStackChildDirectDestroyError, d as green, dt as ResourceTimeoutError, et as CdkdError, f as red, ft as ResourceUpdateNotSupportedError, g as CDK_PATH_TAG, h as collectInlinePolicyNamesManagedBySiblings, i as withResourceDeadline, it as LocalMigrateError, j as shouldRetainResource, k as LockManager, l as cyan, lt as PartialFailureError, m as IAMRoleProvider, mt as StackTerminationProtectionError, n as DEFAULT_RESOURCE_WARN_AFTER_MS, o as IMPLICIT_DELETE_DEPENDENCIES, p as yellow, pt as StackHasActiveImportsError, q as MIGRATE_TMP_PREFIX, r as DeployEngine, rt as LocalInvokeBuildError$1, s as formatResourceLine, st as MissingCdkCliError, t as DEFAULT_RESOURCE_TIMEOUT_MS, u as gray, ut as ProvisioningError, v as normalizeAwsTagsToCfn, w as IntrinsicFunctionResolver, x as findActionableSilentDrops, y as resolveExplicitPhysicalId, yt as normalizeAwsError, z as resolveApp } from "./deploy-engine-DNfN9SJO.js";
4
4
  import { a as setAwsClients, i as resetAwsClients, r as getAwsClients, t as AwsClients } from "./aws-clients-B15NAPbL.js";
5
5
  import { AsyncLocalStorage } from "node:async_hooks";
6
6
  import { randomBytes, randomUUID } from "node:crypto";
@@ -8763,6 +8763,7 @@ var DynamoDBTableProvider = class {
8763
8763
  "BillingMode",
8764
8764
  "ProvisionedThroughput",
8765
8765
  "OnDemandThroughput",
8766
+ "WarmThroughput",
8766
8767
  "StreamSpecification",
8767
8768
  "GlobalSecondaryIndexes",
8768
8769
  "LocalSecondaryIndexes",
@@ -8804,6 +8805,7 @@ var DynamoDBTableProvider = class {
8804
8805
  };
8805
8806
  }
8806
8807
  if (properties["OnDemandThroughput"]) createParams.OnDemandThroughput = properties["OnDemandThroughput"];
8808
+ if (properties["WarmThroughput"]) createParams.WarmThroughput = properties["WarmThroughput"];
8807
8809
  if (properties["StreamSpecification"]) createParams.StreamSpecification = {
8808
8810
  StreamEnabled: true,
8809
8811
  StreamViewType: properties["StreamSpecification"]["StreamViewType"]
@@ -8863,6 +8865,15 @@ var DynamoDBTableProvider = class {
8863
8865
  this.logger.debug(`Updated OnDemandThroughput on DynamoDB table ${physicalId}`);
8864
8866
  }
8865
8867
  }
8868
+ if (JSON.stringify(properties["WarmThroughput"]) !== JSON.stringify(previousProperties["WarmThroughput"])) {
8869
+ if (properties["WarmThroughput"]) {
8870
+ await this.dynamoDBClient.send(new UpdateTableCommand({
8871
+ TableName: physicalId,
8872
+ WarmThroughput: properties["WarmThroughput"]
8873
+ }));
8874
+ this.logger.debug(`Updated WarmThroughput on DynamoDB table ${physicalId}`);
8875
+ }
8876
+ }
8866
8877
  if (JSON.stringify(properties["PointInTimeRecoverySpecification"]) !== JSON.stringify(previousProperties["PointInTimeRecoverySpecification"])) await this.applyPointInTimeRecovery(physicalId, properties["PointInTimeRecoverySpecification"], previousProperties["PointInTimeRecoverySpecification"]);
8867
8878
  if (JSON.stringify(properties["TimeToLiveSpecification"]) !== JSON.stringify(previousProperties["TimeToLiveSpecification"])) await this.applyTimeToLive(physicalId, properties["TimeToLiveSpecification"], previousProperties["TimeToLiveSpecification"]);
8868
8879
  return {
@@ -9143,6 +9154,12 @@ var DynamoDBTableProvider = class {
9143
9154
  if (table.OnDemandThroughput.MaxWriteRequestUnits !== void 0) odt["MaxWriteRequestUnits"] = table.OnDemandThroughput.MaxWriteRequestUnits;
9144
9155
  if (Object.keys(odt).length > 0) result["OnDemandThroughput"] = odt;
9145
9156
  }
9157
+ if (table.WarmThroughput) {
9158
+ const wt = {};
9159
+ if (table.WarmThroughput.ReadUnitsPerSecond !== void 0) wt["ReadUnitsPerSecond"] = table.WarmThroughput.ReadUnitsPerSecond;
9160
+ if (table.WarmThroughput.WriteUnitsPerSecond !== void 0) wt["WriteUnitsPerSecond"] = table.WarmThroughput.WriteUnitsPerSecond;
9161
+ if (Object.keys(wt).length > 0) result["WarmThroughput"] = wt;
9162
+ }
9146
9163
  if (table.StreamSpecification?.StreamEnabled && table.StreamSpecification.StreamViewType) result["StreamSpecification"] = {
9147
9164
  StreamEnabled: true,
9148
9165
  StreamViewType: table.StreamSpecification.StreamViewType
@@ -15915,21 +15932,30 @@ var ApiGatewayV2Provider = class {
15915
15932
  "ProtocolType",
15916
15933
  "Description",
15917
15934
  "CorsConfiguration",
15918
- "Tags"
15935
+ "Tags",
15936
+ "DisableExecuteApiEndpoint",
15937
+ "Version",
15938
+ "RouteSelectionExpression",
15939
+ "ApiKeySelectionExpression"
15919
15940
  ])],
15920
15941
  ["AWS::ApiGatewayV2::Stage", new Set([
15921
15942
  "ApiId",
15922
15943
  "StageName",
15923
15944
  "AutoDeploy",
15924
15945
  "Description",
15925
- "Tags"
15946
+ "Tags",
15947
+ "StageVariables",
15948
+ "DefaultRouteSettings"
15926
15949
  ])],
15927
15950
  ["AWS::ApiGatewayV2::Integration", new Set([
15928
15951
  "ApiId",
15929
15952
  "IntegrationType",
15930
15953
  "IntegrationUri",
15931
15954
  "IntegrationMethod",
15932
- "PayloadFormatVersion"
15955
+ "PayloadFormatVersion",
15956
+ "TimeoutInMillis",
15957
+ "RequestParameters",
15958
+ "Description"
15933
15959
  ])],
15934
15960
  ["AWS::ApiGatewayV2::Route", new Set([
15935
15961
  "ApiId",
@@ -15965,7 +15991,10 @@ var ApiGatewayV2Provider = class {
15965
15991
  ["BodyS3Location", "OpenAPI/Swagger spec on S3; routed through ImportApi, not the field-by-field CreateApi path."],
15966
15992
  ["FailOnWarnings", "OpenAPI-import-only flag; meaningful only on the ImportApi code path."],
15967
15993
  ["DisableSchemaValidation", "Schema-validation toggle on CreateApi/UpdateApi that AWS docs scope to WebSocket APIs using AWS::ApiGatewayV2::Model — that resource type is not yet registered in cdkd, so the toggle has no effect to wire."],
15968
- ["BasePath", "OpenAPI-import-only basePath override; meaningful only on the ImportApi code path."]
15994
+ ["BasePath", "OpenAPI-import-only basePath override; meaningful only on the ImportApi code path."],
15995
+ ["RouteKey", "Quick-create shortcut: CreateApi inline-creates a default route+integration from RouteKey/Target/CredentialsArn. cdkd models routes/integrations as explicit AWS::ApiGatewayV2::Route/::Integration resources, so this convenience field is not wired."],
15996
+ ["Target", "Quick-create shortcut (paired with RouteKey/CredentialsArn); cdkd models the integration as an explicit AWS::ApiGatewayV2::Integration resource instead."],
15997
+ ["CredentialsArn", "Quick-create shortcut (paired with RouteKey/Target); cdkd models the integration as an explicit AWS::ApiGatewayV2::Integration resource instead."]
15969
15998
  ])]]);
15970
15999
  getClient() {
15971
16000
  if (!this.client) this.client = new ApiGatewayV2Client(this.providerRegion ? { region: this.providerRegion } : {});
@@ -16035,6 +16064,10 @@ var ApiGatewayV2Provider = class {
16035
16064
  ProtocolType: protocolType,
16036
16065
  Description: properties["Description"],
16037
16066
  CorsConfiguration: properties["CorsConfiguration"],
16067
+ DisableExecuteApiEndpoint: properties["DisableExecuteApiEndpoint"],
16068
+ Version: properties["Version"],
16069
+ RouteSelectionExpression: properties["RouteSelectionExpression"],
16070
+ ApiKeySelectionExpression: properties["ApiKeySelectionExpression"],
16038
16071
  Tags: this.cfnTagsToRecord(properties["Tags"])
16039
16072
  }));
16040
16073
  const apiId = response.ApiId;
@@ -16081,6 +16114,8 @@ var ApiGatewayV2Provider = class {
16081
16114
  StageName: stageName,
16082
16115
  AutoDeploy: properties["AutoDeploy"],
16083
16116
  Description: properties["Description"],
16117
+ StageVariables: properties["StageVariables"],
16118
+ DefaultRouteSettings: properties["DefaultRouteSettings"],
16084
16119
  Tags: this.cfnTagsToRecord(properties["Tags"])
16085
16120
  }));
16086
16121
  this.logger.debug(`Successfully created API Gateway V2 Stage ${logicalId}: ${stageName}`);
@@ -16127,7 +16162,10 @@ var ApiGatewayV2Provider = class {
16127
16162
  IntegrationType: integrationType,
16128
16163
  IntegrationUri: properties["IntegrationUri"],
16129
16164
  IntegrationMethod: properties["IntegrationMethod"],
16130
- PayloadFormatVersion: properties["PayloadFormatVersion"]
16165
+ PayloadFormatVersion: properties["PayloadFormatVersion"],
16166
+ TimeoutInMillis: properties["TimeoutInMillis"],
16167
+ RequestParameters: properties["RequestParameters"],
16168
+ Description: properties["Description"]
16131
16169
  }))).IntegrationId;
16132
16170
  this.logger.debug(`Successfully created API Gateway V2 Integration ${logicalId}: ${integrationId}`);
16133
16171
  return {
@@ -16284,6 +16322,9 @@ var ApiGatewayV2Provider = class {
16284
16322
  result["Description"] = resp.Description ?? "";
16285
16323
  if (resp.ProtocolType === "HTTP") result["CorsConfiguration"] = resp.CorsConfiguration ?? {};
16286
16324
  if (resp.ProtocolType === "WEBSOCKET" && resp.RouteSelectionExpression !== void 0) result["RouteSelectionExpression"] = resp.RouteSelectionExpression;
16325
+ if (resp.ProtocolType === "WEBSOCKET" && resp.ApiKeySelectionExpression !== void 0) result["ApiKeySelectionExpression"] = resp.ApiKeySelectionExpression;
16326
+ if (resp.DisableExecuteApiEndpoint !== void 0) result["DisableExecuteApiEndpoint"] = resp.DisableExecuteApiEndpoint;
16327
+ if (resp.Version !== void 0) result["Version"] = resp.Version;
16287
16328
  result["Tags"] = normalizeAwsTagsToCfn(resp.Tags);
16288
16329
  return result;
16289
16330
  } catch (err) {
@@ -16303,6 +16344,8 @@ var ApiGatewayV2Provider = class {
16303
16344
  if (resp.StageName !== void 0) result["StageName"] = resp.StageName;
16304
16345
  result["AutoDeploy"] = resp.AutoDeploy ?? false;
16305
16346
  result["Description"] = resp.Description ?? "";
16347
+ if (resp.StageVariables !== void 0) result["StageVariables"] = resp.StageVariables;
16348
+ if (resp.DefaultRouteSettings !== void 0) result["DefaultRouteSettings"] = resp.DefaultRouteSettings;
16306
16349
  return result;
16307
16350
  } catch (err) {
16308
16351
  if (err instanceof NotFoundException$3) return void 0;
@@ -16322,6 +16365,9 @@ var ApiGatewayV2Provider = class {
16322
16365
  if (resp.IntegrationType === "AWS" || resp.IntegrationType === "AWS_PROXY" || resp.IntegrationType === "HTTP" || resp.IntegrationType === "HTTP_PROXY") result["IntegrationUri"] = resp.IntegrationUri ?? "";
16323
16366
  result["IntegrationMethod"] = resp.IntegrationMethod ?? "";
16324
16367
  result["PayloadFormatVersion"] = resp.PayloadFormatVersion ?? "";
16368
+ if (resp.TimeoutInMillis !== void 0) result["TimeoutInMillis"] = resp.TimeoutInMillis;
16369
+ if (resp.RequestParameters !== void 0) result["RequestParameters"] = resp.RequestParameters;
16370
+ if (resp.Description !== void 0) result["Description"] = resp.Description;
16325
16371
  return result;
16326
16372
  } catch (err) {
16327
16373
  if (err instanceof NotFoundException$3) return void 0;
@@ -16423,9 +16469,11 @@ var ApiGatewayV2Provider = class {
16423
16469
  /**
16424
16470
  * `UpdateApi` accepts the full Update input shape (not JSON Patch).
16425
16471
  * Mutable fields cdkd manages: `Name` / `Description` /
16426
- * `CorsConfiguration`. `ProtocolType` is immutable — the deploy
16427
- * engine handles changes via the replacement path; we surface a
16428
- * `ResourceUpdateNotSupportedError` if it ever reaches us anyway.
16472
+ * `CorsConfiguration` / `DisableExecuteApiEndpoint` / `Version` /
16473
+ * `RouteSelectionExpression` / `ApiKeySelectionExpression`.
16474
+ * `ProtocolType` is immutable the deploy engine handles changes via
16475
+ * the replacement path; we surface a `ResourceUpdateNotSupportedError`
16476
+ * if it ever reaches us anyway.
16429
16477
  */
16430
16478
  async updateApi(logicalId, physicalId, resourceType, properties, previousProperties) {
16431
16479
  if (properties["ProtocolType"] !== void 0 && previousProperties["ProtocolType"] !== void 0 && properties["ProtocolType"] !== previousProperties["ProtocolType"]) throw new ResourceUpdateNotSupportedError(resourceType, logicalId, "ProtocolType is immutable on AWS::ApiGatewayV2::Api; re-deploy with cdkd deploy --replace");
@@ -16443,6 +16491,22 @@ var ApiGatewayV2Provider = class {
16443
16491
  input.CorsConfiguration = properties["CorsConfiguration"];
16444
16492
  changed = true;
16445
16493
  }
16494
+ if (properties["DisableExecuteApiEndpoint"] !== void 0 && properties["DisableExecuteApiEndpoint"] !== previousProperties["DisableExecuteApiEndpoint"]) {
16495
+ input.DisableExecuteApiEndpoint = properties["DisableExecuteApiEndpoint"];
16496
+ changed = true;
16497
+ }
16498
+ if (properties["Version"] !== void 0 && properties["Version"] !== previousProperties["Version"]) {
16499
+ input.Version = properties["Version"];
16500
+ changed = true;
16501
+ }
16502
+ if (properties["RouteSelectionExpression"] !== void 0 && properties["RouteSelectionExpression"] !== previousProperties["RouteSelectionExpression"]) {
16503
+ input.RouteSelectionExpression = properties["RouteSelectionExpression"];
16504
+ changed = true;
16505
+ }
16506
+ if (properties["ApiKeySelectionExpression"] !== void 0 && properties["ApiKeySelectionExpression"] !== previousProperties["ApiKeySelectionExpression"]) {
16507
+ input.ApiKeySelectionExpression = properties["ApiKeySelectionExpression"];
16508
+ changed = true;
16509
+ }
16446
16510
  if (!changed) {
16447
16511
  this.logger.debug(`No mutable Api fields changed for ${logicalId}; skipping UpdateApi`);
16448
16512
  return {
@@ -16465,8 +16529,9 @@ var ApiGatewayV2Provider = class {
16465
16529
  /**
16466
16530
  * `UpdateStage` keys on `(ApiId, StageName)` — `StageName` is the
16467
16531
  * physicalId and immutable. Mutable fields cdkd manages:
16468
- * `AutoDeploy` / `Description`. `ApiId` is also immutable (a stage
16469
- * cannot be moved between APIs).
16532
+ * `AutoDeploy` / `Description` / `StageVariables` /
16533
+ * `DefaultRouteSettings`. `ApiId` is also immutable (a stage cannot be
16534
+ * moved between APIs).
16470
16535
  */
16471
16536
  async updateStage(logicalId, physicalId, resourceType, properties, previousProperties) {
16472
16537
  const apiId = properties["ApiId"] ?? previousProperties["ApiId"];
@@ -16486,6 +16551,14 @@ var ApiGatewayV2Provider = class {
16486
16551
  input.Description = properties["Description"];
16487
16552
  changed = true;
16488
16553
  }
16554
+ if (properties["StageVariables"] !== void 0 && !this.deepEqual(properties["StageVariables"], previousProperties["StageVariables"])) {
16555
+ input.StageVariables = properties["StageVariables"];
16556
+ changed = true;
16557
+ }
16558
+ if (properties["DefaultRouteSettings"] !== void 0 && !this.deepEqual(properties["DefaultRouteSettings"], previousProperties["DefaultRouteSettings"])) {
16559
+ input.DefaultRouteSettings = properties["DefaultRouteSettings"];
16560
+ changed = true;
16561
+ }
16489
16562
  if (!changed) {
16490
16563
  this.logger.debug(`No mutable Stage fields changed for ${logicalId}; skipping UpdateStage`);
16491
16564
  return {
@@ -16508,7 +16581,8 @@ var ApiGatewayV2Provider = class {
16508
16581
  /**
16509
16582
  * `UpdateIntegration` keys on `(ApiId, IntegrationId)`. Mutable
16510
16583
  * fields cdkd manages: `IntegrationType` / `IntegrationUri` /
16511
- * `IntegrationMethod` / `PayloadFormatVersion`.
16584
+ * `IntegrationMethod` / `PayloadFormatVersion` / `TimeoutInMillis` /
16585
+ * `RequestParameters` / `Description`.
16512
16586
  */
16513
16587
  async updateIntegration(logicalId, physicalId, resourceType, properties, previousProperties) {
16514
16588
  const apiId = properties["ApiId"] ?? previousProperties["ApiId"];
@@ -16535,6 +16609,18 @@ var ApiGatewayV2Provider = class {
16535
16609
  input.PayloadFormatVersion = properties["PayloadFormatVersion"];
16536
16610
  changed = true;
16537
16611
  }
16612
+ if (properties["TimeoutInMillis"] !== void 0 && properties["TimeoutInMillis"] !== previousProperties["TimeoutInMillis"]) {
16613
+ input.TimeoutInMillis = properties["TimeoutInMillis"];
16614
+ changed = true;
16615
+ }
16616
+ if (properties["RequestParameters"] !== void 0 && !this.deepEqual(properties["RequestParameters"], previousProperties["RequestParameters"])) {
16617
+ input.RequestParameters = properties["RequestParameters"];
16618
+ changed = true;
16619
+ }
16620
+ if (properties["Description"] !== void 0 && properties["Description"] !== previousProperties["Description"]) {
16621
+ input.Description = properties["Description"];
16622
+ changed = true;
16623
+ }
16538
16624
  if (!changed) {
16539
16625
  this.logger.debug(`No mutable Integration fields changed for ${logicalId}; skipping UpdateIntegration`);
16540
16626
  return {
@@ -51361,7 +51447,7 @@ function reorderArgs(argv) {
51361
51447
  */
51362
51448
  async function main() {
51363
51449
  const program = new Command();
51364
- program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.176.0");
51450
+ program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.178.0");
51365
51451
  program.addCommand(createBootstrapCommand());
51366
51452
  program.addCommand(createSynthCommand());
51367
51453
  program.addCommand(createListCommand());