Skip to main content

stacks-dns

Use when managing DNS in a Stacks application - Route53 hosted zones, domain records, nameserver management, or DNS configuration. Covers @stacksjs/dns (AWS Route53 driver), @stacksjs/dnsx, and config/dns.ts.

소스 정보

저장소
stacksjs/stacks
최근 소스 활동
2026년 8월 29일 17:05
감지된 SKILL.md 언어
영어
스타
631
포크
20

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
stacks-dns
description
Use when managing DNS in a Stacks application - Route53 hosted zones, domain records, nameserver management, or DNS configuration. Covers @stacksjs/dns (AWS Route53 driver), @stacksjs/dnsx, and config/dns.ts.
license
MIT
compatibility
Bun >= 1.3.0, TypeScript
allowed-tools
Read Edit Write Bash Grep Glob
# Stacks DNS ## Key Paths - Core package: `storage/framework/core/dns/src/` - AWS driver: `storage/framework/core/dns/src/drivers/aws.ts` - Config: `config/dns.ts` - Package: `@stacksjs/dns` ## Source Files ``` dns/src/ ├── index.ts # Re-exports from drivers and @stacksjs/dnsx └── drivers/ └── aws.ts # AWS Route53 DNS management ``` ## AWS Route53 API ```typescript import { createHostedZone, deleteHostedZone, deleteHostedZoneRecords, getNameservers, getHostedZoneNameservers, updateNameservers, findHostedZone, hasUserDomainBeenAddedToCloud, writeNameserversToConfig, addDomain, } from '@stacksjs/dns' ``` ### Hosted Zone Management ```typescript // Create or retrieve a hosted zone createHostedZone(domainName: string): Promise<Result<HostedZone | CreateHostedZoneResult | string | null, Error>> // Delete a zone and all its records deleteHostedZone(domainName: string): Promise<Result<string, Error>> // Delete records only, keep zone deleteHostedZoneRecords(domainName: string): Promise<Result<string, Error>> // Find a zone by domain name findHostedZone(domain: string): Promise<Result<string | null | undefined, Error>> // Check if domain is in cloud hasUserDomainBeenAddedToCloud(domainName?: string): Promise<boolean> ``` ### Nameserver Management ```typescript // Get nameservers from Route53 Domains getNameservers(domainName?: string): Promise<string[] | undefined> // Get nameservers from hosted zone delegation set getHostedZoneNameservers(domainName: string): Promise<string[]> // Update domain nameservers in Route53 updateNameservers(hostedZoneNameservers: string[], domainName?: string): Promise<boolean | undefined> // Persist nameservers to config/dns.ts writeNameserversToConfig(nameservers: string[]): void ``` ### Domain Actions ```typescript // Run domain add action (delegates to CLI action) addDomain(options: DeployOptions): Promise<Result<Subprocess, CommandError>> ``` ### Helpers ```typescript // Internal helpers deleteRecordsForZone(zoneId: string): Promise<void> normalizeDomain(domain: string): string sanitizeNameserver(ns: string): string ``` ## Configuration (config/dns.ts) ```typescript import { defineDns } from '@stacksjs/config' export default defineDns({ a: [{ name: 'example.com', value: '1.2.3.4', ttl: 300 }], aaaa: [], cname: [], mx: [], txt: [], nameservers: [ 'ns-1731.awsdns-24.co.uk', 'ns-355.awsdns-44.com', 'ns-536.awsdns-03.net', 'ns-1395.awsdns-46.org', ], redirects: [], }) ``` ### DnsConfig Interface ```typescript interface DnsConfig { a: Array<{ name: string, value: string, ttl?: number }> aaaa: Array<{ name: string, value: string, ttl?: number }> cname: Array<{ name: string, value: string, ttl?: number }> mx: Array<{ name: string, value: string, ttl?: number, priority?: number }> txt: Array<{ name: string, value: string, ttl?: number }> nameservers: string[] redirects?: Array<{ from: string, to: string }> } ``` ## CLI Commands ```bash buddy dns # DNS management buddy domains # Domain management buddy domains:add # Add a domain to cloud buddy domains:remove # Remove a domain buddy domains:purchase # Purchase a domain ``` ## Re-exports from @stacksjs/dnsx Additional DNS utilities (lookups, resolution) are re-exported from the `@stacksjs/dnsx` package. ## Gotchas - **AWS-only** — currently only supports AWS Route53 as the DNS provider - **Uses ts-cloud SDK** — Route53 API calls go through the ts-cloud abstraction - **Result type** — most functions return `Result<T, Error>` from `ts-error-handling`, not plain values - **`writeNameserversToConfig` mutates config/dns.ts** — directly writes to the config file - **Domain name normalization** — trailing dots and www prefixes are handled automatically - **`createHostedZone` is idempotent** — returns existing zone if it already exists - **Nameservers must be synced** — hosted zone nameservers must match domain registrar nameservers for DNS to work
GitHub에서 보기