@go-to-k/cdkd 0.280.10 → 0.280.11
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-BVnACl8U.js → asg-provider-CN0zTvF5.js} +2 -2
- package/dist/{asg-provider-BVnACl8U.js.map → asg-provider-CN0zTvF5.js.map} +1 -1
- package/dist/cli.js +162 -6
- package/dist/cli.js.map +1 -1
- package/dist/{deploy-engine-BJATTy_n.js → deploy-engine-DHGLmPWH.js} +17 -17
- package/dist/deploy-engine-DHGLmPWH.js.map +1 -0
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/deploy-engine-BJATTy_n.js.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { $ as applyRoleArnIfSet, A as red, At as AssetManifestLoader, B as isTerminationProtectionPropagationError, Bt as resolveStateBucketWithDefault, C as isStatefulRecreateTargetSync, Ct as validateAssetBucketName, D as cyan, Dn as withErrorHandling, Dt as getDockerCmd, E as bold, En as normalizeAwsError, Et as formatDockerLoginError, F as ProviderRegistry, Ft as getLegacyStateBucketName, G as normalizeAwsTagsToCfn, Gt as CFN_TEMPLATE_BODY_LIMIT, H as cfnRefValueFromPhysicalId, Ht as resolveUseCdkBootstrapAssets, I as findActionableSilentDrops, It as resolveApp, J as readConfigString, Jt as findLargeInlineResources, K as resolveExplicitPhysicalId, Kt as CFN_TEMPLATE_URL_LIMIT, L as CloudControlProvider, Lt as resolveAutoAssetStorage, M as IAMRoleProvider, Mt as Synthesizer, N as collectInlinePolicyNamesManagedBySiblings, Nt as synthesisStatusMessage, O as gray, Ot as runDockerForeground, P as clearOnUpdateRemoval, Pt as getDefaultStateBucketName, Q as requireConfigString, Qt as processStackMessages, R as slowCcOperationTimeoutMs, Rt as resolveCaptureObservedState, S as MULTI_REGION_RECREATE_BLOCKED_TYPES, St as parseBootstrapMarker, T as formatResourceLine, Tt as buildDockerImage, U as refStateLookupFromResource, Ut as stateBucketExistenceConfirmed, V as IntrinsicFunctionResolver, Vt as resolveStateBucketWithDefaultAndSource, W as WAFv2WebACLProvider, Wt as warnDeprecatedNoPrefixCliFlag, X as requireConfigArray, Xt as expectedOwnerParam, Y as replayWarn, Yt as uploadCfnTemplate, Z as requireConfigObject, Zt as AssemblyReader, _ as createPreDeleteFinalSnapshot, _n as ProvisioningError, _t as rewriteTemplateAssetReferences, a as DeploymentEventsStore, at as DagBuilder, b as unsupportedFinalSnapshotError, bn as StackHasActiveImportsError, bt as ensureAssetStorage, c as replayFailedOperations, ct as S3StateBackend, d as IMPLICIT_DELETE_DEPENDENCIES, dn as LocalMigrateError, dt as AssetPublisher, en as resolveBucketRegion, et as DiffCalculator, f as computeImplicitDeleteEdges, fn as LocalStartServiceError, ft as stringifyValue, g as ccRoutedFinalSnapshotError, gn as PartialFailureError, gt as loadPublishableAssetManifest, h as buildFinalSnapshotIdentifier, hn as NestedStackChildDirectDestroyError, ht as createAssetRedirectResolver, i as DeploymentEventsReader, in as setAwsClients, it as isThrottlingError, j as yellow, jt as getDockerImageBySourceHash, k as green, kt as runDockerStreaming, l as replayRollback, ln as DeployCancelledError, lt as rebuildClientForBucketRegion, m as PRE_DELETE_SNAPSHOT_TYPES, mn as MissingCdkCliError, mt as buildAssetRedirectMap, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nn as getAwsClients, nt as withRetry, o as planFailedOps, on as CdkdError, ot as TemplateParser, p as ATOMIC_FINAL_SNAPSHOT_TYPES, pt as WorkGraph, q as assertRegionMatch, qt as MIGRATE_TMP_PREFIX, r as DeployEngine, rn as resetAwsClients, rt as isRetryableTransientError, s as planRollback, st as LockManager, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as AwsClients, tt as describeTypeWithThrottleRetry, u as withResourceDeadline, un as LocalInvokeBuildError$1, ut as shouldRetainResource, v as isFinalSnapshotError, vn as ResourceTimeoutError, vt as AssetModeResolver, w as renderStatefulReason, wt as validateContainerRepoName, x as extractDeploymentEventError, xn as StackTerminationProtectionError, xt as getBootstrapMarkerKey, y as refusesFinalSnapshot, yn as ResourceUpdateNotSupportedError, yt as BOOTSTRAP_MARKER_PREFIX, z as disableInstanceApiTermination, zt as resolveSkipPrefix } from "./deploy-engine-
|
|
2
|
+
import { $ as applyRoleArnIfSet, A as red, At as AssetManifestLoader, B as isTerminationProtectionPropagationError, Bt as resolveStateBucketWithDefault, C as isStatefulRecreateTargetSync, Ct as validateAssetBucketName, D as cyan, Dn as withErrorHandling, Dt as getDockerCmd, E as bold, En as normalizeAwsError, Et as formatDockerLoginError, F as ProviderRegistry, Ft as getLegacyStateBucketName, G as normalizeAwsTagsToCfn, Gt as CFN_TEMPLATE_BODY_LIMIT, H as cfnRefValueFromPhysicalId, Ht as resolveUseCdkBootstrapAssets, I as findActionableSilentDrops, It as resolveApp, J as readConfigString, Jt as findLargeInlineResources, K as resolveExplicitPhysicalId, Kt as CFN_TEMPLATE_URL_LIMIT, L as CloudControlProvider, Lt as resolveAutoAssetStorage, M as IAMRoleProvider, Mt as Synthesizer, N as collectInlinePolicyNamesManagedBySiblings, Nt as synthesisStatusMessage, O as gray, Ot as runDockerForeground, P as clearOnUpdateRemoval, Pt as getDefaultStateBucketName, Q as requireConfigString, Qt as processStackMessages, R as slowCcOperationTimeoutMs, Rt as resolveCaptureObservedState, S as MULTI_REGION_RECREATE_BLOCKED_TYPES, St as parseBootstrapMarker, T as formatResourceLine, Tt as buildDockerImage, U as refStateLookupFromResource, Ut as stateBucketExistenceConfirmed, V as IntrinsicFunctionResolver, Vt as resolveStateBucketWithDefaultAndSource, W as WAFv2WebACLProvider, Wt as warnDeprecatedNoPrefixCliFlag, X as requireConfigArray, Xt as expectedOwnerParam, Y as replayWarn, Yt as uploadCfnTemplate, Z as requireConfigObject, Zt as AssemblyReader, _ as createPreDeleteFinalSnapshot, _n as ProvisioningError, _t as rewriteTemplateAssetReferences, a as DeploymentEventsStore, at as DagBuilder, b as unsupportedFinalSnapshotError, bn as StackHasActiveImportsError, bt as ensureAssetStorage, c as replayFailedOperations, ct as S3StateBackend, d as IMPLICIT_DELETE_DEPENDENCIES, dn as LocalMigrateError, dt as AssetPublisher, en as resolveBucketRegion, et as DiffCalculator, f as computeImplicitDeleteEdges, fn as LocalStartServiceError, ft as stringifyValue, g as ccRoutedFinalSnapshotError, gn as PartialFailureError, gt as loadPublishableAssetManifest, h as buildFinalSnapshotIdentifier, hn as NestedStackChildDirectDestroyError, ht as createAssetRedirectResolver, i as DeploymentEventsReader, in as setAwsClients, it as isThrottlingError, j as yellow, jt as getDockerImageBySourceHash, k as green, kt as runDockerStreaming, l as replayRollback, ln as DeployCancelledError, lt as rebuildClientForBucketRegion, m as PRE_DELETE_SNAPSHOT_TYPES, mn as MissingCdkCliError, mt as buildAssetRedirectMap, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nn as getAwsClients, nt as withRetry, o as planFailedOps, on as CdkdError, ot as TemplateParser, p as ATOMIC_FINAL_SNAPSHOT_TYPES, pt as WorkGraph, q as assertRegionMatch, qt as MIGRATE_TMP_PREFIX, r as DeployEngine, rn as resetAwsClients, rt as isRetryableTransientError, s as planRollback, st as LockManager, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as AwsClients, tt as describeTypeWithThrottleRetry, u as withResourceDeadline, un as LocalInvokeBuildError$1, ut as shouldRetainResource, v as isFinalSnapshotError, vn as ResourceTimeoutError, vt as AssetModeResolver, w as renderStatefulReason, wt as validateContainerRepoName, x as extractDeploymentEventError, xn as StackTerminationProtectionError, xt as getBootstrapMarkerKey, y as refusesFinalSnapshot, yn as ResourceUpdateNotSupportedError, yt as BOOTSTRAP_MARKER_PREFIX, z as disableInstanceApiTermination, zt as resolveSkipPrefix } from "./deploy-engine-DHGLmPWH.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-CN0zTvF5.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";
|
|
@@ -22003,7 +22003,17 @@ var ApiGatewayV2Provider = class {
|
|
|
22003
22003
|
"PayloadFormatVersion",
|
|
22004
22004
|
"TimeoutInMillis",
|
|
22005
22005
|
"RequestParameters",
|
|
22006
|
-
"Description"
|
|
22006
|
+
"Description",
|
|
22007
|
+
"ConnectionId",
|
|
22008
|
+
"ConnectionType",
|
|
22009
|
+
"ContentHandlingStrategy",
|
|
22010
|
+
"CredentialsArn",
|
|
22011
|
+
"IntegrationSubtype",
|
|
22012
|
+
"PassthroughBehavior",
|
|
22013
|
+
"RequestTemplates",
|
|
22014
|
+
"ResponseParameters",
|
|
22015
|
+
"TemplateSelectionExpression",
|
|
22016
|
+
"TlsConfig"
|
|
22007
22017
|
])],
|
|
22008
22018
|
["AWS::ApiGatewayV2::Route", /* @__PURE__ */ new Set([
|
|
22009
22019
|
"ApiId",
|
|
@@ -22229,7 +22239,17 @@ var ApiGatewayV2Provider = class {
|
|
|
22229
22239
|
PayloadFormatVersion: properties["PayloadFormatVersion"],
|
|
22230
22240
|
TimeoutInMillis: properties["TimeoutInMillis"],
|
|
22231
22241
|
RequestParameters: properties["RequestParameters"],
|
|
22232
|
-
Description: properties["Description"]
|
|
22242
|
+
Description: properties["Description"],
|
|
22243
|
+
ConnectionId: properties["ConnectionId"],
|
|
22244
|
+
ConnectionType: properties["ConnectionType"],
|
|
22245
|
+
ContentHandlingStrategy: properties["ContentHandlingStrategy"],
|
|
22246
|
+
CredentialsArn: properties["CredentialsArn"],
|
|
22247
|
+
IntegrationSubtype: properties["IntegrationSubtype"],
|
|
22248
|
+
PassthroughBehavior: properties["PassthroughBehavior"],
|
|
22249
|
+
RequestTemplates: properties["RequestTemplates"],
|
|
22250
|
+
ResponseParameters: this.toSdkResponseParameters(properties["ResponseParameters"]),
|
|
22251
|
+
TemplateSelectionExpression: properties["TemplateSelectionExpression"],
|
|
22252
|
+
TlsConfig: properties["TlsConfig"]
|
|
22233
22253
|
}))).IntegrationId;
|
|
22234
22254
|
this.logger.debug(`Successfully created API Gateway V2 Integration ${logicalId}: ${integrationId}`);
|
|
22235
22255
|
return {
|
|
@@ -22448,6 +22468,16 @@ var ApiGatewayV2Provider = class {
|
|
|
22448
22468
|
if (resp.TimeoutInMillis !== void 0) result["TimeoutInMillis"] = resp.TimeoutInMillis;
|
|
22449
22469
|
if (resp.RequestParameters !== void 0) result["RequestParameters"] = resp.RequestParameters;
|
|
22450
22470
|
if (resp.Description !== void 0) result["Description"] = resp.Description;
|
|
22471
|
+
if (resp.ConnectionId !== void 0) result["ConnectionId"] = resp.ConnectionId;
|
|
22472
|
+
if (resp.ConnectionType !== void 0) result["ConnectionType"] = resp.ConnectionType;
|
|
22473
|
+
if (resp.ContentHandlingStrategy !== void 0) result["ContentHandlingStrategy"] = resp.ContentHandlingStrategy;
|
|
22474
|
+
if (resp.CredentialsArn !== void 0) result["CredentialsArn"] = resp.CredentialsArn;
|
|
22475
|
+
if (resp.IntegrationSubtype !== void 0) result["IntegrationSubtype"] = resp.IntegrationSubtype;
|
|
22476
|
+
if (resp.PassthroughBehavior !== void 0) result["PassthroughBehavior"] = resp.PassthroughBehavior;
|
|
22477
|
+
if (resp.RequestTemplates !== void 0) result["RequestTemplates"] = resp.RequestTemplates;
|
|
22478
|
+
if (resp.ResponseParameters !== void 0) result["ResponseParameters"] = this.toCfnResponseParameters(resp.ResponseParameters);
|
|
22479
|
+
if (resp.TemplateSelectionExpression !== void 0) result["TemplateSelectionExpression"] = resp.TemplateSelectionExpression;
|
|
22480
|
+
if (resp.TlsConfig !== void 0) result["TlsConfig"] = resp.TlsConfig;
|
|
22451
22481
|
return result;
|
|
22452
22482
|
} catch (err) {
|
|
22453
22483
|
if (err instanceof NotFoundException$3) return void 0;
|
|
@@ -22730,7 +22760,11 @@ var ApiGatewayV2Provider = class {
|
|
|
22730
22760
|
* `UpdateIntegration` keys on `(ApiId, IntegrationId)`. Mutable
|
|
22731
22761
|
* fields cdkd manages: `IntegrationType` / `IntegrationUri` /
|
|
22732
22762
|
* `IntegrationMethod` / `PayloadFormatVersion` / `TimeoutInMillis` /
|
|
22733
|
-
* `RequestParameters` / `Description
|
|
22763
|
+
* `RequestParameters` / `Description`, plus the issue #609 backfill
|
|
22764
|
+
* (`ConnectionId` / `ConnectionType` / `ContentHandlingStrategy` /
|
|
22765
|
+
* `CredentialsArn` / `IntegrationSubtype` / `PassthroughBehavior` /
|
|
22766
|
+
* `RequestTemplates` / `ResponseParameters` / `TemplateSelectionExpression`
|
|
22767
|
+
* / `TlsConfig`).
|
|
22734
22768
|
*/
|
|
22735
22769
|
async updateIntegration(logicalId, physicalId, resourceType, properties, previousProperties) {
|
|
22736
22770
|
const apiId = properties["ApiId"] ?? previousProperties["ApiId"];
|
|
@@ -22775,6 +22809,50 @@ var ApiGatewayV2Provider = class {
|
|
|
22775
22809
|
changed = true;
|
|
22776
22810
|
}
|
|
22777
22811
|
}
|
|
22812
|
+
if (properties["ConnectionId"] != null && properties["ConnectionId"] !== previousProperties["ConnectionId"]) {
|
|
22813
|
+
input.ConnectionId = properties["ConnectionId"];
|
|
22814
|
+
changed = true;
|
|
22815
|
+
}
|
|
22816
|
+
if (properties["ConnectionType"] != null && properties["ConnectionType"] !== previousProperties["ConnectionType"]) {
|
|
22817
|
+
input.ConnectionType = properties["ConnectionType"];
|
|
22818
|
+
changed = true;
|
|
22819
|
+
}
|
|
22820
|
+
if (properties["ContentHandlingStrategy"] != null && properties["ContentHandlingStrategy"] !== previousProperties["ContentHandlingStrategy"]) {
|
|
22821
|
+
input.ContentHandlingStrategy = properties["ContentHandlingStrategy"];
|
|
22822
|
+
changed = true;
|
|
22823
|
+
}
|
|
22824
|
+
if (properties["CredentialsArn"] != null && properties["CredentialsArn"] !== previousProperties["CredentialsArn"]) {
|
|
22825
|
+
input.CredentialsArn = properties["CredentialsArn"];
|
|
22826
|
+
changed = true;
|
|
22827
|
+
}
|
|
22828
|
+
if (properties["IntegrationSubtype"] != null && properties["IntegrationSubtype"] !== previousProperties["IntegrationSubtype"]) {
|
|
22829
|
+
input.IntegrationSubtype = properties["IntegrationSubtype"];
|
|
22830
|
+
changed = true;
|
|
22831
|
+
}
|
|
22832
|
+
if (input.IntegrationSubtype === void 0) {
|
|
22833
|
+
const liveSubtype = properties["IntegrationSubtype"] ?? previousProperties["IntegrationSubtype"];
|
|
22834
|
+
if (liveSubtype !== void 0) input.IntegrationSubtype = liveSubtype;
|
|
22835
|
+
}
|
|
22836
|
+
if (properties["PassthroughBehavior"] != null && properties["PassthroughBehavior"] !== previousProperties["PassthroughBehavior"]) {
|
|
22837
|
+
input.PassthroughBehavior = properties["PassthroughBehavior"];
|
|
22838
|
+
changed = true;
|
|
22839
|
+
}
|
|
22840
|
+
if (properties["RequestTemplates"] != null && !this.deepEqual(properties["RequestTemplates"], previousProperties["RequestTemplates"])) {
|
|
22841
|
+
input.RequestTemplates = properties["RequestTemplates"];
|
|
22842
|
+
changed = true;
|
|
22843
|
+
}
|
|
22844
|
+
if (properties["ResponseParameters"] != null && !this.deepEqual(properties["ResponseParameters"], previousProperties["ResponseParameters"])) {
|
|
22845
|
+
input.ResponseParameters = this.toSdkResponseParameters(properties["ResponseParameters"]);
|
|
22846
|
+
changed = true;
|
|
22847
|
+
}
|
|
22848
|
+
if (properties["TemplateSelectionExpression"] != null && properties["TemplateSelectionExpression"] !== previousProperties["TemplateSelectionExpression"]) {
|
|
22849
|
+
input.TemplateSelectionExpression = properties["TemplateSelectionExpression"];
|
|
22850
|
+
changed = true;
|
|
22851
|
+
}
|
|
22852
|
+
if (properties["TlsConfig"] != null && !this.deepEqual(properties["TlsConfig"], previousProperties["TlsConfig"])) {
|
|
22853
|
+
input.TlsConfig = properties["TlsConfig"];
|
|
22854
|
+
changed = true;
|
|
22855
|
+
}
|
|
22778
22856
|
if (!changed) {
|
|
22779
22857
|
this.logger.debug(`No mutable Integration fields changed for ${logicalId}; skipping UpdateIntegration`);
|
|
22780
22858
|
return {
|
|
@@ -23125,6 +23203,84 @@ var ApiGatewayV2Provider = class {
|
|
|
23125
23203
|
return merged;
|
|
23126
23204
|
}
|
|
23127
23205
|
/**
|
|
23206
|
+
* `ResponseParameters` is the one `AWS::ApiGatewayV2::Integration` property
|
|
23207
|
+
* whose CFn shape does NOT match the SDK's, so forwarding it verbatim is not
|
|
23208
|
+
* an option (issue #609). CloudFormation models it as
|
|
23209
|
+
* `{ "<statusCode>": { ResponseParameters: [{ Destination, Source }, ...] } }`
|
|
23210
|
+
* while `CreateIntegration` / `UpdateIntegration` take the flattened
|
|
23211
|
+
* `{ "<statusCode>": { "<Destination>": "<Source>" } }`. The AWS SDK v3
|
|
23212
|
+
* serializer drops members it cannot model, so the un-converted CFn shape
|
|
23213
|
+
* would deliver an EMPTY map per status code — the silent-drop class one
|
|
23214
|
+
* level down.
|
|
23215
|
+
*
|
|
23216
|
+
* Anything that is not the expected object / array shape (an unresolved
|
|
23217
|
+
* intrinsic, a malformed block) passes through untouched so AWS surfaces the
|
|
23218
|
+
* real validation error instead of cdkd inventing one.
|
|
23219
|
+
*
|
|
23220
|
+
* `Source` is COERCED from a number / boolean rather than skipped. CFn types
|
|
23221
|
+
* `ResponseParameters` as free-form `object` and coerces scalars, cdkd does
|
|
23222
|
+
* not (the `coerceNumber` class in `.claude/rules/providers.md`), so an
|
|
23223
|
+
* unquoted `Source: 403` under the canonical `overwrite:statuscode`
|
|
23224
|
+
* destination is a perfectly legal template whose value arrives as a NUMBER.
|
|
23225
|
+
* Skipping it would re-introduce the silent drop this method exists to close.
|
|
23226
|
+
* A `Destination` is never coerced — it becomes an SDK map KEY, and a
|
|
23227
|
+
* non-string there is a malformed template, not a scalar shorthand.
|
|
23228
|
+
*/
|
|
23229
|
+
toSdkResponseParameters(value) {
|
|
23230
|
+
if (value == null) return void 0;
|
|
23231
|
+
if (typeof value !== "object" || Array.isArray(value)) return value;
|
|
23232
|
+
const out = {};
|
|
23233
|
+
for (const [statusCode, block] of Object.entries(value)) {
|
|
23234
|
+
if (block == null || typeof block !== "object" || Array.isArray(block)) {
|
|
23235
|
+
out[statusCode] = block;
|
|
23236
|
+
continue;
|
|
23237
|
+
}
|
|
23238
|
+
const entries = block["ResponseParameters"];
|
|
23239
|
+
if (!Array.isArray(entries)) {
|
|
23240
|
+
out[statusCode] = block;
|
|
23241
|
+
continue;
|
|
23242
|
+
}
|
|
23243
|
+
const mapped = {};
|
|
23244
|
+
for (const entry of entries) {
|
|
23245
|
+
const destination = entry != null && typeof entry === "object" && !Array.isArray(entry) ? entry["Destination"] : void 0;
|
|
23246
|
+
const source = entry != null && typeof entry === "object" && !Array.isArray(entry) ? entry["Source"] : void 0;
|
|
23247
|
+
const coerced = typeof source === "string" ? source : typeof source === "number" || typeof source === "boolean" ? String(source) : void 0;
|
|
23248
|
+
if (typeof destination !== "string" || coerced === void 0) {
|
|
23249
|
+
this.logger.warn(`AWS::ApiGatewayV2::Integration ResponseParameters['${statusCode}'] has an entry cdkd cannot deliver (Destination must be a string and Source a string / number / boolean; got ${JSON.stringify(destination)} / ${JSON.stringify(source)}); skipping that entry.`);
|
|
23250
|
+
continue;
|
|
23251
|
+
}
|
|
23252
|
+
mapped[destination] = coerced;
|
|
23253
|
+
}
|
|
23254
|
+
out[statusCode] = mapped;
|
|
23255
|
+
}
|
|
23256
|
+
return out;
|
|
23257
|
+
}
|
|
23258
|
+
/**
|
|
23259
|
+
* Inverse of {@link toSdkResponseParameters}, for `readCurrentState`. Without
|
|
23260
|
+
* it the AWS-current side would carry the flat SDK map while the cdkd
|
|
23261
|
+
* baseline carries the CFn list-of-pairs, and every `cdkd drift` run would
|
|
23262
|
+
* report permanent phantom drift on a resource nobody touched.
|
|
23263
|
+
*
|
|
23264
|
+
* The pairs are sorted by `Destination` because this turns an UNORDERED SDK
|
|
23265
|
+
* map into an ARRAY, and `calculateResourceDrift` compares arrays
|
|
23266
|
+
* POSITIONALLY — AWS does not guarantee map readback order, so an unsorted
|
|
23267
|
+
* rebuild would trade the shape-mismatch phantom drift for an ordering one
|
|
23268
|
+
* (and `--revert` would re-push an identical value forever). Same reasoning
|
|
23269
|
+
* as `src/analyzer/drift-normalize.ts`, applied at the source instead.
|
|
23270
|
+
*/
|
|
23271
|
+
toCfnResponseParameters(value) {
|
|
23272
|
+
if (value == null) return void 0;
|
|
23273
|
+
const out = {};
|
|
23274
|
+
for (const [statusCode, flat] of Object.entries(value)) {
|
|
23275
|
+
if (flat == null || typeof flat !== "object" || Array.isArray(flat)) continue;
|
|
23276
|
+
out[statusCode] = { ResponseParameters: Object.entries(flat).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0).map(([destination, source]) => ({
|
|
23277
|
+
Destination: destination,
|
|
23278
|
+
Source: source
|
|
23279
|
+
})) };
|
|
23280
|
+
}
|
|
23281
|
+
return out;
|
|
23282
|
+
}
|
|
23283
|
+
/**
|
|
23128
23284
|
* Convert CloudFormation Tags (Array<{Key, Value}>) to SDK Tags (Record<string, string>).
|
|
23129
23285
|
*/
|
|
23130
23286
|
cfnTagsToRecord(tags) {
|
|
@@ -68757,7 +68913,7 @@ function createMigrateCommand() {
|
|
|
68757
68913
|
*/
|
|
68758
68914
|
function buildProgram() {
|
|
68759
68915
|
const program = new Command();
|
|
68760
|
-
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.280.
|
|
68916
|
+
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.280.11");
|
|
68761
68917
|
program.hook("preAction", (_thisCommand, actionCommand) => {
|
|
68762
68918
|
const { profile } = actionCommand.optsWithGlobals();
|
|
68763
68919
|
if (profile !== void 0) process.env["AWS_PROFILE"] = profile;
|