@go-to-k/cdkd 0.290.31 → 0.290.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
- import { $ as secretBearing, $n as recordMaskOnlyValue, $r as AssetManifestLoader, $t as s3BucketArn, A as extractDeploymentEventError, Ai as getAwsClients, An as refuseMalformedState, Ar as BOOTSTRAP_MARKER_PREFIX, At as isImpossibleEmptyStoredAttribute, B as toCfnInteger, Bi as IntrinsicResolutionRefusalError, Bn as STATE_SOURCED_BASELINE_RULES, Br as buildDockerImage, Bt as coerceCfnBoolean, C as buildFinalSnapshotIdentifier, Ci as canonicalizeRegion, Cn as producerRecordKey, Cr as stringifyValue, Ct as isTerminationProtectionPropagationError, D as refusesFinalSnapshot, Dn as refuseMalformedOutputsForDestroy, Dr as loadPublishableAssetManifest, Dt as cfnRefValueFromPhysicalId, E as isFinalSnapshotError, Ei as processStackMessages, En as refuseMalformedOutputs, Er as createAssetRedirectResolver, Et as carriesFetchableDynamicReference, F as isStatefulRecreateTargetSync, Fn as findSilentDropProperties, Fr as parseBootstrapMarker, Ft as isSettledInstanceState, G as gray, Gi as NestedStackChildDirectDestroyError, Gn as createSecretMasker, Gr as formatDockerLoginError, Gt as readConfigString, H as formatResourceLine, Hi as LocalStartServiceError, Hn as STATE_SOURCED_READBACK_RULES, Hr as describeDockerExecFailure, Ht as configBooleanRefusal, I as renderStatefulReason, Ii as CrossAccountSecretRefusalError, In as describeTypeWithThrottleRetry, Ir as readBootstrapMarkerBody, It as WAFv2WebACLProvider, J as yellow, Ji as ResourceTimeoutError, Jn as identityKeyFor, Jr as redactDockerArgvValues, Jt as requireConfigObject, K as green, Ki as PartialFailureError, Kn as dynamicReferenceTokens, Kr as getDockerCmd, Kt as replayWarn, L as WARM_THROUGHPUT_MEMBERS, Ln as withRetry, Lr as validateAssetBucketName, Lt as normalizeAwsTagsToCfn, M as planOrphanAdoption, Mi as setAwsClients, Mn as repairMalformedResourcePropertiesForReadOnly, Mr as ensureAssetStorage, Mt as isUnboundTemplateParameter, N as MULTI_REGION_RECREATE_BLOCKED_TYPES, Nn as repairMalformedResourcesForReadOnly, Nr as getBootstrapMarkerKey, Nt as parameterTypeMayLoseSecretIdentity, O as unsupportedFinalSnapshotError, Oi as resolveBucketRegion, On as refuseMalformedResourcePropertiesForOrphan, Or as rewriteTemplateAssetReferences, Ot as coerceParameterTypedValue, P as isStatefulRecreateTargetForReplace, Pi as CdkdError, Pn as findActionableSilentDrops, Pr as isCrossRegionRedirect, Pt as refStateLookupFromResource, Q as isExportAliasCollision, Qn as maskSecretsInText, Qr as stripControlChars, Qt as withSharedDrainBudget, R as coerceWarmThroughput$1, Ri as DeployCancelledError, Rn as DagBuilder, Rr as validateContainerRepoName, Rt as resolveExplicitPhysicalId, S as PRE_DELETE_SNAPSHOT_TYPES, Si as PARTITION_TABLE, Sn as malformedStateRefusalMessage, Sr as AssetPublisher, St as disableInstanceApiTermination, T as createPreDeleteFinalSnapshot, Ti as AssemblyReader, Tn as refuseMalformedNestedChildOutputs, Tr as buildAssetRedirectMap, Tt as carriesDynamicReference, U as bold, Un as TEMPLATE_SOURCED_RULES, Ur as describeDockerFailure, Ut as configIntegerRefusal, V as toFiniteNumber, Vi as LocalInvokeBuildError$1, Vn as STATE_SOURCED_CROSS_GENERATION_RULES, Vr as describeDockerCapturedOutput, Vt as coerceCfnInteger, W as cyan, Wi as MalformedProducerRecordRefusalError, Wn as carriesSecretMask, Wr as dockerSpawnEnvWithSensitive, Wt as configStringRefusal, X as collectPublishedOutputNames, Xi as StackHasActiveImportsError, Xn as markSameGenerationBag, Xr as runDockerStreaming, Xt as classifyReplaySecretRegion, Y as collectDeclaredOutputNames, Yi as ResourceUpdateNotSupportedError, Yn as isSingleDynamicReferenceToken, Yr as runDockerForeground, Yt as requireConfigString, Z as exportAliasCollisionScrubWarning, Zi as StackTerminationProtectionError, Zn as maskSecretsInError, Zr as escapeRegExp, Zt as producerRegionsFromState, _ as isSecretBearingReferenceString, _i as findLargeInlineResources, _n as malformedOutputsRefusalMessage, _r as importableOutputs, _t as isWaitAbandonedError, a as DeploymentEventsStore, aa as isRetryableTransientError, ai as resolveApp, an as AWS_CREDENTIAL_ENV_KEYS, ar as rebuildClientForBucketRegion, at as clearOnUpdateRemoval, b as bindingSkippedOutputs, bi as decodeListingKey, bn as malformedResourcePropertiesWarning, br as orphansCarriedFrom, bt as deleteIndeterminateGuards, c as replayFailedOperations, ca as markNonRetryable, ci as resolveSkipPrefix, cn as envCredentialsAreAssumedRole, cr as buildLockContentionMessage, ct as createMaskedRetryLogger, d as updatePartialReason, da as describeAwsFailure, di as resolveUseCdkBootstrapAssets, dn as STATE_RESOURCES_MALFORMED, dr as shellQuote, dt as beginCommandInterruptScope, ei as getDockerImageBySourceHash, en as s3BucketDomainName, er as recoverMaskedOutput, et as secretBearingStateKeyWarning, f as withResourceDeadline, fa as safeStringify, fi as stateBucketExistenceConfirmed, fn as hasReadableOutputs, fr as CUSTOM_RESOURCE_RESPONSE_PREFIX, ft as endCommandInterruptScope, g as bagHoldsSecretExpression, gi as MIGRATE_TMP_PREFIX, gn as malformedLocalOutputsWarning, gr as importableOutputKeys, gt as CloudControlProvider, h as computeImplicitDeleteEdges, hi as CFN_TEMPLATE_URL_LIMIT, hn as malformedExportSourceWarning, hr as hasReadableExportSet, ht as startInterruptWatch, i as DeploymentEventsReader, ia as isMarkedNonRetryable, ii as getLegacyStateBucketName, in as applyRoleArnIfSet, ir as S3StateBackend, it as collectInlinePolicyNamesManagedBySiblings, j as makeSiblingClaimReader, ji as resetAwsClients, jn as repairMalformedOutputsForReadOnly, jr as assertAssetBucketRegion, jt as isNamelessDynamicReferenceError, k as makeCanonicalizePropertiesFn, ki as AwsClients, kn as refuseMalformedResourcesForDestroy, kr as AssetModeResolver, kt as getAccountInfo, l as replayRollback, la as markRedactedCause, li as resolveStateBucketWithDefault, ln as DiffCalculator, lr as forceQuitRecoveryClause, lt as maskDeep, m as IMPLICIT_DELETE_DEPENDENCIES, mi as CFN_TEMPLATE_BODY_LIMIT, mn as malformedExportNamesWarning, mr as exportNamesCarriedFrom, mt as isInterruptedWaitError, n as DEFAULT_RESOURCE_WARN_AFTER_MS, na as normalizeAwsError, ni as synthesisStatusMessage, nn as s3BucketRegionalDomainName, nr as scrubResourceRecord, nt as getCurrentResourceSecrets, o as planFailedOps, oa as isThrottlingError, oi as resolveAutoAssetStorage, on as applyCallerIdentityCredentials, or as UNREPRODUCIBLE_LOCK_CLAUSE, ot as ProviderRegistry, p as maskingRetryLogger, pi as warnDeprecatedNoPrefixCliFlag, pn as hasReadableResources, pr as DEFAULT_STATE_PREFIX, pt as interruptWatchListenerCount, q as red, qi as ProvisioningError, qn as errorCauseChain, qr as partitionSensitiveEnv, qt as requireConfigArray, r as DeployEngine, ra as withErrorHandling, ri as getDefaultStateBucketName, rn as s3BucketWebsiteUrl, rr as LockManager, rt as IAMRoleProvider, s as planRollback, sa as isTransientServerError, si as resolveCaptureObservedState, sn as callerEnvCredentials, sr as buildForceUnlockCommand, st as wouldReturnToSdkProvider, t as DEFAULT_RESOURCE_TIMEOUT_MS, ti as Synthesizer, tn as s3BucketDualStackDomainName, tr as redactSecretsForState, tt as secretSafeKeyDisplay, u as updatePartialMessage, ua as retryClassificationText, ui as resolveStateBucketWithDefaultAndSource, un as INTRINSIC_KEYS, ur as formatLockExpiry, ut as maskerOrIdentity, v as keptWholeReasonText, vi as uploadCfnTemplate, vn as malformedOutputsWarning, vr as isReadableBag, vt as slowCcOperationTimeoutMs, w as ccRoutedFinalSnapshotError, wi as derivePartitionAndUrlSuffix, wn as refuseDivergentRecordRegionForDestroy, wr as WorkGraph, wt as IntrinsicFunctionResolver, x as ATOMIC_FINAL_SNAPSHOT_TYPES, xi as expectedOwnerParam, xn as malformedResourcesWarning, xr as shouldRetainResource, xt as deleteSkipReason, y as mergeNoChangeOutputs, yi as CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION, yn as malformedRenderedContainersWarning, yr as orphansAfterRollback, yt as UNSPECIFIED_SKIP_REASON, z as isWarmThroughputDecrease, zi as DynamicReferenceRegionAmbiguousError, zn as TemplateParser, zr as buildDenyExternalAccessPolicy, zt as assertRegionMatch } from "./deploy-engine-21iNqwR3.js";
2
- import { C as displayAwsMessage, E as truncateCodePoints, S as UNRENDERABLE, T as displaySafe, _ as withSkipPrefix, b as SECRET_REF_MAX_CODE_POINTS, c as PATTERN_B_NAME_OPTIONS, f as explicitNamePropertyFor, h as getCurrentStackName, i as reserveStdoutForPayload, l as PATTERN_B_NAME_PROPERTIES, m as generateResourceNameWithFallback, n as getLogger, o as runStackBuffered, p as generateResourceName, s as getLiveRenderer, u as PATTERN_B_RESOURCE_TYPES, v as withStackName, w as displayIdent, x as STACK_REF_MAX_CODE_POINTS } from "./logger-BjWM-UVj.js";
1
+ import { $ as secretBearing, $n as recordMaskOnlyValue, $r as AssetManifestLoader, $t as s3BucketArn, A as extractDeploymentEventError, Ai as getAwsClients, An as refuseMalformedState, Ar as BOOTSTRAP_MARKER_PREFIX, At as isImpossibleEmptyStoredAttribute, B as toCfnInteger, Bi as IntrinsicResolutionRefusalError, Bn as STATE_SOURCED_BASELINE_RULES, Br as buildDockerImage, Bt as coerceCfnBoolean, C as buildFinalSnapshotIdentifier, Ci as canonicalizeRegion, Cn as producerRecordKey, Cr as stringifyValue, Ct as isTerminationProtectionPropagationError, D as refusesFinalSnapshot, Dn as refuseMalformedOutputsForDestroy, Dr as loadPublishableAssetManifest, Dt as cfnRefValueFromPhysicalId, E as isFinalSnapshotError, Ei as processStackMessages, En as refuseMalformedOutputs, Er as createAssetRedirectResolver, Et as carriesFetchableDynamicReference, F as isStatefulRecreateTargetSync, Fn as findSilentDropProperties, Fr as parseBootstrapMarker, Ft as isSettledInstanceState, G as gray, Gi as NestedStackChildDirectDestroyError, Gn as createSecretMasker, Gr as formatDockerLoginError, Gt as readConfigString, H as formatResourceLine, Hi as LocalStartServiceError, Hn as STATE_SOURCED_READBACK_RULES, Hr as describeDockerExecFailure, Ht as configBooleanRefusal, I as renderStatefulReason, Ii as CrossAccountSecretRefusalError, In as describeTypeWithThrottleRetry, Ir as readBootstrapMarkerBody, It as WAFv2WebACLProvider, J as yellow, Ji as ResourceTimeoutError, Jn as identityKeyFor, Jr as redactDockerArgvValues, Jt as requireConfigObject, K as green, Ki as PartialFailureError, Kn as dynamicReferenceTokens, Kr as getDockerCmd, Kt as replayWarn, L as WARM_THROUGHPUT_MEMBERS, Ln as withRetry, Lr as validateAssetBucketName, Lt as normalizeAwsTagsToCfn, M as planOrphanAdoption, Mi as setAwsClients, Mn as repairMalformedResourcePropertiesForReadOnly, Mr as ensureAssetStorage, Mt as isUnboundTemplateParameter, N as MULTI_REGION_RECREATE_BLOCKED_TYPES, Nn as repairMalformedResourcesForReadOnly, Nr as getBootstrapMarkerKey, Nt as parameterTypeMayLoseSecretIdentity, O as unsupportedFinalSnapshotError, Oi as resolveBucketRegion, On as refuseMalformedResourcePropertiesForOrphan, Or as rewriteTemplateAssetReferences, Ot as coerceParameterTypedValue, P as isStatefulRecreateTargetForReplace, Pi as CdkdError, Pn as findActionableSilentDrops, Pr as isCrossRegionRedirect, Pt as refStateLookupFromResource, Q as isExportAliasCollision, Qn as maskSecretsInText, Qr as stripControlChars, Qt as withSharedDrainBudget, R as coerceWarmThroughput$1, Ri as DeployCancelledError, Rn as DagBuilder, Rr as validateContainerRepoName, Rt as resolveExplicitPhysicalId, S as PRE_DELETE_SNAPSHOT_TYPES, Si as PARTITION_TABLE, Sn as malformedStateRefusalMessage, Sr as AssetPublisher, St as disableInstanceApiTermination, T as createPreDeleteFinalSnapshot, Ti as AssemblyReader, Tn as refuseMalformedNestedChildOutputs, Tr as buildAssetRedirectMap, Tt as carriesDynamicReference, U as bold, Un as TEMPLATE_SOURCED_RULES, Ur as describeDockerFailure, Ut as configIntegerRefusal, V as toFiniteNumber, Vi as LocalInvokeBuildError$1, Vn as STATE_SOURCED_CROSS_GENERATION_RULES, Vr as describeDockerCapturedOutput, Vt as coerceCfnInteger, W as cyan, Wi as MalformedProducerRecordRefusalError, Wn as carriesSecretMask, Wr as dockerSpawnEnvWithSensitive, Wt as configStringRefusal, X as collectPublishedOutputNames, Xi as StackHasActiveImportsError, Xn as markSameGenerationBag, Xr as runDockerStreaming, Xt as classifyReplaySecretRegion, Y as collectDeclaredOutputNames, Yi as ResourceUpdateNotSupportedError, Yn as isSingleDynamicReferenceToken, Yr as runDockerForeground, Yt as requireConfigString, Z as exportAliasCollisionScrubWarning, Zi as StackTerminationProtectionError, Zn as maskSecretsInError, Zr as escapeRegExp, Zt as producerRegionsFromState, _ as isSecretBearingReferenceString, _i as findLargeInlineResources, _n as malformedOutputsRefusalMessage, _r as importableOutputs, _t as isWaitAbandonedError, a as DeploymentEventsStore, aa as isRetryableTransientError, ai as resolveApp, an as AWS_CREDENTIAL_ENV_KEYS, ar as rebuildClientForBucketRegion, at as clearOnUpdateRemoval, b as bindingSkippedOutputs, bi as decodeListingKey, bn as malformedResourcePropertiesWarning, br as orphansCarriedFrom, bt as deleteIndeterminateGuards, c as replayFailedOperations, ca as markNonRetryable, ci as resolveSkipPrefix, cn as envCredentialsAreAssumedRole, cr as buildLockContentionMessage, ct as createMaskedRetryLogger, d as updatePartialReason, da as describeAwsFailure, di as resolveUseCdkBootstrapAssets, dn as STATE_RESOURCES_MALFORMED, dr as shellQuote, dt as beginCommandInterruptScope, ei as getDockerImageBySourceHash, en as s3BucketDomainName, er as recoverMaskedOutput, et as secretBearingStateKeyWarning, f as withResourceDeadline, fa as safeStringify, fi as stateBucketExistenceConfirmed, fn as hasReadableOutputs, fr as CUSTOM_RESOURCE_RESPONSE_PREFIX, ft as endCommandInterruptScope, g as bagHoldsSecretExpression, gi as MIGRATE_TMP_PREFIX, gn as malformedLocalOutputsWarning, gr as importableOutputKeys, gt as CloudControlProvider, h as computeImplicitDeleteEdges, hi as CFN_TEMPLATE_URL_LIMIT, hn as malformedExportSourceWarning, hr as hasReadableExportSet, ht as startInterruptWatch, i as DeploymentEventsReader, ia as isMarkedNonRetryable, ii as getLegacyStateBucketName, in as applyRoleArnIfSet, ir as S3StateBackend, it as collectInlinePolicyNamesManagedBySiblings, j as makeSiblingClaimReader, ji as resetAwsClients, jn as repairMalformedOutputsForReadOnly, jr as assertAssetBucketRegion, jt as isNamelessDynamicReferenceError, k as makeCanonicalizePropertiesFn, ki as AwsClients, kn as refuseMalformedResourcesForDestroy, kr as AssetModeResolver, kt as getAccountInfo, l as replayRollback, la as markRedactedCause, li as resolveStateBucketWithDefault, ln as DiffCalculator, lr as forceQuitRecoveryClause, lt as maskDeep, m as IMPLICIT_DELETE_DEPENDENCIES, mi as CFN_TEMPLATE_BODY_LIMIT, mn as malformedExportNamesWarning, mr as exportNamesCarriedFrom, mt as isInterruptedWaitError, n as DEFAULT_RESOURCE_WARN_AFTER_MS, na as normalizeAwsError, ni as synthesisStatusMessage, nn as s3BucketRegionalDomainName, nr as scrubResourceRecord, nt as getCurrentResourceSecrets, o as planFailedOps, oa as isThrottlingError, oi as resolveAutoAssetStorage, on as applyCallerIdentityCredentials, or as UNREPRODUCIBLE_LOCK_CLAUSE, ot as ProviderRegistry, p as maskingRetryLogger, pi as warnDeprecatedNoPrefixCliFlag, pn as hasReadableResources, pr as DEFAULT_STATE_PREFIX, pt as interruptWatchListenerCount, q as red, qi as ProvisioningError, qn as errorCauseChain, qr as partitionSensitiveEnv, qt as requireConfigArray, r as DeployEngine, ra as withErrorHandling, ri as getDefaultStateBucketName, rn as s3BucketWebsiteUrl, rr as LockManager, rt as IAMRoleProvider, s as planRollback, sa as isTransientServerError, si as resolveCaptureObservedState, sn as callerEnvCredentials, sr as buildForceUnlockCommand, st as wouldReturnToSdkProvider, t as DEFAULT_RESOURCE_TIMEOUT_MS, ti as Synthesizer, tn as s3BucketDualStackDomainName, tr as redactSecretsForState, tt as secretSafeKeyDisplay, u as updatePartialMessage, ua as retryClassificationText, ui as resolveStateBucketWithDefaultAndSource, un as INTRINSIC_KEYS, ur as formatLockExpiry, ut as maskerOrIdentity, v as keptWholeReasonText, vi as uploadCfnTemplate, vn as malformedOutputsWarning, vr as isReadableBag, vt as slowCcOperationTimeoutMs, w as ccRoutedFinalSnapshotError, wi as derivePartitionAndUrlSuffix, wn as refuseDivergentRecordRegionForDestroy, wr as WorkGraph, wt as IntrinsicFunctionResolver, x as ATOMIC_FINAL_SNAPSHOT_TYPES, xi as expectedOwnerParam, xn as malformedResourcesWarning, xr as shouldRetainResource, xt as deleteSkipReason, y as mergeNoChangeOutputs, yi as CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION, yn as malformedRenderedContainersWarning, yr as orphansAfterRollback, yt as UNSPECIFIED_SKIP_REASON, z as isWarmThroughputDecrease, zi as DynamicReferenceRegionAmbiguousError, zn as TemplateParser, zr as buildDenyExternalAccessPolicy, zt as assertRegionMatch } from "./deploy-engine-CfOsVRQB.js";
2
+ import { C as displayAwsMessage, D as truncateCodePoints, E as isPasteableIdent, S as UNRENDERABLE, T as displaySafe, _ as withSkipPrefix, b as SECRET_REF_MAX_CODE_POINTS, c as PATTERN_B_NAME_OPTIONS, f as explicitNamePropertyFor, h as getCurrentStackName, i as reserveStdoutForPayload, l as PATTERN_B_NAME_PROPERTIES, m as generateResourceNameWithFallback, n as getLogger, o as runStackBuffered, p as generateResourceName, s as getLiveRenderer, u as PATTERN_B_RESOURCE_TYPES, v as withStackName, w as displayIdent, x as STACK_REF_MAX_CODE_POINTS } from "./logger-BX4pJk0T.js";
3
3
  import { n as awsClientDefaults } from "./aws-client-defaults-BoIxyCir.js";
4
- import { t as getCdkdVersion } from "./version-IwTfNQ-K.js";
5
- import { a as renderDisableCommand, i as protectedReplacementAdvice, r as UNNAMEABLE_ID_CLAUSE, t as ASGProvider } from "./asg-provider-DNzgk-BS.js";
4
+ import { t as getCdkdVersion } from "./version-F41ektvu.js";
5
+ import { a as renderDisableCommand, i as protectedReplacementAdvice, r as UNNAMEABLE_ID_CLAUSE, t as ASGProvider } from "./asg-provider-BuEvX2d9.js";
6
6
  import { AsyncLocalStorage } from "node:async_hooks";
7
7
  import { createHash, randomBytes, randomUUID } from "node:crypto";
8
8
  import { CopyObjectCommand, CreateBucketCommand, DeleteBucketAnalyticsConfigurationCommand, DeleteBucketCommand, DeleteBucketCorsCommand, DeleteBucketEncryptionCommand, DeleteBucketIntelligentTieringConfigurationCommand, DeleteBucketInventoryConfigurationCommand, DeleteBucketLifecycleCommand, DeleteBucketMetricsConfigurationCommand, DeleteBucketOwnershipControlsCommand, DeleteBucketPolicyCommand, DeleteBucketReplicationCommand, DeleteBucketTaggingCommand, DeleteBucketWebsiteCommand, DeleteObjectsCommand, GetBucketAccelerateConfigurationCommand, GetBucketCorsCommand, GetBucketEncryptionCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketLoggingCommand, GetBucketNotificationConfigurationCommand, GetBucketOwnershipControlsCommand, GetBucketPolicyCommand, GetBucketReplicationCommand, GetBucketTaggingCommand, GetBucketVersioningCommand, GetBucketWebsiteCommand, GetObjectCommand, GetObjectLockConfigurationCommand, GetPublicAccessBlockCommand, HeadBucketCommand, ListBucketAnalyticsConfigurationsCommand, ListBucketIntelligentTieringConfigurationsCommand, ListBucketInventoryConfigurationsCommand, ListBucketMetricsConfigurationsCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchBucket, NotFound, PutBucketAccelerateConfigurationCommand, PutBucketAnalyticsConfigurationCommand, PutBucketCorsCommand, PutBucketEncryptionCommand, PutBucketIntelligentTieringConfigurationCommand, PutBucketInventoryConfigurationCommand, PutBucketLifecycleConfigurationCommand, PutBucketLoggingCommand, PutBucketMetricsConfigurationCommand, PutBucketNotificationConfigurationCommand, PutBucketOwnershipControlsCommand, PutBucketPolicyCommand, PutBucketReplicationCommand, PutBucketTaggingCommand, PutBucketVersioningCommand, PutBucketWebsiteCommand, PutObjectCommand, PutObjectLockConfigurationCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
@@ -270,35 +270,6 @@ function describeStateKey(key, suffix = STATE_FILE_SUFFIX, knownPrefix) {
270
270
  return region === void 0 ? name : `${name} (${displayIdent(region)})`;
271
271
  }
272
272
  /**
273
- * The shape a state-key segment must have before it may be interpolated into a
274
- * command cdkd invites an operator to PASTE.
275
- *
276
- * An ALLOW-LIST, and deliberately so: the first cut of this predicate was a
277
- * deny-list that refused a leading `-`, and review defeated it with a leading
278
- * `~`. A deny-list has to enumerate every character a shell treats specially
279
- * BEFORE cdkd sees the word, and the set of things nobody thought of is
280
- * unbounded. The repo already settled this once — `rollback-executor.ts`'s
281
- * `PASTEABLE_LOGICAL_ID` is `/^[A-Za-z0-9]{1,255}$/`, with a comment naming
282
- * `~user` and `=x` by name.
283
- *
284
- * This one is wider than that because the values here are not logical ids: a
285
- * cdkd state record's stack name carries `~` (a nested-stack child is minted
286
- * `${parent}~${logicalId}`) and a region carries `-`. What it keeps from the
287
- * precedent is the LEADING character, which is where the danger is. MEASURED
288
- * in bash on a real host rather than reasoned:
289
- *
290
- * ~root -> /var/root ~/x -> $HOME/x ~- -> $OLDPWD
291
- * a=~/x -> a=$HOME/x
292
- * Parent~Child -> inert a:~/x -> inert
293
- *
294
- * So `~` is dangerous only in the leading position or straight after `=`,
295
- * which is why a medial `~` stays in the set and `=` stays out of it entirely.
296
- * A leading digit or letter also closes the option case: `--state-bucket=x`
297
- * cannot match, and that one is NOT about shell quoting — it is still an
298
- * OPTION after quoting, which is why the answer is refusal rather than quoting.
299
- */
300
- const PASTEABLE_STATE_IDENT = /^[A-Za-z0-9][A-Za-z0-9~_.-]*$/;
301
- /**
302
273
  * The cap for rendering a whole state or lock KEY, as opposed to one segment.
303
274
  *
304
275
  * A key CONTAINS a stack name, so capping it at `STACK_REF_MAX_CODE_POINTS`
@@ -314,28 +285,6 @@ const PASTEABLE_STATE_IDENT = /^[A-Za-z0-9][A-Za-z0-9~_.-]*$/;
314
285
  * BUDGET, not an enforced bound. Nothing in `src/` validates key length.
315
286
  */
316
287
  const STATE_KEY_MAX_CODE_POINTS = STACK_REF_MAX_CODE_POINTS + 64;
317
- /**
318
- * Is this value safe to interpolate into a command we tell an operator to RUN?
319
- *
320
- * Two independent tests, and BOTH are load-bearing:
321
- *
322
- * 1. {@link PASTEABLE_STATE_IDENT}, which decides the shell question — see its
323
- * own note for why it is an allow-list and what was measured.
324
- * 2. It renders byte-identically through `displayIdent`, which adds the LENGTH
325
- * cap and the ASCII rule the regex does not carry, asked through the public
326
- * API rather than by re-spelling `PLAIN_IDENT` (a second spelling of a
327
- * security predicate is how the two drift).
328
- *
329
- * Deliberately NOT shell-quoting instead. Quoting answers test 2's population
330
- * and none of the option case — `'--state-bucket=attacker'` is still parsed as
331
- * a flag — and a command that LOOKS runnable is the thing being handed over, so
332
- * the honest answer for a value failing either test is to print the S3 key and
333
- * let the operator decide.
334
- */
335
- function isPasteableIdent(value) {
336
- if (!PASTEABLE_STATE_IDENT.test(value)) return false;
337
- return displayIdent(value, { maxCodePoints: STACK_REF_MAX_CODE_POINTS }) === value;
338
- }
339
288
 
340
289
  //#endregion
341
290
  //#region src/cli/options.ts
@@ -69751,17 +69700,31 @@ function isTemplateShapeResolutionFailure(err) {
69751
69700
  * Per-pattern throw sites, and the fence that keeps them true, are in
69752
69701
  * `tests/unit/cli/scrub-abandoned-scan-origin.test.ts`.
69753
69702
  *
69754
- * ONE CLASSIFICATION CHANGE, recorded because it is a GATE and this file does
69755
- * not otherwise mention it. go-to-k/cdkd#3426 routed the `Ref <id> not found`
69756
- * throw through the resolver's display builder, which strips control
69703
+ * TWO CLASSIFICATION CHANGES, recorded because they are a GATE and this file
69704
+ * does not otherwise mention them. go-to-k/cdkd#3426 routed the `Ref <id> not
69705
+ * found` throw through the resolver's display builder, which strips control
69757
69706
  * characters and trims — so an id carrying a CR or padding, which `\S+` could
69758
69707
  * not match before, matches now, and such a unit moves from `count` (gateable
69759
- * by `cdkd scrub --dry-run --fail`) to `warn` (not). The SAFE direction would
69760
- * have been the other one, and it is accepted for a reason: a plain dangling
69761
- * `Ref` already warned, so this adds no NEW bypass — it extends an existing
69762
- * classification to ids that differ from an ordinary one only by characters
69763
- * nobody can see. The alternative is a gate whose verdict depends on invisible
69764
- * bytes in a logical id, which is worse to reason about. Pinned by
69708
+ * by `cdkd scrub --dry-run --fail`) to `warn` (not). go-to-k/cdkd#3432 did the
69709
+ * same to `Resource <id> not found for Fn::GetAtt`, the SECOND pattern below,
69710
+ * for the same reason and with the same effect. Both are listed here rather
69711
+ * than one, because a note naming a single pattern reads as a property of that
69712
+ * pattern instead of a property of every id-bearing shape in the list. THE
69713
+ * THIRD moved too, in go-to-k/cdkd#3432's own review round: `Parameter <name>
69714
+ * is required ...` carried the same premise one expression name over — a
69715
+ * `Parameters` KEY is arbitrary JSON just as a `Resources` key is — and a
69716
+ * reviewer measured it putting a live terminal-rewriting sequence on that
69717
+ * throw. So all THREE patterns now see a sanitized id, and this note names no
69718
+ * exception; an earlier revision of it described the third as the one still
69719
+ * rendered raw, which would have shipped as a standing description of a live
69720
+ * exposure.
69721
+ *
69722
+ * The SAFE direction would have been the other one, and it is accepted for a
69723
+ * reason: a plain dangling `Ref`, `Fn::GetAtt` or unbound parameter already
69724
+ * warned, so this adds no NEW bypass — it extends an existing classification to
69725
+ * ids that differ from an ordinary one only by characters nobody can see. The
69726
+ * alternative is a gate whose verdict depends on invisible bytes in a logical
69727
+ * id, which is worse to reason about. All three are pinned by
69765
69728
  * `tests/unit/cli/scrub-abandoned-scan-origin.test.ts`.
69766
69729
  */
69767
69730
  const TEMPLATE_SHAPE_FAILURE_PATTERNS = [
@@ -84098,19 +84061,20 @@ async function orphanCommand(pathArgs, options) {
84098
84061
  })).stacks);
84099
84062
  const stackInfo = resolved.stack;
84100
84063
  const orphanLogicalIds = resolved.logicalIds;
84101
- const targetRegion = await pickStackRegion(stateBackend, stackInfo.stackName, stackInfo.region, options.stackRegion);
84064
+ const { region: targetRegion, recordRegion } = await pickStackRegion(stateBackend, stackInfo.stackName, stackInfo.region, options.stackRegion);
84102
84065
  logger.info(`Target: ${stackInfo.stackName} (${targetRegion}); orphaning ${orphanLogicalIds.length} resource(s): ${orphanLogicalIds.join(", ")}`);
84103
84066
  const owner = `${process.env["USER"] || "unknown"}@${process.env["HOSTNAME"] || "host"}:${process.pid}`;
84067
+ const recovery = {
84068
+ profile: options.profile,
84069
+ stateBucket,
84070
+ statePrefix: options.statePrefix
84071
+ };
84104
84072
  if (!options.dryRun) {
84105
84073
  if (!await lockManager.acquireLock(stackInfo.stackName, targetRegion, owner, "orphan")) throw new Error(await buildLockContentionMessage({
84106
84074
  lockManager,
84107
84075
  stackName: stackInfo.stackName,
84108
84076
  region: targetRegion,
84109
- recovery: {
84110
- profile: options.profile,
84111
- stateBucket,
84112
- statePrefix: options.statePrefix
84113
- }
84077
+ recovery
84114
84078
  }));
84115
84079
  }
84116
84080
  try {
@@ -84119,7 +84083,7 @@ async function orphanCommand(pathArgs, options) {
84119
84083
  const { state, etag, migrationPending } = stateData;
84120
84084
  refuseMalformedState(state, stackInfo.stackName, targetRegion);
84121
84085
  refuseMalformedOutputs(state, stackInfo.stackName, targetRegion);
84122
- refuseMalformedResourcePropertiesForOrphan(state, orphanLogicalIds, stackInfo.stackName, targetRegion);
84086
+ refuseMalformedResourcePropertiesForOrphan(state, orphanLogicalIds, stackInfo.stackName, recordRegion, recovery);
84123
84087
  const missing = orphanLogicalIds.filter((id) => !(id in state.resources));
84124
84088
  if (missing.length > 0) {
84125
84089
  const have = Object.keys(state.resources ?? {}).join(", ");
@@ -84214,8 +84178,14 @@ function resolveConstructPaths(paths, stacks) {
84214
84178
  async function pickStackRegion(stateBackend, stackName, synthRegion, flag) {
84215
84179
  const refs = (await stateBackend.listStacks()).filter((r) => r.stackName === stackName);
84216
84180
  if (refs.length === 0) {
84217
- if (flag) return flag;
84218
- if (synthRegion) return synthRegion;
84181
+ if (flag) return {
84182
+ region: flag,
84183
+ recordRegion: flag
84184
+ };
84185
+ if (synthRegion) return {
84186
+ region: synthRegion,
84187
+ recordRegion: synthRegion
84188
+ };
84219
84189
  throw new Error(`No state found for stack '${stackName}'. Run 'cdkd state list' to see available stacks.`);
84220
84190
  }
84221
84191
  if (flag) {
@@ -84223,12 +84193,24 @@ async function pickStackRegion(stateBackend, stackName, synthRegion, flag) {
84223
84193
  const seen = refs.map((r) => r.region ?? "(legacy)").join(", ");
84224
84194
  throw new Error(`No state found for stack '${stackName}' in region '${flag}'. Available regions: ${seen}.`);
84225
84195
  }
84226
- return flag;
84196
+ return {
84197
+ region: flag,
84198
+ recordRegion: flag
84199
+ };
84227
84200
  }
84228
84201
  if (synthRegion) {
84229
- if (refs.find((r) => r.region === synthRegion)) return synthRegion;
84202
+ if (refs.find((r) => r.region === synthRegion)) return {
84203
+ region: synthRegion,
84204
+ recordRegion: synthRegion
84205
+ };
84206
+ }
84207
+ if (refs.length === 1) {
84208
+ const recordRegion = refs[0].region;
84209
+ return {
84210
+ region: recordRegion ?? synthRegion ?? "",
84211
+ recordRegion
84212
+ };
84230
84213
  }
84231
- if (refs.length === 1) return refs[0].region ?? synthRegion ?? "";
84232
84214
  const regions = refs.map((r) => r.region ?? "(legacy)").join(", ");
84233
84215
  throw new Error(`Stack '${stackName}' has state in multiple regions: ${regions}. Re-run with --stack-region <region> to disambiguate.`);
84234
84216
  }
@@ -88998,11 +88980,12 @@ const CONTAINER_AWS_CREDENTIALS_PATH = "/cdkd-aws/credentials";
88998
88980
  * file behind in `/tmp` is a security smell (temp credentials live on
88999
88981
  * disk).
89000
88982
  */
89001
- async function writeProfileCredentialsFile(profileName, creds) {
88983
+ async function writeProfileCredentialsFile(profileName, creds, opts) {
89002
88984
  if (profileName === "") throw new Error("writeProfileCredentialsFile: profile name must not be empty.");
89003
88985
  if (/[\r\n[\]]/.test(profileName)) throw new Error(`writeProfileCredentialsFile: profile name ${displayIdent(profileName)} contains a forbidden character (any of CR, LF, '[', ']' would corrupt the INI file or the docker -e env var).`);
89004
88986
  const dir = await mkdtemp(path.join(tmpdir(), "cdkd-profile-creds-"));
89005
88987
  const hostPath = path.join(dir, "credentials");
88988
+ opts?.onDirCreated?.(hostPath);
89006
88989
  const lines = [
89007
88990
  `[${profileName}]`,
89008
88991
  `aws_access_key_id = ${creds.accessKeyId}`,
@@ -89012,10 +88995,16 @@ async function writeProfileCredentialsFile(profileName, creds) {
89012
88995
  try {
89013
88996
  await writeFile(hostPath, lines.join("\n") + "\n", { mode: 384 });
89014
88997
  } catch (err) {
88998
+ let removed = true;
89015
88999
  await rm(dir, {
89016
89000
  recursive: true,
89017
89001
  force: true
89018
- }).catch(() => {});
89002
+ }).catch(() => {
89003
+ removed = false;
89004
+ });
89005
+ if (removed) try {
89006
+ opts?.onDirRemoved?.(hostPath);
89007
+ } catch {}
89019
89008
  throw err;
89020
89009
  }
89021
89010
  return {
@@ -89030,6 +89019,46 @@ async function writeProfileCredentialsFile(profileName, creds) {
89030
89019
  }
89031
89020
  };
89032
89021
  }
89022
+ /**
89023
+ * The sentence an exit path owes when it leaves this file on disk
89024
+ * (issue [#3410](https://github.com/go-to-k/cdkd/issues/3410)).
89025
+ *
89026
+ * Takes the PATH rather than the `ProfileCredentialsFile` (go-to-k/cdkd#3435
89027
+ * review): a caller on a signal path may hold the path from
89028
+ * `writeProfileCredentialsFile`'s `onDirCreated` hook while the file object
89029
+ * itself is still an unresolved promise, and the sentence is the same either
89030
+ * way. `undefined` renders nothing, so a run that passed no `--profile` is not
89031
+ * told about a path that does not exist.
89032
+ *
89033
+ * ## Why the remedy is to NAME the path rather than to remove it
89034
+ *
89035
+ * Every exit path that can reach this notice leaves the CONTAINERS running with
89036
+ * this file bind-mounted, and that is the premise `local-run-task.ts`'s detach
89037
+ * arm already records: the file cannot be disposed there precisely because the
89038
+ * containers outlive the process. A force-exit is the same situation reached a
89039
+ * different way -- "container cleanup skipped" is what it announces -- so the
89040
+ * synchronous `rmSync` that suggests itself would be removing a mount the
89041
+ * surviving containers are still reading, on the strength of a premise this
89042
+ * repo has not measured either way. What the file is instead is INVISIBLE: it
89043
+ * is mode-0600 in `$TMPDIR`, nothing reports it, and one accumulates per
89044
+ * force-quit. Naming it is what the operator can act on, and it is what the
89045
+ * detach arm already does.
89046
+ *
89047
+ * ONE BUILDER FOR ALL THREE SITES, not three sentences that agree today. They
89048
+ * say the same thing for the same reason -- the two force-exit arms
89049
+ * (`local-run-task.ts`, `local-start-api.ts`) and the detach notice -- and a
89050
+ * wording that drifts between them is how an operator learns to read one shape
89051
+ * and miss another. Each CALLER supplies its own cause clause; this supplies
89052
+ * the remedy.
89053
+ *
89054
+ * `displayIdent` for the same reason the detach arm gives: the path is cdkd's
89055
+ * own `mkdtemp` output, so sanitization is the identity on it, but the rule
89056
+ * belongs to the SURFACE rather than to the value.
89057
+ */
89058
+ function strandedProfileCredentialsNotice(hostPath) {
89059
+ if (hostPath === void 0) return void 0;
89060
+ return `The AWS credentials file mounted into the containers is NOT removed: delete ${displayIdent(hostPath)} once you tear them down.`;
89061
+ }
89033
89062
 
89034
89063
  //#endregion
89035
89064
  //#region src/local/websocket-body.ts
@@ -89907,6 +89936,7 @@ async function localStartApiCommand(target, options) {
89907
89936
  const inlineTmpDirs = /* @__PURE__ */ new Set();
89908
89937
  const layerTmpDirs = /* @__PURE__ */ new Set();
89909
89938
  let profileCredsFile;
89939
+ let credsHostPath;
89910
89940
  const authorizerCache = createAuthorizerCache();
89911
89941
  const jwksCache = createJwksCache();
89912
89942
  const jwksWarnedAt = /* @__PURE__ */ new Map();
@@ -89984,7 +90014,14 @@ async function localStartApiCommand(target, options) {
89984
90014
  }
89985
90015
  const stateByStack = options.fromState || isCfnFlagPresent(options) ? await loadStateForRoutedStacks(targetStacks, routes, routesWithAuth, options) : /* @__PURE__ */ new Map();
89986
90016
  const profileCredentials = options.profile ? await resolveProfileCredentials(options.profile) : void 0;
89987
- if (options.profile && profileCredentials && !profileCredsFile) profileCredsFile = await writeProfileCredentialsFile(options.profile, profileCredentials);
90017
+ if (options.profile && profileCredentials && !profileCredsFile) profileCredsFile = await writeProfileCredentialsFile(options.profile, profileCredentials, {
90018
+ onDirCreated: (hostPath) => {
90019
+ credsHostPath = hostPath;
90020
+ },
90021
+ onDirRemoved: () => {
90022
+ credsHostPath = void 0;
90023
+ }
90024
+ });
89988
90025
  const lambdaIds = uniqueLambdaIds(routes, routesWithAuth, webSocketApis);
89989
90026
  const specs = /* @__PURE__ */ new Map();
89990
90027
  for (let i = 0; i < lambdaIds.length; i++) {
@@ -90270,7 +90307,7 @@ async function localStartApiCommand(target, options) {
90270
90307
  if (shutdownStarted) {
90271
90308
  if (!forceExitArmed) {
90272
90309
  forceExitArmed = true;
90273
- logger.warn(`Received second ${signal}; force-exiting. Orphan containers may remain — run 'docker ps --filter name=cdkd-local-' and 'docker rm -f' to clean up.`);
90310
+ logger.warn(forceExitShutdownWarning(signal, credsHostPath));
90274
90311
  process.exit(130);
90275
90312
  }
90276
90313
  return;
@@ -91045,6 +91082,28 @@ async function resolveProfileCredentials(profile) {
91045
91082
  }
91046
91083
  }
91047
91084
  /**
91085
+ * The line the force-exit arm of {@link localStartApiCommand}'s shutdown
91086
+ * prints (go-to-k/cdkd#3435 review).
91087
+ *
91088
+ * PURE and EXPORTED for one reason: nothing stands this long-running server
91089
+ * command up in a unit test, so the force-exit arm's only fence was a
91090
+ * source-shape rule over the file — "does it CALL the notice builder". A
91091
+ * reviewer measured that predicate: mutating the rendered line to drop
91092
+ * `stranded` while keeping the call left the entire suite green, with the
91093
+ * operator never told the mode-0600 credentials tmpdir exists. That is exactly
91094
+ * go-to-k/cdkd#3410's defect, re-openable inside its own fix. The
91095
+ * CONCATENATION is what has to be asserted, so it lives here rather than
91096
+ * inline.
91097
+ *
91098
+ * `hostPath` is the credentials tmpdir's path or `undefined`; a run that passed
91099
+ * no `--profile` gets the container sentence alone, with no trailing space and
91100
+ * no mention of a file that does not exist.
91101
+ */
91102
+ function forceExitShutdownWarning(signal, hostPath) {
91103
+ const stranded = strandedProfileCredentialsNotice(hostPath);
91104
+ return `Received second ${signal}; force-exiting. Orphan containers may remain — run 'docker ps --filter name=cdkd-local-' and 'docker rm -f' to clean up.` + (stranded === void 0 ? "" : ` ${stranded}`);
91105
+ }
91106
+ /**
91048
91107
  * Issue an STS AssumeRole and return temporary credentials. Mirrors
91049
91108
  * `cdkd local invoke`'s helper byte-for-byte; lifted here so the
91050
91109
  * start-api command stays self-contained.
@@ -92306,6 +92365,7 @@ async function localRunTaskCommand(target, options) {
92306
92365
  let detachedSuccessfully = false;
92307
92366
  let stateProvider;
92308
92367
  let channels;
92368
+ let credsHostPath;
92309
92369
  let cleanupPromise;
92310
92370
  const cleanup = async () => {
92311
92371
  if (!cleanupPromise) cleanupPromise = (async () => {
@@ -92366,7 +92426,8 @@ async function localRunTaskCommand(target, options) {
92366
92426
  sigintHandler = () => {
92367
92427
  sigintCount += 1;
92368
92428
  if (sigintCount >= 2) {
92369
- process.stderr.write("Force-exit on second ^C; container cleanup skipped.\n");
92429
+ const stranded = strandedProfileCredentialsNotice(credsHostPath);
92430
+ process.stderr.write(`Force-exit on second ^C; container cleanup skipped.${stranded ? ` ${stranded}` : ""}\n`);
92370
92431
  process.exit(130);
92371
92432
  }
92372
92433
  logger.info("Stopping task...");
@@ -92383,7 +92444,14 @@ async function localRunTaskCommand(target, options) {
92383
92444
  resolvedRoleArn = options.assumeTaskRole;
92384
92445
  assumedCredentials = await assumeTaskRole(resolvedRoleArn, options.region);
92385
92446
  }
92386
- channels = await resolveTaskCredentialChannels(options, assumedCredentials);
92447
+ channels = await resolveTaskCredentialChannels(options, assumedCredentials, {
92448
+ onDirCreated: (hostPath) => {
92449
+ credsHostPath = hostPath;
92450
+ },
92451
+ onDirRemoved: () => {
92452
+ credsHostPath = void 0;
92453
+ }
92454
+ });
92387
92455
  const envOverrides = readEnvOverridesFile$2(options.envVars);
92388
92456
  const runOpts = buildRunEcsTaskOptions(options, channels, {
92389
92457
  ...envOverrides !== void 0 && { envOverrides },
@@ -92395,7 +92463,8 @@ async function localRunTaskCommand(target, options) {
92395
92463
  if (options.detach) {
92396
92464
  logger.info("Task containers started in detached mode; cdkd is exiting.");
92397
92465
  logger.info(`Use 'docker ps -a --filter network=${result.state.network?.networkName ?? "<network>"}' to inspect; tear down with 'docker rm -f' and 'docker network rm'.`);
92398
- if (channels.profileCredsFile) logger.info(`The AWS credentials file mounted into the containers is NOT removed in detached mode: delete ${displayIdent(channels.profileCredsFile.hostPath)} once you tear them down.`);
92466
+ const detachedNotice = strandedProfileCredentialsNotice(channels.profileCredsFile?.hostPath);
92467
+ if (detachedNotice) logger.info(`Detached mode leaves the mounted credentials file behind. ${detachedNotice}`);
92399
92468
  detachedSuccessfully = true;
92400
92469
  sigintCount = 99;
92401
92470
  return;
@@ -92677,11 +92746,11 @@ async function resolveSidecarCredentials(options, assumedCredentials) {
92677
92746
  * never the `--role-arn` role — and never an `--assume-task-role` STS result,
92678
92747
  * which wins earlier and is served by the metadata sidecar instead.
92679
92748
  */
92680
- async function resolveTaskCredentialChannels(options, assumedCredentials) {
92749
+ async function resolveTaskCredentialChannels(options, assumedCredentials, opts) {
92681
92750
  const sidecarCredentials = await resolveSidecarCredentials(options, assumedCredentials);
92682
92751
  if (options.profile && sidecarCredentials && !assumedCredentials) return {
92683
92752
  sidecarCredentials,
92684
- profileCredsFile: await writeProfileCredentialsFile(options.profile, sidecarCredentials)
92753
+ profileCredsFile: await writeProfileCredentialsFile(options.profile, sidecarCredentials, opts)
92685
92754
  };
92686
92755
  return {
92687
92756
  sidecarCredentials,
@@ -95546,4 +95615,4 @@ function buildProgram() {
95546
95615
 
95547
95616
  //#endregion
95548
95617
  export { buildProgram };
95549
- //# sourceMappingURL=program-CnSaRdY9.js.map
95618
+ //# sourceMappingURL=program-DdmCUgOP.js.map