@go-to-k/cdkd 0.296.31 → 0.298.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 (28) hide show
  1. package/dist/{asg-provider-Ca7cV9tM.js → asg-provider-B1xRE8do.js} +5 -5
  2. package/dist/{asg-provider-Ca7cV9tM.js.map → asg-provider-B1xRE8do.js.map} +1 -1
  3. package/dist/{aws-failure-text-BaWeCWRz.js → aws-failure-text-DtvlUugx.js} +2 -2
  4. package/dist/{aws-failure-text-BaWeCWRz.js.map → aws-failure-text-DtvlUugx.js.map} +1 -1
  5. package/dist/cli.js +2 -2
  6. package/dist/{deploy-engine-5FFXg6ih.js → deploy-engine-CJTG3tft.js} +1944 -469
  7. package/dist/deploy-engine-CJTG3tft.js.map +1 -0
  8. package/dist/{iam-policy-targets-Cz2tPxXk.js → iam-policy-targets-CwKiK9nS.js} +2 -2
  9. package/dist/{iam-policy-targets-Cz2tPxXk.js.map → iam-policy-targets-CwKiK9nS.js.map} +1 -1
  10. package/dist/{iam-role-provider-syetbMnw.js → iam-role-provider-qxfS4sDT.js} +24 -4
  11. package/dist/{iam-role-provider-syetbMnw.js.map → iam-role-provider-qxfS4sDT.js.map} +1 -1
  12. package/dist/index.d.ts +21 -2
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +4 -4
  15. package/dist/{neptune-provider-B1D2CFBs.js → neptune-provider-CU_1O2FR.js} +4 -4
  16. package/dist/{neptune-provider-B1D2CFBs.js.map → neptune-provider-CU_1O2FR.js.map} +1 -1
  17. package/dist/{program-Db1eBDeq.js → program-BivXyHmd.js} +584 -83
  18. package/dist/program-BivXyHmd.js.map +1 -0
  19. package/dist/{provider-classes-B7Z4-Zsc.js → provider-classes-1EHrZ847.js} +73 -23
  20. package/dist/provider-classes-1EHrZ847.js.map +1 -0
  21. package/dist/{rds-provider-B4sFJ8YW.js → rds-provider-J40R0ysf.js} +6 -6
  22. package/dist/{rds-provider-B4sFJ8YW.js.map → rds-provider-J40R0ysf.js.map} +1 -1
  23. package/dist/{version-D0cK9V1A.js → version-D96I6uiO.js} +2 -2
  24. package/dist/{version-D0cK9V1A.js.map → version-D96I6uiO.js.map} +1 -1
  25. package/package.json +3 -1
  26. package/dist/deploy-engine-5FFXg6ih.js.map +0 -1
  27. package/dist/program-Db1eBDeq.js.map +0 -1
  28. package/dist/provider-classes-B7Z4-Zsc.js.map +0 -1
@@ -1,13 +1,13 @@
1
1
  import { r as getAwsClients } from "./aws-clients-CnmtbrxD.js";
2
- import { F as displayStackName, I as isPasteableIdent, N as displayIdent, O as SECRET_REF_MAX_CODE_POINTS, P as displaySafe, R as plainIdentOr, a as getLogger, b as generateResourceNameWithFallback, n as isAwsAuthoredFailure, r as safeStringify, t as describeAwsFailure, y as generateResourceName, z as safeMsg } from "./aws-failure-text-BaWeCWRz.js";
3
- import { $ as protectedReplacementAdvice, $n as isAmbiguousOutcomeError, $t as credentialFingerprint, A as isQuotableImportValue, B as isTerminalDeleteFailure, Bn as withheldTargetClause, C as setBounded, D as VALUE_NOT_SHOWN, E as assertRegionMatch, F as resolveExplicitPhysicalId, Gt as injectiveKeyPrefix, H as observeThenDisableProtection, In as plainOrDescribed, L as ProtectionFlipRegistry, M as quotedRemedyLogicalId, Mn as hasClauseBreak, Mt as markCreatedBeforeFailure, N as refusalTypeShown, Nn as isInertUnquoted, O as isPlainImportJson, P as remedyLogicalId, Pn as pasteableCommand, Q as pasteableAwsCommand, Qt as clientDefaultsFor, S as replayedSendWindow, St as withDerivedNameMasks, T as RESOURCE_NOT_FOUND, Tt as clearCreatedBeforeFailure, U as protectionFlipKey, V as logGroupProtectionSite, W as rdsFamilyProtectionSite, Wt as injectiveKey, X as WITHHELD_AWS_COMMAND, Xn as markReplayMayCollide, Xt as ambientClientDefaults, Y as UNNAMEABLE_ID_CLAUSE, Yn as markNameCollision, Yt as withPasteableAwsProfile, Z as isAwsCliLiteral, Zt as ambientCredentialConfig, _ as RecentIdSet, _t as createMaskedLogSinks, a as onlySecretDerived, ar as isMarkedNonRetryable, at as startInterruptWatch, b as isInsideWindow, bt as maskDeep, c as recordedPrincipalsRepair, cr as markRedactedCause, ct as canonicalizeRoute53QueryName, dt as compositeIdSkipResult, en as AccountIdUnavailableError, et as renderDisableCommand, ft as logicalIdShown, g as AmbiguousCreateLatch, gn as ProvisioningError, gt as stateOrphanRecordRemedy, h as AMBIGUOUS_LATCH_TTL_MS, ht as segmentAfterAnchor, i as holdsSecretDerivedEntry, ir as THROTTLING_ERROR_NAMES, it as isInterruptedWaitError, j as normalizeAwsTagsToCfn, jn as commandHole, jt as markAuxiliaryFailure, k as isPlainImportValue, lr as wrapMaskedAwsError, lt as compositeIdFormatMessage, nn as CdkdError, nr as isTransientServerError, o as readPrincipalLists, or as isThrottlingError, ot as ElapsedBudgetRegistry, p as withRemovalDefaults, pt as packCompositeId, q as userPoolProtectionSite, r as SECRET_DERIVED_READ_LIVE, sr as markNonRetryable, tr as isRetryableTransientError, u as clearOnUpdateRemoval, ut as compositeIdSeparatorRefusal, v as ambiguousAttemptLead, vn as ResourceUpdateNotSupportedError, vt as createMaskedRetryLogger, w as withoutServerErrorRetries, x as replayFollowedAmbiguousAttempt, xt as maskerOrIdentity, y as createAttemptKey, yt as isSecretDerivedValue, z as deleteWithProtectionCompensation, zn as shellQuote } from "./iam-policy-targets-Cz2tPxXk.js";
2
+ import { F as displayStackName, I as isPasteableIdent, N as displayIdent, O as SECRET_REF_MAX_CODE_POINTS, P as displaySafe, R as plainIdentOr, a as getLogger, b as generateResourceNameWithFallback, n as isAwsAuthoredFailure, r as safeStringify, t as describeAwsFailure, y as generateResourceName, z as safeMsg } from "./aws-failure-text-DtvlUugx.js";
3
+ import { $ as protectedReplacementAdvice, $n as isAmbiguousOutcomeError, $t as credentialFingerprint, A as isQuotableImportValue, B as isTerminalDeleteFailure, Bn as withheldTargetClause, C as setBounded, D as VALUE_NOT_SHOWN, E as assertRegionMatch, F as resolveExplicitPhysicalId, Gt as injectiveKeyPrefix, H as observeThenDisableProtection, In as plainOrDescribed, L as ProtectionFlipRegistry, M as quotedRemedyLogicalId, Mn as hasClauseBreak, Mt as markCreatedBeforeFailure, N as refusalTypeShown, Nn as isInertUnquoted, O as isPlainImportJson, P as remedyLogicalId, Pn as pasteableCommand, Q as pasteableAwsCommand, Qt as clientDefaultsFor, S as replayedSendWindow, St as withDerivedNameMasks, T as RESOURCE_NOT_FOUND, Tt as clearCreatedBeforeFailure, U as protectionFlipKey, V as logGroupProtectionSite, W as rdsFamilyProtectionSite, Wt as injectiveKey, X as WITHHELD_AWS_COMMAND, Xn as markReplayMayCollide, Xt as ambientClientDefaults, Y as UNNAMEABLE_ID_CLAUSE, Yn as markNameCollision, Yt as withPasteableAwsProfile, Z as isAwsCliLiteral, Zt as ambientCredentialConfig, _ as RecentIdSet, _t as createMaskedLogSinks, a as onlySecretDerived, ar as isMarkedNonRetryable, at as startInterruptWatch, b as isInsideWindow, bt as maskDeep, c as recordedPrincipalsRepair, cr as markRedactedCause, ct as canonicalizeRoute53QueryName, dt as compositeIdSkipResult, en as AccountIdUnavailableError, et as renderDisableCommand, ft as logicalIdShown, g as AmbiguousCreateLatch, gn as ProvisioningError, gt as stateOrphanRecordRemedy, h as AMBIGUOUS_LATCH_TTL_MS, ht as segmentAfterAnchor, i as holdsSecretDerivedEntry, ir as THROTTLING_ERROR_NAMES, it as isInterruptedWaitError, j as normalizeAwsTagsToCfn, jn as commandHole, jt as markAuxiliaryFailure, k as isPlainImportValue, lr as wrapMaskedAwsError, lt as compositeIdFormatMessage, nn as CdkdError, nr as isTransientServerError, o as readPrincipalLists, or as isThrottlingError, ot as ElapsedBudgetRegistry, p as withRemovalDefaults, pt as packCompositeId, q as userPoolProtectionSite, r as SECRET_DERIVED_READ_LIVE, sr as markNonRetryable, tr as isRetryableTransientError, u as clearOnUpdateRemoval, ut as compositeIdSeparatorRefusal, v as ambiguousAttemptLead, vn as ResourceUpdateNotSupportedError, vt as createMaskedRetryLogger, w as withoutServerErrorRetries, x as replayFollowedAmbiguousAttempt, xt as maskerOrIdentity, y as createAttemptKey, yt as isSecretDerivedValue, z as deleteWithProtectionCompensation, zn as shellQuote } from "./iam-policy-targets-CwKiK9nS.js";
4
4
  import { s as ambientRegion } from "./aws-client-defaults-D0q0z4dG.js";
5
- import { $ as getPriorAttempts, $a as coerceCfnBoolean, $n as reserveStackCreateToken, Ar as markWaitAbandoned, B as beginDeleteWait, Ca as refuseMalformedResourcesForDestroy, Cr as unchangedBehindSecretReference, Do as passedNoEchoParametersOf, Dr as deleteSkipReason, Dt as withNestedStackContext, Et as getCurrentNestedStackContext, Fa as withheldAccountClause, Fr as reDisableInstanceApiTermination, G as DELETE_INDEX_WAIT_PROCEED_NOTE, Go as markSameGenerationBag, H as deleteBudgetKey, Ir as reEnableInstanceApiTermination, J as waitForIndexesSettled, Ja as WARM_THROUGHPUT_MEMBERS, K as INDEX_SETTLE_POLL_INTERVAL_MS, Kc as decodeListingKey, Ko as redactSecretsForState, Ks as rewriteTemplateAssetReferences, La as findSilentDropProperties, Lt as awaitInFlightSibling, Mr as ec2InstanceProtectionSite, Nr as isTerminationProtectionPropagationError, Oi as accountArgs, Or as withIndeterminateGuard, Po as hasMaskableValues, Pr as observeThenDisableInstanceApiTermination, Q as isTruthyCfnBoolean, Qa as toFiniteNumber, R as DynamoDBGlobalTableProvider, Si as passedParameterClassesOf, Sr as slowCcOperationTimeoutMs, St as revertNestedChildFromJournal, U as resolveDynamoDbDeleteBudgetClock, V as compensateRemovedDeletionProtection, Vs as stringifyValue, W as resolveDynamoDbDeleteBudgetMs, X as S3_AUTO_DELETE_OBJECTS_TAG, Xa as isWarmThroughputDecrease, Xc as derivePartitionAndUrlSuffix, Y as ECR_AUTO_DELETE_IMAGES_TAG, Ya as coerceWarmThroughput$1, Yc as canonicalizeRegion, Yo as dynamicReferenceTokens, Z as hasCdkAutoDeleteTag, Za as toCfnInteger, Zn as earliestDefined, a as findNestedTemplateTreeDefect, ai as s3BucketWebsiteUrl, an as redactedDeleteAddressFields, ao as replayWarn, ar as readTagList, b as lookupEachName, c as renderNestedTemplateTreeDefect, cl as renderAssemblyPathEscape, co as requireConfigString, cr as tagPlanWarning, ei as isSettledInstanceState, eo as coerceCfnInteger, et as markRefusedBeforeApplying, fo as withRetry, ho as sameLambdaFunctionAddress, ii as s3BucketRegionalDomainName, in as isRedactedRecordedValue, io as readConfigString, ir as planTagDiff, kr as isWaitAbandonedError, li as getAccountInfo, ll as resolveAssemblyPath, lr as definedAttributes, mo as lambdaFunctionNameForMask, ni as s3BucketDomainName, no as configIntegerRefusal, nr as DBPROXY_TAGS_WHAT, ns as carriesSecretMask, o as isAbsoluteAssetPath, ol as describeFileReadFailure, on as redactedDeleteAddressSkip, oo as requireConfigArray, or as refuseMalformedDesiredTags, po as canonicalLambdaFunctionName, q as deleteTableWithIndexBusyRetry, ra as refuseMalformedNestedChildOutputs, ri as s3BucketDualStackDomainName, rn as REDACTED_DELETE_ADDRESS_SKIP_REASON, ro as configStringRefusal, rr as DBPROXY_TAG_OPTIONS, s as listNestedTemplateRows, sl as displayAssemblyPath, so as requireConfigObject, sr as tagMapAsList, t as DeployEngine, ti as s3BucketArn, tn as getCurrentProducerRegions, to as configBooleanRefusal, tr as acquireIdempotencyToken, ts as recoverMaskedOutput, ur as stringifyIfAssigned, v as chunks, x as withApiLimit, y as isAccessDeniedError, yi as parseWebACLArn, yr as getCurrentResourceSecrets, yt as getNestedRevertRun, z as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, za as withoutSilentDropProperties, zt as getStackRecords } from "./deploy-engine-5FFXg6ih.js";
6
- import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-syetbMnw.js";
7
- import { a as canonicalizeIpProtocolValue, i as resolveSecretDerivedPrincipals, n as runDestroyForStack, o as resolvedResourceTimeoutMs, r as isResolvableSecretPrincipalList, t as canonicalizeIpv4Cidr } from "./program-Db1eBDeq.js";
8
- import { RDSProvider } from "./rds-provider-B4sFJ8YW.js";
9
- import { NeptuneProvider } from "./neptune-provider-B1D2CFBs.js";
10
- import { ASGProvider } from "./asg-provider-Ca7cV9tM.js";
5
+ import { $ as isTruthyCfnBoolean, $o as markSameGenerationBag, $s as stringifyValue, B as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, Br as reDisableInstanceApiTermination, Bt as getStackRecords, Co as sameLambdaFunctionAddress, Ct as revertNestedChildFromJournal, Dr as unchangedBehindSecretReference, Dt as getCurrentNestedStackContext, Ei as parseWebACLArn, Er as slowCcOperationTimeoutMs, Fo as passedNoEchoParametersOf, Fr as markWaitAbandoned, G as resolveDynamoDbDeleteBudgetMs, Ga as findSilentDropProperties, H as compensateRemovedDeletionProtection, Ho as hasMaskableValues, Ii as accountArgs, J as deleteTableWithIndexBusyRetry, K as DELETE_INDEX_WAIT_PROCEED_NOTE, Lr as ec2InstanceProtectionSite, Mr as deleteSkipReason, Nr as withIndeterminateGuard, Ot as withNestedStackContext, Pr as isWaitAbandonedError, Q as hasCdkAutoDeleteTag, Qn as earliestDefined, Rr as isTerminationProtectionPropagationError, Rt as awaitInFlightSibling, So as lambdaFunctionNameForMask, U as deleteBudgetKey, Ua as withheldAccountClause, V as beginDeleteWait, Vr as reEnableInstanceApiTermination, W as resolveDynamoDbDeleteBudgetClock, X as ECR_AUTO_DELETE_IMAGES_TAG, Y as waitForIndexesSettled, Z as S3_AUTO_DELETE_OBJECTS_TAG, a as findNestedTemplateTreeDefect, an as isRedactedRecordedValue, ao as toCfnInteger, ar as planTagDiff, b as lookupEachName, bl as renderAssemblyPathEscape, bo as withRetry, br as getCurrentResourceSecrets, bt as getNestedRevertRun, c as renderNestedTemplateTreeDefect, ci as s3BucketArn, cl as derivePartitionAndUrlSuffix, co as coerceCfnInteger, cr as tagMapAsList, da as refuseMalformedNestedChildOutputs, di as s3BucketRegionalDomainName, do as configStringRefusal, dr as stringifyIfAssigned, er as reserveStackCreateToken, es as redactSecretsForState, et as getPriorAttempts, fi as s3BucketWebsiteUrl, fo as readConfigString, fs as recoverMaskedOutput, gi as getAccountInfo, go as requireConfigString, ho as requireConfigObject, ic as rewriteTemplateAssetReferences, il as decodeListingKey, in as REDACTED_DELETE_ADDRESS_SKIP_REASON, io as isWarmThroughputDecrease, ir as DBPROXY_TAG_OPTIONS, ja as refuseMalformedResourcesForDestroy, ki as passedParameterClassesOf, li as s3BucketDomainName, lo as configBooleanRefusal, lr as tagPlanWarning, mo as requireConfigArray, ms as carriesSecretMask, nn as getCurrentProducerRegions, no as WARM_THROUGHPUT_MEMBERS, nr as acquireIdempotencyToken, o as isAbsoluteAssetPath, on as redactedDeleteAddressFields, oo as toFiniteNumber, or as readTagList, os as dynamicReferenceTokens, po as replayWarn, q as INDEX_SETTLE_POLL_INTERVAL_MS, qa as withoutSilentDropProperties, ro as coerceWarmThroughput$1, rr as DBPROXY_TAGS_WHAT, rs as withoutPhysicalNameCopies, s as listNestedTemplateRows, si as isSettledInstanceState, sl as canonicalizeRegion, sn as redactedDeleteAddressSkip, so as coerceCfnBoolean, sr as refuseMalformedDesiredTags, t as DeployEngine, tt as markRefusedBeforeApplying, ui as s3BucketDualStackDomainName, uo as configIntegerRefusal, ur as definedAttributes, v as chunks, vl as describeFileReadFailure, x as withApiLimit, xl as resolveAssemblyPath, xo as canonicalLambdaFunctionName, y as isAccessDeniedError, yl as displayAssemblyPath, z as DynamoDBGlobalTableProvider, zr as observeThenDisableInstanceApiTermination } from "./deploy-engine-CJTG3tft.js";
6
+ import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-qxfS4sDT.js";
7
+ import { a as canonicalizeIpProtocolValue, i as resolveSecretDerivedPrincipals, n as runDestroyForStack, o as resolvedResourceTimeoutMs, r as isResolvableSecretPrincipalList, t as canonicalizeIpv4Cidr } from "./program-BivXyHmd.js";
8
+ import { RDSProvider } from "./rds-provider-J40R0ysf.js";
9
+ import { NeptuneProvider } from "./neptune-provider-CU_1O2FR.js";
10
+ import { ASGProvider } from "./asg-provider-B1xRE8do.js";
11
11
  import { createHash, randomUUID } from "node:crypto";
12
12
  import { 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, ListBucketsCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchBucket, PutBucketAccelerateConfigurationCommand, PutBucketAnalyticsConfigurationCommand, PutBucketCorsCommand, PutBucketEncryptionCommand, PutBucketIntelligentTieringConfigurationCommand, PutBucketInventoryConfigurationCommand, PutBucketLifecycleConfigurationCommand, PutBucketLoggingCommand, PutBucketMetricsConfigurationCommand, PutBucketNotificationConfigurationCommand, PutBucketOwnershipControlsCommand, PutBucketPolicyCommand, PutBucketReplicationCommand, PutBucketTaggingCommand, PutBucketVersioningCommand, PutBucketWebsiteCommand, PutObjectLockConfigurationCommand, PutPublicAccessBlockCommand, S3Client } from "@aws-sdk/client-s3";
13
13
  import { AddRoleToInstanceProfileCommand, AddUserToGroupCommand, AttachGroupPolicyCommand, AttachRolePolicyCommand, AttachUserPolicyCommand, CreateAccessKeyCommand, CreateGroupCommand, CreateInstanceProfileCommand, CreateLoginProfileCommand, CreatePolicyCommand, CreatePolicyVersionCommand, CreateUserCommand, DeleteAccessKeyCommand, DeleteGroupCommand, DeleteGroupPolicyCommand, DeleteInstanceProfileCommand, DeleteLoginProfileCommand, DeletePolicyCommand, DeletePolicyVersionCommand, DeleteRolePolicyCommand, DeleteUserCommand, DeleteUserPermissionsBoundaryCommand, DeleteUserPolicyCommand, DetachGroupPolicyCommand, DetachRolePolicyCommand, DetachUserPolicyCommand, GetAccessKeyLastUsedCommand, GetGroupCommand, GetGroupPolicyCommand, GetInstanceProfileCommand, GetPolicyCommand, GetPolicyVersionCommand, GetRolePolicyCommand, GetUserCommand, GetUserPolicyCommand, IAMClient, ListAccessKeysCommand, ListAttachedGroupPoliciesCommand, ListAttachedUserPoliciesCommand, ListEntitiesForPolicyCommand, ListGroupPoliciesCommand, ListGroupsForUserCommand, ListPoliciesCommand, ListPolicyTagsCommand, ListPolicyVersionsCommand, ListUserPoliciesCommand, NoSuchEntityException, PutGroupPolicyCommand, PutRolePolicyCommand, PutUserPermissionsBoundaryCommand, PutUserPolicyCommand, RemoveRoleFromInstanceProfileCommand, RemoveUserFromGroupCommand, TagPolicyCommand, TagUserCommand, UntagPolicyCommand, UntagUserCommand, UpdateAccessKeyCommand, UpdateLoginProfileCommand } from "@aws-sdk/client-iam";
@@ -8653,7 +8653,7 @@ function declaredConsumptionMode(properties) {
8653
8653
  return config[KAFKA_CONSUMPTION_MODE_KEY];
8654
8654
  }
8655
8655
  function consumptionModeRefusalMessage(logicalId, mode) {
8656
- return `AWS::Lambda::EventSourceMapping ${logicalId}: SelfManagedKafkaEventSourceConfig.${KAFKA_CONSUMPTION_MODE_KEY} cannot be sent by cdkd yet — the AWS SDK for JavaScript does not model the member, so it would be dropped from the ${mode === "create" ? "CreateEventSourceMapping" : "UpdateEventSourceMapping"} request without an error (issue #3848). Remove ${KAFKA_CONSUMPTION_MODE_KEY} from SelfManagedKafkaEventSourceConfig to deploy the mapping without it.`;
8656
+ return `AWS::Lambda::EventSourceMapping ${logicalId}: SelfManagedKafkaEventSourceConfig.${KAFKA_CONSUMPTION_MODE_KEY} cannot be sent by cdkd yet — the AWS SDK for JavaScript does not model the member, so it would be dropped from the ${mode === "create" ? "CreateEventSourceMapping" : "UpdateEventSourceMapping"} request without an error. Remove ${KAFKA_CONSUMPTION_MODE_KEY} from SelfManagedKafkaEventSourceConfig to deploy the mapping without it.`;
8657
8657
  }
8658
8658
  function kafkaConfigForUpdate(desired, previous, options) {
8659
8659
  const asObject = (v) => typeof v === "object" && v !== null && !Array.isArray(v) ? v : void 0;
@@ -10179,6 +10179,50 @@ function narrowOnDemandCeilings(declared) {
10179
10179
  dropped
10180
10180
  };
10181
10181
  }
10182
+ function refusedOnDemandCeilingShape(value) {
10183
+ if (value === void 0 || coerceCfnInteger(value) !== void 0) return void 0;
10184
+ if (typeof value === "string") {
10185
+ if (value.trim() === "" || /^[+-]?\d+$/.test(value)) return void 0;
10186
+ return "a string";
10187
+ }
10188
+ if (typeof value === "number") return Number.isInteger(value) ? void 0 : "a number that is not an integer";
10189
+ if (value === null) return "null";
10190
+ if (typeof value === "boolean") return "a boolean";
10191
+ if (Array.isArray(value)) return "an array";
10192
+ return "an object";
10193
+ }
10194
+ function onDemandCeilingRefusal(properties, previousProperties, logicalId) {
10195
+ const blockRefusal = (block, path) => {
10196
+ if (!isPlainCapacityBlock(block)) return void 0;
10197
+ for (const member of ON_DEMAND_CEILING_MEMBERS) {
10198
+ if (!Object.hasOwn(block, member)) continue;
10199
+ const shape = refusedOnDemandCeilingShape(block[member]);
10200
+ if (shape === void 0) continue;
10201
+ return `AWS::DynamoDB::Table ${logicalId}: ${path}.${member} must be an Integer CloudFormation accepts — an optional sign and decimal digits, with no surrounding whitespace, hex, exponent or decimal point; -1 removes an existing maximum (got ${shape}). CloudFormation refuses the same template`;
10202
+ }
10203
+ };
10204
+ const changed = (desired, recorded) => JSON.stringify(desired) !== JSON.stringify(recorded);
10205
+ if (previousProperties === void 0 || changed(properties["OnDemandThroughput"], previousProperties["OnDemandThroughput"])) {
10206
+ const refusal = blockRefusal(properties["OnDemandThroughput"], "OnDemandThroughput");
10207
+ if (refusal !== void 0) return refusal;
10208
+ }
10209
+ const desiredIndexes = properties["GlobalSecondaryIndexes"];
10210
+ if (!Array.isArray(desiredIndexes)) return void 0;
10211
+ const previousByName = /* @__PURE__ */ new Map();
10212
+ const previousIndexes = previousProperties?.["GlobalSecondaryIndexes"];
10213
+ if (Array.isArray(previousIndexes)) {
10214
+ for (const entry of previousIndexes) if (isPlainCapacityBlock(entry) && entry["IndexName"]) previousByName.set(entry["IndexName"], entry);
10215
+ }
10216
+ for (const [position, entry] of desiredIndexes.entries()) {
10217
+ if (!isPlainCapacityBlock(entry)) continue;
10218
+ if (previousProperties !== void 0) {
10219
+ const previous = previousByName.get(entry["IndexName"]);
10220
+ if (previous !== void 0 && !changed(entry["OnDemandThroughput"], previous["OnDemandThroughput"])) continue;
10221
+ }
10222
+ const refusal = blockRefusal(entry["OnDemandThroughput"], `GlobalSecondaryIndexes[${position}].OnDemandThroughput`);
10223
+ if (refusal !== void 0) return refusal;
10224
+ }
10225
+ }
10182
10226
  function liveCeilingAlreadyMatches(live, requested) {
10183
10227
  if (live === void 0) return false;
10184
10228
  const liveBag = live;
@@ -10496,6 +10540,8 @@ var DynamoDBTableProvider = class {
10496
10540
  if (streamRefusal !== void 0) throw new Error(`${streamRefusal}. Fix the template value`);
10497
10541
  const pitrRefusal = pointInTimeRecoveryRefusal(properties["PointInTimeRecoverySpecification"]);
10498
10542
  if (pitrRefusal !== void 0) throw new Error(`${pitrRefusal}. Fix the template value`);
10543
+ const ceilingRefusal = onDemandCeilingRefusal(properties, void 0, logicalId);
10544
+ if (ceilingRefusal !== void 0) throw new Error(`${ceilingRefusal}. Nothing was applied; fix the template value`);
10499
10545
  }
10500
10546
  const createParams = {
10501
10547
  TableName: tableName,
@@ -10596,6 +10642,10 @@ var DynamoDBTableProvider = class {
10596
10642
  const pitrRefusal = pointInTimeRecoveryRefusal(properties["PointInTimeRecoverySpecification"]);
10597
10643
  if (pitrRefusal !== void 0) throw new ProvisioningError(`AWS::DynamoDB::Table ${logicalId}: ${pitrRefusal}. Nothing was applied to the table; fix the template value`, resourceType, logicalId, physicalId);
10598
10644
  }
10645
+ if (context?.replayingState !== true && context?.desiredFromAwsReadback !== true) {
10646
+ const ceilingRefusal = onDemandCeilingRefusal(properties, previousProperties, logicalId);
10647
+ if (ceilingRefusal !== void 0) throw new ProvisioningError(`${ceilingRefusal}. Nothing was applied to the table; fix the template value`, resourceType, logicalId, physicalId);
10648
+ }
10599
10649
  const table = (await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: physicalId }))).Table;
10600
10650
  let latestStreamArn = table?.LatestStreamArn;
10601
10651
  if (table?.TableArn) await this.applyTagDiff(table.TableArn, resourceType, logicalId, previousProperties["Tags"], properties["Tags"]);
@@ -10701,7 +10751,7 @@ var DynamoDBTableProvider = class {
10701
10751
  gsiHandledByBillingFlip.add(indexName);
10702
10752
  }
10703
10753
  if (indexUpdates.length > 0) updateInput.GlobalSecondaryIndexUpdates = indexUpdates;
10704
- if (unspecified.length > 0) warn(`AWS::DynamoDB::Table ${logicalId}: flipping BillingMode to PROVISIONED, but the template declares no usable ProvisionedThroughput for live index(es) ${unspecified.map((n) => maskSecrets(n)).join(", ")}. AWS requires per-index capacity in the same UpdateTable and will reject the flip naming them. Declare GlobalSecondaryIndexes[].ProvisionedThroughput (both ReadCapacityUnits and WriteCapacityUnits) for each. An index this deploy REMOVES is deleted BEFORE the flip automatically (issue #1617), so a name here is one the template still keeps, one that exists in AWS but in neither the template nor cdkd state (created out of band), or one whose pre-flip removal was skipped for the reason warned above.`);
10754
+ if (unspecified.length > 0) warn(`AWS::DynamoDB::Table ${logicalId}: flipping BillingMode to PROVISIONED, but the template declares no usable ProvisionedThroughput for live index(es) ${unspecified.map((n) => maskSecrets(n)).join(", ")}. AWS requires per-index capacity in the same UpdateTable and will reject the flip naming them. Declare GlobalSecondaryIndexes[].ProvisionedThroughput (both ReadCapacityUnits and WriteCapacityUnits) for each. An index this deploy REMOVES is deleted BEFORE the flip automatically, so a name here is one the template still keeps, one that exists in AWS but in neither the template nor cdkd state (created out of band), or one whose pre-flip removal was skipped for the reason warned above.`);
10705
10755
  }
10706
10756
  await this.dynamoDBClient.send(new UpdateTableCommand(updateInput));
10707
10757
  if (billingMode !== liveBillingMode) await this.waitForTableAndIndexesActive(physicalId, BILLING_FLIP_ACTIVE_WAIT_ATTEMPTS);
@@ -11381,7 +11431,7 @@ var DynamoDBTableProvider = class {
11381
11431
  }
11382
11432
  warnUnusableOnDemandCeiling(scope, member, raw, maskSecrets) {
11383
11433
  const warn = (message) => this.logger.warn(maskSecrets(message));
11384
- warn(`${scope}: OnDemandThroughput.${member} ${JSON.stringify(maskLeafValue(raw, maskSecrets))} is not an Integer CloudFormation accepts (an optional sign and decimal digits only — no surrounding whitespace, hex, exponent or decimal point), so it was NOT sent and NO ceiling was substituted for it. Both OnDemandThroughput members are OPTIONAL to DynamoDB, so — unlike a ProvisionedThroughput member — AWS does not necessarily reject the request, and what happens next depends on the path: a CREATE gets no maximum for this half; an UPDATE KEEPS whatever maximum the table already carries, since only an explicit -1 removes one; and if NEITHER member was usable the block is sent EMPTY, which AWS ACCEPTS (measured us-east-1 2026-09-17) and stores as no maximum at all, so the deploy SUCCEEDS with no ceiling applied. cdkd's state keeps the value the template declared and \`cdkd drift\` reports the difference until the template is corrected; CloudFormation is expected to refuse the same template at properties validation. Check for an unresolved intrinsic, or spell the value as a decimal integer (\`-1\` removes an existing maximum).`);
11434
+ warn(`${scope}: OnDemandThroughput.${member} ${JSON.stringify(maskLeafValue(raw, maskSecrets))} is not an Integer CloudFormation accepts (an optional sign and decimal digits only — no surrounding whitespace, hex, exponent or decimal point), so it was NOT sent and NO ceiling was substituted for it. Both OnDemandThroughput members are OPTIONAL to DynamoDB, so — unlike a ProvisionedThroughput member — AWS does not necessarily reject the request, and what happens next depends on the path: a CREATE gets no maximum for this half; an UPDATE KEEPS whatever maximum the table already carries, since only an explicit -1 removes one; and if NEITHER member was usable the block is sent EMPTY, which AWS ACCEPTS and stores as no maximum at all, so the deploy SUCCEEDS with no ceiling applied. cdkd's state keeps the value the template declared and \`cdkd drift\` reports the difference until the template is corrected; CloudFormation is expected to refuse the same template at properties validation. Check for an unresolved intrinsic, or spell the value as a decimal integer (\`-1\` removes an existing maximum).`);
11385
11435
  }
11386
11436
  warnUnusableProvisionedCapacity(scope, member, raw, maskSecrets) {
11387
11437
  const warn = (message) => this.logger.warn(maskSecrets(message));
@@ -11395,7 +11445,7 @@ var DynamoDBTableProvider = class {
11395
11445
  skipZeroCapacityIndexUpdate(indexName, physicalId, requested, maskSecrets) {
11396
11446
  if (!isZeroCapacityPlaceholder(requested)) return false;
11397
11447
  const warn = (message) => this.logger.warn(maskSecrets(message));
11398
- warn(`${this.indexScopeAt(indexName, physicalId, maskSecrets)}: the requested ProvisionedThroughput is {ReadCapacityUnits: 0, WriteCapacityUnits: 0}, which is AWS's on-demand placeholder rather than a capacity DynamoDB accepts (the minimum is 1), so no per-index throughput update was sent. This usually means the value came from a pre-#1767 cdkd state record — a \`cdkd drift --revert\` of such a record, or a rollback replaying it. Re-run \`cdkd deploy\` (or \`cdkd drift --accept\`) to refresh the record.`);
11448
+ warn(`${this.indexScopeAt(indexName, physicalId, maskSecrets)}: the requested ProvisionedThroughput is {ReadCapacityUnits: 0, WriteCapacityUnits: 0}, which is AWS's on-demand placeholder rather than a capacity DynamoDB accepts (the minimum is 1), so no per-index throughput update was sent. This usually means the value came from a state record an older cdkd release wrote — a \`cdkd drift --revert\` of such a record, or a rollback replaying it. Re-run \`cdkd deploy\` (or \`cdkd drift --accept\`) to refresh the record.`);
11399
11449
  return true;
11400
11450
  }
11401
11451
  warmThroughputOpFor(indexName, physicalId, desired, previous, live, maskSecrets) {
@@ -14906,7 +14956,7 @@ var EC2Provider = class {
14906
14956
  }
14907
14957
  if (attempt < maxAttempts) await this.sleep(100 * 2 ** (attempt - 1));
14908
14958
  }
14909
- this.logger.debug(`MapPublicIpOnLaunch=${expected} not yet visible on ${subnetId} after ${maxAttempts} reads — the observed-state capture may record the stale value (issue #1299)`);
14959
+ this.logger.debug(`MapPublicIpOnLaunch=${expected} not yet visible on ${subnetId} after ${maxAttempts} reads — the observed-state capture may record the stale value`);
14910
14960
  }
14911
14961
  async deleteSubnet(logicalId, physicalId, resourceType, context) {
14912
14962
  this.logger.debug(`Deleting Subnet ${logicalId}: ${physicalId}`);
@@ -20208,7 +20258,7 @@ var ApiGatewayV2Provider = class {
20208
20258
  return merged;
20209
20259
  }
20210
20260
  warnTlsConfigIgnoredIfPublic(logicalId, properties, log) {
20211
- if (properties["TlsConfig"] != null && properties["ConnectionType"] !== "VPC_LINK") log.warn(`AWS::ApiGatewayV2::Integration ${logicalId}: TlsConfig is only honored on a VPC_LINK (private) integration — AWS silently ignores it on a public one, and the value will never be readable back from AWS (issue #1602).`);
20261
+ if (properties["TlsConfig"] != null && properties["ConnectionType"] !== "VPC_LINK") log.warn(`AWS::ApiGatewayV2::Integration ${logicalId}: TlsConfig is only honored on a VPC_LINK (private) integration — AWS silently ignores it on a public one, and the value will never be readable back from AWS.`);
20212
20262
  }
20213
20263
  toSdkResponseParameters(value, log) {
20214
20264
  const maskSecrets = log.mask;
@@ -28726,7 +28776,7 @@ var CognitoUserPoolProvider = class {
28726
28776
  if (!sendsPoliciesSubKey(previousProperties, subKey)) continue;
28727
28777
  if (sendsPoliciesSubKey(properties, subKey)) continue;
28728
28778
  const { label, reset } = POLICIES_SUB_KEY_ANNOUNCEMENT[subKey];
28729
- this.logger.warn(`UserPool ${physicalId}: the desired configuration no longer declares Policies.${subKey}, and no UpdateUserPool input can express that removal — omitting the sub-key PRESERVES the live value (measured us-east-1 2026-08-19, issue #1968), so the pool keeps its current ${label}. CloudFormation is the same no-op on the identical template edit (measured us-east-1 2026-09-02, issue #1979), so cdkd deliberately sends no reset. To change the live value, declare Policies.${subKey} explicitly with the intended configuration (${reset}).`);
28779
+ this.logger.warn(`UserPool ${physicalId}: the desired configuration no longer declares Policies.${subKey}, and no UpdateUserPool input can express that removal — omitting the sub-key PRESERVES the live value, so the pool keeps its current ${label}. CloudFormation is the same no-op on the identical template edit, so cdkd deliberately sends no reset. To change the live value, declare Policies.${subKey} explicitly with the intended configuration (${reset}).`);
28730
28780
  }
28731
28781
  }
28732
28782
  async update(logicalId, physicalId, resourceType, properties, previousProperties, context) {
@@ -32169,7 +32219,7 @@ function refuseNestedRename(args) {
32169
32219
  const remedyFlags = args.stateful ? "--replace --force-stateful-recreation" : "--replace";
32170
32220
  const shownRecorded = mask(recordedName);
32171
32221
  const shownDesired = mask(desiredName);
32172
- throw new ResourceUpdateNotSupportedError(args.resourceType, args.logicalId, `${args.field} changed from '${shownRecorded}' to '${shownDesired}', and cdkd cannot rename a Glue ${args.noun} in place — ${args.consequence(shownDesired)}. To rename it, re-deploy with ${remedyFlags}, which DELETEs the ${args.noun} '${shownRecorded}' and then CREATEs '${shownDesired}' (under UpdateReplacePolicy: Retain the old one is kept instead); the CREATE fails if a ${args.noun} named '${shownDesired}' already exists, after the DELETE. If the template did not change this name, the state record was left by an earlier deploy that wrote to '${shownDesired}' (issue #3724): check that ${args.noun} before re-deploying. Otherwise keep the name '${shownRecorded}'`);
32222
+ throw new ResourceUpdateNotSupportedError(args.resourceType, args.logicalId, `${args.field} changed from '${shownRecorded}' to '${shownDesired}', and cdkd cannot rename a Glue ${args.noun} in place — ${args.consequence(shownDesired)}. To rename it, re-deploy with ${remedyFlags}, which DELETEs the ${args.noun} '${shownRecorded}' and then CREATEs '${shownDesired}' (under UpdateReplacePolicy: Retain the old one is kept instead); the CREATE fails if a ${args.noun} named '${shownDesired}' already exists, after the DELETE. If the template did not change this name, the state record was left by an earlier deploy that wrote to '${shownDesired}': check that ${args.noun} before re-deploying. Otherwise keep the name '${shownRecorded}'`);
32173
32223
  }
32174
32224
  function secretNamePairs(values) {
32175
32225
  return values.map((value) => [value, typeof value === "string" ? value : void 0]);
@@ -33200,7 +33250,7 @@ function enforceIcebergTableInputAbsent(logicalId, resourceType, properties, opt
33200
33250
  throw new ProvisioningError(icebergTableInputRefusalMessage(logicalId, key, "create"), resourceType, logicalId);
33201
33251
  }
33202
33252
  function icebergTableInputRefusalMessage(logicalId, key, mode) {
33203
- return `AWS::Glue::Table ${logicalId}: OpenTableFormatInput.IcebergInput.${key} ${mode === "create" ? `cannot be deployed by AWS in any shape, so cdkd refuses it before calling Glue (issue #1454).` : mode === "create-replay" ? "cannot be deployed by AWS in any shape, so cdkd normally refuses it before calling Glue (issue #1454) — but this create is REPLAYING a historical cdkd STATE record (a rollback reverse-replacement re-creating the OLD table), not your template, and refusing would leave that table unrestorable with no template-side remedy, only a hand-edit of state.json. cdkd therefore warns and proceeds (issue #1463). The re-created table is DEGRADED exactly as the original was: under the CFn spelling IcebergTableInput the AWS SDK serializer drops the unknown member (issue #1390), so the table comes back without its Iceberg metadata; under the SDK spelling CreateIcebergTableInput the value IS sent and Glue rejects the call, failing this one rollback operation. Either way, fix it forward with 'cdkd deploy' using the working shape below." : "cannot be deployed by AWS in any shape and is IGNORED on update — cdkd does not wire Glue's update-only UpdateOpenTableFormatInput shape, so it forwards nothing here and only warns (issue #1454). A CREATE of this table would be refused outright."}\n Live-probed 2026-08-09 in us-east-1 (issue #1408): glue:CreateTable — the API cdkd calls — rejects every Iceberg table spec ("Location information cannot be null while creating an iceberg table" without a TableInput.StorageDescriptor, "Table metadata information present at multiple parts of input request" with one), and CloudFormation rolls the same template back with "Table metadata is expected only via TableInput or via IcebergTableInputProperties inside OpenTableFormatInput" — a property name that exists in neither the CFn registry schema (IcebergInput.IcebergTableInput) nor @aws-sdk/client-glue (IcebergInput.CreateIcebergTableInput).\n Working shape — put the table metadata in TableInput and leave IcebergInput carrying only the create-time directive:\n TableInput: { Name, TableType: 'EXTERNAL_TABLE', StorageDescriptor: { Location: 's3://your-bucket/prefix/', Columns: [...] } }\n OpenTableFormatInput: { IcebergInput: { MetadataOperation: 'CREATE' } } // Version: '2' is also accepted\n Glue then writes the Iceberg metadata itself — the created table comes back with Parameters.table_type = ICEBERG and a populated Parameters.metadata_location.`;
33253
+ return `AWS::Glue::Table ${logicalId}: OpenTableFormatInput.IcebergInput.${key} ${mode === "create" ? `cannot be deployed by AWS in any shape, so cdkd refuses it before calling Glue.` : mode === "create-replay" ? "cannot be deployed by AWS in any shape, so cdkd normally refuses it before calling Glue — but this create is REPLAYING a historical cdkd STATE record (a rollback reverse-replacement re-creating the OLD table), not your template, and refusing would leave that table unrestorable with no template-side remedy, only a hand-edit of state.json. cdkd therefore warns and proceeds. The re-created table is DEGRADED exactly as the original was: under the CFn spelling IcebergTableInput the AWS SDK serializer drops the unknown member, so the table comes back without its Iceberg metadata; under the SDK spelling CreateIcebergTableInput the value IS sent and Glue rejects the call, failing this one rollback operation. Either way, fix it forward with 'cdkd deploy' using the working shape below." : "cannot be deployed by AWS in any shape and is IGNORED on update — cdkd does not wire Glue's update-only UpdateOpenTableFormatInput shape, so it forwards nothing here and only warns. A CREATE of this table would be refused outright."}\n Measured against AWS: glue:CreateTable — the API cdkd calls — rejects every Iceberg table spec ("Location information cannot be null while creating an iceberg table" without a TableInput.StorageDescriptor, "Table metadata information present at multiple parts of input request" with one), and CloudFormation rolls the same template back with "Table metadata is expected only via TableInput or via IcebergTableInputProperties inside OpenTableFormatInput" — a property name that exists in neither the CFn registry schema (IcebergInput.IcebergTableInput) nor @aws-sdk/client-glue (IcebergInput.CreateIcebergTableInput).\n Working shape — put the table metadata in TableInput and leave IcebergInput carrying only the create-time directive:\n TableInput: { Name, TableType: 'EXTERNAL_TABLE', StorageDescriptor: { Location: 's3://your-bucket/prefix/', Columns: [...] } }\n OpenTableFormatInput: { IcebergInput: { MetadataOperation: 'CREATE' } } // Version: '2' is also accepted\n Glue then writes the Iceberg metadata itself — the created table comes back with Parameters.table_type = ICEBERG and a populated Parameters.metadata_location.`;
33204
33254
  }
33205
33255
  function buildEncryptionConfiguration(input) {
33206
33256
  const result = {};
@@ -36204,7 +36254,7 @@ var SchedulerScheduleProvider = class {
36204
36254
  const bag = getCurrentResourceSecrets();
36205
36255
  if (bag === void 0 || typeof desiredGroup !== "string") return false;
36206
36256
  if (typeof recordedGroup !== "string" || !recordedGroup.includes("{{resolve:")) return false;
36207
- return redactSecretsForState(desiredGroup, bag) !== recordedGroup;
36257
+ return withoutPhysicalNameCopies(bag, () => redactSecretsForState(desiredGroup, bag)) !== recordedGroup;
36208
36258
  }
36209
36259
  async update(logicalId, physicalId, resourceType, properties, previousProperties, context) {
36210
36260
  const groupName = this.groupNameOf(properties);
@@ -37024,7 +37074,7 @@ var EFSProvider = class {
37024
37074
  "AccessPointTags"
37025
37075
  ])]
37026
37076
  ]);
37027
- unhandledByDesign = /* @__PURE__ */ new Map([["AWS::EFS::FileSystem", /* @__PURE__ */ new Map([["ReplicationConfiguration", "Cross-region EFS replication (CreateReplicationConfiguration) provisions a separate destination file system in another region with its own lifecycle, KMS key, and availability-zone placement; replicating + then tearing down the destination on destroy is a multi-resource, cross-region orchestration that is out of scope for the single-resource SDK provider. Tracked as a follow-up to issue #609."]])], ["AWS::EFS::AccessPoint", /* @__PURE__ */ new Map([["ClientToken", "cdkd supplies its own retry-stable ClientToken on CreateAccessPoint (issues #2039 and #2080), so a template-supplied value would be overwritten. The SDK does not own this field either: measured against @aws-sdk/client-efs 3.1018.0, an omitted ClientToken is auto-filled with a FRESH uuid per attempt, which leaves a retried 500 free to mint a second access point, while a caller-supplied value goes on the wire verbatim."]])]]);
37077
+ unhandledByDesign = /* @__PURE__ */ new Map([["AWS::EFS::FileSystem", /* @__PURE__ */ new Map([["ReplicationConfiguration", "Cross-region EFS replication (CreateReplicationConfiguration) provisions a separate destination file system in another region with its own lifecycle, KMS key, and availability-zone placement; replicating + then tearing down the destination on destroy is a multi-resource, cross-region orchestration that is out of scope for the single-resource SDK provider."]])], ["AWS::EFS::AccessPoint", /* @__PURE__ */ new Map([["ClientToken", "cdkd supplies its own retry-stable ClientToken on CreateAccessPoint, so a template-supplied value would be overwritten. The SDK does not own this field either: an omitted ClientToken is auto-filled with a FRESH uuid per attempt, which leaves a retried 500 free to mint a second access point, while a caller-supplied value goes on the wire verbatim."]])]]);
37028
37078
  getClient() {
37029
37079
  if (!this.client) {
37030
37080
  this.client = new EFSClient({
@@ -40355,7 +40405,7 @@ var FirehoseProvider = class {
40355
40405
  if (activeDest && !SUPPORTED_UPDATE_DESTINATIONS.has(activeDest)) {
40356
40406
  const nextDest = properties[activeDest] ?? {};
40357
40407
  const prevDest = previousProperties[activeDest] ?? {};
40358
- if (JSON.stringify(nextDest) !== JSON.stringify(prevDest)) throw new ResourceUpdateNotSupportedError(resourceType, logicalId, `In-place update for '${activeDest}' on AWS::KinesisFirehose::DeliveryStream is not yet implemented in cdkd (AWS exposes UpdateDestination for it; the per-shape reverse-mapper is a follow-up to #549). Re-deploy with cdkd deploy --replace.`);
40408
+ if (JSON.stringify(nextDest) !== JSON.stringify(prevDest)) throw new ResourceUpdateNotSupportedError(resourceType, logicalId, `In-place update for '${activeDest}' on AWS::KinesisFirehose::DeliveryStream is not yet implemented in cdkd (AWS exposes UpdateDestination for it). Re-deploy with cdkd deploy --replace.`);
40359
40409
  }
40360
40410
  const nextTagsOk = isReadableTagList(properties["Tags"]);
40361
40411
  const prevTagsOk = isReadableTagList(previousProperties["Tags"]);
@@ -44069,14 +44119,14 @@ var NestedStackProvider = class {
44069
44119
  ["Description", "CFn-only informational — no semantic effect on the recursive deploy"],
44070
44120
  ["DisableRollback", "CFn-only — cdkd controls rollback via the top-level deploy-engine --no-rollback flag, not per nested stack"],
44071
44121
  ["EnableTerminationProtection", "CFn-only per-nested-stack flag — cdkd records stack-level terminationProtection at CDK synth time (parent only) and `cdkd destroy` consults that for refusal"],
44072
- ["NotificationARNs", "CFn-only SNS-on-stack-event surface — cdkd has no equivalent (issue #459 design §9)"],
44122
+ ["NotificationARNs", "CFn-only SNS-on-stack-event surface — cdkd has no equivalent"],
44073
44123
  ["RoleARN", "CFn-only role-assumption — cdkd uses the caller credentials directly, no per-resource role assumption"],
44074
44124
  ["StackName", "cdkd derives the child stack name as `<parent>~<logicalId>` per design §3 (state-key uniqueness); a user-provided StackName has no effect"],
44075
44125
  ["StackPolicyBody", "CFn-only stack-update policy — cdkd has no equivalent (per-resource diff replaces stack-level policy)"],
44076
44126
  ["StackPolicyURL", "CFn-only stack-update policy URL — cdkd has no equivalent"],
44077
44127
  ["StackStatusReason", "CFn-only read-only output — never a real input property"],
44078
44128
  ["Tags", "CFn-only — cdkd does not tag the synthesized \"stack\" (the parent's synthesized ARN is a cdkd-local placeholder, not a real AWS resource)"],
44079
- ["TimeoutInMinutes", "CFn-only stack-create deadline — cdkd uses per-resource --resource-timeout instead (issue #459 design §9)"]
44129
+ ["TimeoutInMinutes", "CFn-only stack-create deadline — cdkd uses per-resource --resource-timeout instead"]
44080
44130
  ])]]);
44081
44131
  async create(logicalId, resourceType, properties, context) {
44082
44132
  const ctx = this.requireContext();
@@ -44764,4 +44814,4 @@ var ACMCertificateProvider = class {
44764
44814
 
44765
44815
  //#endregion
44766
44816
  export { ACMCertificateProvider, ASGProvider, AgentCoreBrowserProvider, AgentCoreCodeInterpreterProvider, AgentCoreEvaluatorProvider, AgentCoreRuntimeProvider, ApiGatewayProvider, ApiGatewayV2Provider, AppSyncProvider, BudgetsBudgetProvider, CloudFrontDistributionProvider, CloudFrontOACProvider, CloudFrontOAIProvider, CloudTrailProvider, CloudWatchAlarmProvider, CloudWatchAnomalyDetectorProvider, CodeBuildProvider, CodeCommitRepositoryProvider, CognitoUserPoolProvider, DLMLifecyclePolicyProvider, DocDBProvider, DocDBSubnetGroupProvider, DynamoDBGlobalTableProvider, DynamoDBTableProvider, EC2Provider, ECRProvider, ECSProvider, EFSProvider, ELBv2Provider, EMRClusterProvider, EMRInstanceFleetConfigProvider, EMRInstanceGroupConfigProvider, ElastiCacheProvider, EventBridgeBusProvider, EventBridgeRuleProvider, FSxFileSystemProvider, FirehoseProvider, GlueConnectionProvider, GlueCrawlerProvider, GlueJobProvider, GlueProvider, GlueSecurityConfigurationProvider, GlueTriggerProvider, GlueWorkflowProvider, IAMAccessKeyProvider, IAMInstanceProfileProvider, IAMManagedPolicyProvider, IAMPolicyProvider, IAMRoleProvider, IAMUserGroupProvider, KMSProvider, KinesisStreamConsumerProvider, KinesisStreamProvider, LambdaEventInvokeConfigProvider, LambdaEventSourceMappingProvider, LambdaFunctionProvider, LambdaLayerVersionProvider, LambdaMicrovmImageProvider, LambdaPermissionProvider, LambdaUrlProvider, LogsLogGroupProvider, NeptuneProvider, NestedStackProvider, PipesPipeProvider, RDSDBProxyEndpointProvider, RDSDBProxyProvider, RDSDBProxyTargetGroupProvider, RDSProvider, Route53Provider, S3BucketPolicyProvider, S3BucketProvider, S3DirectoryBucketProvider, S3TablesProvider, S3VectorsProvider, SNSSubscriptionProvider, SNSTopicPolicyProvider, SNSTopicProvider, SQSQueuePolicyProvider, SQSQueueProvider, SSMParameterProvider, SchedulerScheduleProvider, SecretsManagerSecretProvider, ServiceDiscoveryProvider, StepFunctionsProvider, WAFv2WebACLProvider, WaitConditionHandleProvider };
44767
- //# sourceMappingURL=provider-classes-B7Z4-Zsc.js.map
44817
+ //# sourceMappingURL=provider-classes-1EHrZ847.js.map