@go-to-k/cdkd 0.291.25 → 0.291.26

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, $i as synthesisStatusMessage, $n as refuseMalformedOrphanRecordsForDestroy, $r as forceQuitRecoveryClause, $t as configIntegerRefusal, A as createPreDeleteFinalSnapshot, Aa as credentialFingerprint, Ai as validateContainerRepoName, An as hasReadableOutputs, Ao as retryClassificationText, Ar as TEMPLATE_SOURCED_RULES, At as deleteSkipReason, B as isStatefulRecreateTargetSync, Ba as absoluteAssemblyPathEscape, Bi as getDockerCmd, Bn as malformedOrphansRefusalMessage, Br as maskSecretsInText, Bt as isImpossibleEmptyStoredAttribute, C as namesAnyDeclaredParameter, Ca as expectedOwnerParam, Ci as assertAssetBucketRegion, Cn as STATE_REGION_DIVERGED, Co as shellQuote, Cr as describeTypeWithThrottleRetry, Ct as compositeIdSkipResult, D as PRE_DELETE_SNAPSHOT_TYPES, Da as ambientClientDefaults, Di as parseBootstrapMarker, Dn as deployRefusesOrphanRowsReason, Do as isTransientServerError, Dr as STATE_SOURCED_BASELINE_RULES, Dt as maskerOrIdentity, E as ATOMIC_FINAL_SNAPSHOT_TYPES, Ea as derivePartitionAndUrlSuffix, Ei as isCrossRegionRedirect, En as UNREADABLE_RESOURCES_MAP_ROW, Eo as isThrottlingError, Er as TemplateParser, Et as maskDeep, F as extractDeploymentEventError, Fa as defineOwnKey, Fi as describeDockerExecFailure, Fn as malformedExportSourceWarning, Fr as identityKeyFor, Ft as carriesDynamicReference, G as toCfnInteger, Ga as resolveBucketRegion, Gi as runDockerForeground, Gn as malformedResourceEntriesWarning, Gr as redactSecretsForState, Gt as isSettledInstanceState, H as WARM_THROUGHPUT_MEMBERS, Ha as renderAssemblyPathEscape, Hi as isMalformedEnvKey, Hn as malformedOutputsRefusalMessage, Hr as recordMaskOnlyValue, Ht as isUnboundTemplateParameter, I as makeSiblingClaimReader, Ia as hasOwnKey, Ii as describeDockerFailure, In as malformedLocalOutputsWarning, Ir as isSingleDynamicReferenceToken, It as carriesFetchableDynamicReference, J as bold, Ja as resetAwsClients, Ji as escapeRegExp, Jn as malformedStateRefusalMessage, Jr as S3StateBackend, Jt as resolveExplicitPhysicalId, K as toFiniteNumber, Ka as AwsClients, Ki as runDockerStreaming, Kn as malformedResourcePropertiesWarning, Kr as scrubResourceRecord, Kt as WAFv2WebACLProvider, L as planOrphanAdoption, La as hasPlainPrototype, Li as dockerSpawnEnvWithSensitive, Ln as malformedOrphanRecordsRefusalMessage, Lr as isUncertifiedBaselineMaskPosition, Lt as cfnRefValueFromPhysicalId, M as refusesFinalSnapshot, Ma as failedStageNote, Mi as buildDockerImage, Mn as isReadableOrphanRecord, Mo as safeStringify, Mr as createSecretMasker, Mt as disableInstanceApiTermination, N as unsupportedFinalSnapshotError, Na as globMatches, Ni as resolveDockerContextDirectory, Nn as isReadableResourceEntry, Nr as dynamicReferenceTokens, Nt as isTerminationProtectionPropagationError, O as buildFinalSnapshotIdentifier, Oa as ambientCredentialConfig, Oi as readBootstrapMarkerBody, On as displayLogicalId, Oo as markNonRetryable, Or as STATE_SOURCED_CROSS_GENERATION_RULES, Ot as UNSPECIFIED_SKIP_REASON, P as makeCanonicalizePropertiesFn, Pa as processStackMessages, Pi as describeDockerCapturedOutput, Pn as malformedExportNamesWarning, Pr as errorCauseChain, Pt as IntrinsicFunctionResolver, Q as red, Qa as CdkdError, Qi as Synthesizer, Qn as refuseMalformedOrphanRecords, Qr as buildLockContentionMessage, Qt as configBooleanRefusal, R as MULTI_REGION_RECREATE_BLOCKED_TYPES, Ra as nullPrototypeRecord, Ri as finchSecretArgvRefusal, Rn as malformedOrphanRecordsWarning, Rr as markSameGenerationBag, Rt as coerceParameterTypedValue, S as computeParameterTaint, Sa as decodeListingKey, Si as BOOTSTRAP_MARKER_PREFIX, Sn as INTRINSIC_KEYS, So as pasteableCommand, Sr as findSilentDropProperties, St as compositeIdSeparatorRefusal, T as resourcesNamingDeclaredParameter, Ta as canonicalizeRegion, Ti as getBootstrapMarkerKey, Tn as UNREADABLE_ORPHANS_CONTAINER_ROW, To as isRetryableTransientError, Tr as DagBuilder, Tt as createMaskedRetryLogger, U as coerceWarmThroughput$1, Ua as resolveAssemblyPath, Ui as partitionSensitiveEnv, Un as malformedOutputsWarning, Ur as recordMaskOnlyValuesIn, Ut as parameterTypeMayLoseSecretIdentity, V as renderStatefulReason, Va as displayAssemblyPath, Vi as isDockerClientEnvKey, Vn as malformedOrphansWarning, Vr as pathCrossesDottedKey, Vt as isNamelessDynamicReferenceError, W as isWarmThroughputDecrease, Wi as redactDockerArgvValues, Wn as malformedRenderedContainersWarning, Wr as recoverMaskedOutput, Wt as refStateLookupFromResource, X as gray, Xa as setAwsClients, Xi as AssetManifestLoader, Xn as refuseDivergentRecordRegionForDestroy, Xr as UNREPRODUCIBLE_LOCK_CLAUSE, Xt as coerceCfnBoolean, Y as cyan, Ya as runWithStackAwsClients, Yi as stripControlChars, Yn as previewableOrphanRecords, Yr as rebuildClientForBucketRegion, Yt as assertRegionMatch, Z as green, Zi as getDockerImageBySourceHash, Zn as refuseMalformedNestedChildOutputs, Zr as buildForceUnlockCommand, Zt as coerceCfnInteger, _ as bagHoldsSecretExpression, _a as CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION, _i as buildAssetRedirectMap, _n as AWS_CREDENTIAL_ENV_KEYS, _o as SynthesisError, _r as safeRegion, _t as startInterruptWatch, a as DeploymentEventsStore, aa as resolveSkipPrefix, ai as hasReadableExportSet, an as requireConfigString, ao as LocalInvokeBuildError$1, ar as refuseMalformedResourceAttributesForOrphan, at as secretBearingStateKeyWarning, b as mergeNoChangeOutputs, ba as producerCoordinateKey, bi as rewriteTemplateAssetReferences, bn as envCredentialsAreAssumedRole, bo as normalizeAwsError, br as unreadableOrphanRecords, bt as ccProtectionRegistryTypes, c as replayFailedOperations, ca as resolveUseCdkBootstrapAssets, ci as importableOutputKeys, cn as classifyReplaySecretRegion, co as MalformedProducerRecordRefusalError, cr as refuseMalformedResourcePropertiesForOrphan, ct as IAMRoleProvider, d as updatePartialMessage, da as ssmResolvedValueType, di as orphansAfterRollback, dn as s3BucketArn, do as ProvisioningError, dr as repairMalformedOrphanRecordsForReadOnly, dt as ProviderRegistry, ea as getDefaultStateBucketName, ei as formatLockExpiry, en as configStringRefusal, eo as CrossAccountSecretRefusalError, er as refuseMalformedOrphans, et as collectDeclaredOutputNames, f as updatePartialReason, fa as CFN_TEMPLATE_BODY_LIMIT, fi as orphansCarriedFrom, fn as s3BucketDomainName, fo as ResourceTimeoutError, fr as repairMalformedOrphansForReadOnly, ft as wouldReturnToSdkProvider, g as computeImplicitDeleteEdges, ga as uploadCfnTemplate, gi as WorkGraph, gn as applyRoleArnIfSet, gr as repairMalformedResourcesForReadOnly, gt as isInterruptedWaitError, h as IMPLICIT_DELETE_DEPENDENCIES, ha as findLargeInlineResources, hi as stringifyValue, hn as s3BucketWebsiteUrl, ho as StackTerminationProtectionError, hr as repairMalformedResourcePropertiesForReadOnly, ht as interruptWatchListenerCount, i as DeploymentEventsReader, ia as resolveCaptureObservedState, ii as exportNamesCarriedFrom, in as requireConfigObject, io as IntrinsicResolutionRefusalError, ir as refuseMalformedOutputsForDestroy, it as secretBearing, j as isFinalSnapshotError, ja as AssemblyReader, ji as buildDenyExternalAccessPolicy, jn as hasReadableResources, jo as describeAwsFailure, jr as carriesSecretMask, jt as isWaitAbandonedError, k as ccRoutedFinalSnapshotError, ka as clientDefaultsFor, ki as validateAssetBucketName, kn as hasReadableOrphans, ko as markRedactedCause, kr as STATE_SOURCED_READBACK_RULES, kt as deleteIndeterminateGuards, l as replayRollback, la as stateBucketExistenceConfirmed, li as importableOutputs, ln as producerRegionsFromState, lo as NestedStackChildDirectDestroyError, lr as refuseMalformedResourcesForDestroy, lt as collectInlinePolicyNamesManagedBySiblings, m as maskingRetryLogger, ma as MIGRATE_TMP_PREFIX, mi as AssetPublisher, mn as s3BucketRegionalDomainName, mo as StackHasActiveImportsError, mr as repairMalformedResourceEntriesForReadOnly, mt as endCommandInterruptScope, n as DEFAULT_RESOURCE_WARN_AFTER_MS, na as resolveApp, ni as DEFAULT_STATE_PREFIX, nn as replayWarn, no as DeployCancelledError, nr as refuseMalformedOrphansForOrphan, nt as exportAliasCollisionScrubWarning, o as planFailedOps, oa as resolveStateBucketWithDefault, oi as hasReasonlessBaselineRefusal, on as definedAttributes, oo as LocalStartServiceError, or as refuseMalformedResourceEntries, ot as secretSafeKeyDisplay, p as withResourceDeadline, pa as CFN_TEMPLATE_URL_LIMIT, pi as shouldRetainResource, pn as s3BucketDualStackDomainName, po as ResourceUpdateNotSupportedError, pr as repairMalformedOutputsForReadOnly, pt as beginCommandInterruptScope, q as formatResourceLine, qa as getAwsClients, qi as warnFinchArgvExposure, qn as malformedResourcesWarning, qr as LockManager, qt as normalizeAwsTagsToCfn, r as DeployEngine, ra as resolveAutoAssetStorage, ri as describeRegionValueKind, rn as requireConfigArray, ro as DynamicReferenceRegionAmbiguousError, rr as refuseMalformedOutputs, rt as isExportAliasCollision, s as planRollback, sa as resolveStateBucketWithDefaultAndSource, si as hasUnverifiableParameterRefusal, sn as stringifyIfAssigned, sr as refuseMalformedResourceEntriesForOrphan, st as getCurrentResourceSecrets, t as DEFAULT_RESOURCE_TIMEOUT_MS, ta as getLegacyStateBucketName, ti as CUSTOM_RESOURCE_RESPONSE_PREFIX, tn as readConfigString, tr as refuseMalformedOrphansForDestroy, tt as collectPublishedOutputNames, u as resolveReplacementOldType, ua as warnDeprecatedNoPrefixCliFlag, ui as isReadableBag, un as withSharedDrainBudget, uo as PartialFailureError, ur as refuseMalformedState, ut as clearOnUpdateRemoval, v as isSecretBearingReferenceString, va as injectiveKey, vi as createAssetRedirectResolver, vn as applyCallerIdentityCredentials, vr as safeStackName, vt as CloudControlProvider, w as reachableDivergentParameters, wa as PARTITION_TABLE, wi as ensureAssetStorage, wn as STATE_RESOURCES_MALFORMED, wo as isMarkedNonRetryable, wr as withRetry, wt as packCompositeId, x as bindingSkippedOutputs, xa as producerRecordKey, xi as AssetModeResolver, xn as DiffCalculator, xo as withErrorHandling, xr as findActionableSilentDrops, xt as compositeIdFormatMessage, y as keptWholeReasonText, ya as injectiveKeyPrefix, yi as loadPublishableAssetManifest, yn as callerEnvCredentials, yr as unpreviewableOrphanRecords, yt as slowCcOperationTimeoutMs, z as isStatefulRecreateTargetForReplace, za as ownValue, zi as formatDockerLoginError, zn as malformedOrphanRowsKeptWarning, zr as maskSecretsInError, zt as getAccountInfo } from "./deploy-engine-JdJuqXID.js";
1
+ import { $ as yellow, $a as CdkdError, $i as synthesisStatusMessage, $n as refuseMalformedOrphanRecordsForDestroy, $r as forceQuitRecoveryClause, $t as configIntegerRefusal, A as createPreDeleteFinalSnapshot, Aa as credentialFingerprint, Ai as validateContainerRepoName, An as hasReadableOutputs, Ao as markRedactedCause, Ar as TEMPLATE_SOURCED_RULES, At as deleteSkipReason, B as isStatefulRecreateTargetSync, Ba as absoluteAssemblyPathEscape, Bi as getDockerCmd, Bn as malformedOrphansRefusalMessage, Br as maskSecretsInText, Bt as isImpossibleEmptyStoredAttribute, C as namesAnyDeclaredParameter, Ca as expectedOwnerParam, Ci as assertAssetBucketRegion, Cn as STATE_REGION_DIVERGED, Co as pasteableCommand, Cr as describeTypeWithThrottleRetry, Ct as compositeIdSkipResult, D as PRE_DELETE_SNAPSHOT_TYPES, Da as ambientClientDefaults, Di as parseBootstrapMarker, Dn as deployRefusesOrphanRowsReason, Do as isThrottlingError, Dr as STATE_SOURCED_BASELINE_RULES, Dt as maskerOrIdentity, E as ATOMIC_FINAL_SNAPSHOT_TYPES, Ea as derivePartitionAndUrlSuffix, Ei as isCrossRegionRedirect, En as UNREADABLE_RESOURCES_MAP_ROW, Eo as isRetryableTransientError, Er as TemplateParser, Et as maskDeep, F as extractDeploymentEventError, Fa as defineOwnKey, Fi as describeDockerExecFailure, Fn as malformedExportSourceWarning, Fr as identityKeyFor, Ft as carriesDynamicReference, G as toCfnInteger, Gi as runDockerForeground, Gn as malformedResourceEntriesWarning, Gr as redactSecretsForState, Gt as isSettledInstanceState, H as WARM_THROUGHPUT_MEMBERS, Ha as displayAssemblyPath, Hi as isMalformedEnvKey, Hn as malformedOutputsRefusalMessage, Hr as recordMaskOnlyValue, Ht as isUnboundTemplateParameter, I as makeSiblingClaimReader, Ia as hasOwnKey, Ii as describeDockerFailure, In as malformedLocalOutputsWarning, Ir as isSingleDynamicReferenceToken, It as carriesFetchableDynamicReference, J as bold, Ja as getAwsClients, Ji as escapeRegExp, Jn as malformedStateRefusalMessage, Jr as S3StateBackend, Jt as resolveExplicitPhysicalId, K as toFiniteNumber, Ka as resolveBucketRegion, Ki as runDockerStreaming, Kn as malformedResourcePropertiesWarning, Kr as scrubResourceRecord, Kt as WAFv2WebACLProvider, L as planOrphanAdoption, La as hasPlainPrototype, Li as dockerSpawnEnvWithSensitive, Ln as malformedOrphanRecordsRefusalMessage, Lr as isUncertifiedBaselineMaskPosition, Lt as cfnRefValueFromPhysicalId, M as refusesFinalSnapshot, Ma as failedStageNote, Mi as buildDockerImage, Mn as isReadableOrphanRecord, Mo as describeAwsFailure, Mr as createSecretMasker, Mt as disableInstanceApiTermination, N as unsupportedFinalSnapshotError, Na as globMatches, Ni as resolveDockerContextDirectory, Nn as isReadableResourceEntry, No as safeStringify, Nr as dynamicReferenceTokens, Nt as isTerminationProtectionPropagationError, O as buildFinalSnapshotIdentifier, Oa as ambientCredentialConfig, Oi as readBootstrapMarkerBody, On as displayLogicalId, Oo as isTransientServerError, Or as STATE_SOURCED_CROSS_GENERATION_RULES, Ot as UNSPECIFIED_SKIP_REASON, P as makeCanonicalizePropertiesFn, Pa as processStackMessages, Pi as describeDockerCapturedOutput, Pn as malformedExportNamesWarning, Pr as errorCauseChain, Pt as IntrinsicFunctionResolver, Q as red, Qi as Synthesizer, Qn as refuseMalformedOrphanRecords, Qr as buildLockContentionMessage, Qt as configBooleanRefusal, R as MULTI_REGION_RECREATE_BLOCKED_TYPES, Ra as nullPrototypeRecord, Ri as finchSecretArgvRefusal, Rn as malformedOrphanRecordsWarning, Rr as markSameGenerationBag, Rt as coerceParameterTypedValue, S as computeParameterTaint, Sa as decodeListingKey, Si as BOOTSTRAP_MARKER_PREFIX, Sn as INTRINSIC_KEYS, So as withErrorHandling, Sr as findSilentDropProperties, St as compositeIdSeparatorRefusal, T as resourcesNamingDeclaredParameter, Ta as canonicalizeRegion, Ti as getBootstrapMarkerKey, Tn as UNREADABLE_ORPHANS_CONTAINER_ROW, To as isMarkedNonRetryable, Tr as DagBuilder, Tt as createMaskedRetryLogger, U as coerceWarmThroughput$1, Ua as renderAssemblyPathEscape, Ui as partitionSensitiveEnv, Un as malformedOutputsWarning, Ur as recordMaskOnlyValuesIn, Ut as parameterTypeMayLoseSecretIdentity, V as renderStatefulReason, Va as describeFileReadFailure, Vi as isDockerClientEnvKey, Vn as malformedOrphansWarning, Vr as pathCrossesDottedKey, Vt as isNamelessDynamicReferenceError, W as isWarmThroughputDecrease, Wa as resolveAssemblyPath, Wi as redactDockerArgvValues, Wn as malformedRenderedContainersWarning, Wr as recoverMaskedOutput, Wt as refStateLookupFromResource, X as gray, Xa as runWithStackAwsClients, Xi as AssetManifestLoader, Xn as refuseDivergentRecordRegionForDestroy, Xr as UNREPRODUCIBLE_LOCK_CLAUSE, Xt as coerceCfnBoolean, Y as cyan, Ya as resetAwsClients, Yi as stripControlChars, Yn as previewableOrphanRecords, Yr as rebuildClientForBucketRegion, Yt as assertRegionMatch, Z as green, Za as setAwsClients, Zi as getDockerImageBySourceHash, Zn as refuseMalformedNestedChildOutputs, Zr as buildForceUnlockCommand, Zt as coerceCfnInteger, _ as bagHoldsSecretExpression, _a as CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION, _i as buildAssetRedirectMap, _n as AWS_CREDENTIAL_ENV_KEYS, _r as safeRegion, _t as startInterruptWatch, a as DeploymentEventsStore, aa as resolveSkipPrefix, ai as hasReadableExportSet, an as requireConfigString, ao as IntrinsicResolutionRefusalError, ar as refuseMalformedResourceAttributesForOrphan, at as secretBearingStateKeyWarning, b as mergeNoChangeOutputs, ba as producerCoordinateKey, bi as rewriteTemplateAssetReferences, bn as envCredentialsAreAssumedRole, br as unreadableOrphanRecords, bt as ccProtectionRegistryTypes, c as replayFailedOperations, ca as resolveUseCdkBootstrapAssets, ci as importableOutputKeys, cn as classifyReplaySecretRegion, cr as refuseMalformedResourcePropertiesForOrphan, ct as IAMRoleProvider, d as updatePartialMessage, da as ssmResolvedValueType, di as orphansAfterRollback, dn as s3BucketArn, do as PartialFailureError, dr as repairMalformedOrphanRecordsForReadOnly, dt as ProviderRegistry, ea as getDefaultStateBucketName, ei as formatLockExpiry, en as configStringRefusal, er as refuseMalformedOrphans, et as collectDeclaredOutputNames, f as updatePartialReason, fa as CFN_TEMPLATE_BODY_LIMIT, fi as orphansCarriedFrom, fn as s3BucketDomainName, fo as ProvisioningError, fr as repairMalformedOrphansForReadOnly, ft as wouldReturnToSdkProvider, g as computeImplicitDeleteEdges, ga as uploadCfnTemplate, gi as WorkGraph, gn as applyRoleArnIfSet, go as StackTerminationProtectionError, gr as repairMalformedResourcesForReadOnly, gt as isInterruptedWaitError, h as IMPLICIT_DELETE_DEPENDENCIES, ha as findLargeInlineResources, hi as stringifyValue, hn as s3BucketWebsiteUrl, ho as StackHasActiveImportsError, hr as repairMalformedResourcePropertiesForReadOnly, ht as interruptWatchListenerCount, i as DeploymentEventsReader, ia as resolveCaptureObservedState, ii as exportNamesCarriedFrom, in as requireConfigObject, io as DynamicReferenceRegionAmbiguousError, ir as refuseMalformedOutputsForDestroy, it as secretBearing, j as isFinalSnapshotError, ja as AssemblyReader, ji as buildDenyExternalAccessPolicy, jn as hasReadableResources, jo as retryClassificationText, jr as carriesSecretMask, jt as isWaitAbandonedError, k as ccRoutedFinalSnapshotError, ka as clientDefaultsFor, ki as validateAssetBucketName, kn as hasReadableOrphans, ko as markNonRetryable, kr as STATE_SOURCED_READBACK_RULES, kt as deleteIndeterminateGuards, l as replayRollback, la as stateBucketExistenceConfirmed, li as importableOutputs, ln as producerRegionsFromState, lo as MalformedProducerRecordRefusalError, lr as refuseMalformedResourcesForDestroy, lt as collectInlinePolicyNamesManagedBySiblings, m as maskingRetryLogger, ma as MIGRATE_TMP_PREFIX, mi as AssetPublisher, mn as s3BucketRegionalDomainName, mo as ResourceUpdateNotSupportedError, mr as repairMalformedResourceEntriesForReadOnly, mt as endCommandInterruptScope, n as DEFAULT_RESOURCE_WARN_AFTER_MS, na as resolveApp, ni as DEFAULT_STATE_PREFIX, nn as replayWarn, nr as refuseMalformedOrphansForOrphan, nt as exportAliasCollisionScrubWarning, o as planFailedOps, oa as resolveStateBucketWithDefault, oi as hasReasonlessBaselineRefusal, on as definedAttributes, oo as LocalInvokeBuildError$1, or as refuseMalformedResourceEntries, ot as secretSafeKeyDisplay, p as withResourceDeadline, pa as CFN_TEMPLATE_URL_LIMIT, pi as shouldRetainResource, pn as s3BucketDualStackDomainName, po as ResourceTimeoutError, pr as repairMalformedOutputsForReadOnly, pt as beginCommandInterruptScope, q as formatResourceLine, qa as AwsClients, qi as warnFinchArgvExposure, qn as malformedResourcesWarning, qr as LockManager, qt as normalizeAwsTagsToCfn, r as DeployEngine, ra as resolveAutoAssetStorage, ri as describeRegionValueKind, rn as requireConfigArray, ro as DeployCancelledError, rr as refuseMalformedOutputs, rt as isExportAliasCollision, s as planRollback, sa as resolveStateBucketWithDefaultAndSource, si as hasUnverifiableParameterRefusal, sn as stringifyIfAssigned, so as LocalStartServiceError, sr as refuseMalformedResourceEntriesForOrphan, st as getCurrentResourceSecrets, t as DEFAULT_RESOURCE_TIMEOUT_MS, ta as getLegacyStateBucketName, ti as CUSTOM_RESOURCE_RESPONSE_PREFIX, tn as readConfigString, to as CrossAccountSecretRefusalError, tr as refuseMalformedOrphansForDestroy, tt as collectPublishedOutputNames, u as resolveReplacementOldType, ua as warnDeprecatedNoPrefixCliFlag, ui as isReadableBag, un as withSharedDrainBudget, uo as NestedStackChildDirectDestroyError, ur as refuseMalformedState, ut as clearOnUpdateRemoval, v as isSecretBearingReferenceString, va as injectiveKey, vi as createAssetRedirectResolver, vn as applyCallerIdentityCredentials, vo as SynthesisError, vr as safeStackName, vt as CloudControlProvider, w as reachableDivergentParameters, wa as PARTITION_TABLE, wi as ensureAssetStorage, wn as STATE_RESOURCES_MALFORMED, wo as shellQuote, wr as withRetry, wt as packCompositeId, x as bindingSkippedOutputs, xa as producerRecordKey, xi as AssetModeResolver, xn as DiffCalculator, xo as normalizeAwsError, xr as findActionableSilentDrops, xt as compositeIdFormatMessage, y as keptWholeReasonText, ya as injectiveKeyPrefix, yi as loadPublishableAssetManifest, yn as callerEnvCredentials, yr as unpreviewableOrphanRecords, yt as slowCcOperationTimeoutMs, z as isStatefulRecreateTargetForReplace, za as ownValue, zi as formatDockerLoginError, zn as malformedOrphanRowsKeptWarning, zr as maskSecretsInError, zt as getAccountInfo } from "./deploy-engine-BZps_IKn.js";
2
2
  import { C as displayAwsMessage, D as isPasteableIdent, E as displayStackName, O as truncateCodePoints, 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-Bt0RGDfb.js";
3
3
  import { n as awsClientDefaults, s as ambientRegion } from "./aws-client-defaults-jISU4PHo.js";
4
- import { t as getCdkdVersion } from "./version-BuS5njuZ.js";
5
- import { a as renderDisableCommand, i as protectedReplacementAdvice, r as UNNAMEABLE_ID_CLAUSE, t as ASGProvider } from "./asg-provider-B32vpt_E.js";
4
+ import { t as getCdkdVersion } from "./version-BkoR4hMq.js";
5
+ import { a as renderDisableCommand, i as protectedReplacementAdvice, r as UNNAMEABLE_ID_CLAUSE, t as ASGProvider } from "./asg-provider-Dbqbr89e.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";
@@ -3073,7 +3073,7 @@ function validateRecreateTargets(input) {
3073
3073
  if (MULTI_REGION_RECREATE_BLOCKED_TYPES.has(resourceType)) blockedMultiRegionTargets.push(target);
3074
3074
  if (resourceType === NESTED_STACK_RESOURCE_TYPE$1 || templateResource.Type === NESTED_STACK_RESOURCE_TYPE$1) blockedNestedStackTargets.push(target);
3075
3075
  if (direction === "to-cc-api") {
3076
- const actionableDrops = findActionableSilentDrops(resourceType, templateResource.Properties, EMPTY_ALLOW_SET$1);
3076
+ const actionableDrops = findActionableSilentDrops(resourceType, templateResource.Properties, EMPTY_ALLOW_SET$1, recordedResource.properties, { unresolvedAs: "changed" });
3077
3077
  for (const { property } of actionableDrops) {
3078
3078
  const allowKey = `${resourceType}:${property}`;
3079
3079
  if (input.allowUnsupportedProperties.has(allowKey)) ambiguousIntent.push({
@@ -3084,7 +3084,7 @@ function validateRecreateTargets(input) {
3084
3084
  }
3085
3085
  if (recordedResource.provisionedBy === "cc-api") blockedAlreadyCcApi.push(target);
3086
3086
  } else {
3087
- const actionableDrops = findActionableSilentDrops(resourceType, templateResource.Properties, input.allowUnsupportedProperties);
3087
+ const actionableDrops = findActionableSilentDrops(resourceType, templateResource.Properties, input.allowUnsupportedProperties, recordedResource.properties, { unresolvedAs: "changed" });
3088
3088
  for (const { property } of actionableDrops) ambiguousIntentSdk.push({
3089
3089
  logicalId,
3090
3090
  resourceType,
@@ -8600,6 +8600,16 @@ function noRecordedRegionCause() {
8600
8600
  remedy: "This record predates cdkd's region-keyed state layout. Re-deploy the stack to write a record that carries its region, or confirm the bucket's location yourself, to have the guard run on the next destroy."
8601
8601
  };
8602
8602
  }
8603
+ /**
8604
+ * A lifecycle rule's `Id` as the warnings print it (go-to-k/cdkd#3617). The id
8605
+ * is template-chosen and free-form, so it renders through `displayIdent` --
8606
+ * bare when plain, otherwise one JSON string -- rather than inside cdkd's own
8607
+ * quotes, which a `'` in it would close. An absent or empty id is named in
8608
+ * words.
8609
+ */
8610
+ function shownLifecycleRuleId(id) {
8611
+ return id === void 0 || id === null || id === "" ? "(no Id)" : displayIdent(id);
8612
+ }
8603
8613
  var S3BucketProvider = class S3BucketProvider {
8604
8614
  s3Client;
8605
8615
  logger = getLogger().child("S3BucketProvider");
@@ -8901,7 +8911,7 @@ var S3BucketProvider = class S3BucketProvider {
8901
8911
  if (coerceCfnBoolean(rule["ExpiredObjectDeleteMarker"]) === true) {
8902
8912
  const exp = sdkRule.Expiration;
8903
8913
  if (!(exp?.["Days"] !== void 0 || exp?.["Date"] !== void 0)) sdkRule.Expiration = { ExpiredObjectDeleteMarker: true };
8904
- 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.`);
8914
+ else this.logger.warn(`Lifecycle rule ${shownLifecycleRuleId(rule["Id"])} on ${displaySafe(bucketName)} sets ExpiredObjectDeleteMarker alongside an expiration Days/Date; S3 forbids combining them, so the delete-marker cleanup was not applied.`);
8905
8915
  }
8906
8916
  const nve = isPlainObject$2(rule["NoncurrentVersionExpiration"]) ? rule["NoncurrentVersionExpiration"] : void 0;
8907
8917
  const legacyNveDays = rule["NoncurrentVersionExpirationInDays"];
@@ -8917,7 +8927,7 @@ var S3BucketProvider = class S3BucketProvider {
8917
8927
  });
8918
8928
  const nvts = rule["NoncurrentVersionTransitions"];
8919
8929
  const singularNvt = rule["NoncurrentVersionTransition"];
8920
- 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.`));
8930
+ const allNvts = mergeLegacySingular(nvts, singularNvt, (sc) => this.logger.warn(`Lifecycle rule ${shownLifecycleRuleId(rule["Id"])} on ${displaySafe(bucketName)} declares both NoncurrentVersionTransitions and the legacy NoncurrentVersionTransition for storage class ${displaySafe(sc)}; S3 rejects duplicates, so the legacy singular was ignored.`));
8921
8931
  if (allNvts.length > 0) sdkRule.NoncurrentVersionTransitions = allNvts.map(toSdkNvt);
8922
8932
  const toSdkTransition = (t) => ({
8923
8933
  Days: t["TransitionInDays"] ?? t["Days"],
@@ -8926,7 +8936,7 @@ var S3BucketProvider = class S3BucketProvider {
8926
8936
  });
8927
8937
  const transitions = rule["Transitions"];
8928
8938
  const singularTransition = rule["Transition"];
8929
- 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.`));
8939
+ const allTransitions = mergeLegacySingular(transitions, singularTransition, (sc) => this.logger.warn(`Lifecycle rule ${shownLifecycleRuleId(rule["Id"])} on ${displaySafe(bucketName)} declares both Transitions and the legacy Transition for storage class ${displaySafe(sc)}; S3 rejects duplicates, so the legacy singular was ignored.`));
8930
8940
  if (allTransitions.length > 0) sdkRule.Transitions = allTransitions.map(toSdkTransition);
8931
8941
  const abort = isPlainObject$2(rule["AbortIncompleteMultipartUpload"]) ? rule["AbortIncompleteMultipartUpload"] : void 0;
8932
8942
  if (abort) sdkRule.AbortIncompleteMultipartUpload = { DaysAfterInitiation: abort["DaysAfterInitiation"] };
@@ -21135,23 +21145,29 @@ var DynamoDBTableProvider = class {
21135
21145
  * CALLER-BLIND, decided rather than overlooked (PR review). A TEMPLATE-borne
21136
21146
  * `{0, 0}` warn-skips here while `create()` fails loudly on the same value,
21137
21147
  * which reads like the "loud failure for a quiet lie" trade the adopted-index
21138
- * arm below forbids. It stands for three reasons:
21139
- *
21140
- * - The discriminator that EXISTS does not separate the callers that matter.
21141
- * `ResourceProvider.update` DOES take an optional `UpdateContext` — an
21142
- * earlier draft of this comment claimed the signature carries no context
21143
- * at all, which is simply false (`s3-bucket-provider.ts` consumes it
21144
- * today) — but its one field, `desiredFromAwsReadback`, is set ONLY by
21145
- * `cdkd drift --revert` (`src/cli/commands/drift.ts`). The rollback
21146
- * executor's revert arms deliberately pass NO context: their desired bag
21147
- * is `previousState.properties`, a TEMPLATE recorded earlier, so they are
21148
- * indistinguishable from an ordinary template deploy — and THAT is the
21149
- * pair this decision turns on. Knowing the value came from a readback
21150
- * would not license throwing on the other two.
21151
- * - With the caller unknowable, the repo's rule for the UPDATE path is
21152
- * WARN-never-throw (issues #1545 / #1552): the desired bag here can BE a
21153
- * historical cdkd state record, and a refusal would make the table
21154
- * un-updatable and un-rollbackable with no template-side remedy.
21148
+ * arm below forbids. It was decided for three reasons; the first no longer
21149
+ * holds as written (see its own bullet), the other two still do:
21150
+ *
21151
+ * - When this was decided, no discriminator separated the callers that
21152
+ * matter. `ResourceProvider.update` takes an optional `UpdateContext`, and
21153
+ * `desiredFromAwsReadback` on it is set ONLY by `cdkd drift --revert`
21154
+ * (`src/cli/commands/drift.ts`). The rollback executor's revert arms DO
21155
+ * pass a context (a `maskSecrets` capability, issue #1932) but never set
21156
+ * that flag: their desired bag is `previousState.properties`, a TEMPLATE
21157
+ * recorded earlier. At the time they were therefore indistinguishable
21158
+ * from an ordinary template deploy — and THAT is the pair this decision
21159
+ * turns on. (An earlier revision said the revert arms "pass NO context",
21160
+ * which stopped being true with #1932 — issue #1999.) Since issue #3141
21161
+ * they ALSO set `UpdateContext.replayingState`, so the caller is now
21162
+ * knowable: the per-index `OnDemandThroughput` refusal in `update()` gates
21163
+ * on exactly that pair of flags (the go-to-k/cdkd#3401 review). This arm
21164
+ * was not re-decided when that became possible; splitting it the same way
21165
+ * would turn a template-path warn-skip into a refusal, a behaviour change
21166
+ * that needs its own review rather than a comment edit (issue #3728).
21167
+ * - The repo's general rule for the UPDATE path is WARN-never-throw (issues
21168
+ * #1545 / #1552): the desired bag here can BE a historical cdkd state
21169
+ * record, and a refusal would make the table un-updatable and
21170
+ * un-rollbackable with no template-side remedy.
21155
21171
  * - The lie is bounded and self-surfacing. AWS never accepted `{0, 0}` at
21156
21172
  * create either, so no live table can be holding it; and where the value
21157
21173
  * would actually matter — a PROVISIONED table, whose indexes hold a real
@@ -31657,9 +31673,10 @@ var EC2Provider = class {
31657
31673
  * narrowing here the template's extra keys read as an ADDED property on the
31658
31674
  * next deploy — and every destination key is create-only in the registry
31659
31675
  * schema, so the diff would classify a REPLACEMENT and the engine's
31660
- * replacement create (which passes no context, and so gets no
31661
- * `onMultipleDestinations` downgrade) would hit the #1566 refusal. A
31662
- * previously-green no-op deploy would start failing.
31676
+ * replacement create (whose context carries a `maskSecrets` capability but
31677
+ * never `replayingState`, and so gets no `onMultipleDestinations`
31678
+ * downgrade) would hit the #1566 refusal. A previously-green no-op deploy
31679
+ * would start failing.
31663
31680
  *
31664
31681
  * Shares `narrowRouteDestinations` with the provisioning path so the two
31665
31682
  * cannot disagree about which key survives.
@@ -31668,8 +31685,8 @@ var EC2Provider = class {
31668
31685
  * half for the same reason: `IpProtocol` is create-only on that type in the
31669
31686
  * registry schema, so normalizing state alone would make the template's
31670
31687
  * original value read as a changed immutable property — a REPLACEMENT, whose
31671
- * create passes no context and so gets no `onUnusable` downgrade, turning a
31672
- * previously-green no-op deploy into a hard failure. Normalizing BOTH sides
31688
+ * create never sets `replayingState` and so gets no `onUnusable` downgrade,
31689
+ * turning a previously-green no-op deploy into a hard failure. Normalizing BOTH sides
31673
31690
  * is also what keeps the fix correct for records written BEFORE it existed,
31674
31691
  * which still carry the un-narrowed value.
31675
31692
  */
@@ -51256,6 +51273,40 @@ const GLUE_TABLE_ID_FORMAT = {
51256
51273
  segments: ["databaseName", "tableName"]
51257
51274
  };
51258
51275
  /**
51276
+ * Decode an `AWS::Glue::Table` physicalId `<databaseName>|<tableName>`.
51277
+ *
51278
+ * The separator is unescaped (issue #1672), so a bare split of an id whose
51279
+ * table name carries a `|` returns a DIFFERENT table — `mydb|a|b` splits to
51280
+ * `mydb.a`, both halves non-empty, and a delete of it would hit the wrong
51281
+ * table. Such ids exist: a state-replay create warns and packs one anyway, and
51282
+ * binaries before the #1719 refusal recorded them. The recorded `DatabaseName`
51283
+ * disambiguates the id without re-deriving the identity from the bag: it is
51284
+ * used only when the id starts with it, and the table name is the remainder.
51285
+ *
51286
+ * `bags` are tried in order, so pass the one describing what was DEPLOYED
51287
+ * first. With no usable anchor only an id with exactly one separator decodes;
51288
+ * anything longer is ambiguous and returns `undefined`, the malformed-id arm
51289
+ * every caller already has.
51290
+ */
51291
+ function decodeTableId(physicalId, ...bags) {
51292
+ for (const bag of bags) {
51293
+ const databaseName = bag?.["DatabaseName"];
51294
+ if (typeof databaseName !== "string" || databaseName === "") continue;
51295
+ if (!physicalId.startsWith(`${databaseName}|`)) continue;
51296
+ const tableName = physicalId.slice(databaseName.length + 1);
51297
+ if (tableName !== "") return {
51298
+ databaseName,
51299
+ tableName
51300
+ };
51301
+ }
51302
+ const parts = physicalId.split("|");
51303
+ if (parts.length !== 2 || !parts[0] || !parts[1]) return void 0;
51304
+ return {
51305
+ databaseName: parts[0],
51306
+ tableName: parts[1]
51307
+ };
51308
+ }
51309
+ /**
51259
51310
  * Read a template-borne value that is about to be forwarded to a Glue read
51260
51311
  * API as a string.
51261
51312
  *
@@ -51585,8 +51636,9 @@ var GlueProvider = class {
51585
51636
  }
51586
51637
  async updateTable(logicalId, physicalId, resourceType, properties, previousProperties) {
51587
51638
  this.logger.debug(`Updating Glue Table ${logicalId}: ${physicalId}`);
51588
- const [databaseName, tableName] = physicalId.split("|");
51589
- if (!databaseName || !tableName) throw new ProvisioningError(compositeIdFormatMessage(GLUE_TABLE_ID_FORMAT, logicalId, physicalId), resourceType, logicalId, physicalId);
51639
+ const decoded = decodeTableId(physicalId, previousProperties, properties);
51640
+ if (!decoded) throw new ProvisioningError(compositeIdFormatMessage(GLUE_TABLE_ID_FORMAT, logicalId, physicalId), resourceType, logicalId, physicalId);
51641
+ const { databaseName, tableName } = decoded;
51590
51642
  const tableInput = properties["TableInput"];
51591
51643
  if (!tableInput) throw new ProvisioningError(`TableInput is required for Glue Table update ${logicalId}`, resourceType, logicalId, physicalId);
51592
51644
  const catalogId = properties["CatalogId"];
@@ -51621,11 +51673,12 @@ var GlueProvider = class {
51621
51673
  }
51622
51674
  async deleteTable(logicalId, physicalId, resourceType, properties, context) {
51623
51675
  this.logger.debug(`Deleting Glue Table ${logicalId}: ${physicalId}`);
51624
- const [databaseName, tableName] = physicalId.split("|");
51625
- if (!databaseName || !tableName) {
51676
+ const decoded = decodeTableId(physicalId, properties);
51677
+ if (!decoded) {
51626
51678
  this.logger.warn(compositeIdFormatMessage(GLUE_TABLE_ID_FORMAT, logicalId, physicalId, { skipping: true }));
51627
51679
  return compositeIdSkipResult();
51628
51680
  }
51681
+ const { databaseName, tableName } = decoded;
51629
51682
  const target = deleteCatalogId(properties);
51630
51683
  if (target.declaredButUnusable) this.logger.debug(`Glue Table ${logicalId}: CatalogId is not a usable value (likely an unresolved intrinsic), so DeleteTable targets ${describeCatalog(target.catalogId)}.`);
51631
51684
  try {
@@ -51897,9 +51950,12 @@ var GlueProvider = class {
51897
51950
  * downgrades through the shared `replayWarn`, since a reverse-replacement
51898
51951
  * re-create reads a STATE record the user cannot edit from the template.
51899
51952
  * - UPDATE passes a warn callback UNCONDITIONALLY (the `updateRoute`
51900
- * precedent — `update()` has no context, so it cannot tell a template
51901
- * push from the state-borne bag `drift --revert` and the rollback revert
51902
- * arm hand it), and then RETAINS the PREVIOUS side's block, which is why
51953
+ * precedent, decided when `update()` could not tell a template push
51954
+ * from the state-borne bag `drift --revert` and the rollback revert arm
51955
+ * hand it — since issue #3141 `UpdateContext.replayingState` plus
51956
+ * `desiredFromAwsReadback` can, and this arm was not re-decided — issue
51957
+ * #3728), and
51958
+ * then RETAINS the PREVIOUS side's block, which is why
51903
51959
  * `previousDatabaseInput` is threaded in. Omitting instead would ERASE a
51904
51960
  * live resource link, because `UpdateDatabase` replaces `DatabaseInput`
51905
51961
  * wholesale — the #1612 "UPDATE retains the previous value" row, reached
@@ -52112,7 +52168,7 @@ var GlueProvider = class {
52112
52168
  const catalogId = catalogIdForApi(properties?.["CatalogId"]);
52113
52169
  switch (resourceType) {
52114
52170
  case "AWS::Glue::Database": return this.readDatabase(physicalId, catalogId);
52115
- case "AWS::Glue::Table": return this.readTable(physicalId, catalogId);
52171
+ case "AWS::Glue::Table": return this.readTable(physicalId, catalogId, properties);
52116
52172
  default: return;
52117
52173
  }
52118
52174
  }
@@ -52175,9 +52231,10 @@ var GlueProvider = class {
52175
52231
  if (db.Name !== void 0) result["DatabaseName"] = db.Name;
52176
52232
  return result;
52177
52233
  }
52178
- async readTable(physicalId, catalogId) {
52179
- const [databaseName, tableName] = physicalId.split("|");
52180
- if (!databaseName || !tableName) return void 0;
52234
+ async readTable(physicalId, catalogId, properties) {
52235
+ const decoded = decodeTableId(physicalId, properties);
52236
+ if (!decoded) return void 0;
52237
+ const { databaseName, tableName } = decoded;
52181
52238
  let table;
52182
52239
  try {
52183
52240
  table = (await this.getClient().send(new GetTableCommand({
@@ -52421,8 +52478,19 @@ var GlueWorkflowProvider = class {
52421
52478
  }
52422
52479
  return null;
52423
52480
  }
52481
+ /**
52482
+ * The workflow ARN `GetTags` needs. The partition is derived from the
52483
+ * client's region (issue #1815): the literal `arn:aws:` is structurally valid
52484
+ * everywhere, so in `aws-cn` / `aws-us-gov` nothing rejected it — `GetTags`
52485
+ * was simply aimed at an ARN naming no workflow, and the best-effort catch
52486
+ * below reads a failure there as EMPTY tags. A commercial region still derives to `aws`,
52487
+ * so commercial output is unchanged byte for byte.
52488
+ */
52424
52489
  async buildWorkflowArn(workflowName) {
52425
- return `arn:aws:glue:${await this.getRegion()}:${await this.getAccountId()}:workflow/${workflowName}`;
52490
+ const region = await this.getRegion();
52491
+ const account = await this.getAccountId();
52492
+ const { partition } = derivePartitionAndUrlSuffix(region);
52493
+ return `arn:${partition}:glue:${region}:${account}:workflow/${workflowName}`;
52426
52494
  }
52427
52495
  async getRegion() {
52428
52496
  return await this.getClient().config.region() || this.providerRegion || "us-east-1";
@@ -52640,8 +52708,18 @@ function findIcebergTableInputKey(properties) {
52640
52708
  * must never call `this.create()` from inside its own `update()` the way ACM /
52641
52709
  * IAM / Lambda-permission / SNS-subscription do: those internal re-creates
52642
52710
  * forward `update()`'s `properties` — a STATE record during a rollback replay —
52643
- * and `update()` has no context parameter to carry the flag, so this refusal
52644
- * would fire on a replay with no way to detect it.
52711
+ * and pass no `CreateContext`, so this refusal would fire on a replay with no
52712
+ * way to detect it. (`update()` DOES take a context — an `UpdateContext` since
52713
+ * issue #1732 — and since issue #3141 that context carries its own
52714
+ * `replayingState`, set by the rollback executor's two revert arms. So the
52715
+ * information now reaches `update()`; what is missing is a re-create that
52716
+ * builds a `CreateContext` from it, and none of those providers does. An
52717
+ * earlier revision said `update()` had "no context parameter to carry the
52718
+ * flag" — issue #1999.) Were GlueProvider ever to re-create inside `update()`,
52719
+ * it would have to forward a replay signal into that `create()` —
52720
+ * `context.replayingState` on the rollback path — and decide separately what
52721
+ * this refusal means for the `desiredFromAwsReadback` bag `cdkd drift --revert`
52722
+ * hands it, since that path sets no `replayingState`.
52645
52723
  *
52646
52724
  * **Known bypass: the sticky Cloud Control route.** This is a GlueProvider
52647
52725
  * pre-flight, so it only runs on the SDK route. When a table's state record
@@ -52747,11 +52825,22 @@ function cleanCfnObject(obj) {
52747
52825
  }
52748
52826
  /**
52749
52827
  * Build the ARN for a Glue resource. Used by tag-fetch via
52750
- * `GetTagsCommand` which only accepts an ARN. Account id falls back
52751
- * to STS when not provided.
52828
+ * `GetTagsCommand` which only accepts an ARN, and by the Job / Crawler /
52829
+ * Trigger `applyTagDiff` as the `TagResource` / `UntagResource` target.
52830
+ * Account id falls back to STS when not provided.
52831
+ *
52832
+ * The partition is derived from the region (issue #1815). A hardcoded
52833
+ * `arn:aws:` is structurally valid everywhere, so in `aws-cn` / `aws-us-gov`
52834
+ * nothing rejected it: the tag MUTATION was aimed at an ARN naming no
52835
+ * resource, and the drift read's best-effort `GetTags` read the failure as
52836
+ * empty tags. A commercial region still derives to `aws`, so commercial output
52837
+ * is unchanged byte for byte.
52752
52838
  */
52753
52839
  async function buildGlueResourceArn(client, stsClient, resource, name, accountId) {
52754
- return `arn:aws:glue:${await client.config.region() || ambientRegion() || "us-east-1"}:${accountId ?? await resolveAccountId(stsClient)}:${resource}/${name}`;
52840
+ const region = await client.config.region() || ambientRegion() || "us-east-1";
52841
+ const account = accountId ?? await resolveAccountId(stsClient);
52842
+ const { partition } = derivePartitionAndUrlSuffix(region);
52843
+ return `arn:${partition}:glue:${region}:${account}:${resource}/${name}`;
52755
52844
  }
52756
52845
  async function resolveAccountId(stsClient) {
52757
52846
  const identity = await stsClient.send(new GetCallerIdentityCommand({}));
@@ -65583,13 +65672,13 @@ var NestedStackProvider = class {
65583
65672
  try {
65584
65673
  raw = fs.readFileSync(templatePath, "utf-8");
65585
65674
  } catch (err) {
65586
- throw new Error(`Failed to read nested template at ${displayAssemblyPath(templatePath)}: ${displaySafe(err instanceof Error ? err.message : String(err))}`);
65675
+ throw new Error(`Failed to read nested template at ${displayAssemblyPath(templatePath)}: ${describeFileReadFailure(err, templatePath)}`);
65587
65676
  }
65588
65677
  let template;
65589
65678
  try {
65590
65679
  template = JSON.parse(raw);
65591
65680
  } catch (err) {
65592
- throw new Error(`Failed to parse nested template at ${displayAssemblyPath(templatePath)}: ${displaySafe(err instanceof Error ? err.message : String(err))}`);
65681
+ throw new Error(`Failed to parse nested template at ${displayAssemblyPath(templatePath)}: ${describeFileReadFailure(err, templatePath)}`);
65593
65682
  }
65594
65683
  const grandchildTemplates = this.indexGrandchildTemplates(template, templatePath);
65595
65684
  if (assetRedirect) {
@@ -68503,12 +68592,12 @@ function readNestedTemplate(templatePath) {
68503
68592
  try {
68504
68593
  raw = fs.readFileSync(templatePath, "utf-8");
68505
68594
  } catch (err) {
68506
- throw new Error(`Failed to read nested template at ${templatePath}: ${err instanceof Error ? err.message : String(err)}`);
68595
+ throw new Error(`Failed to read nested template at ${displayAssemblyPath(templatePath)}: ${describeFileReadFailure(err, templatePath)}`);
68507
68596
  }
68508
68597
  try {
68509
68598
  return JSON.parse(raw);
68510
68599
  } catch (err) {
68511
- throw new Error(`Failed to parse nested template at ${templatePath}: ${err instanceof Error ? err.message : String(err)}`);
68600
+ throw new Error(`Failed to parse nested template at ${displayAssemblyPath(templatePath)}: ${describeFileReadFailure(err, templatePath)}`);
68512
68601
  }
68513
68602
  }
68514
68603
  /**
@@ -69028,7 +69117,7 @@ function collectCcApiRoutes(template, state) {
69028
69117
  if (!resource) continue;
69029
69118
  if (resource.Type === "AWS::CDK::Metadata") continue;
69030
69119
  if (resource.Type === "AWS::CloudFormation::Stack") continue;
69031
- const drops = findActionableSilentDrops(resource.Type, resource.Properties, EMPTY_ALLOW_SET);
69120
+ const drops = findActionableSilentDrops(resource.Type, resource.Properties, EMPTY_ALLOW_SET, state.resources[logicalId]?.properties);
69032
69121
  if (drops.length > 0) {
69033
69122
  hits.set(logicalId, drops.map((d) => d.property));
69034
69123
  continue;
@@ -69246,7 +69335,7 @@ function renderChangeLines(changes, logFn, ccApiRoutes, adoptedOrphans) {
69246
69335
  logFn(` [~] ${logicalId} (${change.resourceType})${annotateAdoption(logicalId)}${annotateRouting(logicalId)}`);
69247
69336
  if (change.propertyChanges && change.propertyChanges.length > 0) for (const propChange of change.propertyChanges) {
69248
69337
  const requiresReplace = propChange.requiresReplacement ? " [requires replacement]" : "";
69249
- const propagated = propChange.replacementPropagated ? " [replacement propagated]" : "";
69338
+ const propagated = propChange.replacementPropagated ? " [replacement propagated]" : propChange.inPlacePropagated ? " [attribute propagated]" : "";
69250
69339
  const indent = " ";
69251
69340
  const [oldFiltered, newFiltered] = stripUnchangedValuePair(propChange.oldValue, propChange.newValue);
69252
69341
  const oldStr = renderDiffValue(propChange.oldValue, oldFiltered, indent, false);
@@ -86381,7 +86470,7 @@ var AttributeFetcher = class {
86381
86470
  const orphan = this.orphans[orphanLogicalId];
86382
86471
  const bag = orphan.attributes;
86383
86472
  if (bag !== void 0 && !isReadableBag(bag)) {
86384
- this.logger.warn(`--force: state.attributes of '${displaySafe(orphanLogicalId, { asciiOnly: true })}' is not a readable map, so it is not consulted for '${displaySafe(attribute, { asciiOnly: true })}'; leaving the original intrinsic in place.`);
86473
+ this.logger.warn(`--force: state.attributes of ${displayIdent(orphanLogicalId)} is not a readable map, so it is not consulted for ${displayIdent(attribute)}; leaving the original intrinsic in place.`);
86385
86474
  return {
86386
86475
  ok: false,
86387
86476
  reason: `${reason}; the state.attributes cache is not a readable map`
@@ -95043,7 +95132,7 @@ async function resolveOne(entry, secretsClient, ssmClient) {
95043
95132
  switch (shape.kind) {
95044
95133
  case "secrets-manager": return resolveSecretsManager(entry, shape, secretsClient);
95045
95134
  case "ssm": return resolveSsm(entry, shape, ssmClient);
95046
- case "unknown": throw new EcsSecretsResolutionError(`Container '${displayIdent(entry.containerName)}' secret '${displayIdent(entry.name)}' references an unsupported ValueFrom shape ${displayIdent(arn, { maxCodePoints: SECRET_REF_MAX_CODE_POINTS })}. Expected Secrets Manager ARN (optionally with :<json-key>::) or SSM Parameter ARN.`);
95135
+ case "unknown": throw new EcsSecretsResolutionError(`Container ${displayIdent(entry.containerName)} secret ${displayIdent(entry.name)} references an unsupported ValueFrom shape ${displayIdent(arn, { maxCodePoints: SECRET_REF_MAX_CODE_POINTS })}. Expected Secrets Manager ARN (optionally with :<json-key>::) or SSM Parameter ARN.`);
95047
95136
  }
95048
95137
  }
95049
95138
  /**
@@ -95076,20 +95165,20 @@ async function resolveSecretsManager(entry, shape, client) {
95076
95165
  try {
95077
95166
  secretString = (await client.send(new GetSecretValueCommand({ SecretId: shape.baseArn }))).SecretString;
95078
95167
  } catch (err) {
95079
- throw new EcsSecretsResolutionError(`Failed to resolve Secrets Manager secret for container '${displayIdent(entry.containerName)}' / env '${displayIdent(entry.name)}' (${displayIdent(shape.baseArn, { maxCodePoints: SECRET_REF_MAX_CODE_POINTS })}): ${displaySafe(err instanceof Error ? err.message : String(err))}`);
95168
+ throw new EcsSecretsResolutionError(`Failed to resolve Secrets Manager secret for container ${displayIdent(entry.containerName)} / env ${displayIdent(entry.name)} (${displayIdent(shape.baseArn, { maxCodePoints: SECRET_REF_MAX_CODE_POINTS })}): ${displaySafe(err instanceof Error ? err.message : String(err))}`);
95080
95169
  }
95081
- if (secretString === void 0) throw new EcsSecretsResolutionError(`Secrets Manager returned no SecretString for container '${displayIdent(entry.containerName)}' / env '${displayIdent(entry.name)}' (${displayIdent(shape.baseArn, { maxCodePoints: SECRET_REF_MAX_CODE_POINTS })}). Binary secrets are not supported.`);
95170
+ if (secretString === void 0) throw new EcsSecretsResolutionError(`Secrets Manager returned no SecretString for container ${displayIdent(entry.containerName)} / env ${displayIdent(entry.name)} (${displayIdent(shape.baseArn, { maxCodePoints: SECRET_REF_MAX_CODE_POINTS })}). Binary secrets are not supported.`);
95082
95171
  if (shape.jsonKey === void 0) return secretString;
95083
95172
  let parsed;
95084
95173
  try {
95085
95174
  parsed = JSON.parse(secretString);
95086
95175
  } catch (err) {
95087
95176
  const kind = err instanceof Error ? err.name : "unknown";
95088
- throw new EcsSecretsResolutionError(`Container '${displayIdent(entry.containerName)}' secret '${displayIdent(entry.name)}' specified json-key '${displaySafe(shape.jsonKey)}' but the secret value is not valid JSON (${displayIdent(kind)}). The parser detail is withheld because it would echo the secret plaintext.`);
95177
+ throw new EcsSecretsResolutionError(`Container ${displayIdent(entry.containerName)} secret ${displayIdent(entry.name)} specified json-key ${displayIdent(shape.jsonKey)} but the secret value is not valid JSON (${displayIdent(kind)}). The parser detail is withheld because it would echo the secret plaintext.`);
95089
95178
  }
95090
- if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) throw new EcsSecretsResolutionError(`Container '${displayIdent(entry.containerName)}' secret '${displayIdent(entry.name)}' specified json-key '${displaySafe(shape.jsonKey)}' but the secret root is not a JSON object.`);
95179
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) throw new EcsSecretsResolutionError(`Container ${displayIdent(entry.containerName)} secret ${displayIdent(entry.name)} specified json-key ${displayIdent(shape.jsonKey)} but the secret root is not a JSON object.`);
95091
95180
  const value = parsed[shape.jsonKey];
95092
- if (value === void 0) throw new EcsSecretsResolutionError(`Container '${displayIdent(entry.containerName)}' secret '${displayIdent(entry.name)}' specified json-key '${displaySafe(shape.jsonKey)}' but no such key exists in the secret JSON.`);
95181
+ if (value === void 0) throw new EcsSecretsResolutionError(`Container ${displayIdent(entry.containerName)} secret ${displayIdent(entry.name)} specified json-key ${displayIdent(shape.jsonKey)} but no such key exists in the secret JSON.`);
95093
95182
  return typeof value === "string" ? value : JSON.stringify(value);
95094
95183
  }
95095
95184
  async function resolveSsm(entry, shape, client) {
@@ -95098,11 +95187,11 @@ async function resolveSsm(entry, shape, client) {
95098
95187
  Name: shape.name,
95099
95188
  WithDecryption: true
95100
95189
  }))).Parameter?.Value;
95101
- if (value === void 0) throw new EcsSecretsResolutionError(`SSM parameter '${displayIdent(shape.name, { maxCodePoints: SECRET_REF_MAX_CODE_POINTS })}' returned no Value for container '${displayIdent(entry.containerName)}' / env '${displayIdent(entry.name)}'.`);
95190
+ if (value === void 0) throw new EcsSecretsResolutionError(`SSM parameter ${displayIdent(shape.name, { maxCodePoints: SECRET_REF_MAX_CODE_POINTS })} returned no Value for container ${displayIdent(entry.containerName)} / env ${displayIdent(entry.name)}.`);
95102
95191
  return value;
95103
95192
  } catch (err) {
95104
95193
  if (err instanceof EcsSecretsResolutionError) throw err;
95105
- throw new EcsSecretsResolutionError(`Failed to resolve SSM parameter for container '${displayIdent(entry.containerName)}' / env '${displayIdent(entry.name)}' (${displayIdent(shape.name, { maxCodePoints: SECRET_REF_MAX_CODE_POINTS })}): ${displaySafe(err instanceof Error ? err.message : String(err))}`);
95194
+ throw new EcsSecretsResolutionError(`Failed to resolve SSM parameter for container ${displayIdent(entry.containerName)} / env ${displayIdent(entry.name)} (${displayIdent(shape.name, { maxCodePoints: SECRET_REF_MAX_CODE_POINTS })}): ${displaySafe(err instanceof Error ? err.message : String(err))}`);
95106
95195
  }
95107
95196
  }
95108
95197
 
@@ -95515,7 +95604,7 @@ async function prepareOneImage(task, container, options) {
95515
95604
  tag,
95516
95605
  ...task.stack.assetOutdir !== void 0 && { assetOutdir: task.stack.assetOutdir },
95517
95606
  ...options.platformOverride !== void 0 && { platform: options.platformOverride },
95518
- wrapError: (stderr) => new LocalInvokeBuildError$1(`docker build failed for ECS container '${displaySafe(container.name)}' (${asset.source.directory !== void 0 ? displayAssemblyPath(asset.source.directory) : asset.source.executable ? redactDockerArgvValues(asset.source.executable).join(" ") : void 0}): ${displaySafe(stderr)}`)
95607
+ wrapError: (stderr) => new LocalInvokeBuildError$1(`docker build failed for ECS container ${displayIdent(container.name)} (${asset.source.directory !== void 0 ? displayAssemblyPath(asset.source.directory) : asset.source.executable ? redactDockerArgvValues(asset.source.executable).join(" ") : void 0}): ${displaySafe(stderr)}`)
95519
95608
  });
95520
95609
  if (actualTag !== tag) {
95521
95610
  const tagArgs = [
@@ -95526,7 +95615,7 @@ async function prepareOneImage(task, container, options) {
95526
95615
  try {
95527
95616
  await runDockerStreaming(tagArgs);
95528
95617
  } catch (err) {
95529
- throw new LocalInvokeBuildError$1(`docker tag failed re-tagging '${displaySafe(actualTag)}' → '${displaySafe(tag)}' for ECS container '${displaySafe(container.name)}': ${displaySafe(describeDockerFailure(err, tagArgs))}`);
95618
+ throw new LocalInvokeBuildError$1(`docker tag failed re-tagging ${displayIdent(actualTag)} → ${displayIdent(tag)} for ECS container ${displayIdent(container.name)}: ${displaySafe(describeDockerFailure(err, tagArgs))}`);
95530
95619
  }
95531
95620
  }
95532
95621
  return tag;
@@ -99055,4 +99144,4 @@ function buildProgram() {
99055
99144
 
99056
99145
  //#endregion
99057
99146
  export { buildProgram };
99058
- //# sourceMappingURL=program-DGa6mbzV.js.map
99147
+ //# sourceMappingURL=program-BALgPCWL.js.map