aws-cdk 2.1136.0 → 2.1137.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/lib/index.js CHANGED
@@ -3695,7 +3695,7 @@ var require_semver2 = __commonJS({
3695
3695
  // ../@aws-cdk/cloud-assembly-schema/cli-version.json
3696
3696
  var require_cli_version = __commonJS({
3697
3697
  "../@aws-cdk/cloud-assembly-schema/cli-version.json"(exports2, module2) {
3698
- module2.exports = { version: "2.1136.0" };
3698
+ module2.exports = { version: "2.1137.0" };
3699
3699
  }
3700
3700
  });
3701
3701
 
@@ -95072,28 +95072,30 @@ async function createChangeSetAndCleanup(ioHelper, options) {
95072
95072
  Capabilities: ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM", "CAPABILITY_AUTO_EXPAND"]
95073
95073
  });
95074
95074
  await ioHelper.defaults.debug((0, import_node_util2.format)("Initiated creation of changeset: %s; waiting for it to finish creating...", changeSet.Id));
95075
- const createdChangeSet = await new ChangeSetDescriber({
95076
- cfn: options.cfn,
95077
- ioHelper,
95078
- stackNameOrArn: changeSet.StackId ?? options.stack.stackName,
95079
- changeSetNameOrArn: changeSet.Id ?? options.changeSetName
95080
- }).waitAndThrowOnProblem({
95081
- diagnoser: options.diagnoser
95082
- });
95083
- await cleanupOldChangeset(
95084
- options.cfn,
95085
- ioHelper,
95086
- changeSet.Id ?? options.changeSetName,
95087
- changeSet.StackId ?? options.stack.stackName
95088
- );
95089
- if (!options.exists) {
95090
- await ioHelper.defaults.debug((0, import_node_util2.format)("Deleting empty stack created by diff changeset: %s", changeSet.StackId ?? options.stack.stackName));
95091
- await options.cfn.deleteStack({
95092
- StackName: changeSet.StackId ?? options.stack.stackName,
95093
- ClientRequestToken: (0, import_node_crypto9.randomUUID)()
95075
+ const changeSetId = changeSet.Id ?? options.changeSetName;
95076
+ const stackId = changeSet.StackId ?? options.stack.stackName;
95077
+ try {
95078
+ return await new ChangeSetDescriber({
95079
+ cfn: options.cfn,
95080
+ ioHelper,
95081
+ stackNameOrArn: stackId,
95082
+ changeSetNameOrArn: changeSetId
95083
+ }).waitAndThrowOnProblem({
95084
+ diagnoser: options.diagnoser
95094
95085
  });
95086
+ } catch (e6) {
95087
+ await ioHelper.defaults.warn((0, import_node_util2.format)("Change set %s failed: %s", changeSetId, e6));
95088
+ throw e6;
95089
+ } finally {
95090
+ await cleanupOldChangeset(options.cfn, ioHelper, changeSetId, stackId);
95091
+ if (!options.exists) {
95092
+ await ioHelper.defaults.debug((0, import_node_util2.format)("Deleting empty stack created by diff changeset: %s", stackId));
95093
+ await options.cfn.deleteStack({
95094
+ StackName: stackId,
95095
+ ClientRequestToken: (0, import_node_crypto9.randomUUID)()
95096
+ });
95097
+ }
95095
95098
  }
95096
- return createdChangeSet;
95097
95099
  }
95098
95100
  async function createValidationChangeSet(ioHelper, options) {
95099
95101
  const { cfn, bodyParameter, exists, stackExistedBefore, executionRoleArn, diagnoser } = await prepareChangeSetEnv(ioHelper, options);
@@ -95373,306 +95375,6 @@ var init_checks = __esm({
95373
95375
  }
95374
95376
  });
95375
95377
 
95376
- // ../@aws-cdk/toolkit-lib/lib/api/deployments/assets.ts
95377
- async function addMetadataAssetsToManifest(ioHelper, stack, assetManifest, envResources, reuse) {
95378
- reuse = reuse || [];
95379
- const assets = stack.assets;
95380
- if (assets.length === 0) {
95381
- return {};
95382
- }
95383
- const toolkitInfo = await envResources.lookupToolkit();
95384
- if (!toolkitInfo.found) {
95385
- throw new ToolkitError("BootstrapStackRequired", `This stack uses assets, so the toolkit stack must be deployed to the environment (Run "${import_chalk3.default.blue("cdk bootstrap " + stack.environment.name)}")`);
95386
- }
95387
- const params = {};
95388
- for (const asset of assets) {
95389
- const reuseAsset = reuse.indexOf(asset.id) > -1;
95390
- if (reuseAsset) {
95391
- await ioHelper.defaults.debug(`Reusing asset ${asset.id}: ${JSON.stringify(asset)}`);
95392
- continue;
95393
- }
95394
- await ioHelper.defaults.debug(`Preparing asset ${asset.id}: ${JSON.stringify(asset)}`);
95395
- if (!stack.assembly) {
95396
- throw new ToolkitError("AssemblyRequired", "Unexpected: stack assembly is required in order to find assets in assembly directory");
95397
- }
95398
- Object.assign(params, await prepareAsset(ioHelper, asset, assetManifest, envResources, toolkitInfo));
95399
- }
95400
- return params;
95401
- }
95402
- async function prepareAsset(ioHelper, asset, assetManifest, envResources, toolkitInfo) {
95403
- switch (asset.packaging) {
95404
- case "zip":
95405
- case "file":
95406
- return prepareFileAsset(
95407
- ioHelper,
95408
- asset,
95409
- assetManifest,
95410
- toolkitInfo,
95411
- asset.packaging === "zip" ? cxschema8.FileAssetPackaging.ZIP_DIRECTORY : cxschema8.FileAssetPackaging.FILE
95412
- );
95413
- case "container-image":
95414
- return prepareDockerImageAsset(asset, assetManifest, envResources);
95415
- default:
95416
- throw new ToolkitError("UnsupportedPackaging", `Unsupported packaging type: ${asset.packaging}. You might need to upgrade your aws-cdk toolkit to support this asset type.`);
95417
- }
95418
- }
95419
- async function prepareFileAsset(ioHelper, asset, assetManifest, toolkitInfo, packaging) {
95420
- const extension = packaging === cxschema8.FileAssetPackaging.ZIP_DIRECTORY ? ".zip" : path18.extname(asset.path);
95421
- const baseName = `${asset.sourceHash}${extension}`;
95422
- const s3Prefix = asset.id === asset.sourceHash ? "assets/" : `assets/${asset.id}/`;
95423
- const key = `${s3Prefix}${baseName}`;
95424
- const s3url = `s3://${toolkitInfo.bucketName}/${key}`;
95425
- await ioHelper.defaults.debug(`Storing asset ${asset.path} at ${s3url}`);
95426
- assetManifest.addFileAsset(asset.sourceHash, {
95427
- path: asset.path,
95428
- packaging
95429
- }, {
95430
- bucketName: toolkitInfo.bucketName,
95431
- objectKey: key
95432
- });
95433
- return {
95434
- [asset.s3BucketParameter]: toolkitInfo.bucketName,
95435
- [asset.s3KeyParameter]: `${s3Prefix}${cxapi3.ASSET_PREFIX_SEPARATOR}${baseName}`,
95436
- [asset.artifactHashParameter]: asset.sourceHash
95437
- };
95438
- }
95439
- async function prepareDockerImageAsset(asset, assetManifest, envResources) {
95440
- if (!asset.imageNameParameter && (!asset.repositoryName || !asset.imageTag)) {
95441
- throw new ToolkitError("InvalidDockerAssetConfig", 'Invalid Docker image asset configuration: "repositoryName" and "imageTag" are required when "imageNameParameter" is left out');
95442
- }
95443
- const repositoryName = asset.repositoryName ?? "cdk/" + asset.id.replace(/[:/]/g, "-").toLowerCase();
95444
- const { repositoryUri: repositoryUri2 } = await envResources.prepareEcrRepository(repositoryName);
95445
- const imageTag = asset.imageTag ?? asset.sourceHash;
95446
- assetManifest.addDockerImageAsset(asset.sourceHash, {
95447
- directory: asset.path,
95448
- dockerBuildArgs: asset.buildArgs,
95449
- dockerBuildSecrets: asset.buildSecrets,
95450
- dockerBuildSsh: asset.buildSsh,
95451
- dockerBuildTarget: asset.target,
95452
- dockerFile: asset.file,
95453
- networkMode: asset.networkMode,
95454
- platform: asset.platform,
95455
- dockerOutputs: asset.outputs
95456
- }, {
95457
- repositoryName,
95458
- imageTag
95459
- });
95460
- if (!asset.imageNameParameter) {
95461
- return {};
95462
- }
95463
- return { [asset.imageNameParameter]: `${repositoryUri2}:${imageTag}` };
95464
- }
95465
- var path18, cxapi3, cxschema8, import_chalk3;
95466
- var init_assets3 = __esm({
95467
- "../@aws-cdk/toolkit-lib/lib/api/deployments/assets.ts"() {
95468
- "use strict";
95469
- path18 = __toESM(require("path"));
95470
- cxapi3 = __toESM(require_lib3());
95471
- cxschema8 = __toESM(require_lib2());
95472
- import_chalk3 = __toESM(require_source());
95473
- init_toolkit_error();
95474
- __name(addMetadataAssetsToManifest, "addMetadataAssetsToManifest");
95475
- __name(prepareAsset, "prepareAsset");
95476
- __name(prepareFileAsset, "prepareFileAsset");
95477
- __name(prepareDockerImageAsset, "prepareDockerImageAsset");
95478
- }
95479
- });
95480
-
95481
- // ../@aws-cdk/toolkit-lib/lib/actions/deploy/private/deployment-method.ts
95482
- function isChangeSetDeployment(method) {
95483
- return method?.method === "change-set";
95484
- }
95485
- function isExecutingChangeSetDeployment(method) {
95486
- return isChangeSetDeployment(method) && (method.execute ?? true);
95487
- }
95488
- function isNonExecutingChangeSetDeployment(method) {
95489
- return isChangeSetDeployment(method) && method.execute === false;
95490
- }
95491
- function isExecuteChangeSetDeployment(method) {
95492
- return method?.method === "execute-change-set";
95493
- }
95494
- function toExecuteChangeSetDeployment(method) {
95495
- return {
95496
- method: "execute-change-set",
95497
- changeSetName: method.changeSetName ?? DEFAULT_DEPLOY_CHANGE_SET_NAME
95498
- };
95499
- }
95500
- var DEFAULT_DEPLOY_CHANGE_SET_NAME;
95501
- var init_deployment_method = __esm({
95502
- "../@aws-cdk/toolkit-lib/lib/actions/deploy/private/deployment-method.ts"() {
95503
- "use strict";
95504
- DEFAULT_DEPLOY_CHANGE_SET_NAME = "cdk-deploy-change-set";
95505
- __name(isChangeSetDeployment, "isChangeSetDeployment");
95506
- __name(isExecutingChangeSetDeployment, "isExecutingChangeSetDeployment");
95507
- __name(isNonExecutingChangeSetDeployment, "isNonExecutingChangeSetDeployment");
95508
- __name(isExecuteChangeSetDeployment, "isExecuteChangeSetDeployment");
95509
- __name(toExecuteChangeSetDeployment, "toExecuteChangeSetDeployment");
95510
- }
95511
- });
95512
-
95513
- // ../@aws-cdk/toolkit-lib/lib/payloads/hotswap.ts
95514
- var NonHotswappableReason;
95515
- var init_hotswap = __esm({
95516
- "../@aws-cdk/toolkit-lib/lib/payloads/hotswap.ts"() {
95517
- "use strict";
95518
- NonHotswappableReason = /* @__PURE__ */ ((NonHotswappableReason2) => {
95519
- NonHotswappableReason2["TAGS"] = "tags";
95520
- NonHotswappableReason2["PROPERTIES"] = "properties";
95521
- NonHotswappableReason2["OUTPUT"] = "output";
95522
- NonHotswappableReason2["DEPENDENCY_UNSUPPORTED"] = "dependency-unsupported";
95523
- NonHotswappableReason2["RESOURCE_UNSUPPORTED"] = "resource-unsupported";
95524
- NonHotswappableReason2["RESOURCE_CREATION"] = "resource-creation";
95525
- NonHotswappableReason2["RESOURCE_DELETION"] = "resource-deletion";
95526
- NonHotswappableReason2["RESOURCE_TYPE_CHANGED"] = "resource-type-changed";
95527
- NonHotswappableReason2["NESTED_STACK_CREATION"] = "nested-stack-creation";
95528
- return NonHotswappableReason2;
95529
- })(NonHotswappableReason || {});
95530
- }
95531
- });
95532
-
95533
- // ../@aws-cdk/toolkit-lib/lib/api/hotswap/common.ts
95534
- function createHotswapPropertyOverrides(props) {
95535
- return new HotswapPropertyOverrides(new EcsHotswapProperties(
95536
- props.ecs?.minimumHealthyPercent,
95537
- props.ecs?.maximumHealthyPercent,
95538
- props.ecs?.stabilizationTimeoutSeconds
95539
- ));
95540
- }
95541
- function classifyChanges(xs, hotswappablePropNames) {
95542
- const hotswappableProps = {};
95543
- const nonHotswappableProps = {};
95544
- for (const [name, propDiff] of Object.entries(xs.propertyUpdates)) {
95545
- if (hotswappablePropNames.includes(name)) {
95546
- hotswappableProps[name] = propDiff;
95547
- } else {
95548
- nonHotswappableProps[name] = propDiff;
95549
- }
95550
- }
95551
- return new ClassifiedChanges(xs, hotswappableProps, nonHotswappableProps);
95552
- }
95553
- function nonHotswappableChange(change, reason, description, nonHotswappableProps, hotswapOnlyVisible = true) {
95554
- return {
95555
- hotswappable: false,
95556
- hotswapOnlyVisible,
95557
- change: {
95558
- reason,
95559
- description,
95560
- subject: {
95561
- type: "Resource",
95562
- logicalId: change.logicalId,
95563
- resourceType: change.newValue.Type,
95564
- rejectedProperties: Object.keys(nonHotswappableProps ?? change.propertyUpdates),
95565
- metadata: change.metadata
95566
- }
95567
- }
95568
- };
95569
- }
95570
- function nonHotswappableResource(change) {
95571
- return {
95572
- hotswappable: false,
95573
- change: {
95574
- reason: "resource-unsupported" /* RESOURCE_UNSUPPORTED */,
95575
- description: "This resource type is not supported for hotswap deployments",
95576
- subject: {
95577
- type: "Resource",
95578
- logicalId: change.logicalId,
95579
- resourceType: change.newValue.Type,
95580
- rejectedProperties: Object.keys(change.propertyUpdates),
95581
- metadata: change.metadata
95582
- }
95583
- }
95584
- };
95585
- }
95586
- var ICON, HotswapPropertyOverrides, EcsHotswapProperties, ClassifiedChanges;
95587
- var init_common3 = __esm({
95588
- "../@aws-cdk/toolkit-lib/lib/api/hotswap/common.ts"() {
95589
- "use strict";
95590
- init_hotswap();
95591
- init_toolkit_error();
95592
- ICON = "\u2728";
95593
- HotswapPropertyOverrides = class {
95594
- static {
95595
- __name(this, "HotswapPropertyOverrides");
95596
- }
95597
- // Each supported resource type will have its own properties. Currently this is ECS
95598
- ecs;
95599
- constructor(ecs) {
95600
- this.ecs = ecs;
95601
- }
95602
- };
95603
- EcsHotswapProperties = class {
95604
- static {
95605
- __name(this, "EcsHotswapProperties");
95606
- }
95607
- // The lower limit on the number of your service's tasks that must remain in the RUNNING state during a deployment, as a percentage of the desiredCount
95608
- minimumHealthyPercent;
95609
- // The upper limit on the number of your service's tasks that are allowed in the RUNNING or PENDING state during a deployment, as a percentage of the desiredCount
95610
- maximumHealthyPercent;
95611
- // The number of seconds to wait for a single service to reach stable state.
95612
- stabilizationTimeoutSeconds;
95613
- constructor(minimumHealthyPercent, maximumHealthyPercent, stabilizationTimeoutSeconds) {
95614
- if (minimumHealthyPercent !== void 0 && minimumHealthyPercent < 0) {
95615
- throw new ToolkitError("InvalidEcsMinHealthyPercent", "hotswap-ecs-minimum-healthy-percent can't be a negative number");
95616
- }
95617
- if (maximumHealthyPercent !== void 0 && maximumHealthyPercent < 0) {
95618
- throw new ToolkitError("InvalidEcsMaxHealthyPercent", "hotswap-ecs-maximum-healthy-percent can't be a negative number");
95619
- }
95620
- if (stabilizationTimeoutSeconds !== void 0 && stabilizationTimeoutSeconds < 0) {
95621
- throw new ToolkitError("InvalidEcsStabilizationTimeout", "hotswap-ecs-stabilization-timeout-seconds can't be a negative number");
95622
- }
95623
- if (minimumHealthyPercent == void 0) {
95624
- this.minimumHealthyPercent = 0;
95625
- } else {
95626
- this.minimumHealthyPercent = minimumHealthyPercent;
95627
- }
95628
- this.maximumHealthyPercent = maximumHealthyPercent;
95629
- this.stabilizationTimeoutSeconds = stabilizationTimeoutSeconds;
95630
- }
95631
- /**
95632
- * Check if any hotswap properties are defined
95633
- * @returns true if all properties are undefined, false otherwise
95634
- */
95635
- isEmpty() {
95636
- return this.minimumHealthyPercent === 0 && this.maximumHealthyPercent === void 0;
95637
- }
95638
- };
95639
- __name(createHotswapPropertyOverrides, "createHotswapPropertyOverrides");
95640
- ClassifiedChanges = class {
95641
- constructor(change, hotswappableProps, nonHotswappableProps) {
95642
- this.change = change;
95643
- this.hotswappableProps = hotswappableProps;
95644
- this.nonHotswappableProps = nonHotswappableProps;
95645
- }
95646
- change;
95647
- hotswappableProps;
95648
- nonHotswappableProps;
95649
- static {
95650
- __name(this, "ClassifiedChanges");
95651
- }
95652
- reportNonHotswappablePropertyChanges(ret) {
95653
- const nonHotswappablePropNames = Object.keys(this.nonHotswappableProps);
95654
- if (nonHotswappablePropNames.length > 0) {
95655
- const tagOnlyChange = nonHotswappablePropNames.length === 1 && nonHotswappablePropNames[0] === "Tags";
95656
- const reason = tagOnlyChange ? "tags" /* TAGS */ : "properties" /* PROPERTIES */;
95657
- const description = tagOnlyChange ? "Tags are not hotswappable" : `resource properties '${nonHotswappablePropNames}' are not hotswappable on this resource type`;
95658
- ret.push(nonHotswappableChange(
95659
- this.change,
95660
- reason,
95661
- description,
95662
- this.nonHotswappableProps
95663
- ));
95664
- }
95665
- }
95666
- get namesOfHotswappableProps() {
95667
- return Object.keys(this.hotswappableProps);
95668
- }
95669
- };
95670
- __name(classifyChanges, "classifyChanges");
95671
- __name(nonHotswappableChange, "nonHotswappableChange");
95672
- __name(nonHotswappableResource, "nonHotswappableResource");
95673
- }
95674
- });
95675
-
95676
95378
  // ../../node_modules/@cdklabs/tskb/lib/sorted-map.js
95677
95379
  var require_sorted_map = __commonJS({
95678
95380
  "../../node_modules/@cdklabs/tskb/lib/sorted-map.js"(exports2) {
@@ -97518,12 +97220,12 @@ function defaultResource(resource, statements) {
97518
97220
  statements.forEach((s2) => s2.resources.replaceStar(resource));
97519
97221
  return statements;
97520
97222
  }
97521
- var import_service_spec_types, import_chalk4, IamChanges;
97223
+ var import_service_spec_types, import_chalk3, IamChanges;
97522
97224
  var init_iam_changes = __esm({
97523
97225
  "../@aws-cdk/cloudformation-diff/lib/iam/iam-changes.ts"() {
97524
97226
  "use strict";
97525
97227
  import_service_spec_types = __toESM(require_lib7());
97526
- import_chalk4 = __toESM(require_source());
97228
+ import_chalk3 = __toESM(require_source());
97527
97229
  init_iam_identity_center();
97528
97230
  init_managed_policy();
97529
97231
  init_statement();
@@ -97593,7 +97295,7 @@ var init_iam_changes = __esm({
97593
97295
  renderedStatement.action,
97594
97296
  renderedStatement.principal,
97595
97297
  renderedStatement.condition
97596
- ].map((s2) => import_chalk4.default.green(s2)));
97298
+ ].map((s2) => import_chalk3.default.green(s2)));
97597
97299
  }
97598
97300
  for (const statement of this.statements.removals) {
97599
97301
  const renderedStatement = statement.render();
@@ -97604,7 +97306,7 @@ var init_iam_changes = __esm({
97604
97306
  renderedStatement.action,
97605
97307
  renderedStatement.principal,
97606
97308
  renderedStatement.condition
97607
- ].map((s2) => import_chalk4.default.red(s2)));
97309
+ ].map((s2) => import_chalk3.default.red(s2)));
97608
97310
  }
97609
97311
  ret.sort(makeComparator((row) => [row[1]]));
97610
97312
  ret.splice(0, 0, header);
@@ -97618,14 +97320,14 @@ var init_iam_changes = __esm({
97618
97320
  "+",
97619
97321
  att.identityArn,
97620
97322
  att.managedPolicyArn
97621
- ].map((s2) => import_chalk4.default.green(s2)));
97323
+ ].map((s2) => import_chalk3.default.green(s2)));
97622
97324
  }
97623
97325
  for (const att of this.managedPolicies.removals) {
97624
97326
  ret.push([
97625
97327
  "-",
97626
97328
  att.identityArn,
97627
97329
  att.managedPolicyArn
97628
- ].map((s2) => import_chalk4.default.red(s2)));
97330
+ ].map((s2) => import_chalk3.default.red(s2)));
97629
97331
  }
97630
97332
  ret.sort(makeComparator((row) => [row[1]]));
97631
97333
  ret.splice(0, 0, header);
@@ -97644,7 +97346,7 @@ var init_iam_changes = __esm({
97644
97346
  att.principalType || "",
97645
97347
  att.targetId || "",
97646
97348
  att.targetType || ""
97647
- ].map((s2) => import_chalk4.default.green(s2)));
97349
+ ].map((s2) => import_chalk3.default.green(s2)));
97648
97350
  }
97649
97351
  for (const att of this.ssoAssignments.removals) {
97650
97352
  ret.push([
@@ -97656,7 +97358,7 @@ var init_iam_changes = __esm({
97656
97358
  att.principalType || "",
97657
97359
  att.targetId || "",
97658
97360
  att.targetType || ""
97659
- ].map((s2) => import_chalk4.default.red(s2)));
97361
+ ].map((s2) => import_chalk3.default.red(s2)));
97660
97362
  }
97661
97363
  ret.sort(makeComparator((row) => [row[1]]));
97662
97364
  ret.splice(0, 0, header);
@@ -97675,7 +97377,7 @@ var init_iam_changes = __esm({
97675
97377
  att.cfnLogicalId || "",
97676
97378
  att.ssoInstanceArn || "",
97677
97379
  att.accessControlAttributes?.map(formatAccessControlAttribute).join("\n") || ""
97678
- ].map((s2) => import_chalk4.default.green(s2)));
97380
+ ].map((s2) => import_chalk3.default.green(s2)));
97679
97381
  }
97680
97382
  for (const att of this.ssoInstanceACAConfigs.removals) {
97681
97383
  ret.push([
@@ -97683,7 +97385,7 @@ var init_iam_changes = __esm({
97683
97385
  att.cfnLogicalId || "",
97684
97386
  att.ssoInstanceArn || "",
97685
97387
  att.accessControlAttributes?.map(formatAccessControlAttribute).join("\n") || ""
97686
- ].map((s2) => import_chalk4.default.red(s2)));
97388
+ ].map((s2) => import_chalk3.default.red(s2)));
97687
97389
  }
97688
97390
  ret.sort(makeComparator((row) => [row[1]]));
97689
97391
  ret.splice(0, 0, header);
@@ -97716,7 +97418,7 @@ var init_iam_changes = __esm({
97716
97418
  att.name || "",
97717
97419
  formatSsoPermissionsBoundary(att.ssoPermissionsBoundary),
97718
97420
  att.ssoCustomerManagedPolicyReferences?.map(formatManagedPolicyRef).join("\n") || ""
97719
- ].map((s2) => import_chalk4.default.green(s2)));
97421
+ ].map((s2) => import_chalk3.default.green(s2)));
97720
97422
  }
97721
97423
  for (const att of this.ssoPermissionSets.removals) {
97722
97424
  ret.push([
@@ -97726,7 +97428,7 @@ var init_iam_changes = __esm({
97726
97428
  att.name || "",
97727
97429
  formatSsoPermissionsBoundary(att.ssoPermissionsBoundary),
97728
97430
  att.ssoCustomerManagedPolicyReferences?.map(formatManagedPolicyRef).join("\n") || ""
97729
- ].map((s2) => import_chalk4.default.red(s2)));
97431
+ ].map((s2) => import_chalk3.default.red(s2)));
97730
97432
  }
97731
97433
  ret.sort(makeComparator((row) => [row[1]]));
97732
97434
  ret.splice(0, 0, header);
@@ -98046,11 +97748,11 @@ var init_security_group_rule = __esm({
98046
97748
  });
98047
97749
 
98048
97750
  // ../@aws-cdk/cloudformation-diff/lib/network/security-group-changes.ts
98049
- var import_chalk5, SecurityGroupChanges;
97751
+ var import_chalk4, SecurityGroupChanges;
98050
97752
  var init_security_group_changes = __esm({
98051
97753
  "../@aws-cdk/cloudformation-diff/lib/network/security-group-changes.ts"() {
98052
97754
  "use strict";
98053
- import_chalk5 = __toESM(require_source());
97755
+ import_chalk4 = __toESM(require_source());
98054
97756
  init_security_group_rule();
98055
97757
  init_diffable();
98056
97758
  init_render_intrinsics();
@@ -98098,7 +97800,7 @@ var init_security_group_changes = __esm({
98098
97800
  inOut,
98099
97801
  rule.describeProtocol(),
98100
97802
  rule.describePeer()
98101
- ].map((s2) => plusMin === "+" ? import_chalk5.default.green(s2) : import_chalk5.default.red(s2)), "renderRule");
97803
+ ].map((s2) => plusMin === "+" ? import_chalk4.default.green(s2) : import_chalk4.default.red(s2)), "renderRule");
98102
97804
  ret.push(...this.ingress.additions.map(renderRule("+", inWord)));
98103
97805
  ret.push(...this.egress.additions.map(renderRule("+", outWord)));
98104
97806
  ret.push(...this.ingress.removals.map(renderRule("-", inWord)));
@@ -99373,15 +99075,15 @@ __export(format_foreach_exports, {
99373
99075
  function isForEachKey(logicalId) {
99374
99076
  return logicalId.startsWith("Fn::ForEach::");
99375
99077
  }
99376
- var import_chalk6, ADDITION, UPDATE, REMOVAL, ForEachDiffFormatter;
99078
+ var import_chalk5, ADDITION, UPDATE, REMOVAL, ForEachDiffFormatter;
99377
99079
  var init_format_foreach = __esm({
99378
99080
  "../@aws-cdk/cloudformation-diff/lib/format-foreach.ts"() {
99379
99081
  "use strict";
99380
- import_chalk6 = __toESM(require_source());
99082
+ import_chalk5 = __toESM(require_source());
99381
99083
  init_util6();
99382
- ADDITION = import_chalk6.default.green("[+]");
99383
- UPDATE = import_chalk6.default.yellow("[~]");
99384
- REMOVAL = import_chalk6.default.red("[-]");
99084
+ ADDITION = import_chalk5.default.green("[+]");
99085
+ UPDATE = import_chalk5.default.yellow("[~]");
99086
+ REMOVAL = import_chalk5.default.red("[-]");
99385
99087
  ForEachDiffFormatter = class {
99386
99088
  static {
99387
99089
  __name(this, "ForEachDiffFormatter");
@@ -99394,24 +99096,24 @@ var init_format_foreach = __esm({
99394
99096
  const changeType = this.getChangeType(oldValue, newValue);
99395
99097
  const value2 = newValue ?? oldValue;
99396
99098
  if (!Array.isArray(value2) || value2.length < 2) {
99397
- lines.push(`${this.changeSymbol(changeType)} ${import_chalk6.default.cyan(key)} (unrecognized ForEach structure)`);
99099
+ lines.push(`${this.changeSymbol(changeType)} ${import_chalk5.default.cyan(key)} (unrecognized ForEach structure)`);
99398
99100
  return lines;
99399
99101
  }
99400
99102
  const loopName = key.replace("Fn::ForEach::", "");
99401
99103
  const [collection, templateObj] = value2;
99402
99104
  const entries = Object.entries(templateObj);
99403
99105
  if (entries.length === 0) {
99404
- lines.push(`${this.changeSymbol(changeType)} ${import_chalk6.default.cyan(key)} (empty ForEach template)`);
99106
+ lines.push(`${this.changeSymbol(changeType)} ${import_chalk5.default.cyan(key)} (empty ForEach template)`);
99405
99107
  return lines;
99406
99108
  }
99407
99109
  const [[templateKey, templateValue]] = entries;
99408
99110
  const count = Array.isArray(collection) ? `${collection.length} resources` : "dynamic count";
99409
99111
  lines.push(
99410
- `${this.changeSymbol(changeType)} ${import_chalk6.default.cyan(key)} (expands to ${count} at deploy time)`
99112
+ `${this.changeSymbol(changeType)} ${import_chalk5.default.cyan(key)} (expands to ${count} at deploy time)`
99411
99113
  );
99412
- lines.push(` Loop variable: ${import_chalk6.default.blue(loopName)}`);
99114
+ lines.push(` Loop variable: ${import_chalk5.default.blue(loopName)}`);
99413
99115
  lines.push(` Collection: ${this.formatCollection(collection)}`);
99414
- lines.push(` \u2514\u2500\u2500 ${templateKey} ${import_chalk6.default.cyan(templateValue?.Type ?? "Unknown")}`);
99116
+ lines.push(` \u2514\u2500\u2500 ${templateKey} ${import_chalk5.default.cyan(templateValue?.Type ?? "Unknown")}`);
99415
99117
  if (changeType === "update" && oldValue && newValue) {
99416
99118
  const oldProps = oldValue[1]?.[Object.keys(oldValue[1])[0]]?.Properties ?? {};
99417
99119
  const newProps = newValue[1]?.[Object.keys(newValue[1])[0]]?.Properties ?? {};
@@ -104116,11 +103818,11 @@ function sum(xs) {
104116
103818
  }
104117
103819
  return total;
104118
103820
  }
104119
- var import_chalk7, import_string_width, table, tableColor, TABLE_BORDER_CHARACTERS;
103821
+ var import_chalk6, import_string_width, table, tableColor, TABLE_BORDER_CHARACTERS;
104120
103822
  var init_format_table = __esm({
104121
103823
  "../@aws-cdk/cloudformation-diff/lib/format-table.ts"() {
104122
103824
  "use strict";
104123
- import_chalk7 = __toESM(require_source());
103825
+ import_chalk6 = __toESM(require_source());
104124
103826
  import_string_width = __toESM(require_string_width());
104125
103827
  table = __toESM(require_src());
104126
103828
  __name(formatTable, "formatTable");
@@ -104128,7 +103830,7 @@ var init_format_table = __esm({
104128
103830
  __name(buildColumnConfig, "buildColumnConfig");
104129
103831
  __name(calculateColumnWidths, "calculateColumnWidths");
104130
103832
  __name(sum, "sum");
104131
- tableColor = import_chalk7.default.gray;
103833
+ tableColor = import_chalk6.default.gray;
104132
103834
  TABLE_BORDER_CHARACTERS = {
104133
103835
  topBody: tableColor("\u2500"),
104134
103836
  topJoin: tableColor("\u252C"),
@@ -106215,7 +105917,7 @@ function _diffStrings(oldStr, newStr, context) {
106215
105917
  const patch = structuredPatch(null, null, oldStr, newStr, null, null, { context });
106216
105918
  const result2 = new Array();
106217
105919
  for (const hunk of patch.hunks) {
106218
- result2.push(import_chalk8.default.magenta(`@@ -${hunk.oldStart},${hunk.oldLines} +${hunk.newStart},${hunk.newLines} @@`));
105920
+ result2.push(import_chalk7.default.magenta(`@@ -${hunk.oldStart},${hunk.oldLines} +${hunk.newStart},${hunk.newLines} @@`));
106219
105921
  const baseIndent = _findIndent(hunk.lines);
106220
105922
  for (const line of hunk.lines) {
106221
105923
  if (line === "\") {
@@ -106228,10 +105930,10 @@ function _diffStrings(oldStr, newStr, context) {
106228
105930
  result2.push(`${CONTEXT} ${text}`);
106229
105931
  break;
106230
105932
  case "+":
106231
- result2.push(import_chalk8.default.bold(`${ADDITION2} ${import_chalk8.default.green(text)}`));
105933
+ result2.push(import_chalk7.default.bold(`${ADDITION2} ${import_chalk7.default.green(text)}`));
106232
105934
  break;
106233
105935
  case "-":
106234
- result2.push(import_chalk8.default.bold(`${REMOVAL2} ${import_chalk8.default.red(text)}`));
105936
+ result2.push(import_chalk7.default.bold(`${REMOVAL2} ${import_chalk7.default.red(text)}`));
106235
105937
  break;
106236
105938
  default:
106237
105939
  throw new Error(`Unexpected diff marker: ${marker} (full line: ${line})`);
@@ -106253,12 +105955,12 @@ function _diffStrings(oldStr, newStr, context) {
106253
105955
  }
106254
105956
  __name(_findIndent, "_findIndent");
106255
105957
  }
106256
- var import_util24, import_chalk8, PATH_METADATA_KEY3, structuredPatch, ADDITION2, CONTEXT, UPDATE2, REMOVAL2, IMPORT, Formatter;
105958
+ var import_util24, import_chalk7, PATH_METADATA_KEY3, structuredPatch, ADDITION2, CONTEXT, UPDATE2, REMOVAL2, IMPORT, Formatter;
106257
105959
  var init_format = __esm({
106258
105960
  "../@aws-cdk/cloudformation-diff/lib/format.ts"() {
106259
105961
  "use strict";
106260
105962
  import_util24 = require("util");
106261
- import_chalk8 = __toESM(require_source());
105963
+ import_chalk7 = __toESM(require_source());
106262
105964
  init_util6();
106263
105965
  init_diff_template();
106264
105966
  init_format_foreach();
@@ -106268,11 +105970,11 @@ var init_format = __esm({
106268
105970
  __name(formatDifferences, "formatDifferences");
106269
105971
  __name(formatSecurityChanges, "formatSecurityChanges");
106270
105972
  __name(formatSecurityChangesWithBanner, "formatSecurityChangesWithBanner");
106271
- ADDITION2 = import_chalk8.default.green("[+]");
106272
- CONTEXT = import_chalk8.default.grey("[ ]");
106273
- UPDATE2 = import_chalk8.default.yellow("[~]");
106274
- REMOVAL2 = import_chalk8.default.red("[-]");
106275
- IMPORT = import_chalk8.default.blue("[\u2190]");
105973
+ ADDITION2 = import_chalk7.default.green("[+]");
105974
+ CONTEXT = import_chalk7.default.grey("[ ]");
105975
+ UPDATE2 = import_chalk7.default.yellow("[~]");
105976
+ REMOVAL2 = import_chalk7.default.red("[-]");
105977
+ IMPORT = import_chalk7.default.blue("[\u2190]");
106276
105978
  Formatter = class {
106277
105979
  constructor(stream, logicalToPathMap, diff, context = 3) {
106278
105980
  this.stream = stream;
@@ -106289,10 +105991,10 @@ var init_format = __esm({
106289
105991
  __name(this, "Formatter");
106290
105992
  }
106291
105993
  print(fmt, ...args) {
106292
- this.stream.write(import_chalk8.default.reset((0, import_util24.format)(fmt, ...args)) + "\n");
105994
+ this.stream.write(import_chalk7.default.reset((0, import_util24.format)(fmt, ...args)) + "\n");
106293
105995
  }
106294
105996
  warning(fmt, ...args) {
106295
- this.stream.write(import_chalk8.default.yellow((0, import_util24.format)(fmt, ...args)) + "\n");
105997
+ this.stream.write(import_chalk7.default.yellow((0, import_util24.format)(fmt, ...args)) + "\n");
106296
105998
  }
106297
105999
  formatSection(title, entryType, collection, formatter = this.formatDifference.bind(this)) {
106298
106000
  if (collection.differenceCount === 0) {
@@ -106303,7 +106005,7 @@ var init_format = __esm({
106303
106005
  this.printSectionFooter();
106304
106006
  }
106305
106007
  printSectionHeader(title) {
106306
- this.print(import_chalk8.default.underline(import_chalk8.default.bold(title)));
106008
+ this.print(import_chalk7.default.underline(import_chalk7.default.bold(title)));
106307
106009
  }
106308
106010
  printSectionFooter() {
106309
106011
  this.print("");
@@ -106319,8 +106021,8 @@ var init_format = __esm({
106319
106021
  return;
106320
106022
  }
106321
106023
  let value2;
106322
- const oldValue = this.formatValue(diff.oldValue, import_chalk8.default.red);
106323
- const newValue = this.formatValue(diff.newValue, import_chalk8.default.green);
106024
+ const oldValue = this.formatValue(diff.oldValue, import_chalk7.default.red);
106025
+ const newValue = this.formatValue(diff.newValue, import_chalk7.default.green);
106324
106026
  if (diff.isAddition) {
106325
106027
  value2 = newValue;
106326
106028
  } else if (diff.isUpdate) {
@@ -106328,7 +106030,7 @@ var init_format = __esm({
106328
106030
  } else if (diff.isRemoval) {
106329
106031
  value2 = oldValue;
106330
106032
  }
106331
- this.print(`${this.formatPrefix(diff)} ${import_chalk8.default.cyan(type)} ${this.formatLogicalId(logicalId)}: ${value2}`);
106033
+ this.print(`${this.formatPrefix(diff)} ${import_chalk7.default.cyan(type)} ${this.formatLogicalId(logicalId)}: ${value2}`);
106332
106034
  }
106333
106035
  /**
106334
106036
  * Print a resource difference for a given logical ID.
@@ -106351,7 +106053,7 @@ var init_format = __esm({
106351
106053
  const resourceType = diff.isRemoval ? diff.oldResourceType : diff.newResourceType;
106352
106054
  const message2 = [
106353
106055
  this.formatResourcePrefix(diff),
106354
- this.formatValue(resourceType, import_chalk8.default.cyan),
106056
+ this.formatValue(resourceType, import_chalk7.default.cyan),
106355
106057
  this.formatLogicalId(logicalId),
106356
106058
  this.formatImpact(diff.changeImpact),
106357
106059
  this.formatMove(diff.move)
@@ -106382,7 +106084,7 @@ var init_format = __esm({
106382
106084
  if (diff.isRemoval) {
106383
106085
  return REMOVAL2;
106384
106086
  }
106385
- return import_chalk8.default.reset("[?]");
106087
+ return import_chalk7.default.reset("[?]");
106386
106088
  }
106387
106089
  /**
106388
106090
  * @param value - the value to be formatted.
@@ -106406,15 +106108,15 @@ var init_format = __esm({
106406
106108
  formatImpact(impact) {
106407
106109
  switch (impact) {
106408
106110
  case "MAY_REPLACE" /* MAY_REPLACE */:
106409
- return import_chalk8.default.italic(import_chalk8.default.yellow("may be replaced"));
106111
+ return import_chalk7.default.italic(import_chalk7.default.yellow("may be replaced"));
106410
106112
  case "WILL_REPLACE" /* WILL_REPLACE */:
106411
- return import_chalk8.default.italic(import_chalk8.default.bold(import_chalk8.default.red("replace")));
106113
+ return import_chalk7.default.italic(import_chalk7.default.bold(import_chalk7.default.red("replace")));
106412
106114
  case "WILL_DESTROY" /* WILL_DESTROY */:
106413
- return import_chalk8.default.italic(import_chalk8.default.bold(import_chalk8.default.red("destroy")));
106115
+ return import_chalk7.default.italic(import_chalk7.default.bold(import_chalk7.default.red("destroy")));
106414
106116
  case "WILL_ORPHAN" /* WILL_ORPHAN */:
106415
- return import_chalk8.default.italic(import_chalk8.default.yellow("orphan"));
106117
+ return import_chalk7.default.italic(import_chalk7.default.yellow("orphan"));
106416
106118
  case "WILL_IMPORT" /* WILL_IMPORT */:
106417
- return import_chalk8.default.italic(import_chalk8.default.blue("import"));
106119
+ return import_chalk7.default.italic(import_chalk7.default.blue("import"));
106418
106120
  case "WILL_UPDATE" /* WILL_UPDATE */:
106419
106121
  case "WILL_CREATE" /* WILL_CREATE */:
106420
106122
  case "NO_CHANGE" /* NO_CHANGE */:
@@ -106422,7 +106124,7 @@ var init_format = __esm({
106422
106124
  }
106423
106125
  }
106424
106126
  formatMove(move) {
106425
- return !move ? "" : import_chalk8.default.yellow("(OR", import_chalk8.default.italic(import_chalk8.default.bold("move")), `${move.direction} ${move.stackName}.${move.resourceLogicalId} via refactoring)`);
106127
+ return !move ? "" : import_chalk7.default.yellow("(OR", import_chalk7.default.italic(import_chalk7.default.bold("move")), `${move.direction} ${move.stackName}.${move.resourceLogicalId} via refactoring)`);
106426
106128
  }
106427
106129
  /**
106428
106130
  * Renders a tree of differences under a particular name.
@@ -106461,13 +106163,13 @@ var init_format = __esm({
106461
106163
  this.print("%s %s %s", linePrefix, i6 === 0 ? "\u2514\u2500" : " ", diff[i6]);
106462
106164
  }
106463
106165
  } else {
106464
- this.print("%s \u251C\u2500 %s %s", linePrefix, REMOVAL2, this.formatValue(oldObject, import_chalk8.default.red));
106465
- this.print("%s \u2514\u2500 %s %s", linePrefix, ADDITION2, this.formatValue(newObject, import_chalk8.default.green));
106166
+ this.print("%s \u251C\u2500 %s %s", linePrefix, REMOVAL2, this.formatValue(oldObject, import_chalk7.default.red));
106167
+ this.print("%s \u2514\u2500 %s %s", linePrefix, ADDITION2, this.formatValue(newObject, import_chalk7.default.green));
106466
106168
  }
106467
106169
  } else if (oldObject !== void 0) {
106468
- this.print("%s \u2514\u2500 %s", linePrefix, this.formatValue(oldObject, import_chalk8.default.red));
106170
+ this.print("%s \u2514\u2500 %s", linePrefix, this.formatValue(oldObject, import_chalk7.default.red));
106469
106171
  } else {
106470
- this.print("%s \u2514\u2500 %s", linePrefix, this.formatValue(newObject, import_chalk8.default.green));
106172
+ this.print("%s \u2514\u2500 %s", linePrefix, this.formatValue(newObject, import_chalk7.default.green));
106471
106173
  }
106472
106174
  return;
106473
106175
  }
@@ -106480,12 +106182,12 @@ var init_format = __esm({
106480
106182
  const newValue = newObject[key];
106481
106183
  const treePrefix = key === lastKey ? "\u2514" : "\u251C";
106482
106184
  if (oldValue !== void 0 && newValue !== void 0) {
106483
- this.print("%s %s\u2500 %s %s:", linePrefix, treePrefix, this.changeTag(oldValue, newValue), import_chalk8.default.blue(`.${key}`));
106185
+ this.print("%s %s\u2500 %s %s:", linePrefix, treePrefix, this.changeTag(oldValue, newValue), import_chalk7.default.blue(`.${key}`));
106484
106186
  this.formatObjectDiff(oldValue, newValue, `${linePrefix} ${key === lastKey ? " " : "\u2502"}`);
106485
106187
  } else if (oldValue !== void 0) {
106486
- this.print("%s %s\u2500 %s Removed: %s", linePrefix, treePrefix, REMOVAL2, import_chalk8.default.blue(`.${key}`));
106188
+ this.print("%s %s\u2500 %s Removed: %s", linePrefix, treePrefix, REMOVAL2, import_chalk7.default.blue(`.${key}`));
106487
106189
  } else {
106488
- this.print("%s %s\u2500 %s Added: %s", linePrefix, treePrefix, ADDITION2, import_chalk8.default.blue(`.${key}`));
106190
+ this.print("%s %s\u2500 %s Added: %s", linePrefix, treePrefix, ADDITION2, import_chalk7.default.blue(`.${key}`));
106489
106191
  }
106490
106192
  }
106491
106193
  }
@@ -106529,7 +106231,7 @@ var init_format = __esm({
106529
106231
  formatLogicalId(logicalId) {
106530
106232
  const normalized = this.normalizedLogicalIdPath(logicalId);
106531
106233
  if (normalized) {
106532
- return `${normalized} ${import_chalk8.default.gray(logicalId)}`;
106234
+ return `${normalized} ${import_chalk7.default.gray(logicalId)}`;
106533
106235
  }
106534
106236
  return logicalId;
106535
106237
  }
@@ -106621,7 +106323,7 @@ function formatTypedMappings(stream, mappings) {
106621
106323
  const rows = mappings.map((m4) => [m4.type, m4.sourcePath, m4.destinationPath]);
106622
106324
  const formatter = new Formatter(stream, {});
106623
106325
  formatter.print("The following resources were moved or renamed:");
106624
- formatter.print(import_chalk9.default.green(formatTable(header.concat(rows), void 0)));
106326
+ formatter.print(import_chalk8.default.green(formatTable(header.concat(rows), void 0)));
106625
106327
  formatter.print(" ");
106626
106328
  }
106627
106329
  }
@@ -106631,18 +106333,18 @@ function formatAmbiguousMappings(stream, pairs) {
106631
106333
  formatter.print("Detected ambiguities:");
106632
106334
  formatter.print(tables.join("\n\n"));
106633
106335
  formatter.print(" ");
106634
- formatter.print(import_chalk9.default.yellow("Please provide an override file to resolve these ambiguous mappings."));
106336
+ formatter.print(import_chalk8.default.yellow("Please provide an override file to resolve these ambiguous mappings."));
106635
106337
  formatter.print(" ");
106636
106338
  function renderTable2([removed, added]) {
106637
106339
  return formatTable([["", "Resource"], renderRemoval(removed), renderAddition(added)], void 0);
106638
106340
  }
106639
106341
  __name(renderTable2, "renderTable");
106640
106342
  function renderRemoval(locations) {
106641
- return [import_chalk9.default.red("-"), import_chalk9.default.red(renderLocations(locations))];
106343
+ return [import_chalk8.default.red("-"), import_chalk8.default.red(renderLocations(locations))];
106642
106344
  }
106643
106345
  __name(renderRemoval, "renderRemoval");
106644
106346
  function renderAddition(locations) {
106645
- return [import_chalk9.default.green("+"), import_chalk9.default.green(renderLocations(locations))];
106347
+ return [import_chalk8.default.green("+"), import_chalk8.default.green(renderLocations(locations))];
106646
106348
  }
106647
106349
  __name(renderAddition, "renderAddition");
106648
106350
  function renderLocations(locs) {
@@ -106650,11 +106352,11 @@ function formatAmbiguousMappings(stream, pairs) {
106650
106352
  }
106651
106353
  __name(renderLocations, "renderLocations");
106652
106354
  }
106653
- var import_chalk9;
106355
+ var import_chalk8;
106654
106356
  var init_mappings = __esm({
106655
106357
  "../@aws-cdk/cloudformation-diff/lib/mappings.ts"() {
106656
106358
  "use strict";
106657
- import_chalk9 = __toESM(require_source());
106359
+ import_chalk8 = __toESM(require_source());
106658
106360
  init_format();
106659
106361
  init_format_table();
106660
106362
  __name(formatEnvironmentSectionHeader, "formatEnvironmentSectionHeader");
@@ -106700,6 +106402,306 @@ var require_lib9 = __commonJS({
106700
106402
  }
106701
106403
  });
106702
106404
 
106405
+ // ../@aws-cdk/toolkit-lib/lib/api/deployments/assets.ts
106406
+ async function addMetadataAssetsToManifest(ioHelper, stack, assetManifest, envResources, reuse) {
106407
+ reuse = reuse || [];
106408
+ const assets = stack.assets;
106409
+ if (assets.length === 0) {
106410
+ return {};
106411
+ }
106412
+ const toolkitInfo = await envResources.lookupToolkit();
106413
+ if (!toolkitInfo.found) {
106414
+ throw new ToolkitError("BootstrapStackRequired", `This stack uses assets, so the toolkit stack must be deployed to the environment (Run "${import_chalk9.default.blue("cdk bootstrap " + stack.environment.name)}")`);
106415
+ }
106416
+ const params = {};
106417
+ for (const asset of assets) {
106418
+ const reuseAsset = reuse.indexOf(asset.id) > -1;
106419
+ if (reuseAsset) {
106420
+ await ioHelper.defaults.debug(`Reusing asset ${asset.id}: ${JSON.stringify(asset)}`);
106421
+ continue;
106422
+ }
106423
+ await ioHelper.defaults.debug(`Preparing asset ${asset.id}: ${JSON.stringify(asset)}`);
106424
+ if (!stack.assembly) {
106425
+ throw new ToolkitError("AssemblyRequired", "Unexpected: stack assembly is required in order to find assets in assembly directory");
106426
+ }
106427
+ Object.assign(params, await prepareAsset(ioHelper, asset, assetManifest, envResources, toolkitInfo));
106428
+ }
106429
+ return params;
106430
+ }
106431
+ async function prepareAsset(ioHelper, asset, assetManifest, envResources, toolkitInfo) {
106432
+ switch (asset.packaging) {
106433
+ case "zip":
106434
+ case "file":
106435
+ return prepareFileAsset(
106436
+ ioHelper,
106437
+ asset,
106438
+ assetManifest,
106439
+ toolkitInfo,
106440
+ asset.packaging === "zip" ? cxschema8.FileAssetPackaging.ZIP_DIRECTORY : cxschema8.FileAssetPackaging.FILE
106441
+ );
106442
+ case "container-image":
106443
+ return prepareDockerImageAsset(asset, assetManifest, envResources);
106444
+ default:
106445
+ throw new ToolkitError("UnsupportedPackaging", `Unsupported packaging type: ${asset.packaging}. You might need to upgrade your aws-cdk toolkit to support this asset type.`);
106446
+ }
106447
+ }
106448
+ async function prepareFileAsset(ioHelper, asset, assetManifest, toolkitInfo, packaging) {
106449
+ const extension = packaging === cxschema8.FileAssetPackaging.ZIP_DIRECTORY ? ".zip" : path18.extname(asset.path);
106450
+ const baseName = `${asset.sourceHash}${extension}`;
106451
+ const s3Prefix = asset.id === asset.sourceHash ? "assets/" : `assets/${asset.id}/`;
106452
+ const key = `${s3Prefix}${baseName}`;
106453
+ const s3url = `s3://${toolkitInfo.bucketName}/${key}`;
106454
+ await ioHelper.defaults.debug(`Storing asset ${asset.path} at ${s3url}`);
106455
+ assetManifest.addFileAsset(asset.sourceHash, {
106456
+ path: asset.path,
106457
+ packaging
106458
+ }, {
106459
+ bucketName: toolkitInfo.bucketName,
106460
+ objectKey: key
106461
+ });
106462
+ return {
106463
+ [asset.s3BucketParameter]: toolkitInfo.bucketName,
106464
+ [asset.s3KeyParameter]: `${s3Prefix}${cxapi3.ASSET_PREFIX_SEPARATOR}${baseName}`,
106465
+ [asset.artifactHashParameter]: asset.sourceHash
106466
+ };
106467
+ }
106468
+ async function prepareDockerImageAsset(asset, assetManifest, envResources) {
106469
+ if (!asset.imageNameParameter && (!asset.repositoryName || !asset.imageTag)) {
106470
+ throw new ToolkitError("InvalidDockerAssetConfig", 'Invalid Docker image asset configuration: "repositoryName" and "imageTag" are required when "imageNameParameter" is left out');
106471
+ }
106472
+ const repositoryName = asset.repositoryName ?? "cdk/" + asset.id.replace(/[:/]/g, "-").toLowerCase();
106473
+ const { repositoryUri: repositoryUri2 } = await envResources.prepareEcrRepository(repositoryName);
106474
+ const imageTag = asset.imageTag ?? asset.sourceHash;
106475
+ assetManifest.addDockerImageAsset(asset.sourceHash, {
106476
+ directory: asset.path,
106477
+ dockerBuildArgs: asset.buildArgs,
106478
+ dockerBuildSecrets: asset.buildSecrets,
106479
+ dockerBuildSsh: asset.buildSsh,
106480
+ dockerBuildTarget: asset.target,
106481
+ dockerFile: asset.file,
106482
+ networkMode: asset.networkMode,
106483
+ platform: asset.platform,
106484
+ dockerOutputs: asset.outputs
106485
+ }, {
106486
+ repositoryName,
106487
+ imageTag
106488
+ });
106489
+ if (!asset.imageNameParameter) {
106490
+ return {};
106491
+ }
106492
+ return { [asset.imageNameParameter]: `${repositoryUri2}:${imageTag}` };
106493
+ }
106494
+ var path18, cxapi3, cxschema8, import_chalk9;
106495
+ var init_assets3 = __esm({
106496
+ "../@aws-cdk/toolkit-lib/lib/api/deployments/assets.ts"() {
106497
+ "use strict";
106498
+ path18 = __toESM(require("path"));
106499
+ cxapi3 = __toESM(require_lib3());
106500
+ cxschema8 = __toESM(require_lib2());
106501
+ import_chalk9 = __toESM(require_source());
106502
+ init_toolkit_error();
106503
+ __name(addMetadataAssetsToManifest, "addMetadataAssetsToManifest");
106504
+ __name(prepareAsset, "prepareAsset");
106505
+ __name(prepareFileAsset, "prepareFileAsset");
106506
+ __name(prepareDockerImageAsset, "prepareDockerImageAsset");
106507
+ }
106508
+ });
106509
+
106510
+ // ../@aws-cdk/toolkit-lib/lib/actions/deploy/private/deployment-method.ts
106511
+ function isChangeSetDeployment(method) {
106512
+ return method?.method === "change-set";
106513
+ }
106514
+ function isExecutingChangeSetDeployment(method) {
106515
+ return isChangeSetDeployment(method) && (method.execute ?? true);
106516
+ }
106517
+ function isNonExecutingChangeSetDeployment(method) {
106518
+ return isChangeSetDeployment(method) && method.execute === false;
106519
+ }
106520
+ function isExecuteChangeSetDeployment(method) {
106521
+ return method?.method === "execute-change-set";
106522
+ }
106523
+ function toExecuteChangeSetDeployment(method) {
106524
+ return {
106525
+ method: "execute-change-set",
106526
+ changeSetName: method.changeSetName ?? DEFAULT_DEPLOY_CHANGE_SET_NAME
106527
+ };
106528
+ }
106529
+ var DEFAULT_DEPLOY_CHANGE_SET_NAME;
106530
+ var init_deployment_method = __esm({
106531
+ "../@aws-cdk/toolkit-lib/lib/actions/deploy/private/deployment-method.ts"() {
106532
+ "use strict";
106533
+ DEFAULT_DEPLOY_CHANGE_SET_NAME = "cdk-deploy-change-set";
106534
+ __name(isChangeSetDeployment, "isChangeSetDeployment");
106535
+ __name(isExecutingChangeSetDeployment, "isExecutingChangeSetDeployment");
106536
+ __name(isNonExecutingChangeSetDeployment, "isNonExecutingChangeSetDeployment");
106537
+ __name(isExecuteChangeSetDeployment, "isExecuteChangeSetDeployment");
106538
+ __name(toExecuteChangeSetDeployment, "toExecuteChangeSetDeployment");
106539
+ }
106540
+ });
106541
+
106542
+ // ../@aws-cdk/toolkit-lib/lib/payloads/hotswap.ts
106543
+ var NonHotswappableReason;
106544
+ var init_hotswap = __esm({
106545
+ "../@aws-cdk/toolkit-lib/lib/payloads/hotswap.ts"() {
106546
+ "use strict";
106547
+ NonHotswappableReason = /* @__PURE__ */ ((NonHotswappableReason2) => {
106548
+ NonHotswappableReason2["TAGS"] = "tags";
106549
+ NonHotswappableReason2["PROPERTIES"] = "properties";
106550
+ NonHotswappableReason2["OUTPUT"] = "output";
106551
+ NonHotswappableReason2["DEPENDENCY_UNSUPPORTED"] = "dependency-unsupported";
106552
+ NonHotswappableReason2["RESOURCE_UNSUPPORTED"] = "resource-unsupported";
106553
+ NonHotswappableReason2["RESOURCE_CREATION"] = "resource-creation";
106554
+ NonHotswappableReason2["RESOURCE_DELETION"] = "resource-deletion";
106555
+ NonHotswappableReason2["RESOURCE_TYPE_CHANGED"] = "resource-type-changed";
106556
+ NonHotswappableReason2["NESTED_STACK_CREATION"] = "nested-stack-creation";
106557
+ return NonHotswappableReason2;
106558
+ })(NonHotswappableReason || {});
106559
+ }
106560
+ });
106561
+
106562
+ // ../@aws-cdk/toolkit-lib/lib/api/hotswap/common.ts
106563
+ function createHotswapPropertyOverrides(props) {
106564
+ return new HotswapPropertyOverrides(new EcsHotswapProperties(
106565
+ props.ecs?.minimumHealthyPercent,
106566
+ props.ecs?.maximumHealthyPercent,
106567
+ props.ecs?.stabilizationTimeoutSeconds
106568
+ ));
106569
+ }
106570
+ function classifyChanges(xs, hotswappablePropNames) {
106571
+ const hotswappableProps = {};
106572
+ const nonHotswappableProps = {};
106573
+ for (const [name, propDiff] of Object.entries(xs.propertyUpdates)) {
106574
+ if (hotswappablePropNames.includes(name)) {
106575
+ hotswappableProps[name] = propDiff;
106576
+ } else {
106577
+ nonHotswappableProps[name] = propDiff;
106578
+ }
106579
+ }
106580
+ return new ClassifiedChanges(xs, hotswappableProps, nonHotswappableProps);
106581
+ }
106582
+ function nonHotswappableChange(change, reason, description, nonHotswappableProps, hotswapOnlyVisible = true) {
106583
+ return {
106584
+ hotswappable: false,
106585
+ hotswapOnlyVisible,
106586
+ change: {
106587
+ reason,
106588
+ description,
106589
+ subject: {
106590
+ type: "Resource",
106591
+ logicalId: change.logicalId,
106592
+ resourceType: change.newValue.Type,
106593
+ rejectedProperties: Object.keys(nonHotswappableProps ?? change.propertyUpdates),
106594
+ metadata: change.metadata
106595
+ }
106596
+ }
106597
+ };
106598
+ }
106599
+ function nonHotswappableResource(change) {
106600
+ return {
106601
+ hotswappable: false,
106602
+ change: {
106603
+ reason: "resource-unsupported" /* RESOURCE_UNSUPPORTED */,
106604
+ description: "This resource type is not supported for hotswap deployments",
106605
+ subject: {
106606
+ type: "Resource",
106607
+ logicalId: change.logicalId,
106608
+ resourceType: change.newValue.Type,
106609
+ rejectedProperties: Object.keys(change.propertyUpdates),
106610
+ metadata: change.metadata
106611
+ }
106612
+ }
106613
+ };
106614
+ }
106615
+ var ICON, HotswapPropertyOverrides, EcsHotswapProperties, ClassifiedChanges;
106616
+ var init_common3 = __esm({
106617
+ "../@aws-cdk/toolkit-lib/lib/api/hotswap/common.ts"() {
106618
+ "use strict";
106619
+ init_hotswap();
106620
+ init_toolkit_error();
106621
+ ICON = "\u2728";
106622
+ HotswapPropertyOverrides = class {
106623
+ static {
106624
+ __name(this, "HotswapPropertyOverrides");
106625
+ }
106626
+ // Each supported resource type will have its own properties. Currently this is ECS
106627
+ ecs;
106628
+ constructor(ecs) {
106629
+ this.ecs = ecs;
106630
+ }
106631
+ };
106632
+ EcsHotswapProperties = class {
106633
+ static {
106634
+ __name(this, "EcsHotswapProperties");
106635
+ }
106636
+ // The lower limit on the number of your service's tasks that must remain in the RUNNING state during a deployment, as a percentage of the desiredCount
106637
+ minimumHealthyPercent;
106638
+ // The upper limit on the number of your service's tasks that are allowed in the RUNNING or PENDING state during a deployment, as a percentage of the desiredCount
106639
+ maximumHealthyPercent;
106640
+ // The number of seconds to wait for a single service to reach stable state.
106641
+ stabilizationTimeoutSeconds;
106642
+ constructor(minimumHealthyPercent, maximumHealthyPercent, stabilizationTimeoutSeconds) {
106643
+ if (minimumHealthyPercent !== void 0 && minimumHealthyPercent < 0) {
106644
+ throw new ToolkitError("InvalidEcsMinHealthyPercent", "hotswap-ecs-minimum-healthy-percent can't be a negative number");
106645
+ }
106646
+ if (maximumHealthyPercent !== void 0 && maximumHealthyPercent < 0) {
106647
+ throw new ToolkitError("InvalidEcsMaxHealthyPercent", "hotswap-ecs-maximum-healthy-percent can't be a negative number");
106648
+ }
106649
+ if (stabilizationTimeoutSeconds !== void 0 && stabilizationTimeoutSeconds < 0) {
106650
+ throw new ToolkitError("InvalidEcsStabilizationTimeout", "hotswap-ecs-stabilization-timeout-seconds can't be a negative number");
106651
+ }
106652
+ if (minimumHealthyPercent == void 0) {
106653
+ this.minimumHealthyPercent = 0;
106654
+ } else {
106655
+ this.minimumHealthyPercent = minimumHealthyPercent;
106656
+ }
106657
+ this.maximumHealthyPercent = maximumHealthyPercent;
106658
+ this.stabilizationTimeoutSeconds = stabilizationTimeoutSeconds;
106659
+ }
106660
+ /**
106661
+ * Check if any hotswap properties are defined
106662
+ * @returns true if all properties are undefined, false otherwise
106663
+ */
106664
+ isEmpty() {
106665
+ return this.minimumHealthyPercent === 0 && this.maximumHealthyPercent === void 0;
106666
+ }
106667
+ };
106668
+ __name(createHotswapPropertyOverrides, "createHotswapPropertyOverrides");
106669
+ ClassifiedChanges = class {
106670
+ constructor(change, hotswappableProps, nonHotswappableProps) {
106671
+ this.change = change;
106672
+ this.hotswappableProps = hotswappableProps;
106673
+ this.nonHotswappableProps = nonHotswappableProps;
106674
+ }
106675
+ change;
106676
+ hotswappableProps;
106677
+ nonHotswappableProps;
106678
+ static {
106679
+ __name(this, "ClassifiedChanges");
106680
+ }
106681
+ reportNonHotswappablePropertyChanges(ret) {
106682
+ const nonHotswappablePropNames = Object.keys(this.nonHotswappableProps);
106683
+ if (nonHotswappablePropNames.length > 0) {
106684
+ const tagOnlyChange = nonHotswappablePropNames.length === 1 && nonHotswappablePropNames[0] === "Tags";
106685
+ const reason = tagOnlyChange ? "tags" /* TAGS */ : "properties" /* PROPERTIES */;
106686
+ const description = tagOnlyChange ? "Tags are not hotswappable" : `resource properties '${nonHotswappablePropNames}' are not hotswappable on this resource type`;
106687
+ ret.push(nonHotswappableChange(
106688
+ this.change,
106689
+ reason,
106690
+ description,
106691
+ this.nonHotswappableProps
106692
+ ));
106693
+ }
106694
+ }
106695
+ get namesOfHotswappableProps() {
106696
+ return Object.keys(this.hotswappableProps);
106697
+ }
106698
+ };
106699
+ __name(classifyChanges, "classifyChanges");
106700
+ __name(nonHotswappableChange, "nonHotswappableChange");
106701
+ __name(nonHotswappableResource, "nonHotswappableResource");
106702
+ }
106703
+ });
106704
+
106703
106705
  // ../@aws-cdk/toolkit-lib/lib/payloads/bootstrap-environment-progress.ts
106704
106706
  var init_bootstrap_environment_progress = __esm({
106705
106707
  "../@aws-cdk/toolkit-lib/lib/payloads/bootstrap-environment-progress.ts"() {
@@ -108639,6 +108641,15 @@ async function canSkipDeploy(deployStackOptions, cloudFormationStack, parameterC
108639
108641
  await ioHelper.defaults.debug(`${deployName}: stack is in a failure state`);
108640
108642
  return false;
108641
108643
  }
108644
+ const hotswapCache = await readHotswapTemplateCache(
108645
+ deployStackOptions.stack.assembly.directory,
108646
+ deployStackOptions.stack.stackName,
108647
+ deployStackOptions.stack.template
108648
+ );
108649
+ if (hotswapCache && (0, import_cloudformation_diff.diffTemplate)(hotswapCache.deployedRootTemplate, deployStackOptions.stack.template).differenceCount > 0) {
108650
+ await ioHelper.defaults.debug(`${deployName}: template has changed in relation to last successful hotswap deployment`);
108651
+ return false;
108652
+ }
108642
108653
  return true;
108643
108654
  }
108644
108655
  function compareTags(a6, b6) {
@@ -108665,12 +108676,13 @@ function hasReplacement(report) {
108665
108676
  return a6 === "ReplaceAndDelete" || a6 === "ReplaceAndRetain" || a6 === "ReplaceAndSnapshot";
108666
108677
  });
108667
108678
  }
108668
- var import_node_crypto10, import_node_util3, import_chalk11, FullCloudFormationDeployment;
108679
+ var import_node_crypto10, import_node_util3, import_cloudformation_diff, import_chalk11, FullCloudFormationDeployment;
108669
108680
  var init_deploy_stack = __esm({
108670
108681
  "../@aws-cdk/toolkit-lib/lib/api/deployments/deploy-stack.ts"() {
108671
108682
  "use strict";
108672
108683
  import_node_crypto10 = require("node:crypto");
108673
108684
  import_node_util3 = require("node:util");
108685
+ import_cloudformation_diff = __toESM(require_lib9());
108674
108686
  import_chalk11 = __toESM(require_source());
108675
108687
  init_asset_manifest_builder();
108676
108688
  init_asset_publishing();
@@ -108775,10 +108787,12 @@ var init_deploy_stack = __esm({
108775
108787
  };
108776
108788
  }
108777
108789
  if (!execute2) {
108778
- await this.ioHelper.defaults.info((0, import_node_util3.format)(
108779
- "Changeset %s created and waiting in review for manual execution (--no-execute)",
108780
- changeSetDescription.ChangeSetId
108781
- ));
108790
+ if (!this.options.willExecuteChangeSet) {
108791
+ await this.ioHelper.defaults.info((0, import_node_util3.format)(
108792
+ "Changeset %s created and waiting in review for manual execution (--no-execute)",
108793
+ changeSetDescription.ChangeSetId
108794
+ ));
108795
+ }
108782
108796
  return {
108783
108797
  type: "did-deploy-stack",
108784
108798
  noOp: false,
@@ -110388,6 +110402,7 @@ var init_deployments = __esm({
110388
110402
  envResources: env3.resources,
110389
110403
  tags: options.tags,
110390
110404
  deploymentMethod: options.deploymentMethod,
110405
+ willExecuteChangeSet: options.willExecuteChangeSet,
110391
110406
  forceDeployment: options.forceDeployment,
110392
110407
  parameters: options.parameters,
110393
110408
  usePreviousParameters: options.usePreviousParameters,
@@ -110422,7 +110437,7 @@ var init_deployments = __esm({
110422
110437
  if (result2.type !== "did-deploy-stack") {
110423
110438
  return void 0;
110424
110439
  }
110425
- if (result2.noOp && options.cleanupOnNoOp) {
110440
+ if (result2.noOp && options.willExecuteChangeSet) {
110426
110441
  const changeSetName = options.deploymentMethod.changeSetName ?? DEFAULT_DEPLOY_CHANGE_SET_NAME;
110427
110442
  await this.cleanupChangeSet(options.stack, changeSetName, options.stackEventPollingInterval);
110428
110443
  }
@@ -291011,12 +291026,12 @@ function obscureDiff(diff) {
291011
291026
  });
291012
291027
  }
291013
291028
  }
291014
- var import_node_util6, import_cloudformation_diff, import_chalk15, DiffFormatter;
291029
+ var import_node_util6, import_cloudformation_diff2, import_chalk15, DiffFormatter;
291015
291030
  var init_diff_formatter = __esm({
291016
291031
  "../@aws-cdk/toolkit-lib/lib/api/diff/diff-formatter.ts"() {
291017
291032
  "use strict";
291018
291033
  import_node_util6 = require("node:util");
291019
- import_cloudformation_diff = __toESM(require_lib9());
291034
+ import_cloudformation_diff2 = __toESM(require_lib9());
291020
291035
  import_chalk15 = __toESM(require_source());
291021
291036
  init_payloads();
291022
291037
  init_logical_id_map();
@@ -291053,7 +291068,7 @@ var init_diff_formatter = __esm({
291053
291068
  */
291054
291069
  computeDiff(stackName, oldTemplate, newTemplate, changeSet, mappings) {
291055
291070
  if (!this.cache.has(stackName)) {
291056
- const templateDiff = (0, import_cloudformation_diff.fullDiff)(oldTemplate, newTemplate, changeSet, this.isImport);
291071
+ const templateDiff = (0, import_cloudformation_diff2.fullDiff)(oldTemplate, newTemplate, changeSet, this.isImport);
291057
291072
  const setMove = /* @__PURE__ */ __name((change, direction, location) => {
291058
291073
  if (location != null) {
291059
291074
  const [sourceStackName, sourceLogicalId] = location.split(".");
@@ -291107,8 +291122,8 @@ var init_diff_formatter = __esm({
291107
291122
  }
291108
291123
  let activeDiff = diff;
291109
291124
  if (diff.differenceCount && !options.strict) {
291110
- const mangledNewTemplate = JSON.parse((0, import_cloudformation_diff.mangleLikeCloudFormation)(JSON.stringify(newTemplate)));
291111
- const mangledDiff = (0, import_cloudformation_diff.fullDiff)(oldTemplate, mangledNewTemplate, changeSet);
291125
+ const mangledNewTemplate = JSON.parse((0, import_cloudformation_diff2.mangleLikeCloudFormation)(JSON.stringify(newTemplate)));
291126
+ const mangledDiff = (0, import_cloudformation_diff2.fullDiff)(oldTemplate, mangledNewTemplate, changeSet);
291112
291127
  filteredChangesCount = Math.max(0, diff.differenceCount - mangledDiff.differenceCount);
291113
291128
  if (filteredChangesCount > 0) {
291114
291129
  activeDiff = mangledDiff;
@@ -291121,7 +291136,7 @@ var init_diff_formatter = __esm({
291121
291136
  const metadataWasFiltered = diffWasNonEmpty && activeDiff.isEmpty;
291122
291137
  if (!activeDiff.isEmpty) {
291123
291138
  numStacksWithChanges++;
291124
- (0, import_cloudformation_diff.formatDifferences)(stream, activeDiff, {
291139
+ (0, import_cloudformation_diff2.formatDifferences)(stream, activeDiff, {
291125
291140
  ...logicalIdMapFromTemplate(oldTemplate),
291126
291141
  ...logicalIdMapFromTemplate(newTemplate),
291127
291142
  ...logicalIdMap
@@ -291178,7 +291193,7 @@ var init_diff_formatter = __esm({
291178
291193
  `));
291179
291194
  }
291180
291195
  try {
291181
- (0, import_cloudformation_diff.formatSecurityChanges)(stream, diff, {
291196
+ (0, import_cloudformation_diff2.formatSecurityChanges)(stream, diff, {
291182
291197
  ...logicalIdMapFromTemplate(newTemplate),
291183
291198
  ...logicalIdMap
291184
291199
  });
@@ -297452,13 +297467,13 @@ async function listStacks(sdkProvider, environment) {
297452
297467
  }
297453
297468
  function formatEnvironmentSectionHeader2(environment) {
297454
297469
  const env3 = `aws://${environment.account}/${environment.region}`;
297455
- return formatToStream((stream) => (0, import_cloudformation_diff2.formatEnvironmentSectionHeader)(stream, env3));
297470
+ return formatToStream((stream) => (0, import_cloudformation_diff3.formatEnvironmentSectionHeader)(stream, env3));
297456
297471
  }
297457
297472
  function formatTypedMappings2(mappings) {
297458
- return formatToStream((stream) => (0, import_cloudformation_diff2.formatTypedMappings)(stream, mappings));
297473
+ return formatToStream((stream) => (0, import_cloudformation_diff3.formatTypedMappings)(stream, mappings));
297459
297474
  }
297460
297475
  function formatAmbiguousMappings2(paths) {
297461
- return formatToStream((stream) => (0, import_cloudformation_diff2.formatAmbiguousMappings)(stream, paths));
297476
+ return formatToStream((stream) => (0, import_cloudformation_diff3.formatAmbiguousMappings)(stream, paths));
297462
297477
  }
297463
297478
  function formatToStream(cb) {
297464
297479
  const stream = new StringWriteStream();
@@ -297493,11 +297508,11 @@ async function groupStacks(sdkProvider, localStacks, additionalStackNames) {
297493
297508
  }
297494
297509
  return groups;
297495
297510
  }
297496
- var import_cloudformation_diff2;
297511
+ var import_cloudformation_diff3;
297497
297512
  var init_refactoring = __esm({
297498
297513
  "../@aws-cdk/toolkit-lib/lib/api/refactoring/index.ts"() {
297499
297514
  "use strict";
297500
- import_cloudformation_diff2 = __toESM(require_lib9());
297515
+ import_cloudformation_diff3 = __toESM(require_lib9());
297501
297516
  init_util4();
297502
297517
  init_plugin2();
297503
297518
  init_streams();
@@ -297813,12 +297828,12 @@ var init_tags2 = __esm({
297813
297828
  });
297814
297829
 
297815
297830
  // ../@aws-cdk/toolkit-lib/lib/api/drift/drift-formatter.ts
297816
- var import_node_util7, import_cloudformation_diff3, import_client_cloudformation7, import_chalk24, DriftFormatter, ADDITION3, CONTEXT2, UPDATE3, REMOVAL3;
297831
+ var import_node_util7, import_cloudformation_diff4, import_client_cloudformation7, import_chalk24, DriftFormatter, ADDITION3, CONTEXT2, UPDATE3, REMOVAL3;
297817
297832
  var init_drift_formatter = __esm({
297818
297833
  "../@aws-cdk/toolkit-lib/lib/api/drift/drift-formatter.ts"() {
297819
297834
  "use strict";
297820
297835
  import_node_util7 = require("node:util");
297821
- import_cloudformation_diff3 = __toESM(require_lib9());
297836
+ import_cloudformation_diff4 = __toESM(require_lib9());
297822
297837
  import_client_cloudformation7 = __toESM(require_dist_cjs25());
297823
297838
  import_chalk24 = __toESM(require_source());
297824
297839
  init_logical_id_map();
@@ -297924,7 +297939,7 @@ ${actualDrifts.length} resource${actualDrifts.length === 1 ? "" : "s"} ${actualD
297924
297939
  for (let i6 = 0; i6 < propDiffs.length; i6++) {
297925
297940
  const diff = propDiffs[i6];
297926
297941
  if (!diff.PropertyPath) continue;
297927
- const difference2 = new import_cloudformation_diff3.Difference(diff.ExpectedValue, diff.ActualValue);
297942
+ const difference2 = new import_cloudformation_diff4.Difference(diff.ExpectedValue, diff.ActualValue);
297928
297943
  modified += this.formatTreeDiff(diff.PropertyPath, difference2, i6 === propDiffs.length - 1);
297929
297944
  }
297930
297945
  }
@@ -299329,7 +299344,7 @@ var init_toolkit = __esm({
299329
299344
  const prepareResult = isChangeSetDeployment(options.deploymentMethod) ? await deployments.prepareStack({
299330
299345
  ...sharedDeployOptions,
299331
299346
  deploymentMethod: options.deploymentMethod,
299332
- cleanupOnNoOp: isExecutingChangeSetDeployment(options.deploymentMethod)
299347
+ willExecuteChangeSet: isExecutingChangeSetDeployment(options.deploymentMethod)
299333
299348
  }) : void 0;
299334
299349
  if (!prepareResult?.noOp) {
299335
299350
  const diffChangeSet = isExecuteChangeSetDeployment(options.deploymentMethod) ? (await deployments.describeChangeSet(stack, options.deploymentMethod.changeSetName, prepareResult?.stackArn)).changeSet : prepareResult?.changeSet;
@@ -308985,13 +309000,13 @@ function effectiveValue(flag) {
308985
309000
  function defaultValue(flag) {
308986
309001
  return flag.unconfiguredBehavesLike?.v2 ?? false;
308987
309002
  }
308988
- var os13, path45, import_cloudformation_diff4, import_toolkit_lib17, import_chalk32, fs48, import_p_queue, FlagOperations;
309003
+ var os13, path45, import_cloudformation_diff5, import_toolkit_lib17, import_chalk32, fs48, import_p_queue, FlagOperations;
308989
309004
  var init_operations = __esm({
308990
309005
  "lib/commands/flags/operations.ts"() {
308991
309006
  "use strict";
308992
309007
  os13 = __toESM(require("os"));
308993
309008
  path45 = __toESM(require("path"));
308994
- import_cloudformation_diff4 = __toESM(require_lib9());
309009
+ import_cloudformation_diff5 = __toESM(require_lib9());
308995
309010
  import_toolkit_lib17 = __toESM(require_lib12());
308996
309011
  import_chalk32 = __toESM(require_source());
308997
309012
  fs48 = __toESM(require_lib4());
@@ -309391,7 +309406,7 @@ var init_operations = __esm({
309391
309406
  String(effectiveValue(flag))
309392
309407
  ]);
309393
309408
  });
309394
- const formattedTable = (0, import_cloudformation_diff4.formatTable)(rows, void 0, true);
309409
+ const formattedTable = (0, import_cloudformation_diff5.formatTable)(rows, void 0, true);
309395
309410
  await this.ioHelper.defaults.info(formattedTable);
309396
309411
  }
309397
309412
  /** Checks if a flag has a boolean recommended value */
@@ -310650,7 +310665,7 @@ Do you wish to deploy these changes?`;
310650
310665
  const prepareResult = isChangeSetDeployment(this.options.deploymentMethod) ? await this.deployments.prepareStack({
310651
310666
  ...sharedDeployOptions,
310652
310667
  deploymentMethod: this.options.deploymentMethod,
310653
- cleanupOnNoOp: isExecutingChangeSetDeployment(this.options.deploymentMethod)
310668
+ willExecuteChangeSet: isExecutingChangeSetDeployment(this.options.deploymentMethod)
310654
310669
  }) : void 0;
310655
310670
  if (this.options.requireApproval !== import_cloud_assembly_schema9.RequireApproval.NEVER && !prepareResult?.noOp) {
310656
310671
  const currentTemplate = await this.deployments.readCurrentTemplate(stack);