@hasna/domains 0.0.11 → 0.0.13

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.
@@ -1 +1 @@
1
- {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/domain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiDzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4tB5D"}
1
+ {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/domain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkDzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyvB5D"}
package/dist/cli/index.js CHANGED
@@ -31990,6 +31990,7 @@ var _Ex = "Expiry";
31990
31990
  var _F2 = "Fax";
31991
31991
  var _FC = "FilterCondition";
31992
31992
  var _FCi = "FilterConditions";
31993
+ var _FIAK = "FIAuthKey";
31993
31994
  var _FN = "FirstName";
31994
31995
  var _Fl2 = "Flags";
31995
31996
  var _GDD = "GetDomainDetail";
@@ -32063,6 +32064,9 @@ var _TTD = "TagsToDelete";
32063
32064
  var _Tl = "Tld";
32064
32065
  var _Ty = "Type";
32065
32066
  var _UD = "UpdatedDate";
32067
+ var _UDN = "UpdateDomainNameservers";
32068
+ var _UDNR = "UpdateDomainNameserversRequest";
32069
+ var _UDNRp = "UpdateDomainNameserversResponse";
32066
32070
  var _UTLD = "UnsupportedTLD";
32067
32071
  var _V2 = "Value";
32068
32072
  var _Va = "Values";
@@ -32153,6 +32157,7 @@ var ContactNumber = [0, n02, _CNo2, 8, 0];
32153
32157
  var CountryCode = [0, n02, _CC2, 8, 0];
32154
32158
  var Email = [0, n02, _E, 8, 0];
32155
32159
  var ExtraParamValue = [0, n02, _EPV, 8, 0];
32160
+ var FIAuthKey = [0, n02, _FIAK, 8, 0];
32156
32161
  var State = [0, n02, _S2, 8, 0];
32157
32162
  var ZipCode = [0, n02, _ZC, 8, 0];
32158
32163
  var CheckDomainAvailabilityRequest$ = [
@@ -32349,6 +32354,23 @@ var SortCondition$ = [
32349
32354
  [0, 0],
32350
32355
  2
32351
32356
  ];
32357
+ var UpdateDomainNameserversRequest$ = [
32358
+ 3,
32359
+ n02,
32360
+ _UDNR,
32361
+ 0,
32362
+ [_DN, _Na2, _FIAK],
32363
+ [0, () => NameserverList, [() => FIAuthKey, 0]],
32364
+ 2
32365
+ ];
32366
+ var UpdateDomainNameserversResponse$ = [
32367
+ 3,
32368
+ n02,
32369
+ _UDNRp,
32370
+ 0,
32371
+ [_OI],
32372
+ [0]
32373
+ ];
32352
32374
  var DnssecKeyList = [
32353
32375
  1,
32354
32376
  n02,
@@ -32448,6 +32470,14 @@ var RegisterDomain$ = [
32448
32470
  () => RegisterDomainRequest$,
32449
32471
  () => RegisterDomainResponse$
32450
32472
  ];
32473
+ var UpdateDomainNameservers$ = [
32474
+ 9,
32475
+ n02,
32476
+ _UDN,
32477
+ 0,
32478
+ () => UpdateDomainNameserversRequest$,
32479
+ () => UpdateDomainNameserversResponse$
32480
+ ];
32451
32481
 
32452
32482
  // node_modules/@aws-sdk/client-route-53-domains/dist-es/runtimeConfig.shared.js
32453
32483
  var getRuntimeConfig3 = (config) => {
@@ -32652,6 +32682,14 @@ class RegisterDomainCommand extends import_smithy_client23.Command.classBuilder(
32652
32682
  }).s("Route53Domains_v20140515", "RegisterDomain", {}).n("Route53DomainsClient", "RegisterDomainCommand").sc(RegisterDomain$).build() {
32653
32683
  }
32654
32684
 
32685
+ // node_modules/@aws-sdk/client-route-53-domains/dist-es/commands/UpdateDomainNameserversCommand.js
32686
+ var import_middleware_endpoint15 = __toESM(require_dist_cjs39(), 1);
32687
+ var import_smithy_client24 = __toESM(require_dist_cjs27(), 1);
32688
+ class UpdateDomainNameserversCommand extends import_smithy_client24.Command.classBuilder().ep(commonParams2).m(function(Command2, cs, config, o3) {
32689
+ return [import_middleware_endpoint15.getEndpointPlugin(config, Command2.getEndpointParameterInstructions())];
32690
+ }).s("Route53Domains_v20140515", "UpdateDomainNameservers", {}).n("Route53DomainsClient", "UpdateDomainNameserversCommand").sc(UpdateDomainNameservers$).build() {
32691
+ }
32692
+
32655
32693
  // src/lib/route53.ts
32656
32694
  function getConfig2() {
32657
32695
  return {
@@ -32751,6 +32789,17 @@ async function getDomainDetail(domain, config) {
32751
32789
  nameservers: (result.Nameservers ?? []).map((ns) => ns.Name ?? "").filter(Boolean)
32752
32790
  };
32753
32791
  }
32792
+ async function updateNameservers(domain, nameservers, config, client) {
32793
+ if (!nameservers.length) {
32794
+ throw new Error("updateNameservers requires at least one nameserver");
32795
+ }
32796
+ const domains = client ?? makeClients(config).domains;
32797
+ const result = await domains.send(new UpdateDomainNameserversCommand({
32798
+ DomainName: domain,
32799
+ Nameservers: nameservers.map((name) => ({ Name: name }))
32800
+ }));
32801
+ return { operationId: result.OperationId ?? "" };
32802
+ }
32754
32803
  async function listRegisteredDomains(config) {
32755
32804
  const { domains } = makeClients(config);
32756
32805
  const all = [];
@@ -33732,6 +33781,16 @@ function resolveContact(opts) {
33732
33781
  return { first_name, last_name, email, phone, address_line_1, city, state, country_code, zip_code, organization_name };
33733
33782
  }
33734
33783
 
33784
+ // src/lib/delegate.ts
33785
+ async function delegateDomainToCloudflare(domain, deps) {
33786
+ const zone = await deps.createCloudflareZone(domain);
33787
+ if (!zone.nameservers || zone.nameservers.length === 0) {
33788
+ throw new Error(`Cloudflare zone for ${domain} returned no nameservers; cannot delegate`);
33789
+ }
33790
+ const { operationId } = await deps.updateNameservers(domain, zone.nameservers);
33791
+ return { zoneId: zone.id, nameservers: zone.nameservers, operationId };
33792
+ }
33793
+
33735
33794
  // src/cli/commands/domain.ts
33736
33795
  var DOMAIN_STATUS_HELP = DOMAIN_STATUSES.join("/");
33737
33796
  var DOMAIN_OFFER_STATUS_HELP = DOMAIN_OFFER_STATUSES.join("/");
@@ -34155,7 +34214,7 @@ WHOIS for ${result.domain} [${result.source}]:`);
34155
34214
  process.exit(1);
34156
34215
  }
34157
34216
  });
34158
- domain.command("buy <name>").description("Purchase a domain via Route 53 (contact defaults from: domains config set contact.*)").option("--provider <name>", "Registrar provider (default: config default-registrar or route53)").option("--registrar <name>", "Registrar/seller for recorded purchases (alias of --provider)").option("--email <email>", "Registrant email").option("--first-name <n>", "First name").option("--last-name <n>", "Last name").option("--phone <p>", "Phone").option("--address <a>", "Street address").option("--city <c>", "City").option("--state <s>", "State/province").option("--country <c>", "Country code").option("--zip <z>", "ZIP code").option("--org <o>", "Organization").option("--price <amount>", "Record a completed purchase instead of registering via Route 53").option("--expires <date>", "Expiry date for recorded purchases").option("--auto-renew <bool>", "Auto-renew for recorded purchases (true/false)").option("--years <n>", "Years", "1").option("--wait", "Poll until registration completes").action(async (name, opts) => {
34217
+ domain.command("buy <name>").description("Purchase a domain via Route 53 (contact defaults from: domains config set contact.*)").option("--provider <name>", "Registrar provider (default: config default-registrar or route53)").option("--registrar <name>", "Registrar/seller for recorded purchases (alias of --provider)").option("--email <email>", "Registrant email").option("--first-name <n>", "First name").option("--last-name <n>", "Last name").option("--phone <p>", "Phone").option("--address <a>", "Street address").option("--city <c>", "City").option("--state <s>", "State/province").option("--country <c>", "Country code").option("--zip <z>", "ZIP code").option("--org <o>", "Organization").option("--price <amount>", "Record a completed purchase instead of registering via Route 53").option("--expires <date>", "Expiry date for recorded purchases").option("--auto-renew <bool>", "Auto-renew for recorded purchases (true/false)").option("--years <n>", "Years", "1").option("--wait", "Poll until registration completes").option("--dns <provider>", "DNS provider to delegate to after purchase (always cloudflare)", "cloudflare").option("--no-delegate", "Skip delegating DNS to Cloudflare after purchase").action(async (name, opts) => {
34159
34218
  const recordedPrice = parseOptionalNumber(opts.price, "--price");
34160
34219
  if (recordedPrice !== undefined) {
34161
34220
  const registrarName = opts.registrar ?? opts.provider ?? "manual";
@@ -34238,6 +34297,30 @@ WHOIS for ${result.domain} [${result.source}]:`);
34238
34297
  });
34239
34298
  }
34240
34299
  console.log(`\u2713 Added to portfolio`);
34300
+ const dnsProvider = opts.dns ?? "cloudflare";
34301
+ if (opts.delegate !== false && dnsProvider === "cloudflare") {
34302
+ if (!opts.wait) {
34303
+ console.log(` DNS: run 'domains domain buy ${name} --wait' or delegate later \u2014 registration must finish before NS can change.`);
34304
+ } else {
34305
+ try {
34306
+ console.log(`Delegating DNS to Cloudflare...`);
34307
+ const del = await delegateDomainToCloudflare(name, {
34308
+ createCloudflareZone: async (d3) => {
34309
+ const z2 = await createZone(d3);
34310
+ return { id: z2.id, nameservers: z2.nameservers };
34311
+ },
34312
+ updateNameservers: (d3, ns) => updateNameservers(d3, ns)
34313
+ });
34314
+ const existing2 = getDomainByName(name);
34315
+ if (existing2)
34316
+ updateDomain(existing2.id, { nameservers: del.nameservers });
34317
+ console.log(`\u2713 Cloudflare zone ${del.zoneId}; nameservers \u2192 ${del.nameservers.join(", ")} (op ${del.operationId})`);
34318
+ } catch (e3) {
34319
+ console.error(`\u26A0 DNS delegation failed (domain is registered): ${e3 instanceof Error ? e3.message : String(e3)}`);
34320
+ console.error(` Retry: create the Cloudflare zone and point Route53 NS at it.`);
34321
+ }
34322
+ }
34323
+ }
34241
34324
  if (!opts.wait)
34242
34325
  console.log(` Check: domains r53 status ${reg.operationId}`);
34243
34326
  } catch (e3) {
package/dist/index.d.ts CHANGED
@@ -7,5 +7,5 @@ export { createAlert, getAlert, listAlerts, deleteAlert, type Alert, type Create
7
7
  export { whoisLookup, checkDnsPropagation, checkSsl, exportZoneFile, importZoneFile, discoverSubdomains, validateDns, exportPortfolio, checkAllDomains, type WhoisResult, type DnsPropagationResult, type SslCheckResult, type ZoneImportResult, type SubdomainResult, type DnsValidationIssue, type DnsValidationResult, type BulkCheckResult, } from "./db/domains.js";
8
8
  export { getDatabase, closeDatabase } from "./db/database.js";
9
9
  export { getProvider, getAvailableProviders, syncAll, autoDetectRegistrar, type RegistrarProvider, type ProviderDnsRecord, type ProviderDomainInfo, type ProviderAvailability, type ProviderInfo, type SyncAllResult, } from "./lib/registrar.js";
10
- export { checkAvailability as r53CheckAvailability, registerDomain as r53RegisterDomain, getRegistrationStatus as r53GetRegistrationStatus, listRegisteredDomains as r53ListRegisteredDomains, createHostedZone as r53CreateHostedZone, listHostedZones as r53ListHostedZones, getHostedZone as r53GetHostedZone, deleteHostedZone as r53DeleteHostedZone, findHostedZoneByDomain as r53FindHostedZoneByDomain, listRecords as r53ListRecords, upsertRecord as r53UpsertRecord, upsertRecords as r53UpsertRecords, deleteRecord as r53DeleteRecord, createRoute53Provider, getConfig as r53GetConfig, type Route53Config, type DomainContactInfo, type DomainAvailability, type RegisteredDomain, type HostedZoneInfo, type Route53Record, type Route53RecordInput, } from "./lib/route53.js";
10
+ export { checkAvailability as r53CheckAvailability, registerDomain as r53RegisterDomain, getRegistrationStatus as r53GetRegistrationStatus, updateNameservers as r53UpdateNameservers, listRegisteredDomains as r53ListRegisteredDomains, createHostedZone as r53CreateHostedZone, listHostedZones as r53ListHostedZones, getHostedZone as r53GetHostedZone, deleteHostedZone as r53DeleteHostedZone, findHostedZoneByDomain as r53FindHostedZoneByDomain, listRecords as r53ListRecords, upsertRecord as r53UpsertRecord, upsertRecords as r53UpsertRecords, deleteRecord as r53DeleteRecord, createRoute53Provider, getConfig as r53GetConfig, type Route53Config, type DomainContactInfo, type DomainAvailability, type RegisteredDomain, type HostedZoneInfo, type Route53Record, type Route53RecordInput, } from "./lib/route53.js";
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EACZ,SAAS,EACT,qBAAqB,EACrB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,EAC3B,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,EACd,YAAY,EACZ,eAAe,EACf,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,0BAA0B,EAC/B,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,yBAAyB,GAC/B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,eAAe,EACf,YAAY,EACZ,cAAc,EACd,eAAe,EACf,eAAe,EACf,KAAK,SAAS,EACd,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,WAAW,EACX,QAAQ,EACR,UAAU,EACV,WAAW,EACX,KAAK,KAAK,EACV,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,QAAQ,EACR,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,eAAe,GACrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAG9D,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,OAAO,EACP,mBAAmB,EACnB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,iBAAiB,IAAI,oBAAoB,EACzC,cAAc,IAAI,iBAAiB,EACnC,qBAAqB,IAAI,wBAAwB,EACjD,qBAAqB,IAAI,wBAAwB,EACjD,gBAAgB,IAAI,mBAAmB,EACvC,eAAe,IAAI,kBAAkB,EACrC,aAAa,IAAI,gBAAgB,EACjC,gBAAgB,IAAI,mBAAmB,EACvC,sBAAsB,IAAI,yBAAyB,EACnD,WAAW,IAAI,cAAc,EAC7B,YAAY,IAAI,eAAe,EAC/B,aAAa,IAAI,gBAAgB,EACjC,YAAY,IAAI,eAAe,EAC/B,qBAAqB,EACrB,SAAS,IAAI,YAAY,EACzB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,kBAAkB,GACxB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EACZ,SAAS,EACT,qBAAqB,EACrB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,EAC3B,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,EACd,YAAY,EACZ,eAAe,EACf,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,0BAA0B,EAC/B,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,yBAAyB,GAC/B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,eAAe,EACf,YAAY,EACZ,cAAc,EACd,eAAe,EACf,eAAe,EACf,KAAK,SAAS,EACd,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,WAAW,EACX,QAAQ,EACR,UAAU,EACV,WAAW,EACX,KAAK,KAAK,EACV,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,QAAQ,EACR,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,eAAe,GACrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAG9D,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,OAAO,EACP,mBAAmB,EACnB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,iBAAiB,IAAI,oBAAoB,EACzC,cAAc,IAAI,iBAAiB,EACnC,qBAAqB,IAAI,wBAAwB,EACjD,iBAAiB,IAAI,oBAAoB,EACzC,qBAAqB,IAAI,wBAAwB,EACjD,gBAAgB,IAAI,mBAAmB,EACvC,eAAe,IAAI,kBAAkB,EACrC,aAAa,IAAI,gBAAgB,EACjC,gBAAgB,IAAI,mBAAmB,EACvC,sBAAsB,IAAI,yBAAyB,EACnD,WAAW,IAAI,cAAc,EAC7B,YAAY,IAAI,eAAe,EAC/B,aAAa,IAAI,gBAAgB,EACjC,YAAY,IAAI,eAAe,EAC/B,qBAAqB,EACrB,SAAS,IAAI,YAAY,EACzB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,kBAAkB,GACxB,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -29640,6 +29640,7 @@ var _Ex = "Expiry";
29640
29640
  var _F2 = "Fax";
29641
29641
  var _FC = "FilterCondition";
29642
29642
  var _FCi = "FilterConditions";
29643
+ var _FIAK = "FIAuthKey";
29643
29644
  var _FN = "FirstName";
29644
29645
  var _Fl2 = "Flags";
29645
29646
  var _GDD = "GetDomainDetail";
@@ -29713,6 +29714,9 @@ var _TTD = "TagsToDelete";
29713
29714
  var _Tl = "Tld";
29714
29715
  var _Ty = "Type";
29715
29716
  var _UD = "UpdatedDate";
29717
+ var _UDN = "UpdateDomainNameservers";
29718
+ var _UDNR = "UpdateDomainNameserversRequest";
29719
+ var _UDNRp = "UpdateDomainNameserversResponse";
29716
29720
  var _UTLD = "UnsupportedTLD";
29717
29721
  var _V2 = "Value";
29718
29722
  var _Va = "Values";
@@ -29803,6 +29807,7 @@ var ContactNumber = [0, n02, _CNo2, 8, 0];
29803
29807
  var CountryCode = [0, n02, _CC2, 8, 0];
29804
29808
  var Email = [0, n02, _E, 8, 0];
29805
29809
  var ExtraParamValue = [0, n02, _EPV, 8, 0];
29810
+ var FIAuthKey = [0, n02, _FIAK, 8, 0];
29806
29811
  var State = [0, n02, _S2, 8, 0];
29807
29812
  var ZipCode = [0, n02, _ZC, 8, 0];
29808
29813
  var CheckDomainAvailabilityRequest$ = [
@@ -29999,6 +30004,23 @@ var SortCondition$ = [
29999
30004
  [0, 0],
30000
30005
  2
30001
30006
  ];
30007
+ var UpdateDomainNameserversRequest$ = [
30008
+ 3,
30009
+ n02,
30010
+ _UDNR,
30011
+ 0,
30012
+ [_DN, _Na2, _FIAK],
30013
+ [0, () => NameserverList, [() => FIAuthKey, 0]],
30014
+ 2
30015
+ ];
30016
+ var UpdateDomainNameserversResponse$ = [
30017
+ 3,
30018
+ n02,
30019
+ _UDNRp,
30020
+ 0,
30021
+ [_OI],
30022
+ [0]
30023
+ ];
30002
30024
  var DnssecKeyList = [
30003
30025
  1,
30004
30026
  n02,
@@ -30098,6 +30120,14 @@ var RegisterDomain$ = [
30098
30120
  () => RegisterDomainRequest$,
30099
30121
  () => RegisterDomainResponse$
30100
30122
  ];
30123
+ var UpdateDomainNameservers$ = [
30124
+ 9,
30125
+ n02,
30126
+ _UDN,
30127
+ 0,
30128
+ () => UpdateDomainNameserversRequest$,
30129
+ () => UpdateDomainNameserversResponse$
30130
+ ];
30101
30131
 
30102
30132
  // node_modules/@aws-sdk/client-route-53-domains/dist-es/runtimeConfig.shared.js
30103
30133
  var getRuntimeConfig3 = (config) => {
@@ -30302,6 +30332,14 @@ class RegisterDomainCommand extends import_smithy_client23.Command.classBuilder(
30302
30332
  }).s("Route53Domains_v20140515", "RegisterDomain", {}).n("Route53DomainsClient", "RegisterDomainCommand").sc(RegisterDomain$).build() {
30303
30333
  }
30304
30334
 
30335
+ // node_modules/@aws-sdk/client-route-53-domains/dist-es/commands/UpdateDomainNameserversCommand.js
30336
+ var import_middleware_endpoint15 = __toESM(require_dist_cjs39(), 1);
30337
+ var import_smithy_client24 = __toESM(require_dist_cjs27(), 1);
30338
+ class UpdateDomainNameserversCommand extends import_smithy_client24.Command.classBuilder().ep(commonParams2).m(function(Command, cs, config, o3) {
30339
+ return [import_middleware_endpoint15.getEndpointPlugin(config, Command.getEndpointParameterInstructions())];
30340
+ }).s("Route53Domains_v20140515", "UpdateDomainNameservers", {}).n("Route53DomainsClient", "UpdateDomainNameserversCommand").sc(UpdateDomainNameservers$).build() {
30341
+ }
30342
+
30305
30343
  // src/lib/route53.ts
30306
30344
  function getConfig2() {
30307
30345
  return {
@@ -30401,6 +30439,17 @@ async function getDomainDetail(domain, config) {
30401
30439
  nameservers: (result.Nameservers ?? []).map((ns) => ns.Name ?? "").filter(Boolean)
30402
30440
  };
30403
30441
  }
30442
+ async function updateNameservers(domain, nameservers, config, client) {
30443
+ if (!nameservers.length) {
30444
+ throw new Error("updateNameservers requires at least one nameserver");
30445
+ }
30446
+ const domains = client ?? makeClients(config).domains;
30447
+ const result = await domains.send(new UpdateDomainNameserversCommand({
30448
+ DomainName: domain,
30449
+ Nameservers: nameservers.map((name) => ({ Name: name }))
30450
+ }));
30451
+ return { operationId: result.OperationId ?? "" };
30452
+ }
30404
30453
  async function listRegisteredDomains(config) {
30405
30454
  const { domains } = makeClients(config);
30406
30455
  const all = [];
@@ -31242,6 +31291,7 @@ export {
31242
31291
  recordDomainPurchase,
31243
31292
  upsertRecords as r53UpsertRecords,
31244
31293
  upsertRecord as r53UpsertRecord,
31294
+ updateNameservers as r53UpdateNameservers,
31245
31295
  registerDomain as r53RegisterDomain,
31246
31296
  listRegisteredDomains as r53ListRegisteredDomains,
31247
31297
  listRecords as r53ListRecords,
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Cloudflare delegation — the always-Cloudflare-DNS rule in one place.
3
+ *
4
+ * After a domain is registered with ANY registrar, DNS is managed in Cloudflare:
5
+ * create (or reuse) a Cloudflare zone, then point the registrar's nameservers at
6
+ * the zone's assigned Cloudflare nameservers.
7
+ *
8
+ * Dependency-injected so it is fully unit-testable; the CLI wires the real
9
+ * Cloudflare `createZone` and Route53 `updateNameservers`.
10
+ */
11
+ export interface DelegateDeps {
12
+ /** Create or reuse a Cloudflare zone; returns its id + assigned nameservers. */
13
+ createCloudflareZone: (domain: string) => Promise<{
14
+ id: string;
15
+ nameservers: string[];
16
+ }>;
17
+ /** Point the registrar's nameservers at the given set. */
18
+ updateNameservers: (domain: string, nameservers: string[]) => Promise<{
19
+ operationId: string;
20
+ }>;
21
+ }
22
+ export interface DelegateResult {
23
+ zoneId: string;
24
+ nameservers: string[];
25
+ operationId: string;
26
+ }
27
+ export declare function delegateDomainToCloudflare(domain: string, deps: DelegateDeps): Promise<DelegateResult>;
28
+ //# sourceMappingURL=delegate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegate.d.ts","sourceRoot":"","sources":["../../src/lib/delegate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,YAAY;IAC3B,gFAAgF;IAChF,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACzF,0DAA0D;IAC1D,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChG;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,cAAc,CAAC,CAOzB"}
@@ -85,6 +85,22 @@ export interface DomainDetail extends RegisteredDomain {
85
85
  nameservers: string[];
86
86
  }
87
87
  export declare function getDomainDetail(domain: string, config?: Route53Config): Promise<DomainDetail>;
88
+ /** Minimal Route53 Domains client surface — lets tests inject a fake `send`. */
89
+ type Route53DomainsSend = {
90
+ send: (cmd: unknown) => Promise<{
91
+ OperationId?: string;
92
+ }>;
93
+ };
94
+ /**
95
+ * Point a domain's nameservers at a new set (the Cloudflare zone NS).
96
+ *
97
+ * Enforces the always-Cloudflare-DNS rule: after a domain is registered with
98
+ * ANY registrar, delegate DNS to Cloudflare by calling this with the Cloudflare
99
+ * zone's nameservers. Returns the async operation id (poll getOperationDetail).
100
+ */
101
+ export declare function updateNameservers(domain: string, nameservers: string[], config?: Route53Config, client?: Route53DomainsSend): Promise<{
102
+ operationId: string;
103
+ }>;
88
104
  export declare function listRegisteredDomains(config?: Route53Config): Promise<RegisteredDomain[]>;
89
105
  export declare function createHostedZone(domain: string, comment?: string, config?: Route53Config): Promise<HostedZoneInfo>;
90
106
  export declare function listHostedZones(config?: Route53Config): Promise<HostedZoneInfo[]>;
@@ -98,4 +114,5 @@ export declare function upsertRecord(hostedZoneId: string, record: Route53Record
98
114
  export declare function deleteRecord(hostedZoneId: string, record: Route53RecordInput, config?: Route53Config): Promise<void>;
99
115
  export declare function upsertRecords(hostedZoneId: string, records: Route53RecordInput[], config?: Route53Config): Promise<void>;
100
116
  export declare function createRoute53Provider(config?: Route53Config): FullProvider;
117
+ export {};
101
118
  //# sourceMappingURL=route53.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route53.d.ts","sourceRoot":"","sources":["../../src/lib/route53.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route53.d.ts","sourceRoot":"","sources":["../../src/lib/route53.ts"],"names":[],"mappings":"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"}
package/dist/mcp/index.js CHANGED
@@ -30795,6 +30795,7 @@ var exports_route53 = {};
30795
30795
  __export(exports_route53, {
30796
30796
  upsertRecords: () => upsertRecords,
30797
30797
  upsertRecord: () => upsertRecord,
30798
+ updateNameservers: () => updateNameservers,
30798
30799
  registerDomain: () => registerDomain,
30799
30800
  listRegisteredDomains: () => listRegisteredDomains,
30800
30801
  listRecords: () => listRecords,
@@ -30908,6 +30909,17 @@ async function getDomainDetail(domain, config) {
30908
30909
  nameservers: (result.Nameservers ?? []).map((ns) => ns.Name ?? "").filter(Boolean)
30909
30910
  };
30910
30911
  }
30912
+ async function updateNameservers(domain, nameservers, config, client) {
30913
+ if (!nameservers.length) {
30914
+ throw new Error("updateNameservers requires at least one nameserver");
30915
+ }
30916
+ const domains = client ?? makeClients(config).domains;
30917
+ const result = await domains.send(new UpdateDomainNameserversCommand({
30918
+ DomainName: domain,
30919
+ Nameservers: nameservers.map((name) => ({ Name: name }))
30920
+ }));
30921
+ return { operationId: result.OperationId ?? "" };
30922
+ }
30911
30923
  async function listRegisteredDomains(config) {
30912
30924
  const { domains } = makeClients(config);
30913
30925
  const all = [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hasna/domains",
3
- "version": "0.0.11",
3
+ "version": "0.0.13",
4
4
  "description": "Domain portfolio and DNS management for AI agents — CLI + MCP server with SQLite",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",