@aoxborrow/registrar-client 0.1.0 → 0.3.0
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/README.md +4 -2
- package/dist/index.cjs +27 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +16 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +27 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
- package/src/client.ts +4 -2
- package/src/registrar.ts +6 -0
- package/src/registrars/cloudflare.ts +1 -0
- package/src/registrars/dynadot.ts +5 -0
- package/src/registrars/gandi.ts +1 -0
- package/src/registrars/godaddy.ts +5 -0
- package/src/registrars/namebright.ts +1 -0
- package/src/registrars/namecheap.ts +1 -0
- package/src/registrars/namesilo.ts +5 -0
- package/src/registrars/porkbun.ts +1 -0
- package/src/registrars/spaceship.ts +5 -0
- package/src/types.ts +11 -2
package/dist/index.d.cts
CHANGED
|
@@ -181,6 +181,7 @@ interface Registrar {
|
|
|
181
181
|
readonly name: string;
|
|
182
182
|
readonly environment: RegistrarEnvironment;
|
|
183
183
|
readonly features: readonly RegistrarFeature[];
|
|
184
|
+
readonly requiresNameserversFetch: boolean;
|
|
184
185
|
supports(feature: RegistrarFeature): boolean;
|
|
185
186
|
testConnection(opts?: RequestOptions): Promise<ConnectionResult>;
|
|
186
187
|
listDomains(opts?: ListDomainsOptions): Promise<Domain[]>;
|
|
@@ -211,6 +212,7 @@ interface Registrar {
|
|
|
211
212
|
interface RegistrarConstructor {
|
|
212
213
|
new (credentials: RegistrarCredentials, options?: RegistrarOptions): Registrar;
|
|
213
214
|
readonly displayName: string;
|
|
215
|
+
readonly website: string;
|
|
214
216
|
readonly configFields: ConfigField[];
|
|
215
217
|
readonly helpText: string;
|
|
216
218
|
readonly supportsSandbox: boolean;
|
|
@@ -360,6 +362,7 @@ declare abstract class BaseRegistrar implements Registrar {
|
|
|
360
362
|
static get features(): readonly RegistrarFeature[];
|
|
361
363
|
get features(): readonly RegistrarFeature[];
|
|
362
364
|
supports(feature: RegistrarFeature): boolean;
|
|
365
|
+
readonly requiresNameserversFetch: boolean;
|
|
363
366
|
constructor(credentials: RegistrarCredentials, httpConfig: Omit<HttpClientConfig, 'options'>, options?: RegistrarOptions);
|
|
364
367
|
testConnection(_opts?: RequestOptions): Promise<ConnectionResult>;
|
|
365
368
|
listDomains(_opts?: ListDomainsOptions): Promise<Domain[]>;
|
|
@@ -392,6 +395,7 @@ declare abstract class BaseRegistrar implements Registrar {
|
|
|
392
395
|
declare class CloudflareRegistrar extends BaseRegistrar {
|
|
393
396
|
readonly name = "cloudflare";
|
|
394
397
|
static readonly displayName = "Cloudflare";
|
|
398
|
+
static readonly website = "cloudflare.com";
|
|
395
399
|
static readonly helpText: string;
|
|
396
400
|
static readonly configFields: ConfigField[];
|
|
397
401
|
static readonly supportsSandbox = false;
|
|
@@ -435,6 +439,7 @@ declare class CloudflareRegistrar extends BaseRegistrar {
|
|
|
435
439
|
declare class DynadotRegistrar extends BaseRegistrar {
|
|
436
440
|
readonly name = "dynadot";
|
|
437
441
|
static readonly displayName = "Dynadot";
|
|
442
|
+
static readonly website = "dynadot.com";
|
|
438
443
|
static readonly helpText: string;
|
|
439
444
|
static readonly configFields: ConfigField[];
|
|
440
445
|
static readonly supportsSandbox = true;
|
|
@@ -447,6 +452,7 @@ declare class DynadotRegistrar extends BaseRegistrar {
|
|
|
447
452
|
listDomains(opts?: ListDomainsOptions): Promise<Domain[]>;
|
|
448
453
|
getDomain(domainName: string, opts?: RequestOptions): Promise<Domain>;
|
|
449
454
|
private domainInfo;
|
|
455
|
+
readonly requiresNameserversFetch = false;
|
|
450
456
|
getNameservers(domainName: string, opts?: RequestOptions): Promise<string[]>;
|
|
451
457
|
getContacts(domainName: string, opts?: RequestOptions): Promise<ContactSet>;
|
|
452
458
|
getDnsRecords(domainName: string, opts?: RequestOptions): Promise<DnsRecord[]>;
|
|
@@ -477,6 +483,7 @@ declare class DynadotRegistrar extends BaseRegistrar {
|
|
|
477
483
|
declare class GandiRegistrar extends BaseRegistrar {
|
|
478
484
|
readonly name = "gandi";
|
|
479
485
|
static readonly displayName = "Gandi.net";
|
|
486
|
+
static readonly website = "gandi.net";
|
|
480
487
|
static readonly helpText: string;
|
|
481
488
|
static readonly configFields: ConfigField[];
|
|
482
489
|
static readonly supportsSandbox = true;
|
|
@@ -514,6 +521,7 @@ declare class GandiRegistrar extends BaseRegistrar {
|
|
|
514
521
|
declare class GoDaddyRegistrar extends BaseRegistrar {
|
|
515
522
|
readonly name = "godaddy";
|
|
516
523
|
static readonly displayName = "GoDaddy";
|
|
524
|
+
static readonly website = "godaddy.com";
|
|
517
525
|
static readonly helpText: string;
|
|
518
526
|
static readonly configFields: ConfigField[];
|
|
519
527
|
static readonly supportsSandbox = true;
|
|
@@ -527,6 +535,7 @@ declare class GoDaddyRegistrar extends BaseRegistrar {
|
|
|
527
535
|
private listDomainsV3;
|
|
528
536
|
private listDomainsV1;
|
|
529
537
|
getDomain(domainName: string, opts?: RequestOptions): Promise<Domain>;
|
|
538
|
+
readonly requiresNameserversFetch = false;
|
|
530
539
|
getNameservers(domainName: string, opts?: RequestOptions): Promise<string[]>;
|
|
531
540
|
checkAvailability(domainNames: string[], opts?: RequestOptions): Promise<DomainAvailability[]>;
|
|
532
541
|
getPricing(tldOrDomain: string, opts?: RequestOptions): Promise<TldPricing>;
|
|
@@ -560,6 +569,7 @@ declare class GoDaddyRegistrar extends BaseRegistrar {
|
|
|
560
569
|
declare class NameBrightRegistrar extends BaseRegistrar {
|
|
561
570
|
readonly name = "namebright";
|
|
562
571
|
static readonly displayName = "NameBright";
|
|
572
|
+
static readonly website = "namebright.com";
|
|
563
573
|
static readonly helpText: string;
|
|
564
574
|
static readonly configFields: ConfigField[];
|
|
565
575
|
static readonly supportsSandbox = false;
|
|
@@ -594,6 +604,7 @@ declare class NameBrightRegistrar extends BaseRegistrar {
|
|
|
594
604
|
declare class NamecheapRegistrar extends BaseRegistrar {
|
|
595
605
|
readonly name = "namecheap";
|
|
596
606
|
static readonly displayName = "Namecheap";
|
|
607
|
+
static readonly website = "namecheap.com";
|
|
597
608
|
static readonly helpText: string;
|
|
598
609
|
static readonly configFields: ConfigField[];
|
|
599
610
|
static readonly supportsSandbox = true;
|
|
@@ -630,6 +641,7 @@ declare class NamecheapRegistrar extends BaseRegistrar {
|
|
|
630
641
|
declare class NameSiloRegistrar extends BaseRegistrar {
|
|
631
642
|
readonly name = "namesilo";
|
|
632
643
|
static readonly displayName = "NameSilo";
|
|
644
|
+
static readonly website = "namesilo.com";
|
|
633
645
|
static readonly helpText: string;
|
|
634
646
|
static readonly configFields: ConfigField[];
|
|
635
647
|
static readonly supportsSandbox = true;
|
|
@@ -639,6 +651,7 @@ declare class NameSiloRegistrar extends BaseRegistrar {
|
|
|
639
651
|
testConnection(opts?: RequestOptions): Promise<ConnectionResult>;
|
|
640
652
|
listDomains(opts?: ListDomainsOptions): Promise<Domain[]>;
|
|
641
653
|
getDomain(domainName: string, opts?: RequestOptions): Promise<Domain>;
|
|
654
|
+
readonly requiresNameserversFetch = false;
|
|
642
655
|
getNameservers(domainName: string, opts?: RequestOptions): Promise<string[]>;
|
|
643
656
|
getContacts(domainName: string, opts?: RequestOptions): Promise<ContactSet>;
|
|
644
657
|
getDnsRecords(domainName: string, opts?: RequestOptions): Promise<DnsRecord[]>;
|
|
@@ -666,6 +679,7 @@ declare class NameSiloRegistrar extends BaseRegistrar {
|
|
|
666
679
|
declare class PorkbunRegistrar extends BaseRegistrar {
|
|
667
680
|
readonly name = "porkbun";
|
|
668
681
|
static readonly displayName = "Porkbun";
|
|
682
|
+
static readonly website = "porkbun.com";
|
|
669
683
|
static readonly helpText: string;
|
|
670
684
|
static readonly configFields: ConfigField[];
|
|
671
685
|
static readonly supportsSandbox = true;
|
|
@@ -698,6 +712,7 @@ declare class PorkbunRegistrar extends BaseRegistrar {
|
|
|
698
712
|
declare class SpaceshipRegistrar extends BaseRegistrar {
|
|
699
713
|
readonly name = "spaceship";
|
|
700
714
|
static readonly displayName = "Spaceship";
|
|
715
|
+
static readonly website = "spaceship.com";
|
|
701
716
|
static readonly helpText: string;
|
|
702
717
|
static readonly configFields: ConfigField[];
|
|
703
718
|
static readonly supportsSandbox = false;
|
|
@@ -706,6 +721,7 @@ declare class SpaceshipRegistrar extends BaseRegistrar {
|
|
|
706
721
|
testConnection(opts?: RequestOptions): Promise<ConnectionResult>;
|
|
707
722
|
listDomains(opts?: ListDomainsOptions): Promise<Domain[]>;
|
|
708
723
|
getDomain(domainName: string, opts?: RequestOptions): Promise<Domain>;
|
|
724
|
+
readonly requiresNameserversFetch = false;
|
|
709
725
|
getNameservers(domainName: string, opts?: RequestOptions): Promise<string[]>;
|
|
710
726
|
getAuthCode(domainName: string, opts?: RequestOptions): Promise<string>;
|
|
711
727
|
checkAvailability(domainNames: string[], opts?: RequestOptions): Promise<DomainAvailability[]>;
|
package/dist/index.d.ts
CHANGED
|
@@ -181,6 +181,7 @@ interface Registrar {
|
|
|
181
181
|
readonly name: string;
|
|
182
182
|
readonly environment: RegistrarEnvironment;
|
|
183
183
|
readonly features: readonly RegistrarFeature[];
|
|
184
|
+
readonly requiresNameserversFetch: boolean;
|
|
184
185
|
supports(feature: RegistrarFeature): boolean;
|
|
185
186
|
testConnection(opts?: RequestOptions): Promise<ConnectionResult>;
|
|
186
187
|
listDomains(opts?: ListDomainsOptions): Promise<Domain[]>;
|
|
@@ -211,6 +212,7 @@ interface Registrar {
|
|
|
211
212
|
interface RegistrarConstructor {
|
|
212
213
|
new (credentials: RegistrarCredentials, options?: RegistrarOptions): Registrar;
|
|
213
214
|
readonly displayName: string;
|
|
215
|
+
readonly website: string;
|
|
214
216
|
readonly configFields: ConfigField[];
|
|
215
217
|
readonly helpText: string;
|
|
216
218
|
readonly supportsSandbox: boolean;
|
|
@@ -360,6 +362,7 @@ declare abstract class BaseRegistrar implements Registrar {
|
|
|
360
362
|
static get features(): readonly RegistrarFeature[];
|
|
361
363
|
get features(): readonly RegistrarFeature[];
|
|
362
364
|
supports(feature: RegistrarFeature): boolean;
|
|
365
|
+
readonly requiresNameserversFetch: boolean;
|
|
363
366
|
constructor(credentials: RegistrarCredentials, httpConfig: Omit<HttpClientConfig, 'options'>, options?: RegistrarOptions);
|
|
364
367
|
testConnection(_opts?: RequestOptions): Promise<ConnectionResult>;
|
|
365
368
|
listDomains(_opts?: ListDomainsOptions): Promise<Domain[]>;
|
|
@@ -392,6 +395,7 @@ declare abstract class BaseRegistrar implements Registrar {
|
|
|
392
395
|
declare class CloudflareRegistrar extends BaseRegistrar {
|
|
393
396
|
readonly name = "cloudflare";
|
|
394
397
|
static readonly displayName = "Cloudflare";
|
|
398
|
+
static readonly website = "cloudflare.com";
|
|
395
399
|
static readonly helpText: string;
|
|
396
400
|
static readonly configFields: ConfigField[];
|
|
397
401
|
static readonly supportsSandbox = false;
|
|
@@ -435,6 +439,7 @@ declare class CloudflareRegistrar extends BaseRegistrar {
|
|
|
435
439
|
declare class DynadotRegistrar extends BaseRegistrar {
|
|
436
440
|
readonly name = "dynadot";
|
|
437
441
|
static readonly displayName = "Dynadot";
|
|
442
|
+
static readonly website = "dynadot.com";
|
|
438
443
|
static readonly helpText: string;
|
|
439
444
|
static readonly configFields: ConfigField[];
|
|
440
445
|
static readonly supportsSandbox = true;
|
|
@@ -447,6 +452,7 @@ declare class DynadotRegistrar extends BaseRegistrar {
|
|
|
447
452
|
listDomains(opts?: ListDomainsOptions): Promise<Domain[]>;
|
|
448
453
|
getDomain(domainName: string, opts?: RequestOptions): Promise<Domain>;
|
|
449
454
|
private domainInfo;
|
|
455
|
+
readonly requiresNameserversFetch = false;
|
|
450
456
|
getNameservers(domainName: string, opts?: RequestOptions): Promise<string[]>;
|
|
451
457
|
getContacts(domainName: string, opts?: RequestOptions): Promise<ContactSet>;
|
|
452
458
|
getDnsRecords(domainName: string, opts?: RequestOptions): Promise<DnsRecord[]>;
|
|
@@ -477,6 +483,7 @@ declare class DynadotRegistrar extends BaseRegistrar {
|
|
|
477
483
|
declare class GandiRegistrar extends BaseRegistrar {
|
|
478
484
|
readonly name = "gandi";
|
|
479
485
|
static readonly displayName = "Gandi.net";
|
|
486
|
+
static readonly website = "gandi.net";
|
|
480
487
|
static readonly helpText: string;
|
|
481
488
|
static readonly configFields: ConfigField[];
|
|
482
489
|
static readonly supportsSandbox = true;
|
|
@@ -514,6 +521,7 @@ declare class GandiRegistrar extends BaseRegistrar {
|
|
|
514
521
|
declare class GoDaddyRegistrar extends BaseRegistrar {
|
|
515
522
|
readonly name = "godaddy";
|
|
516
523
|
static readonly displayName = "GoDaddy";
|
|
524
|
+
static readonly website = "godaddy.com";
|
|
517
525
|
static readonly helpText: string;
|
|
518
526
|
static readonly configFields: ConfigField[];
|
|
519
527
|
static readonly supportsSandbox = true;
|
|
@@ -527,6 +535,7 @@ declare class GoDaddyRegistrar extends BaseRegistrar {
|
|
|
527
535
|
private listDomainsV3;
|
|
528
536
|
private listDomainsV1;
|
|
529
537
|
getDomain(domainName: string, opts?: RequestOptions): Promise<Domain>;
|
|
538
|
+
readonly requiresNameserversFetch = false;
|
|
530
539
|
getNameservers(domainName: string, opts?: RequestOptions): Promise<string[]>;
|
|
531
540
|
checkAvailability(domainNames: string[], opts?: RequestOptions): Promise<DomainAvailability[]>;
|
|
532
541
|
getPricing(tldOrDomain: string, opts?: RequestOptions): Promise<TldPricing>;
|
|
@@ -560,6 +569,7 @@ declare class GoDaddyRegistrar extends BaseRegistrar {
|
|
|
560
569
|
declare class NameBrightRegistrar extends BaseRegistrar {
|
|
561
570
|
readonly name = "namebright";
|
|
562
571
|
static readonly displayName = "NameBright";
|
|
572
|
+
static readonly website = "namebright.com";
|
|
563
573
|
static readonly helpText: string;
|
|
564
574
|
static readonly configFields: ConfigField[];
|
|
565
575
|
static readonly supportsSandbox = false;
|
|
@@ -594,6 +604,7 @@ declare class NameBrightRegistrar extends BaseRegistrar {
|
|
|
594
604
|
declare class NamecheapRegistrar extends BaseRegistrar {
|
|
595
605
|
readonly name = "namecheap";
|
|
596
606
|
static readonly displayName = "Namecheap";
|
|
607
|
+
static readonly website = "namecheap.com";
|
|
597
608
|
static readonly helpText: string;
|
|
598
609
|
static readonly configFields: ConfigField[];
|
|
599
610
|
static readonly supportsSandbox = true;
|
|
@@ -630,6 +641,7 @@ declare class NamecheapRegistrar extends BaseRegistrar {
|
|
|
630
641
|
declare class NameSiloRegistrar extends BaseRegistrar {
|
|
631
642
|
readonly name = "namesilo";
|
|
632
643
|
static readonly displayName = "NameSilo";
|
|
644
|
+
static readonly website = "namesilo.com";
|
|
633
645
|
static readonly helpText: string;
|
|
634
646
|
static readonly configFields: ConfigField[];
|
|
635
647
|
static readonly supportsSandbox = true;
|
|
@@ -639,6 +651,7 @@ declare class NameSiloRegistrar extends BaseRegistrar {
|
|
|
639
651
|
testConnection(opts?: RequestOptions): Promise<ConnectionResult>;
|
|
640
652
|
listDomains(opts?: ListDomainsOptions): Promise<Domain[]>;
|
|
641
653
|
getDomain(domainName: string, opts?: RequestOptions): Promise<Domain>;
|
|
654
|
+
readonly requiresNameserversFetch = false;
|
|
642
655
|
getNameservers(domainName: string, opts?: RequestOptions): Promise<string[]>;
|
|
643
656
|
getContacts(domainName: string, opts?: RequestOptions): Promise<ContactSet>;
|
|
644
657
|
getDnsRecords(domainName: string, opts?: RequestOptions): Promise<DnsRecord[]>;
|
|
@@ -666,6 +679,7 @@ declare class NameSiloRegistrar extends BaseRegistrar {
|
|
|
666
679
|
declare class PorkbunRegistrar extends BaseRegistrar {
|
|
667
680
|
readonly name = "porkbun";
|
|
668
681
|
static readonly displayName = "Porkbun";
|
|
682
|
+
static readonly website = "porkbun.com";
|
|
669
683
|
static readonly helpText: string;
|
|
670
684
|
static readonly configFields: ConfigField[];
|
|
671
685
|
static readonly supportsSandbox = true;
|
|
@@ -698,6 +712,7 @@ declare class PorkbunRegistrar extends BaseRegistrar {
|
|
|
698
712
|
declare class SpaceshipRegistrar extends BaseRegistrar {
|
|
699
713
|
readonly name = "spaceship";
|
|
700
714
|
static readonly displayName = "Spaceship";
|
|
715
|
+
static readonly website = "spaceship.com";
|
|
701
716
|
static readonly helpText: string;
|
|
702
717
|
static readonly configFields: ConfigField[];
|
|
703
718
|
static readonly supportsSandbox = false;
|
|
@@ -706,6 +721,7 @@ declare class SpaceshipRegistrar extends BaseRegistrar {
|
|
|
706
721
|
testConnection(opts?: RequestOptions): Promise<ConnectionResult>;
|
|
707
722
|
listDomains(opts?: ListDomainsOptions): Promise<Domain[]>;
|
|
708
723
|
getDomain(domainName: string, opts?: RequestOptions): Promise<Domain>;
|
|
724
|
+
readonly requiresNameserversFetch = false;
|
|
709
725
|
getNameservers(domainName: string, opts?: RequestOptions): Promise<string[]>;
|
|
710
726
|
getAuthCode(domainName: string, opts?: RequestOptions): Promise<string>;
|
|
711
727
|
checkAvailability(domainNames: string[], opts?: RequestOptions): Promise<DomainAvailability[]>;
|
package/dist/index.js
CHANGED
|
@@ -256,7 +256,7 @@ var RegistrarClient = class {
|
|
|
256
256
|
try {
|
|
257
257
|
const detail = await this.provider.getDomain(name, opts);
|
|
258
258
|
let merged = { ...domains[index], ...detail };
|
|
259
|
-
if (merged.nameservers.length === 0) {
|
|
259
|
+
if (merged.nameservers.length === 0 && this.provider.requiresNameserversFetch) {
|
|
260
260
|
try {
|
|
261
261
|
const nameservers = normalizeNameservers(
|
|
262
262
|
await this.provider.getNameservers(name, opts)
|
|
@@ -644,6 +644,11 @@ var BaseRegistrar = class {
|
|
|
644
644
|
supports(feature) {
|
|
645
645
|
return this.features.includes(feature);
|
|
646
646
|
}
|
|
647
|
+
// See Registrar.requiresNameserversFetch. Defaults true, so a provider
|
|
648
|
+
// whose getNameservers hits a real endpoint keeps the enrichment fallback
|
|
649
|
+
// without opting in; the providers whose getNameservers just re-reads getDomain
|
|
650
|
+
// override this to false to drop the redundant call.
|
|
651
|
+
requiresNameserversFetch = true;
|
|
647
652
|
constructor(credentials, httpConfig, options) {
|
|
648
653
|
const { environment = "production", ...clientOptions } = options ?? {};
|
|
649
654
|
this.credentials = credentials;
|
|
@@ -741,6 +746,7 @@ var BaseRegistrar = class {
|
|
|
741
746
|
var CloudflareRegistrar = class _CloudflareRegistrar extends BaseRegistrar {
|
|
742
747
|
name = "cloudflare";
|
|
743
748
|
static displayName = "Cloudflare";
|
|
749
|
+
static website = "cloudflare.com";
|
|
744
750
|
static helpText = 'Create an API token in your Cloudflare dashboard under My Profile > API Tokens. The token needs "Account.Registrar" read/write permissions. Find your Account ID in the URL or on the Overview page of any zone.';
|
|
745
751
|
static configFields = [
|
|
746
752
|
{ name: "apiToken", label: "API Token", type: "password", required: true },
|
|
@@ -1597,6 +1603,7 @@ var SUPPORTED_DNS_TYPES = /* @__PURE__ */ new Set(["A", "AAAA", "CNAME", "MX", "
|
|
|
1597
1603
|
var DynadotRegistrar = class extends BaseRegistrar {
|
|
1598
1604
|
name = "dynadot";
|
|
1599
1605
|
static displayName = "Dynadot";
|
|
1606
|
+
static website = "dynadot.com";
|
|
1600
1607
|
static helpText = "Under Tools > API in your Dynadot account, generate an API Key and API Secret. The account must be unlocked with API access enabled. The key identifies you; the secret signs requests (X-Signature) and is never sent directly.";
|
|
1601
1608
|
static configFields = [
|
|
1602
1609
|
{ name: "apiKey", label: "API Key", type: "password", required: true },
|
|
@@ -1712,6 +1719,9 @@ ${bodyStr}`;
|
|
|
1712
1719
|
if (!data.domain_info) throw new NotFoundError(`Dynadot: domain '${domainName}' not found`);
|
|
1713
1720
|
return data.domain_info;
|
|
1714
1721
|
}
|
|
1722
|
+
// getNameservers re-reads getDomain (domain_info carries NS inline; no separate
|
|
1723
|
+
// endpoint), so listing enrichment gains nothing from the fallback — skip it.
|
|
1724
|
+
requiresNameserversFetch = false;
|
|
1715
1725
|
async getNameservers(domainName, opts) {
|
|
1716
1726
|
const domain = await this.getDomain(domainName, opts);
|
|
1717
1727
|
return domain.nameservers;
|
|
@@ -2344,6 +2354,7 @@ var GANDI_TYPE_TO_FORWARD = {
|
|
|
2344
2354
|
var GandiRegistrar = class extends BaseRegistrar {
|
|
2345
2355
|
name = "gandi";
|
|
2346
2356
|
static displayName = "Gandi.net";
|
|
2357
|
+
static website = "gandi.net";
|
|
2347
2358
|
static helpText = "Generate a Personal Access Token (PAT) in your Gandi account under Account Settings > Security. The token needs permission to manage domains. (Gandi has deprecated the legacy API Key; use a PAT.)";
|
|
2348
2359
|
static configFields = [
|
|
2349
2360
|
{ name: "apiKey", label: "Personal Access Token", type: "password", required: true }
|
|
@@ -3030,6 +3041,7 @@ var PRICE_MICRO_UNITS = 1e6;
|
|
|
3030
3041
|
var GoDaddyRegistrar = class _GoDaddyRegistrar extends BaseRegistrar {
|
|
3031
3042
|
name = "godaddy";
|
|
3032
3043
|
static displayName = "GoDaddy";
|
|
3044
|
+
static website = "godaddy.com";
|
|
3033
3045
|
static helpText = 'Authenticate one of two ways. For production, create a Personal Access Token (PAT) at https://developer.godaddy.com and pass it as `apiToken` \u2014 this enables the modern v3 API. For sandbox testing, create OTE (test environment) keys and pass `apiKey` + `apiSecret` with { environment: "sandbox" }; OTE only exposes the legacy v1 API. The sso-key (API Key/Secret) scheme is deprecated by GoDaddy in 2026. Domain forwarding uses the v2 customer-scoped API \u2014 set `customerId` to your GoDaddy customer UUID, or to your numeric shopper/account ID (which the client resolves to the UUID via an sso-key-authenticated lookup).';
|
|
3034
3046
|
static configFields = [
|
|
3035
3047
|
{ name: "apiToken", label: "API Token (PAT)", type: "password", required: false },
|
|
@@ -3153,6 +3165,9 @@ var GoDaddyRegistrar = class _GoDaddyRegistrar extends BaseRegistrar {
|
|
|
3153
3165
|
});
|
|
3154
3166
|
return this.toDomain(d);
|
|
3155
3167
|
}
|
|
3168
|
+
// getNameservers re-reads getDomain (GoDaddy has no dedicated NS endpoint), so
|
|
3169
|
+
// listing enrichment gains nothing from the fallback — skip it.
|
|
3170
|
+
requiresNameserversFetch = false;
|
|
3156
3171
|
async getNameservers(domainName, opts) {
|
|
3157
3172
|
const domain = await this.getDomain(domainName, opts);
|
|
3158
3173
|
return domain.nameservers;
|
|
@@ -3894,6 +3909,7 @@ var TOKEN_URL = "https://api.namebright.com/auth/token";
|
|
|
3894
3909
|
var NameBrightRegistrar = class extends BaseRegistrar {
|
|
3895
3910
|
name = "namebright";
|
|
3896
3911
|
static displayName = "NameBright";
|
|
3912
|
+
static website = "namebright.com";
|
|
3897
3913
|
static helpText = 'API access is not enabled by default \u2014 you must request it from NameBright (contact support / your account manager) before the API Management page is available. Once enabled, create an API Application under my.namebright.com > My Account > API Management. The Client ID is "<accountName>:<applicationName>"; NameBright issues the Client Secret. Note the application also enforces an IP whitelist.';
|
|
3898
3914
|
static configFields = [
|
|
3899
3915
|
{ name: "clientId", label: "Client ID", type: "text", required: true },
|
|
@@ -4384,6 +4400,7 @@ var NC_CONTACT_ROLES = [
|
|
|
4384
4400
|
var NamecheapRegistrar = class extends BaseRegistrar {
|
|
4385
4401
|
name = "namecheap";
|
|
4386
4402
|
static displayName = "Namecheap";
|
|
4403
|
+
static website = "namecheap.com";
|
|
4387
4404
|
static helpText = "Enable API access in your Namecheap account under Profile > Tools > API Access, generate an API key, and whitelist your request IP(s) in the API settings. Provide the whitelisted IP as the Client IP field.";
|
|
4388
4405
|
static configFields = [
|
|
4389
4406
|
{ name: "username", label: "Username", type: "text", required: true },
|
|
@@ -4941,6 +4958,7 @@ function toNcContactParams(prefix, c) {
|
|
|
4941
4958
|
var NameSiloRegistrar = class extends BaseRegistrar {
|
|
4942
4959
|
name = "namesilo";
|
|
4943
4960
|
static displayName = "NameSilo";
|
|
4961
|
+
static website = "namesilo.com";
|
|
4944
4962
|
static helpText = 'Generate an API key in your NameSilo account under Account Options > API Manager. You can optionally restrict the key to specific IP addresses there. For sandbox testing, use { environment: "sandbox" } (OTE host ote.namesilo.com) \u2014 OTE credentials are not self-service; you must contact NameSilo support to be issued them.';
|
|
4945
4963
|
static configFields = [
|
|
4946
4964
|
{ name: "apiKey", label: "API Key", type: "password", required: true }
|
|
@@ -5051,6 +5069,9 @@ var NameSiloRegistrar = class extends BaseRegistrar {
|
|
|
5051
5069
|
nameservers: extractNsHosts(r.nameservers)
|
|
5052
5070
|
});
|
|
5053
5071
|
}
|
|
5072
|
+
// getNameservers re-reads getDomain (getDomainInfo carries NS; no separate
|
|
5073
|
+
// endpoint), so listing enrichment gains nothing from the fallback — skip it.
|
|
5074
|
+
requiresNameserversFetch = false;
|
|
5054
5075
|
async getNameservers(domainName, opts) {
|
|
5055
5076
|
const domain = await this.getDomain(domainName, opts);
|
|
5056
5077
|
return domain.nameservers;
|
|
@@ -5622,6 +5643,7 @@ var PB_TYPE_TO_FORWARD = {
|
|
|
5622
5643
|
var PorkbunRegistrar = class extends BaseRegistrar {
|
|
5623
5644
|
name = "porkbun";
|
|
5624
5645
|
static displayName = "Porkbun";
|
|
5646
|
+
static website = "porkbun.com";
|
|
5625
5647
|
static helpText = 'Create an API key and secret in your Porkbun account under Account > API Access, then enable "API Access" on each domain you want to manage (per-domain toggle in the domain details). For testing, use a sandbox key (prefixed "pk1_sb_") with { environment: "sandbox" } \u2014 it hits the same base URL but an isolated test environment with $1,000 of fake credit and no real charges (top up or reset via POST /sandbox/topup and POST /sandbox/reset).';
|
|
5626
5648
|
static configFields = [
|
|
5627
5649
|
{ name: "apiKey", label: "API Key", type: "password", required: true },
|
|
@@ -6228,6 +6250,7 @@ var WRITABLE_DNS_TYPES = /* @__PURE__ */ new Set(["A", "AAAA", "CNAME", "NS", "T
|
|
|
6228
6250
|
var SpaceshipRegistrar = class extends BaseRegistrar {
|
|
6229
6251
|
name = "spaceship";
|
|
6230
6252
|
static displayName = "Spaceship";
|
|
6253
|
+
static website = "spaceship.com";
|
|
6231
6254
|
static helpText = 'Generate your API key and secret in the API Manager at Spaceship using the "New API key" button. The API requires both X-API-Key and X-API-Secret headers.';
|
|
6232
6255
|
static configFields = [
|
|
6233
6256
|
{ name: "apiKey", label: "API Key", type: "password", required: true },
|
|
@@ -6290,6 +6313,9 @@ var SpaceshipRegistrar = class extends BaseRegistrar {
|
|
|
6290
6313
|
async getDomain(domainName, opts) {
|
|
6291
6314
|
return this.toDomain(await this.getRaw(domainName, opts));
|
|
6292
6315
|
}
|
|
6316
|
+
// getNameservers reads the same getRaw payload as getDomain (no dedicated NS
|
|
6317
|
+
// endpoint), so listing enrichment gains nothing from the fallback — skip it.
|
|
6318
|
+
requiresNameserversFetch = false;
|
|
6293
6319
|
async getNameservers(domainName, opts) {
|
|
6294
6320
|
const d = await this.getRaw(domainName, opts);
|
|
6295
6321
|
return d.nameservers?.hosts ?? [];
|