@go-to-k/cdkd 0.291.5 → 0.291.6

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.
@@ -1,8 +1,8 @@
1
- import { $ as yellow, $a as retryClassificationText, $i as expectedOwnerParam, $n as repairMalformedResourcePropertiesForReadOnly, $r as rewriteTemplateAssetReferences, $t as requireConfigObject, A as createPreDeleteFinalSnapshot, Aa as LocalInvokeBuildError$1, Ai as getDefaultStateBucketName, An as malformedOutputsRefusalMessage, Ar as buildForceUnlockCommand, At as carriesDynamicReference, B as isStatefulRecreateTargetSync, Ba as StackTerminationProtectionError, Bi as warnDeprecatedNoPrefixCliFlag, Bn as refuseMalformedOrphansForDestroy, Br as hasUnverifiableParameterRefusal, Bt as isSettledInstanceState, C as namesAnyDeclaredParameter, Ca as CdkdError, Ci as runDockerStreaming, Cn as isReadableResourceEntry, Cr as recoverMaskedOutput, Ct as slowCcOperationTimeoutMs, D as PRE_DELETE_SNAPSHOT_TYPES, Da as DeployCancelledError, Di as getDockerImageBySourceHash, Dn as malformedOrphanRecordsWarning, Dr as S3StateBackend, Dt as disableInstanceApiTermination, E as ATOMIC_FINAL_SNAPSHOT_TYPES, Ei as AssetManifestLoader, En as malformedLocalOutputsWarning, Er as LockManager, Et as deleteSkipReason, F as extractDeploymentEventError, Fa as PartialFailureError, Fi as resolveSkipPrefix, Fn as malformedResourcesWarning, Fr as CUSTOM_RESOURCE_RESPONSE_PREFIX, Ft as isImpossibleEmptyStoredAttribute, G as toCfnInteger, Ga as normalizeAwsError, Gi as findLargeInlineResources, Gn as refuseMalformedResourceEntries, Gr as orphansCarriedFrom, Gt as coerceCfnBoolean, H as WARM_THROUGHPUT_MEMBERS, Ha as SynthesisError, Hi as CFN_TEMPLATE_BODY_LIMIT, Hn as refuseMalformedOutputs, Hr as importableOutputs, Ht as normalizeAwsTagsToCfn, I as makeSiblingClaimReader, Ia as ProvisioningError, Ii as resolveStateBucketWithDefault, In as malformedStateRefusalMessage, Ir as DEFAULT_STATE_PREFIX, It as isNamelessDynamicReferenceError, J as bold, Ja as isRetryableTransientError, Ji as injectiveKey, Jn as refuseMalformedResourcesForDestroy, Jr as stringifyValue, Jt as configIntegerRefusal, K as toFiniteNumber, Ka as withErrorHandling, Ki as uploadCfnTemplate, Kn as refuseMalformedResourceEntriesForOrphan, Kr as shouldRetainResource, Kt as coerceCfnInteger, L as planOrphanAdoption, La as ResourceTimeoutError, Li as resolveStateBucketWithDefaultAndSource, Ln as refuseDivergentRecordRegionForDestroy, Lr as exportNamesCarriedFrom, Lt as isUnboundTemplateParameter, M as refusesFinalSnapshot, Mi as resolveApp, Mn as malformedRenderedContainersWarning, Mr as forceQuitRecoveryClause, Mt as cfnRefValueFromPhysicalId, N as unsupportedFinalSnapshotError, Na as MalformedProducerRecordRefusalError, Ni as resolveAutoAssetStorage, Nn as malformedResourceEntriesWarning, Nr as formatLockExpiry, Nt as coerceParameterTypedValue, O as buildFinalSnapshotIdentifier, Oa as DynamicReferenceRegionAmbiguousError, Oi as Synthesizer, On as malformedOrphansRefusalMessage, Or as rebuildClientForBucketRegion, Ot as isTerminationProtectionPropagationError, P as makeCanonicalizePropertiesFn, Pa as NestedStackChildDirectDestroyError, Pi as resolveCaptureObservedState, Pn as malformedResourcePropertiesWarning, Pr as shellQuote, Pt as getAccountInfo, Q as red, Qa as markRedactedCause, Qi as decodeListingKey, Qn as repairMalformedResourceEntriesForReadOnly, Qr as loadPublishableAssetManifest, Qt as requireConfigArray, R as MULTI_REGION_RECREATE_BLOCKED_TYPES, Ra as ResourceUpdateNotSupportedError, Ri as resolveUseCdkBootstrapAssets, Rn as refuseMalformedNestedChildOutputs, Rr as hasReadableExportSet, Rt as parameterTypeMayLoseSecretIdentity, S as computeParameterTaint, Si as runDockerForeground, Sn as hasReadableResources, Sr as recordMaskOnlyValue, St as isWaitAbandonedError, T as resourcesNamingDeclaredParameter, Ta as CrossAccountSecretRefusalError, Ti as stripControlChars, Tn as malformedExportSourceWarning, Tr as scrubResourceRecord, Tt as deleteIndeterminateGuards, U as coerceWarmThroughput$1, Ui as CFN_TEMPLATE_URL_LIMIT, Un as refuseMalformedOutputsForDestroy, Ur as isReadableBag, Ut as resolveExplicitPhysicalId, V as renderStatefulReason, Vi as ssmResolvedValueType, Vn as refuseMalformedOrphansForOrphan, Vr as importableOutputKeys, Vt as WAFv2WebACLProvider, W as isWarmThroughputDecrease, Wi as MIGRATE_TMP_PREFIX, Wn as refuseMalformedResourceAttributesForOrphan, Wr as orphansAfterRollback, Wt as assertRegionMatch, X as gray, Xa as isTransientServerError, Xi as producerCoordinateKey, Xn as repairMalformedOrphansForReadOnly, Xr as buildAssetRedirectMap, Xt as readConfigString, Y as cyan, Ya as isThrottlingError, Yi as injectiveKeyPrefix, Yn as refuseMalformedState, Yr as WorkGraph, Yt as configStringRefusal, Z as green, Za as markNonRetryable, Zi as producerRecordKey, Zn as repairMalformedOutputsForReadOnly, Zr as createAssetRedirectResolver, Zt as replayWarn, _ as bagHoldsSecretExpression, _a as AwsClients, _i as dockerSpawnEnvWithSensitive, _n as UNREADABLE_ORPHANS_CONTAINER_ROW, _r as identityKeyFor, _t as endCommandInterruptScope, a as DeploymentEventsStore, aa as globMatches, ai as isCrossRegionRedirect, an as s3BucketDomainName, ar as describeTypeWithThrottleRetry, at as secretBearingStateKeyWarning, b as mergeNoChangeOutputs, ba as runWithStackAwsClients, bi as partitionSensitiveEnv, bn as hasReadableOrphans, br as maskSecretsInError, bt as startInterruptWatch, c as replayFailedOperations, ca as hasOwnKey, ci as validateAssetBucketName, cn as s3BucketWebsiteUrl, cr as TemplateParser, ct as IAMRoleProvider, d as updatePartialMessage, da as ownValue, di as buildDockerImage, dn as applyCallerIdentityCredentials, dr as STATE_SOURCED_READBACK_RULES, dt as ProviderRegistry, ea as PARTITION_TABLE, ei as AssetModeResolver, en as requireConfigString, eo as describeAwsFailure, er as repairMalformedResourcesForReadOnly, et as collectDeclaredOutputNames, f as updatePartialReason, fa as absoluteAssemblyPathEscape, fi as resolveDockerContextDirectory, fn as callerEnvCredentials, fr as TEMPLATE_SOURCED_RULES, ft as wouldReturnToSdkProvider, g as computeImplicitDeleteEdges, ga as resolveBucketRegion, gi as describeDockerFailure, gn as STATE_RESOURCES_MALFORMED, gr as errorCauseChain, gt as beginCommandInterruptScope, h as IMPLICIT_DELETE_DEPENDENCIES, hi as describeDockerExecFailure, hn as INTRINSIC_KEYS, hr as dynamicReferenceTokens, ht as maskerOrIdentity, i as DeploymentEventsReader, ia as failedStageNote, ii as getBootstrapMarkerKey, in as s3BucketArn, ir as findSilentDropProperties, it as secretBearing, j as isFinalSnapshotError, ja as LocalStartServiceError, ji as getLegacyStateBucketName, jn as malformedOutputsWarning, jr as buildLockContentionMessage, jt as carriesFetchableDynamicReference, k as ccRoutedFinalSnapshotError, ka as IntrinsicResolutionRefusalError, ki as synthesisStatusMessage, kn as malformedOrphansWarning, kr as UNREPRODUCIBLE_LOCK_CLAUSE, kt as IntrinsicFunctionResolver, l as replayRollback, la as hasPlainPrototype, li as validateContainerRepoName, ln as applyRoleArnIfSet, lr as STATE_SOURCED_BASELINE_RULES, lt as collectInlinePolicyNamesManagedBySiblings, m as maskingRetryLogger, ma as resolveAssemblyPath, mi as describeDockerCapturedOutput, mn as DiffCalculator, mr as createSecretMasker, mt as maskDeep, n as DEFAULT_RESOURCE_WARN_AFTER_MS, na as derivePartitionAndUrlSuffix, ni as assertAssetBucketRegion, nn as producerRegionsFromState, nr as safeStackName, nt as exportAliasCollisionScrubWarning, o as planFailedOps, oa as processStackMessages, oi as parseBootstrapMarker, on as s3BucketDualStackDomainName, or as withRetry, ot as secretSafeKeyDisplay, p as withResourceDeadline, pa as renderAssemblyPathEscape, pi as warnManifestExecutable, pn as envCredentialsAreAssumedRole, pr as carriesSecretMask, pt as createMaskedRetryLogger, q as formatResourceLine, qa as isMarkedNonRetryable, qi as CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION, qn as refuseMalformedResourcePropertiesForOrphan, qr as AssetPublisher, qt as configBooleanRefusal, r as DeployEngine, ra as AssemblyReader, ri as ensureAssetStorage, rn as withSharedDrainBudget, rr as findActionableSilentDrops, rt as isExportAliasCollision, s as planRollback, sa as defineOwnKey, si as readBootstrapMarkerBody, sn as s3BucketRegionalDomainName, sr as DagBuilder, st as getCurrentResourceSecrets, t as DEFAULT_RESOURCE_TIMEOUT_MS, ta as canonicalizeRegion, ti as BOOTSTRAP_MARKER_PREFIX, tn as classifyReplaySecretRegion, to as safeStringify, tr as safeRegion, tt as collectPublishedOutputNames, u as resolveReplacementOldType, ua as nullPrototypeRecord, ui as buildDenyExternalAccessPolicy, un as AWS_CREDENTIAL_ENV_KEYS, ur as STATE_SOURCED_CROSS_GENERATION_RULES, ut as clearOnUpdateRemoval, v as isSecretBearingReferenceString, va as getAwsClients, vi as formatDockerLoginError, vn as UNREADABLE_RESOURCES_MAP_ROW, vr as isSingleDynamicReferenceToken, vt as interruptWatchListenerCount, w as reachableDivergentParameters, wi as escapeRegExp, wn as malformedExportNamesWarning, wr as redactSecretsForState, wt as UNSPECIFIED_SKIP_REASON, x as bindingSkippedOutputs, xa as setAwsClients, xi as redactDockerArgvValues, xn as hasReadableOutputs, xr as maskSecretsInText, xt as CloudControlProvider, y as keptWholeReasonText, ya as resetAwsClients, yi as getDockerCmd, yn as displayLogicalId, yr as markSameGenerationBag, yt as isInterruptedWaitError, z as isStatefulRecreateTargetForReplace, za as StackHasActiveImportsError, zi as stateBucketExistenceConfirmed, zn as refuseMalformedOrphans, zr as hasReasonlessBaselineRefusal, zt as refStateLookupFromResource } from "./deploy-engine-BtJocpRR.js";
1
+ import { $ as yellow, $a as retryClassificationText, $i as expectedOwnerParam, $n as repairMalformedResourcePropertiesForReadOnly, $r as rewriteTemplateAssetReferences, $t as requireConfigObject, A as createPreDeleteFinalSnapshot, Aa as LocalInvokeBuildError$1, Ai as getDefaultStateBucketName, An as malformedOutputsRefusalMessage, Ar as buildForceUnlockCommand, At as carriesDynamicReference, B as isStatefulRecreateTargetSync, Ba as StackTerminationProtectionError, Bi as warnDeprecatedNoPrefixCliFlag, Bn as refuseMalformedOrphansForDestroy, Br as hasUnverifiableParameterRefusal, Bt as isSettledInstanceState, C as namesAnyDeclaredParameter, Ca as CdkdError, Ci as runDockerStreaming, Cn as isReadableResourceEntry, Cr as recoverMaskedOutput, Ct as slowCcOperationTimeoutMs, D as PRE_DELETE_SNAPSHOT_TYPES, Da as DeployCancelledError, Di as getDockerImageBySourceHash, Dn as malformedOrphanRecordsWarning, Dr as S3StateBackend, Dt as disableInstanceApiTermination, E as ATOMIC_FINAL_SNAPSHOT_TYPES, Ei as AssetManifestLoader, En as malformedLocalOutputsWarning, Er as LockManager, Et as deleteSkipReason, F as extractDeploymentEventError, Fa as PartialFailureError, Fi as resolveSkipPrefix, Fn as malformedResourcesWarning, Fr as CUSTOM_RESOURCE_RESPONSE_PREFIX, Ft as isImpossibleEmptyStoredAttribute, G as toCfnInteger, Ga as normalizeAwsError, Gi as findLargeInlineResources, Gn as refuseMalformedResourceEntries, Gr as orphansCarriedFrom, Gt as coerceCfnBoolean, H as WARM_THROUGHPUT_MEMBERS, Ha as SynthesisError, Hi as CFN_TEMPLATE_BODY_LIMIT, Hn as refuseMalformedOutputs, Hr as importableOutputs, Ht as normalizeAwsTagsToCfn, I as makeSiblingClaimReader, Ia as ProvisioningError, Ii as resolveStateBucketWithDefault, In as malformedStateRefusalMessage, Ir as DEFAULT_STATE_PREFIX, It as isNamelessDynamicReferenceError, J as bold, Ja as isRetryableTransientError, Ji as injectiveKey, Jn as refuseMalformedResourcesForDestroy, Jr as stringifyValue, Jt as configIntegerRefusal, K as toFiniteNumber, Ka as withErrorHandling, Ki as uploadCfnTemplate, Kn as refuseMalformedResourceEntriesForOrphan, Kr as shouldRetainResource, Kt as coerceCfnInteger, L as planOrphanAdoption, La as ResourceTimeoutError, Li as resolveStateBucketWithDefaultAndSource, Ln as refuseDivergentRecordRegionForDestroy, Lr as exportNamesCarriedFrom, Lt as isUnboundTemplateParameter, M as refusesFinalSnapshot, Mi as resolveApp, Mn as malformedRenderedContainersWarning, Mr as forceQuitRecoveryClause, Mt as cfnRefValueFromPhysicalId, N as unsupportedFinalSnapshotError, Na as MalformedProducerRecordRefusalError, Ni as resolveAutoAssetStorage, Nn as malformedResourceEntriesWarning, Nr as formatLockExpiry, Nt as coerceParameterTypedValue, O as buildFinalSnapshotIdentifier, Oa as DynamicReferenceRegionAmbiguousError, Oi as Synthesizer, On as malformedOrphansRefusalMessage, Or as rebuildClientForBucketRegion, Ot as isTerminationProtectionPropagationError, P as makeCanonicalizePropertiesFn, Pa as NestedStackChildDirectDestroyError, Pi as resolveCaptureObservedState, Pn as malformedResourcePropertiesWarning, Pr as shellQuote, Pt as getAccountInfo, Q as red, Qa as markRedactedCause, Qi as decodeListingKey, Qn as repairMalformedResourceEntriesForReadOnly, Qr as loadPublishableAssetManifest, Qt as requireConfigArray, R as MULTI_REGION_RECREATE_BLOCKED_TYPES, Ra as ResourceUpdateNotSupportedError, Ri as resolveUseCdkBootstrapAssets, Rn as refuseMalformedNestedChildOutputs, Rr as hasReadableExportSet, Rt as parameterTypeMayLoseSecretIdentity, S as computeParameterTaint, Si as runDockerForeground, Sn as hasReadableResources, Sr as recordMaskOnlyValue, St as isWaitAbandonedError, T as resourcesNamingDeclaredParameter, Ta as CrossAccountSecretRefusalError, Ti as stripControlChars, Tn as malformedExportSourceWarning, Tr as scrubResourceRecord, Tt as deleteIndeterminateGuards, U as coerceWarmThroughput$1, Ui as CFN_TEMPLATE_URL_LIMIT, Un as refuseMalformedOutputsForDestroy, Ur as isReadableBag, Ut as resolveExplicitPhysicalId, V as renderStatefulReason, Vi as ssmResolvedValueType, Vn as refuseMalformedOrphansForOrphan, Vr as importableOutputKeys, Vt as WAFv2WebACLProvider, W as isWarmThroughputDecrease, Wi as MIGRATE_TMP_PREFIX, Wn as refuseMalformedResourceAttributesForOrphan, Wr as orphansAfterRollback, Wt as assertRegionMatch, X as gray, Xa as isTransientServerError, Xi as producerCoordinateKey, Xn as repairMalformedOrphansForReadOnly, Xr as buildAssetRedirectMap, Xt as readConfigString, Y as cyan, Ya as isThrottlingError, Yi as injectiveKeyPrefix, Yn as refuseMalformedState, Yr as WorkGraph, Yt as configStringRefusal, Z as green, Za as markNonRetryable, Zi as producerRecordKey, Zn as repairMalformedOutputsForReadOnly, Zr as createAssetRedirectResolver, Zt as replayWarn, _ as bagHoldsSecretExpression, _a as AwsClients, _i as dockerSpawnEnvWithSensitive, _n as UNREADABLE_ORPHANS_CONTAINER_ROW, _r as identityKeyFor, _t as endCommandInterruptScope, a as DeploymentEventsStore, aa as globMatches, ai as isCrossRegionRedirect, an as s3BucketDomainName, ar as describeTypeWithThrottleRetry, at as secretBearingStateKeyWarning, b as mergeNoChangeOutputs, ba as runWithStackAwsClients, bi as partitionSensitiveEnv, bn as hasReadableOrphans, br as maskSecretsInError, bt as startInterruptWatch, c as replayFailedOperations, ca as hasOwnKey, ci as validateAssetBucketName, cn as s3BucketWebsiteUrl, cr as TemplateParser, ct as IAMRoleProvider, d as updatePartialMessage, da as ownValue, di as buildDockerImage, dn as applyCallerIdentityCredentials, dr as STATE_SOURCED_READBACK_RULES, dt as ProviderRegistry, ea as PARTITION_TABLE, ei as AssetModeResolver, en as requireConfigString, eo as describeAwsFailure, er as repairMalformedResourcesForReadOnly, et as collectDeclaredOutputNames, f as updatePartialReason, fa as absoluteAssemblyPathEscape, fi as resolveDockerContextDirectory, fn as callerEnvCredentials, fr as TEMPLATE_SOURCED_RULES, ft as wouldReturnToSdkProvider, g as computeImplicitDeleteEdges, ga as resolveBucketRegion, gi as describeDockerFailure, gn as STATE_RESOURCES_MALFORMED, gr as errorCauseChain, gt as beginCommandInterruptScope, h as IMPLICIT_DELETE_DEPENDENCIES, hi as describeDockerExecFailure, hn as INTRINSIC_KEYS, hr as dynamicReferenceTokens, ht as maskerOrIdentity, i as DeploymentEventsReader, ia as failedStageNote, ii as getBootstrapMarkerKey, in as s3BucketArn, ir as findSilentDropProperties, it as secretBearing, j as isFinalSnapshotError, ja as LocalStartServiceError, ji as getLegacyStateBucketName, jn as malformedOutputsWarning, jr as buildLockContentionMessage, jt as carriesFetchableDynamicReference, k as ccRoutedFinalSnapshotError, ka as IntrinsicResolutionRefusalError, ki as synthesisStatusMessage, kn as malformedOrphansWarning, kr as UNREPRODUCIBLE_LOCK_CLAUSE, kt as IntrinsicFunctionResolver, l as replayRollback, la as hasPlainPrototype, li as validateContainerRepoName, ln as applyRoleArnIfSet, lr as STATE_SOURCED_BASELINE_RULES, lt as collectInlinePolicyNamesManagedBySiblings, m as maskingRetryLogger, ma as resolveAssemblyPath, mi as describeDockerCapturedOutput, mn as DiffCalculator, mr as createSecretMasker, mt as maskDeep, n as DEFAULT_RESOURCE_WARN_AFTER_MS, na as derivePartitionAndUrlSuffix, ni as assertAssetBucketRegion, nn as producerRegionsFromState, nr as safeStackName, nt as exportAliasCollisionScrubWarning, o as planFailedOps, oa as processStackMessages, oi as parseBootstrapMarker, on as s3BucketDualStackDomainName, or as withRetry, ot as secretSafeKeyDisplay, p as withResourceDeadline, pa as renderAssemblyPathEscape, pi as warnManifestExecutable, pn as envCredentialsAreAssumedRole, pr as carriesSecretMask, pt as createMaskedRetryLogger, q as formatResourceLine, qa as isMarkedNonRetryable, qi as CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION, qn as refuseMalformedResourcePropertiesForOrphan, qr as AssetPublisher, qt as configBooleanRefusal, r as DeployEngine, ra as AssemblyReader, ri as ensureAssetStorage, rn as withSharedDrainBudget, rr as findActionableSilentDrops, rt as isExportAliasCollision, s as planRollback, sa as defineOwnKey, si as readBootstrapMarkerBody, sn as s3BucketRegionalDomainName, sr as DagBuilder, st as getCurrentResourceSecrets, t as DEFAULT_RESOURCE_TIMEOUT_MS, ta as canonicalizeRegion, ti as BOOTSTRAP_MARKER_PREFIX, tn as classifyReplaySecretRegion, to as safeStringify, tr as safeRegion, tt as collectPublishedOutputNames, u as resolveReplacementOldType, ua as nullPrototypeRecord, ui as buildDenyExternalAccessPolicy, un as AWS_CREDENTIAL_ENV_KEYS, ur as STATE_SOURCED_CROSS_GENERATION_RULES, ut as clearOnUpdateRemoval, v as isSecretBearingReferenceString, va as getAwsClients, vi as formatDockerLoginError, vn as UNREADABLE_RESOURCES_MAP_ROW, vr as isSingleDynamicReferenceToken, vt as interruptWatchListenerCount, w as reachableDivergentParameters, wi as escapeRegExp, wn as malformedExportNamesWarning, wr as redactSecretsForState, wt as UNSPECIFIED_SKIP_REASON, x as bindingSkippedOutputs, xa as setAwsClients, xi as redactDockerArgvValues, xn as hasReadableOutputs, xr as maskSecretsInText, xt as CloudControlProvider, y as keptWholeReasonText, ya as resetAwsClients, yi as getDockerCmd, yn as displayLogicalId, yr as markSameGenerationBag, yt as isInterruptedWaitError, z as isStatefulRecreateTargetForReplace, za as StackHasActiveImportsError, zi as stateBucketExistenceConfirmed, zn as refuseMalformedOrphans, zr as hasReasonlessBaselineRefusal, zt as refStateLookupFromResource } from "./deploy-engine-BrGb93QQ.js";
2
2
  import { C as displayAwsMessage, D as truncateCodePoints, E as isPasteableIdent, S as UNRENDERABLE, T as displaySafe, _ as withSkipPrefix, b as SECRET_REF_MAX_CODE_POINTS, c as PATTERN_B_NAME_OPTIONS, f as explicitNamePropertyFor, h as getCurrentStackName, i as reserveStdoutForPayload, l as PATTERN_B_NAME_PROPERTIES, m as generateResourceNameWithFallback, n as getLogger, o as runStackBuffered, p as generateResourceName, s as getLiveRenderer, u as PATTERN_B_RESOURCE_TYPES, v as withStackName, w as displayIdent, x as STACK_REF_MAX_CODE_POINTS } from "./logger-GASr9bAF.js";
3
3
  import { n as awsClientDefaults, s as ambientRegion } from "./aws-client-defaults-jISU4PHo.js";
4
- import { t as getCdkdVersion } from "./version-DVA14XyG.js";
5
- import { a as renderDisableCommand, i as protectedReplacementAdvice, r as UNNAMEABLE_ID_CLAUSE, t as ASGProvider } from "./asg-provider-CZTUKQnY.js";
4
+ import { t as getCdkdVersion } from "./version-DQAkja2a.js";
5
+ import { a as renderDisableCommand, i as protectedReplacementAdvice, r as UNNAMEABLE_ID_CLAUSE, t as ASGProvider } from "./asg-provider-B1pinTYm.js";
6
6
  import { AsyncLocalStorage } from "node:async_hooks";
7
7
  import { createHash, randomBytes, randomUUID } from "node:crypto";
8
8
  import { CopyObjectCommand, CreateBucketCommand, DeleteBucketAnalyticsConfigurationCommand, DeleteBucketCommand, DeleteBucketCorsCommand, DeleteBucketEncryptionCommand, DeleteBucketIntelligentTieringConfigurationCommand, DeleteBucketInventoryConfigurationCommand, DeleteBucketLifecycleCommand, DeleteBucketMetricsConfigurationCommand, DeleteBucketOwnershipControlsCommand, DeleteBucketPolicyCommand, DeleteBucketReplicationCommand, DeleteBucketTaggingCommand, DeleteBucketWebsiteCommand, DeleteObjectsCommand, GetBucketAccelerateConfigurationCommand, GetBucketCorsCommand, GetBucketEncryptionCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketLoggingCommand, GetBucketNotificationConfigurationCommand, GetBucketOwnershipControlsCommand, GetBucketPolicyCommand, GetBucketReplicationCommand, GetBucketTaggingCommand, GetBucketVersioningCommand, GetBucketWebsiteCommand, GetObjectCommand, GetObjectLockConfigurationCommand, GetPublicAccessBlockCommand, HeadBucketCommand, ListBucketAnalyticsConfigurationsCommand, ListBucketIntelligentTieringConfigurationsCommand, ListBucketInventoryConfigurationsCommand, ListBucketMetricsConfigurationsCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchBucket, NotFound, 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";
@@ -7284,11 +7284,10 @@ function isTruthyCfnBoolean(value) {
7284
7284
  * rather than a fallback.
7285
7285
  *
7286
7286
  * ONE clause for both arms so the two cannot come to render the same value
7287
- * differently. The prose `(${bucketName})` each arm carries BESIDE it is still
7288
- * interpolated as-is: this clause takes only the pasteable half, and
7289
- * display-sanitizing the PROSE of provider warnings is tracked as issue
7290
- * [#3269](https://github.com/go-to-k/cdkd/issues/3269) (#3136 covers the
7291
- * COMMAND half across providers, not prose).
7287
+ * differently. The PROSE copy of the name each arm carries BESIDE it goes
7288
+ * through `displaySafe` at the arm, masked first (issue
7289
+ * [#3269](https://github.com/go-to-k/cdkd/issues/3269)): unlike the command, a
7290
+ * sanitized prose name names no target, so it is rendered rather than withheld.
7292
7291
  *
7293
7292
  * `maskSecrets` is REQUIRED rather than optional, and both call sites build it
7294
7293
  * from `context?.maskSecrets` (security review of #3136, which found these two
@@ -8383,8 +8382,8 @@ function canonicalizeItemList(properties, key, fold) {
8383
8382
  function describeValue$1(value, maskSecrets = (text) => text) {
8384
8383
  if (value === null) return "null";
8385
8384
  if (Array.isArray(value)) return "an array";
8386
- if (typeof value === "string") return `a string ${JSON.stringify(maskDeep(value, maskSecrets))}`;
8387
- if (isPlainObject$2(value)) return `an object with keys [${Object.keys(value).map((key) => maskSecrets(key)).join(", ")}]`;
8385
+ if (typeof value === "string") return `a string ${displaySafe(JSON.stringify(maskDeep(value, maskSecrets)))}`;
8386
+ if (isPlainObject$2(value)) return `an object with keys [${Object.keys(value).map((key) => displaySafe(maskSecrets(key))).join(", ")}]`;
8388
8387
  return `a ${typeof value} (${maskSecrets(String(value))})`;
8389
8388
  }
8390
8389
  /**
@@ -8709,7 +8708,7 @@ var S3BucketProvider = class S3BucketProvider {
8709
8708
  Bucket: bucketName,
8710
8709
  VersioningConfiguration: { Status: status }
8711
8710
  }));
8712
- this.logger.debug(`Applied versioning (${status}) to bucket ${bucketName}`);
8711
+ this.logger.debug(`Applied versioning (${status}) to bucket ${displaySafe(bucketName)}`);
8713
8712
  return true;
8714
8713
  }
8715
8714
  /**
@@ -8720,7 +8719,7 @@ var S3BucketProvider = class S3BucketProvider {
8720
8719
  Bucket: bucketName,
8721
8720
  Tagging: { TagSet: tags }
8722
8721
  }));
8723
- this.logger.debug(`Applied ${tags.length} tags to bucket ${bucketName}`);
8722
+ this.logger.debug(`Applied ${tags.length} tags to bucket ${displaySafe(bucketName)}`);
8724
8723
  }
8725
8724
  /**
8726
8725
  * Apply a diff between old and new CFn-shape Tags arrays via S3's
@@ -8746,7 +8745,7 @@ var S3BucketProvider = class S3BucketProvider {
8746
8745
  if (newNorm.length === 0) {
8747
8746
  try {
8748
8747
  await this.s3Client.send(new DeleteBucketTaggingCommand({ Bucket: bucketName }));
8749
- this.logger.debug(`Cleared tags from bucket ${bucketName}`);
8748
+ this.logger.debug(`Cleared tags from bucket ${displaySafe(bucketName)}`);
8750
8749
  } catch (err) {
8751
8750
  if (err.name === "NoSuchTagSet") return;
8752
8751
  throw err;
@@ -8757,7 +8756,7 @@ var S3BucketProvider = class S3BucketProvider {
8757
8756
  Bucket: bucketName,
8758
8757
  Tagging: { TagSet: newNorm }
8759
8758
  }));
8760
- this.logger.debug(`Replaced tag set on bucket ${bucketName} (${newNorm.length} tags)`);
8759
+ this.logger.debug(`Replaced tag set on bucket ${displaySafe(bucketName)} (${newNorm.length} tags)`);
8761
8760
  }
8762
8761
  /**
8763
8762
  * Apply CORS configuration
@@ -8782,7 +8781,7 @@ var S3BucketProvider = class S3BucketProvider {
8782
8781
  Bucket: bucketName,
8783
8782
  CORSConfiguration: { CORSRules: corsRules }
8784
8783
  }));
8785
- this.logger.debug(`Applied CORS configuration to bucket ${bucketName}`);
8784
+ this.logger.debug(`Applied CORS configuration to bucket ${displaySafe(bucketName)}`);
8786
8785
  }
8787
8786
  /**
8788
8787
  * The per-item / per-rule STRING guard, with the applier's own SKIP as the
@@ -8906,7 +8905,7 @@ var S3BucketProvider = class S3BucketProvider {
8906
8905
  if (coerceCfnBoolean(rule["ExpiredObjectDeleteMarker"]) === true) {
8907
8906
  const exp = sdkRule.Expiration;
8908
8907
  if (!(exp?.["Days"] !== void 0 || exp?.["Date"] !== void 0)) sdkRule.Expiration = { ExpiredObjectDeleteMarker: true };
8909
- else this.logger.warn(`Lifecycle rule '${rule["Id"] ?? "<unnamed>"}' on ${bucketName} sets ExpiredObjectDeleteMarker alongside an expiration Days/Date; S3 forbids combining them, so the delete-marker cleanup was not applied.`);
8908
+ else this.logger.warn(`Lifecycle rule '${displaySafe(rule["Id"] ?? "<unnamed>")}' on ${displaySafe(bucketName)} sets ExpiredObjectDeleteMarker alongside an expiration Days/Date; S3 forbids combining them, so the delete-marker cleanup was not applied.`);
8910
8909
  }
8911
8910
  const nve = isPlainObject$2(rule["NoncurrentVersionExpiration"]) ? rule["NoncurrentVersionExpiration"] : void 0;
8912
8911
  const legacyNveDays = rule["NoncurrentVersionExpirationInDays"];
@@ -8922,7 +8921,7 @@ var S3BucketProvider = class S3BucketProvider {
8922
8921
  });
8923
8922
  const nvts = rule["NoncurrentVersionTransitions"];
8924
8923
  const singularNvt = rule["NoncurrentVersionTransition"];
8925
- const allNvts = mergeLegacySingular(nvts, singularNvt, (sc) => this.logger.warn(`Lifecycle rule '${rule["Id"] ?? "<unnamed>"}' on ${bucketName} declares both NoncurrentVersionTransitions and the legacy NoncurrentVersionTransition for storage class ${sc}; S3 rejects duplicates, so the legacy singular was ignored.`));
8924
+ const allNvts = mergeLegacySingular(nvts, singularNvt, (sc) => this.logger.warn(`Lifecycle rule '${displaySafe(rule["Id"] ?? "<unnamed>")}' on ${displaySafe(bucketName)} declares both NoncurrentVersionTransitions and the legacy NoncurrentVersionTransition for storage class ${displaySafe(sc)}; S3 rejects duplicates, so the legacy singular was ignored.`));
8926
8925
  if (allNvts.length > 0) sdkRule.NoncurrentVersionTransitions = allNvts.map(toSdkNvt);
8927
8926
  const toSdkTransition = (t) => ({
8928
8927
  Days: t["TransitionInDays"] ?? t["Days"],
@@ -8931,7 +8930,7 @@ var S3BucketProvider = class S3BucketProvider {
8931
8930
  });
8932
8931
  const transitions = rule["Transitions"];
8933
8932
  const singularTransition = rule["Transition"];
8934
- const allTransitions = mergeLegacySingular(transitions, singularTransition, (sc) => this.logger.warn(`Lifecycle rule '${rule["Id"] ?? "<unnamed>"}' on ${bucketName} declares both Transitions and the legacy Transition for storage class ${sc}; S3 rejects duplicates, so the legacy singular was ignored.`));
8933
+ const allTransitions = mergeLegacySingular(transitions, singularTransition, (sc) => this.logger.warn(`Lifecycle rule '${displaySafe(rule["Id"] ?? "<unnamed>")}' on ${displaySafe(bucketName)} declares both Transitions and the legacy Transition for storage class ${displaySafe(sc)}; S3 rejects duplicates, so the legacy singular was ignored.`));
8935
8934
  if (allTransitions.length > 0) sdkRule.Transitions = allTransitions.map(toSdkTransition);
8936
8935
  const abort = isPlainObject$2(rule["AbortIncompleteMultipartUpload"]) ? rule["AbortIncompleteMultipartUpload"] : void 0;
8937
8936
  if (abort) sdkRule.AbortIncompleteMultipartUpload = { DaysAfterInitiation: abort["DaysAfterInitiation"] };
@@ -8955,7 +8954,7 @@ var S3BucketProvider = class S3BucketProvider {
8955
8954
  LifecycleConfiguration: { Rules: rules },
8956
8955
  TransitionDefaultMinimumObjectSize: lifecycleConfig["TransitionDefaultMinimumObjectSize"]
8957
8956
  }));
8958
- this.logger.debug(`Applied lifecycle configuration to bucket ${bucketName}`);
8957
+ this.logger.debug(`Applied lifecycle configuration to bucket ${displaySafe(bucketName)}`);
8959
8958
  return true;
8960
8959
  }
8961
8960
  /**
@@ -8975,7 +8974,7 @@ var S3BucketProvider = class S3BucketProvider {
8975
8974
  RestrictPublicBuckets: config["RestrictPublicBuckets"]
8976
8975
  }
8977
8976
  }));
8978
- this.logger.debug(`Applied public access block configuration to bucket ${bucketName}`);
8977
+ this.logger.debug(`Applied public access block configuration to bucket ${displaySafe(bucketName)}`);
8979
8978
  }
8980
8979
  /**
8981
8980
  * Apply bucket encryption configuration
@@ -9005,7 +9004,7 @@ var S3BucketProvider = class S3BucketProvider {
9005
9004
  Bucket: bucketName,
9006
9005
  ServerSideEncryptionConfiguration: { Rules: rules }
9007
9006
  }));
9008
- this.logger.debug(`Applied encryption configuration to bucket ${bucketName}`);
9007
+ this.logger.debug(`Applied encryption configuration to bucket ${displaySafe(bucketName)}`);
9009
9008
  }
9010
9009
  /**
9011
9010
  * Apply logging configuration
@@ -9033,7 +9032,7 @@ var S3BucketProvider = class S3BucketProvider {
9033
9032
  Bucket: bucketName,
9034
9033
  BucketLoggingStatus: {}
9035
9034
  }));
9036
- this.logger.debug(`Cleared logging configuration on bucket ${bucketName}`);
9035
+ this.logger.debug(`Cleared logging configuration on bucket ${displaySafe(bucketName)}`);
9037
9036
  return true;
9038
9037
  }
9039
9038
  const loggingEnabled = {
@@ -9052,7 +9051,7 @@ var S3BucketProvider = class S3BucketProvider {
9052
9051
  Bucket: bucketName,
9053
9052
  BucketLoggingStatus: { LoggingEnabled: loggingEnabled }
9054
9053
  }));
9055
- this.logger.debug(`Applied logging configuration to bucket ${bucketName}`);
9054
+ this.logger.debug(`Applied logging configuration to bucket ${displaySafe(bucketName)}`);
9056
9055
  return true;
9057
9056
  }
9058
9057
  /**
@@ -9098,7 +9097,7 @@ var S3BucketProvider = class S3BucketProvider {
9098
9097
  Bucket: bucketName,
9099
9098
  WebsiteConfiguration: sdkConfig
9100
9099
  }));
9101
- this.logger.debug(`Applied website configuration to bucket ${bucketName}`);
9100
+ this.logger.debug(`Applied website configuration to bucket ${displaySafe(bucketName)}`);
9102
9101
  }
9103
9102
  /**
9104
9103
  * Apply accelerate configuration
@@ -9111,7 +9110,7 @@ var S3BucketProvider = class S3BucketProvider {
9111
9110
  Bucket: bucketName,
9112
9111
  AccelerateConfiguration: { Status: config["AccelerationStatus"] }
9113
9112
  }));
9114
- this.logger.debug(`Applied accelerate configuration to bucket ${bucketName}`);
9113
+ this.logger.debug(`Applied accelerate configuration to bucket ${displaySafe(bucketName)}`);
9115
9114
  }
9116
9115
  /**
9117
9116
  * Apply notification configuration (full-replace via PutBucketNotificationConfiguration)
@@ -9160,7 +9159,7 @@ var S3BucketProvider = class S3BucketProvider {
9160
9159
  Bucket: bucketName,
9161
9160
  NotificationConfiguration: cfg
9162
9161
  }));
9163
- this.logger.debug(`Applied notification configuration to bucket ${bucketName}`);
9162
+ this.logger.debug(`Applied notification configuration to bucket ${displaySafe(bucketName)}`);
9164
9163
  return true;
9165
9164
  }
9166
9165
  /**
@@ -9219,7 +9218,7 @@ var S3BucketProvider = class S3BucketProvider {
9219
9218
  MetricsConfiguration: metricsConfig
9220
9219
  }));
9221
9220
  }
9222
- this.logger.debug(`Applied ${configs.length - skipped.length} metrics configuration(s) to bucket ${bucketName}`);
9221
+ this.logger.debug(`Applied ${configs.length - skipped.length} metrics configuration(s) to bucket ${displaySafe(bucketName)}`);
9223
9222
  return {
9224
9223
  skipped,
9225
9224
  substituted: /* @__PURE__ */ new Map()
@@ -9355,7 +9354,7 @@ var S3BucketProvider = class S3BucketProvider {
9355
9354
  });
9356
9355
  if (sentItem !== config) substituted.set(index, sentItem);
9357
9356
  }
9358
- this.logger.debug(`Applied ${configs.length - skipped.length} analytics configuration(s) to bucket ${bucketName}`);
9357
+ this.logger.debug(`Applied ${configs.length - skipped.length} analytics configuration(s) to bucket ${displaySafe(bucketName)}`);
9359
9358
  return {
9360
9359
  skipped,
9361
9360
  substituted
@@ -9420,7 +9419,7 @@ var S3BucketProvider = class S3BucketProvider {
9420
9419
  const sentItem = effectiveIntelligentTieringItem(config);
9421
9420
  if (sentItem !== config) substituted.set(index, sentItem);
9422
9421
  }
9423
- this.logger.debug(`Applied ${configs.length - skipped.length} intelligent tiering configuration(s) to bucket ${bucketName}`);
9422
+ this.logger.debug(`Applied ${configs.length - skipped.length} intelligent tiering configuration(s) to bucket ${displaySafe(bucketName)}`);
9424
9423
  return {
9425
9424
  skipped,
9426
9425
  substituted
@@ -9503,7 +9502,7 @@ var S3BucketProvider = class S3BucketProvider {
9503
9502
  });
9504
9503
  if (sentItem !== config) substituted.set(index, sentItem);
9505
9504
  }
9506
- this.logger.debug(`Applied ${configs.length - skipped.length} inventory configuration(s) to bucket ${bucketName}`);
9505
+ this.logger.debug(`Applied ${configs.length - skipped.length} inventory configuration(s) to bucket ${displaySafe(bucketName)}`);
9507
9506
  return {
9508
9507
  skipped,
9509
9508
  substituted
@@ -9622,7 +9621,7 @@ var S3BucketProvider = class S3BucketProvider {
9622
9621
  })
9623
9622
  }
9624
9623
  }));
9625
- this.logger.debug(`Applied replication configuration to bucket ${bucketName}`);
9624
+ this.logger.debug(`Applied replication configuration to bucket ${displaySafe(bucketName)}`);
9626
9625
  return true;
9627
9626
  }
9628
9627
  /**
@@ -9668,7 +9667,7 @@ var S3BucketProvider = class S3BucketProvider {
9668
9667
  Bucket: bucketName,
9669
9668
  ObjectLockConfiguration: objectLockConfig
9670
9669
  }));
9671
- this.logger.debug(`Applied object lock configuration to bucket ${bucketName}`);
9670
+ this.logger.debug(`Applied object lock configuration to bucket ${displaySafe(bucketName)}`);
9672
9671
  return true;
9673
9672
  }
9674
9673
  /**
@@ -9711,7 +9710,7 @@ var S3BucketProvider = class S3BucketProvider {
9711
9710
  Bucket: bucketName,
9712
9711
  OwnershipControls: { Rules: ownershipControls.Rules.map((r) => ({ ObjectOwnership: r.ObjectOwnership })) }
9713
9712
  }));
9714
- this.logger.debug(`Applied ownership controls to bucket ${bucketName}`);
9713
+ this.logger.debug(`Applied ownership controls to bucket ${displaySafe(bucketName)}`);
9715
9714
  }
9716
9715
  /**
9717
9716
  * Normalize an "empty container" sub-config value to `undefined` so the diff
@@ -10111,7 +10110,7 @@ var S3BucketProvider = class S3BucketProvider {
10111
10110
  if (skippedIds.size === 0 && sentItems.size === 0) return;
10112
10111
  const desired = properties[key];
10113
10112
  if (!Array.isArray(desired)) {
10114
- this.logger.debug(`Bucket ${bucketName}: ${skippedIds.size + sentItems.size} skipped or substituted ${key} item(s) could not be recorded — the desired value is not an array`);
10113
+ this.logger.debug(`Bucket ${displaySafe(bucketName)}: ${skippedIds.size + sentItems.size} skipped or substituted ${key} item(s) could not be recorded — the desired value is not an array`);
10115
10114
  return;
10116
10115
  }
10117
10116
  const previous = previousProperties[key];
@@ -10128,7 +10127,7 @@ var S3BucketProvider = class S3BucketProvider {
10128
10127
  const versioningChanged = JSON.stringify(previousVersioning ?? null) !== JSON.stringify(nextVersioning ?? null);
10129
10128
  const versioningRefusal = configStringRefusal(nextVersioning, "Status", "Suspended", "AWS::S3::Bucket VersioningConfiguration");
10130
10129
  if (versioningRefusal !== void 0 && versioningChanged) {
10131
- this.logger.warn(`Bucket ${bucketName}: ${versioningRefusal}. Leaving the bucket's LIVE versioning state unchanged — neither enabling nor suspending it; the same value is REFUSED on a template-path create`);
10130
+ this.logger.warn(`Bucket ${displaySafe(bucketName)}: ${versioningRefusal}. Leaving the bucket's LIVE versioning state unchanged — neither enabling nor suspending it; the same value is REFUSED on a template-path create`);
10132
10131
  retainPrevious("VersioningConfiguration");
10133
10132
  }
10134
10133
  const desiredVersioningStatus = versioningRefusal === void 0 ? readConfigString(nextVersioning, "Status", "Suspended", "AWS::S3::Bucket VersioningConfiguration") : void 0;
@@ -10142,7 +10141,7 @@ var S3BucketProvider = class S3BucketProvider {
10142
10141
  return;
10143
10142
  }
10144
10143
  await this.s3Client.send(new DeleteBucketOwnershipControlsCommand({ Bucket: bucketName }));
10145
- this.logger.debug(`Deleted ownership controls on bucket ${bucketName}`);
10144
+ this.logger.debug(`Deleted ownership controls on bucket ${displaySafe(bucketName)}`);
10146
10145
  });
10147
10146
  const encryptionEmptyDesired = S3BucketProvider.declaresEmptyCollection(properties["BucketEncryption"], "ServerSideEncryptionConfiguration");
10148
10147
  await this.diffSubConfig(bucketName, S3BucketProvider.emptyListConfigToUndefined(previousProperties["BucketEncryption"], "ServerSideEncryptionConfiguration"), S3BucketProvider.emptyListConfigToUndefined(properties["BucketEncryption"], "ServerSideEncryptionConfiguration"), async (cfg) => this.applyBucketEncryption(bucketName, cfg), async () => {
@@ -10151,13 +10150,13 @@ var S3BucketProvider = class S3BucketProvider {
10151
10150
  return;
10152
10151
  }
10153
10152
  await this.s3Client.send(new DeleteBucketEncryptionCommand({ Bucket: bucketName }));
10154
- this.logger.debug(`Deleted bucket encryption on bucket ${bucketName}`);
10153
+ this.logger.debug(`Deleted bucket encryption on bucket ${displaySafe(bucketName)}`);
10155
10154
  });
10156
10155
  await this.diffSubConfig(bucketName, previousProperties["LifecycleConfiguration"], properties["LifecycleConfiguration"], async (cfg) => {
10157
10156
  if (!cfg.Rules || !Array.isArray(cfg.Rules) || cfg.Rules.length === 0) {
10158
10157
  if (context?.desiredFromAwsReadback === true) {
10159
10158
  await this.s3Client.send(new DeleteBucketLifecycleCommand({ Bucket: bucketName }));
10160
- this.logger.debug(`Deleted lifecycle configuration on bucket ${bucketName} (reverting to an unset baseline)`);
10159
+ this.logger.debug(`Deleted lifecycle configuration on bucket ${displaySafe(bucketName)} (reverting to an unset baseline)`);
10161
10160
  return;
10162
10161
  }
10163
10162
  this.emptyCollectionSkip("LifecycleConfiguration", "LifecycleConfiguration.Rules", previousProperties, retainPrevious);
@@ -10167,13 +10166,13 @@ var S3BucketProvider = class S3BucketProvider {
10167
10166
  else recordEffectiveFold("LifecycleConfiguration", effectiveLifecycleConfiguration(cfg));
10168
10167
  }, async () => {
10169
10168
  await this.s3Client.send(new DeleteBucketLifecycleCommand({ Bucket: bucketName }));
10170
- this.logger.debug(`Deleted lifecycle configuration on bucket ${bucketName}`);
10169
+ this.logger.debug(`Deleted lifecycle configuration on bucket ${displaySafe(bucketName)}`);
10171
10170
  });
10172
10171
  await this.diffSubConfig(bucketName, previousProperties["CorsConfiguration"], properties["CorsConfiguration"], async (cfg) => {
10173
10172
  if (!cfg.CorsRules || !Array.isArray(cfg.CorsRules) || cfg.CorsRules.length === 0) {
10174
10173
  if (context?.desiredFromAwsReadback === true) {
10175
10174
  await this.s3Client.send(new DeleteBucketCorsCommand({ Bucket: bucketName }));
10176
- this.logger.debug(`Deleted CORS configuration on bucket ${bucketName} (reverting to an unset baseline)`);
10175
+ this.logger.debug(`Deleted CORS configuration on bucket ${displaySafe(bucketName)} (reverting to an unset baseline)`);
10177
10176
  return;
10178
10177
  }
10179
10178
  this.emptyCollectionSkip("CorsConfiguration", "CorsConfiguration.CorsRules", previousProperties, retainPrevious);
@@ -10182,11 +10181,11 @@ var S3BucketProvider = class S3BucketProvider {
10182
10181
  await this.applyCorsConfiguration(bucketName, cfg);
10183
10182
  }, async () => {
10184
10183
  await this.s3Client.send(new DeleteBucketCorsCommand({ Bucket: bucketName }));
10185
- this.logger.debug(`Deleted CORS configuration on bucket ${bucketName}`);
10184
+ this.logger.debug(`Deleted CORS configuration on bucket ${displaySafe(bucketName)}`);
10186
10185
  });
10187
10186
  await this.diffSubConfig(bucketName, previousProperties["WebsiteConfiguration"], properties["WebsiteConfiguration"], async (cfg) => this.applyWebsiteConfiguration(bucketName, cfg), async () => {
10188
10187
  await this.s3Client.send(new DeleteBucketWebsiteCommand({ Bucket: bucketName }));
10189
- this.logger.debug(`Deleted website configuration on bucket ${bucketName}`);
10188
+ this.logger.debug(`Deleted website configuration on bucket ${displaySafe(bucketName)}`);
10190
10189
  });
10191
10190
  await this.diffSubConfig(bucketName, previousProperties["LoggingConfiguration"], properties["LoggingConfiguration"], async (cfg) => {
10192
10191
  if (!await this.applyLoggingConfiguration(bucketName, cfg, (m) => this.logger.warn(m))) retainPrevious("LoggingConfiguration");
@@ -10203,7 +10202,7 @@ var S3BucketProvider = class S3BucketProvider {
10203
10202
  if (!await this.applyReplicationConfiguration(bucketName, cfg, (m) => this.logger.warn(m))) retainPrevious("ReplicationConfiguration");
10204
10203
  }, async () => {
10205
10204
  await this.s3Client.send(new DeleteBucketReplicationCommand({ Bucket: bucketName }));
10206
- this.logger.debug(`Deleted replication configuration on bucket ${bucketName}`);
10205
+ this.logger.debug(`Deleted replication configuration on bucket ${displaySafe(bucketName)}`);
10207
10206
  });
10208
10207
  await this.diffSubConfig(bucketName, previousProperties["ObjectLockConfiguration"], properties["ObjectLockConfiguration"], async (cfg) => {
10209
10208
  if (!await this.applyObjectLockConfiguration(bucketName, cfg, (m) => this.logger.warn(m))) retainPrevious("ObjectLockConfiguration");
@@ -10212,7 +10211,7 @@ var S3BucketProvider = class S3BucketProvider {
10212
10211
  Bucket: bucketName,
10213
10212
  ObjectLockConfiguration: { ObjectLockEnabled: "Enabled" }
10214
10213
  }));
10215
- this.logger.debug(`Cleared object lock rule on bucket ${bucketName}`);
10214
+ this.logger.debug(`Cleared object lock rule on bucket ${displaySafe(bucketName)}`);
10216
10215
  });
10217
10216
  await this.diffSubConfig(bucketName, previousProperties["AccelerateConfiguration"], properties["AccelerateConfiguration"], async (cfg) => this.applyAccelerateConfiguration(bucketName, cfg), async () => this.applyAccelerateConfiguration(bucketName, { AccelerationStatus: "Suspended" }));
10218
10217
  const metricsOutcomes = itemOutcomes();
@@ -10224,7 +10223,7 @@ var S3BucketProvider = class S3BucketProvider {
10224
10223
  Bucket: bucketName,
10225
10224
  Id: id
10226
10225
  }));
10227
- this.logger.debug(`Deleted metrics configuration ${id} on bucket ${bucketName}`);
10226
+ this.logger.debug(`Deleted metrics configuration ${displaySafe(id)} on bucket ${displaySafe(bucketName)}`);
10228
10227
  });
10229
10228
  retainPreviousItems("MetricsConfigurations", metricsOutcomes);
10230
10229
  const analyticsOutcomes = itemOutcomes();
@@ -10236,7 +10235,7 @@ var S3BucketProvider = class S3BucketProvider {
10236
10235
  Bucket: bucketName,
10237
10236
  Id: id
10238
10237
  }));
10239
- this.logger.debug(`Deleted analytics configuration ${id} on bucket ${bucketName}`);
10238
+ this.logger.debug(`Deleted analytics configuration ${displaySafe(id)} on bucket ${displaySafe(bucketName)}`);
10240
10239
  });
10241
10240
  retainPreviousItems("AnalyticsConfigurations", analyticsOutcomes);
10242
10241
  const intelligentTieringOutcomes = itemOutcomes();
@@ -10248,7 +10247,7 @@ var S3BucketProvider = class S3BucketProvider {
10248
10247
  Bucket: bucketName,
10249
10248
  Id: id
10250
10249
  }));
10251
- this.logger.debug(`Deleted intelligent tiering configuration ${id} on bucket ${bucketName}`);
10250
+ this.logger.debug(`Deleted intelligent tiering configuration ${displaySafe(id)} on bucket ${displaySafe(bucketName)}`);
10252
10251
  });
10253
10252
  retainPreviousItems("IntelligentTieringConfigurations", intelligentTieringOutcomes);
10254
10253
  const inventoryOutcomes = itemOutcomes();
@@ -10260,7 +10259,7 @@ var S3BucketProvider = class S3BucketProvider {
10260
10259
  Bucket: bucketName,
10261
10260
  Id: id
10262
10261
  }));
10263
- this.logger.debug(`Deleted inventory configuration ${id} on bucket ${bucketName}`);
10262
+ this.logger.debug(`Deleted inventory configuration ${displaySafe(id)} on bucket ${displaySafe(bucketName)}`);
10264
10263
  });
10265
10264
  retainPreviousItems("InventoryConfigurations", inventoryOutcomes);
10266
10265
  if (versioningChanged && desiredVersioningStatus === "Suspended") {
@@ -10269,7 +10268,7 @@ var S3BucketProvider = class S3BucketProvider {
10269
10268
  return p["ObjectLockConfiguration"]?.["ObjectLockEnabled"] === "Enabled";
10270
10269
  };
10271
10270
  if (hasObjectLock(properties) || hasObjectLock(previousProperties)) {
10272
- this.logger.warn(`Bucket ${bucketName}: versioning would be suspended (VersioningConfiguration removed or set to Suspended), but the bucket has Object Lock enabled and S3 does not allow suspending versioning on it. Leaving versioning enabled.`);
10271
+ this.logger.warn(`Bucket ${displaySafe(bucketName)}: versioning would be suspended (VersioningConfiguration removed or set to Suspended), but the bucket has Object Lock enabled and S3 does not allow suspending versioning on it. Leaving versioning enabled.`);
10273
10272
  retainPrevious("VersioningConfiguration");
10274
10273
  } else await this.applyVersioning(bucketName, { Status: "Suspended" });
10275
10274
  }
@@ -10427,7 +10426,7 @@ var S3BucketProvider = class S3BucketProvider {
10427
10426
  * statement without the compiler losing that control flow ends there.
10428
10427
  */
10429
10428
  refuseForeignRegionAdopt(logicalId, resourceType, bucketName, wantRegion, actualRegion, cause) {
10430
- throw markNonRetryable(new ProvisioningError(`Refusing to adopt existing S3 bucket ${bucketName} for ${logicalId} (${resourceType}): it is owned by this account but lives in ${actualRegion}, while this stack deploys to ${wantRegion}. S3 bucket names are globally unique, so owning the name (which is what 'BucketAlreadyOwnedByYou' and a successful location lookup each report) never means the bucket is in this region. Adopting it would apply this stack's bucket configuration to a bucket in ${actualRegion}, and would record a physical id that denotes no bucket in ${wantRegion}. Either give this stack a bucket name unique to ${wantRegion}, or deploy the stack to ${actualRegion}.`, resourceType, logicalId, bucketName, cause));
10429
+ throw markNonRetryable(new ProvisioningError(`Refusing to adopt existing S3 bucket ${displaySafe(bucketName)} for ${displaySafe(logicalId)} (${resourceType}): it is owned by this account but lives in ${actualRegion}, while this stack deploys to ${wantRegion}. S3 bucket names are globally unique, so owning the name (which is what 'BucketAlreadyOwnedByYou' and a successful location lookup each report) never means the bucket is in this region. Adopting it would apply this stack's bucket configuration to a bucket in ${actualRegion}, and would record a physical id that denotes no bucket in ${wantRegion}. Either give this stack a bucket name unique to ${wantRegion}, or deploy the stack to ${actualRegion}.`, resourceType, logicalId, bucketName, cause));
10431
10430
  }
10432
10431
  /**
10433
10432
  * The region an already-owned bucket actually lives in, canonicalized.
@@ -10577,14 +10576,14 @@ var S3BucketProvider = class S3BucketProvider {
10577
10576
  const probe = await this.probeBucketRegion(physicalId);
10578
10577
  if (probe.kind === "absent") return;
10579
10578
  if (probe.kind === "indeterminate") {
10580
- this.logger.debug(`GetBucketLocation failed for S3 bucket ${physicalId} (${logicalId}) before ${operation}: ${probe.reason}`);
10579
+ this.logger.debug(`GetBucketLocation failed for S3 bucket ${displaySafe(physicalId)} (${displaySafe(logicalId)}) before ${operation}: ${probe.reason}`);
10581
10580
  this.announceUnverifiedBucketIdentity(operation, logicalId, physicalId, probeFailedCause(probe.errorName));
10582
10581
  return;
10583
10582
  }
10584
10583
  if (probe.region === wantRegion) return;
10585
10584
  const consequence = operation === "update" ? `Applying this stack's bucket configuration would reconfigure a bucket in ${probe.region} that this stack does not own the definition of.` : `Deleting it would destroy a bucket in ${probe.region} that this stack's region does not contain, and that deletion cannot be undone.`;
10586
- const remedy = operation === "update" ? `Confirm which bucket you mean, then either rerun this stack against ${probe.region}, or — if the recorded id is stale — drop cdkd's record with 'cdkd state orphan <stack>', which removes the record without touching any AWS resource, and deploy again.` : `Confirm which bucket you mean. If ${physicalId} is genuinely yours to delete, delete it deliberately in ${probe.region}; if this record is simply stale, drop it with 'cdkd state orphan <stack>', which removes cdkd's record without touching any AWS resource, and the destroy will then have nothing to do for this resource.`;
10587
- throw markNonRetryable(new ProvisioningError(`Refusing to ${operation} S3 bucket ${physicalId} for ${logicalId} (${resourceType}): the bucket lives in ${probe.region}, while this stack's state is for ${wantRegion}. S3 bucket names are globally unique, so a state record can name a bucket in another region — records written before the create-path region guard can carry one. ${consequence} ${remedy}`, resourceType, logicalId, physicalId));
10585
+ const remedy = operation === "update" ? `Confirm which bucket you mean, then either rerun this stack against ${probe.region}, or — if the recorded id is stale — drop cdkd's record with 'cdkd state orphan <stack>', which removes the record without touching any AWS resource, and deploy again.` : `Confirm which bucket you mean. If ${displaySafe(physicalId)} is genuinely yours to delete, delete it deliberately in ${probe.region}; if this record is simply stale, drop it with 'cdkd state orphan <stack>', which removes cdkd's record without touching any AWS resource, and the destroy will then have nothing to do for this resource.`;
10586
+ throw markNonRetryable(new ProvisioningError(`Refusing to ${operation} S3 bucket ${displaySafe(physicalId)} for ${displaySafe(logicalId)} (${resourceType}): the bucket lives in ${probe.region}, while this stack's state is for ${wantRegion}. S3 bucket names are globally unique, so a state record can name a bucket in another region — records written before the create-path region guard can carry one. ${consequence} ${remedy}`, resourceType, logicalId, physicalId));
10588
10587
  }
10589
10588
  /**
10590
10589
  * Say out loud that the identity guard did not run.
@@ -10619,7 +10618,7 @@ var S3BucketProvider = class S3BucketProvider {
10619
10618
  * actual defect.
10620
10619
  */
10621
10620
  announceUnverifiedBucketIdentity(operation, logicalId, physicalId, cause) {
10622
- const message = `Could not confirm which bucket ${physicalId} for ${logicalId} is before ${operation}: ${cause.why}, so the cross-region guard did NOT run and cdkd is proceeding on the recorded physical id alone.`;
10621
+ const message = `Could not confirm which bucket ${displaySafe(physicalId)} for ${displaySafe(logicalId)} is before ${operation}: ${cause.why}, so the cross-region guard did NOT run and cdkd is proceeding on the recorded physical id alone.`;
10623
10622
  if (operation === "delete") {
10624
10623
  this.logger.warn(`${message} If this state record names a bucket in another region, this destroy will delete THAT bucket. ${cause.remedy}`);
10625
10624
  return;
@@ -10630,7 +10629,7 @@ var S3BucketProvider = class S3BucketProvider {
10630
10629
  * Create an S3 bucket
10631
10630
  */
10632
10631
  async create(logicalId, resourceType, properties, context) {
10633
- this.logger.debug(`Creating S3 bucket ${logicalId}`);
10632
+ this.logger.debug(`Creating S3 bucket ${displaySafe(logicalId)}`);
10634
10633
  const bucketName = properties["BucketName"] || generateResourceName(logicalId, {
10635
10634
  maxLength: 63,
10636
10635
  lowercase: true,
@@ -10648,13 +10647,13 @@ var S3BucketProvider = class S3BucketProvider {
10648
10647
  await this.s3Client.send(new CreateBucketCommand(createParams));
10649
10648
  createdNewBucket = preflight.kind === "absent";
10650
10649
  if (preflight.kind === "region" && preflight.region !== "us-east-1") this.refuseForeignRegionAdopt(logicalId, resourceType, bucketName, "us-east-1", preflight.region);
10651
- if (preflight.kind === "region") this.logger.warn(`S3 bucket ${bucketName} for ${logicalId} (${resourceType}) already existed in ${preflight.region} and was ADOPTED, not created. In us-east-1 S3 answers a re-create of a bucket you already own with 200 OK and RESETS that bucket's access control lists, so any ACL previously set on ${bucketName} is now the default. cdkd will not delete this bucket if the rest of this create fails.`);
10652
- this.logger.debug(`Created S3 bucket: ${bucketName}`);
10650
+ if (preflight.kind === "region") this.logger.warn(`S3 bucket ${displaySafe(bucketName)} for ${displaySafe(logicalId)} (${resourceType}) already existed in ${preflight.region} and was ADOPTED, not created. In us-east-1 S3 answers a re-create of a bucket you already own with 200 OK and RESETS that bucket's access control lists, so any ACL previously set on ${displaySafe(bucketName)} is now the default. cdkd will not delete this bucket if the rest of this create fails.`);
10651
+ this.logger.debug(`Created S3 bucket: ${displaySafe(bucketName)}`);
10653
10652
  } catch (createError) {
10654
10653
  if (createError instanceof ProvisioningError) throw createError;
10655
10654
  if (createError instanceof Error && (createError.name === "BucketAlreadyOwnedByYou" || createError.message.includes("you already own it"))) {
10656
10655
  await this.assertExistingBucketRegion(logicalId, resourceType, bucketName, region, createError);
10657
- this.logger.debug(`S3 bucket ${bucketName} already exists and is owned by you`);
10656
+ this.logger.debug(`S3 bucket ${displaySafe(bucketName)} already exists and is owned by you`);
10658
10657
  } else throw createError;
10659
10658
  }
10660
10659
  let effectiveOverrides;
@@ -10664,21 +10663,21 @@ var S3BucketProvider = class S3BucketProvider {
10664
10663
  } catch (innerError) {
10665
10664
  if (createdNewBucket) try {
10666
10665
  await this.s3Client.send(new DeleteBucketCommand({ Bucket: bucketName }));
10667
- this.logger.debug(`Cleaned up partially-created S3 bucket ${logicalId} (${bucketName}) after wiring failure`);
10666
+ this.logger.debug(`Cleaned up partially-created S3 bucket ${displaySafe(logicalId)} (${displaySafe(bucketName)}) after wiring failure`);
10668
10667
  } catch (cleanupError) {
10669
- this.logger.debug(`DeleteBucket cleanup failed for S3 bucket ${logicalId} (${bucketName}): ${describeAwsFailure(cleanupError).detail}`);
10668
+ this.logger.debug(`DeleteBucket cleanup failed for S3 bucket ${displaySafe(logicalId)} (${displaySafe(bucketName)}): ${describeAwsFailure(cleanupError).detail}`);
10670
10669
  const maskSecrets = maskerOrIdentity(context?.maskSecrets);
10671
- this.logger.warn(maskSecrets(`Failed to clean up partially-created S3 bucket ${logicalId} (${bucketName}) (${cleanupError instanceof Error ? cleanupError.name : typeof cleanupError}). Re-run with --verbose for AWS's own message. ` + manualBucketDeletionClause(bucketName, maskSecrets)));
10670
+ this.logger.warn(maskSecrets(`Failed to clean up partially-created S3 bucket ${displaySafe(logicalId)} (${displaySafe(maskSecrets(bucketName))}) (${cleanupError instanceof Error ? cleanupError.name : typeof cleanupError}). Re-run with --verbose for AWS's own message. ` + manualBucketDeletionClause(bucketName, maskSecrets)));
10672
10671
  }
10673
10672
  else if (preflight.kind === "indeterminate") {
10674
- this.logger.debug(`GetBucketLocation failed for S3 bucket ${bucketName} (${logicalId}) during create: ${preflight.reason}`);
10673
+ this.logger.debug(`GetBucketLocation failed for S3 bucket ${displaySafe(bucketName)} (${displaySafe(logicalId)}) during create: ${preflight.reason}`);
10675
10674
  const maskSecrets = maskerOrIdentity(context?.maskSecrets);
10676
- this.logger.warn(maskSecrets(`Not cleaning up S3 bucket ${logicalId} (${bucketName}) after a wiring failure: this deploy could not confirm whether it created the bucket (region probe failed: ${preflight.errorName}), and in us-east-1 a successful CreateBucket does not prove it. Re-run with --verbose for AWS's own message. If cdkd created it, the bucket is an orphan. ` + manualBucketDeletionClause(bucketName, maskSecrets)));
10675
+ this.logger.warn(maskSecrets(`Not cleaning up S3 bucket ${displaySafe(logicalId)} (${displaySafe(maskSecrets(bucketName))}) after a wiring failure: this deploy could not confirm whether it created the bucket (region probe failed: ${preflight.errorName}), and in us-east-1 a successful CreateBucket does not prove it. Re-run with --verbose for AWS's own message. If cdkd created it, the bucket is an orphan. ` + manualBucketDeletionClause(bucketName, maskSecrets)));
10677
10676
  }
10678
10677
  throw innerError;
10679
10678
  }
10680
10679
  const attributes = await this.buildAttributes(bucketName);
10681
- this.logger.debug(`Successfully created S3 bucket ${logicalId}: ${bucketName}`);
10680
+ this.logger.debug(`Successfully created S3 bucket ${displaySafe(logicalId)}: ${displaySafe(bucketName)}`);
10682
10681
  const effectiveProperties = S3BucketProvider.applyEffectiveOverrides(properties, effectiveOverrides);
10683
10682
  return {
10684
10683
  physicalId: bucketName,
@@ -10693,10 +10692,10 @@ var S3BucketProvider = class S3BucketProvider {
10693
10692
  * Update an S3 bucket
10694
10693
  */
10695
10694
  async update(logicalId, physicalId, resourceType, properties, previousProperties, context) {
10696
- this.logger.debug(`Updating S3 bucket ${logicalId}: ${physicalId}`);
10695
+ this.logger.debug(`Updating S3 bucket ${displaySafe(logicalId)}: ${displaySafe(physicalId)}`);
10697
10696
  const newBucketName = properties["BucketName"];
10698
10697
  if (newBucketName && newBucketName !== physicalId) {
10699
- this.logger.debug(`Bucket name changed (${physicalId} -> ${newBucketName}), replacement required`);
10698
+ this.logger.debug(`Bucket name changed (${displaySafe(physicalId)} -> ${displaySafe(newBucketName)}), replacement required`);
10700
10699
  return {
10701
10700
  physicalId,
10702
10701
  wasReplaced: true
@@ -10711,7 +10710,7 @@ var S3BucketProvider = class S3BucketProvider {
10711
10710
  for (const [key, value] of await this.applySubConfigDiffs(physicalId, properties, previousProperties, context)) effectiveOverrides.set(key, value);
10712
10711
  await this.applyTagDiff(physicalId, previousProperties["Tags"], properties["Tags"]);
10713
10712
  const attributes = await this.buildAttributes(physicalId);
10714
- this.logger.debug(`Successfully updated S3 bucket ${logicalId}`);
10713
+ this.logger.debug(`Successfully updated S3 bucket ${displaySafe(logicalId)}`);
10715
10714
  const effectiveProperties = S3BucketProvider.applyEffectiveOverrides(properties, effectiveOverrides);
10716
10715
  return {
10717
10716
  physicalId,
@@ -10729,7 +10728,7 @@ var S3BucketProvider = class S3BucketProvider {
10729
10728
  * Note: The bucket must be empty before deletion.
10730
10729
  */
10731
10730
  async delete(logicalId, physicalId, resourceType, properties, context) {
10732
- this.logger.debug(`Deleting S3 bucket ${logicalId}: ${physicalId}`);
10731
+ this.logger.debug(`Deleting S3 bucket ${displaySafe(logicalId)}: ${displaySafe(physicalId)}`);
10733
10732
  const allowAutoEmpty = context?.forceDataDelete === true || hasCdkAutoDeleteTag(properties, "aws-cdk:auto-delete-objects");
10734
10733
  if (context?.expectedRegion) await this.assertStateBucketRegion("delete", logicalId, resourceType, physicalId, context.expectedRegion);
10735
10734
  else this.announceUnverifiedBucketIdentity("delete", logicalId, physicalId, noRecordedRegionCause());
@@ -10739,7 +10738,7 @@ var S3BucketProvider = class S3BucketProvider {
10739
10738
  if (error instanceof NoSuchBucket) {
10740
10739
  const clientRegion = await this.s3Client.config.region();
10741
10740
  assertRegionMatch(clientRegion, context?.expectedRegion, resourceType, logicalId, physicalId);
10742
- this.logger.debug(`Bucket ${physicalId} does not exist, skipping deletion`);
10741
+ this.logger.debug(`Bucket ${displaySafe(physicalId)} does not exist, skipping deletion`);
10743
10742
  return;
10744
10743
  }
10745
10744
  throw this.wrapOperationError("delete", logicalId, resourceType, physicalId, error);
@@ -10785,8 +10784,8 @@ var S3BucketProvider = class S3BucketProvider {
10785
10784
  */
10786
10785
  wrapOperationError(operation, logicalId, resourceType, physicalId, error) {
10787
10786
  const failure = describeAwsFailure(error);
10788
- if (failure.redacted) this.logger.debug(`Failed to ${operation} S3 bucket ${logicalId} (${physicalId}): ${failure.detail}`);
10789
- const wrapped = new ProvisioningError(`Failed to ${operation} S3 bucket ${logicalId}: ${failure.summary}`, resourceType, logicalId, physicalId, error instanceof Error ? error : void 0);
10787
+ if (failure.redacted) this.logger.debug(`Failed to ${operation} S3 bucket ${displaySafe(logicalId)} (${displaySafe(physicalId)}): ${failure.detail}`);
10788
+ const wrapped = new ProvisioningError(`Failed to ${operation} S3 bucket ${displaySafe(logicalId)}: ${failure.summary}`, resourceType, logicalId, physicalId, error instanceof Error ? error : void 0);
10790
10789
  return failure.redacted ? markRedactedCause(wrapped) : wrapped;
10791
10790
  }
10792
10791
  /**
@@ -11477,20 +11476,20 @@ var S3BucketProvider = class S3BucketProvider {
11477
11476
  const maxAttempts = 3;
11478
11477
  for (let attempt = 1; attempt <= maxAttempts; attempt++) try {
11479
11478
  await this.s3Client.send(new DeleteBucketCommand({ Bucket: bucketName }));
11480
- this.logger.debug(`Successfully deleted S3 bucket ${logicalId}`);
11479
+ this.logger.debug(`Successfully deleted S3 bucket ${displaySafe(logicalId)}`);
11481
11480
  return;
11482
11481
  } catch (error) {
11483
11482
  const msg = describeAwsFailure(error).detail;
11484
11483
  if (msg.includes("not empty") || msg.includes("BucketNotEmpty")) {
11485
- if (!allowAutoEmpty) throw new Error(`bucket ${bucketName} is not empty. Matching CloudFormation, cdkd does not delete a non-empty bucket unless it opted into automatic emptying (CDK's autoDeleteObjects: true, i.e. the '${S3_AUTO_DELETE_OBJECTS_TAG}' tag). Either empty the bucket first (delete all objects — and for versioned buckets all object versions and delete markers), or redeploy with autoDeleteObjects: true and destroy again.`);
11486
- this.logger.info(`Bucket ${bucketName} not empty (attempt ${attempt}/${maxAttempts}), emptying (auto-delete opt-in present)...`);
11484
+ if (!allowAutoEmpty) throw new Error(`bucket ${displaySafe(bucketName)} is not empty. Matching CloudFormation, cdkd does not delete a non-empty bucket unless it opted into automatic emptying (CDK's autoDeleteObjects: true, i.e. the '${S3_AUTO_DELETE_OBJECTS_TAG}' tag). Either empty the bucket first (delete all objects — and for versioned buckets all object versions and delete markers), or redeploy with autoDeleteObjects: true and destroy again.`);
11485
+ this.logger.info(`Bucket ${displaySafe(bucketName)} not empty (attempt ${attempt}/${maxAttempts}), emptying (auto-delete opt-in present)...`);
11487
11486
  await this.emptyBucket(bucketName);
11488
11487
  continue;
11489
11488
  }
11490
11489
  throw error;
11491
11490
  }
11492
11491
  await this.s3Client.send(new DeleteBucketCommand({ Bucket: bucketName }));
11493
- this.logger.debug(`Successfully deleted S3 bucket ${logicalId}`);
11492
+ this.logger.debug(`Successfully deleted S3 bucket ${displaySafe(logicalId)}`);
11494
11493
  }
11495
11494
  /**
11496
11495
  * Empty a bucket by deleting all object versions and delete markers.
@@ -11529,7 +11528,7 @@ var S3BucketProvider = class S3BucketProvider {
11529
11528
  Quiet: true
11530
11529
  }
11531
11530
  }));
11532
- this.logger.debug(`Emptied ${objects.length} objects from ${bucketName}`);
11531
+ this.logger.debug(`Emptied ${objects.length} objects from ${displaySafe(bucketName)}`);
11533
11532
  }
11534
11533
  if (!listResp.IsTruncated) break;
11535
11534
  keyMarker = decodeListingKey(listResp.NextKeyMarker);
@@ -26025,14 +26024,16 @@ var LogsLogGroupProvider = class {
26025
26024
  } catch (innerError) {
26026
26025
  if (createdNewLogGroup) try {
26027
26026
  await this.logsClient.send(new DeleteLogGroupCommand({ logGroupName }));
26028
- this.logger.debug(`Cleaned up partially-created log group ${logicalId} (${logGroupName}) after wiring failure`);
26027
+ this.logger.debug(`Cleaned up partially-created log group ${displaySafe(logicalId)} (${displaySafe(logGroupName)}) after wiring failure`);
26029
26028
  } catch (cleanupError) {
26029
+ const mask = maskerOrIdentity(context?.maskSecrets);
26030
26030
  const deleteCommand = renderDisableCommand({
26031
26031
  before: "aws logs delete-log-group --log-group-name",
26032
- identifier: logGroupName
26032
+ identifier: logGroupName,
26033
+ maskSecrets: mask
26033
26034
  });
26034
26035
  const manualStep = deleteCommand ? `Manual deletion may be required before the next deploy: ${deleteCommand}` : "Manual deletion may be required before the next deploy, via the console: the log group name cannot be reproduced safely on a command line.";
26035
- this.logger.warn(`Failed to clean up partially-created log group ${logicalId} (${logGroupName}): ${describeAwsFailure(cleanupError).detail}. ${manualStep}`);
26036
+ this.logger.warn(mask(`Failed to clean up partially-created log group ${displaySafe(logicalId)} (${displaySafe(mask(logGroupName))}): ${describeAwsFailure(cleanupError).detail}. ${manualStep}`));
26036
26037
  }
26037
26038
  throw innerError;
26038
26039
  }
@@ -27716,7 +27717,7 @@ var SSMParameterProvider = class {
27716
27717
  try {
27717
27718
  return await this.buildParameterArnUnguarded(name, mask);
27718
27719
  } catch (error) {
27719
- this.logger.warn(mask(`Could not build the Arn attribute for SSM parameter ${name}: ${describeAwsFailure(error).detail}. The parameter itself is unaffected; the Arn is NOT recorded, so an Fn::GetAtt on it will fail until a later deploy records it.`));
27720
+ this.logger.warn(mask(`Could not build the Arn attribute for SSM parameter ${displaySafe(mask(name))}: ${describeAwsFailure(error).detail}. The parameter itself is unaffected; the Arn is NOT recorded, so an Fn::GetAtt on it will fail until a later deploy records it.`));
27720
27721
  return;
27721
27722
  }
27722
27723
  }
@@ -27740,7 +27741,7 @@ var SSMParameterProvider = class {
27740
27741
  const region = await this.ssmClient.config.region();
27741
27742
  const accountInfo = await getAccountInfo(region);
27742
27743
  if (accountInfo.fabricated) {
27743
- this.logger.warn(mask(`Cannot determine the AWS account (STS is unreachable, and the resolved account id is a placeholder), so the Arn attribute for SSM parameter ${name} would be fabricated and is NOT recorded. An Fn::GetAtt on it will fail until a later deploy resolves the account.`));
27744
+ this.logger.warn(mask(`Cannot determine the AWS account (STS is unreachable, and the resolved account id is a placeholder), so the Arn attribute for SSM parameter ${displaySafe(mask(name))} would be fabricated and is NOT recorded. An Fn::GetAtt on it will fail until a later deploy resolves the account.`));
27744
27745
  return;
27745
27746
  }
27746
27747
  const { partition } = derivePartitionAndUrlSuffix(accountInfo.region);
@@ -27754,14 +27755,14 @@ var SSMParameterProvider = class {
27754
27755
  const mask = maskerOrIdentity(context?.maskSecrets);
27755
27756
  const warn = (message) => this.logger.warn(mask(message));
27756
27757
  const debug = (message) => this.logger.debug(mask(message));
27757
- debug(`Creating SSM parameter ${logicalId}`);
27758
+ debug(`Creating SSM parameter ${displaySafe(logicalId)}`);
27758
27759
  const name = properties["Name"] || `/${generateResourceName(logicalId, {
27759
27760
  maxLength: 1023,
27760
27761
  allowedPattern: /[^a-zA-Z0-9-/_]/g
27761
27762
  })}`;
27762
27763
  const type = properties["Type"] || "String";
27763
27764
  const value = properties["Value"];
27764
- if (!value) throw new ProvisioningError(`Value is required for SSM parameter ${logicalId}`, resourceType, logicalId);
27765
+ if (!value) throw new ProvisioningError(`Value is required for SSM parameter ${displaySafe(logicalId)}`, resourceType, logicalId);
27765
27766
  try {
27766
27767
  const putParams = {
27767
27768
  Name: name,
@@ -27785,7 +27786,7 @@ var SSMParameterProvider = class {
27785
27786
  } catch (innerError) {
27786
27787
  try {
27787
27788
  await this.ssmClient.send(new DeleteParameterCommand({ Name: name }));
27788
- debug(`Cleaned up partially-created SSM parameter ${logicalId} (${name}) after wiring failure`);
27789
+ debug(`Cleaned up partially-created SSM parameter ${displaySafe(logicalId)} (${displaySafe(mask(name))}) after wiring failure`);
27789
27790
  } catch (cleanupError) {
27790
27791
  const deleteCommand = renderDisableCommand({
27791
27792
  before: "aws ssm delete-parameter --name",
@@ -27793,11 +27794,11 @@ var SSMParameterProvider = class {
27793
27794
  maskSecrets: mask
27794
27795
  });
27795
27796
  const manualStep = deleteCommand ? `Manual deletion may be required before the next deploy: ${deleteCommand}` : "Manual deletion may be required before the next deploy, via the console: the parameter name cannot be reproduced safely on a command line, and a command naming the sanitized form would delete a DIFFERENT parameter.";
27796
- warn(`Failed to clean up partially-created SSM parameter ${logicalId} (${name}): ${describeAwsFailure(cleanupError).detail}. ${manualStep}`);
27797
+ warn(`Failed to clean up partially-created SSM parameter ${displaySafe(logicalId)} (${displaySafe(mask(name))}): ${describeAwsFailure(cleanupError).detail}. ${manualStep}`);
27797
27798
  }
27798
27799
  throw innerError;
27799
27800
  }
27800
- debug(`Successfully created SSM parameter ${logicalId}: ${name}`);
27801
+ debug(`Successfully created SSM parameter ${displaySafe(logicalId)}: ${displaySafe(mask(name))}`);
27801
27802
  const arn = await this.buildParameterArn(name, mask);
27802
27803
  return {
27803
27804
  physicalId: name,
@@ -27809,7 +27810,7 @@ var SSMParameterProvider = class {
27809
27810
  };
27810
27811
  } catch (error) {
27811
27812
  const cause = error instanceof Error ? error : void 0;
27812
- throw new ProvisioningError(`Failed to create SSM parameter ${logicalId}: ${mask(error instanceof Error ? error.message : String(error))}`, resourceType, logicalId, void 0, cause);
27813
+ throw new ProvisioningError(`Failed to create SSM parameter ${displaySafe(logicalId)}: ${mask(error instanceof Error ? error.message : String(error))}`, resourceType, logicalId, void 0, cause);
27813
27814
  }
27814
27815
  }
27815
27816
  /**
@@ -27818,10 +27819,10 @@ var SSMParameterProvider = class {
27818
27819
  async update(logicalId, physicalId, resourceType, properties, previousProperties, context) {
27819
27820
  const mask = maskerOrIdentity(context?.maskSecrets);
27820
27821
  const debug = (message) => this.logger.debug(mask(message));
27821
- debug(`Updating SSM parameter ${logicalId}: ${physicalId}`);
27822
+ debug(`Updating SSM parameter ${displaySafe(logicalId)}: ${displaySafe(mask(physicalId))}`);
27822
27823
  const type = properties["Type"] || "String";
27823
27824
  const value = properties["Value"];
27824
- if (!value) throw new ProvisioningError(`Value is required for SSM parameter ${logicalId}`, resourceType, logicalId, physicalId);
27825
+ if (!value) throw new ProvisioningError(`Value is required for SSM parameter ${displaySafe(logicalId)}`, resourceType, logicalId, physicalId);
27825
27826
  try {
27826
27827
  const putParams = {
27827
27828
  Name: physicalId,
@@ -27850,9 +27851,9 @@ var SSMParameterProvider = class {
27850
27851
  ResourceId: physicalId,
27851
27852
  Tags: newTags
27852
27853
  }));
27853
- debug(`Updated tags for SSM parameter ${physicalId}`);
27854
+ debug(`Updated tags for SSM parameter ${displaySafe(mask(physicalId))}`);
27854
27855
  }
27855
- debug(`Successfully updated SSM parameter ${logicalId}`);
27856
+ debug(`Successfully updated SSM parameter ${displaySafe(logicalId)}`);
27856
27857
  const arn = await this.buildParameterArn(physicalId, mask);
27857
27858
  return {
27858
27859
  physicalId,
@@ -27865,26 +27866,26 @@ var SSMParameterProvider = class {
27865
27866
  };
27866
27867
  } catch (error) {
27867
27868
  const cause = error instanceof Error ? error : void 0;
27868
- throw new ProvisioningError(`Failed to update SSM parameter ${logicalId}: ${mask(error instanceof Error ? error.message : String(error))}`, resourceType, logicalId, physicalId, cause);
27869
+ throw new ProvisioningError(`Failed to update SSM parameter ${displaySafe(logicalId)}: ${mask(error instanceof Error ? error.message : String(error))}`, resourceType, logicalId, physicalId, cause);
27869
27870
  }
27870
27871
  }
27871
27872
  /**
27872
27873
  * Delete an SSM parameter
27873
27874
  */
27874
27875
  async delete(logicalId, physicalId, resourceType, _properties, context) {
27875
- this.logger.debug(`Deleting SSM parameter ${logicalId}: ${physicalId}`);
27876
+ this.logger.debug(`Deleting SSM parameter ${displaySafe(logicalId)}: ${displaySafe(physicalId)}`);
27876
27877
  try {
27877
27878
  await this.ssmClient.send(new DeleteParameterCommand({ Name: physicalId }));
27878
- this.logger.debug(`Successfully deleted SSM parameter ${logicalId}`);
27879
+ this.logger.debug(`Successfully deleted SSM parameter ${displaySafe(logicalId)}`);
27879
27880
  } catch (error) {
27880
27881
  if (error instanceof ParameterNotFound) {
27881
27882
  const clientRegion = await this.ssmClient.config.region();
27882
27883
  assertRegionMatch(clientRegion, context?.expectedRegion, resourceType, logicalId, physicalId);
27883
- this.logger.debug(`Parameter ${physicalId} does not exist, skipping deletion`);
27884
+ this.logger.debug(`Parameter ${displaySafe(physicalId)} does not exist, skipping deletion`);
27884
27885
  return;
27885
27886
  }
27886
27887
  const cause = error instanceof Error ? error : void 0;
27887
- throw new ProvisioningError(`Failed to delete SSM parameter ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, physicalId, cause);
27888
+ throw new ProvisioningError(`Failed to delete SSM parameter ${displaySafe(logicalId)}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, physicalId, cause);
27888
27889
  }
27889
27890
  }
27890
27891
  /**
@@ -28027,7 +28028,7 @@ var SSMParameterProvider = class {
28027
28028
  after: "--query Parameter.Name --output text"
28028
28029
  });
28029
28030
  const howToRead = readCommand ? ` Read the name AWS holds with: ${readCommand}` : " Read the name AWS holds via the console: the value cdkd was given cannot be reproduced safely on a command line, so any command shown here would read a different parameter.";
28030
- throw new ProvisioningError(`Cannot adopt SSM parameter ${input.logicalId} from ${shape} ('${explicit}'): cdkd records a parameter's NAME as its physical id, because SSM's write APIs accept only the name (PutParameter and DeleteParameter both reject an ARN, and a name cannot contain ':'), so the next cdkd deploy and cdkd destroy would fail with a ValidationException. ${remedy}.${whyNotDerived}${howToRead}`, input.resourceType, input.logicalId);
28031
+ throw new ProvisioningError(`Cannot adopt SSM parameter ${displaySafe(input.logicalId)} from ${shape} ('${displaySafe(explicit)}'): cdkd records a parameter's NAME as its physical id, because SSM's write APIs accept only the name (PutParameter and DeleteParameter both reject an ARN, and a name cannot contain ':'), so the next cdkd deploy and cdkd destroy would fail with a ValidationException. ${remedy}.${whyNotDerived}${howToRead}`, input.resourceType, input.logicalId);
28031
28032
  }
28032
28033
  /**
28033
28034
  * Adopt an existing SSM parameter into cdkd state.
@@ -98139,4 +98140,4 @@ function buildProgram() {
98139
98140
 
98140
98141
  //#endregion
98141
98142
  export { buildProgram };
98142
- //# sourceMappingURL=program-CAdTYHWf.js.map
98143
+ //# sourceMappingURL=program-CGPchKa2.js.map