@go-to-k/cdkd 0.280.16 → 0.280.17
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-4pPwAL_v.js → asg-provider-DQLjoTQ3.js} +2 -2
- package/dist/{asg-provider-4pPwAL_v.js.map → asg-provider-DQLjoTQ3.js.map} +1 -1
- package/dist/cli.js +120 -17
- package/dist/cli.js.map +1 -1
- package/dist/{deploy-engine-1eZqhWKB.js → deploy-engine-tCcs8UGn.js} +3 -3
- package/dist/{deploy-engine-1eZqhWKB.js.map → deploy-engine-tCcs8UGn.js.map} +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { $ as requireConfigString, $t as processStackMessages, A as red, At as runDockerStreaming, B as isTerminationProtectionPropagationError, Bt as resolveSkipPrefix, C as isStatefulRecreateTargetSync, Ct as parseBootstrapMarker, D as cyan, Dn as normalizeAwsError, Dt as formatDockerLoginError, E as bold, Et as buildDockerImage, F as ProviderRegistry, Ft as getDefaultStateBucketName, G as normalizeAwsTagsToCfn, Gt as warnDeprecatedNoPrefixCliFlag, H as cfnRefValueFromPhysicalId, Ht as resolveStateBucketWithDefaultAndSource, I as findActionableSilentDrops, It as getLegacyStateBucketName, J as configStringRefusal, Jt as MIGRATE_TMP_PREFIX, K as resolveExplicitPhysicalId, Kt as CFN_TEMPLATE_BODY_LIMIT, L as CloudControlProvider, Lt as resolveApp, M as IAMRoleProvider, Mt as getDockerImageBySourceHash, N as collectInlinePolicyNamesManagedBySiblings, Nt as Synthesizer, O as gray, On as withErrorHandling, Ot as getDockerCmd, P as clearOnUpdateRemoval, Pt as synthesisStatusMessage, Q as requireConfigObject, Qt as AssemblyReader, R as slowCcOperationTimeoutMs, Rt as resolveAutoAssetStorage, S as MULTI_REGION_RECREATE_BLOCKED_TYPES, Sn as StackTerminationProtectionError, St as getBootstrapMarkerKey, T as formatResourceLine, Tt as validateContainerRepoName, U as refStateLookupFromResource, Ut as resolveUseCdkBootstrapAssets, V as IntrinsicFunctionResolver, Vt as resolveStateBucketWithDefault, W as WAFv2WebACLProvider, Wt as stateBucketExistenceConfirmed, X as replayWarn, Xt as uploadCfnTemplate, Y as readConfigString, Yt as findLargeInlineResources, Z as requireConfigArray, Zt as expectedOwnerParam, _ as createPreDeleteFinalSnapshot, _n as PartialFailureError, _t as loadPublishableAssetManifest, a as DeploymentEventsStore, an as setAwsClients, at as isThrottlingError, b as unsupportedFinalSnapshotError, bn as ResourceUpdateNotSupportedError, bt as BOOTSTRAP_MARKER_PREFIX, c as replayFailedOperations, ct as LockManager, d as IMPLICIT_DELETE_DEPENDENCIES, dn as LocalInvokeBuildError$1, dt as shouldRetainResource, et as applyRoleArnIfSet, f as computeImplicitDeleteEdges, fn as LocalMigrateError, ft as AssetPublisher, g as ccRoutedFinalSnapshotError, gn as NestedStackChildDirectDestroyError, gt as createAssetRedirectResolver, h as buildFinalSnapshotIdentifier, hn as MissingCdkCliError, ht as buildAssetRedirectMap, i as DeploymentEventsReader, in as resetAwsClients, it as isRetryableTransientError, j as yellow, jt as AssetManifestLoader, k as green, kt as runDockerForeground, l as replayRollback, lt as S3StateBackend, m as PRE_DELETE_SNAPSHOT_TYPES, mt as WorkGraph, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nn as AwsClients, nt as describeTypeWithThrottleRetry, o as planFailedOps, ot as DagBuilder, p as ATOMIC_FINAL_SNAPSHOT_TYPES, pn as LocalStartServiceError, pt as stringifyValue, q as assertRegionMatch, qt as CFN_TEMPLATE_URL_LIMIT, r as DeployEngine, rn as getAwsClients, rt as withRetry, s as planRollback, sn as CdkdError, st as TemplateParser, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as resolveBucketRegion, tt as DiffCalculator, u as withResourceDeadline, un as DeployCancelledError, ut as rebuildClientForBucketRegion, v as isFinalSnapshotError, vn as ProvisioningError, vt as rewriteTemplateAssetReferences, w as renderStatefulReason, wt as validateAssetBucketName, x as extractDeploymentEventError, xn as StackHasActiveImportsError, xt as ensureAssetStorage, y as refusesFinalSnapshot, yn as ResourceTimeoutError, yt as AssetModeResolver, z as disableInstanceApiTermination, zt as resolveCaptureObservedState } from "./deploy-engine-
|
|
2
|
+
import { $ as requireConfigString, $t as processStackMessages, A as red, At as runDockerStreaming, B as isTerminationProtectionPropagationError, Bt as resolveSkipPrefix, C as isStatefulRecreateTargetSync, Ct as parseBootstrapMarker, D as cyan, Dn as normalizeAwsError, Dt as formatDockerLoginError, E as bold, Et as buildDockerImage, F as ProviderRegistry, Ft as getDefaultStateBucketName, G as normalizeAwsTagsToCfn, Gt as warnDeprecatedNoPrefixCliFlag, H as cfnRefValueFromPhysicalId, Ht as resolveStateBucketWithDefaultAndSource, I as findActionableSilentDrops, It as getLegacyStateBucketName, J as configStringRefusal, Jt as MIGRATE_TMP_PREFIX, K as resolveExplicitPhysicalId, Kt as CFN_TEMPLATE_BODY_LIMIT, L as CloudControlProvider, Lt as resolveApp, M as IAMRoleProvider, Mt as getDockerImageBySourceHash, N as collectInlinePolicyNamesManagedBySiblings, Nt as Synthesizer, O as gray, On as withErrorHandling, Ot as getDockerCmd, P as clearOnUpdateRemoval, Pt as synthesisStatusMessage, Q as requireConfigObject, Qt as AssemblyReader, R as slowCcOperationTimeoutMs, Rt as resolveAutoAssetStorage, S as MULTI_REGION_RECREATE_BLOCKED_TYPES, Sn as StackTerminationProtectionError, St as getBootstrapMarkerKey, T as formatResourceLine, Tt as validateContainerRepoName, U as refStateLookupFromResource, Ut as resolveUseCdkBootstrapAssets, V as IntrinsicFunctionResolver, Vt as resolveStateBucketWithDefault, W as WAFv2WebACLProvider, Wt as stateBucketExistenceConfirmed, X as replayWarn, Xt as uploadCfnTemplate, Y as readConfigString, Yt as findLargeInlineResources, Z as requireConfigArray, Zt as expectedOwnerParam, _ as createPreDeleteFinalSnapshot, _n as PartialFailureError, _t as loadPublishableAssetManifest, a as DeploymentEventsStore, an as setAwsClients, at as isThrottlingError, b as unsupportedFinalSnapshotError, bn as ResourceUpdateNotSupportedError, bt as BOOTSTRAP_MARKER_PREFIX, c as replayFailedOperations, ct as LockManager, d as IMPLICIT_DELETE_DEPENDENCIES, dn as LocalInvokeBuildError$1, dt as shouldRetainResource, et as applyRoleArnIfSet, f as computeImplicitDeleteEdges, fn as LocalMigrateError, ft as AssetPublisher, g as ccRoutedFinalSnapshotError, gn as NestedStackChildDirectDestroyError, gt as createAssetRedirectResolver, h as buildFinalSnapshotIdentifier, hn as MissingCdkCliError, ht as buildAssetRedirectMap, i as DeploymentEventsReader, in as resetAwsClients, it as isRetryableTransientError, j as yellow, jt as AssetManifestLoader, k as green, kt as runDockerForeground, l as replayRollback, lt as S3StateBackend, m as PRE_DELETE_SNAPSHOT_TYPES, mt as WorkGraph, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nn as AwsClients, nt as describeTypeWithThrottleRetry, o as planFailedOps, ot as DagBuilder, p as ATOMIC_FINAL_SNAPSHOT_TYPES, pn as LocalStartServiceError, pt as stringifyValue, q as assertRegionMatch, qt as CFN_TEMPLATE_URL_LIMIT, r as DeployEngine, rn as getAwsClients, rt as withRetry, s as planRollback, sn as CdkdError, st as TemplateParser, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as resolveBucketRegion, tt as DiffCalculator, u as withResourceDeadline, un as DeployCancelledError, ut as rebuildClientForBucketRegion, v as isFinalSnapshotError, vn as ProvisioningError, vt as rewriteTemplateAssetReferences, w as renderStatefulReason, wt as validateAssetBucketName, x as extractDeploymentEventError, xn as StackHasActiveImportsError, xt as ensureAssetStorage, y as refusesFinalSnapshot, yn as ResourceTimeoutError, yt as AssetModeResolver, z as disableInstanceApiTermination, zt as resolveCaptureObservedState } from "./deploy-engine-tCcs8UGn.js";
|
|
3
3
|
import { a as getLiveRenderer, c as PATTERN_B_RESOURCE_TYPES, d as generateResourceNameWithFallback, f as withSkipPrefix, i as runStackBuffered, n as getLogger, o as PATTERN_B_NAME_OPTIONS, p as withStackName, s as PATTERN_B_NAME_PROPERTIES, u as generateResourceName } from "./logger-BYMEE-BS.js";
|
|
4
|
-
import { t as ASGProvider } from "./asg-provider-
|
|
4
|
+
import { t as ASGProvider } from "./asg-provider-DQLjoTQ3.js";
|
|
5
5
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
6
6
|
import { createHash, randomBytes, randomUUID } from "node:crypto";
|
|
7
7
|
import { CopyObjectCommand, CreateBucketCommand, DeleteBucketAnalyticsConfigurationCommand, DeleteBucketCommand, DeleteBucketCorsCommand, DeleteBucketEncryptionCommand, DeleteBucketIntelligentTieringConfigurationCommand, DeleteBucketInventoryConfigurationCommand, DeleteBucketLifecycleCommand, DeleteBucketMetricsConfigurationCommand, DeleteBucketOwnershipControlsCommand, DeleteBucketPolicyCommand, DeleteBucketReplicationCommand, DeleteBucketTaggingCommand, DeleteBucketWebsiteCommand, DeleteObjectsCommand, GetBucketAccelerateConfigurationCommand, GetBucketCorsCommand, GetBucketEncryptionCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketLoggingCommand, GetBucketNotificationConfigurationCommand, GetBucketOwnershipControlsCommand, GetBucketPolicyCommand, GetBucketReplicationCommand, GetBucketTaggingCommand, GetBucketVersioningCommand, GetBucketWebsiteCommand, GetObjectCommand, GetObjectLockConfigurationCommand, GetPublicAccessBlockCommand, HeadBucketCommand, ListBucketAnalyticsConfigurationsCommand, ListBucketIntelligentTieringConfigurationsCommand, ListBucketInventoryConfigurationsCommand, ListBucketMetricsConfigurationsCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchBucket, PutBucketAccelerateConfigurationCommand, PutBucketAnalyticsConfigurationCommand, PutBucketCorsCommand, PutBucketEncryptionCommand, PutBucketIntelligentTieringConfigurationCommand, PutBucketInventoryConfigurationCommand, PutBucketLifecycleConfigurationCommand, PutBucketLoggingCommand, PutBucketMetricsConfigurationCommand, PutBucketNotificationConfigurationCommand, PutBucketOwnershipControlsCommand, PutBucketPolicyCommand, PutBucketReplicationCommand, PutBucketTaggingCommand, PutBucketVersioningCommand, PutBucketWebsiteCommand, PutObjectCommand, PutObjectLockConfigurationCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
|
|
@@ -22462,6 +22462,7 @@ var ApiGatewayV2Provider = class {
|
|
|
22462
22462
|
const apiId = properties["ApiId"];
|
|
22463
22463
|
const integrationType = properties["IntegrationType"];
|
|
22464
22464
|
if (!apiId || !integrationType) throw new ProvisioningError(`ApiId and IntegrationType are required for API Gateway V2 Integration ${logicalId}`, resourceType, logicalId);
|
|
22465
|
+
this.warnTlsConfigIgnoredIfPublic(logicalId, properties);
|
|
22465
22466
|
try {
|
|
22466
22467
|
const integrationId = (await this.getClient().send(new CreateIntegrationCommand({
|
|
22467
22468
|
ApiId: apiId,
|
|
@@ -22630,6 +22631,30 @@ var ApiGatewayV2Provider = class {
|
|
|
22630
22631
|
* each uses `properties.ApiId` (passed through PR G's signature
|
|
22631
22632
|
* extension) to issue the appropriate `Get*` call.
|
|
22632
22633
|
*/
|
|
22634
|
+
/**
|
|
22635
|
+
* `TlsConfig` is meaningful ONLY for a private (VPC-Link) integration.
|
|
22636
|
+
* On a public one (`ConnectionType` absent or `INTERNET`) AWS SILENTLY
|
|
22637
|
+
* IGNORES the field — it is absent from both the `CreateIntegration`
|
|
22638
|
+
* echo and the `GetIntegration` read-back (direct A/B, 2026-08-11
|
|
22639
|
+
* us-east-1) — so the provider can never read it back and a template
|
|
22640
|
+
* that declares it would report permanent phantom drift on the
|
|
22641
|
+
* `properties`-fallback baseline, with `--revert` re-sending a value AWS
|
|
22642
|
+
* discards on every run (issue #1602). The path is scoped by the
|
|
22643
|
+
* resource's own `ConnectionType` via the optional `properties` bag: a
|
|
22644
|
+
* VPC_LINK integration keeps full `TlsConfig` drift coverage (AWS
|
|
22645
|
+
* returns the field there). Without a USABLE properties bag the answer
|
|
22646
|
+
* stays empty — comparing is the safe default, since hiding a private
|
|
22647
|
+
* integration's real `TlsConfig` drift is worse than a false positive on
|
|
22648
|
+
* a caller that could not supply the bag. An EMPTY bag counts as unusable
|
|
22649
|
+
* for the same reason: the caller passes `resource.properties ?? {}`, so
|
|
22650
|
+
* `{}` means "nothing recorded", not "ConnectionType is absent, therefore
|
|
22651
|
+
* public" (an empty bag also has no `TlsConfig` key for the comparator to
|
|
22652
|
+
* walk, so refusing to declare costs nothing).
|
|
22653
|
+
*/
|
|
22654
|
+
getDriftUnknownPaths(resourceType, properties) {
|
|
22655
|
+
if (resourceType === "AWS::ApiGatewayV2::Integration" && properties !== void 0 && Object.keys(properties).length > 0 && properties["ConnectionType"] !== "VPC_LINK") return ["TlsConfig"];
|
|
22656
|
+
return [];
|
|
22657
|
+
}
|
|
22633
22658
|
async readCurrentState(physicalId, _logicalId, resourceType, properties) {
|
|
22634
22659
|
switch (resourceType) {
|
|
22635
22660
|
case "AWS::ApiGatewayV2::Api": return this.readApi(physicalId);
|
|
@@ -22707,7 +22732,7 @@ var ApiGatewayV2Provider = class {
|
|
|
22707
22732
|
if (resp.IntegrationSubtype !== void 0) result["IntegrationSubtype"] = resp.IntegrationSubtype;
|
|
22708
22733
|
if (resp.PassthroughBehavior !== void 0) result["PassthroughBehavior"] = resp.PassthroughBehavior;
|
|
22709
22734
|
if (resp.RequestTemplates !== void 0) result["RequestTemplates"] = resp.RequestTemplates;
|
|
22710
|
-
if (resp.ResponseParameters !== void 0) result["ResponseParameters"] = this.toCfnResponseParameters(resp.ResponseParameters);
|
|
22735
|
+
if (resp.ResponseParameters !== void 0) result["ResponseParameters"] = this.toCfnResponseParameters(resp.ResponseParameters, properties?.["ResponseParameters"]);
|
|
22711
22736
|
if (resp.TemplateSelectionExpression !== void 0) result["TemplateSelectionExpression"] = resp.TemplateSelectionExpression;
|
|
22712
22737
|
if (resp.TlsConfig !== void 0) result["TlsConfig"] = resp.TlsConfig;
|
|
22713
22738
|
return result;
|
|
@@ -23082,6 +23107,7 @@ var ApiGatewayV2Provider = class {
|
|
|
23082
23107
|
changed = true;
|
|
23083
23108
|
}
|
|
23084
23109
|
if (properties["TlsConfig"] != null && !this.deepEqual(properties["TlsConfig"], previousProperties["TlsConfig"])) {
|
|
23110
|
+
this.warnTlsConfigIgnoredIfPublic(logicalId, properties);
|
|
23085
23111
|
input.TlsConfig = properties["TlsConfig"];
|
|
23086
23112
|
changed = true;
|
|
23087
23113
|
}
|
|
@@ -23435,6 +23461,22 @@ var ApiGatewayV2Provider = class {
|
|
|
23435
23461
|
return merged;
|
|
23436
23462
|
}
|
|
23437
23463
|
/**
|
|
23464
|
+
* Announce a `TlsConfig` that AWS will silently discard (issue #1602):
|
|
23465
|
+
* the field is only honored on a private (VPC-Link) integration, and on a
|
|
23466
|
+
* public one (`ConnectionType` absent or `INTERNET`) AWS accepts the value
|
|
23467
|
+
* and drops it — it never appears on the `GetIntegration` read-back
|
|
23468
|
+
* (direct A/B, 2026-08-11 us-east-1). cdkd still sends the field (parity:
|
|
23469
|
+
* CloudFormation forwards it too and AWS accepts it), but the never-silent
|
|
23470
|
+
* policy requires saying so. The matching drift false positive is closed
|
|
23471
|
+
* by {@link getDriftUnknownPaths}. A WARN on both create and update, never
|
|
23472
|
+
* a throw — the update path can be a state-record replay
|
|
23473
|
+
* (`rollback-executor.ts` / `drift --revert`) where a refusal would leave
|
|
23474
|
+
* the resource un-revertable.
|
|
23475
|
+
*/
|
|
23476
|
+
warnTlsConfigIgnoredIfPublic(logicalId, properties) {
|
|
23477
|
+
if (properties["TlsConfig"] != null && properties["ConnectionType"] !== "VPC_LINK") this.logger.warn(`AWS::ApiGatewayV2::Integration ${logicalId}: TlsConfig is only honored on a VPC_LINK (private) integration — AWS silently ignores it on a public one, and the value will never be readable back from AWS (issue #1602).`);
|
|
23478
|
+
}
|
|
23479
|
+
/**
|
|
23438
23480
|
* `ResponseParameters` is the one `AWS::ApiGatewayV2::Integration` property
|
|
23439
23481
|
* whose CFn shape does NOT match the SDK's, so forwarding it verbatim is not
|
|
23440
23482
|
* an option (issue #609). CloudFormation models it as
|
|
@@ -23493,26 +23535,87 @@ var ApiGatewayV2Provider = class {
|
|
|
23493
23535
|
* baseline carries the CFn list-of-pairs, and every `cdkd drift` run would
|
|
23494
23536
|
* report permanent phantom drift on a resource nobody touched.
|
|
23495
23537
|
*
|
|
23496
|
-
*
|
|
23497
|
-
*
|
|
23498
|
-
*
|
|
23499
|
-
*
|
|
23500
|
-
*
|
|
23501
|
-
*
|
|
23502
|
-
|
|
23503
|
-
|
|
23538
|
+
* Order matters because this turns an UNORDERED SDK map into an ARRAY, and
|
|
23539
|
+
* `calculateResourceDrift` compares arrays POSITIONALLY — AWS does not
|
|
23540
|
+
* guarantee map readback order, so an arbitrary rebuild would trade the
|
|
23541
|
+
* shape-mismatch phantom drift for an ordering one (and `--revert` would
|
|
23542
|
+
* re-push an identical value forever). Declared destinations therefore keep
|
|
23543
|
+
* their DECLARED position and anything else is sorted; both are stable
|
|
23544
|
+
* across reads. Same reasoning as `src/analyzer/drift-normalize.ts`,
|
|
23545
|
+
* applied at the source instead.
|
|
23546
|
+
*
|
|
23547
|
+
* `declared` (the state-recorded desired `ResponseParameters` block, when
|
|
23548
|
+
* the caller has it) makes the inverse MIRROR the template's spelling per
|
|
23549
|
+
* status code (issue #1602): {@link toSdkResponseParameters} accepts an
|
|
23550
|
+
* ALREADY-FLAT block (`{ "<status>": { "<Destination>": "<Source>" } }` —
|
|
23551
|
+
* the SDK spelling a hand-written template may use) and passes it through,
|
|
23552
|
+
* which made the pair non-injective — this method always rebuilt the CFn
|
|
23553
|
+
* list shape, so a flat-spelled baseline could never compare equal to the
|
|
23554
|
+
* read-back and reported permanent phantom drift. For a status code whose
|
|
23555
|
+
* DECLARED block matches the flat-passthrough branch of
|
|
23556
|
+
* {@link toSdkResponseParameters} (an object without an array
|
|
23557
|
+
* `ResponseParameters` member), the read-back now stays flat too; every
|
|
23558
|
+
* other status code (declared CFn shape, declared absent, no `declared` at
|
|
23559
|
+
* all) keeps the CFn list shape. Object comparison is key-based, so the
|
|
23560
|
+
* flat map round-trips without the sort the list shape needs.
|
|
23561
|
+
*
|
|
23562
|
+
* The CFn arm mirrors the declared block too, in the two ways the
|
|
23563
|
+
* `properties`-fallback baseline is compared on: ENTRY ORDER (the
|
|
23564
|
+
* comparator walks arrays positionally, and the template's order is
|
|
23565
|
+
* whatever the author wrote — sorting only the read side is the mistake
|
|
23566
|
+
* `drift-normalize.ts`'s header records) and SCALAR TYPE (CFn types
|
|
23567
|
+
* `Source` as free-form and cdkd coerces a number to a string on the way
|
|
23568
|
+
* out, so re-emitting AWS's string against a numeric declaration is
|
|
23569
|
+
* permanent phantom drift). Declared destinations keep their declared
|
|
23570
|
+
* position and their declared scalar whenever the value still agrees with
|
|
23571
|
+
* AWS; a destination AWS returns that the template never declared is
|
|
23572
|
+
* appended in sorted order, so the result stays deterministic across reads.
|
|
23573
|
+
*/
|
|
23574
|
+
toCfnResponseParameters(value, declared) {
|
|
23504
23575
|
if (value == null) return void 0;
|
|
23576
|
+
const declaredBlocks = declared != null && typeof declared === "object" && !Array.isArray(declared) ? declared : void 0;
|
|
23505
23577
|
const out = {};
|
|
23506
23578
|
for (const [statusCode, flat] of Object.entries(value)) {
|
|
23507
23579
|
if (flat == null || typeof flat !== "object" || Array.isArray(flat)) continue;
|
|
23508
|
-
|
|
23509
|
-
|
|
23510
|
-
|
|
23511
|
-
|
|
23580
|
+
const declaredBlock = declaredBlocks?.[statusCode];
|
|
23581
|
+
const declaredIsBlock = declaredBlock != null && typeof declaredBlock === "object" && !Array.isArray(declaredBlock);
|
|
23582
|
+
const declaredEntries = declaredIsBlock ? declaredBlock["ResponseParameters"] : void 0;
|
|
23583
|
+
if (declaredIsBlock && !Array.isArray(declaredEntries)) {
|
|
23584
|
+
out[statusCode] = flat;
|
|
23585
|
+
continue;
|
|
23586
|
+
}
|
|
23587
|
+
out[statusCode] = { ResponseParameters: this.mirrorDeclaredResponsePairs(flat, declaredEntries) };
|
|
23512
23588
|
}
|
|
23513
23589
|
return out;
|
|
23514
23590
|
}
|
|
23515
23591
|
/**
|
|
23592
|
+
* Rebuild one status code's CFn list-of-pairs from AWS's flat map, keeping
|
|
23593
|
+
* the DECLARED entries' order and scalar types where they still agree with
|
|
23594
|
+
* AWS. See {@link toCfnResponseParameters} for why both matter.
|
|
23595
|
+
*/
|
|
23596
|
+
mirrorDeclaredResponsePairs(flat, declaredEntries) {
|
|
23597
|
+
const remaining = new Map(Object.entries(flat));
|
|
23598
|
+
const pairs = [];
|
|
23599
|
+
if (Array.isArray(declaredEntries)) for (const entry of declaredEntries) {
|
|
23600
|
+
if (entry == null || typeof entry !== "object" || Array.isArray(entry)) continue;
|
|
23601
|
+
const destination = entry["Destination"];
|
|
23602
|
+
if (typeof destination !== "string" || !remaining.has(destination)) continue;
|
|
23603
|
+
const awsSource = remaining.get(destination);
|
|
23604
|
+
remaining.delete(destination);
|
|
23605
|
+
const declaredSource = entry["Source"];
|
|
23606
|
+
const declaredDenotesSame = (typeof declaredSource === "number" || typeof declaredSource === "boolean") && String(declaredSource) === awsSource;
|
|
23607
|
+
pairs.push({
|
|
23608
|
+
Destination: destination,
|
|
23609
|
+
Source: declaredDenotesSame ? declaredSource : awsSource
|
|
23610
|
+
});
|
|
23611
|
+
}
|
|
23612
|
+
for (const [destination, source] of [...remaining.entries()].sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0)) pairs.push({
|
|
23613
|
+
Destination: destination,
|
|
23614
|
+
Source: source
|
|
23615
|
+
});
|
|
23616
|
+
return pairs;
|
|
23617
|
+
}
|
|
23618
|
+
/**
|
|
23516
23619
|
* Convert CloudFormation Tags (Array<{Key, Value}>) to SDK Tags (Record<string, string>).
|
|
23517
23620
|
*/
|
|
23518
23621
|
cfnTagsToRecord(tags) {
|
|
@@ -51937,7 +52040,7 @@ async function runDriftForStack(stackName, region, stateBackend, providerRegistr
|
|
|
51937
52040
|
});
|
|
51938
52041
|
continue;
|
|
51939
52042
|
}
|
|
51940
|
-
const ignorePaths = provider.getDriftUnknownPaths ? provider.getDriftUnknownPaths(resource.resourceType) : [];
|
|
52043
|
+
const ignorePaths = provider.getDriftUnknownPaths ? provider.getDriftUnknownPaths(resource.resourceType, resource.properties ?? {}) : [];
|
|
51941
52044
|
const unorderedPaths = provider.getDriftUnorderedPaths ? provider.getDriftUnorderedPaths(resource.resourceType) : [];
|
|
51942
52045
|
const useObserved = resource.observedProperties !== void 0;
|
|
51943
52046
|
const baseline = useObserved ? resource.observedProperties : resource.properties ?? {};
|
|
@@ -69419,7 +69522,7 @@ function createMigrateCommand() {
|
|
|
69419
69522
|
*/
|
|
69420
69523
|
function buildProgram() {
|
|
69421
69524
|
const program = new Command();
|
|
69422
|
-
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.280.
|
|
69525
|
+
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.280.17");
|
|
69423
69526
|
program.hook("preAction", (_thisCommand, actionCommand) => {
|
|
69424
69527
|
const { profile } = actionCommand.optsWithGlobals();
|
|
69425
69528
|
if (profile !== void 0) process.env["AWS_PROFILE"] = profile;
|