dominion-cli 0.1.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 +304 -0
- package/dist/app.d.ts +15 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +36 -0
- package/dist/app.js.map +1 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +369 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/account.d.ts +28 -0
- package/dist/commands/account.d.ts.map +1 -0
- package/dist/commands/account.js +133 -0
- package/dist/commands/account.js.map +1 -0
- package/dist/commands/billing.d.ts +16 -0
- package/dist/commands/billing.d.ts.map +1 -0
- package/dist/commands/billing.js +61 -0
- package/dist/commands/billing.js.map +1 -0
- package/dist/commands/buy.d.ts +27 -0
- package/dist/commands/buy.d.ts.map +1 -0
- package/dist/commands/buy.js +293 -0
- package/dist/commands/buy.js.map +1 -0
- package/dist/commands/cart/add.d.ts +17 -0
- package/dist/commands/cart/add.d.ts.map +1 -0
- package/dist/commands/cart/add.js +119 -0
- package/dist/commands/cart/add.js.map +1 -0
- package/dist/commands/cart/clear.d.ts +12 -0
- package/dist/commands/cart/clear.d.ts.map +1 -0
- package/dist/commands/cart/clear.js +49 -0
- package/dist/commands/cart/clear.js.map +1 -0
- package/dist/commands/cart/index.d.ts +8 -0
- package/dist/commands/cart/index.d.ts.map +1 -0
- package/dist/commands/cart/index.js +8 -0
- package/dist/commands/cart/index.js.map +1 -0
- package/dist/commands/cart/list.d.ts +14 -0
- package/dist/commands/cart/list.d.ts.map +1 -0
- package/dist/commands/cart/list.js +51 -0
- package/dist/commands/cart/list.js.map +1 -0
- package/dist/commands/cart/remove.d.ts +13 -0
- package/dist/commands/cart/remove.d.ts.map +1 -0
- package/dist/commands/cart/remove.js +24 -0
- package/dist/commands/cart/remove.js.map +1 -0
- package/dist/commands/credits.d.ts +10 -0
- package/dist/commands/credits.d.ts.map +1 -0
- package/dist/commands/credits.js +139 -0
- package/dist/commands/credits.js.map +1 -0
- package/dist/commands/dns/add.d.ts +30 -0
- package/dist/commands/dns/add.d.ts.map +1 -0
- package/dist/commands/dns/add.js +144 -0
- package/dist/commands/dns/add.js.map +1 -0
- package/dist/commands/dns/index.d.ts +7 -0
- package/dist/commands/dns/index.d.ts.map +1 -0
- package/dist/commands/dns/index.js +7 -0
- package/dist/commands/dns/index.js.map +1 -0
- package/dist/commands/dns/list.d.ts +24 -0
- package/dist/commands/dns/list.d.ts.map +1 -0
- package/dist/commands/dns/list.js +111 -0
- package/dist/commands/dns/list.js.map +1 -0
- package/dist/commands/dns/remove.d.ts +24 -0
- package/dist/commands/dns/remove.d.ts.map +1 -0
- package/dist/commands/dns/remove.js +137 -0
- package/dist/commands/dns/remove.js.map +1 -0
- package/dist/commands/domains/detail.d.ts +20 -0
- package/dist/commands/domains/detail.d.ts.map +1 -0
- package/dist/commands/domains/detail.js +112 -0
- package/dist/commands/domains/detail.js.map +1 -0
- package/dist/commands/domains/index.d.ts +6 -0
- package/dist/commands/domains/index.d.ts.map +1 -0
- package/dist/commands/domains/index.js +6 -0
- package/dist/commands/domains/index.js.map +1 -0
- package/dist/commands/domains/list.d.ts +21 -0
- package/dist/commands/domains/list.d.ts.map +1 -0
- package/dist/commands/domains/list.js +106 -0
- package/dist/commands/domains/list.js.map +1 -0
- package/dist/commands/hack.d.ts +9 -0
- package/dist/commands/hack.d.ts.map +1 -0
- package/dist/commands/hack.js +104 -0
- package/dist/commands/hack.js.map +1 -0
- package/dist/commands/integrations.d.ts +20 -0
- package/dist/commands/integrations.d.ts.map +1 -0
- package/dist/commands/integrations.js +92 -0
- package/dist/commands/integrations.js.map +1 -0
- package/dist/commands/login.d.ts +15 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +95 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +13 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +32 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/search.d.ts +24 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +162 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/settings/index.d.ts +6 -0
- package/dist/commands/settings/index.d.ts.map +1 -0
- package/dist/commands/settings/index.js +6 -0
- package/dist/commands/settings/index.js.map +1 -0
- package/dist/commands/settings/set.d.ts +25 -0
- package/dist/commands/settings/set.d.ts.map +1 -0
- package/dist/commands/settings/set.js +215 -0
- package/dist/commands/settings/set.js.map +1 -0
- package/dist/commands/settings/view.d.ts +17 -0
- package/dist/commands/settings/view.d.ts.map +1 -0
- package/dist/commands/settings/view.js +99 -0
- package/dist/commands/settings/view.js.map +1 -0
- package/dist/commands/team/add.d.ts +17 -0
- package/dist/commands/team/add.d.ts.map +1 -0
- package/dist/commands/team/add.js +64 -0
- package/dist/commands/team/add.js.map +1 -0
- package/dist/commands/team/index.d.ts +7 -0
- package/dist/commands/team/index.d.ts.map +1 -0
- package/dist/commands/team/index.js +7 -0
- package/dist/commands/team/index.js.map +1 -0
- package/dist/commands/team/list.d.ts +13 -0
- package/dist/commands/team/list.d.ts.map +1 -0
- package/dist/commands/team/list.js +51 -0
- package/dist/commands/team/list.js.map +1 -0
- package/dist/commands/team/remove.d.ts +14 -0
- package/dist/commands/team/remove.d.ts.map +1 -0
- package/dist/commands/team/remove.js +57 -0
- package/dist/commands/team/remove.js.map +1 -0
- package/dist/commands/vercel/index.d.ts +8 -0
- package/dist/commands/vercel/index.d.ts.map +1 -0
- package/dist/commands/vercel/index.js +8 -0
- package/dist/commands/vercel/index.js.map +1 -0
- package/dist/commands/vercel/link.d.ts +25 -0
- package/dist/commands/vercel/link.d.ts.map +1 -0
- package/dist/commands/vercel/link.js +176 -0
- package/dist/commands/vercel/link.js.map +1 -0
- package/dist/commands/vercel/setup.d.ts +13 -0
- package/dist/commands/vercel/setup.d.ts.map +1 -0
- package/dist/commands/vercel/setup.js +113 -0
- package/dist/commands/vercel/setup.js.map +1 -0
- package/dist/commands/vercel/status.d.ts +15 -0
- package/dist/commands/vercel/status.d.ts.map +1 -0
- package/dist/commands/vercel/status.js +103 -0
- package/dist/commands/vercel/status.js.map +1 -0
- package/dist/commands/vercel/unlink.d.ts +16 -0
- package/dist/commands/vercel/unlink.d.ts.map +1 -0
- package/dist/commands/vercel/unlink.js +118 -0
- package/dist/commands/vercel/unlink.js.map +1 -0
- package/dist/commands/webhooks/add.d.ts +16 -0
- package/dist/commands/webhooks/add.d.ts.map +1 -0
- package/dist/commands/webhooks/add.js +61 -0
- package/dist/commands/webhooks/add.js.map +1 -0
- package/dist/commands/webhooks/index.d.ts +7 -0
- package/dist/commands/webhooks/index.d.ts.map +1 -0
- package/dist/commands/webhooks/index.js +7 -0
- package/dist/commands/webhooks/index.js.map +1 -0
- package/dist/commands/webhooks/list.d.ts +14 -0
- package/dist/commands/webhooks/list.d.ts.map +1 -0
- package/dist/commands/webhooks/list.js +47 -0
- package/dist/commands/webhooks/list.js.map +1 -0
- package/dist/commands/webhooks/remove.d.ts +14 -0
- package/dist/commands/webhooks/remove.d.ts.map +1 -0
- package/dist/commands/webhooks/remove.js +57 -0
- package/dist/commands/webhooks/remove.js.map +1 -0
- package/dist/commands/whoami.d.ts +13 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +33 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/components/account-card.d.ts +17 -0
- package/dist/components/account-card.d.ts.map +1 -0
- package/dist/components/account-card.js +19 -0
- package/dist/components/account-card.js.map +1 -0
- package/dist/components/billing-table.d.ts +22 -0
- package/dist/components/billing-table.d.ts.map +1 -0
- package/dist/components/billing-table.js +53 -0
- package/dist/components/billing-table.js.map +1 -0
- package/dist/components/celebration.d.ts +21 -0
- package/dist/components/celebration.d.ts.map +1 -0
- package/dist/components/celebration.js +55 -0
- package/dist/components/celebration.js.map +1 -0
- package/dist/components/contact-form.d.ts +23 -0
- package/dist/components/contact-form.d.ts.map +1 -0
- package/dist/components/contact-form.js +109 -0
- package/dist/components/contact-form.js.map +1 -0
- package/dist/components/dns-table.d.ts +14 -0
- package/dist/components/dns-table.d.ts.map +1 -0
- package/dist/components/dns-table.js +71 -0
- package/dist/components/dns-table.js.map +1 -0
- package/dist/components/domain-card.d.ts +14 -0
- package/dist/components/domain-card.d.ts.map +1 -0
- package/dist/components/domain-card.js +41 -0
- package/dist/components/domain-card.js.map +1 -0
- package/dist/components/domain-table.d.ts +30 -0
- package/dist/components/domain-table.d.ts.map +1 -0
- package/dist/components/domain-table.js +87 -0
- package/dist/components/domain-table.js.map +1 -0
- package/dist/components/error-display.d.ts +25 -0
- package/dist/components/error-display.d.ts.map +1 -0
- package/dist/components/error-display.js +51 -0
- package/dist/components/error-display.js.map +1 -0
- package/dist/components/layout.d.ts +14 -0
- package/dist/components/layout.d.ts.map +1 -0
- package/dist/components/layout.js +21 -0
- package/dist/components/layout.js.map +1 -0
- package/dist/components/logo.d.ts +37 -0
- package/dist/components/logo.d.ts.map +1 -0
- package/dist/components/logo.js +70 -0
- package/dist/components/logo.js.map +1 -0
- package/dist/components/matrix-rain.d.ts +17 -0
- package/dist/components/matrix-rain.d.ts.map +1 -0
- package/dist/components/matrix-rain.js +105 -0
- package/dist/components/matrix-rain.js.map +1 -0
- package/dist/components/purchase-confirmation.d.ts +17 -0
- package/dist/components/purchase-confirmation.d.ts.map +1 -0
- package/dist/components/purchase-confirmation.js +17 -0
- package/dist/components/purchase-confirmation.js.map +1 -0
- package/dist/components/search-results.d.ts +30 -0
- package/dist/components/search-results.d.ts.map +1 -0
- package/dist/components/search-results.js +53 -0
- package/dist/components/search-results.js.map +1 -0
- package/dist/components/settings-card.d.ts +14 -0
- package/dist/components/settings-card.d.ts.map +1 -0
- package/dist/components/settings-card.js +40 -0
- package/dist/components/settings-card.js.map +1 -0
- package/dist/components/spinner-messages.d.ts +19 -0
- package/dist/components/spinner-messages.d.ts.map +1 -0
- package/dist/components/spinner-messages.js +55 -0
- package/dist/components/spinner-messages.js.map +1 -0
- package/dist/lib/achievements.d.ts +107 -0
- package/dist/lib/achievements.d.ts.map +1 -0
- package/dist/lib/achievements.js +341 -0
- package/dist/lib/achievements.js.map +1 -0
- package/dist/lib/auth.d.ts +45 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +125 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/cart.d.ts +69 -0
- package/dist/lib/cart.d.ts.map +1 -0
- package/dist/lib/cart.js +131 -0
- package/dist/lib/cart.js.map +1 -0
- package/dist/lib/config.d.ts +51 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +116 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/dns-validation.d.ts +51 -0
- package/dist/lib/dns-validation.d.ts.map +1 -0
- package/dist/lib/dns-validation.js +185 -0
- package/dist/lib/dns-validation.js.map +1 -0
- package/dist/lib/easter-eggs.d.ts +21 -0
- package/dist/lib/easter-eggs.d.ts.map +1 -0
- package/dist/lib/easter-eggs.js +64 -0
- package/dist/lib/easter-eggs.js.map +1 -0
- package/dist/lib/error-personality.d.ts +35 -0
- package/dist/lib/error-personality.d.ts.map +1 -0
- package/dist/lib/error-personality.js +191 -0
- package/dist/lib/error-personality.js.map +1 -0
- package/dist/lib/errors.d.ts +8 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +7 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/konami.d.ts +51 -0
- package/dist/lib/konami.d.ts.map +1 -0
- package/dist/lib/konami.js +107 -0
- package/dist/lib/konami.js.map +1 -0
- package/dist/lib/loading-messages.d.ts +13 -0
- package/dist/lib/loading-messages.d.ts.map +1 -0
- package/dist/lib/loading-messages.js +13 -0
- package/dist/lib/loading-messages.js.map +1 -0
- package/dist/lib/namecom-client.d.ts +73 -0
- package/dist/lib/namecom-client.d.ts.map +1 -0
- package/dist/lib/namecom-client.js +260 -0
- package/dist/lib/namecom-client.js.map +1 -0
- package/dist/lib/nameserver-presets.d.ts +27 -0
- package/dist/lib/nameserver-presets.d.ts.map +1 -0
- package/dist/lib/nameserver-presets.js +45 -0
- package/dist/lib/nameserver-presets.js.map +1 -0
- package/dist/lib/purchase.d.ts +71 -0
- package/dist/lib/purchase.d.ts.map +1 -0
- package/dist/lib/purchase.js +160 -0
- package/dist/lib/purchase.js.map +1 -0
- package/dist/lib/schemas.d.ts +1968 -0
- package/dist/lib/schemas.d.ts.map +1 -0
- package/dist/lib/schemas.js +112 -0
- package/dist/lib/schemas.js.map +1 -0
- package/dist/lib/team.d.ts +71 -0
- package/dist/lib/team.d.ts.map +1 -0
- package/dist/lib/team.js +135 -0
- package/dist/lib/team.js.map +1 -0
- package/dist/lib/theme.d.ts +152 -0
- package/dist/lib/theme.d.ts.map +1 -0
- package/dist/lib/theme.js +185 -0
- package/dist/lib/theme.js.map +1 -0
- package/dist/lib/types.d.ts +136 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +19 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/vercel-client.d.ts +110 -0
- package/dist/lib/vercel-client.d.ts.map +1 -0
- package/dist/lib/vercel-client.js +196 -0
- package/dist/lib/vercel-client.js.map +1 -0
- package/dist/lib/webhooks.d.ts +83 -0
- package/dist/lib/webhooks.d.ts.map +1 -0
- package/dist/lib/webhooks.js +195 -0
- package/dist/lib/webhooks.js.map +1 -0
- package/package.json +66 -0
package/dist/cli.js
ADDED
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Dominion CLI — premium domain management from the terminal.
|
|
4
|
+
*
|
|
5
|
+
* Entry point: uses Commander for arg parsing and command routing.
|
|
6
|
+
* Each command renders an Ink component for rich TUI output.
|
|
7
|
+
*/
|
|
8
|
+
import { Command } from "commander";
|
|
9
|
+
import { render } from "ink";
|
|
10
|
+
import { createElement } from "react";
|
|
11
|
+
import { createRequire } from "node:module";
|
|
12
|
+
import { setNoColor, setQuiet } from "./lib/theme.js";
|
|
13
|
+
import { App } from "./app.js";
|
|
14
|
+
import { Login } from "./commands/login.js";
|
|
15
|
+
import { Logout } from "./commands/logout.js";
|
|
16
|
+
import { Whoami } from "./commands/whoami.js";
|
|
17
|
+
import { Search } from "./commands/search.js";
|
|
18
|
+
import { CartList, CartAdd, CartRemove, CartClear } from "./commands/cart/index.js";
|
|
19
|
+
import { Buy } from "./commands/buy.js";
|
|
20
|
+
import { DomainsList, DomainDetail } from "./commands/domains/index.js";
|
|
21
|
+
import { DnsList, DnsAdd, DnsRemove } from "./commands/dns/index.js";
|
|
22
|
+
import { SettingsView, SettingsSet } from "./commands/settings/index.js";
|
|
23
|
+
import { VercelStatus, VercelSetup, VercelLink, VercelUnlink } from "./commands/vercel/index.js";
|
|
24
|
+
import { Account, AccountSetContact, AccountSetEmail } from "./commands/account.js";
|
|
25
|
+
import { Billing } from "./commands/billing.js";
|
|
26
|
+
import { TeamList, TeamAdd, TeamRemove } from "./commands/team/index.js";
|
|
27
|
+
import { WebhooksList, WebhooksAdd, WebhooksRemove } from "./commands/webhooks/index.js";
|
|
28
|
+
import { Integrations } from "./commands/integrations.js";
|
|
29
|
+
import { Layout } from "./components/layout.js";
|
|
30
|
+
import { Hack } from "./commands/hack.js";
|
|
31
|
+
import { Credits } from "./commands/credits.js";
|
|
32
|
+
import { AchievementManager } from "./lib/achievements.js";
|
|
33
|
+
const require = createRequire(import.meta.url);
|
|
34
|
+
const pkg = require("../package.json");
|
|
35
|
+
const program = new Command();
|
|
36
|
+
program
|
|
37
|
+
.name("dominion")
|
|
38
|
+
.description(pkg.description)
|
|
39
|
+
.version(pkg.version, "-v, --version", "Print the current version")
|
|
40
|
+
.helpOption("-h, --help", "Display help for command")
|
|
41
|
+
.option("--no-color", "Disable all ANSI color output")
|
|
42
|
+
.option("--quiet", "Suppress decorative output (logos, animations) for scripting");
|
|
43
|
+
// ─── Apply global flags before any command runs ─────────────────────────────
|
|
44
|
+
program.hook("preAction", (thisCommand) => {
|
|
45
|
+
const opts = thisCommand.opts();
|
|
46
|
+
if (opts.color === false) {
|
|
47
|
+
setNoColor(true);
|
|
48
|
+
}
|
|
49
|
+
if (opts.quiet) {
|
|
50
|
+
setQuiet(true);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
// ─── Top-level commands ─────────────────────────────────────────────────────
|
|
54
|
+
program
|
|
55
|
+
.command("login")
|
|
56
|
+
.description("Authenticate with your Name.com API credentials")
|
|
57
|
+
.option("--browser", "Open Name.com API keys page in browser")
|
|
58
|
+
.action((opts) => {
|
|
59
|
+
render(createElement(Layout, {}, createElement(Login, { browser: opts.browser })));
|
|
60
|
+
});
|
|
61
|
+
program
|
|
62
|
+
.command("logout")
|
|
63
|
+
.description("Clear stored credentials")
|
|
64
|
+
.action(() => {
|
|
65
|
+
render(createElement(Layout, {}, createElement(Logout)));
|
|
66
|
+
});
|
|
67
|
+
program
|
|
68
|
+
.command("whoami")
|
|
69
|
+
.description("Display authenticated user info")
|
|
70
|
+
.action(() => {
|
|
71
|
+
render(createElement(Layout, {}, createElement(Whoami)));
|
|
72
|
+
});
|
|
73
|
+
program
|
|
74
|
+
.command("search <query>")
|
|
75
|
+
.description("Search for available domains")
|
|
76
|
+
.option("--tld <tlds>", "Filter by TLDs (comma-separated)")
|
|
77
|
+
.option("--max-price <price>", "Maximum price in dollars", parseFloat)
|
|
78
|
+
.action((query, opts) => {
|
|
79
|
+
render(createElement(Layout, {}, createElement(Search, {
|
|
80
|
+
query,
|
|
81
|
+
tld: opts.tld,
|
|
82
|
+
maxPrice: opts.maxPrice,
|
|
83
|
+
})));
|
|
84
|
+
});
|
|
85
|
+
// ─── Cart commands ───────────────────────────────────────────────────────────
|
|
86
|
+
const cart = program
|
|
87
|
+
.command("cart")
|
|
88
|
+
.description("Manage your domain shopping cart");
|
|
89
|
+
cart
|
|
90
|
+
.command("list")
|
|
91
|
+
.description("View cart contents")
|
|
92
|
+
.action(() => {
|
|
93
|
+
render(createElement(Layout, {}, createElement(CartList)));
|
|
94
|
+
});
|
|
95
|
+
cart
|
|
96
|
+
.command("add <domain>")
|
|
97
|
+
.description("Add a domain to your cart")
|
|
98
|
+
.action((domain) => {
|
|
99
|
+
render(createElement(Layout, {}, createElement(CartAdd, { domain })));
|
|
100
|
+
});
|
|
101
|
+
cart
|
|
102
|
+
.command("remove <domain>")
|
|
103
|
+
.description("Remove a domain from your cart")
|
|
104
|
+
.action((domain) => {
|
|
105
|
+
render(createElement(Layout, {}, createElement(CartRemove, { domain })));
|
|
106
|
+
});
|
|
107
|
+
cart
|
|
108
|
+
.command("clear")
|
|
109
|
+
.description("Clear all items from your cart")
|
|
110
|
+
.action(() => {
|
|
111
|
+
render(createElement(Layout, {}, createElement(CartClear)));
|
|
112
|
+
});
|
|
113
|
+
// Default cart action (no subcommand → list)
|
|
114
|
+
cart.action(() => {
|
|
115
|
+
render(createElement(Layout, {}, createElement(CartList)));
|
|
116
|
+
});
|
|
117
|
+
// ─── Buy command ─────────────────────────────────────────────────────────────
|
|
118
|
+
program
|
|
119
|
+
.command("buy [domain]")
|
|
120
|
+
.description("Purchase domain(s) from cart or by name")
|
|
121
|
+
.option("--yes", "Skip confirmation prompt")
|
|
122
|
+
.action((domain, opts) => {
|
|
123
|
+
render(createElement(Layout, {}, createElement(Buy, { domain, yes: opts.yes })));
|
|
124
|
+
});
|
|
125
|
+
// ─── Domains commands ────────────────────────────────────────────────────────
|
|
126
|
+
program
|
|
127
|
+
.command("domains [domain]")
|
|
128
|
+
.alias("domains ls")
|
|
129
|
+
.description("List domains or view domain details")
|
|
130
|
+
.option("--json", "Output raw JSON")
|
|
131
|
+
.action((domain, opts) => {
|
|
132
|
+
if (domain) {
|
|
133
|
+
// Detail view for a specific domain
|
|
134
|
+
render(createElement(Layout, {}, createElement(DomainDetail, { domain, json: opts.json })));
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
// List all domains
|
|
138
|
+
render(createElement(Layout, {}, createElement(DomainsList, { json: opts.json })));
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
// ─── DNS commands ────────────────────────────────────────────────────────────
|
|
142
|
+
const dns = program
|
|
143
|
+
.command("dns <domain>")
|
|
144
|
+
.description("Manage DNS records for a domain");
|
|
145
|
+
dns
|
|
146
|
+
.command("list")
|
|
147
|
+
.description("List DNS records")
|
|
148
|
+
.option("--json", "Output raw JSON")
|
|
149
|
+
.action((opts) => {
|
|
150
|
+
const domain = dns.args[0];
|
|
151
|
+
render(createElement(Layout, {}, createElement(DnsList, { domain, json: opts.json })));
|
|
152
|
+
});
|
|
153
|
+
dns
|
|
154
|
+
.command("add <type> <name> <value>")
|
|
155
|
+
.description("Add a DNS record")
|
|
156
|
+
.option("--ttl <seconds>", "TTL in seconds (default: 300)", parseInt)
|
|
157
|
+
.option("--priority <number>", "Priority for MX/SRV records", parseInt)
|
|
158
|
+
.option("--json", "Output raw JSON")
|
|
159
|
+
.action((type, name, value, opts) => {
|
|
160
|
+
const domain = dns.args[0];
|
|
161
|
+
render(createElement(Layout, {}, createElement(DnsAdd, {
|
|
162
|
+
domain,
|
|
163
|
+
type,
|
|
164
|
+
name,
|
|
165
|
+
value,
|
|
166
|
+
ttl: opts.ttl,
|
|
167
|
+
priority: opts.priority,
|
|
168
|
+
json: opts.json,
|
|
169
|
+
})));
|
|
170
|
+
});
|
|
171
|
+
dns
|
|
172
|
+
.command("remove <record-id>")
|
|
173
|
+
.description("Remove a DNS record")
|
|
174
|
+
.option("--json", "Output raw JSON")
|
|
175
|
+
.action((recordId, opts) => {
|
|
176
|
+
const domain = dns.args[0];
|
|
177
|
+
render(createElement(Layout, {}, createElement(DnsRemove, {
|
|
178
|
+
domain,
|
|
179
|
+
recordId: parseInt(recordId, 10),
|
|
180
|
+
json: opts.json,
|
|
181
|
+
})));
|
|
182
|
+
});
|
|
183
|
+
// Default dns action (no subcommand → list)
|
|
184
|
+
dns.action((domain) => {
|
|
185
|
+
render(createElement(Layout, {}, createElement(DnsList, { domain })));
|
|
186
|
+
});
|
|
187
|
+
// ─── Settings commands ───────────────────────────────────────────────────────
|
|
188
|
+
const settings = program
|
|
189
|
+
.command("settings <domain>")
|
|
190
|
+
.description("View or modify domain settings");
|
|
191
|
+
settings
|
|
192
|
+
.command("set <key> <value>")
|
|
193
|
+
.description("Update a domain setting (autorenew, lock, nameservers)")
|
|
194
|
+
.option("--preset <preset>", "Use a nameserver preset (vercel, namecom)")
|
|
195
|
+
.action((key, value, opts) => {
|
|
196
|
+
const domain = settings.args[0];
|
|
197
|
+
render(createElement(Layout, {}, createElement(SettingsSet, {
|
|
198
|
+
domain,
|
|
199
|
+
settingKey: key,
|
|
200
|
+
settingValue: value,
|
|
201
|
+
preset: opts.preset,
|
|
202
|
+
})));
|
|
203
|
+
});
|
|
204
|
+
// Default settings action (view)
|
|
205
|
+
settings.action((domain) => {
|
|
206
|
+
render(createElement(Layout, {}, createElement(SettingsView, { domain })));
|
|
207
|
+
});
|
|
208
|
+
// ─── Account & Billing ───────────────────────────────────────────────────────
|
|
209
|
+
const account = program
|
|
210
|
+
.command("account")
|
|
211
|
+
.description("View account details and manage contact info");
|
|
212
|
+
const accountSet = account
|
|
213
|
+
.command("set")
|
|
214
|
+
.description("Update account settings");
|
|
215
|
+
accountSet
|
|
216
|
+
.command("contact")
|
|
217
|
+
.description("Set or update WHOIS contact info interactively")
|
|
218
|
+
.action(() => {
|
|
219
|
+
render(createElement(Layout, {}, createElement(AccountSetContact)));
|
|
220
|
+
});
|
|
221
|
+
accountSet
|
|
222
|
+
.command("email <email>")
|
|
223
|
+
.description("Update the contact email address")
|
|
224
|
+
.action((email) => {
|
|
225
|
+
render(createElement(Layout, {}, createElement(AccountSetEmail, { email })));
|
|
226
|
+
});
|
|
227
|
+
// Default account action (view)
|
|
228
|
+
account.action(() => {
|
|
229
|
+
render(createElement(Layout, {}, createElement(Account)));
|
|
230
|
+
});
|
|
231
|
+
program
|
|
232
|
+
.command("billing")
|
|
233
|
+
.description("View domain billing summary")
|
|
234
|
+
.action(() => {
|
|
235
|
+
render(createElement(Layout, {}, createElement(Billing)));
|
|
236
|
+
});
|
|
237
|
+
// ─── Team commands ───────────────────────────────────────────────────────────
|
|
238
|
+
const team = program
|
|
239
|
+
.command("team")
|
|
240
|
+
.description("Manage team members");
|
|
241
|
+
team
|
|
242
|
+
.command("list")
|
|
243
|
+
.description("List team members")
|
|
244
|
+
.action(() => {
|
|
245
|
+
render(createElement(Layout, {}, createElement(TeamList)));
|
|
246
|
+
});
|
|
247
|
+
team
|
|
248
|
+
.command("add <email>")
|
|
249
|
+
.description("Add a team member")
|
|
250
|
+
.option("--role <role>", "Member role (admin, member, viewer)")
|
|
251
|
+
.option("--name <name>", "Member display name")
|
|
252
|
+
.action((email, opts) => {
|
|
253
|
+
render(createElement(Layout, {}, createElement(TeamAdd, { email, role: opts.role, name: opts.name })));
|
|
254
|
+
});
|
|
255
|
+
team
|
|
256
|
+
.command("remove <member>")
|
|
257
|
+
.description("Remove a team member")
|
|
258
|
+
.action((member) => {
|
|
259
|
+
render(createElement(Layout, {}, createElement(TeamRemove, { member })));
|
|
260
|
+
});
|
|
261
|
+
// Default team action (no subcommand → list)
|
|
262
|
+
team.action(() => {
|
|
263
|
+
render(createElement(Layout, {}, createElement(TeamList)));
|
|
264
|
+
});
|
|
265
|
+
// ─── Integrations ────────────────────────────────────────────────────────────
|
|
266
|
+
program
|
|
267
|
+
.command("integrations")
|
|
268
|
+
.description("View available integrations and connection status")
|
|
269
|
+
.action(() => {
|
|
270
|
+
render(createElement(Layout, {}, createElement(Integrations)));
|
|
271
|
+
});
|
|
272
|
+
// ─── Vercel commands ─────────────────────────────────────────────────────────
|
|
273
|
+
const vercel = program
|
|
274
|
+
.command("vercel")
|
|
275
|
+
.description("Manage Vercel integration");
|
|
276
|
+
vercel
|
|
277
|
+
.command("status")
|
|
278
|
+
.description("View Vercel integration status")
|
|
279
|
+
.action(() => {
|
|
280
|
+
render(createElement(Layout, {}, createElement(VercelStatus)));
|
|
281
|
+
});
|
|
282
|
+
vercel
|
|
283
|
+
.command("link <domain>")
|
|
284
|
+
.description("Link a domain to Vercel project")
|
|
285
|
+
.action((domain) => {
|
|
286
|
+
render(createElement(Layout, {}, createElement(VercelLink, { domain })));
|
|
287
|
+
});
|
|
288
|
+
vercel
|
|
289
|
+
.command("unlink <domain>")
|
|
290
|
+
.description("Unlink a domain from Vercel project")
|
|
291
|
+
.action((domain) => {
|
|
292
|
+
render(createElement(Layout, {}, createElement(VercelUnlink, { domain })));
|
|
293
|
+
});
|
|
294
|
+
vercel
|
|
295
|
+
.command("setup")
|
|
296
|
+
.description("Configure Vercel integration")
|
|
297
|
+
.action(() => {
|
|
298
|
+
render(createElement(Layout, {}, createElement(VercelSetup)));
|
|
299
|
+
});
|
|
300
|
+
// Default vercel action (no subcommand → status)
|
|
301
|
+
vercel.action(() => {
|
|
302
|
+
render(createElement(Layout, {}, createElement(VercelStatus)));
|
|
303
|
+
});
|
|
304
|
+
// ─── Webhooks commands ───────────────────────────────────────────────────────
|
|
305
|
+
const webhooks = program
|
|
306
|
+
.command("webhooks")
|
|
307
|
+
.description("Manage webhooks");
|
|
308
|
+
webhooks
|
|
309
|
+
.command("list")
|
|
310
|
+
.description("List configured webhooks")
|
|
311
|
+
.action(() => {
|
|
312
|
+
render(createElement(Layout, {}, createElement(WebhooksList)));
|
|
313
|
+
});
|
|
314
|
+
webhooks
|
|
315
|
+
.command("add <url>")
|
|
316
|
+
.description("Add a webhook")
|
|
317
|
+
.option("--events <events>", "Comma-separated events (domain.registered,domain.expired,dns.changed,domain.renewed)")
|
|
318
|
+
.action((url, opts) => {
|
|
319
|
+
render(createElement(Layout, {}, createElement(WebhooksAdd, { url, events: opts.events })));
|
|
320
|
+
});
|
|
321
|
+
webhooks
|
|
322
|
+
.command("remove <id>")
|
|
323
|
+
.description("Remove a webhook by ID")
|
|
324
|
+
.action((id) => {
|
|
325
|
+
render(createElement(Layout, {}, createElement(WebhooksRemove, { id })));
|
|
326
|
+
});
|
|
327
|
+
// Default webhooks action (no subcommand → list)
|
|
328
|
+
webhooks.action(() => {
|
|
329
|
+
render(createElement(Layout, {}, createElement(WebhooksList)));
|
|
330
|
+
});
|
|
331
|
+
// ─── Credits command (listed) ─────────────────────────────────────────────
|
|
332
|
+
program
|
|
333
|
+
.command("credits")
|
|
334
|
+
.description("View the credits")
|
|
335
|
+
.action(() => {
|
|
336
|
+
render(createElement(Credits));
|
|
337
|
+
});
|
|
338
|
+
// ─── Hidden hack command (NOT listed in --help) ──────────────────────────
|
|
339
|
+
program
|
|
340
|
+
.command("hack", { hidden: true })
|
|
341
|
+
.action(() => {
|
|
342
|
+
render(createElement(Layout, {}, createElement(Hack)));
|
|
343
|
+
});
|
|
344
|
+
// ─── Parse and run ───────────────────────────────────────────────────────────
|
|
345
|
+
// Check time-based achievements on startup (best-effort)
|
|
346
|
+
try {
|
|
347
|
+
const am = new AchievementManager();
|
|
348
|
+
am.checkTimeBased();
|
|
349
|
+
am.checkEarlyAdopter(pkg.version);
|
|
350
|
+
}
|
|
351
|
+
catch {
|
|
352
|
+
// Never block CLI startup
|
|
353
|
+
}
|
|
354
|
+
// Handle global flags for no-arg invocation (preAction hook won't fire)
|
|
355
|
+
const rawArgs = process.argv.slice(2);
|
|
356
|
+
const hasNoColor = rawArgs.includes("--no-color");
|
|
357
|
+
const hasQuiet = rawArgs.includes("--quiet");
|
|
358
|
+
if (hasNoColor)
|
|
359
|
+
setNoColor(true);
|
|
360
|
+
if (hasQuiet)
|
|
361
|
+
setQuiet(true);
|
|
362
|
+
program.parse(process.argv);
|
|
363
|
+
// If no command provided, show the welcome screen with full logo
|
|
364
|
+
const nonFlagArgs = rawArgs.filter((a) => !a.startsWith("-"));
|
|
365
|
+
if (nonFlagArgs.length === 0) {
|
|
366
|
+
const { unmount } = render(createElement(App, { version: pkg.version }));
|
|
367
|
+
setTimeout(() => unmount(), 100);
|
|
368
|
+
}
|
|
369
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* dominion account — view and manage account details.
|
|
3
|
+
*
|
|
4
|
+
* Displays: Name.com username, total domains, config file location,
|
|
5
|
+
* stored contact info (if set), integration status (Vercel y/n).
|
|
6
|
+
*
|
|
7
|
+
* Subcommands:
|
|
8
|
+
* dominion account set contact — interactive contact form
|
|
9
|
+
* dominion account set email <email> — update contact email
|
|
10
|
+
*
|
|
11
|
+
* Requires authentication. Shows login hint if not authenticated.
|
|
12
|
+
*/
|
|
13
|
+
import { ConfigManager } from "../lib/config.js";
|
|
14
|
+
export interface AccountProps {
|
|
15
|
+
configManager?: ConfigManager;
|
|
16
|
+
}
|
|
17
|
+
export declare function Account({ configManager }: AccountProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export interface AccountSetContactProps {
|
|
19
|
+
configManager?: ConfigManager;
|
|
20
|
+
}
|
|
21
|
+
export declare function AccountSetContact({ configManager }: AccountSetContactProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export interface AccountSetEmailProps {
|
|
23
|
+
email: string;
|
|
24
|
+
configManager?: ConfigManager;
|
|
25
|
+
}
|
|
26
|
+
export declare function AccountSetEmail({ email, configManager }: AccountSetEmailProps): import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
export default Account;
|
|
28
|
+
//# sourceMappingURL=account.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/commands/account.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AASjD,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAID,wBAAgB,OAAO,CAAC,EAAE,aAAa,EAAE,EAAE,YAAY,2CA4EtD;AAID,MAAM,WAAW,sBAAsB;IACrC,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,wBAAgB,iBAAiB,CAAC,EAAE,aAAa,EAAE,EAAE,sBAAsB,2CAoC1E;AAID,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,oBAAoB,2CAkE7E;AAED,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* dominion account — view and manage account details.
|
|
4
|
+
*
|
|
5
|
+
* Displays: Name.com username, total domains, config file location,
|
|
6
|
+
* stored contact info (if set), integration status (Vercel y/n).
|
|
7
|
+
*
|
|
8
|
+
* Subcommands:
|
|
9
|
+
* dominion account set contact — interactive contact form
|
|
10
|
+
* dominion account set email <email> — update contact email
|
|
11
|
+
*
|
|
12
|
+
* Requires authentication. Shows login hint if not authenticated.
|
|
13
|
+
*/
|
|
14
|
+
import { Box, Text, useApp } from "ink";
|
|
15
|
+
import { useEffect, useState } from "react";
|
|
16
|
+
import { ConfigManager } from "../lib/config.js";
|
|
17
|
+
import { NamecomClient } from "../lib/namecom-client.js";
|
|
18
|
+
import { getAuthStatus } from "../lib/auth.js";
|
|
19
|
+
import { AccountCard } from "../components/account-card.js";
|
|
20
|
+
import { ContactForm } from "../components/contact-form.js";
|
|
21
|
+
export function Account({ configManager }) {
|
|
22
|
+
const { exit } = useApp();
|
|
23
|
+
const [state, setState] = useState("loading");
|
|
24
|
+
const [errorMsg, setErrorMsg] = useState("");
|
|
25
|
+
const [username, setUsername] = useState("");
|
|
26
|
+
const [domainCount, setDomainCount] = useState(0);
|
|
27
|
+
const [configPath, setConfigPath] = useState("");
|
|
28
|
+
const [contactInfo, setContactInfo] = useState();
|
|
29
|
+
const [vercelConnected, setVercelConnected] = useState(false);
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
const manager = configManager ?? new ConfigManager();
|
|
32
|
+
const auth = getAuthStatus(manager);
|
|
33
|
+
if (!auth.authenticated) {
|
|
34
|
+
setErrorMsg("not_authenticated");
|
|
35
|
+
setState("error");
|
|
36
|
+
setTimeout(() => exit(), 100);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const config = manager.load();
|
|
40
|
+
setUsername(auth.username ?? "");
|
|
41
|
+
setConfigPath(auth.configPath);
|
|
42
|
+
setContactInfo(config.contactInfo);
|
|
43
|
+
setVercelConnected(!!(config.vercel?.token));
|
|
44
|
+
// Fetch domain count from API
|
|
45
|
+
const client = new NamecomClient({
|
|
46
|
+
username: config.namecom.username,
|
|
47
|
+
token: config.namecom.token,
|
|
48
|
+
});
|
|
49
|
+
client
|
|
50
|
+
.listDomainsAllPages()
|
|
51
|
+
.then((domains) => {
|
|
52
|
+
setDomainCount(domains.length);
|
|
53
|
+
setState("done");
|
|
54
|
+
setTimeout(() => exit(), 100);
|
|
55
|
+
})
|
|
56
|
+
.catch((err) => {
|
|
57
|
+
// Still show account info even if API call fails
|
|
58
|
+
setDomainCount(0);
|
|
59
|
+
setState("done");
|
|
60
|
+
setTimeout(() => exit(), 100);
|
|
61
|
+
});
|
|
62
|
+
}, [configManager, exit]);
|
|
63
|
+
if (state === "loading") {
|
|
64
|
+
return (_jsx(Box, { children: _jsx(Text, { color: "yellow", children: "Loading account information..." }) }));
|
|
65
|
+
}
|
|
66
|
+
if (state === "error" && errorMsg === "not_authenticated") {
|
|
67
|
+
return (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsx(Text, { color: "yellow", bold: true, children: "Not logged in" }), _jsxs(Text, { color: "gray", children: ["Please run ", _jsx(Text, { bold: true, color: "white", children: "dominion login" }), " first."] })] }));
|
|
68
|
+
}
|
|
69
|
+
return (_jsx(AccountCard, { username: username, domainCount: domainCount, configPath: configPath, contactInfo: contactInfo, vercelConnected: vercelConnected }));
|
|
70
|
+
}
|
|
71
|
+
export function AccountSetContact({ configManager }) {
|
|
72
|
+
const { exit } = useApp();
|
|
73
|
+
const manager = configManager ?? new ConfigManager();
|
|
74
|
+
const auth = getAuthStatus(manager);
|
|
75
|
+
if (!auth.authenticated) {
|
|
76
|
+
return (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsx(Text, { color: "yellow", bold: true, children: "Not logged in" }), _jsxs(Text, { color: "gray", children: ["Please run ", _jsx(Text, { bold: true, color: "white", children: "dominion login" }), " first."] })] }));
|
|
77
|
+
}
|
|
78
|
+
const config = manager.load();
|
|
79
|
+
const handleComplete = (contact) => {
|
|
80
|
+
manager.set("contactInfo", contact);
|
|
81
|
+
setTimeout(() => exit(), 100);
|
|
82
|
+
};
|
|
83
|
+
const handleCancel = () => {
|
|
84
|
+
setTimeout(() => exit(), 100);
|
|
85
|
+
};
|
|
86
|
+
return (_jsx(Box, { flexDirection: "column", gap: 1, children: _jsx(ContactForm, { onComplete: handleComplete, onCancel: handleCancel, existingContact: config.contactInfo }) }));
|
|
87
|
+
}
|
|
88
|
+
export function AccountSetEmail({ email, configManager }) {
|
|
89
|
+
const { exit } = useApp();
|
|
90
|
+
const [done, setDone] = useState(false);
|
|
91
|
+
useEffect(() => {
|
|
92
|
+
const manager = configManager ?? new ConfigManager();
|
|
93
|
+
const auth = getAuthStatus(manager);
|
|
94
|
+
if (!auth.authenticated) {
|
|
95
|
+
setDone(false);
|
|
96
|
+
setTimeout(() => exit(), 100);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const config = manager.load();
|
|
100
|
+
const currentContact = config.contactInfo;
|
|
101
|
+
if (currentContact) {
|
|
102
|
+
// Update email on existing contact
|
|
103
|
+
manager.set("contactInfo", { ...currentContact, email });
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
// Create minimal contact with just email
|
|
107
|
+
manager.set("contactInfo", {
|
|
108
|
+
firstName: "",
|
|
109
|
+
lastName: "",
|
|
110
|
+
email,
|
|
111
|
+
phone: "",
|
|
112
|
+
address1: "",
|
|
113
|
+
city: "",
|
|
114
|
+
state: "",
|
|
115
|
+
zip: "",
|
|
116
|
+
country: "",
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
setDone(true);
|
|
120
|
+
setTimeout(() => exit(), 100);
|
|
121
|
+
}, [email, configManager, exit]);
|
|
122
|
+
const manager = configManager ?? new ConfigManager();
|
|
123
|
+
const auth = getAuthStatus(manager);
|
|
124
|
+
if (!auth.authenticated) {
|
|
125
|
+
return (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsx(Text, { color: "yellow", bold: true, children: "Not logged in" }), _jsxs(Text, { color: "gray", children: ["Please run ", _jsx(Text, { bold: true, color: "white", children: "dominion login" }), " first."] })] }));
|
|
126
|
+
}
|
|
127
|
+
if (!done) {
|
|
128
|
+
return (_jsx(Box, { children: _jsx(Text, { color: "yellow", children: "Updating email..." }) }));
|
|
129
|
+
}
|
|
130
|
+
return (_jsx(Box, { flexDirection: "column", gap: 1, children: _jsxs(Text, { color: "green", children: ["Contact email updated to: ", _jsx(Text, { bold: true, children: email })] }) }));
|
|
131
|
+
}
|
|
132
|
+
export default Account;
|
|
133
|
+
//# sourceMappingURL=account.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/commands/account.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* dominion billing — view domain billing summary.
|
|
3
|
+
*
|
|
4
|
+
* Displays: list of domains with renewal price, next renewal date,
|
|
5
|
+
* annual total, total domains, and next upcoming renewal.
|
|
6
|
+
*
|
|
7
|
+
* Data sourced from NamecomClient.listDomains() renewalPrice field.
|
|
8
|
+
* Requires authentication.
|
|
9
|
+
*/
|
|
10
|
+
import { ConfigManager } from "../lib/config.js";
|
|
11
|
+
export interface BillingProps {
|
|
12
|
+
configManager?: ConfigManager;
|
|
13
|
+
}
|
|
14
|
+
export declare function Billing({ configManager }: BillingProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export default Billing;
|
|
16
|
+
//# sourceMappingURL=billing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../src/commands/billing.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMjD,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAID,wBAAgB,OAAO,CAAC,EAAE,aAAa,EAAE,EAAE,YAAY,2CAkEtD;AAED,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* dominion billing — view domain billing summary.
|
|
4
|
+
*
|
|
5
|
+
* Displays: list of domains with renewal price, next renewal date,
|
|
6
|
+
* annual total, total domains, and next upcoming renewal.
|
|
7
|
+
*
|
|
8
|
+
* Data sourced from NamecomClient.listDomains() renewalPrice field.
|
|
9
|
+
* Requires authentication.
|
|
10
|
+
*/
|
|
11
|
+
import { Box, Text, useApp } from "ink";
|
|
12
|
+
import { useEffect, useState } from "react";
|
|
13
|
+
import { ConfigManager } from "../lib/config.js";
|
|
14
|
+
import { NamecomClient } from "../lib/namecom-client.js";
|
|
15
|
+
import { getAuthStatus } from "../lib/auth.js";
|
|
16
|
+
import { BillingTable } from "../components/billing-table.js";
|
|
17
|
+
export function Billing({ configManager }) {
|
|
18
|
+
const { exit } = useApp();
|
|
19
|
+
const [state, setState] = useState("loading");
|
|
20
|
+
const [errorMsg, setErrorMsg] = useState("");
|
|
21
|
+
const [domains, setDomains] = useState([]);
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
const manager = configManager ?? new ConfigManager();
|
|
24
|
+
const auth = getAuthStatus(manager);
|
|
25
|
+
if (!auth.authenticated) {
|
|
26
|
+
setErrorMsg("not_authenticated");
|
|
27
|
+
setState("error");
|
|
28
|
+
setTimeout(() => exit(), 100);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const config = manager.load();
|
|
32
|
+
const client = new NamecomClient({
|
|
33
|
+
username: config.namecom.username,
|
|
34
|
+
token: config.namecom.token,
|
|
35
|
+
});
|
|
36
|
+
client
|
|
37
|
+
.listDomainsAllPages()
|
|
38
|
+
.then((allDomains) => {
|
|
39
|
+
setDomains(allDomains);
|
|
40
|
+
setState("done");
|
|
41
|
+
setTimeout(() => exit(), 100);
|
|
42
|
+
})
|
|
43
|
+
.catch((err) => {
|
|
44
|
+
setErrorMsg(err instanceof Error ? err.message : "Failed to fetch domains");
|
|
45
|
+
setState("error");
|
|
46
|
+
setTimeout(() => exit(), 100);
|
|
47
|
+
});
|
|
48
|
+
}, [configManager, exit]);
|
|
49
|
+
if (state === "loading") {
|
|
50
|
+
return (_jsx(Box, { children: _jsx(Text, { color: "yellow", children: "Loading billing information..." }) }));
|
|
51
|
+
}
|
|
52
|
+
if (state === "error" && errorMsg === "not_authenticated") {
|
|
53
|
+
return (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsx(Text, { color: "yellow", bold: true, children: "Not logged in" }), _jsxs(Text, { color: "gray", children: ["Please run ", _jsx(Text, { bold: true, color: "white", children: "dominion login" }), " first."] })] }));
|
|
54
|
+
}
|
|
55
|
+
if (state === "error") {
|
|
56
|
+
return (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsx(Text, { color: "red", bold: true, children: "Error loading billing data" }), _jsx(Text, { color: "gray", children: errorMsg })] }));
|
|
57
|
+
}
|
|
58
|
+
return _jsx(BillingTable, { domains: domains });
|
|
59
|
+
}
|
|
60
|
+
export default Billing;
|
|
61
|
+
//# sourceMappingURL=billing.js.map
|