@go-to-k/cdkd 0.268.3 → 0.268.5

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,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import { $ as WorkGraph, A as slowCcOperationTimeoutMs, At as warnDeprecatedNoPrefixCliFlag, B as applyRoleArnIfSet, Bt as resolveBucketRegion, C as yellow, Ct as resolveAutoAssetStorage, D as ProviderRegistry, Dt as resolveStateBucketWithDefaultAndSource, E as clearOnUpdateRemoval, Et as resolveStateBucketWithDefault, F as refStateLookupFromResource, Ft as uploadCfnTemplate, G as DagBuilder, H as describeTypeWithThrottleRetry, Ht as getAwsClients, I as WAFv2WebACLProvider, It as expectedOwnerParam, J as S3StateBackend, K as TemplateParser, Kt as CdkdError, L as normalizeAwsTagsToCfn, Lt as AssemblyReader, M as isTerminationProtectionPropagationError, Mt as CFN_TEMPLATE_URL_LIMIT, N as IntrinsicFunctionResolver, Nt as MIGRATE_TMP_PREFIX, O as findActionableSilentDrops, Ot as resolveUseCdkBootstrapAssets, P as cfnRefValueFromPhysicalId, Pt as findLargeInlineResources, Q as stringifyValue, Qt as LocalStartServiceError, R as resolveExplicitPhysicalId, Rt as processStackMessages, S as red, St as resolveApp, T as collectInlinePolicyNamesManagedBySiblings, Tt as resolveSkipPrefix, U as withRetry, Ut as resetAwsClients, V as DiffCalculator, Vt as AwsClients, W as isRetryableTransientError, Wt as setAwsClients, X as shouldRetainResource, Xt as LocalInvokeBuildError$1, Y as rebuildClientForBucketRegion, Yt as DeployCancelledError, Z as AssetPublisher, Zt as LocalMigrateError, _ as formatResourceLine, _t as getDockerImageBySourceHash, a as DeploymentEventsStore, an as ResourceUpdateNotSupportedError, at as BOOTSTRAP_MARKER_PREFIX, b as gray, bt as getDefaultStateBucketName, c as replayFailedOperations, ct as parseBootstrapMarker, d as IMPLICIT_DELETE_DEPENDENCIES, dt as buildDockerImage, en as MissingCdkCliError, et as buildAssetRedirectMap, f as computeImplicitDeleteEdges, fn as normalizeAwsError, ft as formatDockerLoginError, g as renderStatefulReason, gt as AssetManifestLoader, h as isStatefulRecreateTargetSync, ht as runDockerStreaming, i as DeploymentEventsReader, in as ResourceTimeoutError, it as AssetModeResolver, j as disableInstanceApiTermination, jt as CFN_TEMPLATE_BODY_LIMIT, k as CloudControlProvider, kt as stateBucketExistenceConfirmed, l as replayRollback, lt as validateAssetBucketName, m as MULTI_REGION_RECREATE_BLOCKED_TYPES, mt as runDockerForeground, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nn as PartialFailureError, nt as loadPublishableAssetManifest, o as planFailedOps, on as StackHasActiveImportsError, ot as ensureAssetStorage, p as extractDeploymentEventError, pn as withErrorHandling, pt as getDockerCmd, q as LockManager, r as DeployEngine, rn as ProvisioningError, rt as rewriteTemplateAssetReferences, s as planRollback, sn as StackTerminationProtectionError, st as getBootstrapMarkerKey, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as NestedStackChildDirectDestroyError, tt as createAssetRedirectResolver, u as withResourceDeadline, ut as validateContainerRepoName, v as bold, vt as Synthesizer, w as IAMRoleProvider, wt as resolveCaptureObservedState, x as green, xt as getLegacyStateBucketName, y as cyan, yt as synthesisStatusMessage, z as assertRegionMatch } from "./deploy-engine-DEi5-8x-.js";
2
+ import { $ as WorkGraph, A as slowCcOperationTimeoutMs, At as warnDeprecatedNoPrefixCliFlag, B as applyRoleArnIfSet, Bt as resolveBucketRegion, C as yellow, Ct as resolveAutoAssetStorage, D as ProviderRegistry, Dt as resolveStateBucketWithDefaultAndSource, E as clearOnUpdateRemoval, Et as resolveStateBucketWithDefault, F as refStateLookupFromResource, Ft as uploadCfnTemplate, G as DagBuilder, H as describeTypeWithThrottleRetry, Ht as getAwsClients, I as WAFv2WebACLProvider, It as expectedOwnerParam, J as S3StateBackend, K as TemplateParser, Kt as CdkdError, L as normalizeAwsTagsToCfn, Lt as AssemblyReader, M as isTerminationProtectionPropagationError, Mt as CFN_TEMPLATE_URL_LIMIT, N as IntrinsicFunctionResolver, Nt as MIGRATE_TMP_PREFIX, O as findActionableSilentDrops, Ot as resolveUseCdkBootstrapAssets, P as cfnRefValueFromPhysicalId, Pt as findLargeInlineResources, Q as stringifyValue, Qt as LocalStartServiceError, R as resolveExplicitPhysicalId, Rt as processStackMessages, S as red, St as resolveApp, T as collectInlinePolicyNamesManagedBySiblings, Tt as resolveSkipPrefix, U as withRetry, Ut as resetAwsClients, V as DiffCalculator, Vt as AwsClients, W as isRetryableTransientError, Wt as setAwsClients, X as shouldRetainResource, Xt as LocalInvokeBuildError$1, Y as rebuildClientForBucketRegion, Yt as DeployCancelledError, Z as AssetPublisher, Zt as LocalMigrateError, _ as formatResourceLine, _t as getDockerImageBySourceHash, a as DeploymentEventsStore, an as ResourceUpdateNotSupportedError, at as BOOTSTRAP_MARKER_PREFIX, b as gray, bt as getDefaultStateBucketName, c as replayFailedOperations, ct as parseBootstrapMarker, d as IMPLICIT_DELETE_DEPENDENCIES, dt as buildDockerImage, en as MissingCdkCliError, et as buildAssetRedirectMap, f as computeImplicitDeleteEdges, fn as normalizeAwsError, ft as formatDockerLoginError, g as renderStatefulReason, gt as AssetManifestLoader, h as isStatefulRecreateTargetSync, ht as runDockerStreaming, i as DeploymentEventsReader, in as ResourceTimeoutError, it as AssetModeResolver, j as disableInstanceApiTermination, jt as CFN_TEMPLATE_BODY_LIMIT, k as CloudControlProvider, kt as stateBucketExistenceConfirmed, l as replayRollback, lt as validateAssetBucketName, m as MULTI_REGION_RECREATE_BLOCKED_TYPES, mt as runDockerForeground, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nn as PartialFailureError, nt as loadPublishableAssetManifest, o as planFailedOps, on as StackHasActiveImportsError, ot as ensureAssetStorage, p as extractDeploymentEventError, pn as withErrorHandling, pt as getDockerCmd, q as LockManager, r as DeployEngine, rn as ProvisioningError, rt as rewriteTemplateAssetReferences, s as planRollback, sn as StackTerminationProtectionError, st as getBootstrapMarkerKey, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as NestedStackChildDirectDestroyError, tt as createAssetRedirectResolver, u as withResourceDeadline, ut as validateContainerRepoName, v as bold, vt as Synthesizer, w as IAMRoleProvider, wt as resolveCaptureObservedState, x as green, xt as getLegacyStateBucketName, y as cyan, yt as synthesisStatusMessage, z as assertRegionMatch } from "./deploy-engine-IGjv53i5.js";
3
3
  import { a as getLiveRenderer, c as PATTERN_B_RESOURCE_TYPES, d as generateResourceNameWithFallback, f as withSkipPrefix, i as runStackBuffered, n as getLogger, o as PATTERN_B_NAME_OPTIONS, p as withStackName, s as PATTERN_B_NAME_PROPERTIES, u as generateResourceName } from "./logger-BYMEE-BS.js";
4
- import { t as ASGProvider } from "./asg-provider-bxS6B6Ja.js";
4
+ import { t as ASGProvider } from "./asg-provider-Beq_IUQH.js";
5
5
  import { AsyncLocalStorage } from "node:async_hooks";
6
6
  import { createHash, randomBytes, randomUUID } from "node:crypto";
7
7
  import { CopyObjectCommand, CreateBucketCommand, DeleteBucketAnalyticsConfigurationCommand, DeleteBucketCommand, DeleteBucketCorsCommand, DeleteBucketIntelligentTieringConfigurationCommand, DeleteBucketInventoryConfigurationCommand, DeleteBucketLifecycleCommand, DeleteBucketMetricsConfigurationCommand, DeleteBucketPolicyCommand, DeleteBucketReplicationCommand, DeleteBucketTaggingCommand, DeleteBucketWebsiteCommand, DeleteObjectsCommand, GetBucketAccelerateConfigurationCommand, GetBucketCorsCommand, GetBucketEncryptionCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketLoggingCommand, GetBucketNotificationConfigurationCommand, GetBucketPolicyCommand, GetBucketReplicationCommand, GetBucketTaggingCommand, GetBucketVersioningCommand, GetBucketWebsiteCommand, GetObjectCommand, GetObjectLockConfigurationCommand, GetPublicAccessBlockCommand, HeadBucketCommand, ListBucketAnalyticsConfigurationsCommand, ListBucketIntelligentTieringConfigurationsCommand, ListBucketInventoryConfigurationsCommand, ListBucketMetricsConfigurationsCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchBucket, PutBucketAccelerateConfigurationCommand, PutBucketAnalyticsConfigurationCommand, PutBucketCorsCommand, PutBucketEncryptionCommand, PutBucketIntelligentTieringConfigurationCommand, PutBucketInventoryConfigurationCommand, PutBucketLifecycleConfigurationCommand, PutBucketLoggingCommand, PutBucketMetricsConfigurationCommand, PutBucketNotificationConfigurationCommand, PutBucketOwnershipControlsCommand, PutBucketPolicyCommand, PutBucketReplicationCommand, PutBucketTaggingCommand, PutBucketVersioningCommand, PutBucketWebsiteCommand, PutObjectCommand, PutObjectLockConfigurationCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
@@ -404,6 +404,28 @@ function validateWaitFlags(opts) {
404
404
  if (opts.wait === false && opts.fullWait === true) throw new Error("--no-wait and --full-wait cannot be combined: --no-wait skips stabilization waits, --full-wait adds them. Pick one.");
405
405
  }
406
406
  /**
407
+ * Validate the wait-flag pair and project it onto the process env the
408
+ * providers read. One helper instead of three separate lines in deploy.ts
409
+ * so the validation, the two mode envs, and the availability marker cannot
410
+ * drift apart individually (issue #1291 item 6 — the wiring had no unit
411
+ * coverage because it lived inline in the deploy command's action).
412
+ *
413
+ * - `CDKD_NO_WAIT` — set when `--no-wait` was passed; providers skip
414
+ * convenience stabilization waits.
415
+ * - `CDKD_FULL_WAIT` — set when `--full-wait` was passed; providers add
416
+ * the CloudFormation-side waits cdkd skips by default.
417
+ * - `CDKD_WAIT_FLAGS_AVAILABLE` — set unconditionally by commands that
418
+ * DECLARE the wait flags (today: deploy). Providers gate flag-mentioning
419
+ * hints on it, so `cdkd drift --revert` reaching the same provider code
420
+ * never advertises a flag drift does not accept (issue #1291 item 1).
421
+ */
422
+ function applyWaitFlagEnv(opts) {
423
+ validateWaitFlags(opts);
424
+ process.env["CDKD_WAIT_FLAGS_AVAILABLE"] = "true";
425
+ if (opts.wait === false) process.env["CDKD_NO_WAIT"] = "true";
426
+ if (opts.fullWait === true) process.env["CDKD_FULL_WAIT"] = "true";
427
+ }
428
+ /**
407
429
  * Drop the CDK-injected defensive `DependsOn` edges from VPC Lambdas (and
408
430
  * adjacent IAM Role / Policy / Lambda::Url / EventSourceMapping resources)
409
431
  * onto the private subnet's `DefaultRoute` / `RouteTableAssociation`. CDK
@@ -8446,7 +8468,9 @@ var LambdaFunctionProvider = class {
8446
8468
  try {
8447
8469
  await waitUntilFunctionUpdatedV2({
8448
8470
  client: this.lambdaClient,
8449
- maxWaitTime: this.functionUpdateMaxWaitSeconds
8471
+ maxWaitTime: this.functionUpdateMaxWaitSeconds,
8472
+ minDelay: 1,
8473
+ maxDelay: 5
8450
8474
  }, { FunctionName: functionName });
8451
8475
  } catch (error) {
8452
8476
  const cause = error instanceof Error ? error : void 0;
@@ -14821,6 +14845,7 @@ var EC2Provider = class {
14821
14845
  "BlockDeviceMappings",
14822
14846
  "Tags",
14823
14847
  "AvailabilityZone",
14848
+ "NetworkInterfaces",
14824
14849
  "DisableApiTermination",
14825
14850
  "MetadataOptions",
14826
14851
  "Monitoring",
@@ -15893,10 +15918,12 @@ var EC2Provider = class {
15893
15918
  const securityGroupIds = properties["SecurityGroupIds"];
15894
15919
  const securityGroups = properties["SecurityGroups"];
15895
15920
  const iamInstanceProfile = this.normalizeIamInstanceProfile(properties["IamInstanceProfile"]);
15921
+ const networkInterfaces = this.buildNetworkInterfaces(properties);
15896
15922
  const instance = (await this.ec2Client.send(new RunInstancesCommand({
15897
15923
  ImageId: imageId,
15898
15924
  InstanceType: instanceType,
15899
15925
  KeyName: properties["KeyName"] ?? void 0,
15926
+ NetworkInterfaces: networkInterfaces,
15900
15927
  SecurityGroupIds: securityGroupIds ?? void 0,
15901
15928
  SecurityGroups: securityGroups ?? void 0,
15902
15929
  SubnetId: properties["SubnetId"] ?? void 0,
@@ -16293,6 +16320,48 @@ var EC2Provider = class {
16293
16320
  return { AvailabilityZone: az };
16294
16321
  }
16295
16322
  /**
16323
+ * Map the CFn `AWS::EC2::Instance.NetworkInterfaces` list onto
16324
+ * RunInstances' `NetworkInterfaces` input (issue #1281). Every CFn
16325
+ * sub-field is mapped (dropping a sub-field silently would be the #1225
16326
+ * bug class one level down): the two casing/shape divergences are
16327
+ * `GroupSet` -> `Groups` and CFn's stringly-typed numerics
16328
+ * (`DeviceIndex`, `Ipv6AddressCount`, `SecondaryPrivateIpAddressCount`
16329
+ * arrive as strings from CDK) -> numbers.
16330
+ */
16331
+ buildNetworkInterfaces(properties) {
16332
+ const raw = properties["NetworkInterfaces"];
16333
+ if (!Array.isArray(raw) || raw.length === 0) return void 0;
16334
+ return raw.map((entry) => {
16335
+ const ni = entry ?? {};
16336
+ return {
16337
+ DeviceIndex: this.coerceNumber(ni["DeviceIndex"]),
16338
+ SubnetId: ni["SubnetId"] ?? void 0,
16339
+ Groups: ni["GroupSet"] ?? void 0,
16340
+ AssociatePublicIpAddress: this.coerceBool(ni["AssociatePublicIpAddress"]),
16341
+ AssociateCarrierIpAddress: this.coerceBool(ni["AssociateCarrierIpAddress"]),
16342
+ DeleteOnTermination: this.coerceBool(ni["DeleteOnTermination"]),
16343
+ Description: ni["Description"] ?? void 0,
16344
+ NetworkInterfaceId: ni["NetworkInterfaceId"] ?? void 0,
16345
+ PrivateIpAddress: ni["PrivateIpAddress"] ?? void 0,
16346
+ Ipv6AddressCount: this.coerceNumber(ni["Ipv6AddressCount"]),
16347
+ Ipv6Addresses: Array.isArray(ni["Ipv6Addresses"]) ? ni["Ipv6Addresses"].map((a) => ({ Ipv6Address: a?.["Ipv6Address"] ?? void 0 })) : void 0,
16348
+ PrivateIpAddresses: Array.isArray(ni["PrivateIpAddresses"]) ? ni["PrivateIpAddresses"].map((a) => ({
16349
+ Primary: this.coerceBool(a?.["Primary"]),
16350
+ PrivateIpAddress: a?.["PrivateIpAddress"] ?? void 0
16351
+ })) : void 0,
16352
+ SecondaryPrivateIpAddressCount: this.coerceNumber(ni["SecondaryPrivateIpAddressCount"])
16353
+ };
16354
+ });
16355
+ }
16356
+ /**
16357
+ * CFn numerics are stringly typed on the wire ("0", not 0); RunInstances
16358
+ * wants numbers. Tolerate both, return undefined for anything else.
16359
+ */
16360
+ coerceNumber(value) {
16361
+ if (typeof value === "number" && Number.isFinite(value)) return value;
16362
+ if (typeof value === "string" && value.trim() !== "" && Number.isFinite(Number(value))) return Number(value);
16363
+ }
16364
+ /**
16296
16365
  * Build the RunInstances `CreditSpecification` shape from the CFn
16297
16366
  * `CreditSpecification` object. CFn uses `CPUCredits` (capital CPU, the
16298
16367
  * canonical CDK `CfnInstance` emission); accept the SDK-style `CpuCredits`
@@ -16870,6 +16939,7 @@ var EC2Provider = class {
16870
16939
  */
16871
16940
  getDriftUnknownPaths(resourceType) {
16872
16941
  switch (resourceType) {
16942
+ case "AWS::EC2::Instance": return ["NetworkInterfaces"];
16873
16943
  case "AWS::EC2::Route":
16874
16944
  case "AWS::EC2::VPCGatewayAttachment":
16875
16945
  case "AWS::EC2::SubnetRouteTableAssociation":
@@ -16979,6 +17049,15 @@ var EC2Provider = class {
16979
17049
  }
16980
17050
  if (instance.Placement?.Tenancy !== void 0) result["Tenancy"] = instance.Placement.Tenancy;
16981
17051
  if (instance.IamInstanceProfile?.Arn !== void 0) result["IamInstanceProfile"] = instance.IamInstanceProfile.Arn;
17052
+ else if (process.env["CDKD_NO_WAIT"] === "true" && instance.State?.Name === "pending") try {
17053
+ const live = (await this.ec2Client.send(new DescribeIamInstanceProfileAssociationsCommand({ Filters: [{
17054
+ Name: "instance-id",
17055
+ Values: [physicalId]
17056
+ }] }))).IamInstanceProfileAssociations?.find((a) => a.State === "associated" || a.State === "associating");
17057
+ if (live?.IamInstanceProfile?.Arn !== void 0) result["IamInstanceProfile"] = live.IamInstanceProfile.Arn;
17058
+ } catch (error) {
17059
+ this.logger.warn(`Could not backfill IamInstanceProfile for ${physicalId} during the --no-wait capture (${error instanceof Error ? error.message : String(error)}); the field is omitted from the observed snapshot`);
17060
+ }
16982
17061
  const volumeIds = (instance.BlockDeviceMappings ?? []).filter((m) => m.Ebs?.VolumeId !== void 0).map((m) => m.Ebs.VolumeId);
16983
17062
  let volumesById = /* @__PURE__ */ new Map();
16984
17063
  if (volumeIds.length > 0) try {
@@ -22533,7 +22612,8 @@ var ECSProvider = class {
22533
22612
  return;
22534
22613
  }
22535
22614
  const clusterArg = cluster ? ` --cluster ${cluster}` : "";
22536
- this.logger.info(`ECS service ${logicalId} accepted (not waiting for steady state; pass --full-wait to wait). To wait manually: aws ecs wait services-stable${clusterArg} --services ${serviceRef}`);
22615
+ const fullWaitHint = process.env["CDKD_WAIT_FLAGS_AVAILABLE"] === "true" ? "; pass --full-wait to wait" : "";
22616
+ this.logger.info(`ECS service ${logicalId} accepted (not waiting for steady state${fullWaitHint}). To wait manually: aws ecs wait services-stable${clusterArg} --services ${serviceRef}`);
22537
22617
  }
22538
22618
  async updateService(logicalId, physicalId, resourceType, properties, previousProperties) {
22539
22619
  this.logger.debug(`Updating ECS service ${logicalId}: ${physicalId}`);
@@ -43079,13 +43159,11 @@ async function deployCommand(stacks, options) {
43079
43159
  }
43080
43160
  warnIfDeprecatedRegion(options);
43081
43161
  validateResourceTimeouts(options);
43082
- validateWaitFlags(options);
43162
+ applyWaitFlagEnv(options);
43083
43163
  await applyRoleArnIfSet({
43084
43164
  roleArn: options.roleArn,
43085
43165
  region: options.region
43086
43166
  });
43087
- if (!options.wait) process.env["CDKD_NO_WAIT"] = "true";
43088
- if (options.fullWait) process.env["CDKD_FULL_WAIT"] = "true";
43089
43167
  warnDeprecatedNoPrefixCliFlag();
43090
43168
  const skipPrefix = resolveSkipPrefix({ prefixUserSuppliedNames: options.prefixUserSuppliedNames });
43091
43169
  if (skipPrefix) logger.debug("Skipping stack-name prefix on user-supplied physical names (default since v0.94.0)");
@@ -43944,7 +44022,9 @@ async function retireCloudFormationStack(options) {
43944
44022
  }
43945
44023
  if (updateRan) await waitUntilStackUpdateComplete({
43946
44024
  client: cfnClient,
43947
- maxWaitTime: 1800
44025
+ maxWaitTime: 1800,
44026
+ minDelay: 5,
44027
+ maxDelay: 10
43948
44028
  }, { StackName: cfnStackName });
43949
44029
  } finally {
43950
44030
  const allCleanups = [...s3Cleanup ? [s3Cleanup] : [], ...nestedCleanups];
@@ -43960,7 +44040,9 @@ async function retireCloudFormationStack(options) {
43960
44040
  await cfnClient.send(new DeleteStackCommand({ StackName: cfnStackName }));
43961
44041
  await waitUntilStackDeleteComplete({
43962
44042
  client: cfnClient,
43963
- maxWaitTime: 1800
44043
+ maxWaitTime: 1800,
44044
+ minDelay: 5,
44045
+ maxDelay: 10
43964
44046
  }, { StackName: cfnStackName });
43965
44047
  logger.info(`✓ CloudFormation stack '${cfnStackName}' retired. AWS resources are now solely managed by cdkd.`);
43966
44048
  return { outcome: modified ? "retired" : "no-template-change" };
@@ -48153,7 +48235,9 @@ async function submitImportChangeSet(cfnClient, stackName, template, resourcesTo
48153
48235
  try {
48154
48236
  await waitUntilChangeSetCreateComplete({
48155
48237
  client: cfnClient,
48156
- maxWaitTime: 600
48238
+ maxWaitTime: 600,
48239
+ minDelay: 2,
48240
+ maxDelay: 5
48157
48241
  }, {
48158
48242
  StackName: stackName,
48159
48243
  ChangeSetName: changeSetName
@@ -48182,7 +48266,9 @@ async function submitImportChangeSet(cfnClient, stackName, template, resourcesTo
48182
48266
  }));
48183
48267
  await waitUntilStackImportComplete({
48184
48268
  client: cfnClient,
48185
- maxWaitTime: 3600
48269
+ maxWaitTime: 3600,
48270
+ minDelay: 5,
48271
+ maxDelay: 10
48186
48272
  }, { StackName: stackName });
48187
48273
  } catch (err) {
48188
48274
  const failureSummary = await collectImportFailureSummary(cfnClient, stackName).catch(() => "");
@@ -48282,7 +48368,9 @@ async function flipStackToUpdateComplete(cfnClient, cfnStackName, parameters) {
48282
48368
  }));
48283
48369
  await waitUntilStackUpdateComplete({
48284
48370
  client: cfnClient,
48285
- maxWaitTime: 1800
48371
+ maxWaitTime: 1800,
48372
+ minDelay: 5,
48373
+ maxDelay: 10
48286
48374
  }, { StackName: cfnStackName });
48287
48375
  }
48288
48376
  /**
@@ -48881,7 +48969,9 @@ async function executeUpdateChangeSet(cfnClient, stackName, template, parameters
48881
48969
  try {
48882
48970
  await waitUntilChangeSetCreateComplete({
48883
48971
  client: cfnClient,
48884
- maxWaitTime: 600
48972
+ maxWaitTime: 600,
48973
+ minDelay: 2,
48974
+ maxDelay: 5
48885
48975
  }, {
48886
48976
  StackName: stackName,
48887
48977
  ChangeSetName: changeSetName
@@ -48910,7 +49000,9 @@ async function executeUpdateChangeSet(cfnClient, stackName, template, parameters
48910
49000
  }));
48911
49001
  await waitUntilStackUpdateComplete({
48912
49002
  client: cfnClient,
48913
- maxWaitTime: 3600
49003
+ maxWaitTime: 3600,
49004
+ minDelay: 5,
49005
+ maxDelay: 10
48914
49006
  }, { StackName: stackName });
48915
49007
  } catch (err) {
48916
49008
  await cfnClient.send(new DeleteChangeSetCommand({
@@ -62725,7 +62817,7 @@ function createMigrateCommand() {
62725
62817
  */
62726
62818
  function buildProgram() {
62727
62819
  const program = new Command();
62728
- program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.268.3");
62820
+ program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.268.5");
62729
62821
  program.hook("preAction", (_thisCommand, actionCommand) => {
62730
62822
  const { profile } = actionCommand.optsWithGlobals();
62731
62823
  if (profile !== void 0) process.env["AWS_PROFILE"] = profile;