@go-to-k/cdkd 0.284.63 → 0.284.64
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.
- package/dist/{asg-provider-B9V61Fbq.js → asg-provider-DGJz_iFy.js} +2 -2
- package/dist/{asg-provider-B9V61Fbq.js.map → asg-provider-DGJz_iFy.js.map} +1 -1
- package/dist/cli.js +2 -2
- package/dist/{deploy-engine-B-RuozdO.js → deploy-engine-BtqjWvh5.js} +9 -6
- package/dist/{deploy-engine-B-RuozdO.js.map → deploy-engine-BtqjWvh5.js.map} +1 -1
- package/dist/index.js +1 -1
- package/dist/{program-alOnKpLV.js → program-I-xR_ceK.js} +53 -27
- package/dist/{program-alOnKpLV.js.map → program-I-xR_ceK.js.map} +1 -1
- package/dist/{version-Cmw63bLc.js → version-BtSUTHs5.js} +2 -2
- package/dist/{version-Cmw63bLc.js.map → version-BtSUTHs5.js.map} +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $t as S3StateBackend, Ar as SynthesisError, G as IAMRoleProvider, Gt as DiffCalculator, J as ProviderRegistry, Mr as isCdkdError, Nr as normalizeAwsError, Pn as Synthesizer, Xt as TemplateParser, Yt as DagBuilder, Zt as LockManager, an as AssetPublisher, ar as resolveBucketRegion, br as LockError, cr as resetAwsClients, dr as CdkdError, fr as ConfigError, ir as clearBucketRegionCache, it as CloudControlProvider, jr as formatError, kr as StateError, lr as setAwsClients, mr as DependencyError, nr as AssemblyReader, or as AwsClients, r as DeployEngine, sr as getAwsClients, ur as AssetError, wr as ProvisioningError } from "./deploy-engine-
|
|
1
|
+
import { $t as S3StateBackend, Ar as SynthesisError, G as IAMRoleProvider, Gt as DiffCalculator, J as ProviderRegistry, Mr as isCdkdError, Nr as normalizeAwsError, Pn as Synthesizer, Xt as TemplateParser, Yt as DagBuilder, Zt as LockManager, an as AssetPublisher, ar as resolveBucketRegion, br as LockError, cr as resetAwsClients, dr as CdkdError, fr as ConfigError, ir as clearBucketRegionCache, it as CloudControlProvider, jr as formatError, kr as StateError, lr as setAwsClients, mr as DependencyError, nr as AssemblyReader, or as AwsClients, r as DeployEngine, sr as getAwsClients, ur as AssetError, wr as ProvisioningError } from "./deploy-engine-BtqjWvh5.js";
|
|
2
2
|
import { n as getLogger, r as setLogger, t as ConsoleLogger } from "./logger-zRrlbaQt.js";
|
|
3
3
|
|
|
4
4
|
export { AssemblyReader, AssetError, AssetPublisher, AwsClients, CdkdError, CloudControlProvider, ConfigError, ConsoleLogger, DagBuilder, DependencyError, DeployEngine, DiffCalculator, IAMRoleProvider, LockError, LockManager, ProviderRegistry, ProvisioningError, S3StateBackend, StateError, SynthesisError, Synthesizer, TemplateParser, clearBucketRegionCache, formatError, getAwsClients, getLogger, isCdkdError, normalizeAwsError, resetAwsClients, resolveBucketRegion, setAwsClients, setLogger };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { $ as beginCommandInterruptScope, $n as PARTITION_TABLE, $t as S3StateBackend, A as renderStatefulReason, An as runDockerForeground, At as dynamicReferenceTokens, B as exportAliasCollisionScrubWarning, Bn as resolveCaptureObservedState, Bt as s3BucketDomainName, C as isFinalSnapshotError, Cn as validateContainerRepoName, Cr as PartialFailureError, Ct as requireConfigArray, D as extractDeploymentEventError, Dn as formatDockerLoginError, Dr as StackHasActiveImportsError, Dt as STATE_SOURCED_READBACK_RULES, E as makeCanonicalizePropertiesFn, En as dockerSpawnEnvWithSensitive, Er as ResourceUpdateNotSupportedError, Et as STATE_SOURCED_CROSS_GENERATION_RULES, F as green, Fn as synthesisStatusMessage, Fr as isMarkedNonRetryable, Ft as redactSecretsForState, G as IAMRoleProvider, Gn as stateBucketExistenceConfirmed, Gt as DiffCalculator, H as secretBearingStateKeyWarning, Hn as resolveStateBucketWithDefault, Ht as s3BucketRegionalDomainName, I as red, In as getDefaultStateBucketName, Ir as isRetryableTransientError, It as scrubResourceRecord, J as ProviderRegistry, Jn as CFN_TEMPLATE_URL_LIMIT, Jt as withRetry, K as collectInlinePolicyNamesManagedBySiblings, Kn as warnDeprecatedNoPrefixCliFlag, Kt as INTRINSIC_KEYS, L as yellow, Ln as getLegacyStateBucketName, Lr as isThrottlingError, Lt as classifyReplaySecretRegion, M as bold, Mn as AssetManifestLoader, Mt as isSingleDynamicReferenceToken, N as cyan, Nn as getDockerImageBySourceHash, Nr as normalizeAwsError, Nt as maskSecretsInError, O as MULTI_REGION_RECREATE_BLOCKED_TYPES, On as getDockerCmd, Or as StackTerminationProtectionError, Ot as TEMPLATE_SOURCED_RULES, P as gray, Pn as Synthesizer, Pr as withErrorHandling, Pt as maskSecretsInText, Q as DEFAULT_STATE_PREFIX, Qn as expectedOwnerParam, Qt as displaySafe, R as collectDeclaredOutputNames, Rn as resolveApp, Rr as markNonRetryable, Rt as producerRegionsFromState, S as createPreDeleteFinalSnapshot, Sn as validateAssetBucketName, Sr as NestedStackChildDirectDestroyError, St as replayWarn, T as unsupportedFinalSnapshotError, Tn as buildDockerImage, Tr as ResourceTimeoutError, Tt as requireConfigString, U as stateKeySecretExposure, Un as resolveStateBucketWithDefaultAndSource, Ut as s3BucketWebsiteUrl, V as isExportAliasCollision, Vn as resolveSkipPrefix, Vt as s3BucketDualStackDomainName, W as getCurrentResourceSecrets, Wn as resolveUseCdkBootstrapAssets, Wt as applyRoleArnIfSet, X as findSilentDropProperties, Xn as findLargeInlineResources, Xt as TemplateParser, Y as findActionableSilentDrops, Yn as MIGRATE_TMP_PREFIX, Yt as DagBuilder, Z as CUSTOM_RESOURCE_RESPONSE_PREFIX, Zn as uploadCfnTemplate, Zt as LockManager, _ as computeImplicitDeleteEdges, _n as ensureAssetStorage, _r as LocalInvokeBuildError$1, _t as assertRegionMatch, a as DeploymentEventsStore, an as AssetPublisher, ar as resolveBucketRegion, at as slowCcOperationTimeoutMs, b as buildFinalSnapshotIdentifier, bn as parseBootstrapMarker, bt as configStringRefusal, c as replayFailedOperations, cn as buildAssetRedirectMap, cr as resetAwsClients, ct as IntrinsicFunctionResolver, d as updatePartialReason, dn as rewriteTemplateAssetReferences, dr as CdkdError, dt as getAccountInfo, en as rebuildClientForBucketRegion, er as canonicalizeRegion, et as endCommandInterruptScope, f as UNSPECIFIED_SKIP_REASON, fn as escapeRegExp, ft as parameterTypeMayLoseSecretIdentity, g as IMPLICIT_DELETE_DEPENDENCIES, gn as assertAssetBucketRegion, gr as DynamicReferenceRegionAmbiguousError, gt as resolveExplicitPhysicalId, h as maskingRetryLogger, hn as BOOTSTRAP_MARKER_PREFIX, hr as DeployCancelledError, ht as normalizeAwsTagsToCfn, i as DeploymentEventsReader, in as shouldRetainResource, it as CloudControlProvider, j as formatResourceLine, jn as runDockerStreaming, jt as errorCauseChain, k as isStatefulRecreateTargetSync, kn as partitionSensitiveEnv, kt as createSecretMasker, l as replayRollback, ln as createAssetRedirectResolver, lr as setAwsClients, lt as carriesDynamicReference, m as withResourceDeadline, mn as AssetModeResolver, mt as WAFv2WebACLProvider, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nn as importableOutputKeys, nr as AssemblyReader, nt as isInterruptedWaitError, o as planFailedOps, on as stringifyValue, or as AwsClients, ot as disableInstanceApiTermination, p as deleteSkipReason, pn as stripControlChars, pr as CrossAccountSecretRefusalError, pt as refStateLookupFromResource, q as clearOnUpdateRemoval, qn as CFN_TEMPLATE_BODY_LIMIT, qt as describeTypeWithThrottleRetry, r as DeployEngine, rn as importableOutputs, rr as processStackMessages, rt as startInterruptWatch, s as planRollback, sn as WorkGraph, sr as getAwsClients, st as isTerminationProtectionPropagationError, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as exportNamesCarriedFrom, tr as derivePartitionAndUrlSuffix, tt as interruptWatchListenerCount, u as updatePartialMessage, un as loadPublishableAssetManifest, ut as cfnRefValueFromPhysicalId, v as ATOMIC_FINAL_SNAPSHOT_TYPES, vn as getBootstrapMarkerKey, vr as LocalMigrateError, vt as coerceCfnBoolean, w as refusesFinalSnapshot, wn as buildDenyExternalAccessPolicy, wr as ProvisioningError, wt as requireConfigObject, x as ccRoutedFinalSnapshotError, xn as readBootstrapMarkerBody, xr as MissingCdkCliError, xt as readConfigString, y as PRE_DELETE_SNAPSHOT_TYPES, yn as isCrossRegionRedirect, yr as LocalStartServiceError, yt as configBooleanRefusal, z as collectPublishedOutputNames, zn as resolveAutoAssetStorage, zt as s3BucketArn } from "./deploy-engine-
|
|
1
|
+
import { $ as beginCommandInterruptScope, $n as PARTITION_TABLE, $t as S3StateBackend, A as renderStatefulReason, An as runDockerForeground, At as dynamicReferenceTokens, B as exportAliasCollisionScrubWarning, Bn as resolveCaptureObservedState, Bt as s3BucketDomainName, C as isFinalSnapshotError, Cn as validateContainerRepoName, Cr as PartialFailureError, Ct as requireConfigArray, D as extractDeploymentEventError, Dn as formatDockerLoginError, Dr as StackHasActiveImportsError, Dt as STATE_SOURCED_READBACK_RULES, E as makeCanonicalizePropertiesFn, En as dockerSpawnEnvWithSensitive, Er as ResourceUpdateNotSupportedError, Et as STATE_SOURCED_CROSS_GENERATION_RULES, F as green, Fn as synthesisStatusMessage, Fr as isMarkedNonRetryable, Ft as redactSecretsForState, G as IAMRoleProvider, Gn as stateBucketExistenceConfirmed, Gt as DiffCalculator, H as secretBearingStateKeyWarning, Hn as resolveStateBucketWithDefault, Ht as s3BucketRegionalDomainName, I as red, In as getDefaultStateBucketName, Ir as isRetryableTransientError, It as scrubResourceRecord, J as ProviderRegistry, Jn as CFN_TEMPLATE_URL_LIMIT, Jt as withRetry, K as collectInlinePolicyNamesManagedBySiblings, Kn as warnDeprecatedNoPrefixCliFlag, Kt as INTRINSIC_KEYS, L as yellow, Ln as getLegacyStateBucketName, Lr as isThrottlingError, Lt as classifyReplaySecretRegion, M as bold, Mn as AssetManifestLoader, Mt as isSingleDynamicReferenceToken, N as cyan, Nn as getDockerImageBySourceHash, Nr as normalizeAwsError, Nt as maskSecretsInError, O as MULTI_REGION_RECREATE_BLOCKED_TYPES, On as getDockerCmd, Or as StackTerminationProtectionError, Ot as TEMPLATE_SOURCED_RULES, P as gray, Pn as Synthesizer, Pr as withErrorHandling, Pt as maskSecretsInText, Q as DEFAULT_STATE_PREFIX, Qn as expectedOwnerParam, Qt as displaySafe, R as collectDeclaredOutputNames, Rn as resolveApp, Rr as markNonRetryable, Rt as producerRegionsFromState, S as createPreDeleteFinalSnapshot, Sn as validateAssetBucketName, Sr as NestedStackChildDirectDestroyError, St as replayWarn, T as unsupportedFinalSnapshotError, Tn as buildDockerImage, Tr as ResourceTimeoutError, Tt as requireConfigString, U as stateKeySecretExposure, Un as resolveStateBucketWithDefaultAndSource, Ut as s3BucketWebsiteUrl, V as isExportAliasCollision, Vn as resolveSkipPrefix, Vt as s3BucketDualStackDomainName, W as getCurrentResourceSecrets, Wn as resolveUseCdkBootstrapAssets, Wt as applyRoleArnIfSet, X as findSilentDropProperties, Xn as findLargeInlineResources, Xt as TemplateParser, Y as findActionableSilentDrops, Yn as MIGRATE_TMP_PREFIX, Yt as DagBuilder, Z as CUSTOM_RESOURCE_RESPONSE_PREFIX, Zn as uploadCfnTemplate, Zt as LockManager, _ as computeImplicitDeleteEdges, _n as ensureAssetStorage, _r as LocalInvokeBuildError$1, _t as assertRegionMatch, a as DeploymentEventsStore, an as AssetPublisher, ar as resolveBucketRegion, at as slowCcOperationTimeoutMs, b as buildFinalSnapshotIdentifier, bn as parseBootstrapMarker, bt as configStringRefusal, c as replayFailedOperations, cn as buildAssetRedirectMap, cr as resetAwsClients, ct as IntrinsicFunctionResolver, d as updatePartialReason, dn as rewriteTemplateAssetReferences, dr as CdkdError, dt as getAccountInfo, en as rebuildClientForBucketRegion, er as canonicalizeRegion, et as endCommandInterruptScope, f as UNSPECIFIED_SKIP_REASON, fn as escapeRegExp, ft as parameterTypeMayLoseSecretIdentity, g as IMPLICIT_DELETE_DEPENDENCIES, gn as assertAssetBucketRegion, gr as DynamicReferenceRegionAmbiguousError, gt as resolveExplicitPhysicalId, h as maskingRetryLogger, hn as BOOTSTRAP_MARKER_PREFIX, hr as DeployCancelledError, ht as normalizeAwsTagsToCfn, i as DeploymentEventsReader, in as shouldRetainResource, it as CloudControlProvider, j as formatResourceLine, jn as runDockerStreaming, jt as errorCauseChain, k as isStatefulRecreateTargetSync, kn as partitionSensitiveEnv, kt as createSecretMasker, l as replayRollback, ln as createAssetRedirectResolver, lr as setAwsClients, lt as carriesDynamicReference, m as withResourceDeadline, mn as AssetModeResolver, mt as WAFv2WebACLProvider, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nn as importableOutputKeys, nr as AssemblyReader, nt as isInterruptedWaitError, o as planFailedOps, on as stringifyValue, or as AwsClients, ot as disableInstanceApiTermination, p as deleteSkipReason, pn as stripControlChars, pr as CrossAccountSecretRefusalError, pt as refStateLookupFromResource, q as clearOnUpdateRemoval, qn as CFN_TEMPLATE_BODY_LIMIT, qt as describeTypeWithThrottleRetry, r as DeployEngine, rn as importableOutputs, rr as processStackMessages, rt as startInterruptWatch, s as planRollback, sn as WorkGraph, sr as getAwsClients, st as isTerminationProtectionPropagationError, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as exportNamesCarriedFrom, tr as derivePartitionAndUrlSuffix, tt as interruptWatchListenerCount, u as updatePartialMessage, un as loadPublishableAssetManifest, ut as cfnRefValueFromPhysicalId, v as ATOMIC_FINAL_SNAPSHOT_TYPES, vn as getBootstrapMarkerKey, vr as LocalMigrateError, vt as coerceCfnBoolean, w as refusesFinalSnapshot, wn as buildDenyExternalAccessPolicy, wr as ProvisioningError, wt as requireConfigObject, x as ccRoutedFinalSnapshotError, xn as readBootstrapMarkerBody, xr as MissingCdkCliError, xt as readConfigString, y as PRE_DELETE_SNAPSHOT_TYPES, yn as isCrossRegionRedirect, yr as LocalStartServiceError, yt as configBooleanRefusal, z as collectPublishedOutputNames, zn as resolveAutoAssetStorage, zt as s3BucketArn } from "./deploy-engine-BtqjWvh5.js";
|
|
2
2
|
import { a as getLiveRenderer, c as PATTERN_B_RESOURCE_TYPES, d as generateResourceNameWithFallback, f as getCurrentStackName, h as withStackName, i as runStackBuffered, m as withSkipPrefix, n as getLogger, o as PATTERN_B_NAME_OPTIONS, s as PATTERN_B_NAME_PROPERTIES, u as generateResourceName } from "./logger-zRrlbaQt.js";
|
|
3
|
-
import { t as getCdkdVersion } from "./version-
|
|
4
|
-
import { t as ASGProvider } from "./asg-provider-
|
|
3
|
+
import { t as getCdkdVersion } from "./version-BtSUTHs5.js";
|
|
4
|
+
import { t as ASGProvider } from "./asg-provider-DGJz_iFy.js";
|
|
5
5
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
6
6
|
import { createHash, randomBytes, randomUUID } from "node:crypto";
|
|
7
7
|
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, 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";
|
|
@@ -65184,7 +65184,7 @@ function makeCrossStackPrePass(deps) {
|
|
|
65184
65184
|
try {
|
|
65185
65185
|
loaded = await backend.getState(producer.stack, producer.region);
|
|
65186
65186
|
} catch (err) {
|
|
65187
|
-
logger.debug(`Scrub of ${stackName}: could not re-read producer '${producer.stack}' (${producer.region}) to classify its stored value: ${maskSecretsInText(err instanceof Error ? err.message : String(err), secrets)}`);
|
|
65187
|
+
logger.debug(`Scrub of ${stackName}: could not re-read producer '${maskSecretsInText(producer.stack, secrets)}' (${producer.region}) to classify its stored value: ${maskSecretsInText(err instanceof Error ? err.message : String(err), secrets)}`);
|
|
65188
65188
|
return;
|
|
65189
65189
|
}
|
|
65190
65190
|
const outputs = loaded?.state?.outputs;
|
|
@@ -65197,15 +65197,16 @@ function makeCrossStackPrePass(deps) {
|
|
|
65197
65197
|
recordedImports: [],
|
|
65198
65198
|
recordedOutputReads: []
|
|
65199
65199
|
};
|
|
65200
|
+
const where = `${key} in ${origin}${path ? ` at ${path}` : ""}`;
|
|
65200
65201
|
try {
|
|
65201
65202
|
await resolver.resolve({ [key]: node[key] }, probe);
|
|
65202
65203
|
} catch (err) {
|
|
65203
65204
|
if (!nodeCanRefuse) {
|
|
65204
|
-
logger.debug(`Scrub of ${stackName}: ${
|
|
65205
|
+
logger.debug(`Scrub of ${stackName}: ${where} could not be resolved, and this position cannot refuse: ${maskSecretsInText(err instanceof Error ? err.message : String(err), secrets)}`);
|
|
65205
65206
|
return;
|
|
65206
65207
|
}
|
|
65207
65208
|
if (isByDesignRefusal(err)) {
|
|
65208
|
-
const detail = `${
|
|
65209
|
+
const detail = `${where}: ${maskSecretsInText(err instanceof Error ? err.message : String(err), secrets)}`;
|
|
65209
65210
|
findings.unverifiable.push(detail);
|
|
65210
65211
|
logger.warn(`Scrub of ${stackName} cannot verify ${detail} — cdkd declines this read by design, so no re-run can change it. The rest of the stack is still scrubbed; this stack is NOT reported clean.`);
|
|
65211
65212
|
return;
|
|
@@ -65213,19 +65214,36 @@ function makeCrossStackPrePass(deps) {
|
|
|
65213
65214
|
throw unresolvableCrossStackReadError(origin, stackName, key, path, err, secrets);
|
|
65214
65215
|
}
|
|
65215
65216
|
const producer = recordedProducer(key, probe);
|
|
65216
|
-
if (!producer)
|
|
65217
|
-
|
|
65217
|
+
if (!producer) {
|
|
65218
|
+
logger.debug(`Scrub of ${stackName}: ${where} resolved, but the resolver recorded no cdkd cross-stack read for it — the value came from a CloudFormation fallback or a cross-account arm that records nothing, so scrub cannot name a producer to classify. Not classified as a plaintext producer.`);
|
|
65219
|
+
return;
|
|
65220
|
+
}
|
|
65221
|
+
const loggedKey = maskSecretsInText(producer.key, secrets);
|
|
65222
|
+
const loggedStack = maskSecretsInText(producer.stack, secrets);
|
|
65223
|
+
if (!producerTemplates.has(producer.stack)) {
|
|
65224
|
+
logger.debug(`Scrub of ${stackName}: ${where} resolved through producer '${loggedStack}' (${producer.region}), which is not a stack of this app — scrub has no template to classify export '${loggedKey}' with. Not classified as a plaintext producer.`);
|
|
65225
|
+
return;
|
|
65226
|
+
}
|
|
65218
65227
|
const verdict = secretExpressionVerdict(producer.stack, producer.key);
|
|
65219
|
-
if (verdict.kind === "no")
|
|
65228
|
+
if (verdict.kind === "no") {
|
|
65229
|
+
logger.debug(`Scrub of ${stackName}: ${where} resolved through producer '${loggedStack}', whose template declares no {{resolve:...}} expression for '${loggedKey}' and no re-export chain reaching one. Not classified as a plaintext producer.`);
|
|
65230
|
+
return;
|
|
65231
|
+
}
|
|
65220
65232
|
const stored = await storedProducerValue(producer, context.stateBackend);
|
|
65221
|
-
if (!stored)
|
|
65222
|
-
|
|
65233
|
+
if (!stored) {
|
|
65234
|
+
logger.debug(`Scrub of ${stackName}: ${where} resolved through producer '${loggedStack}' (${producer.region}), whose state record could not be read or does not carry the key '${loggedKey}' — cannot classify, so this is not classified as a plaintext producer.`);
|
|
65235
|
+
return;
|
|
65236
|
+
}
|
|
65237
|
+
if (carriesDynamicReference(stored.stored)) {
|
|
65238
|
+
logger.debug(`Scrub of ${stackName}: ${where} resolved through producer '${loggedStack}', whose stored value for '${loggedKey}' already carries a {{resolve:...}} expression — the producer is scrubbed and there is nothing wrong with this read.`);
|
|
65239
|
+
return;
|
|
65240
|
+
}
|
|
65223
65241
|
if (storedValueCarriesNoPlaintext(stored.stored)) {
|
|
65224
|
-
logger.debug(`Scrub of ${stackName}: ${
|
|
65242
|
+
logger.debug(`Scrub of ${stackName}: ${where} resolved through producer '${loggedStack}', whose stored value for that key carries no text — nothing to redact, so this is not classified as a plaintext producer.`);
|
|
65225
65243
|
return;
|
|
65226
65244
|
}
|
|
65227
65245
|
if (!nodeCanRefuse) {
|
|
65228
|
-
logger.debug(`Scrub of ${stackName}: ${
|
|
65246
|
+
logger.debug(`Scrub of ${stackName}: ${where} resolved to a plaintext from unscrubbed producer '${loggedStack}', and this position cannot refuse.`);
|
|
65229
65247
|
return;
|
|
65230
65248
|
}
|
|
65231
65249
|
throw plaintextProducerCrossStackReadError(origin, stackName, key, path, producer.stack, producer.key, verdict, secrets);
|
|
@@ -67737,6 +67755,7 @@ async function runAccept(reports, stateBackend, stateConfig, awsClients, options
|
|
|
67737
67755
|
}));
|
|
67738
67756
|
try {
|
|
67739
67757
|
const resources = { ...report.state.resources };
|
|
67758
|
+
let acceptedResourceCount = 0;
|
|
67740
67759
|
for (const outcome of driftedOutcomes) {
|
|
67741
67760
|
const existing = resources[outcome.logicalId];
|
|
67742
67761
|
if (!existing) continue;
|
|
@@ -67754,10 +67773,15 @@ async function runAccept(reports, stateBackend, stateConfig, awsClients, options
|
|
|
67754
67773
|
accepted.push(change);
|
|
67755
67774
|
}
|
|
67756
67775
|
const redactedBaseline = redactSecretsForState(newBaseline, outcome.secrets, existing.properties ?? {}, STATE_SOURCED_READBACK_RULES);
|
|
67776
|
+
let recordedChanges = 0;
|
|
67757
67777
|
for (const change of accepted) {
|
|
67758
|
-
if (deepEqualUnordered(getAtPath(redactedBaseline, change.path), change.awsValue))
|
|
67778
|
+
if (deepEqualUnordered(getAtPath(redactedBaseline, change.path), change.awsValue)) {
|
|
67779
|
+
recordedChanges++;
|
|
67780
|
+
continue;
|
|
67781
|
+
}
|
|
67759
67782
|
logger.warn(` ! ${report.stackName}/${outcome.logicalId} (${outcome.resourceType}): '${change.path}' was NOT recorded — cdkd state holds an unresolved '{{resolve:...}}' reference at that property, and the reference wins over an accepted value. Change the template if that reference is wrong.`);
|
|
67760
67783
|
}
|
|
67784
|
+
if (recordedChanges > 0) acceptedResourceCount++;
|
|
67761
67785
|
resources[outcome.logicalId] = hasObserved ? {
|
|
67762
67786
|
...existing,
|
|
67763
67787
|
observedProperties: redactedBaseline
|
|
@@ -67774,7 +67798,7 @@ async function runAccept(reports, stateBackend, stateConfig, awsClients, options
|
|
|
67774
67798
|
const saveOptions = { expectedEtag: report.etag };
|
|
67775
67799
|
if (report.migrationPending) saveOptions.migrateLegacy = true;
|
|
67776
67800
|
await stateBackend.saveState(report.stackName, report.region, newState, saveOptions);
|
|
67777
|
-
logger.info(`✓ State updated for ${report.stackName} (${report.region}): accepted drift on ${
|
|
67801
|
+
logger.info(`✓ State updated for ${report.stackName} (${report.region}): ` + (acceptedResourceCount === 0 ? "0 resource(s) accepted — no drifted change was recorded, and this write carried only the positioned re-redaction." : `accepted drift on ${acceptedResourceCount} resource(s).`));
|
|
67778
67802
|
} finally {
|
|
67779
67803
|
await lockManager.releaseLock(report.stackName, report.region).catch((err) => {
|
|
67780
67804
|
logger.warn(`Failed to release lock for ${report.stackName} (${report.region}): ` + (err instanceof Error ? err.message : String(err)));
|
|
@@ -68125,11 +68149,10 @@ function mergeUntemplatedValue(awsValue, desiredValue) {
|
|
|
68125
68149
|
}
|
|
68126
68150
|
/**
|
|
68127
68151
|
* Replace every leaf of a revert payload that still holds a `{{resolve:...}}`
|
|
68128
|
-
* token with the value AWS currently has at that position (issue #1914
|
|
68129
|
-
* round-3 review).
|
|
68152
|
+
* token with the value AWS currently has at that position (issue #1914).
|
|
68130
68153
|
*
|
|
68131
|
-
*
|
|
68132
|
-
*
|
|
68154
|
+
* cdkd downgrades an unresolvable reference from a per-resource failure to a
|
|
68155
|
+
* warning, on the premise that `cdkd deploy` resolves through the
|
|
68133
68156
|
* resolver's same unsupported-service arm — so AWS already holds the literal
|
|
68134
68157
|
* and replaying it is a no-op. **That premise holds only for records cdkd
|
|
68135
68158
|
* deployed.** CloudFormation resolves `ssm-secure` SERVER-side, so a record
|
|
@@ -68525,18 +68548,22 @@ function printAcceptPlan(reports) {
|
|
|
68525
68548
|
skipped: () => []
|
|
68526
68549
|
}));
|
|
68527
68550
|
if (drifted.length === 0) continue;
|
|
68528
|
-
|
|
68551
|
+
const lines = [];
|
|
68552
|
+
let plannedWrites = 0;
|
|
68529
68553
|
for (const o of drifted) {
|
|
68530
|
-
|
|
68554
|
+
lines.push(` ~ ${o.logicalId} (${o.resourceType})\n`);
|
|
68531
68555
|
for (const change of o.changes) {
|
|
68532
68556
|
const refusal = acceptRefusalReason(change, o.maskedPaths);
|
|
68533
68557
|
if (refusal !== void 0) {
|
|
68534
|
-
|
|
68558
|
+
lines.push(` ${change.path}: SKIPPED — ${refusal}\n`);
|
|
68535
68559
|
continue;
|
|
68536
68560
|
}
|
|
68537
|
-
|
|
68561
|
+
plannedWrites++;
|
|
68562
|
+
lines.push(` ${change.path}: ${formatScalar(change.stateValue)} -> ${formatScalar(change.awsValue)}\n`);
|
|
68538
68563
|
}
|
|
68539
68564
|
}
|
|
68565
|
+
process.stdout.write(plannedWrites === 0 ? `\nPlan (--accept): no accepted values will be written to cdkd state for ${report.stackName} (${report.region}) — every drifted change below is refused (the run still writes the positioned re-redaction):\n` : `\nPlan (--accept): update cdkd state for ${report.stackName} (${report.region}):\n`);
|
|
68566
|
+
for (const line of lines) process.stdout.write(line);
|
|
68540
68567
|
}
|
|
68541
68568
|
}
|
|
68542
68569
|
/**
|
|
@@ -68562,9 +68589,8 @@ function printRevertPlan(reports) {
|
|
|
68562
68589
|
const stateResource = report.state.resources[o.logicalId];
|
|
68563
68590
|
if (stateResource) {
|
|
68564
68591
|
const preserved = findRevertPreservedTagKeys(o.changes, stateResource.observedProperties ?? stateResource.properties ?? {}, o.awsProperties);
|
|
68565
|
-
|
|
68566
|
-
if (
|
|
68567
|
-
if (!cannotMaskKeys && preserved.length > 0) {
|
|
68592
|
+
if (o.notComparedCause !== void 0 && preserved.length > 0) process.stdout.write(` ! ${preserved.length} AWS-authored tag(s) will be preserved, but cdkd could not resolve this resource's dynamic reference(s), so their names are withheld — they come from the live readback and cannot be checked for secrets without them.\n`);
|
|
68593
|
+
else if (preserved.length > 0) {
|
|
68568
68594
|
const tagWord = preserved.length === 1 ? "tag" : "tags";
|
|
68569
68595
|
process.stdout.write(` ! reverting this tag list KEEPS ${preserved.length} AWS-authored ${tagWord} the baseline does not carry:\n`);
|
|
68570
68596
|
for (const path of preserved) process.stdout.write(` ${maskSecretsInText(path, o.secrets)}\n`);
|
|
@@ -88094,4 +88120,4 @@ function buildProgram() {
|
|
|
88094
88120
|
|
|
88095
88121
|
//#endregion
|
|
88096
88122
|
export { buildProgram };
|
|
88097
|
-
//# sourceMappingURL=program-
|
|
88123
|
+
//# sourceMappingURL=program-I-xR_ceK.js.map
|