@go-to-k/cdkd 0.281.2 → 0.281.3

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/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import { $ as requireConfigArray, $t as expectedOwnerParam, A as green, An as withErrorHandling, At as getDockerCmd, B as slowCcOperationTimeoutMs, Bt as resolveAutoAssetStorage, C as MULTI_REGION_RECREATE_BLOCKED_TYPES, Cn as StackHasActiveImportsError, Ct as ensureAssetStorage, D as bold, Dt as validateContainerRepoName, E as formatResourceLine, Et as validateAssetBucketName, F as clearOnUpdateRemoval, Ft as Synthesizer, G as refStateLookupFromResource, Gt as resolveUseCdkBootstrapAssets, H as isTerminationProtectionPropagationError, Ht as resolveSkipPrefix, I as ProviderRegistry, It as synthesisStatusMessage, J as resolveExplicitPhysicalId, Jt as CFN_TEMPLATE_BODY_LIMIT, K as WAFv2WebACLProvider, Kt as stateBucketExistenceConfirmed, L as findActionableSilentDrops, Lt as getDefaultStateBucketName, M as yellow, Mt as runDockerStreaming, N as IAMRoleProvider, Nt as AssetManifestLoader, O as cyan, Ot as buildDockerImage, P as collectInlinePolicyNamesManagedBySiblings, Pt as getDockerImageBySourceHash, Q as replayWarn, Qt as uploadCfnTemplate, R as findSilentDropProperties, Rt as getLegacyStateBucketName, S as extractDeploymentEventError, Sn as ResourceUpdateNotSupportedError, St as BOOTSTRAP_MARKER_PREFIX, T as renderStatefulReason, Tt as parseBootstrapMarker, U as IntrinsicFunctionResolver, Ut as resolveStateBucketWithDefault, V as disableInstanceApiTermination, Vt as resolveCaptureObservedState, W as cfnRefValueFromPhysicalId, Wt as resolveStateBucketWithDefaultAndSource, X as configStringRefusal, Xt as MIGRATE_TMP_PREFIX, Y as assertRegionMatch, Yt as CFN_TEMPLATE_URL_LIMIT, Z as readConfigString, Zt as findLargeInlineResources, _ as createPreDeleteFinalSnapshot, _n as MissingCdkCliError, _t as buildAssetRedirectMap, a as DeploymentEventsStore, an as getAwsClients, at as withRetry, b as unsupportedFinalSnapshotError, bn as ProvisioningError, bt as rewriteTemplateAssetReferences, c as replayFailedOperations, ct as DagBuilder, d as IMPLICIT_DELETE_DEPENDENCIES, dt as S3StateBackend, en as AssemblyReader, et as requireConfigObject, f as computeImplicitDeleteEdges, fn as DeployCancelledError, ft as rebuildClientForBucketRegion, g as ccRoutedFinalSnapshotError, gt as WorkGraph, h as buildFinalSnapshotIdentifier, hn as LocalStartServiceError, ht as stringifyValue, i as DeploymentEventsReader, in as AwsClients, it as describeTypeWithThrottleRetry, j as red, jt as runDockerForeground, k as gray, kn as normalizeAwsError, kt as formatDockerLoginError, l as replayRollback, ln as CdkdError, lt as TemplateParser, m as PRE_DELETE_SNAPSHOT_TYPES, mn as LocalMigrateError, mt as AssetPublisher, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nt as applyRoleArnIfSet, o as planFailedOps, on as resetAwsClients, ot as isRetryableTransientError, p as ATOMIC_FINAL_SNAPSHOT_TYPES, pn as LocalInvokeBuildError$1, pt as shouldRetainResource, q as normalizeAwsTagsToCfn, qt as warnDeprecatedNoPrefixCliFlag, r as DeployEngine, rn as resolveBucketRegion, rt as DiffCalculator, s as planRollback, sn as setAwsClients, st as isThrottlingError, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as processStackMessages, tt as requireConfigString, u as withResourceDeadline, ut as LockManager, v as isFinalSnapshotError, vn as NestedStackChildDirectDestroyError, vt as createAssetRedirectResolver, w as isStatefulRecreateTargetSync, wn as StackTerminationProtectionError, wt as getBootstrapMarkerKey, x as makeCanonicalizePropertiesFn, xn as ResourceTimeoutError, xt as AssetModeResolver, y as refusesFinalSnapshot, yn as PartialFailureError, yt as loadPublishableAssetManifest, z as CloudControlProvider, zt as resolveApp } from "./deploy-engine-drWGPyTA.js";
2
+ import { $ as requireConfigArray, $t as expectedOwnerParam, A as green, An as withErrorHandling, At as getDockerCmd, B as slowCcOperationTimeoutMs, Bt as resolveAutoAssetStorage, C as MULTI_REGION_RECREATE_BLOCKED_TYPES, Cn as StackHasActiveImportsError, Ct as ensureAssetStorage, D as bold, Dt as validateContainerRepoName, E as formatResourceLine, Et as validateAssetBucketName, F as clearOnUpdateRemoval, Ft as Synthesizer, G as refStateLookupFromResource, Gt as resolveUseCdkBootstrapAssets, H as isTerminationProtectionPropagationError, Ht as resolveSkipPrefix, I as ProviderRegistry, It as synthesisStatusMessage, J as resolveExplicitPhysicalId, Jt as CFN_TEMPLATE_BODY_LIMIT, K as WAFv2WebACLProvider, Kt as stateBucketExistenceConfirmed, L as findActionableSilentDrops, Lt as getDefaultStateBucketName, M as yellow, Mt as runDockerStreaming, N as IAMRoleProvider, Nt as AssetManifestLoader, O as cyan, Ot as buildDockerImage, P as collectInlinePolicyNamesManagedBySiblings, Pt as getDockerImageBySourceHash, Q as replayWarn, Qt as uploadCfnTemplate, R as findSilentDropProperties, Rt as getLegacyStateBucketName, S as extractDeploymentEventError, Sn as ResourceUpdateNotSupportedError, St as BOOTSTRAP_MARKER_PREFIX, T as renderStatefulReason, Tt as parseBootstrapMarker, U as IntrinsicFunctionResolver, Ut as resolveStateBucketWithDefault, V as disableInstanceApiTermination, Vt as resolveCaptureObservedState, W as cfnRefValueFromPhysicalId, Wt as resolveStateBucketWithDefaultAndSource, X as configStringRefusal, Xt as MIGRATE_TMP_PREFIX, Y as assertRegionMatch, Yt as CFN_TEMPLATE_URL_LIMIT, Z as readConfigString, Zt as findLargeInlineResources, _ as createPreDeleteFinalSnapshot, _n as MissingCdkCliError, _t as buildAssetRedirectMap, a as DeploymentEventsStore, an as getAwsClients, at as withRetry, b as unsupportedFinalSnapshotError, bn as ProvisioningError, bt as rewriteTemplateAssetReferences, c as replayFailedOperations, ct as DagBuilder, d as IMPLICIT_DELETE_DEPENDENCIES, dt as S3StateBackend, en as AssemblyReader, et as requireConfigObject, f as computeImplicitDeleteEdges, fn as DeployCancelledError, ft as rebuildClientForBucketRegion, g as ccRoutedFinalSnapshotError, gt as WorkGraph, h as buildFinalSnapshotIdentifier, hn as LocalStartServiceError, ht as stringifyValue, i as DeploymentEventsReader, in as AwsClients, it as describeTypeWithThrottleRetry, j as red, jt as runDockerForeground, k as gray, kn as normalizeAwsError, kt as formatDockerLoginError, l as replayRollback, ln as CdkdError, lt as TemplateParser, m as PRE_DELETE_SNAPSHOT_TYPES, mn as LocalMigrateError, mt as AssetPublisher, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nt as applyRoleArnIfSet, o as planFailedOps, on as resetAwsClients, ot as isRetryableTransientError, p as ATOMIC_FINAL_SNAPSHOT_TYPES, pn as LocalInvokeBuildError$1, pt as shouldRetainResource, q as normalizeAwsTagsToCfn, qt as warnDeprecatedNoPrefixCliFlag, r as DeployEngine, rn as resolveBucketRegion, rt as DiffCalculator, s as planRollback, sn as setAwsClients, st as isThrottlingError, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as processStackMessages, tt as requireConfigString, u as withResourceDeadline, ut as LockManager, v as isFinalSnapshotError, vn as NestedStackChildDirectDestroyError, vt as createAssetRedirectResolver, w as isStatefulRecreateTargetSync, wn as StackTerminationProtectionError, wt as getBootstrapMarkerKey, x as makeCanonicalizePropertiesFn, xn as ResourceTimeoutError, xt as AssetModeResolver, y as refusesFinalSnapshot, yn as PartialFailureError, yt as loadPublishableAssetManifest, z as CloudControlProvider, zt as resolveApp } from "./deploy-engine-DFZo1Twc.js";
3
3
  import { a as getLiveRenderer, c as PATTERN_B_RESOURCE_TYPES, d as generateResourceNameWithFallback, h as withStackName, i as runStackBuffered, m as withSkipPrefix, n as getLogger, o as PATTERN_B_NAME_OPTIONS, s as PATTERN_B_NAME_PROPERTIES, u as generateResourceName } from "./logger-zRrlbaQt.js";
4
- import { t as ASGProvider } from "./asg-provider-n21zWyH-.js";
4
+ import { t as ASGProvider } from "./asg-provider-CBIIk31p.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";
@@ -33306,6 +33306,47 @@ function normalizeRecordName(name) {
33306
33306
  return lowered.endsWith(".") ? lowered : `${lowered}.`;
33307
33307
  }
33308
33308
  /**
33309
+ * Is this value ONLY an unresolved intrinsic — `{Ref: …}` / `{Fn::If: […]}` —
33310
+ * rather than a real object with members?
33311
+ *
33312
+ * `import.ts` substitutes only single-key `{Ref}` before calling a provider,
33313
+ * so an element behind a condition reaches `import()` in this shape.
33314
+ */
33315
+ function isIntrinsicOnly(value) {
33316
+ if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
33317
+ const keys = Object.keys(value);
33318
+ return keys.length === 1 && (keys[0] === "Ref" || (keys[0] ?? "").startsWith("Fn::"));
33319
+ }
33320
+ /**
33321
+ * Read a hosted zone's PUBLIC-vs-PRIVATE visibility off its own template
33322
+ * properties (issue #1702), for the `import()` name lookup's zone filter.
33323
+ *
33324
+ * CloudFormation has no `PrivateZone` property — visibility is implied by
33325
+ * `VPCs`: a zone associated with at least one VPC is private, one with none is
33326
+ * public. So:
33327
+ *
33328
+ * - `VPCs` ABSENT -> `false` (public). This is the CDK `PublicHostedZone`
33329
+ * shape and by far the common one.
33330
+ * - an array carrying at least one element that is NOT purely an unresolved
33331
+ * intrinsic -> `true` (private). Such an element proves the template
33332
+ * attaches a VPC unconditionally, even when the `VPCId` inside it is itself
33333
+ * a `Ref` this provider cannot resolve.
33334
+ * - anything else -> `undefined` (do not narrow), and the caller's ambiguity
33335
+ * guard then refuses rather than adopting the wrong zone. Three shapes land
33336
+ * here and each would otherwise be a GUESS: a non-array (an unresolved
33337
+ * intrinsic is a truthy OBJECT); an EMPTY array (more likely a
33338
+ * condition-collapsed value than a deliberate "public"); and — the one that
33339
+ * is easy to miss — an array whose every element is intrinsic-only
33340
+ * (`[{Ref: 'AWS::NoValue'}]`, the CFn spelling of a conditionally-absent
33341
+ * element), which is non-empty yet may resolve to a PUBLIC zone.
33342
+ */
33343
+ function templateZoneVisibility(properties) {
33344
+ const vpcs = properties["VPCs"];
33345
+ if (vpcs == null) return false;
33346
+ if (!Array.isArray(vpcs)) return void 0;
33347
+ return vpcs.some((v) => typeof v === "object" && v !== null && !Array.isArray(v) && !isIntrinsicOnly(v)) ? true : void 0;
33348
+ }
33349
+ /**
33309
33350
  * Canonicalize a name for the QUERY side of a Route 53 list call.
33310
33351
  *
33311
33352
  * `normalizeRecordName` above is the COMPARE-side canonicalizer, and the two
@@ -34025,12 +34066,33 @@ var Route53Provider = class {
34025
34066
  * Resolve HostedZoneId from properties.
34026
34067
  * If HostedZoneId is provided, use it directly.
34027
34068
  * If HostedZoneName is provided, resolve it to a HostedZoneId via ListHostedZonesByName.
34069
+ *
34070
+ * `options.requirePrivateZone` narrows the name match to PRIVATE (`true`) or
34071
+ * PUBLIC (`false`) zones before the ambiguity decision below; leave it
34072
+ * undefined to match either. Split-horizon DNS is exactly a public and a
34073
+ * private zone sharing one name, so a caller that already knows which side
34074
+ * it wants resolves cleanly where the ambiguity guard would otherwise
34075
+ * refuse. `importHostedZone` is the one caller today, deriving the answer
34076
+ * from the template's own `VPCs` (declared = private, absent = public);
34077
+ * every RecordSet caller leaves it undefined, since a record set's template
34078
+ * says nothing about the zone's visibility.
34079
+ *
34080
+ * `options.subject` names what is being resolved FOR in the errors this
34081
+ * raises, and what remedy to point at. It exists because the messages are
34082
+ * user-facing and this helper is no longer RecordSet-only: telling someone
34083
+ * adopting a hosted zone to "pass the '<zoneId>|<name>|<type>' composite"
34084
+ * names a physicalId shape their resource does not have.
34028
34085
  */
34029
34086
  async resolveHostedZoneId(properties, logicalId, resourceType, physicalId, options) {
34087
+ const subject = options?.subject ?? {
34088
+ noun: "record set",
34089
+ remedy: "set HostedZoneId explicitly, or pass the '<zoneId>|<name>|<type>' composite via --resource"
34090
+ };
34030
34091
  const hostedZoneId = properties["HostedZoneId"];
34031
34092
  if (typeof hostedZoneId === "string" && hostedZoneId) return hostedZoneId;
34032
34093
  let lookupErrorMessage;
34033
34094
  let lookupErrorCause;
34095
+ const narrowing = options?.requirePrivateZone !== void 0;
34034
34096
  const hostedZoneName = properties["HostedZoneName"];
34035
34097
  if (typeof hostedZoneName === "string" && hostedZoneName) {
34036
34098
  let matched = [];
@@ -34043,18 +34105,26 @@ var Route53Provider = class {
34043
34105
  const zones = response.HostedZones ?? [];
34044
34106
  const normalizedName = normalizeRecordName(hostedZoneName);
34045
34107
  matched = zones.filter((z) => normalizeRecordName(z.Name ?? "") === normalizedName);
34046
- absenceIsSound = !hostedZoneName.includes("\\") && (zones.length > 0 || response.IsTruncated !== true);
34108
+ if (narrowing) matched = matched.filter((z) => (z.Config?.PrivateZone ?? false) === options?.requirePrivateZone);
34109
+ const sawLaterName = zones.some((z) => normalizeRecordName(z.Name ?? "") !== normalizedName);
34110
+ absenceIsSound = !hostedZoneName.includes("\\") && (narrowing ? sawLaterName || response.IsTruncated !== true : zones.length > 0 || response.IsTruncated !== true);
34047
34111
  } catch (error) {
34048
34112
  lookupErrorMessage = error instanceof Error ? error.message : String(error);
34049
34113
  lookupErrorCause = error instanceof Error ? error : void 0;
34050
34114
  this.logger.warn(`Failed to resolve HostedZoneName "${hostedZoneName}" for ${logicalId}: ${lookupErrorMessage}`);
34051
34115
  }
34052
- if (matched.length > 1 && options?.requireUnambiguousZoneName) throw new ProvisioningError(`HostedZoneName "${hostedZoneName}" matches ${matched.length} hosted zones for ${logicalId} (split-horizon public/private DNS). Refusing to guess which one this record belongs to — set HostedZoneId explicitly, or pass the '<zoneId>|<name>|<type>' composite via --resource.`, resourceType, logicalId, physicalId);
34116
+ if (matched.length > 1 && options?.requireUnambiguousZoneName) {
34117
+ const cause = narrowing ? "" : " (split-horizon public/private DNS)";
34118
+ throw new ProvisioningError(`HostedZoneName "${hostedZoneName}" matches ${matched.length} hosted zones for ${logicalId}${cause}. Refusing to guess which one is meant — ${subject.remedy}.`, resourceType, logicalId, physicalId);
34119
+ }
34053
34120
  const matchedZone = matched[0];
34054
34121
  if (matchedZone?.Id) return matchedZone.Id.replace("/hostedzone/", "");
34055
- if (absenceIsSound) throw new HostedZoneNameNotFoundError(`HostedZoneName "${hostedZoneName}" matches no hosted zone in this account/region for ${logicalId}`, resourceType, logicalId, physicalId);
34122
+ if (absenceIsSound) {
34123
+ const visibility = options?.requirePrivateZone === void 0 ? "" : options.requirePrivateZone ? "private " : "public ";
34124
+ throw new HostedZoneNameNotFoundError(`HostedZoneName "${hostedZoneName}" matches no ${visibility}hosted zone in this account/region for ${logicalId}`, resourceType, logicalId, physicalId);
34125
+ }
34056
34126
  }
34057
- throw new ProvisioningError(lookupErrorMessage ? `Could not resolve HostedZoneName "${String(hostedZoneName)}" for record set ${logicalId}: ${lookupErrorMessage}` : `Either HostedZoneId or HostedZoneName is required for record set ${logicalId}`, resourceType, logicalId, physicalId, lookupErrorCause);
34127
+ throw new ProvisioningError(lookupErrorMessage ? `Could not resolve HostedZoneName "${String(hostedZoneName)}" for ${subject.noun} ${logicalId}: ${lookupErrorMessage}` : typeof hostedZoneName === "string" && hostedZoneName ? `Could not determine whether HostedZoneName "${hostedZoneName}" exists for ${subject.noun} ${logicalId} — the hosted-zone listing ended before the name could be resolved either way, so cdkd will not assume it is absent. ${subject.remedy}.` : `Either HostedZoneId or HostedZoneName is required for ${subject.noun} ${logicalId}`, resourceType, logicalId, physicalId, lookupErrorCause);
34058
34128
  }
34059
34129
  /**
34060
34130
  * Recover `(hostedZoneId, name, type)` for a record set from EITHER shape of
@@ -34232,8 +34302,10 @@ var Route53Provider = class {
34232
34302
  /**
34233
34303
  * Adopt an existing Route 53 resource into cdkd state.
34234
34304
  *
34235
- * Supported types: `AWS::Route53::HostedZone` (override-only);
34236
- * `AWS::Route53::RecordSet` (override-only too the supplied id is
34305
+ * Supported types: `AWS::Route53::HostedZone` (AUTO-RESOLVED from the
34306
+ * template's `Name` since issue #1702, with an explicit `--resource`
34307
+ * override still taking precedence);
34308
+ * `AWS::Route53::RecordSet` (override-only — the supplied id is
34237
34309
  * CANONICALIZED rather than trusted, using the template's
34238
34310
  * `HostedZoneId` / `HostedZoneName` + `Name` + `Type` and verified
34239
34311
  * against AWS, but an import with no override still declines because
@@ -34315,6 +34387,29 @@ var Route53Provider = class {
34315
34387
  attributes: {}
34316
34388
  };
34317
34389
  }
34390
+ /**
34391
+ * Adopt an existing hosted zone (issue #1702).
34392
+ *
34393
+ * An explicit `--resource` id is ground truth and is only VERIFIED. With no
34394
+ * override, the zone is resolved from the template's `Name` via
34395
+ * `ListHostedZonesByName` — the physical-name route docs/import.md's
34396
+ * Auto-resolved section documents, which this method declined to take until
34397
+ * now, so a type the table listed as auto-resolved silently reported
34398
+ * `skipped-not-found` and (under `--migrate-from-cloudformation`) was left
34399
+ * out of state after the CloudFormation stack had already been retired.
34400
+ *
34401
+ * Three properties of the lookup matter and none of them is incidental:
34402
+ * the query name is canonicalized to AWS's ordering key
34403
+ * (`canonicalizeQueryName`) so a bounded page cannot skip past the zone; a
34404
+ * name matching MORE than one zone is REFUSED rather than guessed at
34405
+ * (split-horizon DNS), except that the template's own `VPCs` first narrows
34406
+ * the match to the public or private side (`templateZoneVisibility`), which
34407
+ * is what makes the ordinary split-horizon pair resolve cleanly; and the
34408
+ * two ways of failing are kept DISTINCT — a proven absence returns `null`
34409
+ * (`skipped-not-found`, the next deploy creates the zone) while an
34410
+ * ambiguous name or a failed lookup throws, which `importOne` records as
34411
+ * `failed` for this row alone.
34412
+ */
34318
34413
  async importHostedZone(input) {
34319
34414
  if (input.knownPhysicalId) try {
34320
34415
  await this.getClient().send(new GetHostedZoneCommand({ Id: input.knownPhysicalId }));
@@ -34326,7 +34421,24 @@ var Route53Provider = class {
34326
34421
  if (err instanceof Error && err.name === "NoSuchHostedZone") return null;
34327
34422
  throw err;
34328
34423
  }
34329
- return null;
34424
+ const zoneName = input.properties["Name"];
34425
+ if (typeof zoneName !== "string" || !zoneName) return null;
34426
+ try {
34427
+ return {
34428
+ physicalId: await this.resolveHostedZoneId({ HostedZoneName: zoneName }, input.logicalId, input.resourceType, void 0, {
34429
+ requireUnambiguousZoneName: true,
34430
+ requirePrivateZone: templateZoneVisibility(input.properties),
34431
+ subject: {
34432
+ noun: "hosted zone",
34433
+ remedy: `pass --resource ${input.logicalId}=<hostedZoneId> to adopt it explicitly`
34434
+ }
34435
+ }),
34436
+ attributes: {}
34437
+ };
34438
+ } catch (error) {
34439
+ if (error instanceof HostedZoneNameNotFoundError) return null;
34440
+ throw error;
34441
+ }
34330
34442
  }
34331
34443
  };
34332
34444
 
@@ -72620,7 +72732,7 @@ function createMigrateCommand() {
72620
72732
  */
72621
72733
  function buildProgram() {
72622
72734
  const program = new Command();
72623
- program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.281.2");
72735
+ program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.281.3");
72624
72736
  program.hook("preAction", (_thisCommand, actionCommand) => {
72625
72737
  const { profile } = actionCommand.optsWithGlobals();
72626
72738
  if (profile !== void 0) process.env["AWS_PROFILE"] = profile;