gg-deploy 1.1.0 → 2.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.
Files changed (53) hide show
  1. package/README.md +80 -5
  2. package/dist/cli.js +2 -2
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/apply.d.ts.map +1 -1
  5. package/dist/commands/apply.js +16 -8
  6. package/dist/commands/apply.js.map +1 -1
  7. package/dist/commands/plan.d.ts.map +1 -1
  8. package/dist/commands/plan.js +16 -8
  9. package/dist/commands/plan.js.map +1 -1
  10. package/dist/commands/status.d.ts.map +1 -1
  11. package/dist/commands/status.js +15 -7
  12. package/dist/commands/status.js.map +1 -1
  13. package/dist/commands/update.d.ts.map +1 -1
  14. package/dist/commands/update.js +16 -4
  15. package/dist/commands/update.js.map +1 -1
  16. package/dist/config.d.ts +16 -0
  17. package/dist/config.d.ts.map +1 -1
  18. package/dist/config.js +34 -0
  19. package/dist/config.js.map +1 -1
  20. package/dist/lib/update-checker.d.ts +1 -1
  21. package/dist/lib/update-checker.d.ts.map +1 -1
  22. package/dist/lib/update-checker.js +17 -16
  23. package/dist/lib/update-checker.js.map +1 -1
  24. package/dist/mcp-server.d.ts.map +1 -1
  25. package/dist/mcp-server.js +5 -4
  26. package/dist/mcp-server.js.map +1 -1
  27. package/dist/services/cloudflare.d.ts +16 -0
  28. package/dist/services/cloudflare.d.ts.map +1 -0
  29. package/dist/services/cloudflare.js +189 -0
  30. package/dist/services/cloudflare.js.map +1 -0
  31. package/dist/services/dns-factory.d.ts +8 -0
  32. package/dist/services/dns-factory.d.ts.map +1 -0
  33. package/dist/services/dns-factory.js +46 -0
  34. package/dist/services/dns-factory.js.map +1 -0
  35. package/dist/services/godaddy.d.ts +6 -6
  36. package/dist/services/godaddy.d.ts.map +1 -1
  37. package/dist/services/godaddy.js +70 -29
  38. package/dist/services/godaddy.js.map +1 -1
  39. package/dist/services/namecheap.d.ts +22 -0
  40. package/dist/services/namecheap.d.ts.map +1 -0
  41. package/dist/services/namecheap.js +215 -0
  42. package/dist/services/namecheap.js.map +1 -0
  43. package/dist/types.d.ts +21 -0
  44. package/dist/types.d.ts.map +1 -1
  45. package/dist/types.js +16 -1
  46. package/dist/types.js.map +1 -1
  47. package/dist/ui-server.d.ts.map +1 -1
  48. package/dist/ui-server.js +59 -1
  49. package/dist/ui-server.js.map +1 -1
  50. package/package.json +3 -1
  51. package/ui/dist/assets/index-BrlsVS_6.js +41 -0
  52. package/ui/dist/index.html +1 -1
  53. package/ui/dist/assets/index-DToZwAqb.js +0 -41
@@ -1,8 +1,9 @@
1
1
  import { homedir } from 'os';
2
2
  import { join } from 'path';
3
3
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
4
+ import { execSync } from 'child_process';
4
5
  import chalk from 'chalk';
5
- const CURRENT_VERSION = '1.1.0';
6
+ const CURRENT_VERSION = '2.0.0';
6
7
  const GITHUB_REPO = 'abe238/gg-deploy';
7
8
  const CACHE_DIR = join(homedir(), '.gg-deploy');
8
9
  const CACHE_FILE = join(CACHE_DIR, 'update-cache.json');
@@ -98,25 +99,25 @@ function writeCache(cache) {
98
99
  // Can't write cache, ignore
99
100
  }
100
101
  }
102
+ function fetchWithCurl(url) {
103
+ try {
104
+ const result = execSync(`curl -sL -H "Accept: application/vnd.github.v3+json" -H "User-Agent: gg-deploy/${CURRENT_VERSION}" "${url}"`, { timeout: 5000, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
105
+ return result;
106
+ }
107
+ catch {
108
+ return null;
109
+ }
110
+ }
101
111
  async function fetchLatestRelease() {
102
112
  try {
103
- const controller = new AbortController();
104
- const timeout = setTimeout(() => controller.abort(), 3000); // 3s timeout
105
- const res = await fetch(`https://api.github.com/repos/${GITHUB_REPO}/releases/latest`, {
106
- signal: controller.signal,
107
- headers: {
108
- 'Accept': 'application/vnd.github.v3+json',
109
- 'User-Agent': `gg-deploy/${CURRENT_VERSION}`
110
- }
111
- });
112
- clearTimeout(timeout);
113
- if (!res.ok)
113
+ const data = fetchWithCurl(`https://api.github.com/repos/${GITHUB_REPO}/releases/latest`);
114
+ if (!data)
114
115
  return null;
115
- const data = await res.json();
116
+ const json = JSON.parse(data);
116
117
  return {
117
- version: data.tag_name.replace(/^v/, ''),
118
- url: data.html_url,
119
- notes: data.body?.split('\n').slice(0, 3).join('\n') || null
118
+ version: json.tag_name.replace(/^v/, ''),
119
+ url: json.html_url,
120
+ notes: json.body?.split('\n').slice(0, 3).join('\n') || null
120
121
  };
121
122
  }
122
123
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../../src/lib/update-checker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../../src/lib/update-checker.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAkGvB,wBAAsB,cAAc,kBAGnC"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAmGvB,wBAAsB,cAAc,kBAGnC"}
@@ -6,12 +6,13 @@ import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextpro
6
6
  import { planCommand } from './commands/plan.js';
7
7
  import { applyCommand } from './commands/apply.js';
8
8
  import { statusCommand } from './commands/status.js';
9
- const server = new Server({ name: 'gg-deploy', version: '0.1.0' }, { capabilities: { tools: {} } });
9
+ import { CURRENT_VERSION } from './lib/update-checker.js';
10
+ const server = new Server({ name: 'gg-deploy', version: CURRENT_VERSION }, { capabilities: { tools: {} } });
10
11
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
11
12
  tools: [
12
13
  {
13
14
  name: 'deploy_site_plan',
14
- description: 'Preview GoDaddy DNS + GitHub Pages deployment without making changes. Safe to call anytime.',
15
+ description: 'Preview DNS + GitHub Pages deployment without making changes. Supports GoDaddy, Cloudflare, and Namecheap. Safe to call anytime.',
15
16
  inputSchema: {
16
17
  type: 'object',
17
18
  properties: {
@@ -23,7 +24,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
23
24
  },
24
25
  {
25
26
  name: 'deploy_site_apply',
26
- description: 'Execute GoDaddy DNS + GitHub Pages deployment. Configures DNS A records, CNAME, and enables GitHub Pages with custom domain.',
27
+ description: 'Execute DNS + GitHub Pages deployment. Configures DNS A records, CNAME, and enables GitHub Pages with custom domain. Supports GoDaddy, Cloudflare, and Namecheap.',
27
28
  inputSchema: {
28
29
  type: 'object',
29
30
  properties: {
@@ -35,7 +36,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
35
36
  },
36
37
  {
37
38
  name: 'deploy_site_status',
38
- description: 'Check deployment health: DNS configuration, GitHub Pages status, SSL certificate state. Safe to call anytime.',
39
+ description: 'Check deployment health: DNS configuration, GitHub Pages status, SSL certificate state. Supports GoDaddy, Cloudflare, and Namecheap. Safe to call anytime.',
39
40
  inputSchema: {
40
41
  type: 'object',
41
42
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { DNSRecord, DNSProvider, DomainInfo, ProviderName } from '../types.js';
2
+ export declare class CloudflareService implements DNSProvider {
3
+ readonly name: ProviderName;
4
+ private apiToken;
5
+ private zoneCache;
6
+ constructor();
7
+ private get headers();
8
+ private withRetry;
9
+ private handleApiError;
10
+ getZoneId(domain: string): Promise<string>;
11
+ listDomains(): Promise<DomainInfo[]>;
12
+ getDNSRecords(domain: string): Promise<DNSRecord[]>;
13
+ setGitHubPagesRecords(domain: string, githubUser: string): Promise<void>;
14
+ verifyDomain(domain: string): Promise<boolean>;
15
+ }
16
+ //# sourceMappingURL=cloudflare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/services/cloudflare.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA4BpF,qBAAa,iBAAkB,YAAW,WAAW;IACnD,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAA6B;;IAe9C,OAAO,KAAK,OAAO,GAKlB;YAEa,SAAS;IAiBvB,OAAO,CAAC,cAAc;IA0ChB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA+B1C,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IA8BpC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAwBnD,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0ExE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAQrD"}
@@ -0,0 +1,189 @@
1
+ import { DNSProviderError } from '../types.js';
2
+ import { getCloudflareConfig } from '../config.js';
3
+ const API_BASE = 'https://api.cloudflare.com/client/v4';
4
+ export class CloudflareService {
5
+ name = 'cloudflare';
6
+ apiToken;
7
+ zoneCache = new Map();
8
+ constructor() {
9
+ const config = getCloudflareConfig();
10
+ if (!config) {
11
+ throw new DNSProviderError('cloudflare', 'AUTH_ERROR', 'Cloudflare not configured. Add API token in settings.', 'Get API token from https://dash.cloudflare.com/profile/api-tokens');
12
+ }
13
+ this.apiToken = config.apiToken;
14
+ }
15
+ get headers() {
16
+ return {
17
+ Authorization: `Bearer ${this.apiToken}`,
18
+ 'Content-Type': 'application/json',
19
+ };
20
+ }
21
+ async withRetry(fn, maxRetries = 3) {
22
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
23
+ try {
24
+ return await fn();
25
+ }
26
+ catch (error) {
27
+ const isRetriable = error instanceof DNSProviderError && error.retriable;
28
+ if (isRetriable && attempt < maxRetries - 1) {
29
+ const delay = Math.pow(2, attempt) * 1000;
30
+ await new Promise(resolve => setTimeout(resolve, delay));
31
+ continue;
32
+ }
33
+ throw error;
34
+ }
35
+ }
36
+ throw new Error('Unexpected: retry loop completed without return or throw');
37
+ }
38
+ handleApiError(errors, context) {
39
+ const error = errors[0] || { code: 0, message: 'Unknown error' };
40
+ if (error.code === 6003 || error.code === 9109) {
41
+ throw new DNSProviderError('cloudflare', 'AUTH_ERROR', 'Invalid API token', 'Check your API token at dash.cloudflare.com/profile/api-tokens', false);
42
+ }
43
+ if (error.code === 1001 || error.code === 1049) {
44
+ throw new DNSProviderError('cloudflare', 'DOMAIN_NOT_FOUND', 'Zone not found', 'Verify the domain is added to your Cloudflare account', false);
45
+ }
46
+ if (error.code === 10000) {
47
+ throw new DNSProviderError('cloudflare', 'RATE_LIMITED', 'Rate limited by Cloudflare API', 'Wait a moment and try again', true);
48
+ }
49
+ throw new DNSProviderError('cloudflare', 'NETWORK_ERROR', `Cloudflare API error: ${error.message} (${error.code}) - ${context}`, undefined, false);
50
+ }
51
+ async getZoneId(domain) {
52
+ if (this.zoneCache.has(domain)) {
53
+ return this.zoneCache.get(domain);
54
+ }
55
+ return this.withRetry(async () => {
56
+ const res = await fetch(`${API_BASE}/zones?name=${domain}`, {
57
+ headers: this.headers,
58
+ });
59
+ const data = await res.json();
60
+ if (!data.success) {
61
+ this.handleApiError(data.errors, `getZoneId(${domain})`);
62
+ }
63
+ if (!data.result?.[0]?.id) {
64
+ throw new DNSProviderError('cloudflare', 'DOMAIN_NOT_FOUND', `Domain ${domain} not found in Cloudflare`, 'Add this domain to your Cloudflare account first', false);
65
+ }
66
+ const zoneId = data.result[0].id;
67
+ this.zoneCache.set(domain, zoneId);
68
+ return zoneId;
69
+ });
70
+ }
71
+ async listDomains() {
72
+ return this.withRetry(async () => {
73
+ const allZones = [];
74
+ let page = 1;
75
+ while (true) {
76
+ const res = await fetch(`${API_BASE}/zones?page=${page}&per_page=50`, {
77
+ headers: this.headers,
78
+ });
79
+ const data = await res.json();
80
+ if (!data.success) {
81
+ this.handleApiError(data.errors, 'listDomains');
82
+ }
83
+ allZones.push(...data.result);
84
+ if (!data.result_info || page >= data.result_info.total_pages) {
85
+ break;
86
+ }
87
+ page++;
88
+ }
89
+ return allZones.map(zone => ({
90
+ domain: zone.name,
91
+ status: zone.status.toUpperCase(),
92
+ }));
93
+ });
94
+ }
95
+ async getDNSRecords(domain) {
96
+ const zoneId = await this.getZoneId(domain);
97
+ return this.withRetry(async () => {
98
+ const res = await fetch(`${API_BASE}/zones/${zoneId}/dns_records`, {
99
+ headers: this.headers,
100
+ });
101
+ const data = await res.json();
102
+ if (!data.success) {
103
+ this.handleApiError(data.errors, `getDNSRecords(${domain})`);
104
+ }
105
+ return data.result
106
+ .filter(r => ['A', 'CNAME', 'TXT'].includes(r.type))
107
+ .map(r => ({
108
+ type: r.type,
109
+ name: r.name === domain ? '@' : r.name.replace(`.${domain}`, ''),
110
+ data: r.content,
111
+ ttl: r.ttl,
112
+ }));
113
+ });
114
+ }
115
+ async setGitHubPagesRecords(domain, githubUser) {
116
+ const zoneId = await this.getZoneId(domain);
117
+ await this.withRetry(async () => {
118
+ const existingRes = await fetch(`${API_BASE}/zones/${zoneId}/dns_records?type=A,CNAME`, {
119
+ headers: this.headers,
120
+ });
121
+ const existingData = await existingRes.json();
122
+ if (!existingData.success) {
123
+ this.handleApiError(existingData.errors, 'fetchExistingRecords');
124
+ }
125
+ const toDelete = existingData.result.filter(r => (r.type === 'A' && r.name === domain) ||
126
+ (r.type === 'CNAME' && r.name === `www.${domain}`));
127
+ for (const record of toDelete) {
128
+ const delRes = await fetch(`${API_BASE}/zones/${zoneId}/dns_records/${record.id}`, {
129
+ method: 'DELETE',
130
+ headers: this.headers,
131
+ });
132
+ if (!delRes.ok) {
133
+ const delData = await delRes.json();
134
+ if (!delData.success) {
135
+ this.handleApiError(delData.errors, `deleteRecord(${record.id})`);
136
+ }
137
+ }
138
+ }
139
+ const githubIPs = [
140
+ '185.199.108.153',
141
+ '185.199.109.153',
142
+ '185.199.110.153',
143
+ '185.199.111.153',
144
+ ];
145
+ for (const ip of githubIPs) {
146
+ const createRes = await fetch(`${API_BASE}/zones/${zoneId}/dns_records`, {
147
+ method: 'POST',
148
+ headers: this.headers,
149
+ body: JSON.stringify({
150
+ type: 'A',
151
+ name: '@',
152
+ content: ip,
153
+ ttl: 3600,
154
+ proxied: false,
155
+ }),
156
+ });
157
+ const createData = await createRes.json();
158
+ if (!createData.success) {
159
+ this.handleApiError(createData.errors, `createARecord(${ip})`);
160
+ }
161
+ }
162
+ const cnameRes = await fetch(`${API_BASE}/zones/${zoneId}/dns_records`, {
163
+ method: 'POST',
164
+ headers: this.headers,
165
+ body: JSON.stringify({
166
+ type: 'CNAME',
167
+ name: 'www',
168
+ content: `${githubUser}.github.io`,
169
+ ttl: 3600,
170
+ proxied: false,
171
+ }),
172
+ });
173
+ const cnameData = await cnameRes.json();
174
+ if (!cnameData.success) {
175
+ this.handleApiError(cnameData.errors, 'createCNAME');
176
+ }
177
+ });
178
+ }
179
+ async verifyDomain(domain) {
180
+ try {
181
+ const domains = await this.listDomains();
182
+ return domains.some(d => d.domain === domain && d.status === 'ACTIVE');
183
+ }
184
+ catch {
185
+ return false;
186
+ }
187
+ }
188
+ }
189
+ //# sourceMappingURL=cloudflare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../../src/services/cloudflare.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { DNSProvider, ProviderName } from '../types.js';
2
+ export declare function detectProvider(): ProviderName | null;
3
+ export declare function createProvider(providerName?: ProviderName): DNSProvider;
4
+ export declare const DNSProviderFactory: {
5
+ detect: typeof detectProvider;
6
+ create: typeof createProvider;
7
+ };
8
+ //# sourceMappingURL=dns-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dns-factory.d.ts","sourceRoot":"","sources":["../../src/services/dns-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM7D,wBAAgB,cAAc,IAAI,YAAY,GAAG,IAAI,CAwBpD;AAED,wBAAgB,cAAc,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,WAAW,CAmBvE;AAED,eAAO,MAAM,kBAAkB;;;CAG9B,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { readConfig, getGoDaddyConfig, getCloudflareConfig, getNamecheapConfig } from '../config.js';
2
+ import { GoDaddyService } from './godaddy.js';
3
+ import { CloudflareService } from './cloudflare.js';
4
+ import { NamecheapService } from './namecheap.js';
5
+ export function detectProvider() {
6
+ const config = readConfig();
7
+ if (config.dnsProvider) {
8
+ return config.dnsProvider;
9
+ }
10
+ const providers = [];
11
+ if (getGoDaddyConfig())
12
+ providers.push('godaddy');
13
+ if (getCloudflareConfig())
14
+ providers.push('cloudflare');
15
+ if (getNamecheapConfig())
16
+ providers.push('namecheap');
17
+ if (providers.length === 0) {
18
+ return null;
19
+ }
20
+ if (providers.length === 1) {
21
+ return providers[0];
22
+ }
23
+ throw new Error(`Multiple DNS providers configured: ${providers.join(', ')}. ` +
24
+ `Please specify "dnsProvider" in ~/.gg-deploy/config.json`);
25
+ }
26
+ export function createProvider(providerName) {
27
+ const name = providerName ?? detectProvider();
28
+ if (!name) {
29
+ throw new Error('No DNS provider configured. Add credentials for GoDaddy, Cloudflare, or Namecheap in settings.');
30
+ }
31
+ switch (name) {
32
+ case 'godaddy':
33
+ return new GoDaddyService();
34
+ case 'cloudflare':
35
+ return new CloudflareService();
36
+ case 'namecheap':
37
+ return new NamecheapService();
38
+ default:
39
+ throw new Error(`Unknown DNS provider: ${name}`);
40
+ }
41
+ }
42
+ export const DNSProviderFactory = {
43
+ detect: detectProvider,
44
+ create: createProvider,
45
+ };
46
+ //# sourceMappingURL=dns-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dns-factory.js","sourceRoot":"","sources":["../../src/services/dns-factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACrG,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,UAAU,cAAc;IAC5B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,MAAM,SAAS,GAAmB,EAAE,CAAC;IACrC,IAAI,gBAAgB,EAAE;QAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD,IAAI,mBAAmB,EAAE;QAAE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACxD,IAAI,kBAAkB,EAAE;QAAE,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEtD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,sCAAsC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QAC9D,0DAA0D,CAC3D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,YAA2B;IACxD,MAAM,IAAI,GAAG,YAAY,IAAI,cAAc,EAAE,CAAC;IAE9C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,gGAAgG,CACjG,CAAC;IACJ,CAAC;IAED,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,IAAI,cAAc,EAAE,CAAC;QAC9B,KAAK,YAAY;YACf,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACjC,KAAK,WAAW;YACd,OAAO,IAAI,gBAAgB,EAAE,CAAC;QAChC;YACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,MAAM,EAAE,cAAc;IACtB,MAAM,EAAE,cAAc;CACvB,CAAC"}
@@ -1,14 +1,14 @@
1
- import type { DNSRecord } from '../types.js';
2
- export declare class GoDaddyService {
1
+ import type { DNSRecord, DNSProvider, DomainInfo, ProviderName } from '../types.js';
2
+ export declare class GoDaddyService implements DNSProvider {
3
+ readonly name: ProviderName;
3
4
  private apiKey;
4
5
  private apiSecret;
5
6
  private apiBase;
6
7
  constructor();
7
8
  private get headers();
8
- listDomains(): Promise<Array<{
9
- domain: string;
10
- status: string;
11
- }>>;
9
+ private withRetry;
10
+ private handleApiError;
11
+ listDomains(): Promise<DomainInfo[]>;
12
12
  getDNSRecords(domain: string): Promise<DNSRecord[]>;
13
13
  setGitHubPagesRecords(domain: string, githubUser: string): Promise<void>;
14
14
  verifyDomain(domain: string): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"godaddy.d.ts","sourceRoot":"","sources":["../../src/services/godaddy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAM7C,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;;IAYxB,OAAO,KAAK,OAAO,GAKlB;IAEK,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAMjE,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAQnD,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBxE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAQrD"}
1
+ {"version":3,"file":"godaddy.d.ts","sourceRoot":"","sources":["../../src/services/godaddy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAOpF,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAa;IACxC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;;IAiBxB,OAAO,KAAK,OAAO,GAKlB;YAEa,SAAS;IAiBvB,OAAO,CAAC,cAAc;IAqDhB,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAQpC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAUnD,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBxE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAQrD"}
@@ -1,14 +1,16 @@
1
+ import { DNSProviderError } from '../types.js';
1
2
  import { getGoDaddyConfig } from '../config.js';
2
3
  const API_BASE_PROD = 'https://api.godaddy.com/v1';
3
4
  const API_BASE_OTE = 'https://api.ote-godaddy.com/v1';
4
5
  export class GoDaddyService {
6
+ name = 'godaddy';
5
7
  apiKey;
6
8
  apiSecret;
7
9
  apiBase;
8
10
  constructor() {
9
11
  const config = getGoDaddyConfig();
10
12
  if (!config) {
11
- throw new Error('GoDaddy not configured. Add API credentials in settings.');
13
+ throw new DNSProviderError('godaddy', 'AUTH_ERROR', 'GoDaddy not configured. Add API credentials in settings.', 'Get API keys from https://developer.godaddy.com/keys');
12
14
  }
13
15
  this.apiKey = config.apiKey;
14
16
  this.apiSecret = config.apiSecret;
@@ -20,41 +22,80 @@ export class GoDaddyService {
20
22
  'Content-Type': 'application/json',
21
23
  };
22
24
  }
25
+ async withRetry(fn, maxRetries = 3) {
26
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
27
+ try {
28
+ return await fn();
29
+ }
30
+ catch (error) {
31
+ const isRetriable = error instanceof DNSProviderError && error.retriable;
32
+ if (isRetriable && attempt < maxRetries - 1) {
33
+ const delay = Math.pow(2, attempt) * 1000;
34
+ await new Promise(resolve => setTimeout(resolve, delay));
35
+ continue;
36
+ }
37
+ throw error;
38
+ }
39
+ }
40
+ throw new Error('Unexpected: retry loop completed without return or throw');
41
+ }
42
+ handleApiError(status, context) {
43
+ switch (status) {
44
+ case 401:
45
+ throw new DNSProviderError('godaddy', 'AUTH_ERROR', 'Invalid API credentials', 'Check your API key and secret at developer.godaddy.com', false);
46
+ case 403:
47
+ throw new DNSProviderError('godaddy', 'AUTH_ERROR', 'Access denied. Account may need 10+ domains for API access.', 'GoDaddy requires 10+ domains for API access. Consider using Cloudflare instead.', false);
48
+ case 404:
49
+ throw new DNSProviderError('godaddy', 'DOMAIN_NOT_FOUND', `Domain not found in your GoDaddy account`, 'Verify the domain is registered and active in your GoDaddy account', false);
50
+ case 422:
51
+ throw new DNSProviderError('godaddy', 'VALIDATION_ERROR', `Invalid request: ${context}`, 'Check that the domain is not locked or has pending transfers', false);
52
+ case 429:
53
+ throw new DNSProviderError('godaddy', 'RATE_LIMITED', 'Rate limited by GoDaddy API', 'Wait a moment and try again', true);
54
+ default:
55
+ throw new DNSProviderError('godaddy', 'NETWORK_ERROR', `GoDaddy API error: ${status} - ${context}`, undefined, status >= 500);
56
+ }
57
+ }
23
58
  async listDomains() {
24
- const res = await fetch(`${this.apiBase}/domains`, { headers: this.headers });
25
- if (!res.ok)
26
- throw new Error(`GoDaddy API error: ${res.status}`);
27
- return res.json();
59
+ return this.withRetry(async () => {
60
+ const res = await fetch(`${this.apiBase}/domains`, { headers: this.headers });
61
+ if (!res.ok)
62
+ this.handleApiError(res.status, 'listDomains');
63
+ return res.json();
64
+ });
28
65
  }
29
66
  async getDNSRecords(domain) {
30
- const res = await fetch(`${this.apiBase}/domains/${domain}/records`, {
31
- headers: this.headers,
67
+ return this.withRetry(async () => {
68
+ const res = await fetch(`${this.apiBase}/domains/${domain}/records`, {
69
+ headers: this.headers,
70
+ });
71
+ if (!res.ok)
72
+ this.handleApiError(res.status, `getDNSRecords(${domain})`);
73
+ return res.json();
32
74
  });
33
- if (!res.ok)
34
- throw new Error(`GoDaddy API error: ${res.status}`);
35
- return res.json();
36
75
  }
37
76
  async setGitHubPagesRecords(domain, githubUser) {
38
- const aRecords = [
39
- { data: '185.199.108.153', ttl: 600 },
40
- { data: '185.199.109.153', ttl: 600 },
41
- { data: '185.199.110.153', ttl: 600 },
42
- { data: '185.199.111.153', ttl: 600 },
43
- ];
44
- const aRes = await fetch(`${this.apiBase}/domains/${domain}/records/A/@`, {
45
- method: 'PUT',
46
- headers: this.headers,
47
- body: JSON.stringify(aRecords),
48
- });
49
- if (!aRes.ok)
50
- throw new Error(`Failed to set A records: ${aRes.status}`);
51
- const cnameRes = await fetch(`${this.apiBase}/domains/${domain}/records/CNAME/www`, {
52
- method: 'PUT',
53
- headers: this.headers,
54
- body: JSON.stringify([{ data: `${githubUser}.github.io`, ttl: 600 }]),
77
+ await this.withRetry(async () => {
78
+ const aRecords = [
79
+ { data: '185.199.108.153', ttl: 600 },
80
+ { data: '185.199.109.153', ttl: 600 },
81
+ { data: '185.199.110.153', ttl: 600 },
82
+ { data: '185.199.111.153', ttl: 600 },
83
+ ];
84
+ const aRes = await fetch(`${this.apiBase}/domains/${domain}/records/A/@`, {
85
+ method: 'PUT',
86
+ headers: this.headers,
87
+ body: JSON.stringify(aRecords),
88
+ });
89
+ if (!aRes.ok)
90
+ this.handleApiError(aRes.status, 'setARecords');
91
+ const cnameRes = await fetch(`${this.apiBase}/domains/${domain}/records/CNAME/www`, {
92
+ method: 'PUT',
93
+ headers: this.headers,
94
+ body: JSON.stringify([{ data: `${githubUser}.github.io`, ttl: 600 }]),
95
+ });
96
+ if (!cnameRes.ok)
97
+ this.handleApiError(cnameRes.status, 'setCNAME');
55
98
  });
56
- if (!cnameRes.ok)
57
- throw new Error(`Failed to set CNAME: ${cnameRes.status}`);
58
99
  }
59
100
  async verifyDomain(domain) {
60
101
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"godaddy.js","sourceRoot":"","sources":["../../src/services/godaddy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"godaddy.js","sourceRoot":"","sources":["../../src/services/godaddy.ts"],"names":[],"mappings":"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"}