dominion-cli 0.1.1 → 0.2.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/dist/cli.js +13 -9
- package/dist/cli.js.map +1 -1
- package/dist/commands/account.d.ts +1 -1
- package/dist/commands/account.d.ts.map +1 -1
- package/dist/commands/account.js +6 -9
- package/dist/commands/account.js.map +1 -1
- package/dist/commands/billing.d.ts +1 -1
- package/dist/commands/billing.d.ts.map +1 -1
- package/dist/commands/billing.js +3 -7
- package/dist/commands/billing.js.map +1 -1
- package/dist/commands/buy.d.ts +7 -7
- package/dist/commands/buy.d.ts.map +1 -1
- package/dist/commands/buy.js +45 -141
- package/dist/commands/buy.js.map +1 -1
- package/dist/commands/cart/add.d.ts +1 -1
- package/dist/commands/cart/add.d.ts.map +1 -1
- package/dist/commands/cart/add.js +9 -8
- package/dist/commands/cart/add.js.map +1 -1
- package/dist/commands/credits.js +1 -1
- package/dist/commands/dns/add.d.ts +3 -3
- package/dist/commands/dns/add.d.ts.map +1 -1
- package/dist/commands/dns/add.js +3 -3
- package/dist/commands/dns/add.js.map +1 -1
- package/dist/commands/dns/list.d.ts +3 -3
- package/dist/commands/dns/list.d.ts.map +1 -1
- package/dist/commands/dns/list.js +3 -3
- package/dist/commands/dns/list.js.map +1 -1
- package/dist/commands/dns/remove.d.ts +3 -3
- package/dist/commands/dns/remove.d.ts.map +1 -1
- package/dist/commands/dns/remove.js +3 -3
- package/dist/commands/dns/remove.js.map +1 -1
- package/dist/commands/domains/detail.d.ts +1 -1
- package/dist/commands/domains/detail.js +3 -3
- package/dist/commands/domains/detail.js.map +1 -1
- package/dist/commands/domains/list.d.ts +1 -1
- package/dist/commands/domains/list.js +3 -3
- package/dist/commands/domains/list.js.map +1 -1
- package/dist/commands/login.d.ts +6 -6
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +58 -42
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts +1 -1
- package/dist/commands/logout.js +1 -1
- package/dist/commands/search.d.ts +2 -2
- package/dist/commands/search.js +4 -4
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/settings/set.d.ts +4 -4
- package/dist/commands/settings/set.d.ts.map +1 -1
- package/dist/commands/settings/set.js +10 -11
- package/dist/commands/settings/set.js.map +1 -1
- package/dist/commands/settings/view.d.ts +3 -3
- package/dist/commands/settings/view.d.ts.map +1 -1
- package/dist/commands/settings/view.js +4 -4
- package/dist/commands/settings/view.js.map +1 -1
- package/dist/commands/vercel/link.d.ts +4 -4
- package/dist/commands/vercel/link.d.ts.map +1 -1
- package/dist/commands/vercel/link.js +8 -8
- package/dist/commands/vercel/link.js.map +1 -1
- package/dist/commands/whoami.d.ts +1 -1
- package/dist/commands/whoami.js +3 -3
- package/dist/commands/whoami.js.map +1 -1
- package/dist/components/account-card.d.ts +3 -3
- package/dist/components/account-card.d.ts.map +1 -1
- package/dist/components/account-card.js +3 -3
- package/dist/components/account-card.js.map +1 -1
- package/dist/components/command-runner.d.ts +25 -0
- package/dist/components/command-runner.d.ts.map +1 -0
- package/dist/components/command-runner.js +67 -0
- package/dist/components/command-runner.js.map +1 -0
- package/dist/components/prompt.d.ts +24 -0
- package/dist/components/prompt.d.ts.map +1 -0
- package/dist/components/prompt.js +113 -0
- package/dist/components/prompt.js.map +1 -0
- package/dist/components/search-results.d.ts +1 -1
- package/dist/components/search-results.js +1 -1
- package/dist/lib/auth.d.ts +17 -9
- package/dist/lib/auth.d.ts.map +1 -1
- package/dist/lib/auth.js +125 -46
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/command-registry.d.ts +47 -0
- package/dist/lib/command-registry.d.ts.map +1 -0
- package/dist/lib/command-registry.js +384 -0
- package/dist/lib/command-registry.js.map +1 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +0 -8
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/dns-validation.d.ts +1 -1
- package/dist/lib/dns-validation.d.ts.map +1 -1
- package/dist/lib/dns-validation.js +2 -2
- package/dist/lib/dns-validation.js.map +1 -1
- package/dist/lib/dominion-client.d.ts +43 -0
- package/dist/lib/dominion-client.d.ts.map +1 -0
- package/dist/lib/dominion-client.js +183 -0
- package/dist/lib/dominion-client.js.map +1 -0
- package/dist/lib/error-personality.js +7 -7
- package/dist/lib/error-personality.js.map +1 -1
- package/dist/lib/history.d.ts +40 -0
- package/dist/lib/history.d.ts.map +1 -0
- package/dist/lib/history.js +113 -0
- package/dist/lib/history.js.map +1 -0
- package/dist/lib/nameserver-presets.js +4 -4
- package/dist/lib/nameserver-presets.js.map +1 -1
- package/dist/lib/purchase.d.ts +20 -23
- package/dist/lib/purchase.d.ts.map +1 -1
- package/dist/lib/purchase.js +42 -70
- package/dist/lib/purchase.js.map +1 -1
- package/dist/lib/schemas.d.ts +351 -352
- package/dist/lib/schemas.d.ts.map +1 -1
- package/dist/lib/schemas.js +1 -2
- package/dist/lib/schemas.js.map +1 -1
- package/dist/lib/types.d.ts +8 -11
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +1 -4
- package/dist/lib/types.js.map +1 -1
- package/dist/repl.d.ts +17 -0
- package/dist/repl.d.ts.map +1 -0
- package/dist/repl.js +189 -0
- package/dist/repl.js.map +1 -0
- package/package.json +4 -2
package/dist/lib/purchase.js
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Purchase flow logic for domain
|
|
2
|
+
* Purchase flow logic for domain checkout.
|
|
3
3
|
*
|
|
4
4
|
* Handles the end-to-end purchase process:
|
|
5
|
-
* 1.
|
|
6
|
-
* 2.
|
|
7
|
-
* 3.
|
|
8
|
-
* 4. Clear purchased domains from cart
|
|
5
|
+
* 1. Build cart summary with prices
|
|
6
|
+
* 2. Create Stripe Checkout session via Dominion API
|
|
7
|
+
* 3. Open checkout URL in browser
|
|
8
|
+
* 4. Clear purchased domains from cart after user confirms
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
* exactly what checkAvailability returns (Name.com anti-fraud measure).
|
|
10
|
+
* All prices include markup (applied server-side by Dominion API).
|
|
12
11
|
*/
|
|
13
|
-
import {
|
|
12
|
+
import { DominionClient } from "./dominion-client.js";
|
|
14
13
|
import { ConfigManager } from "./config.js";
|
|
15
14
|
import { CartManager } from "./cart.js";
|
|
16
|
-
import { DomainError } from "./types.js";
|
|
17
15
|
// ─── Contact Info Validation ────────────────────────────────────────────────
|
|
18
16
|
/**
|
|
19
17
|
* Check if contact info exists in config.
|
|
@@ -47,80 +45,56 @@ export function loadContactInfo(configManager) {
|
|
|
47
45
|
const config = manager.load();
|
|
48
46
|
return config.contactInfo;
|
|
49
47
|
}
|
|
50
|
-
// ───
|
|
48
|
+
// ─── Checkout ───────────────────────────────────────────────────────────────
|
|
51
49
|
/**
|
|
52
|
-
*
|
|
53
|
-
* Returns the
|
|
50
|
+
* Create a Stripe Checkout session for the given domains.
|
|
51
|
+
* Returns the checkout URL to open in the browser.
|
|
54
52
|
*/
|
|
55
|
-
export async function
|
|
56
|
-
const
|
|
57
|
-
|
|
53
|
+
export async function createCheckout(domains, client) {
|
|
54
|
+
const dominionClient = client ?? new DominionClient();
|
|
55
|
+
// Price is in cents from the cart; convert to dollars for the API
|
|
56
|
+
const items = domains.map((d) => ({
|
|
57
|
+
domain: d.domain,
|
|
58
|
+
price: d.price / 100,
|
|
59
|
+
}));
|
|
60
|
+
return dominionClient.createCheckout(items);
|
|
58
61
|
}
|
|
59
|
-
// ─── Purchase Execution ─────────────────────────────────────────────────────
|
|
60
62
|
/**
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
+
* Create checkout for all domains in the cart.
|
|
64
|
+
* Returns the Stripe Checkout URL.
|
|
63
65
|
*/
|
|
64
|
-
export async function
|
|
65
|
-
const
|
|
66
|
+
export async function checkoutCart(cartManager, client) {
|
|
67
|
+
const cart = cartManager ?? new CartManager();
|
|
68
|
+
const items = cart.list();
|
|
69
|
+
if (items.length === 0) {
|
|
70
|
+
return {
|
|
71
|
+
domain: "",
|
|
72
|
+
success: false,
|
|
73
|
+
error: "Cart is empty. Add domains with `dominion search` first.",
|
|
74
|
+
errorCode: "VALIDATION_ERROR",
|
|
75
|
+
};
|
|
76
|
+
}
|
|
66
77
|
try {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
success: false,
|
|
73
|
-
error: `${domain} is no longer available for registration.`,
|
|
74
|
-
errorCode: "DOMAIN_NOT_AVAILABLE",
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
// Register with verified price (anti-fraud measure)
|
|
78
|
-
const registeredDomain = await namecomClient.registerDomain(domain, availability.purchasePrice, contactInfo);
|
|
78
|
+
const domains = items.map((item) => ({
|
|
79
|
+
domain: item.domain,
|
|
80
|
+
price: item.price, // cents
|
|
81
|
+
}));
|
|
82
|
+
const { url } = await createCheckout(domains, client);
|
|
79
83
|
return {
|
|
80
|
-
domain,
|
|
84
|
+
domain: items.map((i) => i.domain).join(", "),
|
|
81
85
|
success: true,
|
|
82
|
-
|
|
86
|
+
checkoutUrl: url,
|
|
83
87
|
};
|
|
84
88
|
}
|
|
85
89
|
catch (err) {
|
|
86
|
-
if (err instanceof DomainError) {
|
|
87
|
-
return {
|
|
88
|
-
domain,
|
|
89
|
-
success: false,
|
|
90
|
-
error: err.message,
|
|
91
|
-
errorCode: err.code,
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
90
|
return {
|
|
95
|
-
domain,
|
|
91
|
+
domain: items.map((i) => i.domain).join(", "),
|
|
96
92
|
success: false,
|
|
97
|
-
error: err instanceof Error ? err.message : "
|
|
93
|
+
error: err instanceof Error ? err.message : "Failed to create checkout session.",
|
|
98
94
|
errorCode: "API_ERROR",
|
|
99
95
|
};
|
|
100
96
|
}
|
|
101
97
|
}
|
|
102
|
-
/**
|
|
103
|
-
* Purchase all domains in the cart.
|
|
104
|
-
* Purchases sequentially (not parallel) to avoid rate limiting.
|
|
105
|
-
* Clears successful purchases from cart.
|
|
106
|
-
*/
|
|
107
|
-
export async function purchaseCartDomains(contactInfo, cartManager, client) {
|
|
108
|
-
const cart = cartManager ?? new CartManager();
|
|
109
|
-
const items = cart.list();
|
|
110
|
-
if (items.length === 0) {
|
|
111
|
-
return [];
|
|
112
|
-
}
|
|
113
|
-
const results = [];
|
|
114
|
-
for (const item of items) {
|
|
115
|
-
const result = await purchaseDomain(item.domain, contactInfo, client);
|
|
116
|
-
results.push(result);
|
|
117
|
-
// Remove from cart on success
|
|
118
|
-
if (result.success) {
|
|
119
|
-
cart.remove(item.domain);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
return results;
|
|
123
|
-
}
|
|
124
98
|
// ─── Summary Helpers ────────────────────────────────────────────────────────
|
|
125
99
|
/**
|
|
126
100
|
* Build a purchase summary from cart items.
|
|
@@ -143,18 +117,16 @@ export function buildCartSummary(items) {
|
|
|
143
117
|
export function getErrorSuggestion(errorCode) {
|
|
144
118
|
switch (errorCode) {
|
|
145
119
|
case "AUTH_ERROR":
|
|
146
|
-
return "
|
|
120
|
+
return "Run `dominion login` to re-authenticate.";
|
|
147
121
|
case "DOMAIN_NOT_AVAILABLE":
|
|
148
122
|
return "Domain may have been taken. Try `dominion search` for alternatives.";
|
|
149
123
|
case "RATE_LIMITED":
|
|
150
124
|
return "Too many requests. Wait a moment and try again.";
|
|
151
|
-
case "REGISTRATION_FAILED":
|
|
152
|
-
return "Check your Name.com account balance at https://www.name.com/account/billing";
|
|
153
125
|
case "NETWORK_ERROR":
|
|
154
126
|
return "Check your internet connection and try again.";
|
|
155
127
|
case "API_ERROR":
|
|
156
128
|
default:
|
|
157
|
-
return "
|
|
129
|
+
return "Please try again later or contact support at dominion.sh/support.";
|
|
158
130
|
}
|
|
159
131
|
}
|
|
160
132
|
//# sourceMappingURL=purchase.js.map
|
package/dist/lib/purchase.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"purchase.js","sourceRoot":"","sources":["../../src/lib/purchase.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"purchase.js","sourceRoot":"","sources":["../../src/lib/purchase.ts"],"names":[],"mappings":"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"}
|