domain-search-mcp 1.0.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/.env.example +52 -0
- package/Dockerfile +15 -0
- package/LICENSE +21 -0
- package/README.md +426 -0
- package/SECURITY.md +252 -0
- package/dist/config.d.ts +25 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +117 -0
- package/dist/config.js.map +1 -0
- package/dist/fallbacks/index.d.ts +6 -0
- package/dist/fallbacks/index.d.ts.map +1 -0
- package/dist/fallbacks/index.js +14 -0
- package/dist/fallbacks/index.js.map +1 -0
- package/dist/fallbacks/rdap.d.ts +18 -0
- package/dist/fallbacks/rdap.d.ts.map +1 -0
- package/dist/fallbacks/rdap.js +339 -0
- package/dist/fallbacks/rdap.js.map +1 -0
- package/dist/fallbacks/whois.d.ts +27 -0
- package/dist/fallbacks/whois.d.ts.map +1 -0
- package/dist/fallbacks/whois.js +219 -0
- package/dist/fallbacks/whois.js.map +1 -0
- package/dist/registrars/base.d.ts +89 -0
- package/dist/registrars/base.d.ts.map +1 -0
- package/dist/registrars/base.js +203 -0
- package/dist/registrars/base.js.map +1 -0
- package/dist/registrars/index.d.ts +7 -0
- package/dist/registrars/index.d.ts.map +1 -0
- package/dist/registrars/index.js +15 -0
- package/dist/registrars/index.js.map +1 -0
- package/dist/registrars/namecheap.d.ts +69 -0
- package/dist/registrars/namecheap.d.ts.map +1 -0
- package/dist/registrars/namecheap.js +307 -0
- package/dist/registrars/namecheap.js.map +1 -0
- package/dist/registrars/porkbun.d.ts +63 -0
- package/dist/registrars/porkbun.d.ts.map +1 -0
- package/dist/registrars/porkbun.js +299 -0
- package/dist/registrars/porkbun.js.map +1 -0
- package/dist/server.d.ts +19 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +209 -0
- package/dist/server.js.map +1 -0
- package/dist/services/domain-search.d.ts +40 -0
- package/dist/services/domain-search.d.ts.map +1 -0
- package/dist/services/domain-search.js +438 -0
- package/dist/services/domain-search.js.map +1 -0
- package/dist/services/index.d.ts +5 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +11 -0
- package/dist/services/index.js.map +1 -0
- package/dist/tools/bulk_search.d.ts +72 -0
- package/dist/tools/bulk_search.d.ts.map +1 -0
- package/dist/tools/bulk_search.js +108 -0
- package/dist/tools/bulk_search.js.map +1 -0
- package/dist/tools/check_socials.d.ts +71 -0
- package/dist/tools/check_socials.d.ts.map +1 -0
- package/dist/tools/check_socials.js +357 -0
- package/dist/tools/check_socials.js.map +1 -0
- package/dist/tools/compare_registrars.d.ts +80 -0
- package/dist/tools/compare_registrars.d.ts.map +1 -0
- package/dist/tools/compare_registrars.js +116 -0
- package/dist/tools/compare_registrars.js.map +1 -0
- package/dist/tools/index.d.ts +10 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +31 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/search_domain.d.ts +61 -0
- package/dist/tools/search_domain.d.ts.map +1 -0
- package/dist/tools/search_domain.js +81 -0
- package/dist/tools/search_domain.js.map +1 -0
- package/dist/tools/suggest_domains.d.ts +82 -0
- package/dist/tools/suggest_domains.d.ts.map +1 -0
- package/dist/tools/suggest_domains.js +227 -0
- package/dist/tools/suggest_domains.js.map +1 -0
- package/dist/tools/tld_info.d.ts +56 -0
- package/dist/tools/tld_info.d.ts.map +1 -0
- package/dist/tools/tld_info.js +273 -0
- package/dist/tools/tld_info.js.map +1 -0
- package/dist/types.d.ts +193 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/cache.d.ts +81 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +192 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/errors.d.ts +87 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +191 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +24 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +27 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +132 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/premium-analyzer.d.ts +33 -0
- package/dist/utils/premium-analyzer.d.ts.map +1 -0
- package/dist/utils/premium-analyzer.js +273 -0
- package/dist/utils/premium-analyzer.js.map +1 -0
- package/dist/utils/validators.d.ts +53 -0
- package/dist/utils/validators.d.ts.map +1 -0
- package/dist/utils/validators.js +159 -0
- package/dist/utils/validators.js.map +1 -0
- package/docs/marketing/devto-post.md +135 -0
- package/docs/marketing/hackernews.md +42 -0
- package/docs/marketing/producthunt.md +109 -0
- package/docs/marketing/reddit-post.md +59 -0
- package/docs/marketing/twitter-thread.md +105 -0
- package/examples/bulk-search-50-domains.ts +131 -0
- package/examples/cli-interactive.ts +280 -0
- package/examples/compare-registrars.ts +78 -0
- package/examples/search-single-domain.ts +54 -0
- package/examples/suggest-names.ts +110 -0
- package/glama.json +6 -0
- package/jest.config.js +35 -0
- package/package.json +62 -0
- package/smithery.yaml +36 -0
- package/src/config.ts +121 -0
- package/src/fallbacks/index.ts +6 -0
- package/src/fallbacks/rdap.ts +407 -0
- package/src/fallbacks/whois.ts +250 -0
- package/src/registrars/base.ts +264 -0
- package/src/registrars/index.ts +7 -0
- package/src/registrars/namecheap.ts +378 -0
- package/src/registrars/porkbun.ts +380 -0
- package/src/server.ts +276 -0
- package/src/services/domain-search.ts +567 -0
- package/src/services/index.ts +9 -0
- package/src/tools/bulk_search.ts +142 -0
- package/src/tools/check_socials.ts +467 -0
- package/src/tools/compare_registrars.ts +162 -0
- package/src/tools/index.ts +45 -0
- package/src/tools/search_domain.ts +93 -0
- package/src/tools/suggest_domains.ts +284 -0
- package/src/tools/tld_info.ts +294 -0
- package/src/types.ts +289 -0
- package/src/utils/cache.ts +238 -0
- package/src/utils/errors.ts +262 -0
- package/src/utils/index.ts +8 -0
- package/src/utils/logger.ts +162 -0
- package/src/utils/premium-analyzer.ts +303 -0
- package/src/utils/validators.ts +193 -0
- package/tests/premium-analyzer.test.ts +310 -0
- package/tests/unit/cache.test.ts +123 -0
- package/tests/unit/errors.test.ts +190 -0
- package/tests/unit/tld-info.test.ts +62 -0
- package/tests/unit/tools.test.ts +200 -0
- package/tests/unit/validators.test.ts +146 -0
- package/tsconfig.json +25 -0
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Namecheap Registrar Adapter.
|
|
4
|
+
*
|
|
5
|
+
* Namecheap uses an XML-based API.
|
|
6
|
+
* API Docs: https://www.namecheap.com/support/api/intro/
|
|
7
|
+
*
|
|
8
|
+
* Note: Namecheap requires IP whitelisting for API access.
|
|
9
|
+
*/
|
|
10
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
11
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.namecheapAdapter = exports.NamecheapAdapter = void 0;
|
|
15
|
+
const axios_1 = __importDefault(require("axios"));
|
|
16
|
+
const zod_1 = require("zod");
|
|
17
|
+
const base_js_1 = require("./base.js");
|
|
18
|
+
const config_js_1 = require("../config.js");
|
|
19
|
+
const logger_js_1 = require("../utils/logger.js");
|
|
20
|
+
const errors_js_1 = require("../utils/errors.js");
|
|
21
|
+
const NAMECHEAP_API_BASE = 'https://api.namecheap.com/xml.response';
|
|
22
|
+
const NAMECHEAP_SANDBOX_BASE = 'https://api.sandbox.namecheap.com/xml.response';
|
|
23
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
24
|
+
// Zod Schemas for Parsed XML Validation
|
|
25
|
+
// SECURITY: Validate parsed XML data to ensure expected structure
|
|
26
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
27
|
+
/**
|
|
28
|
+
* Schema for parsed domain check result.
|
|
29
|
+
*/
|
|
30
|
+
const NamecheapCheckResultSchema = zod_1.z.object({
|
|
31
|
+
available: zod_1.z.boolean(),
|
|
32
|
+
premium: zod_1.z.boolean(),
|
|
33
|
+
price: zod_1.z.number().optional(),
|
|
34
|
+
renewalPrice: zod_1.z.number().optional(),
|
|
35
|
+
});
|
|
36
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
37
|
+
// XML Parsing Utilities (Internal - hardcoded tags only)
|
|
38
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
39
|
+
/**
|
|
40
|
+
* Allowed XML tags for parsing.
|
|
41
|
+
* SECURITY: Only these hardcoded tags can be parsed to prevent injection.
|
|
42
|
+
*/
|
|
43
|
+
const ALLOWED_XML_TAGS = new Set([
|
|
44
|
+
'Error',
|
|
45
|
+
'Errors',
|
|
46
|
+
'DomainCheckResult',
|
|
47
|
+
]);
|
|
48
|
+
const ALLOWED_XML_ATTRS = new Set([
|
|
49
|
+
'Count',
|
|
50
|
+
'Available',
|
|
51
|
+
'IsPremiumName',
|
|
52
|
+
'PremiumRegistrationPrice',
|
|
53
|
+
'PremiumRenewalPrice',
|
|
54
|
+
]);
|
|
55
|
+
/**
|
|
56
|
+
* Parse XML response to extract domain info.
|
|
57
|
+
* Simple regex-based parsing since we don't want xml2js dependency.
|
|
58
|
+
*
|
|
59
|
+
* SECURITY: Only parses allowed tags defined in ALLOWED_XML_TAGS.
|
|
60
|
+
*/
|
|
61
|
+
function parseXmlValue(xml, tag) {
|
|
62
|
+
if (!ALLOWED_XML_TAGS.has(tag)) {
|
|
63
|
+
logger_js_1.logger.warn('Attempted to parse disallowed XML tag', { tag });
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
// Escape special regex chars in tag name for safety
|
|
67
|
+
const escapedTag = tag.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
68
|
+
// Reason: tag parameter is validated against ALLOWED_XML_TAGS whitelist above, not user input
|
|
69
|
+
const regex = new RegExp(`<${escapedTag}>([^<]*)</${escapedTag}>`, 'i'); // nosemgrep: detect-non-literal-regexp
|
|
70
|
+
const match = xml.match(regex);
|
|
71
|
+
return match?.[1];
|
|
72
|
+
}
|
|
73
|
+
function parseXmlAttribute(xml, tag, attr) {
|
|
74
|
+
if (!ALLOWED_XML_TAGS.has(tag)) {
|
|
75
|
+
logger_js_1.logger.warn('Attempted to parse disallowed XML tag', { tag });
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
if (!ALLOWED_XML_ATTRS.has(attr)) {
|
|
79
|
+
logger_js_1.logger.warn('Attempted to parse disallowed XML attribute', { attr });
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
// Escape special regex chars for safety
|
|
83
|
+
const escapedTag = tag.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
84
|
+
const escapedAttr = attr.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
85
|
+
// Reason: tag/attr parameters are validated against ALLOWED_XML_TAGS/ATTRS whitelists above, not user input
|
|
86
|
+
const regex = new RegExp(`<${escapedTag}[^>]*${escapedAttr}="([^"]*)"`, 'i'); // nosemgrep: detect-non-literal-regexp
|
|
87
|
+
const match = xml.match(regex);
|
|
88
|
+
return match?.[1];
|
|
89
|
+
}
|
|
90
|
+
function parseXmlBool(value) {
|
|
91
|
+
return value?.toLowerCase() === 'true';
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Namecheap adapter implementation.
|
|
95
|
+
*/
|
|
96
|
+
class NamecheapAdapter extends base_js_1.RegistrarAdapter {
|
|
97
|
+
name = 'Namecheap';
|
|
98
|
+
id = 'namecheap';
|
|
99
|
+
client;
|
|
100
|
+
apiKey;
|
|
101
|
+
apiUser;
|
|
102
|
+
useSandbox;
|
|
103
|
+
constructor() {
|
|
104
|
+
// Namecheap has stricter rate limits, ~20/min is safe
|
|
105
|
+
super(20);
|
|
106
|
+
this.apiKey = config_js_1.config.namecheap.apiKey;
|
|
107
|
+
this.apiUser = config_js_1.config.namecheap.apiUser;
|
|
108
|
+
this.useSandbox = false; // Set to true for testing
|
|
109
|
+
const baseURL = this.useSandbox ? NAMECHEAP_SANDBOX_BASE : NAMECHEAP_API_BASE;
|
|
110
|
+
this.client = axios_1.default.create({
|
|
111
|
+
baseURL,
|
|
112
|
+
timeout: this.timeoutMs,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Check if Namecheap API is enabled.
|
|
117
|
+
*/
|
|
118
|
+
isEnabled() {
|
|
119
|
+
return config_js_1.config.namecheap.enabled;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Search for domain availability.
|
|
123
|
+
*/
|
|
124
|
+
async search(domain, tld) {
|
|
125
|
+
if (!this.isEnabled()) {
|
|
126
|
+
throw new errors_js_1.AuthenticationError('namecheap', 'API credentials not configured');
|
|
127
|
+
}
|
|
128
|
+
const fullDomain = `${domain}.${tld}`;
|
|
129
|
+
logger_js_1.logger.debug('Namecheap search', { domain: fullDomain });
|
|
130
|
+
try {
|
|
131
|
+
const result = await this.retryWithBackoff(async () => {
|
|
132
|
+
const response = await this.client.get('', {
|
|
133
|
+
params: {
|
|
134
|
+
ApiUser: this.apiUser,
|
|
135
|
+
ApiKey: this.apiKey,
|
|
136
|
+
UserName: this.apiUser,
|
|
137
|
+
ClientIp: this.getClientIp(),
|
|
138
|
+
Command: 'namecheap.domains.check',
|
|
139
|
+
DomainList: fullDomain,
|
|
140
|
+
},
|
|
141
|
+
});
|
|
142
|
+
return this.parseCheckResponse(response.data, fullDomain);
|
|
143
|
+
}, `check ${fullDomain}`);
|
|
144
|
+
return this.createResult(domain, tld, {
|
|
145
|
+
available: result.available,
|
|
146
|
+
premium: result.premium,
|
|
147
|
+
price_first_year: result.price,
|
|
148
|
+
price_renewal: result.renewalPrice,
|
|
149
|
+
privacy_included: false, // Namecheap charges for privacy
|
|
150
|
+
source: 'namecheap_api',
|
|
151
|
+
premium_reason: result.premium ? 'Premium domain' : undefined,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
this.handleApiError(error, fullDomain);
|
|
156
|
+
throw error;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Parse the check response XML.
|
|
161
|
+
* SECURITY: Validates parsed result with Zod schema.
|
|
162
|
+
*/
|
|
163
|
+
parseCheckResponse(xml, domain) {
|
|
164
|
+
// Check for API errors
|
|
165
|
+
const errorCount = parseXmlAttribute(xml, 'Errors', 'Count');
|
|
166
|
+
if (errorCount && parseInt(errorCount, 10) > 0) {
|
|
167
|
+
const errorMsg = parseXmlValue(xml, 'Error') || 'Unknown API error';
|
|
168
|
+
if (errorMsg.includes('IP not whitelisted')) {
|
|
169
|
+
throw new errors_js_1.AuthenticationError('namecheap', 'IP not whitelisted. Add your IP in Namecheap dashboard.');
|
|
170
|
+
}
|
|
171
|
+
throw new errors_js_1.RegistrarApiError(this.name, errorMsg);
|
|
172
|
+
}
|
|
173
|
+
// Parse domain result
|
|
174
|
+
const available = parseXmlAttribute(xml, 'DomainCheckResult', 'Available');
|
|
175
|
+
const isPremium = parseXmlAttribute(xml, 'DomainCheckResult', 'IsPremiumName');
|
|
176
|
+
const premiumPrice = parseXmlAttribute(xml, 'DomainCheckResult', 'PremiumRegistrationPrice');
|
|
177
|
+
const premiumRenewal = parseXmlAttribute(xml, 'DomainCheckResult', 'PremiumRenewalPrice');
|
|
178
|
+
const rawResult = {
|
|
179
|
+
available: parseXmlBool(available),
|
|
180
|
+
premium: parseXmlBool(isPremium),
|
|
181
|
+
price: premiumPrice ? parseFloat(premiumPrice) : undefined,
|
|
182
|
+
renewalPrice: premiumRenewal ? parseFloat(premiumRenewal) : undefined,
|
|
183
|
+
};
|
|
184
|
+
// Validate parsed result with Zod
|
|
185
|
+
const parseResult = NamecheapCheckResultSchema.safeParse(rawResult);
|
|
186
|
+
if (!parseResult.success) {
|
|
187
|
+
logger_js_1.logger.warn('Namecheap API response validation failed', {
|
|
188
|
+
domain,
|
|
189
|
+
errors: parseResult.error.errors,
|
|
190
|
+
});
|
|
191
|
+
throw new errors_js_1.RegistrarApiError(this.name, 'Invalid API response format');
|
|
192
|
+
}
|
|
193
|
+
return parseResult.data;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Get TLD information.
|
|
197
|
+
*/
|
|
198
|
+
async getTldInfo(tld) {
|
|
199
|
+
// Namecheap doesn't have a great TLD info endpoint
|
|
200
|
+
// Return basic info based on known data
|
|
201
|
+
return {
|
|
202
|
+
tld,
|
|
203
|
+
description: `${tld.toUpperCase()} domain`,
|
|
204
|
+
typical_use: this.getTldUseCase(tld),
|
|
205
|
+
price_range: {
|
|
206
|
+
min: 8.88,
|
|
207
|
+
max: 15.98,
|
|
208
|
+
currency: 'USD',
|
|
209
|
+
},
|
|
210
|
+
renewal_price_typical: 12.98,
|
|
211
|
+
restrictions: [],
|
|
212
|
+
popularity: this.getTldPopularity(tld),
|
|
213
|
+
category: this.getTldCategory(tld),
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Get client IP for API requests.
|
|
218
|
+
* Namecheap requires this for all API calls.
|
|
219
|
+
*
|
|
220
|
+
* SECURITY: We no longer call external services (ipify.org) to get IP.
|
|
221
|
+
* The IP must be configured via NAMECHEAP_CLIENT_IP environment variable.
|
|
222
|
+
* This prevents unintended IP disclosure to third parties.
|
|
223
|
+
*/
|
|
224
|
+
getClientIp() {
|
|
225
|
+
const clientIp = config_js_1.config.namecheap.clientIp;
|
|
226
|
+
if (!clientIp) {
|
|
227
|
+
throw new errors_js_1.AuthenticationError('namecheap', 'NAMECHEAP_CLIENT_IP not configured. Add your whitelisted IP to .env file.');
|
|
228
|
+
}
|
|
229
|
+
// Basic IP format validation (IPv4 or IPv6)
|
|
230
|
+
const ipv4Pattern = /^(\d{1,3}\.){3}\d{1,3}$/;
|
|
231
|
+
const ipv6Pattern = /^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$/;
|
|
232
|
+
if (!ipv4Pattern.test(clientIp) && !ipv6Pattern.test(clientIp)) {
|
|
233
|
+
throw new errors_js_1.AuthenticationError('namecheap', `Invalid NAMECHEAP_CLIENT_IP format: "${clientIp}". Must be a valid IPv4 or IPv6 address.`);
|
|
234
|
+
}
|
|
235
|
+
return clientIp;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Handle API errors with user-friendly messages.
|
|
239
|
+
*/
|
|
240
|
+
handleApiError(error, domain) {
|
|
241
|
+
if (axios_1.default.isAxiosError(error)) {
|
|
242
|
+
const axiosError = error;
|
|
243
|
+
if (axiosError.response) {
|
|
244
|
+
const status = axiosError.response.status;
|
|
245
|
+
if (status === 401 || status === 403) {
|
|
246
|
+
throw new errors_js_1.AuthenticationError('namecheap', 'Invalid API credentials');
|
|
247
|
+
}
|
|
248
|
+
if (status === 429) {
|
|
249
|
+
throw new errors_js_1.RateLimitError('namecheap');
|
|
250
|
+
}
|
|
251
|
+
throw new errors_js_1.RegistrarApiError(this.name, `HTTP ${status}: ${axiosError.message}`, status, error);
|
|
252
|
+
}
|
|
253
|
+
if (axiosError.code === 'ECONNABORTED') {
|
|
254
|
+
throw new errors_js_1.RegistrarApiError(this.name, `Request timed out for ${domain}`, undefined, error);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
throw new errors_js_1.RegistrarApiError(this.name, error instanceof Error ? error.message : 'Unknown error', undefined, error instanceof Error ? error : undefined);
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Get typical use case for a TLD.
|
|
261
|
+
*/
|
|
262
|
+
getTldUseCase(tld) {
|
|
263
|
+
const useCases = {
|
|
264
|
+
com: 'General commercial websites',
|
|
265
|
+
io: 'Tech startups and SaaS products',
|
|
266
|
+
dev: 'Developer tools and portfolios',
|
|
267
|
+
app: 'Mobile and web applications',
|
|
268
|
+
co: 'Companies and startups',
|
|
269
|
+
net: 'Network services and utilities',
|
|
270
|
+
org: 'Non-profit organizations',
|
|
271
|
+
};
|
|
272
|
+
return useCases[tld] || 'General purpose';
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Get TLD popularity rating.
|
|
276
|
+
*/
|
|
277
|
+
getTldPopularity(tld) {
|
|
278
|
+
const highPopularity = ['com', 'net', 'org', 'io', 'co'];
|
|
279
|
+
const mediumPopularity = ['dev', 'app', 'ai', 'me'];
|
|
280
|
+
if (highPopularity.includes(tld))
|
|
281
|
+
return 'high';
|
|
282
|
+
if (mediumPopularity.includes(tld))
|
|
283
|
+
return 'medium';
|
|
284
|
+
return 'low';
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Get TLD category.
|
|
288
|
+
*/
|
|
289
|
+
getTldCategory(tld) {
|
|
290
|
+
const countryTlds = ['uk', 'de', 'fr', 'jp', 'cn', 'au', 'ca', 'us'];
|
|
291
|
+
const sponsoredTlds = ['edu', 'gov', 'mil'];
|
|
292
|
+
const newTlds = ['io', 'dev', 'app', 'ai', 'xyz', 'tech', 'cloud'];
|
|
293
|
+
if (countryTlds.includes(tld))
|
|
294
|
+
return 'country';
|
|
295
|
+
if (sponsoredTlds.includes(tld))
|
|
296
|
+
return 'sponsored';
|
|
297
|
+
if (newTlds.includes(tld))
|
|
298
|
+
return 'new';
|
|
299
|
+
return 'generic';
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
exports.NamecheapAdapter = NamecheapAdapter;
|
|
303
|
+
/**
|
|
304
|
+
* Singleton instance.
|
|
305
|
+
*/
|
|
306
|
+
exports.namecheapAdapter = new NamecheapAdapter();
|
|
307
|
+
//# sourceMappingURL=namecheap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namecheap.js","sourceRoot":"","sources":["../../src/registrars/namecheap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Porkbun Registrar Adapter.
|
|
3
|
+
*
|
|
4
|
+
* Porkbun offers competitive pricing and a JSON API.
|
|
5
|
+
* API Docs: https://porkbun.com/api/json/v3/documentation
|
|
6
|
+
*/
|
|
7
|
+
import { RegistrarAdapter } from './base.js';
|
|
8
|
+
import type { DomainResult, TLDInfo } from '../types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Porkbun adapter implementation.
|
|
11
|
+
*/
|
|
12
|
+
export declare class PorkbunAdapter extends RegistrarAdapter {
|
|
13
|
+
readonly name = "Porkbun";
|
|
14
|
+
readonly id = "porkbun";
|
|
15
|
+
private readonly client;
|
|
16
|
+
private readonly apiKey?;
|
|
17
|
+
private readonly apiSecret?;
|
|
18
|
+
private pricingCache;
|
|
19
|
+
constructor();
|
|
20
|
+
/**
|
|
21
|
+
* Check if Porkbun API is enabled.
|
|
22
|
+
*/
|
|
23
|
+
isEnabled(): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Search for domain availability.
|
|
26
|
+
*/
|
|
27
|
+
search(domain: string, tld: string): Promise<DomainResult>;
|
|
28
|
+
/**
|
|
29
|
+
* Check domain availability.
|
|
30
|
+
* SECURITY: Validates API response with Zod schema.
|
|
31
|
+
*/
|
|
32
|
+
private checkAvailability;
|
|
33
|
+
/**
|
|
34
|
+
* Get pricing for a TLD.
|
|
35
|
+
* SECURITY: Validates API response with Zod schema.
|
|
36
|
+
*/
|
|
37
|
+
private getPricing;
|
|
38
|
+
/**
|
|
39
|
+
* Get TLD information.
|
|
40
|
+
*/
|
|
41
|
+
getTldInfo(tld: string): Promise<TLDInfo | null>;
|
|
42
|
+
/**
|
|
43
|
+
* Handle API errors with user-friendly messages.
|
|
44
|
+
*/
|
|
45
|
+
private handleApiError;
|
|
46
|
+
/**
|
|
47
|
+
* Get typical use case for a TLD.
|
|
48
|
+
*/
|
|
49
|
+
private getTldUseCase;
|
|
50
|
+
/**
|
|
51
|
+
* Get TLD popularity rating.
|
|
52
|
+
*/
|
|
53
|
+
private getTldPopularity;
|
|
54
|
+
/**
|
|
55
|
+
* Get TLD category.
|
|
56
|
+
*/
|
|
57
|
+
private getTldCategory;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Singleton instance.
|
|
61
|
+
*/
|
|
62
|
+
export declare const porkbunAdapter: PorkbunAdapter;
|
|
63
|
+
//# sourceMappingURL=porkbun.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"porkbun.d.ts","sourceRoot":"","sources":["../../src/registrars/porkbun.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAgEzD;;GAEG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;IAClD,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,EAAE,aAAa;IAExB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,YAAY,CAAmF;;IAkBvG;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAkChE;;;OAGG;YACW,iBAAiB;IA8C/B;;;OAGG;YACW,UAAU;IA+DxB;;OAEG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAoBtD;;OAEG;IACH,OAAO,CAAC,cAAc;IA0CtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,OAAO,CAAC,cAAc;CAUvB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
|