@go-to-k/cdkd 0.296.16 → 0.296.18
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-D2eHqx5L.js → asg-provider-B3568WgD.js} +2 -2
- package/dist/{asg-provider-D2eHqx5L.js.map → asg-provider-B3568WgD.js.map} +1 -1
- package/dist/cli.js +2 -2
- package/dist/{deploy-engine-DYAAwd0u.js → deploy-engine-DWbbP9w6.js} +596 -417
- package/dist/deploy-engine-DWbbP9w6.js.map +1 -0
- package/dist/{iam-role-provider-B31gkUPy.js → iam-role-provider-DMZhalf-.js} +2 -2
- package/dist/{iam-role-provider-B31gkUPy.js.map → iam-role-provider-DMZhalf-.js.map} +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/{neptune-provider-X5T1Zamt.js → neptune-provider-0RhO6C4E.js} +65 -7
- package/dist/neptune-provider-0RhO6C4E.js.map +1 -0
- package/dist/{program-D0Q9DbSa.js → program-BGAUJbns.js} +35 -14
- package/dist/program-BGAUJbns.js.map +1 -0
- package/dist/{provider-classes-Bng0RFVo.js → provider-classes-Dc_SVoFZ.js} +7 -7
- package/dist/{provider-classes-Bng0RFVo.js.map → provider-classes-Dc_SVoFZ.js.map} +1 -1
- package/dist/{rds-provider-Cbeq5OY8.js → rds-provider-DArbEUG9.js} +2 -2
- package/dist/{rds-provider-Cbeq5OY8.js.map → rds-provider-DArbEUG9.js.map} +1 -1
- package/dist/{version-BUhQCsJ3.js → version-Cl-QXSua.js} +2 -2
- package/dist/{version-BUhQCsJ3.js.map → version-Cl-QXSua.js.map} +1 -1
- package/package.json +1 -1
- package/dist/deploy-engine-DYAAwd0u.js.map +0 -1
- package/dist/neptune-provider-X5T1Zamt.js.map +0 -1
- package/dist/program-D0Q9DbSa.js.map +0 -1
|
@@ -2,7 +2,7 @@ import { r as getAwsClients, s as __exportAll } from "./aws-clients-CnmtbrxD.js"
|
|
|
2
2
|
import { A as UNRENDERABLE, C as looksLikeCdkdGeneratedName, E as withoutGeneratedFallbackName, F as displayStackName, I as isPasteableIdent, M as displayAwsMessage, N as displayIdent, O as SECRET_REF_MAX_CODE_POINTS, P as displaySafe, R as plainIdentOr, S as getCurrentStackName, T as withStackName, V as truncateCodePoints, a as getLogger, b as generateResourceNameWithFallback, d as installLogLineMaskerSource, f as getLiveRenderer, g as applyDefaultNameForFallback, k as STACK_REF_MAX_CODE_POINTS, o as isStdoutReservedForPayload, r as safeStringify$1, t as describeAwsFailure, u as currentLogLineMasker, v as explicitNamePropertyFor, w as withSkipPrefix, x as getCurrentSkipPrefix, y as generateResourceName, z as safeMsg } from "./aws-failure-text-BaWeCWRz.js";
|
|
3
3
|
import { $ as protectedReplacementAdvice, $n as isIamPropagationError, $t as AccountIdUnavailableError, A as isQuotableImportValue, An as commandHole, At as isAuxiliaryMarkOf, B as isTerminalDeleteFailure, Bt as sanitizeRecoveryValue, Ct as RETRY_AUXILIARY_OWNER, Dn as SHELL_ACTIVE, Dt as createdResourceIdentityBeforeFailure, E as assertRegionMatch, Et as createdBeforeFailure, F as resolveExplicitPhysicalId, Fn as plainOrDescribed, G as runDeleteAttempt, Gn as isNameCooldownError, H as observeThenDisableProtection, Hn as isUpdateUnsupportedError, Ht as DEFAULT_STATE_PREFIX, In as quotedOrDescribed, J as DELETION_PROTECTION_DOC_POINTER, Jt as withPasteableAwsProfile, Kn as isRecreateRetryableError, Kt as producerRecordKey, L as ProtectionFlipRegistry, Ln as shellBoundedDisplay, Lt as formatLockExpiry, M as quotedRemedyLogicalId, Mn as isInertUnquoted, Mt as markCreatedBeforeFailure, N as refusalTypeShown, Nn as pasteableCommand, Nt as UNREPRODUCIBLE_LOCK_CLAUSE, On as SHELL_ACTIVE_WHY, Ot as hasCreatedBeforeFailure, Pn as physicalIdShownBesideCommand, Pt as buildForceUnlockCommand, Q as pasteableAwsCommand, Qn as isAmbiguousOutcomeError, Qt as credentialFingerprint, R as compensateProtectionFlip, Rn as shellQuote, Rt as formatLockOperation, St as withDerivedNameMasks, T as RESOURCE_NOT_FOUND, U as protectionFlipKey, Un as hasReplayMayCollide, Ut as injectiveKey, Vt as CUSTOM_RESOURCE_RESPONSE_PREFIX, Wn as isNameCollisionErrorFrom, Xn as formatRetryClassificationSignals, Xt as ambientCredentialConfig, Yn as markReplayMayCollide, Yt as ambientClientDefaults, Zn as isAmbiguousCcHandlerErrorCode, Zt as clientDefaultsFor, _n as ResourceUpdateNotSupportedError, _t as createMaskedLogSinks, ar as isThrottlingError, at as startInterruptWatch, bn as StateError, bt as maskDeep, cr as wrapMaskedAwsError, ct as canonicalizeRoute53QueryName, d as prepareRemovalForUpdate, dn as MacroExpansionError, en as AssetError, er as isRetryableTransientError, f as removalWarning, fn as MalformedProducerRecordRefusalError, ft as logicalIdShown, gn as ResourceTimeoutError, gt as stateOrphanRecordRemedy, hn as ProvisioningError, ht as segmentAfterAnchor, i as holdsSecretDerivedEntry, in as DependencyError, ir as isMarkedNonRetryable, it as isInterruptedWaitError, j as normalizeAwsTagsToCfn, jt as markAuxiliaryFailure, kn as UNSHOWABLE_VALUE, kt as isAuxiliaryFailure, l as withUnchangedSecretPrincipalLists, m as withoutInjectedRemovals, mt as resourceTypeShown, nr as retryClassificationText, on as DynamicReferenceRegionAmbiguousError, or as markNonRetryable, ot as ElapsedBudgetRegistry, qn as isReplayedNameCollisionFrom, rn as CrossAccountSecretRefusalError, sn as IntrinsicResolutionRefusalError, sr as markRedactedCause, st as monotonicNowMs, tn as CdkdError, tr as isTransientServerError, un as LockError, ut as compositeIdSeparatorRefusal, vt as createMaskedRetryLogger, w as withoutServerErrorRetries, wn as normalizeAwsError, wt as carryCreatedBeforeFailure, xn as SynthesisError, xt as maskerOrIdentity, yt as isSecretDerivedValue, z as deleteWithProtectionCompensation, zn as withheldTargetClause, zt as formatLockOwner } from "./iam-policy-targets-BoZuWtxK.js";
|
|
4
4
|
import { a as setAssumedRoleCredentials, i as getPreAssumeEnvCredentials, n as awsClientDefaults, o as setPreAssumeEnvCredentials, r as getAssumedRoleCredentials, s as ambientRegion, t as SECOND_ROLE_PUBLISH_REFUSAL } from "./aws-client-defaults-D0q0z4dG.js";
|
|
5
|
-
import { t as getCdkdVersion } from "./version-
|
|
5
|
+
import { t as getCdkdVersion } from "./version-Cl-QXSua.js";
|
|
6
6
|
import { createHash, randomUUID } from "node:crypto";
|
|
7
7
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
8
8
|
import { CreateBucketCommand, DeleteObjectCommand, DeleteObjectsCommand, GetBucketLocationCommand, GetBucketReplicationCommand, GetObjectCommand, HeadBucketCommand, HeadObjectCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchKey, PutBucketEncryptionCommand, PutBucketPolicyCommand, PutObjectCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
|
|
@@ -10173,7 +10173,11 @@ const CREATE_ONLY_PATHS_SNAPSHOT = /* @__PURE__ */ new Map([
|
|
|
10173
10173
|
["AWS::AutoScaling::AutoScalingGroup", [["AutoScalingGroupName"], ["InstanceId"]]],
|
|
10174
10174
|
["AWS::BedrockAgentCore::Browser", []],
|
|
10175
10175
|
["AWS::BedrockAgentCore::CodeInterpreter", []],
|
|
10176
|
-
["AWS::BedrockAgentCore::Evaluator", [[
|
|
10176
|
+
["AWS::BedrockAgentCore::Evaluator", [[
|
|
10177
|
+
"EvaluatorConfig",
|
|
10178
|
+
"Derived",
|
|
10179
|
+
"BaseEvaluatorId"
|
|
10180
|
+
], ["EvaluatorName"]]],
|
|
10177
10181
|
["AWS::BedrockAgentCore::Runtime", [["AgentRuntimeName"]]],
|
|
10178
10182
|
["AWS::Budgets::Budget", [["NotificationsWithSubscribers"]]],
|
|
10179
10183
|
["AWS::CertificateManager::Certificate", [
|
|
@@ -10451,7 +10455,8 @@ const CREATE_ONLY_PATHS_SNAPSHOT = /* @__PURE__ */ new Map([
|
|
|
10451
10455
|
["AWS::Glue::Table", [
|
|
10452
10456
|
["CatalogId"],
|
|
10453
10457
|
["DatabaseName"],
|
|
10454
|
-
["Name"]
|
|
10458
|
+
["Name"],
|
|
10459
|
+
["TableInput", "Name"]
|
|
10455
10460
|
]],
|
|
10456
10461
|
["AWS::Glue::Trigger", [
|
|
10457
10462
|
["Name"],
|
|
@@ -12920,6 +12925,8 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
12920
12925
|
"CreatedAt",
|
|
12921
12926
|
"EvaluatorArn",
|
|
12922
12927
|
"EvaluatorId",
|
|
12928
|
+
"EvaluatorType",
|
|
12929
|
+
"Provider",
|
|
12923
12930
|
"Status",
|
|
12924
12931
|
"UpdatedAt"
|
|
12925
12932
|
]),
|
|
@@ -14165,7 +14172,7 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
14165
14172
|
]),
|
|
14166
14173
|
silentDrop: /* @__PURE__ */ new Map(),
|
|
14167
14174
|
createOnlyDrops: /* @__PURE__ */ new Set(),
|
|
14168
|
-
readOnly: /* @__PURE__ */ new Set(
|
|
14175
|
+
readOnly: /* @__PURE__ */ new Set(),
|
|
14169
14176
|
ccRouteUnavailable: true
|
|
14170
14177
|
}],
|
|
14171
14178
|
["AWS::Glue::Trigger", {
|
|
@@ -22909,7 +22916,7 @@ var CloudControlProvider = class {
|
|
|
22909
22916
|
const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
|
|
22910
22917
|
if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
|
|
22911
22918
|
this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
|
|
22912
|
-
const { ASGProvider } = await import("./asg-provider-
|
|
22919
|
+
const { ASGProvider } = await import("./asg-provider-B3568WgD.js");
|
|
22913
22920
|
const delegateRegion = ambientRegion();
|
|
22914
22921
|
let asgProvider = this.asgDeleteDelegates.get(delegateRegion);
|
|
22915
22922
|
if (asgProvider === void 0) {
|
|
@@ -23015,7 +23022,7 @@ var CloudControlProvider = class {
|
|
|
23015
23022
|
const family = SDK_DELETE_FAMILIES.get(resourceType);
|
|
23016
23023
|
const cached = this.sdkDeleteDelegates.get(family);
|
|
23017
23024
|
if (cached !== void 0 && cached.region === ccRegion) return cached.provider;
|
|
23018
|
-
const provider = family === "rds" ? new (await (import("./rds-provider-
|
|
23025
|
+
const provider = family === "rds" ? new (await (import("./rds-provider-DArbEUG9.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-0RhO6C4E.js"))).NeptuneProvider({ region: ccRegion });
|
|
23019
23026
|
this.sdkDeleteDelegates.set(family, {
|
|
23020
23027
|
region: ccRegion,
|
|
23021
23028
|
provider
|
|
@@ -24908,6 +24915,9 @@ const NESTED_REQUIRED = /* @__PURE__ */ new Map([
|
|
|
24908
24915
|
["AWS::BedrockAgentCore::Evaluator", /* @__PURE__ */ new Map([
|
|
24909
24916
|
["EvaluatorConfig.CodeBased", ["LambdaConfig"]],
|
|
24910
24917
|
["EvaluatorConfig.CodeBased.LambdaConfig", ["LambdaArn"]],
|
|
24918
|
+
["EvaluatorConfig.Derived", ["BaseEvaluatorId", "ModelConfig"]],
|
|
24919
|
+
["EvaluatorConfig.Derived.ModelConfig.BedrockEvaluatorModelConfig", ["ModelId"]],
|
|
24920
|
+
["EvaluatorConfig.Derived.ModelConfig.ResponsesEvaluatorModelConfig", ["ModelId"]],
|
|
24911
24921
|
["EvaluatorConfig.LlmAsAJudge", [
|
|
24912
24922
|
"Instructions",
|
|
24913
24923
|
"ModelConfig",
|
|
@@ -26332,7 +26342,7 @@ const PROPERTY_SHAPES = /* @__PURE__ */ new Map([
|
|
|
26332
26342
|
["AWS::AppSync::GraphQLApi", "{\"AdditionalAuthenticationProviders\":\"array\",\"AdditionalAuthenticationProviders[]\":\"object\",\"AdditionalAuthenticationProviders[].LambdaAuthorizerConfig\":\"object\",\"AdditionalAuthenticationProviders[].OpenIDConnectConfig\":\"object\",\"AdditionalAuthenticationProviders[].UserPoolConfig\":\"object\",\"EnhancedMetricsConfig\":\"object\",\"EnvironmentVariables\":\"object\",\"LambdaAuthorizerConfig\":\"object\",\"LogConfig\":\"object\",\"OpenIDConnectConfig\":\"object\",\"Tags\":\"array\",\"Tags[]\":\"object\",\"UserPoolConfig\":\"object\"}"],
|
|
26333
26343
|
["AWS::AppSync::Resolver", "{\"CachingConfig\":\"object\",\"CachingConfig.CachingKeys\":\"array\",\"PipelineConfig\":\"object\",\"PipelineConfig.Functions\":\"array\",\"Runtime\":\"object\",\"SyncConfig\":\"object\",\"SyncConfig.LambdaConflictHandlerConfig\":\"object\"}"],
|
|
26334
26344
|
["AWS::AutoScaling::AutoScalingGroup", "{\"AvailabilityZoneDistribution\":\"object\",\"AvailabilityZoneIds\":\"array\",\"AvailabilityZoneImpairmentPolicy\":\"object\",\"AvailabilityZones\":\"array\",\"CapacityReservationSpecification\":\"object\",\"CapacityReservationSpecification.CapacityReservationTarget\":\"object\",\"CapacityReservationSpecification.CapacityReservationTarget.CapacityReservationIds\":\"array\",\"CapacityReservationSpecification.CapacityReservationTarget.CapacityReservationResourceGroupArns\":\"array\",\"InstanceLifecyclePolicy\":\"object\",\"InstanceLifecyclePolicy.RetentionTriggers\":\"object\",\"InstanceMaintenancePolicy\":\"object\",\"LaunchTemplate\":\"object\",\"LifecycleHookSpecificationList\":\"array\",\"LifecycleHookSpecificationList[]\":\"object\",\"LoadBalancerNames\":\"array\",\"MetricsCollection\":\"array\",\"MetricsCollection[]\":\"object\",\"MetricsCollection[].Metrics\":\"array\",\"MixedInstancesPolicy\":\"object\",\"MixedInstancesPolicy.InstancesDistribution\":\"object\",\"MixedInstancesPolicy.InstancesDistribution.DistributionSegments\":\"array\",\"MixedInstancesPolicy.InstancesDistribution.DistributionSegments[]\":\"object\",\"MixedInstancesPolicy.InstancesDistribution.DistributionSegments[].TargetCapacityTypes\":\"array\",\"MixedInstancesPolicy.LaunchTemplate\":\"object\",\"MixedInstancesPolicy.LaunchTemplate.LaunchTemplateSpecification\":\"object\",\"MixedInstancesPolicy.LaunchTemplate.Overrides\":\"array\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[]\":\"object\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].InstanceRequirements\":\"object\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].InstanceRequirements.AcceleratorCount\":\"object\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].InstanceRequirements.AcceleratorManufacturers\":\"array\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].InstanceRequirements.AcceleratorNames\":\"array\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].InstanceRequirements.AcceleratorTotalMemoryMiB\":\"object\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].InstanceRequirements.AcceleratorTypes\":\"array\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].InstanceRequirements.AllowedInstanceTypes\":\"array\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].InstanceRequirements.BaselineEbsBandwidthMbps\":\"object\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].InstanceRequirements.BaselinePerformanceFactors\":\"object\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].InstanceRequirements.BaselinePerformanceFactors.Cpu\":\"object\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].InstanceRequirements.BaselinePerformanceFactors.Cpu.References\":\"array\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].InstanceRequirements.BaselinePerformanceFactors.Cpu.References[]\":\"object\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].InstanceRequirements.CpuManufacturers\":\"array\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].InstanceRequirements.ExcludedInstanceTypes\":\"array\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].InstanceRequirements.InstanceGenerations\":\"array\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].InstanceRequirements.LocalStorageTypes\":\"array\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].InstanceRequirements.MemoryGiBPerVCpu\":\"object\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].InstanceRequirements.MemoryMiB\":\"object\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].InstanceRequirements.NetworkBandwidthGbps\":\"object\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].InstanceRequirements.NetworkInterfaceCount\":\"object\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].InstanceRequirements.TotalLocalStorageGB\":\"object\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].InstanceRequirements.VCpuCount\":\"object\",\"MixedInstancesPolicy.LaunchTemplate.Overrides[].LaunchTemplateSpecification\":\"object\",\"NotificationConfiguration\":\"object\",\"NotificationConfiguration.NotificationTypes\":\"array\",\"NotificationConfigurations\":\"array\",\"NotificationConfigurations[]\":\"object\",\"NotificationConfigurations[].NotificationTypes\":\"array\",\"Tags\":\"array\",\"Tags[]\":\"object\",\"TargetGroupARNs\":\"array\",\"TerminationPolicies\":\"array\",\"TrafficSources\":\"array\",\"TrafficSources[]\":\"object\",\"VPCZoneIdentifier\":\"array\"}"],
|
|
26335
|
-
["AWS::BedrockAgentCore::Evaluator", "{\"EvaluatorConfig\":\"object\",\"EvaluatorConfig.CodeBased\":\"object\",\"EvaluatorConfig.CodeBased.LambdaConfig\":\"object\",\"EvaluatorConfig.LlmAsAJudge\":\"object\",\"EvaluatorConfig.LlmAsAJudge.ModelConfig\":\"object\",\"EvaluatorConfig.LlmAsAJudge.ModelConfig.BedrockEvaluatorModelConfig\":\"object\",\"EvaluatorConfig.LlmAsAJudge.ModelConfig.BedrockEvaluatorModelConfig.AdditionalModelRequestFields\":\"object\",\"EvaluatorConfig.LlmAsAJudge.ModelConfig.BedrockEvaluatorModelConfig.InferenceConfig\":\"object\",\"EvaluatorConfig.LlmAsAJudge.ModelConfig.ResponsesEvaluatorModelConfig\":\"object\",\"EvaluatorConfig.LlmAsAJudge.ModelConfig.ResponsesEvaluatorModelConfig.Reasoning\":\"object\",\"EvaluatorConfig.LlmAsAJudge.RatingScale\":\"object\",\"EvaluatorConfig.LlmAsAJudge.RatingScale.Categorical\":\"array\",\"EvaluatorConfig.LlmAsAJudge.RatingScale.Categorical[]\":\"object\",\"EvaluatorConfig.LlmAsAJudge.RatingScale.Numerical\":\"array\",\"EvaluatorConfig.LlmAsAJudge.RatingScale.Numerical[]\":\"object\",\"Tags\":\"array\",\"Tags[]\":\"object\"}"],
|
|
26345
|
+
["AWS::BedrockAgentCore::Evaluator", "{\"EvaluatorConfig\":\"object\",\"EvaluatorConfig.CodeBased\":\"object\",\"EvaluatorConfig.CodeBased.LambdaConfig\":\"object\",\"EvaluatorConfig.Derived\":\"object\",\"EvaluatorConfig.Derived.ModelConfig\":\"object\",\"EvaluatorConfig.Derived.ModelConfig.BedrockEvaluatorModelConfig\":\"object\",\"EvaluatorConfig.Derived.ModelConfig.BedrockEvaluatorModelConfig.AdditionalModelRequestFields\":\"object\",\"EvaluatorConfig.Derived.ModelConfig.BedrockEvaluatorModelConfig.InferenceConfig\":\"object\",\"EvaluatorConfig.Derived.ModelConfig.ResponsesEvaluatorModelConfig\":\"object\",\"EvaluatorConfig.Derived.ModelConfig.ResponsesEvaluatorModelConfig.Reasoning\":\"object\",\"EvaluatorConfig.LlmAsAJudge\":\"object\",\"EvaluatorConfig.LlmAsAJudge.ModelConfig\":\"object\",\"EvaluatorConfig.LlmAsAJudge.ModelConfig.BedrockEvaluatorModelConfig\":\"object\",\"EvaluatorConfig.LlmAsAJudge.ModelConfig.BedrockEvaluatorModelConfig.AdditionalModelRequestFields\":\"object\",\"EvaluatorConfig.LlmAsAJudge.ModelConfig.BedrockEvaluatorModelConfig.InferenceConfig\":\"object\",\"EvaluatorConfig.LlmAsAJudge.ModelConfig.ResponsesEvaluatorModelConfig\":\"object\",\"EvaluatorConfig.LlmAsAJudge.ModelConfig.ResponsesEvaluatorModelConfig.Reasoning\":\"object\",\"EvaluatorConfig.LlmAsAJudge.RatingScale\":\"object\",\"EvaluatorConfig.LlmAsAJudge.RatingScale.Categorical\":\"array\",\"EvaluatorConfig.LlmAsAJudge.RatingScale.Categorical[]\":\"object\",\"EvaluatorConfig.LlmAsAJudge.RatingScale.Numerical\":\"array\",\"EvaluatorConfig.LlmAsAJudge.RatingScale.Numerical[]\":\"object\",\"Tags\":\"array\",\"Tags[]\":\"object\"}"],
|
|
26336
26346
|
["AWS::BedrockAgentCore::Runtime", "{\"AgentRuntimeArtifact\":\"object\",\"AgentRuntimeArtifact.CodeConfiguration\":\"object\",\"AgentRuntimeArtifact.CodeConfiguration.Code\":\"object\",\"AgentRuntimeArtifact.CodeConfiguration.Code.S3\":\"object\",\"AgentRuntimeArtifact.CodeConfiguration.EntryPoint\":\"array\",\"AgentRuntimeArtifact.ContainerConfiguration\":\"object\",\"AuthorizerConfiguration\":\"object\",\"AuthorizerConfiguration.CustomJWTAuthorizer\":\"object\",\"AuthorizerConfiguration.CustomJWTAuthorizer.AllowedAudience\":\"array\",\"AuthorizerConfiguration.CustomJWTAuthorizer.AllowedClients\":\"array\",\"AuthorizerConfiguration.CustomJWTAuthorizer.AllowedScopes\":\"array\",\"AuthorizerConfiguration.CustomJWTAuthorizer.AllowedWorkloadConfiguration\":\"object\",\"AuthorizerConfiguration.CustomJWTAuthorizer.AllowedWorkloadConfiguration.HostingEnvironments\":\"array\",\"AuthorizerConfiguration.CustomJWTAuthorizer.AllowedWorkloadConfiguration.HostingEnvironments[]\":\"object\",\"AuthorizerConfiguration.CustomJWTAuthorizer.AllowedWorkloadConfiguration.WorkloadIdentities\":\"array\",\"AuthorizerConfiguration.CustomJWTAuthorizer.CustomClaims\":\"array\",\"AuthorizerConfiguration.CustomJWTAuthorizer.CustomClaims[]\":\"object\",\"AuthorizerConfiguration.CustomJWTAuthorizer.CustomClaims[].AuthorizingClaimMatchValue\":\"object\",\"AuthorizerConfiguration.CustomJWTAuthorizer.CustomClaims[].AuthorizingClaimMatchValue.ClaimMatchValue\":\"object\",\"AuthorizerConfiguration.CustomJWTAuthorizer.CustomClaims[].AuthorizingClaimMatchValue.ClaimMatchValue.MatchValueStringList\":\"array\",\"AuthorizerConfiguration.CustomJWTAuthorizer.PrivateEndpoint\":\"object\",\"AuthorizerConfiguration.CustomJWTAuthorizer.PrivateEndpoint.ManagedVpcResource\":\"object\",\"AuthorizerConfiguration.CustomJWTAuthorizer.PrivateEndpoint.ManagedVpcResource.SecurityGroupIds\":\"array\",\"AuthorizerConfiguration.CustomJWTAuthorizer.PrivateEndpoint.ManagedVpcResource.SubnetIds\":\"array\",\"AuthorizerConfiguration.CustomJWTAuthorizer.PrivateEndpoint.ManagedVpcResource.Tags\":\"object\",\"AuthorizerConfiguration.CustomJWTAuthorizer.PrivateEndpoint.SelfManagedLatticeResource\":\"object\",\"AuthorizerConfiguration.CustomJWTAuthorizer.PrivateEndpointOverrides\":\"array\",\"AuthorizerConfiguration.CustomJWTAuthorizer.PrivateEndpointOverrides[]\":\"object\",\"AuthorizerConfiguration.CustomJWTAuthorizer.PrivateEndpointOverrides[].PrivateEndpoint\":\"object\",\"AuthorizerConfiguration.CustomJWTAuthorizer.PrivateEndpointOverrides[].PrivateEndpoint.ManagedVpcResource\":\"object\",\"AuthorizerConfiguration.CustomJWTAuthorizer.PrivateEndpointOverrides[].PrivateEndpoint.ManagedVpcResource.SecurityGroupIds\":\"array\",\"AuthorizerConfiguration.CustomJWTAuthorizer.PrivateEndpointOverrides[].PrivateEndpoint.ManagedVpcResource.SubnetIds\":\"array\",\"AuthorizerConfiguration.CustomJWTAuthorizer.PrivateEndpointOverrides[].PrivateEndpoint.ManagedVpcResource.Tags\":\"object\",\"AuthorizerConfiguration.CustomJWTAuthorizer.PrivateEndpointOverrides[].PrivateEndpoint.SelfManagedLatticeResource\":\"object\",\"CapacityProviderConfiguration\":\"object\",\"EnvironmentVariables\":\"object\",\"FilesystemConfigurations\":\"array\",\"FilesystemConfigurations[]\":\"object\",\"FilesystemConfigurations[].CapacityProviderVolume\":\"object\",\"FilesystemConfigurations[].EfsAccessPoint\":\"object\",\"FilesystemConfigurations[].S3FilesAccessPoint\":\"object\",\"FilesystemConfigurations[].SessionStorage\":\"object\",\"LifecycleConfiguration\":\"object\",\"NetworkConfiguration\":\"object\",\"NetworkConfiguration.NetworkModeConfig\":\"object\",\"NetworkConfiguration.NetworkModeConfig.SecurityGroups\":\"array\",\"NetworkConfiguration.NetworkModeConfig.Subnets\":\"array\",\"RequestHeaderConfiguration\":\"object\",\"RequestHeaderConfiguration.RequestHeaderAllowlist\":\"array\",\"Tags\":\"object\",\"WorkloadIdentityDetails\":\"object\"}"],
|
|
26337
26347
|
["AWS::CertificateManager::Certificate", "{\"DomainValidationOptions\":\"array\",\"DomainValidationOptions[]\":\"object\",\"SubjectAlternativeNames\":\"array\",\"Tags\":\"array\",\"Tags[]\":\"object\"}"],
|
|
26338
26348
|
["AWS::CloudFormation::Stack", "{\"Capabilities\":\"array\",\"NotificationARNs\":\"array\",\"Outputs\":\"array\",\"Outputs[]\":\"object\",\"Parameters\":\"object\",\"StackPolicyBody\":\"object\",\"Tags\":\"array\",\"Tags[]\":\"object\"}"],
|
|
@@ -26378,6 +26388,7 @@ const PROPERTY_SHAPES = /* @__PURE__ */ new Map([
|
|
|
26378
26388
|
["AWS::Glue::Database", "{\"DatabaseInput\":\"object\",\"DatabaseInput.CreateTableDefaultPermissions\":\"array\",\"DatabaseInput.CreateTableDefaultPermissions[]\":\"object\",\"DatabaseInput.CreateTableDefaultPermissions[].Permissions\":\"array\",\"DatabaseInput.CreateTableDefaultPermissions[].Principal\":\"object\",\"DatabaseInput.FederatedDatabase\":\"object\",\"DatabaseInput.Parameters\":\"object\",\"DatabaseInput.TargetDatabase\":\"object\"}"],
|
|
26379
26389
|
["AWS::Glue::Job", "{\"Command\":\"object\",\"Connections\":\"object\",\"Connections.Connections\":\"array\",\"DefaultArguments\":\"object\",\"ExecutionProperty\":\"object\",\"NonOverridableArguments\":\"object\",\"NotificationProperty\":\"object\",\"Tags\":\"object\"}"],
|
|
26380
26390
|
["AWS::Glue::SecurityConfiguration", "{\"EncryptionConfiguration\":\"object\",\"EncryptionConfiguration.CloudWatchEncryption\":\"object\",\"EncryptionConfiguration.JobBookmarksEncryption\":\"object\",\"EncryptionConfiguration.S3Encryptions\":\"array\",\"EncryptionConfiguration.S3Encryptions[]\":\"object\"}"],
|
|
26391
|
+
["AWS::Glue::Table", "{\"OpenTableFormatInput\":\"object\",\"OpenTableFormatInput.IcebergInput\":\"object\",\"OpenTableFormatInput.IcebergInput.IcebergTableInput\":\"object\",\"OpenTableFormatInput.IcebergInput.IcebergTableInput.PartitionSpec\":\"object\",\"OpenTableFormatInput.IcebergInput.IcebergTableInput.PartitionSpec.Fields\":\"array\",\"OpenTableFormatInput.IcebergInput.IcebergTableInput.PartitionSpec.Fields[]\":\"object\",\"OpenTableFormatInput.IcebergInput.IcebergTableInput.Properties\":\"object\",\"OpenTableFormatInput.IcebergInput.IcebergTableInput.Schema\":\"object\",\"OpenTableFormatInput.IcebergInput.IcebergTableInput.Schema.Fields\":\"array\",\"OpenTableFormatInput.IcebergInput.IcebergTableInput.Schema.Fields[]\":\"object\",\"OpenTableFormatInput.IcebergInput.IcebergTableInput.Schema.IdentifierFieldIds\":\"array\",\"OpenTableFormatInput.IcebergInput.IcebergTableInput.WriteOrder\":\"object\",\"OpenTableFormatInput.IcebergInput.IcebergTableInput.WriteOrder.Fields\":\"array\",\"OpenTableFormatInput.IcebergInput.IcebergTableInput.WriteOrder.Fields[]\":\"object\",\"TableInput\":\"object\",\"TableInput.Parameters\":\"object\",\"TableInput.PartitionKeys\":\"array\",\"TableInput.PartitionKeys[]\":\"object\",\"TableInput.StorageDescriptor\":\"object\",\"TableInput.StorageDescriptor.BucketColumns\":\"array\",\"TableInput.StorageDescriptor.Columns\":\"array\",\"TableInput.StorageDescriptor.Columns[]\":\"object\",\"TableInput.StorageDescriptor.Parameters\":\"object\",\"TableInput.StorageDescriptor.SchemaReference\":\"object\",\"TableInput.StorageDescriptor.SchemaReference.SchemaId\":\"object\",\"TableInput.StorageDescriptor.SerdeInfo\":\"object\",\"TableInput.StorageDescriptor.SerdeInfo.Parameters\":\"object\",\"TableInput.StorageDescriptor.SkewedInfo\":\"object\",\"TableInput.StorageDescriptor.SkewedInfo.SkewedColumnNames\":\"array\",\"TableInput.StorageDescriptor.SkewedInfo.SkewedColumnValueLocationMaps\":\"object\",\"TableInput.StorageDescriptor.SkewedInfo.SkewedColumnValues\":\"array\",\"TableInput.StorageDescriptor.SortColumns\":\"array\",\"TableInput.StorageDescriptor.SortColumns[]\":\"object\",\"TableInput.TargetTable\":\"object\",\"TableInput.ViewDefinition\":\"object\",\"TableInput.ViewDefinition.Representations\":\"array\",\"TableInput.ViewDefinition.Representations[]\":\"object\",\"TableInput.ViewDefinition.SubObjects\":\"array\"}"],
|
|
26381
26392
|
["AWS::Glue::Trigger", "{\"Actions\":\"array\",\"Actions[]\":\"object\",\"Actions[].Arguments\":\"object\",\"Actions[].NotificationProperty\":\"object\",\"EventBatchingCondition\":\"object\",\"Predicate\":\"object\",\"Predicate.Conditions\":\"array\",\"Predicate.Conditions[]\":\"object\",\"Tags\":\"object\"}"],
|
|
26382
26393
|
["AWS::Glue::Workflow", "{\"DefaultRunProperties\":\"object\",\"Tags\":\"object\"}"],
|
|
26383
26394
|
["AWS::IAM::Group", "{\"ManagedPolicyArns\":\"array\",\"Policies\":\"array\",\"Policies[]\":\"object\"}"],
|
|
@@ -36127,6 +36138,7 @@ async function provisionCreate(logicalId, change, stateResources, stackName, tem
|
|
|
36127
36138
|
provisionedBy: createDecision.provisionedBy
|
|
36128
36139
|
};
|
|
36129
36140
|
this.recordInlinePolicyWrite(logicalId, "create");
|
|
36141
|
+
await this.establishNoEchoEchoFidelity(logicalId, stateResources[logicalId], resolvedProps, stateResources, createSecrets);
|
|
36130
36142
|
const createCaptureSiblings = await this.buildObservedCaptureSiblings(resourceType, logicalId, result.physicalId, template, stateResources, stackName, parameterValues, conditions);
|
|
36131
36143
|
this.kickOffObservedCapture(createProvider, logicalId, result.physicalId, resourceType, resolvedProps, {
|
|
36132
36144
|
...createCaptureSiblings,
|
|
@@ -36234,6 +36246,509 @@ function recordedProtectionNote(evidence, flags) {
|
|
|
36234
36246
|
return `${evidence}. AWS refuses to delete the resource while that protection is on, and cdkd deploy has no --remove-protection flag to clear it (only cdkd destroy and cdkd state destroy act on one), so ${flags} alone does not remove the old resource: depending on the replacement order, the deploy either fails at that delete or completes leaving the old resource, and its data, in AWS and no longer tracked by cdkd. Read ${DELETION_PROTECTION_DOC_POINTER} before you disable anything, then turn the protection off out of band (the console, or the service's own API) and re-run with ${flags}.`;
|
|
36235
36247
|
}
|
|
36236
36248
|
|
|
36249
|
+
//#endregion
|
|
36250
|
+
//#region src/deployment/deploy-engine/noecho.ts
|
|
36251
|
+
function noEchoExactEchoLeavesOf(record) {
|
|
36252
|
+
const field = record?.noEchoExactEchoLeaves;
|
|
36253
|
+
if (!Array.isArray(field)) return void 0;
|
|
36254
|
+
const out = [];
|
|
36255
|
+
for (const entry of field) {
|
|
36256
|
+
if (!Array.isArray(entry) || entry.length === 0) return void 0;
|
|
36257
|
+
if (!entry.every((segment) => typeof segment === "string")) return void 0;
|
|
36258
|
+
out.push([...entry]);
|
|
36259
|
+
}
|
|
36260
|
+
return out;
|
|
36261
|
+
}
|
|
36262
|
+
function echoFidelityCandidates(coordinates, resolved, createOnly) {
|
|
36263
|
+
const out = [];
|
|
36264
|
+
for (const coordinate of coordinates) {
|
|
36265
|
+
if (!coordinate.every((segment) => typeof segment === "string")) continue;
|
|
36266
|
+
const keys = coordinate;
|
|
36267
|
+
if (!createOnly.some((path) => path.length <= keys.length && path.every((s, i) => s === keys[i]))) continue;
|
|
36268
|
+
const plaintext = valueAtCoordinate(resolved, keys);
|
|
36269
|
+
if (typeof plaintext !== "string" || carriesSecretMask(plaintext)) continue;
|
|
36270
|
+
out.push({
|
|
36271
|
+
coordinate: keys,
|
|
36272
|
+
plaintext
|
|
36273
|
+
});
|
|
36274
|
+
}
|
|
36275
|
+
return out;
|
|
36276
|
+
}
|
|
36277
|
+
function reportedLeafAt(live, handed, candidate) {
|
|
36278
|
+
if (valueAtCoordinate(handed, candidate.coordinate) !== "***") return void 0;
|
|
36279
|
+
const leaf = valueAtCoordinate(live, candidate.coordinate);
|
|
36280
|
+
return typeof leaf === "string" && !carriesSecretMask(leaf) ? leaf : void 0;
|
|
36281
|
+
}
|
|
36282
|
+
function echoesExactlyAt(live, handed, candidate) {
|
|
36283
|
+
return reportedLeafAt(live, handed, candidate) === candidate.plaintext;
|
|
36284
|
+
}
|
|
36285
|
+
function provesEchoChangeAt(live, handed, candidate) {
|
|
36286
|
+
const reported = reportedLeafAt(live, handed, candidate);
|
|
36287
|
+
return reported !== void 0 && reported !== candidate.plaintext;
|
|
36288
|
+
}
|
|
36289
|
+
function noteNoEchoExactEchoes(logicalId, physicalId, read, handed, candidates, mode) {
|
|
36290
|
+
const exact = "failure" in read ? [] : candidates.filter((candidate) => echoesExactlyAt(read.live, handed, candidate)).map((candidate) => [...candidate.coordinate]);
|
|
36291
|
+
const noted = this.noEchoExactEchoes.get(logicalId);
|
|
36292
|
+
const previous = mode === "add" && noted?.physicalId === physicalId ? noted.coordinates : [];
|
|
36293
|
+
this.noEchoExactEchoes.set(logicalId, {
|
|
36294
|
+
physicalId,
|
|
36295
|
+
coordinates: sortedCoordinates([...previous, ...exact])
|
|
36296
|
+
});
|
|
36297
|
+
}
|
|
36298
|
+
function sortedCoordinates(coordinates) {
|
|
36299
|
+
const keyed = /* @__PURE__ */ new Map();
|
|
36300
|
+
for (const coordinate of coordinates) keyed.set(JSON.stringify(coordinate), [...coordinate]);
|
|
36301
|
+
return [...keyed.entries()].sort(([a], [b]) => a.localeCompare(b)).map(([, c]) => c);
|
|
36302
|
+
}
|
|
36303
|
+
async function establishNoEchoEchoFidelity(logicalId, record, resolvedProps, stateResources, secrets) {
|
|
36304
|
+
this.noEchoExactEchoes.delete(logicalId);
|
|
36305
|
+
const templateProps = this.perResourceTemplateProps.get(logicalId);
|
|
36306
|
+
const sources = this.noEchoPositionSources(stateResources);
|
|
36307
|
+
if (templateProps === void 0 || sources === void 0 || sources.parameters.size === 0) return;
|
|
36308
|
+
const coordinates = canonicalCoordinates(noEchoCoordinatesOf(templateProps, resolvedProps, {
|
|
36309
|
+
parameters: sources.parameters,
|
|
36310
|
+
...sources.conditions !== void 0 && { conditions: sources.conditions }
|
|
36311
|
+
}));
|
|
36312
|
+
if (coordinates.length === 0) return;
|
|
36313
|
+
const candidates = echoFidelityCandidates(coordinates, resolvedProps, await getCreateOnlyPropertyPaths(record.resourceType).catch(() => []));
|
|
36314
|
+
if (candidates.length === 0) return;
|
|
36315
|
+
const handed = {
|
|
36316
|
+
...record,
|
|
36317
|
+
properties: maskAtCoordinates(record.properties, coordinates)
|
|
36318
|
+
};
|
|
36319
|
+
const read = await this.readReaderForFreshNoEchoCeiling(logicalId, handed, secrets);
|
|
36320
|
+
this.noteNoEchoExactEchoes(logicalId, record.physicalId, read, handed.properties, candidates, "set");
|
|
36321
|
+
}
|
|
36322
|
+
function withNoEchoExactEchoes(logicalId, record) {
|
|
36323
|
+
const noted = this.noEchoExactEchoes.get(logicalId);
|
|
36324
|
+
if (noted === void 0 || noted.coordinates.length === 0) return record;
|
|
36325
|
+
if (noted.physicalId !== record.physicalId) return record;
|
|
36326
|
+
const merged = sortedCoordinates([...noEchoExactEchoLeavesOf(record) ?? [], ...noted.coordinates]);
|
|
36327
|
+
return {
|
|
36328
|
+
...record,
|
|
36329
|
+
noEchoExactEchoLeaves: merged
|
|
36330
|
+
};
|
|
36331
|
+
}
|
|
36332
|
+
function noEchoParameterNamesOf(template) {
|
|
36333
|
+
const names = /* @__PURE__ */ new Set();
|
|
36334
|
+
const declared = template?.Parameters;
|
|
36335
|
+
if (declared === null || typeof declared !== "object") return names;
|
|
36336
|
+
for (const [name, definition] of Object.entries(declared)) {
|
|
36337
|
+
const noEcho = definition?.NoEcho;
|
|
36338
|
+
if (noEcho === true || noEcho === "true") names.add(name);
|
|
36339
|
+
}
|
|
36340
|
+
return names;
|
|
36341
|
+
}
|
|
36342
|
+
function noEchoAttributeNamesOf(record) {
|
|
36343
|
+
const field = record?.noEchoAttributeNames;
|
|
36344
|
+
if (!Array.isArray(field) || !field.every((name) => typeof name === "string")) return void 0;
|
|
36345
|
+
return field;
|
|
36346
|
+
}
|
|
36347
|
+
function noEchoPositionSources(resources = {}, template = this.constructPathTemplate, conditions = this.noEchoConditions) {
|
|
36348
|
+
if (template === void 0) return void 0;
|
|
36349
|
+
const declared = this.noEchoAttributeResources;
|
|
36350
|
+
return {
|
|
36351
|
+
parameters: /* @__PURE__ */ new Set([...noEchoParameterNamesOf(template), ...this.inheritedNoEchoParameters]),
|
|
36352
|
+
attributeIsNoEcho: (logicalId, attribute) => {
|
|
36353
|
+
const live = declared.get(logicalId);
|
|
36354
|
+
if (live === true || live !== void 0 && live.has(attribute)) return true;
|
|
36355
|
+
if (noEchoAttributeNamesOf(Object.hasOwn(resources, logicalId) ? resources[logicalId] : void 0)?.includes(attribute) === true) return true;
|
|
36356
|
+
return this.persistedNoEchoAttributes.get(logicalId)?.has(attribute) === true;
|
|
36357
|
+
},
|
|
36358
|
+
...conditions !== void 0 && { conditions }
|
|
36359
|
+
};
|
|
36360
|
+
}
|
|
36361
|
+
function noEchoLeavesFor(logicalId, record, templateProps, sources) {
|
|
36362
|
+
if (templateProps !== void 0 && isWrittenFromDeployedTemplate(record.properties)) return canonicalCoordinates(noEchoCoordinatesOf(templateProps, record.properties, sources));
|
|
36363
|
+
const existing = noEchoLeavesOf(record);
|
|
36364
|
+
if (existing !== void 0) return canonicalCoordinates(existing);
|
|
36365
|
+
const resolvedAsSame = this.perResourceResolvedType.get(logicalId) === record.resourceType;
|
|
36366
|
+
const source = (templateProps !== void 0 && resolvedAsSame ? templateProps : void 0) ?? templatePropertiesFor(this, logicalId, record.resourceType);
|
|
36367
|
+
if (source === void 0) return void 0;
|
|
36368
|
+
return canonicalCoordinates(noEchoCoordinatesOf(source, record.properties, sources));
|
|
36369
|
+
}
|
|
36370
|
+
function templatePropertiesFor(engine, logicalId, resourceType) {
|
|
36371
|
+
const resources = engine.constructPathTemplate?.Resources;
|
|
36372
|
+
if (resources === void 0 || !Object.hasOwn(resources, logicalId)) return void 0;
|
|
36373
|
+
const definition = resources[logicalId];
|
|
36374
|
+
if (definition?.Type !== resourceType) return void 0;
|
|
36375
|
+
const properties = definition.Properties;
|
|
36376
|
+
return properties !== null && typeof properties === "object" && !Array.isArray(properties) ? properties : void 0;
|
|
36377
|
+
}
|
|
36378
|
+
function noEchoAttributeNamesFor(engine, logicalId, record, carried, leaves) {
|
|
36379
|
+
const attributes = record.attributes ?? {};
|
|
36380
|
+
const names = /* @__PURE__ */ new Set();
|
|
36381
|
+
let echoed = false;
|
|
36382
|
+
for (const coordinate of leaves ?? []) {
|
|
36383
|
+
const value = valueAtCoordinate(record.properties, coordinate);
|
|
36384
|
+
if (value === void 0 || carriesSecretMask(value)) continue;
|
|
36385
|
+
for (const [name, attribute] of Object.entries(attributes)) {
|
|
36386
|
+
if (carriesSecretMask(attribute)) continue;
|
|
36387
|
+
if (typeof attribute === "string" && attribute === record.physicalId) continue;
|
|
36388
|
+
const sameName = coordinate[0] === name && keyOrderFreeJson(attribute) === keyOrderFreeJson(value);
|
|
36389
|
+
const embeds = typeof value === "string" && typeof attribute === "string" && !attribute.startsWith("arn:") && value.length >= 4 && typeof attribute === "string" && attribute.includes(value);
|
|
36390
|
+
if (sameName || embeds) {
|
|
36391
|
+
names.add(name);
|
|
36392
|
+
echoed = true;
|
|
36393
|
+
}
|
|
36394
|
+
}
|
|
36395
|
+
}
|
|
36396
|
+
const declared = carried ? void 0 : engine.noEchoAttributeResources.get(logicalId);
|
|
36397
|
+
if (declared === true) for (const name of Object.keys(attributes)) names.add(name);
|
|
36398
|
+
else if (declared !== void 0) {
|
|
36399
|
+
for (const name of declared) if (Object.hasOwn(attributes, name)) names.add(name);
|
|
36400
|
+
}
|
|
36401
|
+
const prior = noEchoAttributeNamesOf(record);
|
|
36402
|
+
for (const name of prior ?? []) if (Object.hasOwn(attributes, name) && carriesSecretMask(attributes[name])) names.add(name);
|
|
36403
|
+
if (declared === void 0 && prior === void 0 && !echoed) return void 0;
|
|
36404
|
+
return [...names].sort();
|
|
36405
|
+
}
|
|
36406
|
+
function applyNoEchoPersist(logicalId, record, scrubbed, templateProps, resources, secrets, carried = false) {
|
|
36407
|
+
const sources = this.noEchoPositionSources(resources);
|
|
36408
|
+
if (sources === void 0) return scrubbed;
|
|
36409
|
+
const leaves = this.noEchoLeavesFor(logicalId, record, templateProps, sources);
|
|
36410
|
+
const names = noEchoAttributeNamesFor(this, logicalId, record, carried, leaves);
|
|
36411
|
+
if (leaves === void 0 && names === void 0) return scrubbed;
|
|
36412
|
+
const next = { ...scrubbed };
|
|
36413
|
+
if (leaves !== void 0) {
|
|
36414
|
+
next.properties = maskAtCoordinates(scrubbed.properties, leaves);
|
|
36415
|
+
if (scrubbed.observedProperties !== void 0 && leaves.length > 0) Object.assign(next, { observedProperties: maskReadbackAtCoordinates(scrubbed.observedProperties, record.properties, leaves) });
|
|
36416
|
+
if (leaves.length > 0) next.noEchoLeaves = leaves;
|
|
36417
|
+
else delete next.noEchoLeaves;
|
|
36418
|
+
const marked = new Set(leaves.map((coordinate) => JSON.stringify(coordinate)));
|
|
36419
|
+
const exact = (noEchoExactEchoLeavesOf(scrubbed) ?? []).filter((coordinate) => marked.has(JSON.stringify(coordinate)));
|
|
36420
|
+
if (exact.length > 0) next.noEchoExactEchoLeaves = exact;
|
|
36421
|
+
else delete next.noEchoExactEchoLeaves;
|
|
36422
|
+
}
|
|
36423
|
+
if (names !== void 0) {
|
|
36424
|
+
if (scrubbed.attributes !== void 0 && names.length > 0) {
|
|
36425
|
+
const attributes = { ...scrubbed.attributes };
|
|
36426
|
+
for (const name of names) if (Object.hasOwn(attributes, name)) attributes[name] = maskWholeValue(attributes[name]);
|
|
36427
|
+
next.attributes = attributes;
|
|
36428
|
+
}
|
|
36429
|
+
if (names.length > 0) next.noEchoAttributeNames = names;
|
|
36430
|
+
else delete next.noEchoAttributeNames;
|
|
36431
|
+
}
|
|
36432
|
+
this.warnNoEchoPhysicalId(logicalId, record, secrets);
|
|
36433
|
+
return next;
|
|
36434
|
+
}
|
|
36435
|
+
function warnNoEchoPhysicalId(logicalId, record, secrets) {
|
|
36436
|
+
if (secrets === void 0 || this.noEchoPhysicalIdWarned.has(logicalId)) return;
|
|
36437
|
+
const values = noEchoParameterPlaintextsOf(secrets);
|
|
36438
|
+
if (values.length === 0 || typeof record.physicalId !== "string") return;
|
|
36439
|
+
if (!values.some((value) => record.physicalId.includes(value))) return;
|
|
36440
|
+
this.noEchoPhysicalIdWarned.add(logicalId);
|
|
36441
|
+
this.logger.warn(this.maskForResource(logicalId, safeMsg`${logicalId}: its physical id contains a NoEcho parameter value. AWS publishes a resource's name, so cdkd keeps the physical id in state as AWS returns it.`));
|
|
36442
|
+
}
|
|
36443
|
+
function seedPersistedNoEchoAttributes(resources) {
|
|
36444
|
+
this.persistedNoEchoAttributes = /* @__PURE__ */ new Map();
|
|
36445
|
+
for (const [logicalId, record] of Object.entries(resources)) {
|
|
36446
|
+
const names = noEchoAttributeNamesOf(record);
|
|
36447
|
+
if (names !== void 0 && names.length > 0) this.persistedNoEchoAttributes.set(logicalId, new Set(names));
|
|
36448
|
+
}
|
|
36449
|
+
}
|
|
36450
|
+
function maskOutputsByPosition(outputs) {
|
|
36451
|
+
const sources = this.noEchoPositionSources();
|
|
36452
|
+
if (sources === void 0) return outputs;
|
|
36453
|
+
const templateValues = Object.create(null);
|
|
36454
|
+
for (const [name, definition] of Object.entries(this.constructPathTemplate?.Outputs ?? {})) templateValues[name] = definition?.Value;
|
|
36455
|
+
if (this.outputsSourceUsable) for (const [name, value] of Object.entries(this.outputsTemplateSource)) templateValues[name] = value;
|
|
36456
|
+
const coordinates = noEchoCoordinatesOf(templateValues, outputs, sources);
|
|
36457
|
+
if (coordinates.length === 0) return outputs;
|
|
36458
|
+
const maskedValues = new Set(coordinates.filter((coordinate) => coordinate.length === 1 && typeof coordinate[0] === "string").map((coordinate) => keyOrderFreeJson(outputs[coordinate[0]])));
|
|
36459
|
+
const aliasCoordinates = Object.keys(outputs).filter((key) => !Object.hasOwn(templateValues, key) && outputs[key] !== void 0 && !carriesSecretMask(outputs[key]) && maskedValues.has(keyOrderFreeJson(outputs[key]))).map((key) => [key]);
|
|
36460
|
+
return maskAtCoordinates(outputs, [...coordinates, ...aliasCoordinates]);
|
|
36461
|
+
}
|
|
36462
|
+
function getAttTargetsOf(node) {
|
|
36463
|
+
const targets = [];
|
|
36464
|
+
const seen = /* @__PURE__ */ new Set();
|
|
36465
|
+
const subVariable = /\$\{([^}!][^}]*)\}/g;
|
|
36466
|
+
const walk = (value) => {
|
|
36467
|
+
if (value === null || typeof value !== "object" || seen.has(value)) return;
|
|
36468
|
+
seen.add(value);
|
|
36469
|
+
if (Array.isArray(value)) {
|
|
36470
|
+
for (const item of value) walk(item);
|
|
36471
|
+
return;
|
|
36472
|
+
}
|
|
36473
|
+
const record = value;
|
|
36474
|
+
const getAtt = record["Fn::GetAtt"];
|
|
36475
|
+
if (typeof getAtt === "string" && getAtt.indexOf(".") > 0) {
|
|
36476
|
+
const dot = getAtt.indexOf(".");
|
|
36477
|
+
targets.push([getAtt.slice(0, dot), getAtt.slice(dot + 1)]);
|
|
36478
|
+
} else if (Array.isArray(getAtt) && typeof getAtt[0] === "string" && typeof getAtt[1] === "string") targets.push([getAtt[0], getAtt[1]]);
|
|
36479
|
+
const sub = record["Fn::Sub"];
|
|
36480
|
+
const text = typeof sub === "string" ? sub : Array.isArray(sub) ? sub[0] : void 0;
|
|
36481
|
+
if (typeof text === "string") for (const match of text.matchAll(subVariable)) {
|
|
36482
|
+
const name = match[1].trim();
|
|
36483
|
+
const dot = name.indexOf(".");
|
|
36484
|
+
if (dot > 0) targets.push([name.slice(0, dot), name.slice(dot + 1)]);
|
|
36485
|
+
}
|
|
36486
|
+
for (const child of Object.values(record)) walk(child);
|
|
36487
|
+
};
|
|
36488
|
+
walk(node);
|
|
36489
|
+
return targets;
|
|
36490
|
+
}
|
|
36491
|
+
async function noEchoAttributeOverridesFor(desiredProps, stateResources, stackName) {
|
|
36492
|
+
const wanted = /* @__PURE__ */ new Map();
|
|
36493
|
+
for (const [logicalId, attribute] of getAttTargetsOf(desiredProps)) {
|
|
36494
|
+
const record = Object.hasOwn(stateResources, logicalId) ? stateResources[logicalId] : void 0;
|
|
36495
|
+
if (record === void 0) continue;
|
|
36496
|
+
if (noEchoAttributeNamesOf(record)?.includes(attribute) !== true) continue;
|
|
36497
|
+
if (!carriesSecretMask(record.attributes?.[attribute])) continue;
|
|
36498
|
+
if (!this.perResourceSecrets.has(logicalId)) continue;
|
|
36499
|
+
const set = wanted.get(logicalId) ?? /* @__PURE__ */ new Set();
|
|
36500
|
+
set.add(attribute);
|
|
36501
|
+
wanted.set(logicalId, set);
|
|
36502
|
+
}
|
|
36503
|
+
if (wanted.size === 0) return void 0;
|
|
36504
|
+
const overrides = /* @__PURE__ */ new Map();
|
|
36505
|
+
for (const [logicalId, attributes] of wanted) {
|
|
36506
|
+
const record = stateResources[logicalId];
|
|
36507
|
+
let read = this.noEchoAttributeReads.get(logicalId);
|
|
36508
|
+
if (read === void 0) {
|
|
36509
|
+
read = (async () => {
|
|
36510
|
+
try {
|
|
36511
|
+
const { provider } = this.providerRegistry.getProviderFor({
|
|
36512
|
+
resourceType: record.resourceType,
|
|
36513
|
+
properties: record.properties,
|
|
36514
|
+
provisionedBy: record.provisionedBy,
|
|
36515
|
+
previousProperties: record.properties
|
|
36516
|
+
});
|
|
36517
|
+
const outcome = await readRecordAttributes({
|
|
36518
|
+
provider,
|
|
36519
|
+
logicalId,
|
|
36520
|
+
resource: record,
|
|
36521
|
+
stackName,
|
|
36522
|
+
region: this.stackRegion
|
|
36523
|
+
});
|
|
36524
|
+
return outcome.kind === "read" ? outcome.attributes : void 0;
|
|
36525
|
+
} catch {
|
|
36526
|
+
return;
|
|
36527
|
+
}
|
|
36528
|
+
})();
|
|
36529
|
+
this.noEchoAttributeReads.set(logicalId, read);
|
|
36530
|
+
}
|
|
36531
|
+
const live = await read;
|
|
36532
|
+
if (live === void 0) continue;
|
|
36533
|
+
const secrets = this.perResourceSecrets.get(logicalId);
|
|
36534
|
+
const fresh = noEchoParameterPlaintextsOf(secrets);
|
|
36535
|
+
const positioned = this.noEchoPositionedValues.get(logicalId) ?? /* @__PURE__ */ new Set();
|
|
36536
|
+
const served = {};
|
|
36537
|
+
for (const attribute of attributes) {
|
|
36538
|
+
if (!Object.hasOwn(live, attribute)) continue;
|
|
36539
|
+
const value = live[attribute];
|
|
36540
|
+
if (typeof value === "string" && fresh.some((needle) => value === needle || value.includes(needle)) || value !== void 0 && positioned.has(keyOrderFreeJson(value))) served[attribute] = value;
|
|
36541
|
+
}
|
|
36542
|
+
if (Object.keys(served).length > 0) overrides.set(logicalId, served);
|
|
36543
|
+
}
|
|
36544
|
+
return overrides.size > 0 ? overrides : void 0;
|
|
36545
|
+
}
|
|
36546
|
+
function noEchoDiffComparison(resources, template, conditions, parameterValues, stackName) {
|
|
36547
|
+
const sources = this.noEchoPositionSources(resources, template, conditions);
|
|
36548
|
+
if (sources === void 0) return void 0;
|
|
36549
|
+
const compare = noEchoComparison({
|
|
36550
|
+
sources,
|
|
36551
|
+
values: parameterValues,
|
|
36552
|
+
minNeedleLength: 4,
|
|
36553
|
+
publicTokens: /* @__PURE__ */ new Set([this.stackRegion, ...stackName === void 0 ? [] : [stackName]])
|
|
36554
|
+
});
|
|
36555
|
+
return (input) => compare(input);
|
|
36556
|
+
}
|
|
36557
|
+
function freshNoEchoParametersWithDeclared(inherited, template) {
|
|
36558
|
+
const all = /* @__PURE__ */ new Set([...inherited ?? [], ...noEchoParameterNamesOf(template)]);
|
|
36559
|
+
return all.size > 0 ? all : void 0;
|
|
36560
|
+
}
|
|
36561
|
+
function noEchoComparisonForTemplate(template, knownConditions, values, resources, publicTokens, inheritedNoEchoParameters) {
|
|
36562
|
+
const sources = {
|
|
36563
|
+
parameters: /* @__PURE__ */ new Set([...noEchoParameterNamesOf(template), ...inheritedNoEchoParameters ?? []]),
|
|
36564
|
+
attributeIsNoEcho: (logicalId, attribute) => noEchoAttributeNamesOf(Object.hasOwn(resources, logicalId) ? resources[logicalId] : void 0)?.includes(attribute) === true,
|
|
36565
|
+
...knownConditions !== void 0 && { conditions: knownConditions }
|
|
36566
|
+
};
|
|
36567
|
+
const compare = noEchoComparison({
|
|
36568
|
+
sources,
|
|
36569
|
+
values: values ?? {},
|
|
36570
|
+
minNeedleLength: 4,
|
|
36571
|
+
...publicTokens !== void 0 && { publicTokens }
|
|
36572
|
+
});
|
|
36573
|
+
return (input) => compare(input);
|
|
36574
|
+
}
|
|
36575
|
+
|
|
36576
|
+
//#endregion
|
|
36577
|
+
//#region src/deployment/resource-deadline.ts
|
|
36578
|
+
var InvalidResourceDeadlineError = class extends Error {
|
|
36579
|
+
constructor(message) {
|
|
36580
|
+
super(message);
|
|
36581
|
+
this.name = "InvalidResourceDeadlineError";
|
|
36582
|
+
}
|
|
36583
|
+
};
|
|
36584
|
+
function validateOptions(opts) {
|
|
36585
|
+
const { warnAfterMs, timeoutMs } = opts;
|
|
36586
|
+
if (!Number.isFinite(warnAfterMs) || !Number.isFinite(timeoutMs) || warnAfterMs <= 0 || timeoutMs <= 0) throw new InvalidResourceDeadlineError(`withResourceDeadline: warnAfterMs and timeoutMs must be positive finite numbers (got warnAfterMs=${warnAfterMs}, timeoutMs=${timeoutMs})`);
|
|
36587
|
+
if (warnAfterMs >= timeoutMs) throw new InvalidResourceDeadlineError(`withResourceDeadline: warnAfterMs (${warnAfterMs}ms) must be less than timeoutMs (${timeoutMs}ms)`);
|
|
36588
|
+
}
|
|
36589
|
+
async function withResourceDeadline(operation, opts) {
|
|
36590
|
+
validateOptions(opts);
|
|
36591
|
+
return new Promise((resolve, reject) => {
|
|
36592
|
+
let settled = false;
|
|
36593
|
+
let timedOut = false;
|
|
36594
|
+
let warned = false;
|
|
36595
|
+
let warnTimer;
|
|
36596
|
+
let timeoutTimer;
|
|
36597
|
+
let elapsedBeforePause = 0;
|
|
36598
|
+
let runningSince = Date.now();
|
|
36599
|
+
let pauses = 0;
|
|
36600
|
+
const elapsed = () => elapsedBeforePause + (pauses > 0 ? 0 : Date.now() - runningSince);
|
|
36601
|
+
const cleanup = () => {
|
|
36602
|
+
if (warnTimer !== void 0) clearTimeout(warnTimer);
|
|
36603
|
+
if (timeoutTimer !== void 0) clearTimeout(timeoutTimer);
|
|
36604
|
+
warnTimer = void 0;
|
|
36605
|
+
timeoutTimer = void 0;
|
|
36606
|
+
};
|
|
36607
|
+
const arm = () => {
|
|
36608
|
+
if (opts.onWarn && !warned) warnTimer = setTimeout(() => {
|
|
36609
|
+
if (settled) return;
|
|
36610
|
+
warned = true;
|
|
36611
|
+
try {
|
|
36612
|
+
opts.onWarn(elapsed());
|
|
36613
|
+
} catch {}
|
|
36614
|
+
}, Math.max(0, opts.warnAfterMs - elapsed()));
|
|
36615
|
+
timeoutTimer = setTimeout(() => {
|
|
36616
|
+
if (settled) return;
|
|
36617
|
+
settled = true;
|
|
36618
|
+
timedOut = true;
|
|
36619
|
+
cleanup();
|
|
36620
|
+
reject(opts.onTimeout(elapsed()));
|
|
36621
|
+
}, Math.max(0, opts.timeoutMs - elapsed()));
|
|
36622
|
+
};
|
|
36623
|
+
arm();
|
|
36624
|
+
const outer = deadlineScope.getStore();
|
|
36625
|
+
const control = {
|
|
36626
|
+
pause: () => {
|
|
36627
|
+
pauses += 1;
|
|
36628
|
+
if (pauses === 1) {
|
|
36629
|
+
elapsedBeforePause += Date.now() - runningSince;
|
|
36630
|
+
cleanup();
|
|
36631
|
+
}
|
|
36632
|
+
outer?.pause();
|
|
36633
|
+
},
|
|
36634
|
+
resume: () => {
|
|
36635
|
+
if (pauses === 0) return;
|
|
36636
|
+
pauses -= 1;
|
|
36637
|
+
if (pauses === 0) {
|
|
36638
|
+
runningSince = Date.now();
|
|
36639
|
+
if (!settled) arm();
|
|
36640
|
+
}
|
|
36641
|
+
outer?.resume();
|
|
36642
|
+
},
|
|
36643
|
+
expired: () => timedOut || (outer?.expired() ?? false)
|
|
36644
|
+
};
|
|
36645
|
+
Promise.resolve().then(() => deadlineScope.run(control, operation)).then((value) => {
|
|
36646
|
+
if (settled) return;
|
|
36647
|
+
settled = true;
|
|
36648
|
+
cleanup();
|
|
36649
|
+
resolve(value);
|
|
36650
|
+
}, (err) => {
|
|
36651
|
+
if (settled) return;
|
|
36652
|
+
settled = true;
|
|
36653
|
+
cleanup();
|
|
36654
|
+
reject(err);
|
|
36655
|
+
});
|
|
36656
|
+
});
|
|
36657
|
+
}
|
|
36658
|
+
const deadlineScope = new AsyncLocalStorage();
|
|
36659
|
+
async function whileEnclosingDeadlinesPaused(fn) {
|
|
36660
|
+
const control = deadlineScope.getStore();
|
|
36661
|
+
if (control === void 0) return fn();
|
|
36662
|
+
control.pause();
|
|
36663
|
+
try {
|
|
36664
|
+
return await fn();
|
|
36665
|
+
} finally {
|
|
36666
|
+
control.resume();
|
|
36667
|
+
}
|
|
36668
|
+
}
|
|
36669
|
+
function enclosingDeadlineExpired() {
|
|
36670
|
+
return deadlineScope.getStore()?.expired() ?? false;
|
|
36671
|
+
}
|
|
36672
|
+
|
|
36673
|
+
//#endregion
|
|
36674
|
+
//#region src/deployment/deployment-approval.ts
|
|
36675
|
+
const NESTED_STACK_TYPE$1 = "AWS::CloudFormation::Stack";
|
|
36676
|
+
async function requireDeploymentApproval(args) {
|
|
36677
|
+
const level = args.options.requireApproval ?? "never";
|
|
36678
|
+
const approve = args.options.approveDeployment;
|
|
36679
|
+
if (level === "never" || approve === void 0) return;
|
|
36680
|
+
const changes = [...args.changes].filter((c) => c.changeType !== "NO_CHANGE" && !isNoEchoPromotionOnly(c));
|
|
36681
|
+
const destructiveChanges = findDestructiveChanges(args.stackName, changes, args.records, args.template, new Set(args.recreateTargetIds ?? []));
|
|
36682
|
+
const onlyNestedUpdates = changes.every((c) => c.changeType === "UPDATE" && c.resourceType === NESTED_STACK_TYPE$1);
|
|
36683
|
+
if (!(level === "destructive" ? destructiveChanges.length > 0 : changes.length > 0 && !onlyNestedUpdates)) return;
|
|
36684
|
+
const count = (type) => changes.filter((c) => c.changeType === type).length;
|
|
36685
|
+
if (enclosingDeadlineExpired()) throw approvalAfterTimeout(args.stackName);
|
|
36686
|
+
let approved;
|
|
36687
|
+
try {
|
|
36688
|
+
approved = await whileEnclosingDeadlinesPaused(() => approve({
|
|
36689
|
+
stackName: args.stackName,
|
|
36690
|
+
level,
|
|
36691
|
+
counts: {
|
|
36692
|
+
create: count("CREATE"),
|
|
36693
|
+
update: count("UPDATE"),
|
|
36694
|
+
delete: count("DELETE")
|
|
36695
|
+
},
|
|
36696
|
+
destructiveChanges
|
|
36697
|
+
}));
|
|
36698
|
+
} catch (error) {
|
|
36699
|
+
throw error instanceof Error ? markNonRetryable(error) : error;
|
|
36700
|
+
}
|
|
36701
|
+
if (!approved) throw markNonRetryable(new CdkdError(safeMsg`Deployment of stack ${args.stackName} was not approved (--require-approval=${level}). Nothing was changed.`, "DEPLOY_NOT_APPROVED"));
|
|
36702
|
+
}
|
|
36703
|
+
async function approveLateReplacement(args) {
|
|
36704
|
+
const level = args.options.requireApproval ?? "never";
|
|
36705
|
+
const approve = args.options.approveDeployment;
|
|
36706
|
+
if (level === "never" || approve === void 0) return true;
|
|
36707
|
+
if (enclosingDeadlineExpired()) return false;
|
|
36708
|
+
try {
|
|
36709
|
+
return await whileEnclosingDeadlinesPaused(() => approve({
|
|
36710
|
+
stackName: args.stackName,
|
|
36711
|
+
level,
|
|
36712
|
+
counts: {
|
|
36713
|
+
create: 0,
|
|
36714
|
+
update: 1,
|
|
36715
|
+
delete: 0
|
|
36716
|
+
},
|
|
36717
|
+
destructiveChanges: findDestructiveChanges(args.stackName, [args.change], args.records, args.template)
|
|
36718
|
+
}));
|
|
36719
|
+
} catch {
|
|
36720
|
+
return false;
|
|
36721
|
+
}
|
|
36722
|
+
}
|
|
36723
|
+
function approvalAfterTimeout(stackName) {
|
|
36724
|
+
return markNonRetryable(new CdkdError(safeMsg`Deployment of stack ${stackName} was not started: its parent's nested-stack row already timed out (--resource-timeout). Nothing was changed.`, "DEPLOY_APPROVAL_AFTER_TIMEOUT"));
|
|
36725
|
+
}
|
|
36726
|
+
async function requireOutputsOnlyApproval(args) {
|
|
36727
|
+
const approve = args.options.approveDeployment;
|
|
36728
|
+
if (args.options.requireApproval !== "any-change" || approve === void 0) return;
|
|
36729
|
+
if (enclosingDeadlineExpired()) throw approvalAfterTimeout(args.stackName);
|
|
36730
|
+
let approved;
|
|
36731
|
+
try {
|
|
36732
|
+
approved = await whileEnclosingDeadlinesPaused(() => approve({
|
|
36733
|
+
stackName: args.stackName,
|
|
36734
|
+
level: "any-change",
|
|
36735
|
+
counts: {
|
|
36736
|
+
create: 0,
|
|
36737
|
+
update: 0,
|
|
36738
|
+
delete: 0
|
|
36739
|
+
},
|
|
36740
|
+
destructiveChanges: [],
|
|
36741
|
+
outputsOnly: true
|
|
36742
|
+
}));
|
|
36743
|
+
} catch (error) {
|
|
36744
|
+
throw error instanceof Error ? markNonRetryable(error) : error;
|
|
36745
|
+
}
|
|
36746
|
+
if (!approved) throw markNonRetryable(new CdkdError(safeMsg`Deployment of stack ${args.stackName} was not approved (--require-approval=any-change). Nothing was changed.`, "DEPLOY_NOT_APPROVED"));
|
|
36747
|
+
}
|
|
36748
|
+
function isNoEchoPromotionOnly(change) {
|
|
36749
|
+
return change.changeType === "UPDATE" && (change.attributeChanges?.length ?? 0) === 0 && (change.propertyChanges?.length ?? 0) > 0 && change.propertyChanges.every((pc) => pc.noEchoPromoted === true);
|
|
36750
|
+
}
|
|
36751
|
+
|
|
36237
36752
|
//#endregion
|
|
36238
36753
|
//#region src/deployment/deploy-engine/update.ts
|
|
36239
36754
|
function isWhollyMask(value) {
|
|
@@ -36341,7 +36856,8 @@ async function provisionUpdate(logicalId, change, stateResources, stackName, tem
|
|
|
36341
36856
|
const allowedForRecord = allowedSilentDrops ?? /* @__PURE__ */ new Set();
|
|
36342
36857
|
const createOnlyEvidence = acceptedCreateOnlyDropsOf(currentResource);
|
|
36343
36858
|
const recordedAsWritten = currentResource.provisionedBy === "cc-api" ? currentProps : withoutUnwrittenSilentDropProperties(resourceType, currentProps, desiredForSkipCheck, allowedForRecord, createOnlyEvidence);
|
|
36344
|
-
const
|
|
36859
|
+
const unmarkedRecord = noEchoLeavesOf(currentResource) === void 0;
|
|
36860
|
+
const todayAsWritten = unmarkedRecord ? redactSecretsForState(markSameGenerationBag({ ...resolvedProps }), withoutNoEchoParameterEntries(updateSecrets), desiredProps) : void 0;
|
|
36345
36861
|
const witness = todayAsWritten === void 0 ? void 0 : witnessNormalize(recordedAsWritten, todayAsWritten, desiredForSkipCheckAsWritten);
|
|
36346
36862
|
const currentPropsAsWritten = witness === void 0 ? recordedAsWritten : witness.current;
|
|
36347
36863
|
const positionalLeavesAt = (coordinates, key) => coordinates.filter((coordinate) => coordinate[0] === key).flatMap((coordinate) => {
|
|
@@ -36410,6 +36926,51 @@ async function provisionUpdate(logicalId, change, stateResources, stackName, tem
|
|
|
36410
36926
|
renderer.removeTask(logicalId);
|
|
36411
36927
|
this.logger.info(safeMsg`${attrPrefix}${formatResourceLine("updated", logicalId, resourceType, "updated (metadata)")}`);
|
|
36412
36928
|
};
|
|
36929
|
+
const schemaCreateOnly = pendingParameterLeaves.size === 0 && parameterCoordinates.length === 0 ? [] : await getCreateOnlyPropertyPaths(resourceType).catch(() => []);
|
|
36930
|
+
const echoCandidates = echoFidelityCandidates(parameterCoordinates, resolvedProps, schemaCreateOnly);
|
|
36931
|
+
const readbackRecord = unmarkedRecord && parameterCoordinates.length > 0 ? {
|
|
36932
|
+
...currentResource,
|
|
36933
|
+
properties: maskAtCoordinates(currentResource.properties, parameterCoordinates)
|
|
36934
|
+
} : currentResource;
|
|
36935
|
+
let readback;
|
|
36936
|
+
const readOnce = () => readback ??= this.readReaderForFreshNoEchoCeiling(logicalId, readbackRecord, updateSecrets).then((read) => {
|
|
36937
|
+
this.noteNoEchoExactEchoes(logicalId, currentResource.physicalId, read, readbackRecord.properties, echoCandidates, "add");
|
|
36938
|
+
return read;
|
|
36939
|
+
});
|
|
36940
|
+
const exactEchoCoordinates = new Set((noEchoExactEchoLeavesOf(currentResource) ?? []).map((c) => JSON.stringify(c)));
|
|
36941
|
+
const provenChangedAt = (key, read) => {
|
|
36942
|
+
if (exactEchoCoordinates.size === 0 || read === void 0 || "failure" in read) return false;
|
|
36943
|
+
return (pendingParameterLeaves.get(key) ?? []).some((leaf) => {
|
|
36944
|
+
const full = [key, ...leaf.path];
|
|
36945
|
+
if (!exactEchoCoordinates.has(JSON.stringify(full))) return false;
|
|
36946
|
+
const [candidate] = echoFidelityCandidates([full], resolvedProps, schemaCreateOnly);
|
|
36947
|
+
return candidate !== void 0 && provesEchoChangeAt(read.live, readbackRecord.properties, candidate);
|
|
36948
|
+
});
|
|
36949
|
+
};
|
|
36950
|
+
let replacedAnyway = false;
|
|
36951
|
+
let lateApproval;
|
|
36952
|
+
const approveReplacementOf = (pc) => {
|
|
36953
|
+
if (replacedAnyway) return Promise.resolve(true);
|
|
36954
|
+
const { noEchoPromoted: _promoted, ...asReplacement } = pc;
|
|
36955
|
+
lateApproval ??= approveLateReplacement({
|
|
36956
|
+
options: this.options,
|
|
36957
|
+
stackName,
|
|
36958
|
+
change: {
|
|
36959
|
+
...change,
|
|
36960
|
+
changeType: "UPDATE",
|
|
36961
|
+
propertyChanges: [{
|
|
36962
|
+
...asReplacement,
|
|
36963
|
+
requiresReplacement: true
|
|
36964
|
+
}]
|
|
36965
|
+
},
|
|
36966
|
+
records: stateResources,
|
|
36967
|
+
template
|
|
36968
|
+
});
|
|
36969
|
+
return lateApproval;
|
|
36970
|
+
};
|
|
36971
|
+
const lateReplacementDeclined = /* @__PURE__ */ new Set();
|
|
36972
|
+
const differsWhy = (key) => lateReplacementDeclined.has(key) ? `differs; the replacement was not approved (--require-approval=${this.options.requireApproval ?? "never"})` : "differs; the provider is not known to report this property exactly, so the difference may be its normalization";
|
|
36973
|
+
if (unmarkedRecord && !typeChanged && echoCandidates.length > 0 && hasAddressablePhysicalId(currentResource)) await readOnce();
|
|
36413
36974
|
if (!typeChanged && !suppliesFreshMaskOnlyValue && lostChild === void 0 && this.recreateDirectionFor(stackName, logicalId) === void 0 && recordMatchesDesired) {
|
|
36414
36975
|
if (change.attributeChanges && change.attributeChanges.length > 0) {
|
|
36415
36976
|
applyAttributeOnlyUpdate(change.attributeChanges);
|
|
@@ -36423,8 +36984,6 @@ async function provisionUpdate(logicalId, change, stateResources, stackName, tem
|
|
|
36423
36984
|
if (!(currentResource.resourceType === "AWS::CloudFormation::Stack" && currentResource.provisionedBy !== "cc-api") && !hasAddressablePhysicalId(currentResource)) throw markRefusedBeforeApplying(markNonRetryable(new CdkdError(unaddressableUpdateRefusalMessage(stackName, this.stackRegion, logicalId, oldResourceType, this.options.refusalRecovery), STATE_RESOURCES_MALFORMED)));
|
|
36424
36985
|
this.attemptedResolvedProps.set(logicalId, resolvedProps);
|
|
36425
36986
|
const noEchoHeldPaths = /* @__PURE__ */ new Set();
|
|
36426
|
-
let readback;
|
|
36427
|
-
const schemaCreateOnly = pendingParameterLeaves.size === 0 ? [] : await getCreateOnlyPropertyPaths(resourceType).catch(() => []);
|
|
36428
36987
|
const isSchemaCreateOnly = (key) => (pendingParameterLeaves.get(key) ?? []).some((leaf) => {
|
|
36429
36988
|
const full = [key, ...leaf.path.map(String)];
|
|
36430
36989
|
return schemaCreateOnly.some((path) => path.length <= full.length && path.every((segment, i) => segment === full[i]));
|
|
@@ -36454,8 +37013,7 @@ async function provisionUpdate(logicalId, change, stateResources, stackName, tem
|
|
|
36454
37013
|
lowered.push(pc);
|
|
36455
37014
|
continue;
|
|
36456
37015
|
}
|
|
36457
|
-
|
|
36458
|
-
const read = await readback;
|
|
37016
|
+
const read = await readOnce();
|
|
36459
37017
|
let verdict;
|
|
36460
37018
|
if ("failure" in read) verdict = read.failure;
|
|
36461
37019
|
else if (!Object.prototype.hasOwnProperty.call(read.live, pc.path)) verdict = "not-readable";
|
|
@@ -36489,7 +37047,7 @@ async function provisionUpdate(logicalId, change, stateResources, stackName, tem
|
|
|
36489
37047
|
const parameterHeldKeys = /* @__PURE__ */ new Set();
|
|
36490
37048
|
const parameterUnreadablePaths = [];
|
|
36491
37049
|
if (pendingParameterLeaves.size > 0 && !typeChanged) {
|
|
36492
|
-
const read = parameterCreateOnlyPaths.size > 0 || recordMatchesDesired ? await (
|
|
37050
|
+
const read = parameterCreateOnlyPaths.size > 0 || recordMatchesDesired ? await readOnce() : void 0;
|
|
36493
37051
|
const verdictAt = (key) => {
|
|
36494
37052
|
if (read === void 0) return "not-readable";
|
|
36495
37053
|
if ("failure" in read) return read.failure;
|
|
@@ -36497,13 +37055,15 @@ async function provisionUpdate(logicalId, change, stateResources, stackName, tem
|
|
|
36497
37055
|
return liveHoldsFreshLeaves(read.live[key], pendingParameterLeaves.get(key) ?? []) ? "held" : "differs";
|
|
36498
37056
|
};
|
|
36499
37057
|
const lowered = [];
|
|
37058
|
+
const movedAt = (path) => movedMasked.has(path) || keyOrderFreeJson(desiredForSkipCheckAsWritten[path]) !== keyOrderFreeJson(currentPropsAsWritten[path]);
|
|
37059
|
+
replacedAnyway = this.recreateDirectionFor(stackName, logicalId) !== void 0 || lostWithParent !== void 0 || (change.propertyChanges ?? []).some((other) => other.requiresReplacement && (!parameterCreateOnlyPaths.has(other.path) || movedAt(other.path)));
|
|
36500
37060
|
for (const pc of change.propertyChanges ?? []) {
|
|
36501
37061
|
if (!parameterCreateOnlyPaths.has(pc.path)) {
|
|
36502
37062
|
lowered.push(pc);
|
|
36503
37063
|
continue;
|
|
36504
37064
|
}
|
|
36505
|
-
if (
|
|
36506
|
-
warnWitnessReplacement(pc.path);
|
|
37065
|
+
if (movedAt(pc.path)) {
|
|
37066
|
+
if (pc.requiresReplacement) warnWitnessReplacement(pc.path);
|
|
36507
37067
|
lowered.push(pc);
|
|
36508
37068
|
continue;
|
|
36509
37069
|
}
|
|
@@ -36512,9 +37072,18 @@ async function provisionUpdate(logicalId, change, stateResources, stackName, tem
|
|
|
36512
37072
|
if (verdict === "held") {
|
|
36513
37073
|
parameterHeldKeys.add(pc.path);
|
|
36514
37074
|
this.logger.debug(safeMsg`${logicalId}.${pc.path} carries a NoEcho parameter value AWS already holds: not replaced.`);
|
|
37075
|
+
} else if (verdict === "differs" && provenChangedAt(pc.path, read) && await approveReplacementOf(pc)) {
|
|
37076
|
+
this.logger.warn(safeMsg`${logicalId}.${pc.path} is a create-only property fed by a NoEcho parameter, and AWS, which reports it exactly, holds a different value: ${logicalId} is replaced.`);
|
|
37077
|
+
lowered.push({
|
|
37078
|
+
...pc,
|
|
37079
|
+
requiresReplacement: true
|
|
37080
|
+
});
|
|
37081
|
+
continue;
|
|
36515
37082
|
} else {
|
|
36516
37083
|
const staleOnly = staleCoordinates.some((coordinate) => coordinate[0] === pc.path);
|
|
36517
|
-
|
|
37084
|
+
if (verdict === "differs" && provenChangedAt(pc.path, read)) lateReplacementDeclined.add(pc.path);
|
|
37085
|
+
const why = verdict === "differs" ? differsWhy(pc.path) : verdict;
|
|
37086
|
+
this.logger.warn(staleOnly ? safeMsg`${logicalId}.${pc.path} is a create-only property whose recorded value is only the NoEcho mask, and cdkd cannot confirm AWS holds its current value (${why}). It is not replaced, so a change to that value is not applied: to apply one, deploy with --recreate-via-cc-api ${logicalId} or --recreate-via-sdk-provider ${logicalId}.` : safeMsg`${logicalId}.${pc.path} is a create-only property fed by a NoEcho parameter, and cdkd cannot confirm AWS holds its current value (${why}). It is not replaced, so a change to that value is not applied: to apply one, deploy with --recreate-via-cc-api ${logicalId} or --recreate-via-sdk-provider ${logicalId}.`);
|
|
36518
37087
|
}
|
|
36519
37088
|
parameterSettledPaths.add(pc.path);
|
|
36520
37089
|
lowered.push({
|
|
@@ -36872,6 +37441,7 @@ async function updateByReplacement({ change, counts, currentProps, currentResour
|
|
|
36872
37441
|
provisionedBy: replaceDecision.provisionedBy
|
|
36873
37442
|
};
|
|
36874
37443
|
this.recordInlinePolicyWrite(logicalId, "create");
|
|
37444
|
+
await this.establishNoEchoEchoFidelity(logicalId, stateResources[logicalId], resolvedProps, stateResources, updateSecrets);
|
|
36875
37445
|
this.kickOffObservedCapture(replaceProvider, logicalId, createResult.physicalId, resourceType, resolvedProps, { afterOwnWrite: true }, updateSecrets);
|
|
36876
37446
|
if (counts) counts.updated++;
|
|
36877
37447
|
if (progress) progress.current++;
|
|
@@ -37103,6 +37673,7 @@ async function updateInPlace({ conditions, counts, currentProps, currentPropsAsW
|
|
|
37103
37673
|
...result.noEchoAttributeNames && { noEchoAttributeNames: result.noEchoAttributeNames }
|
|
37104
37674
|
}, updateSecrets, resolvedProps);
|
|
37105
37675
|
const recordedProperties = this.propertiesToRecord(resolvedProps, result, resourceType, resultProvisionedBy);
|
|
37676
|
+
if (result.wasReplaced) this.noEchoExactEchoes.delete(logicalId);
|
|
37106
37677
|
stateResources[logicalId] = {
|
|
37107
37678
|
physicalId: result.physicalId,
|
|
37108
37679
|
resourceType,
|
|
@@ -37110,6 +37681,7 @@ async function updateInPlace({ conditions, counts, currentProps, currentPropsAsW
|
|
|
37110
37681
|
...acceptedCreateOnlyDropsField(recordedProperties, resourceType, resultProvisionedBy, dischargedByReplacement ? "new-resource" : "in-place", currentResource),
|
|
37111
37682
|
...carriedAttributes && { attributes: carriedAttributes },
|
|
37112
37683
|
...!result.wasReplaced && currentResource.noEchoAttributeNames !== void 0 && { noEchoAttributeNames: currentResource.noEchoAttributeNames },
|
|
37684
|
+
...!result.wasReplaced && currentResource.noEchoExactEchoLeaves !== void 0 && { noEchoExactEchoLeaves: currentResource.noEchoExactEchoLeaves },
|
|
37113
37685
|
...dependencies && dependencies.length > 0 && { dependencies },
|
|
37114
37686
|
...this.extractTemplateAttributes(template, logicalId),
|
|
37115
37687
|
provisionedBy: resultProvisionedBy,
|
|
@@ -37287,103 +37859,6 @@ Drop the record with: ${dropCommand}`);
|
|
|
37287
37859
|
this.logger.info(`${deletePrefix}${formatResourceLine("deleted", logicalId, resourceType)}`);
|
|
37288
37860
|
}
|
|
37289
37861
|
|
|
37290
|
-
//#endregion
|
|
37291
|
-
//#region src/deployment/resource-deadline.ts
|
|
37292
|
-
var InvalidResourceDeadlineError = class extends Error {
|
|
37293
|
-
constructor(message) {
|
|
37294
|
-
super(message);
|
|
37295
|
-
this.name = "InvalidResourceDeadlineError";
|
|
37296
|
-
}
|
|
37297
|
-
};
|
|
37298
|
-
function validateOptions(opts) {
|
|
37299
|
-
const { warnAfterMs, timeoutMs } = opts;
|
|
37300
|
-
if (!Number.isFinite(warnAfterMs) || !Number.isFinite(timeoutMs) || warnAfterMs <= 0 || timeoutMs <= 0) throw new InvalidResourceDeadlineError(`withResourceDeadline: warnAfterMs and timeoutMs must be positive finite numbers (got warnAfterMs=${warnAfterMs}, timeoutMs=${timeoutMs})`);
|
|
37301
|
-
if (warnAfterMs >= timeoutMs) throw new InvalidResourceDeadlineError(`withResourceDeadline: warnAfterMs (${warnAfterMs}ms) must be less than timeoutMs (${timeoutMs}ms)`);
|
|
37302
|
-
}
|
|
37303
|
-
async function withResourceDeadline(operation, opts) {
|
|
37304
|
-
validateOptions(opts);
|
|
37305
|
-
return new Promise((resolve, reject) => {
|
|
37306
|
-
let settled = false;
|
|
37307
|
-
let timedOut = false;
|
|
37308
|
-
let warned = false;
|
|
37309
|
-
let warnTimer;
|
|
37310
|
-
let timeoutTimer;
|
|
37311
|
-
let elapsedBeforePause = 0;
|
|
37312
|
-
let runningSince = Date.now();
|
|
37313
|
-
let pauses = 0;
|
|
37314
|
-
const elapsed = () => elapsedBeforePause + (pauses > 0 ? 0 : Date.now() - runningSince);
|
|
37315
|
-
const cleanup = () => {
|
|
37316
|
-
if (warnTimer !== void 0) clearTimeout(warnTimer);
|
|
37317
|
-
if (timeoutTimer !== void 0) clearTimeout(timeoutTimer);
|
|
37318
|
-
warnTimer = void 0;
|
|
37319
|
-
timeoutTimer = void 0;
|
|
37320
|
-
};
|
|
37321
|
-
const arm = () => {
|
|
37322
|
-
if (opts.onWarn && !warned) warnTimer = setTimeout(() => {
|
|
37323
|
-
if (settled) return;
|
|
37324
|
-
warned = true;
|
|
37325
|
-
try {
|
|
37326
|
-
opts.onWarn(elapsed());
|
|
37327
|
-
} catch {}
|
|
37328
|
-
}, Math.max(0, opts.warnAfterMs - elapsed()));
|
|
37329
|
-
timeoutTimer = setTimeout(() => {
|
|
37330
|
-
if (settled) return;
|
|
37331
|
-
settled = true;
|
|
37332
|
-
timedOut = true;
|
|
37333
|
-
cleanup();
|
|
37334
|
-
reject(opts.onTimeout(elapsed()));
|
|
37335
|
-
}, Math.max(0, opts.timeoutMs - elapsed()));
|
|
37336
|
-
};
|
|
37337
|
-
arm();
|
|
37338
|
-
const outer = deadlineScope.getStore();
|
|
37339
|
-
const control = {
|
|
37340
|
-
pause: () => {
|
|
37341
|
-
pauses += 1;
|
|
37342
|
-
if (pauses === 1) {
|
|
37343
|
-
elapsedBeforePause += Date.now() - runningSince;
|
|
37344
|
-
cleanup();
|
|
37345
|
-
}
|
|
37346
|
-
outer?.pause();
|
|
37347
|
-
},
|
|
37348
|
-
resume: () => {
|
|
37349
|
-
if (pauses === 0) return;
|
|
37350
|
-
pauses -= 1;
|
|
37351
|
-
if (pauses === 0) {
|
|
37352
|
-
runningSince = Date.now();
|
|
37353
|
-
if (!settled) arm();
|
|
37354
|
-
}
|
|
37355
|
-
outer?.resume();
|
|
37356
|
-
},
|
|
37357
|
-
expired: () => timedOut || (outer?.expired() ?? false)
|
|
37358
|
-
};
|
|
37359
|
-
Promise.resolve().then(() => deadlineScope.run(control, operation)).then((value) => {
|
|
37360
|
-
if (settled) return;
|
|
37361
|
-
settled = true;
|
|
37362
|
-
cleanup();
|
|
37363
|
-
resolve(value);
|
|
37364
|
-
}, (err) => {
|
|
37365
|
-
if (settled) return;
|
|
37366
|
-
settled = true;
|
|
37367
|
-
cleanup();
|
|
37368
|
-
reject(err);
|
|
37369
|
-
});
|
|
37370
|
-
});
|
|
37371
|
-
}
|
|
37372
|
-
const deadlineScope = new AsyncLocalStorage();
|
|
37373
|
-
async function whileEnclosingDeadlinesPaused(fn) {
|
|
37374
|
-
const control = deadlineScope.getStore();
|
|
37375
|
-
if (control === void 0) return fn();
|
|
37376
|
-
control.pause();
|
|
37377
|
-
try {
|
|
37378
|
-
return await fn();
|
|
37379
|
-
} finally {
|
|
37380
|
-
control.resume();
|
|
37381
|
-
}
|
|
37382
|
-
}
|
|
37383
|
-
function enclosingDeadlineExpired() {
|
|
37384
|
-
return deadlineScope.getStore()?.expired() ?? false;
|
|
37385
|
-
}
|
|
37386
|
-
|
|
37387
37862
|
//#endregion
|
|
37388
37863
|
//#region src/deployment/deploy-engine/provision.ts
|
|
37389
37864
|
async function provisionResource(logicalId, change, stateResources, stackName, template, parameterValues, conditions, counts, progress) {
|
|
@@ -38135,248 +38610,6 @@ function journaledOrphanPolicy(policy) {
|
|
|
38135
38610
|
return policy === "Delete" || policy === "Retain" || policy === "Snapshot" || policy === "RetainExceptOnCreate" ? policy : "Retain";
|
|
38136
38611
|
}
|
|
38137
38612
|
|
|
38138
|
-
//#endregion
|
|
38139
|
-
//#region src/deployment/deploy-engine/noecho.ts
|
|
38140
|
-
function noEchoParameterNamesOf(template) {
|
|
38141
|
-
const names = /* @__PURE__ */ new Set();
|
|
38142
|
-
const declared = template?.Parameters;
|
|
38143
|
-
if (declared === null || typeof declared !== "object") return names;
|
|
38144
|
-
for (const [name, definition] of Object.entries(declared)) {
|
|
38145
|
-
const noEcho = definition?.NoEcho;
|
|
38146
|
-
if (noEcho === true || noEcho === "true") names.add(name);
|
|
38147
|
-
}
|
|
38148
|
-
return names;
|
|
38149
|
-
}
|
|
38150
|
-
function noEchoAttributeNamesOf(record) {
|
|
38151
|
-
const field = record?.noEchoAttributeNames;
|
|
38152
|
-
if (!Array.isArray(field) || !field.every((name) => typeof name === "string")) return void 0;
|
|
38153
|
-
return field;
|
|
38154
|
-
}
|
|
38155
|
-
function noEchoPositionSources(resources = {}, template = this.constructPathTemplate, conditions = this.noEchoConditions) {
|
|
38156
|
-
if (template === void 0) return void 0;
|
|
38157
|
-
const declared = this.noEchoAttributeResources;
|
|
38158
|
-
return {
|
|
38159
|
-
parameters: /* @__PURE__ */ new Set([...noEchoParameterNamesOf(template), ...this.inheritedNoEchoParameters]),
|
|
38160
|
-
attributeIsNoEcho: (logicalId, attribute) => {
|
|
38161
|
-
const live = declared.get(logicalId);
|
|
38162
|
-
if (live === true || live !== void 0 && live.has(attribute)) return true;
|
|
38163
|
-
if (noEchoAttributeNamesOf(Object.hasOwn(resources, logicalId) ? resources[logicalId] : void 0)?.includes(attribute) === true) return true;
|
|
38164
|
-
return this.persistedNoEchoAttributes.get(logicalId)?.has(attribute) === true;
|
|
38165
|
-
},
|
|
38166
|
-
...conditions !== void 0 && { conditions }
|
|
38167
|
-
};
|
|
38168
|
-
}
|
|
38169
|
-
function noEchoLeavesFor(logicalId, record, templateProps, sources) {
|
|
38170
|
-
if (templateProps !== void 0 && isWrittenFromDeployedTemplate(record.properties)) return canonicalCoordinates(noEchoCoordinatesOf(templateProps, record.properties, sources));
|
|
38171
|
-
const existing = noEchoLeavesOf(record);
|
|
38172
|
-
if (existing !== void 0) return canonicalCoordinates(existing);
|
|
38173
|
-
const resolvedAsSame = this.perResourceResolvedType.get(logicalId) === record.resourceType;
|
|
38174
|
-
const source = (templateProps !== void 0 && resolvedAsSame ? templateProps : void 0) ?? templatePropertiesFor(this, logicalId, record.resourceType);
|
|
38175
|
-
if (source === void 0) return void 0;
|
|
38176
|
-
return canonicalCoordinates(noEchoCoordinatesOf(source, record.properties, sources));
|
|
38177
|
-
}
|
|
38178
|
-
function templatePropertiesFor(engine, logicalId, resourceType) {
|
|
38179
|
-
const resources = engine.constructPathTemplate?.Resources;
|
|
38180
|
-
if (resources === void 0 || !Object.hasOwn(resources, logicalId)) return void 0;
|
|
38181
|
-
const definition = resources[logicalId];
|
|
38182
|
-
if (definition?.Type !== resourceType) return void 0;
|
|
38183
|
-
const properties = definition.Properties;
|
|
38184
|
-
return properties !== null && typeof properties === "object" && !Array.isArray(properties) ? properties : void 0;
|
|
38185
|
-
}
|
|
38186
|
-
function noEchoAttributeNamesFor(engine, logicalId, record, carried, leaves) {
|
|
38187
|
-
const attributes = record.attributes ?? {};
|
|
38188
|
-
const names = /* @__PURE__ */ new Set();
|
|
38189
|
-
let echoed = false;
|
|
38190
|
-
for (const coordinate of leaves ?? []) {
|
|
38191
|
-
const value = valueAtCoordinate(record.properties, coordinate);
|
|
38192
|
-
if (value === void 0 || carriesSecretMask(value)) continue;
|
|
38193
|
-
for (const [name, attribute] of Object.entries(attributes)) {
|
|
38194
|
-
if (carriesSecretMask(attribute)) continue;
|
|
38195
|
-
if (typeof attribute === "string" && attribute === record.physicalId) continue;
|
|
38196
|
-
const sameName = coordinate[0] === name && keyOrderFreeJson(attribute) === keyOrderFreeJson(value);
|
|
38197
|
-
const embeds = typeof value === "string" && typeof attribute === "string" && !attribute.startsWith("arn:") && value.length >= 4 && typeof attribute === "string" && attribute.includes(value);
|
|
38198
|
-
if (sameName || embeds) {
|
|
38199
|
-
names.add(name);
|
|
38200
|
-
echoed = true;
|
|
38201
|
-
}
|
|
38202
|
-
}
|
|
38203
|
-
}
|
|
38204
|
-
const declared = carried ? void 0 : engine.noEchoAttributeResources.get(logicalId);
|
|
38205
|
-
if (declared === true) for (const name of Object.keys(attributes)) names.add(name);
|
|
38206
|
-
else if (declared !== void 0) {
|
|
38207
|
-
for (const name of declared) if (Object.hasOwn(attributes, name)) names.add(name);
|
|
38208
|
-
}
|
|
38209
|
-
const prior = noEchoAttributeNamesOf(record);
|
|
38210
|
-
for (const name of prior ?? []) if (Object.hasOwn(attributes, name) && carriesSecretMask(attributes[name])) names.add(name);
|
|
38211
|
-
if (declared === void 0 && prior === void 0 && !echoed) return void 0;
|
|
38212
|
-
return [...names].sort();
|
|
38213
|
-
}
|
|
38214
|
-
function applyNoEchoPersist(logicalId, record, scrubbed, templateProps, resources, secrets, carried = false) {
|
|
38215
|
-
const sources = this.noEchoPositionSources(resources);
|
|
38216
|
-
if (sources === void 0) return scrubbed;
|
|
38217
|
-
const leaves = this.noEchoLeavesFor(logicalId, record, templateProps, sources);
|
|
38218
|
-
const names = noEchoAttributeNamesFor(this, logicalId, record, carried, leaves);
|
|
38219
|
-
if (leaves === void 0 && names === void 0) return scrubbed;
|
|
38220
|
-
const next = { ...scrubbed };
|
|
38221
|
-
if (leaves !== void 0) {
|
|
38222
|
-
next.properties = maskAtCoordinates(scrubbed.properties, leaves);
|
|
38223
|
-
if (scrubbed.observedProperties !== void 0 && leaves.length > 0) Object.assign(next, { observedProperties: maskReadbackAtCoordinates(scrubbed.observedProperties, record.properties, leaves) });
|
|
38224
|
-
if (leaves.length > 0) next.noEchoLeaves = leaves;
|
|
38225
|
-
else delete next.noEchoLeaves;
|
|
38226
|
-
}
|
|
38227
|
-
if (names !== void 0) {
|
|
38228
|
-
if (scrubbed.attributes !== void 0 && names.length > 0) {
|
|
38229
|
-
const attributes = { ...scrubbed.attributes };
|
|
38230
|
-
for (const name of names) if (Object.hasOwn(attributes, name)) attributes[name] = maskWholeValue(attributes[name]);
|
|
38231
|
-
next.attributes = attributes;
|
|
38232
|
-
}
|
|
38233
|
-
if (names.length > 0) next.noEchoAttributeNames = names;
|
|
38234
|
-
else delete next.noEchoAttributeNames;
|
|
38235
|
-
}
|
|
38236
|
-
this.warnNoEchoPhysicalId(logicalId, record, secrets);
|
|
38237
|
-
return next;
|
|
38238
|
-
}
|
|
38239
|
-
function warnNoEchoPhysicalId(logicalId, record, secrets) {
|
|
38240
|
-
if (secrets === void 0 || this.noEchoPhysicalIdWarned.has(logicalId)) return;
|
|
38241
|
-
const values = noEchoParameterPlaintextsOf(secrets);
|
|
38242
|
-
if (values.length === 0 || typeof record.physicalId !== "string") return;
|
|
38243
|
-
if (!values.some((value) => record.physicalId.includes(value))) return;
|
|
38244
|
-
this.noEchoPhysicalIdWarned.add(logicalId);
|
|
38245
|
-
this.logger.warn(this.maskForResource(logicalId, safeMsg`${logicalId}: its physical id contains a NoEcho parameter value. AWS publishes a resource's name, so cdkd keeps the physical id in state as AWS returns it.`));
|
|
38246
|
-
}
|
|
38247
|
-
function seedPersistedNoEchoAttributes(resources) {
|
|
38248
|
-
this.persistedNoEchoAttributes = /* @__PURE__ */ new Map();
|
|
38249
|
-
for (const [logicalId, record] of Object.entries(resources)) {
|
|
38250
|
-
const names = noEchoAttributeNamesOf(record);
|
|
38251
|
-
if (names !== void 0 && names.length > 0) this.persistedNoEchoAttributes.set(logicalId, new Set(names));
|
|
38252
|
-
}
|
|
38253
|
-
}
|
|
38254
|
-
function maskOutputsByPosition(outputs) {
|
|
38255
|
-
const sources = this.noEchoPositionSources();
|
|
38256
|
-
if (sources === void 0) return outputs;
|
|
38257
|
-
const templateValues = Object.create(null);
|
|
38258
|
-
for (const [name, definition] of Object.entries(this.constructPathTemplate?.Outputs ?? {})) templateValues[name] = definition?.Value;
|
|
38259
|
-
if (this.outputsSourceUsable) for (const [name, value] of Object.entries(this.outputsTemplateSource)) templateValues[name] = value;
|
|
38260
|
-
const coordinates = noEchoCoordinatesOf(templateValues, outputs, sources);
|
|
38261
|
-
if (coordinates.length === 0) return outputs;
|
|
38262
|
-
const maskedValues = new Set(coordinates.filter((coordinate) => coordinate.length === 1 && typeof coordinate[0] === "string").map((coordinate) => keyOrderFreeJson(outputs[coordinate[0]])));
|
|
38263
|
-
const aliasCoordinates = Object.keys(outputs).filter((key) => !Object.hasOwn(templateValues, key) && outputs[key] !== void 0 && !carriesSecretMask(outputs[key]) && maskedValues.has(keyOrderFreeJson(outputs[key]))).map((key) => [key]);
|
|
38264
|
-
return maskAtCoordinates(outputs, [...coordinates, ...aliasCoordinates]);
|
|
38265
|
-
}
|
|
38266
|
-
function getAttTargetsOf(node) {
|
|
38267
|
-
const targets = [];
|
|
38268
|
-
const seen = /* @__PURE__ */ new Set();
|
|
38269
|
-
const subVariable = /\$\{([^}!][^}]*)\}/g;
|
|
38270
|
-
const walk = (value) => {
|
|
38271
|
-
if (value === null || typeof value !== "object" || seen.has(value)) return;
|
|
38272
|
-
seen.add(value);
|
|
38273
|
-
if (Array.isArray(value)) {
|
|
38274
|
-
for (const item of value) walk(item);
|
|
38275
|
-
return;
|
|
38276
|
-
}
|
|
38277
|
-
const record = value;
|
|
38278
|
-
const getAtt = record["Fn::GetAtt"];
|
|
38279
|
-
if (typeof getAtt === "string" && getAtt.indexOf(".") > 0) {
|
|
38280
|
-
const dot = getAtt.indexOf(".");
|
|
38281
|
-
targets.push([getAtt.slice(0, dot), getAtt.slice(dot + 1)]);
|
|
38282
|
-
} else if (Array.isArray(getAtt) && typeof getAtt[0] === "string" && typeof getAtt[1] === "string") targets.push([getAtt[0], getAtt[1]]);
|
|
38283
|
-
const sub = record["Fn::Sub"];
|
|
38284
|
-
const text = typeof sub === "string" ? sub : Array.isArray(sub) ? sub[0] : void 0;
|
|
38285
|
-
if (typeof text === "string") for (const match of text.matchAll(subVariable)) {
|
|
38286
|
-
const name = match[1].trim();
|
|
38287
|
-
const dot = name.indexOf(".");
|
|
38288
|
-
if (dot > 0) targets.push([name.slice(0, dot), name.slice(dot + 1)]);
|
|
38289
|
-
}
|
|
38290
|
-
for (const child of Object.values(record)) walk(child);
|
|
38291
|
-
};
|
|
38292
|
-
walk(node);
|
|
38293
|
-
return targets;
|
|
38294
|
-
}
|
|
38295
|
-
async function noEchoAttributeOverridesFor(desiredProps, stateResources, stackName) {
|
|
38296
|
-
const wanted = /* @__PURE__ */ new Map();
|
|
38297
|
-
for (const [logicalId, attribute] of getAttTargetsOf(desiredProps)) {
|
|
38298
|
-
const record = Object.hasOwn(stateResources, logicalId) ? stateResources[logicalId] : void 0;
|
|
38299
|
-
if (record === void 0) continue;
|
|
38300
|
-
if (noEchoAttributeNamesOf(record)?.includes(attribute) !== true) continue;
|
|
38301
|
-
if (!carriesSecretMask(record.attributes?.[attribute])) continue;
|
|
38302
|
-
if (!this.perResourceSecrets.has(logicalId)) continue;
|
|
38303
|
-
const set = wanted.get(logicalId) ?? /* @__PURE__ */ new Set();
|
|
38304
|
-
set.add(attribute);
|
|
38305
|
-
wanted.set(logicalId, set);
|
|
38306
|
-
}
|
|
38307
|
-
if (wanted.size === 0) return void 0;
|
|
38308
|
-
const overrides = /* @__PURE__ */ new Map();
|
|
38309
|
-
for (const [logicalId, attributes] of wanted) {
|
|
38310
|
-
const record = stateResources[logicalId];
|
|
38311
|
-
let read = this.noEchoAttributeReads.get(logicalId);
|
|
38312
|
-
if (read === void 0) {
|
|
38313
|
-
read = (async () => {
|
|
38314
|
-
try {
|
|
38315
|
-
const { provider } = this.providerRegistry.getProviderFor({
|
|
38316
|
-
resourceType: record.resourceType,
|
|
38317
|
-
properties: record.properties,
|
|
38318
|
-
provisionedBy: record.provisionedBy,
|
|
38319
|
-
previousProperties: record.properties
|
|
38320
|
-
});
|
|
38321
|
-
const outcome = await readRecordAttributes({
|
|
38322
|
-
provider,
|
|
38323
|
-
logicalId,
|
|
38324
|
-
resource: record,
|
|
38325
|
-
stackName,
|
|
38326
|
-
region: this.stackRegion
|
|
38327
|
-
});
|
|
38328
|
-
return outcome.kind === "read" ? outcome.attributes : void 0;
|
|
38329
|
-
} catch {
|
|
38330
|
-
return;
|
|
38331
|
-
}
|
|
38332
|
-
})();
|
|
38333
|
-
this.noEchoAttributeReads.set(logicalId, read);
|
|
38334
|
-
}
|
|
38335
|
-
const live = await read;
|
|
38336
|
-
if (live === void 0) continue;
|
|
38337
|
-
const secrets = this.perResourceSecrets.get(logicalId);
|
|
38338
|
-
const fresh = noEchoParameterPlaintextsOf(secrets);
|
|
38339
|
-
const positioned = this.noEchoPositionedValues.get(logicalId) ?? /* @__PURE__ */ new Set();
|
|
38340
|
-
const served = {};
|
|
38341
|
-
for (const attribute of attributes) {
|
|
38342
|
-
if (!Object.hasOwn(live, attribute)) continue;
|
|
38343
|
-
const value = live[attribute];
|
|
38344
|
-
if (typeof value === "string" && fresh.some((needle) => value === needle || value.includes(needle)) || value !== void 0 && positioned.has(keyOrderFreeJson(value))) served[attribute] = value;
|
|
38345
|
-
}
|
|
38346
|
-
if (Object.keys(served).length > 0) overrides.set(logicalId, served);
|
|
38347
|
-
}
|
|
38348
|
-
return overrides.size > 0 ? overrides : void 0;
|
|
38349
|
-
}
|
|
38350
|
-
function noEchoDiffComparison(resources, template, conditions, parameterValues, stackName) {
|
|
38351
|
-
const sources = this.noEchoPositionSources(resources, template, conditions);
|
|
38352
|
-
if (sources === void 0) return void 0;
|
|
38353
|
-
const compare = noEchoComparison({
|
|
38354
|
-
sources,
|
|
38355
|
-
values: parameterValues,
|
|
38356
|
-
minNeedleLength: 4,
|
|
38357
|
-
publicTokens: /* @__PURE__ */ new Set([this.stackRegion, ...stackName === void 0 ? [] : [stackName]])
|
|
38358
|
-
});
|
|
38359
|
-
return (input) => compare(input);
|
|
38360
|
-
}
|
|
38361
|
-
function freshNoEchoParametersWithDeclared(inherited, template) {
|
|
38362
|
-
const all = /* @__PURE__ */ new Set([...inherited ?? [], ...noEchoParameterNamesOf(template)]);
|
|
38363
|
-
return all.size > 0 ? all : void 0;
|
|
38364
|
-
}
|
|
38365
|
-
function noEchoComparisonForTemplate(template, knownConditions, values, resources, publicTokens, inheritedNoEchoParameters) {
|
|
38366
|
-
const sources = {
|
|
38367
|
-
parameters: /* @__PURE__ */ new Set([...noEchoParameterNamesOf(template), ...inheritedNoEchoParameters ?? []]),
|
|
38368
|
-
attributeIsNoEcho: (logicalId, attribute) => noEchoAttributeNamesOf(Object.hasOwn(resources, logicalId) ? resources[logicalId] : void 0)?.includes(attribute) === true,
|
|
38369
|
-
...knownConditions !== void 0 && { conditions: knownConditions }
|
|
38370
|
-
};
|
|
38371
|
-
const compare = noEchoComparison({
|
|
38372
|
-
sources,
|
|
38373
|
-
values: values ?? {},
|
|
38374
|
-
minNeedleLength: 4,
|
|
38375
|
-
...publicTokens !== void 0 && { publicTokens }
|
|
38376
|
-
});
|
|
38377
|
-
return (input) => compare(input);
|
|
38378
|
-
}
|
|
38379
|
-
|
|
38380
38613
|
//#endregion
|
|
38381
38614
|
//#region src/provisioning/canonicalize-properties.ts
|
|
38382
38615
|
function makeCanonicalizePropertiesFn(registry) {
|
|
@@ -38489,65 +38722,6 @@ function refuseNoValueOutputs(outputs, conditions) {
|
|
|
38489
38722
|
throw markNonRetryable(/* @__PURE__ */ new Error(`Output ${offending.join(", ")} evaluates to AWS::NoValue, and CloudFormation rejects the template for it ("The Value field of every Outputs member must evaluate to a String") before creating anything. To publish an Output only sometimes, give it a Condition instead of selecting AWS::NoValue in its Value.`));
|
|
38490
38723
|
}
|
|
38491
38724
|
|
|
38492
|
-
//#endregion
|
|
38493
|
-
//#region src/deployment/deployment-approval.ts
|
|
38494
|
-
const NESTED_STACK_TYPE$1 = "AWS::CloudFormation::Stack";
|
|
38495
|
-
async function requireDeploymentApproval(args) {
|
|
38496
|
-
const level = args.options.requireApproval ?? "never";
|
|
38497
|
-
const approve = args.options.approveDeployment;
|
|
38498
|
-
if (level === "never" || approve === void 0) return;
|
|
38499
|
-
const changes = [...args.changes].filter((c) => c.changeType !== "NO_CHANGE" && !isNoEchoPromotionOnly(c));
|
|
38500
|
-
const destructiveChanges = findDestructiveChanges(args.stackName, changes, args.records, args.template, new Set(args.recreateTargetIds ?? []));
|
|
38501
|
-
const onlyNestedUpdates = changes.every((c) => c.changeType === "UPDATE" && c.resourceType === NESTED_STACK_TYPE$1);
|
|
38502
|
-
if (!(level === "destructive" ? destructiveChanges.length > 0 : changes.length > 0 && !onlyNestedUpdates)) return;
|
|
38503
|
-
const count = (type) => changes.filter((c) => c.changeType === type).length;
|
|
38504
|
-
if (enclosingDeadlineExpired()) throw approvalAfterTimeout(args.stackName);
|
|
38505
|
-
let approved;
|
|
38506
|
-
try {
|
|
38507
|
-
approved = await whileEnclosingDeadlinesPaused(() => approve({
|
|
38508
|
-
stackName: args.stackName,
|
|
38509
|
-
level,
|
|
38510
|
-
counts: {
|
|
38511
|
-
create: count("CREATE"),
|
|
38512
|
-
update: count("UPDATE"),
|
|
38513
|
-
delete: count("DELETE")
|
|
38514
|
-
},
|
|
38515
|
-
destructiveChanges
|
|
38516
|
-
}));
|
|
38517
|
-
} catch (error) {
|
|
38518
|
-
throw error instanceof Error ? markNonRetryable(error) : error;
|
|
38519
|
-
}
|
|
38520
|
-
if (!approved) throw markNonRetryable(new CdkdError(safeMsg`Deployment of stack ${args.stackName} was not approved (--require-approval=${level}). Nothing was changed.`, "DEPLOY_NOT_APPROVED"));
|
|
38521
|
-
}
|
|
38522
|
-
function approvalAfterTimeout(stackName) {
|
|
38523
|
-
return markNonRetryable(new CdkdError(safeMsg`Deployment of stack ${stackName} was not started: its parent's nested-stack row already timed out (--resource-timeout). Nothing was changed.`, "DEPLOY_APPROVAL_AFTER_TIMEOUT"));
|
|
38524
|
-
}
|
|
38525
|
-
async function requireOutputsOnlyApproval(args) {
|
|
38526
|
-
const approve = args.options.approveDeployment;
|
|
38527
|
-
if (args.options.requireApproval !== "any-change" || approve === void 0) return;
|
|
38528
|
-
if (enclosingDeadlineExpired()) throw approvalAfterTimeout(args.stackName);
|
|
38529
|
-
let approved;
|
|
38530
|
-
try {
|
|
38531
|
-
approved = await whileEnclosingDeadlinesPaused(() => approve({
|
|
38532
|
-
stackName: args.stackName,
|
|
38533
|
-
level: "any-change",
|
|
38534
|
-
counts: {
|
|
38535
|
-
create: 0,
|
|
38536
|
-
update: 0,
|
|
38537
|
-
delete: 0
|
|
38538
|
-
},
|
|
38539
|
-
destructiveChanges: [],
|
|
38540
|
-
outputsOnly: true
|
|
38541
|
-
}));
|
|
38542
|
-
} catch (error) {
|
|
38543
|
-
throw error instanceof Error ? markNonRetryable(error) : error;
|
|
38544
|
-
}
|
|
38545
|
-
if (!approved) throw markNonRetryable(new CdkdError(safeMsg`Deployment of stack ${args.stackName} was not approved (--require-approval=any-change). Nothing was changed.`, "DEPLOY_NOT_APPROVED"));
|
|
38546
|
-
}
|
|
38547
|
-
function isNoEchoPromotionOnly(change) {
|
|
38548
|
-
return change.changeType === "UPDATE" && (change.attributeChanges?.length ?? 0) === 0 && (change.propertyChanges?.length ?? 0) > 0 && change.propertyChanges.every((pc) => pc.noEchoPromoted === true);
|
|
38549
|
-
}
|
|
38550
|
-
|
|
38551
38725
|
//#endregion
|
|
38552
38726
|
//#region src/deployment/condition-verdicts.ts
|
|
38553
38727
|
function conditionInputsFrom(args) {
|
|
@@ -39528,6 +39702,7 @@ var DeployEngine = class {
|
|
|
39528
39702
|
inheritedNoEchoParameters = /* @__PURE__ */ new Set();
|
|
39529
39703
|
noEchoPhysicalIdWarned = /* @__PURE__ */ new Set();
|
|
39530
39704
|
noEchoPositionedValues = /* @__PURE__ */ new Map();
|
|
39705
|
+
noEchoExactEchoes = /* @__PURE__ */ new Map();
|
|
39531
39706
|
noEchoAttributeReads = /* @__PURE__ */ new Map();
|
|
39532
39707
|
replacedDeleteSkips = /* @__PURE__ */ new Map();
|
|
39533
39708
|
secretNameNeedles = /* @__PURE__ */ new Map();
|
|
@@ -39591,6 +39766,7 @@ var DeployEngine = class {
|
|
|
39591
39766
|
this.inheritedNoEchoParameters = /* @__PURE__ */ new Set();
|
|
39592
39767
|
this.noEchoPhysicalIdWarned = /* @__PURE__ */ new Set();
|
|
39593
39768
|
this.noEchoPositionedValues = /* @__PURE__ */ new Map();
|
|
39769
|
+
this.noEchoExactEchoes = /* @__PURE__ */ new Map();
|
|
39594
39770
|
this.noEchoAttributeReads = /* @__PURE__ */ new Map();
|
|
39595
39771
|
this.replacedDeleteSkips = /* @__PURE__ */ new Map();
|
|
39596
39772
|
this.secretNameNeedles = /* @__PURE__ */ new Map();
|
|
@@ -39630,7 +39806,7 @@ var DeployEngine = class {
|
|
|
39630
39806
|
const secrets = this.perResourceSecrets.get(logicalId);
|
|
39631
39807
|
const templateProps = this.perResourceTemplateProps.get(logicalId);
|
|
39632
39808
|
const scrubbed = scrubResourceRecord(this.withHealedAttributes(logicalId, record), secrets ?? /* @__PURE__ */ new Map(), templateProps);
|
|
39633
|
-
const noEchoScrubbed = this.applyNoEchoPersist(logicalId, record, scrubbed, templateProps, state.resources, secrets);
|
|
39809
|
+
const noEchoScrubbed = this.applyNoEchoPersist(logicalId, record, this.withNoEchoExactEchoes(logicalId, scrubbed), templateProps, state.resources, secrets);
|
|
39634
39810
|
resources[logicalId] = withConstructPath(withMaskedPropertyFingerprints(noEchoScrubbed, record.properties, templateProps, secrets, this.fingerprintNoEchoValues, this.perResourceInputFingerprints.get(logicalId)), constructPathOf(this.constructPathTemplate, logicalId));
|
|
39635
39811
|
}
|
|
39636
39812
|
const orphans = state.orphans?.map((entry) => {
|
|
@@ -39818,6 +39994,9 @@ DeployEngine.prototype.warnNoEchoPhysicalId = warnNoEchoPhysicalId;
|
|
|
39818
39994
|
DeployEngine.prototype.seedPersistedNoEchoAttributes = seedPersistedNoEchoAttributes;
|
|
39819
39995
|
DeployEngine.prototype.noEchoAttributeOverridesFor = noEchoAttributeOverridesFor;
|
|
39820
39996
|
DeployEngine.prototype.noEchoDiffComparison = noEchoDiffComparison;
|
|
39997
|
+
DeployEngine.prototype.noteNoEchoExactEchoes = noteNoEchoExactEchoes;
|
|
39998
|
+
DeployEngine.prototype.establishNoEchoEchoFidelity = establishNoEchoEchoFidelity;
|
|
39999
|
+
DeployEngine.prototype.withNoEchoExactEchoes = withNoEchoExactEchoes;
|
|
39821
40000
|
DeployEngine.prototype.handleOutputResolutionFailure = handleOutputResolutionFailure;
|
|
39822
40001
|
DeployEngine.prototype.resolveOutputs = resolveOutputs;
|
|
39823
40002
|
DeployEngine.prototype.buildDisplayOutputs = buildDisplayOutputs;
|
|
@@ -39825,5 +40004,5 @@ DeployEngine.prototype.replacementNameOrigin = replacementNameOrigin;
|
|
|
39825
40004
|
DeployEngine.prototype.orphanedNameCollisionAdvice = orphanedNameCollisionAdvice;
|
|
39826
40005
|
|
|
39827
40006
|
//#endregion
|
|
39828
|
-
export { dropFailedHint as $, isMarkedCoordinate as $a, refuseMalformedResourcePropertiesForDestroy as $i, wouldReturnToSdkProvider as $n, hasReadableExportSet as $o, refStateLookupFromResource as $r, resolveApp as $s, secretNamePrintingBag as $t, gray as A, coerceWarmThroughput as Aa, displayAssemblyPath as Ac, malformedRenderedContainersWarning as Ai, maskingRetryLogger as An, recordNestedStackParameterExpressions as Ao, sendableAssumeRoleCommand as Ar, describeDockerExecFailure as As, removeProtectionTypeList as At, NESTED_PENDING_PARENT_REASON as B, replayWarn as Ba, refuseMalformedOrphanRecordsForDestroy as Bi, DBPROXY_TAGS_WHAT as Bn, STATE_SOURCED_CROSS_GENERATION_RULES as Bo, s3BucketWebsiteUrl as Br, redactedDockerCause as Bs, findNestedStackTypeChanges as Bt, recordedProtectionNote as C, findReplacedReadersOfRecreateTargets as Ca, defineOwnKey as Cc, malformedOrphanRecordsRefusalMessage as Ci, noEchoParameterValueSeed as Cn, scrubResourceRecord as Co, producerRegionsFromState as Cr, readBootstrapMarkerBody as Cs, INDEX_SETTLE_POLL_INTERVAL_MS as Ct, createReadOnlyAttributeHealerFactory as D, isStatefulRecreateTargetSync as Da, ownValue as Dc, malformedOrphansWarning as Di, bindingSkippedOutputs as Dn, pathCrossesDottedKey as Do, assertSendableRoleArn as Dr, buildDockerImage as Ds, S3_AUTO_DELETE_OBJECTS_TAG as Dt, formatResourceLine as E, isStatefulRecreateTargetForReplace as Ea, nullPrototypeRecord as Ec, malformedOrphansRefusalMessage as Ei, isExportAliasCollision as En, isUncertifiedBaselineMaskPosition as Eo, assertFlagRoleArn as Er, buildDenyExternalAccessPolicy as Es, ECR_AUTO_DELETE_IMAGES_TAG as Et, namesAnyDeclaredParameter as F, coerceCfnInteger as Fa, malformedStateRefusalMessage as Fi, earliestDefined as Fn, recordMaskOnlyValuesIn as Fo, isSettledInstanceState as Fr, getDockerCmd as Fs, isReplacementOrphan as Ft, nestedChildStackName as G, templateResourceTypes as Ga, refuseMalformedOutputsForDestroy as Gi, tagMapAsList as Gn, LockManager as Go, isImpossibleEmptyStoredAttribute as Gr, stripControlChars as Gs, redactedDeleteAddressFields as Gt, displacedPhysicalIdShown as H, requireConfigObject as Ha, refuseMalformedOrphansForDestroy as Hi, planTagDiff as Hn, TEMPLATE_SOURCED_RULES as Ho, isUnboundTemplateParameter as Hr, runDockerStreaming as Hs, inheritProducerRegions as Ht, reachableDivergentParameters as I, configBooleanRefusal as Ia, previewableOrphanRecords as Ii, ledgerForStack as In, recordNoEchoAttributeValues as Io, s3BucketArn as Ir, isDockerClientEnvKey as Is, planFailedOps as It, revertedNestedRowIds as J, canonicalLambdaFunctionName as Ja, refuseMalformedResourceEntriesForDeploy as Ji, stringifyIfAssigned as Jn, rebuildClientForBucketRegion as Jo, isNamelessDynamicReferenceError as Jr, Synthesizer as Js, updatePartialReason as Jt, recordDisplacedSkips as K, describeTypeWithThrottleRetry as Ka, refuseMalformedResourceAttributesForOrphan as Ki, tagPlanWarning as Kn, isLockInfoExpired as Ko, carriesDynamicReference as Kr, AssetManifestLoader as Ks, redactedDeleteAddressSkip as Kt, resourcesNamingDeclaredParameter as L, configIntegerRefusal as La, refuseDivergentRecordRegionForDestroy as Li, reserveStackCreateToken as Ln, recordProvenPublicExpression as Lo, s3BucketDomainName as Lr, isMalformedEnvKey as Ls, planRollback as Lt, red as M, toCfnInteger as Ma, resolveAssemblyPath as Mc, malformedResourcePropertiesWarning as Mi, findDestructiveChanges as Mn, carriesSecretMask as Mo, applyCallerIdentityCredentials as Mr, dockerSpawnEnvWithSensitive as Ms, recordAfterRollbackUpdate as Mt, yellow as N, toFiniteNumber as Na, clearBucketRegionCache as Nc, malformedResourcesWarning as Ni, formatDestructiveChange as Nn, provenPublicValue as No, callerEnvCredentials as Nr, finchSecretArgvRefusal as Ns, demoteSupersededOrphans as Nt, bold as O, renderStatefulReason as Oa, absoluteAssemblyPathEscape as Oc, malformedOutputsRefusalMessage as Oi, DEFAULT_RESOURCE_TIMEOUT_MS as On, identityKeyFor as Oo, explicitRoleArnOrThrow as Or, resolveDockerContextDirectory as Os, hasCdkAutoDeleteTag as Ot, computeParameterTaint as P, coerceCfnBoolean as Pa, resolveBucketRegion as Pc, malformedScrubResourceEntriesRefusalMessage as Pi, RollbackInlinePolicyWriters as Pn, recordMaskOnlyValue as Po, envCredentialsAreAssumedRole as Pr, formatDockerLoginError as Ps, isJournaledOrphan as Pt, deleteJournaledOrphans as Q, TemplateParser as Qa, refuseMalformedResourceEntriesForOrphan as Qi, isCustomResource as Qn, exportNamesCarriedFrom as Qo, isStalePlaceholderArnAttribute as Qr, loadCdkJson as Qs, orphanRecordsPrintingBag as Qt, makeSiblingClaimReader as R, configStringRefusal as Ra, refuseMalformedNestedChildOutputs as Ri, withCreateTokenLedger as Rn, wholeStringLeavesOf as Ro, s3BucketDualStackDomainName as Rr, partitionSensitiveEnv as Rs, replacementNeverSwapped as Rt, recordedProtectionEvidence as S, hasNoCloudControlHandlers as Sa, processStackMessages as Sc, malformedLocalResourcesWarning as Si, isWholeDynamicReferenceValue as Sn, redactSecretsForState as So, classifyReplaySecretRegion as Sr, parseBootstrapMarker as Ss, DELETE_INDEX_WAIT_PROCEED_NOTE as St, markRefusedBeforeApplying as T, MULTI_REGION_RECREATE_BLOCKED_TYPES as Ta, hasPlainPrototype$1 as Tc, malformedOrphanRowsKeptWarning as Ti, collectPublishedOutputNames as Tn, dynamicReferenceTokens as To, applyRoleArnIfSet as Tr, validateContainerRepoName as Ts, waitForIndexesSettled as Tt, dropSettledNestedJournals as U, requireConfigString as Ua, refuseMalformedOrphansForOrphan as Ui, readTagList as Un, WHOLE_DYNAMIC_REFERENCE_PATTERN as Uo, parameterTypeMayLoseSecretIdentity as Ur, warnFinchArgvExposure as Us, REDACTED_DELETE_ADDRESS_SKIP_REASON as Ut, displacedOpClause as V, requireConfigArray as Va, refuseMalformedOrphans as Vi, DBPROXY_TAG_OPTIONS as Vn, STATE_SOURCED_READBACK_RULES as Vo, coerceParameterTypedValue as Vr, runDockerForeground as Vs, getCurrentProducerRegions as Vt, getNestedRevertRun as W, prefetchCreateOnlyPropertyPaths as Wa, refuseMalformedOutputs as Wi, refuseMalformedDesiredTags as Wn, isSingleDynamicReferenceToken as Wo, getAccountInfo as Wr, escapeRegExp$3 as Ws, isRedactedRecordedValue as Wt, getCurrentNestedStackContext as X, sameLambdaFunctionAddress as Xa, refuseMalformedResourceEntriesForImport as Xi, ProviderRegistry as Xn, acceptedCreateOnlyDropsOf as Xo, AWS_NO_VALUE as Xr, getDefaultStateBucketName as Xs, journaledOrphanPrintingBag as Xt, withNestedRevertRun as Y, lambdaFunctionNameForMask as Ya, refuseMalformedResourceEntriesForDestroy as Yi, CC_BROKEN_REASON as Yn, splitImportedOps as Yo, keepsSecretReferenceToken as Yr, synthesisStatusMessage as Ys, completedReplayEntries as Yt, withNestedStackContext as Z, DagBuilder as Za, refuseMalformedResourceEntriesForImportSave as Zi, ccBrokenReason as Zn, describeRegionValueKind as Zo, cfnRefValueFromPhysicalId as Zr, getLegacyStateBucketName as Zs, maskEventTextWithBoundBags as Zt, makeCanonicalizePropertiesFn as _, findActionableSilentDrops as _a, PARTITION_TABLE as _c, malformedDriftResourcePropertiesWarning as _i, secretBearingStateKeyWarning as _n, createSecretMasker as _o, reEnableInstanceApiTermination as _r, BOOTSTRAP_MARKER_PREFIX as _s, beginDeleteWait as _t, findNestedTemplateTreeDefect as a, refuseMalformedResourcesForExport as aa, resolveUseCdkBootstrapAssets as ac, STATE_REGION_DIVERGED as ai, createPreDeleteFinalSnapshot as an, passedNoEchoParametersOf as ao, unchangedBehindSecretReference as ar, orphansAfterRollback as as, replayFailedOperations as at, noEchoParameterNamesOf as b, withoutSilentDropProperties as ba, AssemblyReader as bc, malformedLocalOutputsWarning as bi, exportNameNoEchoParameters as bn, maskSecretsInText as bo, IntrinsicFunctionResolver as br, getBootstrapMarkerKey as bs, resolveDynamoDbDeleteBudgetClock as bt, renderNestedTemplateTreeDefect as c, repairMalformedOrphansForReadOnly as ca, ssmResolvedValueType as cc, UNREADABLE_RESOURCES_MAP_ROW as ci, refusesFinalSnapshot as cn, carryLogOnlyValues as co, deleteSkipReason as cr, AssetPublisher as cs, destroyStackRecordsView as ct, conditionInputsFrom as d, repairMalformedResourcePropertiesForReadOnly as da, MIGRATE_TMP_PREFIX as dc, displayLogicalId as di, DeploymentEventsStore as dn, literalSplitDelimitersOf as do, markWaitAbandoned as dr, WorkGraph as ds, PROTECTION_PROPERTY_BY_TYPE as dt, refuseMalformedResourcePropertiesForDrift as ea, resolveAutoAssetStorage as ec, parseWebACLArn as ei, stateSecretNameNeedles as en, maskReadbackAtCoordinates as eo, isCustomResourceType as er, hasReasonlessBaselineRefusal as es, isHandledOrphan as et, parentSuppliedValues as f, repairMalformedResourcesForReadOnly as fa, findLargeInlineResources as fc, hasReadableOrphans as fi, extractDeploymentEventError as fn, logOnlyValueCount as fo, disableInstanceApiTermination as fr, buildAssetRedirectMap as fs, isProtectionValueActive as ft, mergeNoChangeOutputs as g, withheldAccountClause as ga, expectedOwnerParam as gc, isReadableResourceEntry as gi, secretBearing as gn, shareLogOnlyValues as go, reDisableInstanceApiTermination as gr, AssetModeResolver as gs, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as gt, keptWholeReasonText as h, unreadableResourceEntries as ha, decodeListingKey as hc, isReadableOrphanRecord as hi, exportAliasCollisionScrubWarning as hn, recordLogOnlyValue as ho, observeThenDisableInstanceApiTermination as hr, rewriteTemplateAssetReferences as hs, DynamoDBGlobalTableProvider as ht, childTemplateLoader as i, refuseMalformedResourcesForDestroy as ia, resolveStateBucketWithDefaultAndSource as ic, JSON_LISTING_HOLE_VALUE as ii, ccRoutedFinalSnapshotError as in, noEchoOutputsComparison as io, slowCcOperationTimeoutMs as ir, isReadableBag as is, sameJournaledOrphans as it, green as j, isWarmThroughputDecrease as ja, renderAssemblyPathEscape as jc, malformedResourceEntriesWarning as ji, constructPathOf as jn, recoverMaskedOutput as jo, AWS_CREDENTIAL_ENV_KEYS as jr, describeDockerFailure as js, orphanDeleteNeedsIdentity as jt, cyan as k, WARM_THROUGHPUT_MEMBERS as ka, describeFileReadFailure as kc, malformedOutputsWarning as ki, DEFAULT_RESOURCE_WARN_AFTER_MS as kn, inheritNestedStackParameterAssociations as ko, isIamRoleArn as kr, describeDockerCapturedOutput as ks, isTruthyCfnBoolean as kt, templateIdentity as l, repairMalformedOutputsForReadOnly as la, CFN_TEMPLATE_BODY_LIMIT as lc, accountArgs as li, unsupportedFinalSnapshotError as ln, createUnionSecretMasker as lo, withIndeterminateGuard as lr, isSensitiveAttributeName as ls, getStackRecords as lt, isSecretBearingReferenceString as m, unreadableOrphanRecords as ma, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as mc, hasReadableResources as mi, displayTextOrWithheld as mn, recordLogOnlyParameterValue as mo, isTerminationProtectionPropagationError as mr, loadPublishableAssetManifest as ms, readProtection as mt, IMPLICIT_DELETE_DEPENDENCIES as n, refuseMalformedResourcePropertiesForOrphan as na, resolveSkipPrefix as nc, parameterInputsFor as ni, PRE_DELETE_SNAPSHOT_TYPES as nn, maskedLeafCoordinatesOf as no, withPrintingSecrets as nr, importableOutputKeys as ns, loadJournaledOrphans as nt, isAbsoluteAssetPath as o, refuseMalformedState as oa, stateBucketExistenceConfirmed as oc, STATE_RESOURCES_MALFORMED as oi, effectiveDeletionPolicy as on, readsNoEchoSource as oo, UNSPECIFIED_SKIP_REASON as or, orphansCarriedFrom as os, replayRollback as ot, readRecordedConditionVerdicts as p, unpreviewableOrphanRecords as pa, uploadCfnTemplate as pc, hasReadableOutputs as pi, WITHHELD_NAME_DISPLAY as pn, printingCorpusOf as po, ec2InstanceProtectionSite as pr, createAssetRedirectResolver as ps, perType as pt, revertNestedChildFromJournal as q, withRetry as qa, refuseMalformedResourceEntries as qi, definedAttributes as qn, S3StateBackend as qo, carriesFetchableDynamicReference as qr, getDockerImageBySourceHash as qs, updatePartialMessage as qt, computeImplicitDeleteEdges as r, refuseMalformedResourcesForDeploy as ra, resolveStateBucketWithDefault as rc, passedParameterClassesOf as ri, buildFinalSnapshotIdentifier as rn, noEchoLeavesOf as ro, CloudControlProvider as rr, importableOutputs as rs, makeForeignHolderScan as rt, listNestedTemplateRows as s, repairMalformedOrphanRecordsForReadOnly as sa, warnDeprecatedNoPrefixCliFlag as sc, UNREADABLE_ORPHANS_CONTAINER_ROW as si, isFinalSnapshotError as sn, liveMatchesUnresolvedTokenFrame as so, deleteIndeterminateGuards as sr, shouldRetainResource as ss, awaitInFlightSibling as st, DeployEngine as t, refuseMalformedResourcePropertiesForExport as ta, resolveCaptureObservedState as tc, withSharedDrainBudget as ti, ATOMIC_FINAL_SNAPSHOT_TYPES as tn, maskWholeValue as to, getCurrentResourceSecrets as tr, hasUnverifiableParameterRefusal as ts, journaledOrphanLines as tt, conditionFingerprint as u, repairMalformedResourceEntriesForReadOnly as ua, CFN_TEMPLATE_URL_LIMIT as uc, deployRefusesOrphanRowsReason as ui, DeploymentEventsReader as un, hasMaskableValues as uo, isWaitAbandonedError as ur, stringifyValue as us, withStackRecords as ut, noEchoAttributeNamesOf as v, findSilentDropProperties as va, canonicalizeRegion as vc, malformedExportNamesWarning as vi, secretSafeKeyDisplay as vn, errorCauseChain as vo, DiffCalculator as vr, assertAssetBucketRegion as vs, compensateRemovedDeletionProtection as vt, getPriorAttempts as w, shownType as wa, hasOwnKey as wc, malformedOrphanRecordsWarning as wi, collectDeclaredOutputNames as wn, DYNAMIC_REFERENCE_TOKEN_SCAN as wo, regionLessSecretName as wr, validateAssetBucketName as ws, deleteTableWithIndexBusyRetry as wt, withResourceDeadline as x, NO_CC_HANDLERS_REASON as xa, StageLoadError as xc, malformedLocalResourceEntriesWarning as xi, exportNameSecretExposure as xn, markSameGenerationBag as xo, poisonRenderedSpellingsCollidingIn as xr, isCrossRegionRedirect as xs, resolveDynamoDbDeleteBudgetMs as xt, noEchoComparisonForTemplate as y, unwrittenCreateOnlyReplacement as ya, derivePartitionAndUrlSuffix as yc, malformedExportSourceWarning as yi, carriedExportAliasExposure as yn, maskSecretsInError as yo, INTRINSIC_KEYS as yr, ensureAssetStorage as ys, deleteBudgetKey as yt, planOrphanAdoption as z, readConfigString as za, refuseMalformedOrphanRecords as zi, acquireIdempotencyToken as zn, STATE_SOURCED_BASELINE_RULES as zo, s3BucketRegionalDomainName as zr, redactDockerArgvValues as zs, resolveReplacementOldType as zt };
|
|
39829
|
-
//# sourceMappingURL=deploy-engine-
|
|
40007
|
+
export { dropFailedHint as $, isMarkedCoordinate as $a, refuseMalformedResourcePropertiesForDestroy as $i, wouldReturnToSdkProvider as $n, hasReadableExportSet as $o, refStateLookupFromResource as $r, resolveApp as $s, secretNamePrintingBag as $t, gray as A, coerceWarmThroughput as Aa, displayAssemblyPath as Ac, malformedRenderedContainersWarning as Ai, maskingRetryLogger as An, recordNestedStackParameterExpressions as Ao, sendableAssumeRoleCommand as Ar, describeDockerExecFailure as As, removeProtectionTypeList as At, NESTED_PENDING_PARENT_REASON as B, replayWarn as Ba, refuseMalformedOrphanRecordsForDestroy as Bi, DBPROXY_TAGS_WHAT as Bn, STATE_SOURCED_CROSS_GENERATION_RULES as Bo, s3BucketWebsiteUrl as Br, redactedDockerCause as Bs, findNestedStackTypeChanges as Bt, recordedProtectionNote as C, findReplacedReadersOfRecreateTargets as Ca, defineOwnKey as Cc, malformedOrphanRecordsRefusalMessage as Ci, noEchoParameterValueSeed as Cn, scrubResourceRecord as Co, producerRegionsFromState as Cr, readBootstrapMarkerBody as Cs, INDEX_SETTLE_POLL_INTERVAL_MS as Ct, createReadOnlyAttributeHealerFactory as D, isStatefulRecreateTargetSync as Da, ownValue as Dc, malformedOrphansWarning as Di, bindingSkippedOutputs as Dn, pathCrossesDottedKey as Do, assertSendableRoleArn as Dr, buildDockerImage as Ds, S3_AUTO_DELETE_OBJECTS_TAG as Dt, formatResourceLine as E, isStatefulRecreateTargetForReplace as Ea, nullPrototypeRecord as Ec, malformedOrphansRefusalMessage as Ei, isExportAliasCollision as En, isUncertifiedBaselineMaskPosition as Eo, assertFlagRoleArn as Er, buildDenyExternalAccessPolicy as Es, ECR_AUTO_DELETE_IMAGES_TAG as Et, namesAnyDeclaredParameter as F, coerceCfnInteger as Fa, malformedStateRefusalMessage as Fi, earliestDefined as Fn, recordMaskOnlyValuesIn as Fo, isSettledInstanceState as Fr, getDockerCmd as Fs, isReplacementOrphan as Ft, nestedChildStackName as G, templateResourceTypes as Ga, refuseMalformedOutputsForDestroy as Gi, tagMapAsList as Gn, LockManager as Go, isImpossibleEmptyStoredAttribute as Gr, stripControlChars as Gs, redactedDeleteAddressFields as Gt, displacedPhysicalIdShown as H, requireConfigObject as Ha, refuseMalformedOrphansForDestroy as Hi, planTagDiff as Hn, TEMPLATE_SOURCED_RULES as Ho, isUnboundTemplateParameter as Hr, runDockerStreaming as Hs, inheritProducerRegions as Ht, reachableDivergentParameters as I, configBooleanRefusal as Ia, previewableOrphanRecords as Ii, ledgerForStack as In, recordNoEchoAttributeValues as Io, s3BucketArn as Ir, isDockerClientEnvKey as Is, planFailedOps as It, revertedNestedRowIds as J, canonicalLambdaFunctionName as Ja, refuseMalformedResourceEntriesForDeploy as Ji, stringifyIfAssigned as Jn, rebuildClientForBucketRegion as Jo, isNamelessDynamicReferenceError as Jr, Synthesizer as Js, updatePartialReason as Jt, recordDisplacedSkips as K, describeTypeWithThrottleRetry as Ka, refuseMalformedResourceAttributesForOrphan as Ki, tagPlanWarning as Kn, isLockInfoExpired as Ko, carriesDynamicReference as Kr, AssetManifestLoader as Ks, redactedDeleteAddressSkip as Kt, resourcesNamingDeclaredParameter as L, configIntegerRefusal as La, refuseDivergentRecordRegionForDestroy as Li, reserveStackCreateToken as Ln, recordProvenPublicExpression as Lo, s3BucketDomainName as Lr, isMalformedEnvKey as Ls, planRollback as Lt, red as M, toCfnInteger as Ma, resolveAssemblyPath as Mc, malformedResourcePropertiesWarning as Mi, findDestructiveChanges as Mn, carriesSecretMask as Mo, applyCallerIdentityCredentials as Mr, dockerSpawnEnvWithSensitive as Ms, recordAfterRollbackUpdate as Mt, yellow as N, toFiniteNumber as Na, clearBucketRegionCache as Nc, malformedResourcesWarning as Ni, formatDestructiveChange as Nn, provenPublicValue as No, callerEnvCredentials as Nr, finchSecretArgvRefusal as Ns, demoteSupersededOrphans as Nt, bold as O, renderStatefulReason as Oa, absoluteAssemblyPathEscape as Oc, malformedOutputsRefusalMessage as Oi, DEFAULT_RESOURCE_TIMEOUT_MS as On, identityKeyFor as Oo, explicitRoleArnOrThrow as Or, resolveDockerContextDirectory as Os, hasCdkAutoDeleteTag as Ot, computeParameterTaint as P, coerceCfnBoolean as Pa, resolveBucketRegion as Pc, malformedScrubResourceEntriesRefusalMessage as Pi, RollbackInlinePolicyWriters as Pn, recordMaskOnlyValue as Po, envCredentialsAreAssumedRole as Pr, formatDockerLoginError as Ps, isJournaledOrphan as Pt, deleteJournaledOrphans as Q, TemplateParser as Qa, refuseMalformedResourceEntriesForOrphan as Qi, isCustomResource as Qn, exportNamesCarriedFrom as Qo, isStalePlaceholderArnAttribute as Qr, loadCdkJson as Qs, orphanRecordsPrintingBag as Qt, makeSiblingClaimReader as R, configStringRefusal as Ra, refuseMalformedNestedChildOutputs as Ri, withCreateTokenLedger as Rn, wholeStringLeavesOf as Ro, s3BucketDualStackDomainName as Rr, partitionSensitiveEnv as Rs, replacementNeverSwapped as Rt, recordedProtectionEvidence as S, hasNoCloudControlHandlers as Sa, processStackMessages as Sc, malformedLocalResourcesWarning as Si, isWholeDynamicReferenceValue as Sn, redactSecretsForState as So, classifyReplaySecretRegion as Sr, parseBootstrapMarker as Ss, DELETE_INDEX_WAIT_PROCEED_NOTE as St, markRefusedBeforeApplying as T, MULTI_REGION_RECREATE_BLOCKED_TYPES as Ta, hasPlainPrototype$1 as Tc, malformedOrphanRowsKeptWarning as Ti, collectPublishedOutputNames as Tn, dynamicReferenceTokens as To, applyRoleArnIfSet as Tr, validateContainerRepoName as Ts, waitForIndexesSettled as Tt, dropSettledNestedJournals as U, requireConfigString as Ua, refuseMalformedOrphansForOrphan as Ui, readTagList as Un, WHOLE_DYNAMIC_REFERENCE_PATTERN as Uo, parameterTypeMayLoseSecretIdentity as Ur, warnFinchArgvExposure as Us, REDACTED_DELETE_ADDRESS_SKIP_REASON as Ut, displacedOpClause as V, requireConfigArray as Va, refuseMalformedOrphans as Vi, DBPROXY_TAG_OPTIONS as Vn, STATE_SOURCED_READBACK_RULES as Vo, coerceParameterTypedValue as Vr, runDockerForeground as Vs, getCurrentProducerRegions as Vt, getNestedRevertRun as W, prefetchCreateOnlyPropertyPaths as Wa, refuseMalformedOutputs as Wi, refuseMalformedDesiredTags as Wn, isSingleDynamicReferenceToken as Wo, getAccountInfo as Wr, escapeRegExp$3 as Ws, isRedactedRecordedValue as Wt, getCurrentNestedStackContext as X, sameLambdaFunctionAddress as Xa, refuseMalformedResourceEntriesForImport as Xi, ProviderRegistry as Xn, acceptedCreateOnlyDropsOf as Xo, AWS_NO_VALUE as Xr, getDefaultStateBucketName as Xs, journaledOrphanPrintingBag as Xt, withNestedRevertRun as Y, lambdaFunctionNameForMask as Ya, refuseMalformedResourceEntriesForDestroy as Yi, CC_BROKEN_REASON as Yn, splitImportedOps as Yo, keepsSecretReferenceToken as Yr, synthesisStatusMessage as Ys, completedReplayEntries as Yt, withNestedStackContext as Z, DagBuilder as Za, refuseMalformedResourceEntriesForImportSave as Zi, ccBrokenReason as Zn, describeRegionValueKind as Zo, cfnRefValueFromPhysicalId as Zr, getLegacyStateBucketName as Zs, maskEventTextWithBoundBags as Zt, makeCanonicalizePropertiesFn as _, findActionableSilentDrops as _a, PARTITION_TABLE as _c, malformedDriftResourcePropertiesWarning as _i, secretBearingStateKeyWarning as _n, createSecretMasker as _o, reEnableInstanceApiTermination as _r, BOOTSTRAP_MARKER_PREFIX as _s, beginDeleteWait as _t, findNestedTemplateTreeDefect as a, refuseMalformedResourcesForExport as aa, resolveUseCdkBootstrapAssets as ac, STATE_REGION_DIVERGED as ai, createPreDeleteFinalSnapshot as an, passedNoEchoParametersOf as ao, unchangedBehindSecretReference as ar, orphansAfterRollback as as, replayFailedOperations as at, noEchoComparisonForTemplate as b, withoutSilentDropProperties as ba, AssemblyReader as bc, malformedLocalOutputsWarning as bi, exportNameNoEchoParameters as bn, maskSecretsInText as bo, IntrinsicFunctionResolver as br, getBootstrapMarkerKey as bs, resolveDynamoDbDeleteBudgetClock as bt, renderNestedTemplateTreeDefect as c, repairMalformedOrphansForReadOnly as ca, ssmResolvedValueType as cc, UNREADABLE_RESOURCES_MAP_ROW as ci, refusesFinalSnapshot as cn, carryLogOnlyValues as co, deleteSkipReason as cr, AssetPublisher as cs, destroyStackRecordsView as ct, conditionInputsFrom as d, repairMalformedResourcePropertiesForReadOnly as da, MIGRATE_TMP_PREFIX as dc, displayLogicalId as di, DeploymentEventsStore as dn, literalSplitDelimitersOf as do, markWaitAbandoned as dr, WorkGraph as ds, PROTECTION_PROPERTY_BY_TYPE as dt, refuseMalformedResourcePropertiesForDrift as ea, resolveAutoAssetStorage as ec, parseWebACLArn as ei, stateSecretNameNeedles as en, maskReadbackAtCoordinates as eo, isCustomResourceType as er, hasReasonlessBaselineRefusal as es, isHandledOrphan as et, parentSuppliedValues as f, repairMalformedResourcesForReadOnly as fa, findLargeInlineResources as fc, hasReadableOrphans as fi, extractDeploymentEventError as fn, logOnlyValueCount as fo, disableInstanceApiTermination as fr, buildAssetRedirectMap as fs, isProtectionValueActive as ft, mergeNoChangeOutputs as g, withheldAccountClause as ga, expectedOwnerParam as gc, isReadableResourceEntry as gi, secretBearing as gn, shareLogOnlyValues as go, reDisableInstanceApiTermination as gr, AssetModeResolver as gs, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as gt, keptWholeReasonText as h, unreadableResourceEntries as ha, decodeListingKey as hc, isReadableOrphanRecord as hi, exportAliasCollisionScrubWarning as hn, recordLogOnlyValue as ho, observeThenDisableInstanceApiTermination as hr, rewriteTemplateAssetReferences as hs, DynamoDBGlobalTableProvider as ht, childTemplateLoader as i, refuseMalformedResourcesForDestroy as ia, resolveStateBucketWithDefaultAndSource as ic, JSON_LISTING_HOLE_VALUE as ii, ccRoutedFinalSnapshotError as in, noEchoOutputsComparison as io, slowCcOperationTimeoutMs as ir, isReadableBag as is, sameJournaledOrphans as it, green as j, isWarmThroughputDecrease as ja, renderAssemblyPathEscape as jc, malformedResourceEntriesWarning as ji, constructPathOf as jn, recoverMaskedOutput as jo, AWS_CREDENTIAL_ENV_KEYS as jr, describeDockerFailure as js, orphanDeleteNeedsIdentity as jt, cyan as k, WARM_THROUGHPUT_MEMBERS as ka, describeFileReadFailure as kc, malformedOutputsWarning as ki, DEFAULT_RESOURCE_WARN_AFTER_MS as kn, inheritNestedStackParameterAssociations as ko, isIamRoleArn as kr, describeDockerCapturedOutput as ks, isTruthyCfnBoolean as kt, templateIdentity as l, repairMalformedOutputsForReadOnly as la, CFN_TEMPLATE_BODY_LIMIT as lc, accountArgs as li, unsupportedFinalSnapshotError as ln, createUnionSecretMasker as lo, withIndeterminateGuard as lr, isSensitiveAttributeName as ls, getStackRecords as lt, isSecretBearingReferenceString as m, unreadableOrphanRecords as ma, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as mc, hasReadableResources as mi, displayTextOrWithheld as mn, recordLogOnlyParameterValue as mo, isTerminationProtectionPropagationError as mr, loadPublishableAssetManifest as ms, readProtection as mt, IMPLICIT_DELETE_DEPENDENCIES as n, refuseMalformedResourcePropertiesForOrphan as na, resolveSkipPrefix as nc, parameterInputsFor as ni, PRE_DELETE_SNAPSHOT_TYPES as nn, maskedLeafCoordinatesOf as no, withPrintingSecrets as nr, importableOutputKeys as ns, loadJournaledOrphans as nt, isAbsoluteAssetPath as o, refuseMalformedState as oa, stateBucketExistenceConfirmed as oc, STATE_RESOURCES_MALFORMED as oi, effectiveDeletionPolicy as on, readsNoEchoSource as oo, UNSPECIFIED_SKIP_REASON as or, orphansCarriedFrom as os, replayRollback as ot, readRecordedConditionVerdicts as p, unpreviewableOrphanRecords as pa, uploadCfnTemplate as pc, hasReadableOutputs as pi, WITHHELD_NAME_DISPLAY as pn, printingCorpusOf as po, ec2InstanceProtectionSite as pr, createAssetRedirectResolver as ps, perType as pt, revertNestedChildFromJournal as q, withRetry as qa, refuseMalformedResourceEntries as qi, definedAttributes as qn, S3StateBackend as qo, carriesFetchableDynamicReference as qr, getDockerImageBySourceHash as qs, updatePartialMessage as qt, computeImplicitDeleteEdges as r, refuseMalformedResourcesForDeploy as ra, resolveStateBucketWithDefault as rc, passedParameterClassesOf as ri, buildFinalSnapshotIdentifier as rn, noEchoLeavesOf as ro, CloudControlProvider as rr, importableOutputs as rs, makeForeignHolderScan as rt, listNestedTemplateRows as s, repairMalformedOrphanRecordsForReadOnly as sa, warnDeprecatedNoPrefixCliFlag as sc, UNREADABLE_ORPHANS_CONTAINER_ROW as si, isFinalSnapshotError as sn, liveMatchesUnresolvedTokenFrame as so, deleteIndeterminateGuards as sr, shouldRetainResource as ss, awaitInFlightSibling as st, DeployEngine as t, refuseMalformedResourcePropertiesForExport as ta, resolveCaptureObservedState as tc, withSharedDrainBudget as ti, ATOMIC_FINAL_SNAPSHOT_TYPES as tn, maskWholeValue as to, getCurrentResourceSecrets as tr, hasUnverifiableParameterRefusal as ts, journaledOrphanLines as tt, conditionFingerprint as u, repairMalformedResourceEntriesForReadOnly as ua, CFN_TEMPLATE_URL_LIMIT as uc, deployRefusesOrphanRowsReason as ui, DeploymentEventsReader as un, hasMaskableValues as uo, isWaitAbandonedError as ur, stringifyValue as us, withStackRecords as ut, withResourceDeadline as v, findSilentDropProperties as va, canonicalizeRegion as vc, malformedExportNamesWarning as vi, secretSafeKeyDisplay as vn, errorCauseChain as vo, DiffCalculator as vr, assertAssetBucketRegion as vs, compensateRemovedDeletionProtection as vt, getPriorAttempts as w, shownType as wa, hasOwnKey as wc, malformedOrphanRecordsWarning as wi, collectDeclaredOutputNames as wn, DYNAMIC_REFERENCE_TOKEN_SCAN as wo, regionLessSecretName as wr, validateAssetBucketName as ws, deleteTableWithIndexBusyRetry as wt, noEchoParameterNamesOf as x, NO_CC_HANDLERS_REASON as xa, StageLoadError as xc, malformedLocalResourceEntriesWarning as xi, exportNameSecretExposure as xn, markSameGenerationBag as xo, poisonRenderedSpellingsCollidingIn as xr, isCrossRegionRedirect as xs, resolveDynamoDbDeleteBudgetMs as xt, noEchoAttributeNamesOf as y, unwrittenCreateOnlyReplacement as ya, derivePartitionAndUrlSuffix as yc, malformedExportSourceWarning as yi, carriedExportAliasExposure as yn, maskSecretsInError as yo, INTRINSIC_KEYS as yr, ensureAssetStorage as ys, deleteBudgetKey as yt, planOrphanAdoption as z, readConfigString as za, refuseMalformedOrphanRecords as zi, acquireIdempotencyToken as zn, STATE_SOURCED_BASELINE_RULES as zo, s3BucketRegionalDomainName as zr, redactDockerArgvValues as zs, resolveReplacementOldType as zt };
|
|
40008
|
+
//# sourceMappingURL=deploy-engine-DWbbP9w6.js.map
|