@go-to-k/cdkd 0.308.0 → 0.309.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/{asg-provider-CsRMe_zh.js → asg-provider-DQoKGfKH.js} +3 -3
  2. package/dist/{asg-provider-CsRMe_zh.js.map → asg-provider-DQoKGfKH.js.map} +1 -1
  3. package/dist/cli.js +2 -2
  4. package/dist/{db-instance-modify-retry-DOJPkECL.js → db-instance-modify-retry-BUG7NMWS.js} +3 -3
  5. package/dist/{db-instance-modify-retry-DOJPkECL.js.map → db-instance-modify-retry-BUG7NMWS.js.map} +1 -1
  6. package/dist/{deploy-engine-DSpxEUjC.js → deploy-engine-tQ0aqZMo.js} +1418 -281
  7. package/dist/deploy-engine-tQ0aqZMo.js.map +1 -0
  8. package/dist/{iam-policy-targets-TFGunWmV.js → iam-policy-targets-D94wh05t.js} +5 -2
  9. package/dist/{iam-policy-targets-TFGunWmV.js.map → iam-policy-targets-D94wh05t.js.map} +1 -1
  10. package/dist/{iam-role-provider--eWrOXce.js → iam-role-provider-BI8Acvps.js} +3 -3
  11. package/dist/{iam-role-provider--eWrOXce.js.map → iam-role-provider-BI8Acvps.js.map} +1 -1
  12. package/dist/index.d.ts +15 -2
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +3 -3
  15. package/dist/{neptune-provider-p59T8CFv.js → neptune-provider-DmVmx69p.js} +11 -9
  16. package/dist/neptune-provider-DmVmx69p.js.map +1 -0
  17. package/dist/{program-DOPic-aS.js → program-Bnt3Yt0k.js} +121 -260
  18. package/dist/program-Bnt3Yt0k.js.map +1 -0
  19. package/dist/{provider-classes-d9K3vBVh.js → provider-classes-DYke4HKr.js} +1210 -194
  20. package/dist/provider-classes-DYke4HKr.js.map +1 -0
  21. package/dist/{rds-provider-BPs9JSk_.js → rds-provider-Qpf09VQv.js} +49 -20
  22. package/dist/rds-provider-Qpf09VQv.js.map +1 -0
  23. package/dist/{version-DzajQDkv.js → version-9LVuCtBU.js} +2 -2
  24. package/dist/{version-DzajQDkv.js.map → version-9LVuCtBU.js.map} +1 -1
  25. package/package.json +2 -2
  26. package/dist/deploy-engine-DSpxEUjC.js.map +0 -1
  27. package/dist/neptune-provider-p59T8CFv.js.map +0 -1
  28. package/dist/program-DOPic-aS.js.map +0 -1
  29. package/dist/provider-classes-d9K3vBVh.js.map +0 -1
  30. package/dist/rds-provider-BPs9JSk_.js.map +0 -1
@@ -1,9 +1,9 @@
1
1
  import { a as runWithStackAwsClients, i as resetAwsClients, o as setAwsClients, t as AwsClients } from "./aws-clients-Bu9EMILF.js";
2
2
  import { $ as stringifyJsonPayload, A as isNameGeneration, B as SECRET_REF_MAX_CODE_POINTS, C as generateResourceName, F as withSkipPrefix, G as displayAwsMessage, H as UNRENDERABLE, I as withStackScope, J as displayStackName, K as displayIdent, Q as safeMsg, U as asIsMessage, V as STACK_REF_MAX_CODE_POINTS, W as cutMarker, Y as isPasteableIdent, Z as plainIdentOr, _ as PATTERN_B_RESOURCE_TYPES, a as safeStringify, b as derivesPatternBName, c as isStdoutReservedForPayload, d as runStackBuffered, et as terminalSafe, g as PATTERN_B_NAME_PROPERTIES, h as PATTERN_B_NAME_OPTIONS, l as reserveStdoutForPayload, m as getLiveRenderer, n as describeAwsFailure, q as displaySafe, s as getLogger, tt as truncateCodePoints, x as explicitNamePropertyFor, z as SAFE_MSG_ALTERED_CHAR } from "./aws-failure-text-NSBdKPYK.js";
3
- import { An as StateError, Cn as NestedStackChildDirectDestroyError, Cr as markNonRetryable, Dn as ResourceUpdateNotSupportedError, E as isMarkedNotGone, En as ResourceTimeoutError, Fn as normalizeAwsError, Gt as formatLockExpiry, Ht as buildForceUnlockCommand, I as remedyLogicalId, In as withErrorHandling, Jn as shellBoundedDisplay, Kn as plainOrDescribed, Kt as formatLockOperation, Ln as TIMEOUT_FLAG_RESOURCE_TYPE, Mn as formatError, O as assertRegionMatch, On as StackHasActiveImportsError, Qn as setPasteableVerbFlags, Qt as injectiveKey, Sn as MalformedProducerRecordRefusalError, Sr as isThrottlingError, T as RESOURCE_NOT_FOUND, Tn as ProvisioningError, Un as isInertUnquoted, Ut as buildLockContentionMessage, Vn as commandHole, Vt as UNREPRODUCIBLE_LOCK_CLAUSE, Wn as pasteableCommand, Wt as forceQuitRecoveryClause, Xn as withheldTargetClause, Xt as CUSTOM_RESOURCE_RESPONSE_PREFIX, Yn as shellQuote, Z as runDeleteAttempt, Zn as setPasteableRunFlags, Zt as DEFAULT_STATE_PREFIX, _n as IntrinsicResolutionRefusalError, _r as isRetryableTransientError, an as ambientCredentialConfig, bt as resourceTypeShown, cn as AccountIdUnavailableError, cr as escapeRegExp, dt as interruptWatchListenerCount, en as producerCoordinateKey, fn as CrossAccountSecretRefusalError, ft as isInterruptedWaitError, gn as DynamicReferenceRegionAmbiguousError, in as ambientClientDefaults, jn as SynthesisError, k as VALUE_NOT_SHOWN, kn as StackTerminationProtectionError, lr as stripControlChars, lt as beginCommandInterruptScope, mn as DeployCancelledError, mr as isAmbiguousOutcomeError, n as RESOLVED_PREVIOUS_PRINCIPAL_KEYS, nn as setPasteableAwsProfile, on as clientDefaultsFor, qn as quotedOrDescribed, qt as formatLockOwner, rn as withPasteableAwsProfile, rt as isAwsCliLiteral, s as readRecordedPrincipals, sn as credentialFingerprint, t as IAM_PRINCIPAL_NAME, tn as producerRecordKey, un as CdkdError, ur as stripForDisplay, ut as endCommandInterruptScope, vn as LocalInvokeBuildError$1, vr as isTransientServerError, vt as logicalIdShown, wn as PartialFailureError, xr as isMarkedNonRetryable, yn as LocalStartServiceError, yr as retryClassificationText, zn as SHELL_ACTIVE_WHY } from "./iam-policy-targets-TFGunWmV.js";
3
+ import { An as StateError, Cn as NestedStackChildDirectDestroyError, Cr as markNonRetryable, Dn as ResourceUpdateNotSupportedError, E as isMarkedNotGone, En as ResourceTimeoutError, Fn as normalizeAwsError, Gt as formatLockExpiry, Ht as buildForceUnlockCommand, I as remedyLogicalId, In as withErrorHandling, Jn as shellBoundedDisplay, Kn as plainOrDescribed, Kt as formatLockOperation, Ln as TIMEOUT_FLAG_RESOURCE_TYPE, Mn as formatError, O as assertRegionMatch, On as StackHasActiveImportsError, Qn as setPasteableVerbFlags, Qt as injectiveKey, Sn as MalformedProducerRecordRefusalError, Sr as isThrottlingError, T as RESOURCE_NOT_FOUND, Tn as ProvisioningError, Un as isInertUnquoted, Ut as buildLockContentionMessage, Vn as commandHole, Vt as UNREPRODUCIBLE_LOCK_CLAUSE, Wn as pasteableCommand, Wt as forceQuitRecoveryClause, Xn as withheldTargetClause, Xt as CUSTOM_RESOURCE_RESPONSE_PREFIX, Yn as shellQuote, Z as runDeleteAttempt, Zn as setPasteableRunFlags, Zt as DEFAULT_STATE_PREFIX, _n as IntrinsicResolutionRefusalError, _r as isRetryableTransientError, an as ambientCredentialConfig, bt as resourceTypeShown, cn as AccountIdUnavailableError, cr as escapeRegExp, dt as interruptWatchListenerCount, en as producerCoordinateKey, fn as CrossAccountSecretRefusalError, ft as isInterruptedWaitError, gn as DynamicReferenceRegionAmbiguousError, in as ambientClientDefaults, jn as SynthesisError, k as VALUE_NOT_SHOWN, kn as StackTerminationProtectionError, lr as stripControlChars, lt as beginCommandInterruptScope, mn as DeployCancelledError, mr as isAmbiguousOutcomeError, n as RESOLVED_PREVIOUS_PRINCIPAL_KEYS, nn as setPasteableAwsProfile, on as clientDefaultsFor, qn as quotedOrDescribed, qt as formatLockOwner, rn as withPasteableAwsProfile, rt as isAwsCliLiteral, s as readRecordedPrincipals, sn as credentialFingerprint, t as IAM_PRINCIPAL_NAME, tn as producerRecordKey, un as CdkdError, ur as stripForDisplay, ut as endCommandInterruptScope, vn as LocalInvokeBuildError$1, vr as isTransientServerError, vt as logicalIdShown, wn as PartialFailureError, xr as isMarkedNonRetryable, yn as LocalStartServiceError, yr as retryClassificationText, zn as SHELL_ACTIVE_WHY } from "./iam-policy-targets-D94wh05t.js";
4
4
  import { a as setAssumedRoleCredentials, d as formatAuthority, i as getPreAssumeEnvCredentials, n as awsClientDefaults, r as getAssumedRoleCredentials, u as runInStackAwsScope } from "./aws-client-defaults-BX9Y_fKp.js";
5
- import { $ as inheritedProvenanceForChildDiff, $a as isStalePlaceholderArnAttribute, $c as carriesSecretMask, $i as deleteIndeterminateGuards, $l as readBootstrapMarkerBody, $n as exportNameSecretExposure, $o as refuseMalformedResourceEntriesForImport, $r as secretNamePrintingBag, $t as readRefactorMarker, $u as parseFailureDebugDetail, Aa as assertSendableRoleArn, Ac as recordLogOnlyValue, Al as isReadableBag, Ao as malformedOrphansWarning, Ar as green, As as isStatefulRecreateTargetSync, At as dropSettledNestedJournals, Au as resolveCaptureObservedState, Ba as producerRegionsFromState, Bc as DYNAMIC_REFERENCE_TOKEN_SCAN, Bi as readsNoEchoDeleteValues, Bl as stringifyValue, Bn as withNameGenerationReached, Bo as refuseDivergentRecordRegionForDestroy, Br as supersededHolderOf, Bt as deleteJournaledOrphans, Bu as MIGRATE_TMP_PREFIX, Ca as refuseUnreadableCdkCrossAccountRefs, Cc as carryLogOnlyValues, Cl as describeRegionValueKind, Cn as seedsDeleteFirstGuard, Co as malformedLocalOutputsWarning, Cr as destroyStackRecordsView, Ct as pendingRequestCount, Cu as Synthesizer, Da as recordedReferenceRegions, Dc as logOnlyValueCount, Dl as hasUnverifiableParameterRefusal, Dn as inheritProducerRegions, Do as malformedOrphanRecordsWarning, Dr as bold, Ds as shownType, Dt as NESTED_PENDING_PARENT_REASON, Du as loadCdkJson, Ea as recordedOutputReferenceRegions, Ec as literalSplitDelimitersOf, El as hasReasonlessBaselineRefusal, Eo as malformedOrphanRecordsRefusalMessage, Es as findReplacedReadersOfRecreateTargets, Et as recordRetainedForReadoption, Eu as getLegacyStateBucketName, Fa as applyCallerIdentityCredentials, Fc as maskSecretsInError, Fi as ccBrokenReason, Fl as PhaseClock, Fn as nameGenerationHighWaterOf, Fo as malformedResourcePropertiesWarning, Fr as holdsSupersededResources, Ft as revertedNestedRowIds, Fu as stateBucketExistenceConfirmed, Ga as getAccountInfo, Gc as identityKeyFor, Gi as applyCustomResourceResponseExpiration, Gl as rewriteTemplateAssetReferences, Gn as WITHHELD_NAME_DISPLAY, Go as refuseMalformedOrphansForDestroy, Gr as noEchoExactEchoLeavesOf, Gt as loadJournaledOrphans, Gu as expectedOwnerParam, Ha as coerceParameterTypedValue, Hc as isUncertifiedBaselineMaskPosition, Hl as buildAssetRedirectMap, Hn as namesAnyDeclaredParameter, Ho as refuseMalformedOrphanRecords, Hr as withoutSuperseded, Ht as dropFailedHint, Hu as uploadCfnTemplate, Ia as callerEnvCredentials, Ic as maskSecretsInText, Ii as isCustomResource, Il as renderPhaseTimings, In as nameScopeOf, Io as malformedResourcesWarning, Ir as isSupersededResourceRecord, It as withNestedRevertRun, Iu as warnDeprecatedNoPrefixCliFlag, Ja as carriesFetchableDynamicReference, Ji as slowCcOperationTimeoutMs, Jl as assertAssetBucketRegion, Jn as secretBearing, Jo as refuseMalformedOutputsForDestroy, Jr as completedReplayEntries, Js as templateResourceTypes, Jt as formatResourceLine, Ju as derivePartitionAndUrlSuffix, Ka as isImpossibleEmptyStoredAttribute, Kc as inheritNestedStackParameterAssociations, Ki as customResourceResponseExpirationWarning, Kl as AssetModeResolver, Kn as displayTextOrWithheld, Ko as refuseMalformedOrphansForOrphan, Kr as noEchoParameterNamesOf, Kt as makeForeignHolderScan, Ku as PARTITION_TABLE, La as envCredentialsAreAssumedRole, Lc as scrubResourceRecord, Li as wouldReturnToSdkProvider, Ll as timePhase, Ln as retiredAfterRollback, Lo as malformedScrubResourceEntriesRefusalMessage, Lr as removeSuperseded, Lt as collectNestedChildUnaddressed, Lu as ssmResolvedValueType, Ma as isIamRoleArn, Mc as unionOfSecretBags, Ml as orphansCarriedFrom, Mn as updatePartialMessage, Mo as malformedOutputsWarning, Mr as yellow, Mt as nestedChildStackName$1, Mu as resolveStateBucketWithDefault, Na as sendableAssumeRoleCommand, Nc as createSecretMasker, Ni as CC_BROKEN_REASON, Nl as shouldRetainResource, Nn as updatePartialReason, No as malformedRenderedContainersWarning, Nr as addSuperseded, Nt as recordDisplacedSkips, Nu as resolveStateBucketWithDefaultAndSource, Oa as applyRoleArnIfSet, Oc as printingCorpusOf, Ol as importableOutputKeys, Oo as malformedOrphanRowsKeptWarning, Or as cyan, Os as MULTI_REGION_RECREATE_BLOCKED_TYPES, Ot as displacedOpClause, Ou as resolveApp, Pa as AWS_CREDENTIAL_ENV_KEYS, Pc as errorCauseChain, Pi as ProviderRegistry, Pl as stackInstanceIdCarriedFrom, Pn as nameGenerationCarriedFrom, Po as malformedResourceEntriesWarning, Pr as deleteSupersededEntry, Pu as resolveUseCdkBootstrapAssets, Q as crossStackOutputProvenanceSource, Qa as cfnRefValueFromPhysicalId, Qc as splitGetAttStringForm, Qi as UNSPECIFIED_SKIP_REASON, Ql as parseBootstrapMarker, Qn as exportNameNoEchoParameters, Qo as refuseMalformedResourceEntriesForDestroy, Qr as orphanRecordsPrintingBag, Qu as describeJsonParseFailure, Ra as classifyRecordedSecretRegion, Rc as withPhysicalNameCopies, Rl as AssetPublisher, Rn as retiredNameGenerationsAfter, Ro as malformedStateRefusalMessage, Rr as supersededAfterRollback, Rt as getCurrentNestedStackContext, Ru as CFN_TEMPLATE_BODY_LIMIT, Sa as producerLookupOver, Sl as acceptedCreateOnlyDropsOf, Sn as resolveReplacementOldType, So as malformedExportSourceWarning, Ss as unwrittenCreateOnlyReplacement, St as planOrphanAdoption, Su as getDockerImageBySourceHash, Tc as hasMaskableValues, Tl as hasReadableExportSet, Tn as findNestedStackTypeChanges, To as malformedLocalResourcesWarning, Tr as withStackRecords, Ts as hasNoCloudControlHandlers, Tt as keptForRetainedRecord, Tu as getDefaultStateBucketName, Ua as isUnboundTemplateParameter, Uc as pathCrossesDottedKey, Ui as withPrintingSecrets, Ul as createAssetRedirectResolver, Un as reachableDivergentParameters, Uo as refuseMalformedOrphanRecordsForDestroy, Ur as noEchoAttributeNamesOf, Ut as isHandledOrphan, Uu as CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION, Va as regionLessSecretName, Vc as dynamicReferenceTokens, Vi as isCustomResourceType$1, Vl as WorkGraph, Vn as computeParameterTaint, Vr as supersededResourcesOf, Vt as dropFailedCommands, Vu as findLargeInlineResources, Wa as parameterTypeMayLoseSecretIdentity, Wc as spelledKeysOf, Wi as CUSTOM_RESOURCE_RESPONSE_LIFECYCLE_RULE_ID, Wl as loadPublishableAssetManifest, Wn as resourcesNamingDeclaredParameter, Wo as refuseMalformedOrphans, Wr as noEchoComparisonForTemplate, Wt as journaledOrphanLines, Wu as decodeListingKey, X as IMPLICIT_DELETE_DEPENDENCIES, Xa as keepsSecretReferenceToken, Xl as getBootstrapMarkerKey, Xn as secretSafeKeyDisplay, Xo as refuseMalformedResourceEntries, Xr as maskEventTextWithBoundBags, Xs as withRetry, Xu as StageLoadError, Ya as isNamelessDynamicReferenceError, Yc as physicalNameCopiesOf, Yl as ensureAssetStorage, Yn as secretBearingStateKeyWarning, Yo as refuseMalformedResourceAttributesForOrphan, Yr as journaledOrphanPrintingBag, Ys as describeTypeWithThrottleRetry, Yu as AssemblyReader, Z as computeImplicitDeleteEdges, Za as AWS_NO_VALUE, Zc as recordPhysicalNameCopy, Zi as RollbackInlinePolicyWriters, Zl as isCrossRegionRedirect, Zn as carriedExportAliasExposure, Zo as refuseMalformedResourceEntriesForDeploy, Zr as namingSecretsWithRecordedNoEcho, Zu as processStackMessages, _c as valueAtCoordinate, _i as withCreateTokenLedger, _l as isAccessDenied, _n as planFailedOps, _o as hasReadableResources, _r as isPairableType, _s as unreadableOrphanRecords, _t as isSecretBearingReferenceString, _u as redactedDockerCause, a as isProtectionValueActive, ac as isMarkedCoordinate, ad as ownValue, ai as ATOMIC_FINAL_SNAPSHOT_TYPES, al as recordProvenPublicExpression, an as updateRefactorMarker, ar as bindingSkippedOutputs, as as refuseMalformedResourcePropertiesForOrphan, at as isAbsoluteAssetPath, au as describeDockerCapturedOutput, bc as redactForState, bi as DeploymentEventsStore, bl as withStackInstanceIdWithheld, bn as recordUnderIdIsNotOwn, bo as malformedDriftResourcePropertiesWarning, br as parseMappingFile, bs as findActionableSilentDrops, bt as makeCanonicalizePropertiesFn, bu as warnFinchArgvExposure, cc as maskWholeValue, cd as displayAssemblyPath, ci as ccRoutedFinalSnapshotError, cl as isSingleDynamicReferenceToken, cn as pendingMovesRefusalMessage, co as STATE_REGION_DIVERGED, cr as maskingRetryLogger, cs as refuseMalformedResourcesForExport, ct as templateIdentity, cu as dockerSpawnEnvWithSensitive, da as DiffCalculator, dc as noEchoLeavesOf, dd as injectAwsRegion, di as isFinalSnapshotError, dl as S3StateBackend, dn as replayRollback, do as UNREADABLE_RESOURCES_MAP_ROW, dr as formatDestructiveChange, ds as repairMalformedOrphansForReadOnly, dt as parentSuppliedValues, du as getDockerCmd, ea as deleteLeftInPlace, ed as utf8ByteLength, ei as secretNamePrintingBags, el as provenPublicValue, en as readRefactorMarkerOnce, eo as lacksRecordedTableArn, er as isWholeDynamicReferenceValue, es as refuseMalformedResourceEntriesForImportSave, et as deferredServiceTokenWarning, eu as validateAssetBucketName, fa as INTRINSIC_KEYS, fc as noEchoOutputsComparison, fd as injectedAwsRegionValue, fi as refusesFinalSnapshot, fl as rebuildClientForBucketRegion, fn as removeProtectionTypeList, fo as accountArgs, fr as findRefactorHints, fs as repairMalformedOutputsForReadOnly, ft as readRecordedConditionVerdicts, fu as isDockerClientEnvKey, gc as recordedNoEchoValuesOf, gl as crossPrefixDeniedWarning, gn as isReplacementOrphan, go as hasReadableOutputs, gr as withMovedTo, gs as unpreviewableOrphanRecords, gt as diffSecurity, gu as redactedCause, hc as readsNoEchoSource, hi as ledgerForStack, hl as applyCrossPrefixScan, hn as isJournaledOrphan, ho as hasReadableOrphans, hr as rollbackOrphanIds, hs as repairMalformedResourcesForReadOnly, ht as withResourceDeadline, hu as redactDockerArgvValues, i as PROTECTION_PROPERTY_BY_TYPE, ic as canonicalCoordinates, id as nullPrototypeRecord, ii as storedSecretNameNeedles, il as recordNoEchoParameterFreshValue, in as sameMove, io as parameterInputsFor, ir as isExportAliasCollision, is as refuseMalformedResourcePropertiesForExport, it as findNestedTemplateTreeDefect, iu as resolveDockerContextDirectory, ja as explicitRoleArnOrThrow, jc as shareLogOnlyValues, jl as orphansAfterRollback, jo as malformedOutputsRefusalMessage, jr as red, js as renderStatefulReason, ju as resolveSkipPrefix, ka as assertFlagRoleArn, kc as recordLogOnlyParameterValue, kl as importableOutputs, ko as malformedOrphansRefusalMessage, kr as gray, ks as isStatefulRecreateTargetForReplace, kt as displacedPhysicalIdShown, ku as resolveAutoAssetStorage, lc as maskedLeafCoordinatesOf, ld as renderAssemblyPathEscape, li as createPreDeleteFinalSnapshot, ll as LockManager, ln as refusePendingMovesOut, lo as STATE_RESOURCES_MALFORMED, lr as constructPathOf$1, ls as refuseMalformedState, lt as conditionFingerprint, lu as finchSecretArgvRefusal, ma as poisonRenderedSpellingsCollidingIn, mc as readbackPathFor, md as resolveBucketRegion, ml as CrossPrefixScanCache, mn as demoteSupersededOrphans, mo as displayLogicalId, mr as movedToHint, ms as repairMalformedResourcePropertiesForReadOnly, mu as partitionSensitiveEnv, n as recordedProtectionEvidence, nc as DagBuilder, nd as hasOwnKey, ni as secretNamedRecordNeedles, nl as recordMaskOnlyValuesIn, nn as refactorMarkerRefusalMessage, nr as collectDeclaredOutputNames, ns as refuseMalformedResourcePropertiesForDestroy, nt as serviceTokenBlockingReason, nu as buildDenyExternalAccessPolicy, o as perType, oc as maskAtCoordinates, od as absoluteAssemblyPathEscape, oi as PRE_DELETE_SNAPSHOT_TYPES, ol as wholeStringLeavesOf, on as hasPendingMovesOut, oo as declaresNoEcho, or as DEFAULT_RESOURCE_TIMEOUT_MS, os as refuseMalformedResourcesForDeploy, ot as listNestedTemplateRows, ou as describeDockerExecFailure, pa as IntrinsicFunctionResolver, pi as unsupportedFinalSnapshotError, pl as CrossPrefixReadError, pn as recordAfterRollbackUpdate, po as deployRefusesOrphanRowsReason, pr as hintSidesOf, ps as repairMalformedResourceEntriesForReadOnly, pu as isMalformedEnvKey, qa as carriesDynamicReference, qc as recordNestedStackParameterExpressions, qi as CloudControlProvider, ql as BOOTSTRAP_MARKER_PREFIX, qn as exportAliasCollisionScrubWarning, qo as refuseMalformedOutputs, qr as createReadOnlyAttributeHealerFactory, qs as prefetchCreateOnlyPropertyPaths, qt as sameJournaledOrphans, qu as canonicalizeRegion, r as recordedProtectionNote, ra as isWaitAbandonedError, rc as TemplateParser, rd as hasPlainPrototype, ri as stateSecretNameNeedles, rl as recordNoEchoAttributeValues, rn as refuseRefactorMarker, ro as withSharedDrainBudget, rr as collectPublishedOutputNames, rs as refuseMalformedResourcePropertiesForDrift, rt as childTemplateLoader, ru as buildDockerImage, s as readProtection, sc as maskReadbackAtCoordinates, sd as describeFileReadFailure, si as buildFinalSnapshotIdentifier, sl as WHOLE_DYNAMIC_REFERENCE_PATTERN, sn as pendingMovesOutOf, so as JSON_LISTING_HOLE_VALUE, sr as DEFAULT_RESOURCE_WARN_AFTER_MS, ss as refuseMalformedResourcesForDestroy, st as renderNestedTemplateTreeDefect, su as describeDockerFailure, t as DeployEngine, ta as deleteSkipReason, td as defineOwnKey, tl as recordMaskOnlyValue, tn as refactorMarkerMovesOf, to as refStateLookupFromResource, tr as noEchoParameterValueSeed, ts as refuseMalformedResourceEntriesForOrphan, tt as findServiceTokenRefusals, tu as validateContainerRepoName, uc as noEchoCoordinatesOf, ud as resolveAssemblyPath, ui as effectiveDeletionPolicy, ul as isLockInfoExpired, un as replayFailedOperations, uo as UNREADABLE_ORPHANS_CONTAINER_ROW, ur as findDestructiveChanges, us as repairMalformedOrphanRecordsForReadOnly, ut as conditionInputsFrom, uu as formatDockerLoginError, vc as liveMatchesUnresolvedTokenFrame, vl as isNotImplemented, vn as planRollback, vo as isReadableOrphanRecord, vr as looselyEqual, vs as unreadableResourceEntries, vt as keptWholeReasonText, vu as runDockerForeground, wa as keepHeldTokenProvenance, wc as createUnionSecretMasker, wl as exportNamesCarriedFrom, wn as orphanNeedsIdentity, wo as malformedLocalResourceEntriesWarning, ws as NO_CC_HANDLERS_REASON, wt as resolvePendingCloudControlRequests, wu as synthesisStatusMessage, xa as resolveDynamicReferences, xi as extractDeploymentEventError, xl as splitImportedOps, xn as replacementNeverSwapped, xo as malformedExportNamesWarning, xr as proposeRenames, xt as makeSiblingClaimReader, xu as AssetManifestLoader, yi as DeploymentEventsReader, yl as stackInstanceIdOf, yn as recheckFailedPlan, yo as isReadableResourceEntry, yr as mappingPairs, ys as withheldAccountClause, yt as mergeNoChangeOutputs, yu as runDockerStreaming, za as classifyReplaySecretRegion, zi as TemplateNoEchoReresolver, zl as isSensitiveAttributeName, zn as retiredNameGenerationsLeaving, zo as previewableOrphanRecords, zr as supersededHeldByOtherTypeWarning, zt as withNestedStackContext, zu as CFN_TEMPLATE_URL_LIMIT } from "./deploy-engine-DSpxEUjC.js";
6
- import { t as getCdkdVersion } from "./version-DzajQDkv.js";
5
+ import { $ as computeImplicitDeleteEdges, $a as coerceParameterTypedValue, $c as DYNAMIC_REFERENCE_TOKEN_SCAN, $i as applyCustomResourceResponseExpiration, $l as stringifyValue, $n as WITHHELD_NAME_DISPLAY, $o as refuseMalformedOrphanRecords, $r as noEchoExactEchoLeavesOf, $u as MIGRATE_TMP_PREFIX, Ac as valueAtCoordinate, Al as isAccessDenied, An as resolveReplacementOldType, Ao as isReadableResourceEntry, As as withheldAccountClause, At as displacedOpClause, Au as redactedDockerCause, Ba as assertFlagRoleArn, Bc as logOnlyValueCount, Bl as hasUnverifiableParameterRefusal, Bn as updatePartialMessage, Bo as malformedOrphansRefusalMessage, Br as yellow, Bs as isStatefulRecreateTargetForReplace, Bt as getCurrentNestedStackContext, Bu as loadCdkJson, Ca as withoutUnsettledProperties, Cc as noEchoCoordinatesOf, Cd as resolveAssemblyPath, Ci as ledgerForStack, Cl as isLockInfoExpired, Cn as isJournaledOrphan, Co as accountArgs, Cr as rollbackOrphanIds, Cs as repairMalformedOutputsForReadOnly, Ct as makeSiblingClaimReader, Cu as formatDockerLoginError, Dc as readbackPathFor, Dd as resolveBucketRegion, Di as DeploymentEventsReader, Dl as CrossPrefixScanCache, Dn as recheckFailedPlan, Do as hasReadableOutputs, Dr as mappingPairs, Ds as unpreviewableOrphanRecords, Dt as keptForRetainedRecord, Du as partitionSensitiveEnv, El as CrossPrefixReadError, En as planRollback, Eo as hasReadableOrphans, Er as looselyEqual, Es as repairMalformedResourcesForReadOnly, Et as resolvePendingCloudControlRequests, Eu as isMalformedEnvKey, Fa as keepHeldTokenProvenance, Fl as acceptedCreateOnlyDropsOf, Fn as inheritProducerRegions, Fo as malformedLocalResourceEntriesWarning, Fr as bold, Fs as NO_CC_HANDLERS_REASON, Ft as recordDisplacedSkips, Fu as getDockerImageBySourceHash, Ga as AWS_CREDENTIAL_ENV_KEYS, Gc as unionOfSecretBags, Gi as wouldReturnToSdkProvider, Gl as orphansCarriedFrom, Gn as retiredAfterRollback, Go as malformedResourceEntriesWarning, Gr as removeSuperseded, Gt as isHandledOrphan, Gu as resolveStateBucketWithDefault, Ha as explicitRoleArnOrThrow, Hc as recordLogOnlyParameterValue, Hi as ProviderRegistry, Hl as importableOutputs, Hn as nameGenerationCarriedFrom, Ho as malformedOutputsRefusalMessage, Hr as deleteSupersededEntry, Hs as renderStatefulReason, Ht as deleteJournaledOrphans, Hu as resolveAutoAssetStorage, Ic as carryLogOnlyValues, Il as describeRegionValueKind, Io as malformedLocalResourcesWarning, Ir as cyan, Is as hasNoCloudControlHandlers, Iu as Synthesizer, Ja as envCredentialsAreAssumedRole, Jc as maskSecretsInError, Ji as readsNoEchoDeleteValues, Jl as PhaseClock, Jn as withNameGenerationReached, Jo as malformedScrubResourceEntriesRefusalMessage, Jr as supersededHolderOf, Jt as makeForeignHolderScan, Ju as stateBucketExistenceConfirmed, Ka as applyCallerIdentityCredentials, Kc as createSecretMasker, Kl as shouldRetainResource, Kn as retiredNameGenerationsAfter, Ko as malformedResourcePropertiesWarning, Kr as supersededAfterRollback, Kt as journaledOrphanLines, Ku as resolveStateBucketWithDefaultAndSource, La as recordedOutputReferenceRegions, Lc as createUnionSecretMasker, Ll as exportNamesCarriedFrom, Lo as malformedOrphanRecordsRefusalMessage, Lr as gray, Ls as findReplacedReadersOfRecreateTargets, Lt as revertedNestedRowIds, Lu as synthesisStatusMessage, Ma as resolveDynamicReferences, Ml as stackInstanceIdOf, Mn as orphanNeedsIdentity, Mo as malformedExportNamesWarning, Mt as dropSettledNestedJournals, Mu as runDockerStreaming, Na as producerLookupOver, Nc as redactForState, Nl as withStackInstanceIdWithheld, Nn as findNestedStackTypeChanges, No as malformedExportSourceWarning, Nr as withStackRecords, Ns as unwrittenCreateOnlyReplacement, Nu as warnFinchArgvExposure, Oc as readsNoEchoSource, Oi as DeploymentEventsStore, Ol as applyCrossPrefixScan, On as recordUnderIdIsNotOwn, Oo as hasReadableResources, Or as parseMappingFile, Os as unreadableOrphanRecords, Ot as recordRetainedForReadoption, Ou as redactDockerArgvValues, Pa as refuseUnreadableCdkCrossAccountRefs, Pl as splitImportedOps, Po as malformedLocalOutputsWarning, Pt as nestedChildStackName$1, Pu as AssetManifestLoader, Q as IMPLICIT_DELETE_DEPENDENCIES, Qa as regionLessSecretName, Qi as CUSTOM_RESOURCE_RESPONSE_LIFECYCLE_RULE_ID, Ql as isSensitiveAttributeName, Qn as resourcesNamingDeclaredParameter, Qr as noEchoComparisonForTemplate, Qu as CFN_TEMPLATE_URL_LIMIT, Ra as recordedReferenceRegions, Rc as hasMaskableValues, Rl as hasReadableExportSet, Ro as malformedOrphanRecordsWarning, Rr as green, Rs as shownType, Rt as withNestedRevertRun, Ru as getDefaultStateBucketName, Sa as withUnsettledProperties, Sc as maskedLeafCoordinatesOf, Sd as renderAssemblyPathEscape, Sl as LockManager, Sn as demoteSupersededOrphans, So as UNREADABLE_RESOURCES_MAP_ROW, Sr as movedToHint, Ss as repairMalformedOrphansForReadOnly, St as makeCanonicalizePropertiesFn, Su as finchSecretArgvRefusal, Ta as poisonRenderedSpellingsCollidingIn, Tc as noEchoOutputsComparison, Td as injectedAwsRegionValue, Ti as withCreateTokenLedger, Tl as rebuildClientForBucketRegion, Tn as planFailedOps, To as displayLogicalId, Tr as isPairableType, Ts as repairMalformedResourcePropertiesForReadOnly, Tt as pendingRequestCount, Tu as isDockerClientEnvKey, Ua as isIamRoleArn, Uc as recordLogOnlyValue, Ui as ccBrokenReason, Ul as isReadableBag, Un as nameGenerationHighWaterOf, Uo as malformedOutputsWarning, Ur as holdsSupersededResources, Ut as dropFailedCommands, Uu as resolveCaptureObservedState, Va as assertSendableRoleArn, Vc as printingCorpusOf, Vi as CC_BROKEN_REASON, Vl as importableOutputKeys, Vn as updatePartialReason, Vo as malformedOrphansWarning, Vr as addSuperseded, Vs as isStatefulRecreateTargetSync, Vt as withNestedStackContext, Vu as resolveApp, Wa as sendableAssumeRoleCommand, Wc as shareLogOnlyValues, Wi as isCustomResource, Wl as orphansAfterRollback, Wn as nameScopeOf, Wo as malformedRenderedContainersWarning, Wr as isSupersededResourceRecord, Wt as dropFailedHint, Wu as resolveSkipPrefix, Xa as classifyReplaySecretRegion, Xc as scrubResourceRecord, Xl as timePhase, Xn as namesAnyDeclaredParameter, Xo as previewableOrphanRecords, Xr as withoutSuperseded, Xt as formatResourceLine, Xu as ssmResolvedValueType, Ya as classifyRecordedSecretRegion, Yc as maskSecretsInText, Yi as isCustomResourceType$1, Yl as renderPhaseTimings, Yn as computeParameterTaint, Yo as malformedStateRefusalMessage, Yr as supersededResourcesOf, Yt as sameJournaledOrphans, Yu as warnDeprecatedNoPrefixCliFlag, Za as producerRegionsFromState, Zc as withPhysicalNameCopies, Zi as withPrintingSecrets, Zl as AssetPublisher, Zn as reachableDivergentParameters, Zo as refuseDivergentRecordRegionForDestroy, Zr as noEchoAttributeNamesOf, Zu as CFN_TEMPLATE_BODY_LIMIT, _c as canonicalCoordinates, _d as nullPrototypeRecord, _i as createPreDeleteFinalSnapshot, _l as recordNoEchoParameterFreshValue, _n as withUnprovenUnsettled, _o as declaresNoEcho, _r as constructPathOf$1, _s as refuseMalformedResourcesForDeploy, _t as withResourceDeadline, _u as resolveDockerContextDirectory, a as isProtectionValueActive, aa as RollbackInlinePolicyWriters, ac as templateResourceTypes, ad as PARTITION_TABLE, ai as namingSecretsWithRecordedNoEcho, al as inheritNestedStackParameterAssociations, an as refuseRefactorMarker, ao as carriesFetchableDynamicReference, ar as carriedExportAliasExposure, as as refuseMalformedOutputsForDestroy, at as childTemplateLoader, au as AssetModeResolver, ba as INTRINSIC_KEYS, bc as maskReadbackAtCoordinates, bd as describeFileReadFailure, bi as refusesFinalSnapshot, bl as WHOLE_DYNAMIC_REFERENCE_PATTERN, bn as equalModuloMask, bo as STATE_RESOURCES_MALFORMED, br as findRefactorHints, bs as refuseMalformedState, bt as keptWholeReasonText, bu as describeDockerFailure, ca as deleteLeftInPlace, cd as AssemblyReader, ci as secretNamePrintingBags, cl as physicalNameCopiesOf, cn as hasPendingMovesOut, co as AWS_NO_VALUE, cr as isWholeDynamicReferenceValue, cs as refuseMalformedResourceEntriesForDeploy, ct as listNestedTemplateRows, cu as ensureAssetStorage, da as isWaitAbandonedError, dd as describeJsonParseFailure, di as stateSecretNameNeedles, dl as splitGetAttStringForm, dn as refusePendingMovesOut, do as lacksRecordedTableArn, dr as collectPublishedOutputNames, ds as refuseMalformedResourceEntriesForImportSave, dt as conditionFingerprint, du as parseBootstrapMarker, ea as customResourceResponseExpirationWarning, ed as findLargeInlineResources, ei as noEchoParameterNamesOf, el as dynamicReferenceTokens, eo as isUnboundTemplateParameter, er as displayTextOrWithheld, es as refuseMalformedOrphanRecordsForDestroy, et as crossStackOutputProvenanceSource, eu as WorkGraph, fd as parseFailureDebugDetail, fi as storedSecretNameNeedles, fl as carriesSecretMask, fn as replayFailedOperations, fo as refStateLookupFromResource, fr as isExportAliasCollision, fs as refuseMalformedResourceEntriesForOrphan, ft as conditionInputsFrom, fu as readBootstrapMarkerBody, gc as TemplateParser, gd as hasPlainPrototype, gi as ccRoutedFinalSnapshotError, gl as recordNoEchoAttributeValues, gn as settleUnsettledPrevious, gr as maskingRetryLogger, gs as refuseMalformedResourcePropertiesForOrphan, gu as buildDockerImage, hc as DagBuilder, hd as hasOwnKey, hi as buildFinalSnapshotIdentifier, hl as recordMaskOnlyValuesIn, hn as recordAfterRollbackUpdate, ho as parameterInputsFor, hr as DEFAULT_RESOURCE_WARN_AFTER_MS, hs as refuseMalformedResourcePropertiesForExport, hu as buildDenyExternalAccessPolicy, i as PROTECTION_PROPERTY_BY_TYPE, ic as prefetchCreateOnlyPropertyPaths, id as expectedOwnerParam, ii as maskEventTextWithBoundBags, il as identityKeyFor, in as refactorMarkerRefusalMessage, io as carriesDynamicReference, ir as secretSafeKeyDisplay, is as refuseMalformedOutputs, it as serviceTokenBlockingReason, iu as rewriteTemplateAssetReferences, jc as liveMatchesUnresolvedTokenFrame, jl as isNotImplemented, jn as seedsDeleteFirstGuard, jo as malformedDriftResourcePropertiesWarning, jr as destroyStackRecordsView, js as findActionableSilentDrops, jt as displacedPhysicalIdShown, ju as runDockerForeground, kc as recordedNoEchoValuesOf, ki as extractDeploymentEventError, kl as crossPrefixDeniedWarning, kn as replacementNeverSwapped, ko as isReadableOrphanRecord, kr as proposeRenames, ks as unreadableResourceEntries, kt as NESTED_PENDING_PARENT_REASON, ku as redactedCause, la as deleteSkipReason, ld as StageLoadError, ln as pendingMovesOutOf, lo as cfnRefValueFromPhysicalId, lr as noEchoParameterValueSeed, ls as refuseMalformedResourceEntriesForDestroy, lt as renderNestedTemplateTreeDefect, lu as getBootstrapMarkerKey, md as defineOwnKey, mi as PRE_DELETE_SNAPSHOT_TYPES, ml as recordMaskOnlyValue, mn as removeProtectionTypeList, mo as withSharedDrainBudget, mr as DEFAULT_RESOURCE_TIMEOUT_MS, ms as refuseMalformedResourcePropertiesForDrift, mt as readRecordedConditionVerdicts, mu as validateContainerRepoName, n as recordedProtectionEvidence, na as slowCcOperationTimeoutMs, nd as CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION, ni as completedReplayEntries, nl as pathCrossesDottedKey, nn as readRefactorMarkerOnce, no as getAccountInfo, nr as secretBearing, ns as refuseMalformedOrphansForDestroy, nt as deferredServiceTokenWarning, nu as createAssetRedirectResolver, o as perType, oa as UNSPECIFIED_SKIP_REASON, oc as describeTypeWithThrottleRetry, od as canonicalizeRegion, oi as orphanRecordsPrintingBag, ol as recordNestedStackParameterExpressions, on as sameMove, oo as isNamelessDynamicReferenceError, or as exportNameNoEchoParameters, os as refuseMalformedResourceAttributesForOrphan, ot as findNestedTemplateTreeDefect, ou as BOOTSTRAP_MARKER_PREFIX, pd as utf8ByteLength, pi as ATOMIC_FINAL_SNAPSHOT_TYPES, pl as provenPublicValue, pn as replayRollback, pr as bindingSkippedOutputs, ps as refuseMalformedResourcePropertiesForDestroy, pt as parentSuppliedValues, pu as validateAssetBucketName, qa as callerEnvCredentials, qc as errorCauseChain, qi as TemplateNoEchoReresolver, ql as stackInstanceIdCarriedFrom, qn as retiredNameGenerationsLeaving, qo as malformedResourcesWarning, qr as supersededHeldByOtherTypeWarning, qt as loadJournaledOrphans, qu as resolveUseCdkBootstrapAssets, r as recordedProtectionNote, rd as decodeListingKey, ri as journaledOrphanPrintingBag, rl as spelledKeysOf, rn as refactorMarkerMovesOf, ro as isImpossibleEmptyStoredAttribute, rr as secretBearingStateKeyWarning, rs as refuseMalformedOrphansForOrphan, rt as findServiceTokenRefusals, ru as loadPublishableAssetManifest, s as readProtection, sa as deleteIndeterminateGuards, sc as withRetry, sd as derivePartitionAndUrlSuffix, si as secretNamePrintingBag, sn as updateRefactorMarker, so as keepsSecretReferenceToken, sr as exportNameSecretExposure, ss as refuseMalformedResourceEntries, st as isAbsoluteAssetPath, su as assertAssetBucketRegion, t as DeployEngine, ta as CloudControlProvider, td as uploadCfnTemplate, ti as createReadOnlyAttributeHealerFactory, tl as isUncertifiedBaselineMaskPosition, tn as readRefactorMarker, to as parameterTypeMayLoseSecretIdentity, tr as exportAliasCollisionScrubWarning, ts as refuseMalformedOrphans, tt as inheritedProvenanceForChildDiff, tu as buildAssetRedirectMap, ud as processStackMessages, ui as secretNamedRecordNeedles, ul as recordPhysicalNameCopy, un as pendingMovesRefusalMessage, uo as isStalePlaceholderArnAttribute, ur as collectDeclaredOutputNames, us as refuseMalformedResourceEntriesForImport, ut as templateIdentity, uu as isCrossRegionRedirect, vc as isMarkedCoordinate, vd as ownValue, vi as effectiveDeletionPolicy, vl as recordProvenPublicExpression, vn as calculateResourceDrift, vo as JSON_LISTING_HOLE_VALUE, vr as findDestructiveChanges, vs as refuseMalformedResourcesForDestroy, vt as diffSecurity, vu as describeDockerCapturedOutput, wa as IntrinsicFunctionResolver, wc as noEchoLeavesOf, wd as injectAwsRegion, wl as S3StateBackend, wn as isReplacementOrphan, wo as deployRefusesOrphanRowsReason, wr as withMovedTo, ws as repairMalformedResourceEntriesForReadOnly, wt as planOrphanAdoption, wu as getDockerCmd, xa as unsettledPropertiesOf, xc as maskWholeValue, xd as displayAssemblyPath, xi as unsupportedFinalSnapshotError, xl as isSingleDynamicReferenceToken, xn as undeclaredEmptyObservedKeys, xo as UNREADABLE_ORPHANS_CONTAINER_ROW, xr as hintSidesOf, xs as repairMalformedOrphanRecordsForReadOnly, xt as mergeNoChangeOutputs, xu as dockerSpawnEnvWithSensitive, ya as DiffCalculator, yc as maskAtCoordinates, yd as absoluteAssemblyPathEscape, yi as isFinalSnapshotError, yl as wholeStringLeavesOf, yn as equalModuloMarkedMask, yo as STATE_REGION_DIVERGED, yr as formatDestructiveChange, ys as refuseMalformedResourcesForExport, yt as isSecretBearingReferenceString, yu as describeDockerExecFailure, za as applyRoleArnIfSet, zc as literalSplitDelimitersOf, zl as hasReasonlessBaselineRefusal, zo as malformedOrphanRowsKeptWarning, zr as red, zs as MULTI_REGION_RECREATE_BLOCKED_TYPES, zt as collectNestedChildUnaddressed, zu as getLegacyStateBucketName } from "./deploy-engine-tQ0aqZMo.js";
6
+ import { t as getCdkdVersion } from "./version-9LVuCtBU.js";
7
7
  import { randomBytes, randomUUID } from "node:crypto";
8
8
  import { CopyObjectCommand, CreateBucketCommand, DeleteBucketCommand, DeleteObjectsCommand, GetBucketLocationCommand, GetObjectCommand, HeadBucketCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchBucket, NotFound, PutBucketEncryptionCommand, PutBucketPolicyCommand, PutBucketVersioningCommand, PutObjectCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
9
9
  import { GetRoleCommand, GetUserCommand } from "@aws-sdk/client-iam";
@@ -2710,7 +2710,7 @@ function collectCrossStackRefs(node, onRef, unconditional) {
2710
2710
  //#region src/provisioning/register-providers.ts
2711
2711
  let providerClasses;
2712
2712
  function loadProviderClasses() {
2713
- providerClasses ??= import("./provider-classes-d9K3vBVh.js");
2713
+ providerClasses ??= import("./provider-classes-DYke4HKr.js");
2714
2714
  return providerClasses;
2715
2715
  }
2716
2716
  function registerAllProviders(registry, classes) {
@@ -3557,7 +3557,7 @@ Force-quit: stack locks may not be released. If the next run reports a lock, run
3557
3557
  const syncValidation = validateRecreateTargets({
3558
3558
  template: stackInfo.template,
3559
3559
  state: stateForRecreateCheck?.state ?? {
3560
- version: 13,
3560
+ version: 14,
3561
3561
  stackName: stackInfo.stackName,
3562
3562
  region: stackRegion,
3563
3563
  resources: {},
@@ -3592,7 +3592,7 @@ Force-quit: stack locks may not be released. If the next run reports a lock, run
3592
3592
  const replacedReaders = await findReplacedReadersOfRecreateTargets({
3593
3593
  template: stackInfo.template,
3594
3594
  state: stateForRecreateCheck?.state ?? {
3595
- version: 13,
3595
+ version: 14,
3596
3596
  stackName: stackInfo.stackName,
3597
3597
  region: stackRegion,
3598
3598
  resources: {},
@@ -5001,7 +5001,7 @@ async function loadStateOrEmpty(stackName, region, stateBackend, refusalRecovery
5001
5001
  region,
5002
5002
  resources: {},
5003
5003
  outputs: {},
5004
- version: 13,
5004
+ version: 14,
5005
5005
  lastModified: Date.now()
5006
5006
  },
5007
5007
  unreadable: [],
@@ -6146,7 +6146,7 @@ function renderChangeLines(changes, logFn, ccApiRoutes, adoptedOrphans, refactor
6146
6146
  logFn(` [~] ${logicalId} (${change.resourceType})${annotateAdoption(logicalId)}${annotateRouting(logicalId)}`);
6147
6147
  if (change.propertyChanges && change.propertyChanges.length > 0) for (const propChange of change.propertyChanges) {
6148
6148
  const requiresReplace = propChange.requiresReplacement && (propChange.inPlacePropagated === true || propChange.replacementPropagated === true) ? " [may require replacement]" : propChange.requiresReplacement ? " [requires replacement]" : "";
6149
- const propagated = propChange.replacementPropagated ? " [replacement propagated]" : propChange.readProvenancePromoted === true ? " [read value moved upstream]" : propChange.inPlacePropagated ? " [attribute propagated]" : propChange.maskedExpressionChanged === true ? " [masked input or expression changed]" : "";
6149
+ const propagated = propChange.replacementPropagated ? " [replacement propagated]" : propChange.readProvenancePromoted === true ? " [read value moved upstream]" : propChange.inPlacePropagated ? " [attribute propagated]" : propChange.maskedExpressionChanged === true ? " [masked input or expression changed]" : propChange.unsettled === true ? " [unsettled after a failed update; sent again]" : "";
6150
6150
  const indent = " ";
6151
6151
  const [oldFiltered, newFiltered] = stripUnchangedValuePair(propChange.oldValue, propChange.newValue);
6152
6152
  const oldStr = renderDiffValue(propChange.oldValue, oldFiltered, indent, false);
@@ -9071,244 +9071,6 @@ function copiesOfParentRow(bag) {
9071
9071
  return copies === void 0 || copies.size === 0 ? {} : { inheritedPhysicalNameCopies: copies };
9072
9072
  }
9073
9073
 
9074
- //#endregion
9075
- //#region src/analyzer/drift-normalize.ts
9076
- function canonicalizeTagListsDeep(v) {
9077
- if (Array.isArray(v)) {
9078
- const mapped = v.map(canonicalizeTagListsDeep);
9079
- if (mapped.length > 0 && mapped.every((t) => t && typeof t === "object" && typeof t.Key === "string")) return [...mapped].sort((a, b) => {
9080
- const ka = a.Key;
9081
- const kb = b.Key;
9082
- if (ka !== kb) return ka < kb ? -1 : 1;
9083
- return JSON.stringify(a) < JSON.stringify(b) ? -1 : 1;
9084
- });
9085
- return mapped;
9086
- }
9087
- if (v && typeof v === "object") {
9088
- if (!hasPlainPrototype(v)) return v;
9089
- const out = nullPrototypeRecord();
9090
- for (const [k, val] of Object.entries(v)) out[k] = canonicalizeTagListsDeep(val);
9091
- return out;
9092
- }
9093
- return v;
9094
- }
9095
- const ID_RE = /^[a-z][a-z0-9]*-[0-9a-f]{6,}$/;
9096
- const isIdLike = (s) => typeof s === "string" && (s.startsWith("arn:") || ID_RE.test(s));
9097
- function canonicalizeIdArraysDeep(v) {
9098
- if (Array.isArray(v)) {
9099
- const mapped = v.map(canonicalizeIdArraysDeep);
9100
- if (mapped.length > 1 && mapped.every(isIdLike)) return [...mapped].sort((a, b) => a < b ? -1 : a > b ? 1 : 0);
9101
- return mapped;
9102
- }
9103
- if (v && typeof v === "object") {
9104
- if (!hasPlainPrototype(v)) return v;
9105
- const out = nullPrototypeRecord();
9106
- for (const [k, val] of Object.entries(v)) out[k] = canonicalizeIdArraysDeep(val);
9107
- return out;
9108
- }
9109
- return v;
9110
- }
9111
- const LEAF_ONLY_PATH_SUFFIX = "[]";
9112
- function matchesPathPrefix(path, entries) {
9113
- for (const entry of entries) {
9114
- if (entry.endsWith("[]")) {
9115
- const leaf = entry.slice(0, -2);
9116
- if (leaf !== "" && path === leaf) return true;
9117
- continue;
9118
- }
9119
- if (path === entry) return true;
9120
- if (path.startsWith(`${entry}.`)) return true;
9121
- }
9122
- return false;
9123
- }
9124
- function canonicalizeUnorderedArraysAtPaths(v, paths) {
9125
- if (paths.length === 0) return v;
9126
- return walkUnordered(v, "", paths);
9127
- }
9128
- function canonicalJson(v) {
9129
- if (Array.isArray(v)) return `[${v.map(canonicalJson).join(",")}]`;
9130
- if (v && typeof v === "object") {
9131
- const bag = v;
9132
- return `{${Object.keys(bag).filter((k) => bag[k] !== void 0).sort().map((k) => `${JSON.stringify(k)}:${canonicalJson(bag[k])}`).join(",")}}`;
9133
- }
9134
- return JSON.stringify(v) ?? "null";
9135
- }
9136
- const isPlainObjectElement = (el) => el !== null && typeof el === "object" && !Array.isArray(el);
9137
- function walkUnordered(v, path, paths) {
9138
- if (Array.isArray(v)) {
9139
- const mapped = v.map((el) => Array.isArray(el) ? el : walkUnordered(el, path, paths));
9140
- if (mapped.length > 1 && matchesPathPrefix(path, paths)) {
9141
- if (mapped.every((el) => typeof el === "string")) return [...mapped].sort((a, b) => a < b ? -1 : a > b ? 1 : 0);
9142
- if (mapped.every(isPlainObjectElement)) {
9143
- const keyed = mapped.map((el) => ({
9144
- el,
9145
- key: canonicalJson(el)
9146
- }));
9147
- keyed.sort((a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0);
9148
- return keyed.map((k) => k.el);
9149
- }
9150
- }
9151
- return mapped;
9152
- }
9153
- if (v && typeof v === "object") {
9154
- if (!hasPlainPrototype(v)) return v;
9155
- const out = nullPrototypeRecord();
9156
- for (const [k, val] of Object.entries(v)) out[k] = walkUnordered(val, path === "" ? k : `${path}.${k}`, paths);
9157
- return out;
9158
- }
9159
- return v;
9160
- }
9161
-
9162
- //#endregion
9163
- //#region src/analyzer/drift-calculator.ts
9164
- function calculateResourceDrift(stateProperties, awsProperties, options) {
9165
- const drifts = [];
9166
- const ignore = options?.ignorePaths ?? [];
9167
- const union = options?.unionWalkObjects ?? false;
9168
- const unordered = options?.unorderedPaths ?? [];
9169
- stateProperties = canonicalizeUnorderedArraysAtPaths(canonicalizeIdArraysDeep(canonicalizeTagListsDeep(stateProperties)), unordered);
9170
- awsProperties = canonicalizeUnorderedArraysAtPaths(canonicalizeIdArraysDeep(canonicalizeTagListsDeep(awsProperties)), unordered);
9171
- for (const key of Object.keys(stateProperties)) {
9172
- if (isIgnoredPath(key, ignore)) continue;
9173
- diffAt(key, stateProperties[key], awsProperties[key], drifts, ignore, union);
9174
- }
9175
- return drifts;
9176
- }
9177
- function undeclaredEmptyObservedKeys(observed, declared) {
9178
- const keys = [];
9179
- for (const key of Object.keys(observed)) {
9180
- if (Object.hasOwn(declared, key)) continue;
9181
- const value = observed[key];
9182
- if (value === null || value === void 0 || Array.isArray(value) && value.length === 0 || isPlainObject(value) && Object.keys(value).length === 0) keys.push(key);
9183
- }
9184
- return keys;
9185
- }
9186
- function isIgnoredPath(path, ignorePaths) {
9187
- return matchesPathPrefix(path, ignorePaths);
9188
- }
9189
- function diffAt(path, stateValue, awsValue, out, ignorePaths, unionWalkObjects) {
9190
- const stateForm = jsonForm(stateValue);
9191
- const awsForm = jsonForm(awsValue);
9192
- if (deepEqual(stateForm, awsForm)) return;
9193
- if (typeof stateValue === "string" && stateValue.includes("{{resolve:")) return;
9194
- if (isPlainObject(stateForm) && isPlainObject(awsForm) && !Array.isArray(stateForm) && !Array.isArray(awsForm)) {
9195
- const keys = unionWalkObjects ? /* @__PURE__ */ new Set([...Object.keys(stateForm), ...Object.keys(awsForm)]) : Object.keys(stateForm);
9196
- for (const key of keys) {
9197
- const childPath = `${path}.${key}`;
9198
- if (isIgnoredPath(childPath, ignorePaths)) continue;
9199
- diffAt(childPath, stateForm[key], awsForm[key], out, ignorePaths, unionWalkObjects);
9200
- }
9201
- return;
9202
- }
9203
- out.push({
9204
- path,
9205
- stateValue,
9206
- awsValue
9207
- });
9208
- }
9209
- function jsonForm(value) {
9210
- if (value === null || typeof value !== "object" || hasPlainPrototype(value)) return value;
9211
- const toJSON = value.toJSON;
9212
- return typeof toJSON === "function" ? toJSON.call(value) : value;
9213
- }
9214
- function deepEqual(a, b) {
9215
- a = jsonForm(a);
9216
- b = jsonForm(b);
9217
- if (a === b) return true;
9218
- if (a === null || b === null || a === void 0 || b === void 0) return a === b;
9219
- if (typeof a !== typeof b) return false;
9220
- if (typeof a !== "object") return false;
9221
- if (Array.isArray(a) || Array.isArray(b)) {
9222
- if (!Array.isArray(a) || !Array.isArray(b)) return false;
9223
- if (a.length !== b.length) return false;
9224
- return a.every((v, i) => deepEqual(v, b[i]));
9225
- }
9226
- const aObj = a;
9227
- const bObj = b;
9228
- const aKeys = Object.keys(aObj);
9229
- const bKeys = Object.keys(bObj);
9230
- if (aKeys.length !== bKeys.length) return false;
9231
- for (const key of aKeys) {
9232
- if (!Object.prototype.hasOwnProperty.call(bObj, key)) return false;
9233
- if (!deepEqual(aObj[key], bObj[key])) return false;
9234
- }
9235
- return true;
9236
- }
9237
- function equalModuloMask(state, aws, mask) {
9238
- const a = jsonForm(state);
9239
- const b = jsonForm(aws);
9240
- if (a === mask && b !== null && b !== void 0) return true;
9241
- if (a === b) return true;
9242
- if (a === null || b === null || a === void 0 || b === void 0) return a === b;
9243
- if (typeof a !== typeof b || typeof a !== "object") return false;
9244
- if (Array.isArray(a) || Array.isArray(b)) {
9245
- if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) return false;
9246
- return a.every((v, i) => equalModuloMask(v, b[i], mask));
9247
- }
9248
- const aObj = a;
9249
- const bObj = b;
9250
- const aKeys = Object.keys(aObj);
9251
- if (aKeys.length !== Object.keys(bObj).length) return false;
9252
- return aKeys.every((key) => Object.prototype.hasOwnProperty.call(bObj, key) && equalModuloMask(aObj[key], bObj[key], mask));
9253
- }
9254
- function equalModuloMarkedMask(state, aws, mask, coordinate, isMarked, isWithinMarked = isMarked) {
9255
- const a = jsonForm(state);
9256
- const b = jsonForm(aws);
9257
- if (isMarked(coordinate) && b !== void 0 && b !== null) {
9258
- if (a === mask) return true;
9259
- if (isWithinMarked(coordinate) ? isWhollyMask(a, mask) : sameJson(a, wholeMaskOf(b, mask))) return holdsMask(a, mask);
9260
- }
9261
- if (a === mask && (typeof b === "string" || typeof b === "number" || typeof b === "boolean")) return true;
9262
- if (a === b) return true;
9263
- if (a === null || b === null || a === void 0 || b === void 0) return a === b;
9264
- if (typeof a !== typeof b || typeof a !== "object") return false;
9265
- if (Array.isArray(a) || Array.isArray(b)) {
9266
- if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) return false;
9267
- return a.every((v, i) => equalModuloMarkedMask(v, b[i], mask, [...coordinate, i], isMarked, isWithinMarked));
9268
- }
9269
- const aObj = a;
9270
- const bObj = b;
9271
- const aKeys = Object.keys(aObj);
9272
- if (aKeys.length !== Object.keys(bObj).length) return false;
9273
- return aKeys.every((key) => Object.prototype.hasOwnProperty.call(bObj, key) && equalModuloMarkedMask(aObj[key], bObj[key], mask, [...coordinate, key], isMarked, isWithinMarked));
9274
- }
9275
- function wholeMaskOf(value, mask) {
9276
- if (value === null || value === void 0) return value;
9277
- if (Array.isArray(value)) return value.map((v) => wholeMaskOf(v, mask));
9278
- if (isPlainObject(value)) return Object.fromEntries(Object.entries(value).map(([k, v]) => [k, wholeMaskOf(v, mask)]));
9279
- return mask;
9280
- }
9281
- function isWhollyMask(value, mask) {
9282
- const walk = (node) => {
9283
- if (node === mask || node === null) return true;
9284
- if (Array.isArray(node)) return node.every(walk);
9285
- if (isPlainObject(node)) return Object.values(node).every(walk);
9286
- return false;
9287
- };
9288
- return walk(value) && holdsMask(value, mask);
9289
- }
9290
- function holdsMask(value, mask) {
9291
- if (value === mask) return true;
9292
- if (Array.isArray(value)) return value.some((v) => holdsMask(v, mask));
9293
- if (isPlainObject(value)) return Object.values(value).some((v) => holdsMask(v, mask));
9294
- return false;
9295
- }
9296
- function sameJson(a, b) {
9297
- if (a === b) return true;
9298
- if (a === null || b === null || typeof a !== "object" || typeof b !== "object") return false;
9299
- if (Array.isArray(a) || Array.isArray(b)) {
9300
- if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) return false;
9301
- return a.every((v, i) => sameJson(v, b[i]));
9302
- }
9303
- const aObj = a;
9304
- const bObj = b;
9305
- const keys = Object.keys(aObj);
9306
- return keys.length === Object.keys(bObj).length && keys.every((k) => Object.prototype.hasOwnProperty.call(bObj, k) && sameJson(aObj[k], bObj[k]));
9307
- }
9308
- function isPlainObject(value) {
9309
- return typeof value === "object" && value !== null;
9310
- }
9311
-
9312
9074
  //#endregion
9313
9075
  //#region src/analyzer/drift-principal-normalize.ts
9314
9076
  const PRINCIPAL_UNIQUE_ID_RE = /^A(?:ROA|IDA)[A-Z0-9]{6,}$/;
@@ -9832,7 +9594,7 @@ async function driftCommand(stacks, options) {
9832
9594
  return;
9833
9595
  }
9834
9596
  let outcome;
9835
- if (options.accept) outcome = await runAccept(reports, stateBackend, stateConfig, awsClients, options);
9597
+ if (options.accept) outcome = await runAccept(reports, stackRegionScope, stateBackend, stateConfig, awsClients, options);
9836
9598
  else try {
9837
9599
  outcome = await runRevert(reports, stackRegionScope, stateBackend, stateConfig, awsClients, options);
9838
9600
  } catch (err) {
@@ -10529,7 +10291,8 @@ async function runDriftForStack(stackName, region, stateBackend, providerRegistr
10529
10291
  } : protocolNormalized;
10530
10292
  const paired = provider.canonicalizeDriftPair ? await provider.canonicalizeDriftPair(resource.resourceType, canonicalized.baseline, canonicalized.aws, resource.properties ?? {}) : canonicalized;
10531
10293
  const nameBaseline = canonicalizeDerivedPatternBName(resource.resourceType, paired.baseline, paired.aws);
10532
- const noEchoPartitioned = partitionNoEchoParameterChanges(calculateResourceDrift(nameBaseline, paired.aws, {
10294
+ const comparedBaseline = useObserved ? withAbsentDefaultKeys(nameBaseline, paired.aws, driftAbsentMeansDefaultKeys(provider, resource.resourceType, resource.properties)) : nameBaseline;
10295
+ const noEchoPartitioned = partitionNoEchoParameterChanges(calculateResourceDrift(comparedBaseline, paired.aws, {
10533
10296
  ignorePaths: observedIgnorePaths.length ? [...ignorePaths, ...observedIgnorePaths] : ignorePaths,
10534
10297
  unionWalkObjects: useObserved,
10535
10298
  unorderedPaths
@@ -10684,7 +10447,7 @@ function setAtPath(target, path, value) {
10684
10447
  }
10685
10448
  defineOwnKey(cursor, segments[segments.length - 1], value);
10686
10449
  }
10687
- async function runAccept(reports, stateBackend, stateConfig, awsClients, options) {
10450
+ async function runAccept(reports, regionScope, stateBackend, stateConfig, awsClients, options) {
10688
10451
  const logger = getLogger();
10689
10452
  const out = humanTextSink(options.json);
10690
10453
  const lockRecovery = {
@@ -10760,11 +10523,15 @@ async function runAccept(reports, stateBackend, stateConfig, awsClients, options
10760
10523
  }
10761
10524
  if (recordedChanges > 0) acceptedResourceCount++;
10762
10525
  const written = maskMarkedNoEchoBaselineWithLeaves(redactedBaseline, existing, hasObserved);
10526
+ const settled = await settleUnsettled(existing, outcome.logicalId, () => regionScope(report.region).registry.getProviderFor({
10527
+ resourceType: outcome.resourceType,
10528
+ provisionedBy: existing.provisionedBy
10529
+ }).provider);
10763
10530
  resources[outcome.logicalId] = hasObserved ? {
10764
- ...existing,
10531
+ ...settled,
10765
10532
  observedProperties: written.baseline
10766
10533
  } : {
10767
- ...existing,
10534
+ ...settled,
10768
10535
  properties: written.baseline,
10769
10536
  ...written.noEchoLeaves !== void 0 && { noEchoLeaves: written.noEchoLeaves }
10770
10537
  };
@@ -11144,6 +10911,7 @@ function preserveLiveValuesAtMaskedLeaves(send, awsProperties, secrets, corrobor
11144
10911
  }
11145
10912
  function buildRevertNewProperties(drifts, desiredProperties, awsProperties, options = {}) {
11146
10913
  const preserveUntemplated = options.preserveUntemplated === true;
10914
+ const absentMeansDefault = options.absentMeansDefault ?? [];
11147
10915
  const result = { ...awsProperties };
11148
10916
  for (const d of drifts) {
11149
10917
  const topLevelKey = d.path.split(".", 1)[0];
@@ -11156,10 +10924,25 @@ function buildRevertNewProperties(drifts, desiredProperties, awsProperties, opti
11156
10924
  const baselineIsTagList = isCfnTagList(desiredValue) || Array.isArray(desiredValue) && desiredValue.length === 0;
11157
10925
  defineOwnKey(result, topLevelKey, isTagListKey(topLevelKey) && baselineIsTagList && isCfnTagList(awsValue) ? mergeTagListForRevert(desiredValue, awsValue) : desiredValue);
11158
10926
  }
11159
- }
10927
+ } else if (absentMeansDefault.includes(topLevelKey)) delete result[topLevelKey];
11160
10928
  }
11161
10929
  return result;
11162
10930
  }
10931
+ function driftAbsentMeansDefaultKeys(provider, resourceType, properties) {
10932
+ if (provider.getDriftAbsentMeansDefaultKeys === void 0 || !isPlainRecord(properties)) return [];
10933
+ const keys = provider.getDriftAbsentMeansDefaultKeys(resourceType, properties);
10934
+ const dotted = keys.filter((key) => key.includes("."));
10935
+ if (dotted.length === 0) return keys;
10936
+ getLogger().debug(safeMsg`${resourceType}: getDriftAbsentMeansDefaultKeys returned non-top-level name(s) ` + safeMsg`${dotted.join(", ")}; ignored (top-level property names only).`);
10937
+ return keys.filter((key) => !key.includes("."));
10938
+ }
10939
+ function withAbsentDefaultKeys(baseline, aws, keys) {
10940
+ const missing = keys.filter((key) => !hasOwnKey(baseline, key) && hasOwnKey(aws, key));
10941
+ if (missing.length === 0) return baseline;
10942
+ const out = { ...baseline };
10943
+ for (const key of missing) defineOwnKey(out, key, void 0);
10944
+ return out;
10945
+ }
11163
10946
  function collectNarrowedTopLevelKeys(sent, effective) {
11164
10947
  const delta = Object.create(null);
11165
10948
  for (const key of /* @__PURE__ */ new Set([...Object.keys(sent), ...Object.keys(effective)])) {
@@ -11246,6 +11029,7 @@ async function runRevert(reports, regionScope, stateBackend, stateConfig, awsCli
11246
11029
  }));
11247
11030
  const narrowedByLogicalId = /* @__PURE__ */ new Map();
11248
11031
  const reRecordedByLogicalId = /* @__PURE__ */ new Map();
11032
+ const settledByRevert = /* @__PURE__ */ new Map();
11249
11033
  try {
11250
11034
  const revertSecretResolvers = new DriftSecretResolvers(report.region);
11251
11035
  const revertProducerRegions = report.producerRegions;
@@ -11312,7 +11096,7 @@ async function runRevert(reports, regionScope, stateBackend, stateConfig, awsCli
11312
11096
  let newProperties;
11313
11097
  try {
11314
11098
  if (provider.canonicalizeDriftPair) desiredProperties = (await provider.canonicalizeDriftPair(outcome.resourceType, desiredProperties, outcome.awsProperties, stateResource.properties ?? {})).baseline;
11315
- const certifiedOverlay = overlayLiveAtUncertifiedPaths(buildRevertNewProperties(outcome.changes, desiredProperties, outcome.awsProperties, { preserveUntemplated: stateResource.observedProperties === void 0 }), [...outcome.uncertifiedPaths, ...outcome.noEchoParameterPaths ?? []], outcome.awsProperties, desiredProperties, secrets, new Set(outcome.changes.map((change) => change.path.split(".", 1)[0] ?? "")), spelledKeysOf(stateResource.properties ?? {}));
11099
+ const certifiedOverlay = overlayLiveAtUncertifiedPaths(buildRevertNewProperties(outcome.changes, desiredProperties, outcome.awsProperties, stateResource.observedProperties === void 0 ? { preserveUntemplated: true } : { absentMeansDefault: driftAbsentMeansDefaultKeys(provider, outcome.resourceType, stateResource.properties) }), [...outcome.uncertifiedPaths, ...outcome.noEchoParameterPaths ?? []], outcome.awsProperties, desiredProperties, secrets, new Set(outcome.changes.map((change) => change.path.split(".", 1)[0] ?? "")), spelledKeysOf(stateResource.properties ?? {}));
11316
11100
  const maskPreserved = preserveLiveValuesAtMaskedLeaves(unresolvedTokens.size > 0 ? preserveLiveValuesAtUnresolvedTokens(certifiedOverlay, outcome.awsProperties, unresolvedTokens, secrets) : certifiedOverlay, outcome.awsProperties, secrets, certifiedOverlay, spelledKeysOf(stateResource.properties ?? {}));
11317
11101
  if (maskPreserved.unpreservablePaths.length > 0) {
11318
11102
  totalUnresolvable++;
@@ -11335,7 +11119,17 @@ async function runRevert(reports, regionScope, stateBackend, stateConfig, awsCli
11335
11119
  return;
11336
11120
  }
11337
11121
  try {
11338
- const updateResult = await withRetry(() => provider.update(outcome.logicalId, stateResource.physicalId, outcome.resourceType, newProperties, outcome.awsProperties, {
11122
+ const revertPrevious = await settleUnsettledPrevious({
11123
+ provider,
11124
+ logicalId: outcome.logicalId,
11125
+ physicalId: stateResource.physicalId,
11126
+ resourceType: outcome.resourceType,
11127
+ recordedProperties: stateResource.properties ?? {},
11128
+ names: unsettledPropertiesOf(stateResource),
11129
+ previous: outcome.awsProperties,
11130
+ desired: newProperties
11131
+ });
11132
+ const updateResult = await withRetry(() => provider.update(outcome.logicalId, stateResource.physicalId, outcome.resourceType, newProperties, revertPrevious, {
11339
11133
  desiredFromAwsReadback: true,
11340
11134
  declaredEmptyProperties: declaredEmptyProperties(stateResource.properties),
11341
11135
  maskSecrets: createSecretMasker(secrets),
@@ -11344,6 +11138,19 @@ async function runRevert(reports, regionScope, stateBackend, stateConfig, awsCli
11344
11138
  removedProperties: /* @__PURE__ */ new Set()
11345
11139
  }), outcome.logicalId, { logger: maskingRetryLogger(logger, secrets) });
11346
11140
  totalSucceeded++;
11141
+ const unsettledNames = unsettledPropertiesOf(stateResource);
11142
+ if (unsettledNames.size > 0) {
11143
+ const settled = await withUnprovenUnsettled(withoutUnsettledProperties(stateResource), {
11144
+ provider,
11145
+ logicalId: outcome.logicalId,
11146
+ physicalId: stateResource.physicalId,
11147
+ resourceType: outcome.resourceType,
11148
+ recordedProperties: stateResource.properties ?? {},
11149
+ names: unsettledNames,
11150
+ desired: newProperties
11151
+ }, (message) => logger.warn(maskSecretsInText(message, secrets)));
11152
+ if (unsettledPropertiesOf(settled).size < unsettledNames.size) settledByRevert.set(outcome.logicalId, settled);
11153
+ }
11347
11154
  const revertPartial = updatePartialReason(updateResult);
11348
11155
  if (revertPartial !== void 0) logger.warn(` ✓ ${report.stackName}/${outcome.logicalId} (${outcome.resourceType}): reverted, ${maskSecretsInText(updatePartialMessage(revertPartial), secrets)}`);
11349
11156
  else logger.info(` ✓ ${report.stackName}/${outcome.logicalId} (${outcome.resourceType}): reverted.`);
@@ -11388,8 +11195,15 @@ async function runRevert(reports, regionScope, stateBackend, stateConfig, awsCli
11388
11195
  logger.error(` ✗ ${report.stackName}/${outcome.logicalId} (${outcome.resourceType}): AWS update failed — ${msg}`);
11389
11196
  }
11390
11197
  })), concurrency);
11391
- if (narrowedByLogicalId.size > 0 || reRecordedByLogicalId.size > 0) {
11198
+ if (narrowedByLogicalId.size > 0 || reRecordedByLogicalId.size > 0 || settledByRevert.size > 0) {
11392
11199
  const resources = { ...report.state.resources };
11200
+ let settledCount = 0;
11201
+ for (const [logicalId, settled] of settledByRevert) {
11202
+ const existing = resources[logicalId];
11203
+ if (!existing) continue;
11204
+ resources[logicalId] = withUnsettledProperties(withoutUnsettledProperties(existing), unsettledPropertiesOf(settled));
11205
+ settledCount++;
11206
+ }
11393
11207
  let recordedCount = 0;
11394
11208
  for (const [logicalId, delta] of narrowedByLogicalId) {
11395
11209
  const existing = resources[logicalId];
@@ -11432,10 +11246,11 @@ async function runRevert(reports, regionScope, stateBackend, stateConfig, awsCli
11432
11246
  ...identity.attributes !== void 0 && { attributes: identity.attributes }
11433
11247
  };
11434
11248
  }
11435
- if (recordedCount === 0 && reRecordedCount === 0) return;
11249
+ if (recordedCount === 0 && reRecordedCount === 0 && settledCount === 0) return;
11436
11250
  const recordedParts = [];
11437
11251
  if (recordedCount > 0) recordedParts.push(`the value the provider actually applied on ${recordedCount} resource(s)`);
11438
11252
  if (reRecordedCount > 0) recordedParts.push(`the identity the revert returned on ${reRecordedCount} resource(s)`);
11253
+ if (settledCount > 0) recordedParts.push(`that a failed deploy's unsettled properties are settled on ${settledCount} resource(s)`);
11439
11254
  const recordedWhat = recordedParts.join(" and ");
11440
11255
  const { skippedOutputs: _droppedByRevert, ...carriedState } = report.state;
11441
11256
  const newState = {
@@ -11451,7 +11266,11 @@ async function runRevert(reports, regionScope, stateBackend, stateConfig, awsCli
11451
11266
  logger.info(`✓ State updated for ${report.stackName} (${report.region}): recorded ${recordedWhat}.`);
11452
11267
  } catch (err) {
11453
11268
  const revertAgain = revertCommandLine(report.stackName, report.region);
11454
- const unrecorded = [...recordedCount > 0 ? ["the value the provider actually applied"] : [], ...reRecordedCount > 0 ? ["the identity the revert returned"] : []].join(" and ");
11269
+ const unrecorded = [
11270
+ ...recordedCount > 0 ? ["the value the provider actually applied"] : [],
11271
+ ...reRecordedCount > 0 ? ["the identity the revert returned"] : [],
11272
+ ...settledCount > 0 ? ["that a failed deploy's unsettled properties are settled"] : []
11273
+ ].join(" and ");
11455
11274
  logger.warn(`Reverted ${report.stackName} (${report.region}), but could not record ${unrecorded}: ${describeAwsFailure(err).detail}.` + (reRecordedCount > 0 ? " The state record still holds the physical id and attributes from before the revert, which a later 'Fn::GetAtt' and 'cdkd export' read. Re-running the revert does not repair it, since the revert landed; a later deploy that updates this resource records the identity its update returns." : "") + (recordedCount > 0 ? ` The next 'cdkd drift' will report the same difference — ` + (revertAgain === void 0 ? `re-run 'cdkd drift --revert' for this stack once the state write can succeed.` : `re-run the command below once the state write can succeed.\nRevert with: ${revertAgain}`) : ""));
11456
11275
  }
11457
11276
  }
@@ -11607,8 +11426,38 @@ async function confirmPrompt$5(prompt, out) {
11607
11426
  refusal: "The cdkd drift confirmation prompt cannot run in a non-interactive environment. Pass -y / --yes to confirm, or run the command from a real terminal."
11608
11427
  });
11609
11428
  }
11429
+ async function settleUnsettled(record, logicalId, providerOf) {
11430
+ const names = unsettledPropertiesOf(record);
11431
+ if (names.size === 0) return record;
11432
+ let kept = /* @__PURE__ */ new Set();
11433
+ try {
11434
+ const provider = providerOf();
11435
+ if (provider?.unsettledInTransition !== void 0) kept = await provider.unsettledInTransition(record.physicalId, logicalId, record.resourceType, names, record.properties);
11436
+ } catch {
11437
+ kept = names;
11438
+ }
11439
+ const keep = [...names].filter((name) => kept.has(name));
11440
+ if (keep.length === names.size) return record;
11441
+ return withUnsettledProperties(withoutUnsettledProperties(record), keep);
11442
+ }
11443
+ function unsettledRowsOf(report) {
11444
+ const rows = [];
11445
+ const resources = report.state.resources ?? {};
11446
+ for (const logicalId of Object.keys(resources).sort()) {
11447
+ const record = resources[logicalId];
11448
+ const names = unsettledPropertiesOf(record);
11449
+ if (names.size === 0) continue;
11450
+ rows.push({
11451
+ logicalId,
11452
+ type: typeof record?.resourceType === "string" ? record.resourceType : "unknown",
11453
+ properties: [...names].sort()
11454
+ });
11455
+ }
11456
+ return rows;
11457
+ }
11610
11458
  function writeJsonReport(reports) {
11611
11459
  const payload = reports.map((r) => {
11460
+ const unsettled = unsettledRowsOf(r);
11612
11461
  const drifted = [];
11613
11462
  const clean = [];
11614
11463
  const deleted = [];
@@ -11666,6 +11515,7 @@ function writeJsonReport(reports) {
11666
11515
  stack: r.stackName,
11667
11516
  region: r.region,
11668
11517
  ...r.warnings.length > 0 && { warnings: r.warnings },
11518
+ ...unsettled.length > 0 && { unsettled },
11669
11519
  drifted,
11670
11520
  deleted,
11671
11521
  clean,
@@ -11792,6 +11642,17 @@ function writeHumanReport(reports) {
11792
11642
  process.stdout.write("\n");
11793
11643
  }
11794
11644
  }
11645
+ const unsettledRows = unsettledRowsOf(report);
11646
+ if (unsettledRows.length > 0) {
11647
+ process.stdout.write(`\n! ${reportHeading(report)}: a failed deploy left properties unsettled on ${unsettledRows.length} resource${unsettledRows.length === 1 ? "" : "s"} (AWS may hold the recorded value or the attempted one). The next 'cdkd deploy' sends them again; a successful --accept or --revert of the resource clears them.\n`);
11648
+ for (const row of unsettledRows) {
11649
+ const names = row.properties.map((name) => safeMsg`${reportIdent(name, 255)}`).join(", ");
11650
+ process.stdout.write(` ! ${reportResource({
11651
+ logicalId: row.logicalId,
11652
+ resourceType: row.type
11653
+ })}: ${names}\n`);
11654
+ }
11655
+ }
11795
11656
  if (notCompared.length > 0) {
11796
11657
  const notComparedAtAll = notCompared.filter((n) => !ANY_OF_IT_COMPARED[n.cause]).length;
11797
11658
  const referenceCaused = notCompared.length - notComparedAtAll;
@@ -20150,7 +20011,7 @@ async function rollbackCommand(stackArg, options) {
20150
20011
  ...carriedState,
20151
20012
  ...stackInstanceIdCarriedFrom(baseState),
20152
20013
  ...supersededAfterRollback(baseState, supersededHost),
20153
- version: 13,
20014
+ version: 14,
20154
20015
  region,
20155
20016
  resources: { ...stateResources },
20156
20017
  ...orphansAfterRollback(baseState, mintedOrphans),
@@ -23718,7 +23579,7 @@ function buildStackState(stackName, region, rows, templateParser, template, exis
23718
23579
  }
23719
23580
  if (namesParameter?.failedClosed !== void 0) getLogger().debug(`The template's parameter dependence could not be judged (${namesParameter.failedClosed}): every prior observed-baseline refusal recorded without a reason is carried as an unverifiable-parameter refusal.`);
23720
23581
  return {
23721
- version: 13,
23582
+ version: 14,
23722
23583
  stackName,
23723
23584
  region,
23724
23585
  resources,
@@ -31724,4 +31585,4 @@ function collectVerbFlags(program) {
31724
31585
 
31725
31586
  //#endregion
31726
31587
  export { resolveSecretDerivedPrincipals as a, buildProgram, isResolvableSecretPrincipalList as i, runDestroyForStack as n, canonicalizeIpProtocolValue as o, holdsUnprovenSecretPrincipalToken as r, resolvedResourceTimeoutMs as s, canonicalizeIpv4Cidr as t };
31727
- //# sourceMappingURL=program-DOPic-aS.js.map
31588
+ //# sourceMappingURL=program-Bnt3Yt0k.js.map