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.
Files changed (298) hide show
  1. package/README.md +304 -0
  2. package/dist/app.d.ts +15 -0
  3. package/dist/app.d.ts.map +1 -0
  4. package/dist/app.js +36 -0
  5. package/dist/app.js.map +1 -0
  6. package/dist/cli.d.ts +9 -0
  7. package/dist/cli.d.ts.map +1 -0
  8. package/dist/cli.js +369 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/commands/account.d.ts +28 -0
  11. package/dist/commands/account.d.ts.map +1 -0
  12. package/dist/commands/account.js +133 -0
  13. package/dist/commands/account.js.map +1 -0
  14. package/dist/commands/billing.d.ts +16 -0
  15. package/dist/commands/billing.d.ts.map +1 -0
  16. package/dist/commands/billing.js +61 -0
  17. package/dist/commands/billing.js.map +1 -0
  18. package/dist/commands/buy.d.ts +27 -0
  19. package/dist/commands/buy.d.ts.map +1 -0
  20. package/dist/commands/buy.js +293 -0
  21. package/dist/commands/buy.js.map +1 -0
  22. package/dist/commands/cart/add.d.ts +17 -0
  23. package/dist/commands/cart/add.d.ts.map +1 -0
  24. package/dist/commands/cart/add.js +119 -0
  25. package/dist/commands/cart/add.js.map +1 -0
  26. package/dist/commands/cart/clear.d.ts +12 -0
  27. package/dist/commands/cart/clear.d.ts.map +1 -0
  28. package/dist/commands/cart/clear.js +49 -0
  29. package/dist/commands/cart/clear.js.map +1 -0
  30. package/dist/commands/cart/index.d.ts +8 -0
  31. package/dist/commands/cart/index.d.ts.map +1 -0
  32. package/dist/commands/cart/index.js +8 -0
  33. package/dist/commands/cart/index.js.map +1 -0
  34. package/dist/commands/cart/list.d.ts +14 -0
  35. package/dist/commands/cart/list.d.ts.map +1 -0
  36. package/dist/commands/cart/list.js +51 -0
  37. package/dist/commands/cart/list.js.map +1 -0
  38. package/dist/commands/cart/remove.d.ts +13 -0
  39. package/dist/commands/cart/remove.d.ts.map +1 -0
  40. package/dist/commands/cart/remove.js +24 -0
  41. package/dist/commands/cart/remove.js.map +1 -0
  42. package/dist/commands/credits.d.ts +10 -0
  43. package/dist/commands/credits.d.ts.map +1 -0
  44. package/dist/commands/credits.js +139 -0
  45. package/dist/commands/credits.js.map +1 -0
  46. package/dist/commands/dns/add.d.ts +30 -0
  47. package/dist/commands/dns/add.d.ts.map +1 -0
  48. package/dist/commands/dns/add.js +144 -0
  49. package/dist/commands/dns/add.js.map +1 -0
  50. package/dist/commands/dns/index.d.ts +7 -0
  51. package/dist/commands/dns/index.d.ts.map +1 -0
  52. package/dist/commands/dns/index.js +7 -0
  53. package/dist/commands/dns/index.js.map +1 -0
  54. package/dist/commands/dns/list.d.ts +24 -0
  55. package/dist/commands/dns/list.d.ts.map +1 -0
  56. package/dist/commands/dns/list.js +111 -0
  57. package/dist/commands/dns/list.js.map +1 -0
  58. package/dist/commands/dns/remove.d.ts +24 -0
  59. package/dist/commands/dns/remove.d.ts.map +1 -0
  60. package/dist/commands/dns/remove.js +137 -0
  61. package/dist/commands/dns/remove.js.map +1 -0
  62. package/dist/commands/domains/detail.d.ts +20 -0
  63. package/dist/commands/domains/detail.d.ts.map +1 -0
  64. package/dist/commands/domains/detail.js +112 -0
  65. package/dist/commands/domains/detail.js.map +1 -0
  66. package/dist/commands/domains/index.d.ts +6 -0
  67. package/dist/commands/domains/index.d.ts.map +1 -0
  68. package/dist/commands/domains/index.js +6 -0
  69. package/dist/commands/domains/index.js.map +1 -0
  70. package/dist/commands/domains/list.d.ts +21 -0
  71. package/dist/commands/domains/list.d.ts.map +1 -0
  72. package/dist/commands/domains/list.js +106 -0
  73. package/dist/commands/domains/list.js.map +1 -0
  74. package/dist/commands/hack.d.ts +9 -0
  75. package/dist/commands/hack.d.ts.map +1 -0
  76. package/dist/commands/hack.js +104 -0
  77. package/dist/commands/hack.js.map +1 -0
  78. package/dist/commands/integrations.d.ts +20 -0
  79. package/dist/commands/integrations.d.ts.map +1 -0
  80. package/dist/commands/integrations.js +92 -0
  81. package/dist/commands/integrations.js.map +1 -0
  82. package/dist/commands/login.d.ts +15 -0
  83. package/dist/commands/login.d.ts.map +1 -0
  84. package/dist/commands/login.js +95 -0
  85. package/dist/commands/login.js.map +1 -0
  86. package/dist/commands/logout.d.ts +13 -0
  87. package/dist/commands/logout.d.ts.map +1 -0
  88. package/dist/commands/logout.js +32 -0
  89. package/dist/commands/logout.js.map +1 -0
  90. package/dist/commands/search.d.ts +24 -0
  91. package/dist/commands/search.d.ts.map +1 -0
  92. package/dist/commands/search.js +162 -0
  93. package/dist/commands/search.js.map +1 -0
  94. package/dist/commands/settings/index.d.ts +6 -0
  95. package/dist/commands/settings/index.d.ts.map +1 -0
  96. package/dist/commands/settings/index.js +6 -0
  97. package/dist/commands/settings/index.js.map +1 -0
  98. package/dist/commands/settings/set.d.ts +25 -0
  99. package/dist/commands/settings/set.d.ts.map +1 -0
  100. package/dist/commands/settings/set.js +215 -0
  101. package/dist/commands/settings/set.js.map +1 -0
  102. package/dist/commands/settings/view.d.ts +17 -0
  103. package/dist/commands/settings/view.d.ts.map +1 -0
  104. package/dist/commands/settings/view.js +99 -0
  105. package/dist/commands/settings/view.js.map +1 -0
  106. package/dist/commands/team/add.d.ts +17 -0
  107. package/dist/commands/team/add.d.ts.map +1 -0
  108. package/dist/commands/team/add.js +64 -0
  109. package/dist/commands/team/add.js.map +1 -0
  110. package/dist/commands/team/index.d.ts +7 -0
  111. package/dist/commands/team/index.d.ts.map +1 -0
  112. package/dist/commands/team/index.js +7 -0
  113. package/dist/commands/team/index.js.map +1 -0
  114. package/dist/commands/team/list.d.ts +13 -0
  115. package/dist/commands/team/list.d.ts.map +1 -0
  116. package/dist/commands/team/list.js +51 -0
  117. package/dist/commands/team/list.js.map +1 -0
  118. package/dist/commands/team/remove.d.ts +14 -0
  119. package/dist/commands/team/remove.d.ts.map +1 -0
  120. package/dist/commands/team/remove.js +57 -0
  121. package/dist/commands/team/remove.js.map +1 -0
  122. package/dist/commands/vercel/index.d.ts +8 -0
  123. package/dist/commands/vercel/index.d.ts.map +1 -0
  124. package/dist/commands/vercel/index.js +8 -0
  125. package/dist/commands/vercel/index.js.map +1 -0
  126. package/dist/commands/vercel/link.d.ts +25 -0
  127. package/dist/commands/vercel/link.d.ts.map +1 -0
  128. package/dist/commands/vercel/link.js +176 -0
  129. package/dist/commands/vercel/link.js.map +1 -0
  130. package/dist/commands/vercel/setup.d.ts +13 -0
  131. package/dist/commands/vercel/setup.d.ts.map +1 -0
  132. package/dist/commands/vercel/setup.js +113 -0
  133. package/dist/commands/vercel/setup.js.map +1 -0
  134. package/dist/commands/vercel/status.d.ts +15 -0
  135. package/dist/commands/vercel/status.d.ts.map +1 -0
  136. package/dist/commands/vercel/status.js +103 -0
  137. package/dist/commands/vercel/status.js.map +1 -0
  138. package/dist/commands/vercel/unlink.d.ts +16 -0
  139. package/dist/commands/vercel/unlink.d.ts.map +1 -0
  140. package/dist/commands/vercel/unlink.js +118 -0
  141. package/dist/commands/vercel/unlink.js.map +1 -0
  142. package/dist/commands/webhooks/add.d.ts +16 -0
  143. package/dist/commands/webhooks/add.d.ts.map +1 -0
  144. package/dist/commands/webhooks/add.js +61 -0
  145. package/dist/commands/webhooks/add.js.map +1 -0
  146. package/dist/commands/webhooks/index.d.ts +7 -0
  147. package/dist/commands/webhooks/index.d.ts.map +1 -0
  148. package/dist/commands/webhooks/index.js +7 -0
  149. package/dist/commands/webhooks/index.js.map +1 -0
  150. package/dist/commands/webhooks/list.d.ts +14 -0
  151. package/dist/commands/webhooks/list.d.ts.map +1 -0
  152. package/dist/commands/webhooks/list.js +47 -0
  153. package/dist/commands/webhooks/list.js.map +1 -0
  154. package/dist/commands/webhooks/remove.d.ts +14 -0
  155. package/dist/commands/webhooks/remove.d.ts.map +1 -0
  156. package/dist/commands/webhooks/remove.js +57 -0
  157. package/dist/commands/webhooks/remove.js.map +1 -0
  158. package/dist/commands/whoami.d.ts +13 -0
  159. package/dist/commands/whoami.d.ts.map +1 -0
  160. package/dist/commands/whoami.js +33 -0
  161. package/dist/commands/whoami.js.map +1 -0
  162. package/dist/components/account-card.d.ts +17 -0
  163. package/dist/components/account-card.d.ts.map +1 -0
  164. package/dist/components/account-card.js +19 -0
  165. package/dist/components/account-card.js.map +1 -0
  166. package/dist/components/billing-table.d.ts +22 -0
  167. package/dist/components/billing-table.d.ts.map +1 -0
  168. package/dist/components/billing-table.js +53 -0
  169. package/dist/components/billing-table.js.map +1 -0
  170. package/dist/components/celebration.d.ts +21 -0
  171. package/dist/components/celebration.d.ts.map +1 -0
  172. package/dist/components/celebration.js +55 -0
  173. package/dist/components/celebration.js.map +1 -0
  174. package/dist/components/contact-form.d.ts +23 -0
  175. package/dist/components/contact-form.d.ts.map +1 -0
  176. package/dist/components/contact-form.js +109 -0
  177. package/dist/components/contact-form.js.map +1 -0
  178. package/dist/components/dns-table.d.ts +14 -0
  179. package/dist/components/dns-table.d.ts.map +1 -0
  180. package/dist/components/dns-table.js +71 -0
  181. package/dist/components/dns-table.js.map +1 -0
  182. package/dist/components/domain-card.d.ts +14 -0
  183. package/dist/components/domain-card.d.ts.map +1 -0
  184. package/dist/components/domain-card.js +41 -0
  185. package/dist/components/domain-card.js.map +1 -0
  186. package/dist/components/domain-table.d.ts +30 -0
  187. package/dist/components/domain-table.d.ts.map +1 -0
  188. package/dist/components/domain-table.js +87 -0
  189. package/dist/components/domain-table.js.map +1 -0
  190. package/dist/components/error-display.d.ts +25 -0
  191. package/dist/components/error-display.d.ts.map +1 -0
  192. package/dist/components/error-display.js +51 -0
  193. package/dist/components/error-display.js.map +1 -0
  194. package/dist/components/layout.d.ts +14 -0
  195. package/dist/components/layout.d.ts.map +1 -0
  196. package/dist/components/layout.js +21 -0
  197. package/dist/components/layout.js.map +1 -0
  198. package/dist/components/logo.d.ts +37 -0
  199. package/dist/components/logo.d.ts.map +1 -0
  200. package/dist/components/logo.js +70 -0
  201. package/dist/components/logo.js.map +1 -0
  202. package/dist/components/matrix-rain.d.ts +17 -0
  203. package/dist/components/matrix-rain.d.ts.map +1 -0
  204. package/dist/components/matrix-rain.js +105 -0
  205. package/dist/components/matrix-rain.js.map +1 -0
  206. package/dist/components/purchase-confirmation.d.ts +17 -0
  207. package/dist/components/purchase-confirmation.d.ts.map +1 -0
  208. package/dist/components/purchase-confirmation.js +17 -0
  209. package/dist/components/purchase-confirmation.js.map +1 -0
  210. package/dist/components/search-results.d.ts +30 -0
  211. package/dist/components/search-results.d.ts.map +1 -0
  212. package/dist/components/search-results.js +53 -0
  213. package/dist/components/search-results.js.map +1 -0
  214. package/dist/components/settings-card.d.ts +14 -0
  215. package/dist/components/settings-card.d.ts.map +1 -0
  216. package/dist/components/settings-card.js +40 -0
  217. package/dist/components/settings-card.js.map +1 -0
  218. package/dist/components/spinner-messages.d.ts +19 -0
  219. package/dist/components/spinner-messages.d.ts.map +1 -0
  220. package/dist/components/spinner-messages.js +55 -0
  221. package/dist/components/spinner-messages.js.map +1 -0
  222. package/dist/lib/achievements.d.ts +107 -0
  223. package/dist/lib/achievements.d.ts.map +1 -0
  224. package/dist/lib/achievements.js +341 -0
  225. package/dist/lib/achievements.js.map +1 -0
  226. package/dist/lib/auth.d.ts +45 -0
  227. package/dist/lib/auth.d.ts.map +1 -0
  228. package/dist/lib/auth.js +125 -0
  229. package/dist/lib/auth.js.map +1 -0
  230. package/dist/lib/cart.d.ts +69 -0
  231. package/dist/lib/cart.d.ts.map +1 -0
  232. package/dist/lib/cart.js +131 -0
  233. package/dist/lib/cart.js.map +1 -0
  234. package/dist/lib/config.d.ts +51 -0
  235. package/dist/lib/config.d.ts.map +1 -0
  236. package/dist/lib/config.js +116 -0
  237. package/dist/lib/config.js.map +1 -0
  238. package/dist/lib/dns-validation.d.ts +51 -0
  239. package/dist/lib/dns-validation.d.ts.map +1 -0
  240. package/dist/lib/dns-validation.js +185 -0
  241. package/dist/lib/dns-validation.js.map +1 -0
  242. package/dist/lib/easter-eggs.d.ts +21 -0
  243. package/dist/lib/easter-eggs.d.ts.map +1 -0
  244. package/dist/lib/easter-eggs.js +64 -0
  245. package/dist/lib/easter-eggs.js.map +1 -0
  246. package/dist/lib/error-personality.d.ts +35 -0
  247. package/dist/lib/error-personality.d.ts.map +1 -0
  248. package/dist/lib/error-personality.js +191 -0
  249. package/dist/lib/error-personality.js.map +1 -0
  250. package/dist/lib/errors.d.ts +8 -0
  251. package/dist/lib/errors.d.ts.map +1 -0
  252. package/dist/lib/errors.js +7 -0
  253. package/dist/lib/errors.js.map +1 -0
  254. package/dist/lib/konami.d.ts +51 -0
  255. package/dist/lib/konami.d.ts.map +1 -0
  256. package/dist/lib/konami.js +107 -0
  257. package/dist/lib/konami.js.map +1 -0
  258. package/dist/lib/loading-messages.d.ts +13 -0
  259. package/dist/lib/loading-messages.d.ts.map +1 -0
  260. package/dist/lib/loading-messages.js +13 -0
  261. package/dist/lib/loading-messages.js.map +1 -0
  262. package/dist/lib/namecom-client.d.ts +73 -0
  263. package/dist/lib/namecom-client.d.ts.map +1 -0
  264. package/dist/lib/namecom-client.js +260 -0
  265. package/dist/lib/namecom-client.js.map +1 -0
  266. package/dist/lib/nameserver-presets.d.ts +27 -0
  267. package/dist/lib/nameserver-presets.d.ts.map +1 -0
  268. package/dist/lib/nameserver-presets.js +45 -0
  269. package/dist/lib/nameserver-presets.js.map +1 -0
  270. package/dist/lib/purchase.d.ts +71 -0
  271. package/dist/lib/purchase.d.ts.map +1 -0
  272. package/dist/lib/purchase.js +160 -0
  273. package/dist/lib/purchase.js.map +1 -0
  274. package/dist/lib/schemas.d.ts +1968 -0
  275. package/dist/lib/schemas.d.ts.map +1 -0
  276. package/dist/lib/schemas.js +112 -0
  277. package/dist/lib/schemas.js.map +1 -0
  278. package/dist/lib/team.d.ts +71 -0
  279. package/dist/lib/team.d.ts.map +1 -0
  280. package/dist/lib/team.js +135 -0
  281. package/dist/lib/team.js.map +1 -0
  282. package/dist/lib/theme.d.ts +152 -0
  283. package/dist/lib/theme.d.ts.map +1 -0
  284. package/dist/lib/theme.js +185 -0
  285. package/dist/lib/theme.js.map +1 -0
  286. package/dist/lib/types.d.ts +136 -0
  287. package/dist/lib/types.d.ts.map +1 -0
  288. package/dist/lib/types.js +19 -0
  289. package/dist/lib/types.js.map +1 -0
  290. package/dist/lib/vercel-client.d.ts +110 -0
  291. package/dist/lib/vercel-client.d.ts.map +1 -0
  292. package/dist/lib/vercel-client.js +196 -0
  293. package/dist/lib/vercel-client.js.map +1 -0
  294. package/dist/lib/webhooks.d.ts +83 -0
  295. package/dist/lib/webhooks.d.ts.map +1 -0
  296. package/dist/lib/webhooks.js +195 -0
  297. package/dist/lib/webhooks.js.map +1 -0
  298. package/package.json +66 -0
package/README.md ADDED
@@ -0,0 +1,304 @@
1
+ # dominion
2
+
3
+ [![npm version](https://img.shields.io/npm/v/dominion-cli.svg)](https://www.npmjs.com/package/dominion-cli)
4
+ [![license](https://img.shields.io/npm/l/dominion-cli.svg)](https://github.com/dominioncli/dominion-cli/blob/main/LICENSE)
5
+ [![node](https://img.shields.io/node/v/dominion-cli.svg)](https://nodejs.org)
6
+
7
+ ```
8
+ ██████╗ ██████╗ ███╗ ███╗██╗███╗ ██╗██╗ ██████╗ ███╗ ██╗
9
+ ██╔══██╗██╔═══██╗████╗ ████║██║████╗ ██║██║██╔═══██╗████╗ ██║
10
+ ██║ ██║██║ ██║██╔████╔██║██║██╔██╗ ██║██║██║ ██║██╔██╗ ██║
11
+ ██║ ██║██║ ██║██║╚██╔╝██║██║██║╚██╗██║██║██║ ██║██║╚██╗██║
12
+ ██████╔╝╚██████╔╝██║ ╚═╝ ██║██║██║ ╚████║██║╚██████╔╝██║ ╚████║
13
+ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚═╝ ╚═════╝ ╚═╝ ╚═══╝
14
+ ```
15
+
16
+ **Premium CLI for domain search, registration, and management.**
17
+
18
+ Search, register, and manage domains directly from your terminal. Built with [Ink](https://github.com/vadimdemedes/ink) for rich TUI output, backed by the [Name.com](https://www.name.com) API, with optional [Vercel](https://vercel.com) integration for seamless deployments.
19
+
20
+ ---
21
+
22
+ ## Install
23
+
24
+ ```bash
25
+ npm install -g dominion-cli
26
+ ```
27
+
28
+ Verify the installation:
29
+
30
+ ```bash
31
+ dominion --version
32
+ ```
33
+
34
+ Requires Node.js 18+.
35
+
36
+ ---
37
+
38
+ ## Quickstart
39
+
40
+ Get from zero to domain owner in five steps.
41
+
42
+ ### 1. Authenticate
43
+
44
+ ```bash
45
+ dominion login
46
+ ```
47
+
48
+ Enter your Name.com API username and token. Credentials are stored locally at `~/.dominion/config.json` with `0600` permissions (owner-only).
49
+
50
+ > Don't have an API token? Run `dominion login --browser` to open the Name.com API keys page.
51
+
52
+ ### 2. Search for domains
53
+
54
+ ```bash
55
+ dominion search myapp
56
+ ```
57
+
58
+ Returns an availability table across popular TLDs with pricing:
59
+
60
+ ```
61
+ Domain Price Status
62
+ ─────────────────────────────────────
63
+ myapp.com $12.99 ✓ Available
64
+ myapp.net $11.99 ✓ Available
65
+ myapp.io $39.99 ✓ Available (Premium)
66
+ myapp.org $12.99 ✗ Taken
67
+ myapp.co $29.99 ✓ Available
68
+ ```
69
+
70
+ Filter by TLD or budget:
71
+
72
+ ```bash
73
+ dominion search myapp --tld com,io --max-price 20
74
+ ```
75
+
76
+ ### 3. Add to cart
77
+
78
+ ```bash
79
+ dominion cart add myapp.com
80
+ ```
81
+
82
+ ### 4. Purchase
83
+
84
+ ```bash
85
+ dominion buy
86
+ ```
87
+
88
+ Reviews your cart, confirms pricing, and registers all domains in a single transaction.
89
+
90
+ ### 5. Manage
91
+
92
+ ```bash
93
+ dominion domains myapp.com # View domain details
94
+ dominion dns myapp.com list # List DNS records
95
+ dominion dns myapp.com add A @ 76.76.21.21 # Point to your server
96
+ ```
97
+
98
+ ---
99
+
100
+ ## Features
101
+
102
+ ### Domain Search
103
+
104
+ Interactive TUI-powered domain search across multiple TLDs. Filter by price, filter by TLD, and add results directly to your cart.
105
+
106
+ ### Shopping Cart
107
+
108
+ Persistent cart stored at `~/.dominion/cart.json`. Add, remove, and review domains before purchasing. Stale prices (older than 24 hours) are flagged automatically.
109
+
110
+ ### Purchase Flow
111
+
112
+ Batch-purchase all cart items or buy a single domain directly with `dominion buy myapp.com`. Skip the confirmation prompt with `--yes` for scripted workflows.
113
+
114
+ ### Domain Management
115
+
116
+ List all domains in your account, view detailed settings, expiration dates, nameserver configuration, and auto-renewal status.
117
+
118
+ ### DNS Records
119
+
120
+ Full CRUD for DNS records: A, AAAA, CNAME, MX, TXT, SRV, NS, ANAME, and URL redirect. Set custom TTLs and priorities.
121
+
122
+ ### Domain Settings
123
+
124
+ Configure auto-renew, domain lock, and nameservers. Switch nameservers instantly with presets:
125
+
126
+ ```bash
127
+ dominion settings myapp.com set nameservers --preset vercel
128
+ dominion settings myapp.com set nameservers --preset namecom
129
+ ```
130
+
131
+ ### Vercel Integration
132
+
133
+ Connect your Vercel account and link domains to projects with automatic DNS configuration:
134
+
135
+ ```bash
136
+ dominion vercel setup # Configure Vercel token
137
+ dominion vercel link myapp.com # Link domain to Vercel project
138
+ dominion vercel status # View integration status
139
+ ```
140
+
141
+ ### Team Management
142
+
143
+ Add collaborators with role-based access:
144
+
145
+ ```bash
146
+ dominion team add alice@example.com --role admin --name "Alice"
147
+ dominion team list
148
+ dominion team remove alice@example.com
149
+ ```
150
+
151
+ Roles: `admin`, `member`, `viewer`.
152
+
153
+ ### Webhooks
154
+
155
+ Get notified when domain events occur:
156
+
157
+ ```bash
158
+ dominion webhooks add https://api.example.com/hooks --events domain.registered,dns.changed
159
+ dominion webhooks list
160
+ dominion webhooks remove <id>
161
+ ```
162
+
163
+ Supported events: `domain.registered`, `domain.expired`, `dns.changed`, `domain.renewed`.
164
+
165
+ ### Billing
166
+
167
+ View a billing summary across all your domains:
168
+
169
+ ```bash
170
+ dominion billing
171
+ ```
172
+
173
+ ### Account
174
+
175
+ View and update your account details and WHOIS contact information:
176
+
177
+ ```bash
178
+ dominion account # View account details
179
+ dominion account set contact # Update WHOIS contact info interactively
180
+ dominion account set email new@example.com
181
+ ```
182
+
183
+ ---
184
+
185
+ ## Command Tree
186
+
187
+ ```
188
+ dominion
189
+ ├── login [--browser] Authenticate with Name.com API credentials
190
+ ├── logout Clear stored credentials
191
+ ├── whoami Display authenticated user info
192
+ ├── search <query> [--tld] [--max-price] Search for available domains
193
+ ├── cart
194
+ │ ├── list View cart contents
195
+ │ ├── add <domain> Add a domain to your cart
196
+ │ ├── remove <domain> Remove a domain from your cart
197
+ │ └── clear Clear all items from your cart
198
+ ├── buy [domain] [--yes] Purchase domain(s) from cart or by name
199
+ ├── domains [domain] [--json] List domains or view domain details
200
+ ├── dns <domain>
201
+ │ ├── list [--json] List DNS records
202
+ │ ├── add <type> <name> <value> Add a DNS record [--ttl] [--priority]
203
+ │ └── remove <record-id> Remove a DNS record
204
+ ├── settings <domain>
205
+ │ └── set <key> <value> [--preset] Update domain settings
206
+ ├── account
207
+ │ └── set
208
+ │ ├── contact Set or update WHOIS contact info
209
+ │ └── email <email> Update contact email address
210
+ ├── billing View domain billing summary
211
+ ├── team
212
+ │ ├── list List team members
213
+ │ ├── add <email> [--role] [--name] Add a team member
214
+ │ └── remove <member> Remove a team member
215
+ ├── vercel
216
+ │ ├── status View Vercel integration status
217
+ │ ├── setup Configure Vercel integration
218
+ │ ├── link <domain> Link a domain to Vercel project
219
+ │ └── unlink <domain> Unlink a domain from Vercel project
220
+ ├── webhooks
221
+ │ ├── list List configured webhooks
222
+ │ ├── add <url> [--events] Add a webhook
223
+ │ └── remove <id> Remove a webhook by ID
224
+ ├── integrations View available integrations
225
+ ├── credits View the credits
226
+ ├── --version, -v Print the current version
227
+ └── --help, -h Display help for command
228
+ ```
229
+
230
+ ---
231
+
232
+ ## Configuration
233
+
234
+ All data is stored in `~/.dominion/`:
235
+
236
+ ```
237
+ ~/.dominion/
238
+ ├── config.json API credentials, Vercel config, preferences
239
+ ├── cart.json Shopping cart (domains pending purchase)
240
+ ├── team.json Team member list
241
+ ├── webhooks.json Webhook configurations
242
+ └── achievements.json Unlocked achievements and usage stats
243
+ ```
244
+
245
+ `config.json` is created with `0600` file permissions to protect your API credentials.
246
+
247
+ For details on each file's schema, see [docs/configuration.md](docs/configuration.md).
248
+
249
+ ---
250
+
251
+ ## Easter Eggs
252
+
253
+ Dominion has a few surprises hidden throughout the CLI. Here are some hints:
254
+
255
+ - Try searching for some famous sci-fi domains. HAL might have something to say.
256
+ - There's a classic cheat code that works in the terminal. Think 1986, Konami.
257
+ - Run dominion on certain... unlucky dates. The CLI gets a little spooky.
258
+ - Somewhere in the CLI, there's a command that isn't listed. Hackers welcome.
259
+ - Use the CLI enough and you'll start earning achievements. Can you collect all 10?
260
+
261
+ No spoilers. Discover them yourself.
262
+
263
+ ---
264
+
265
+ ## Scripting & CI/CD
266
+
267
+ Dominion is built for automation. Use these flags to integrate with scripts and pipelines:
268
+
269
+ ```bash
270
+ # Suppress decorative output (logos, animations)
271
+ dominion domains --quiet
272
+
273
+ # Disable color output (for log files and CI)
274
+ dominion domains --no-color
275
+
276
+ # Get machine-readable output
277
+ dominion domains --json
278
+
279
+ # Skip confirmation prompts
280
+ dominion buy --yes
281
+
282
+ # Combine for fully non-interactive operation
283
+ dominion domains --json --quiet --no-color
284
+ ```
285
+
286
+ Pipe JSON output to `jq` for processing:
287
+
288
+ ```bash
289
+ dominion domains --json --quiet | jq '.[].domainName'
290
+ ```
291
+
292
+ Environment variable support: set `NO_COLOR=1` to disable colors globally ([no-color.org](https://no-color.org)).
293
+
294
+ ---
295
+
296
+ ## Contributing
297
+
298
+ See [docs/contributing.md](docs/contributing.md) for setup instructions, coding patterns, and the PR checklist.
299
+
300
+ ---
301
+
302
+ ## License
303
+
304
+ [MIT](LICENSE)
package/dist/app.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ interface AppProps {
2
+ command?: string;
3
+ children?: React.ReactNode;
4
+ version?: string;
5
+ }
6
+ /**
7
+ * Root Ink application shell.
8
+ * Wraps command output in the standard Layout chrome.
9
+ *
10
+ * When invoked with no command, shows the full gradient logo
11
+ * with tagline and version — the "welcome screen".
12
+ */
13
+ export declare function App({ command, children, version }: AppProps): import("react/jsx-runtime").JSX.Element;
14
+ export default App;
15
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"AAMA,UAAU,QAAQ;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAmBD;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,QAAQ,2CA6B3D;AAED,eAAe,GAAG,CAAC"}
package/dist/app.js ADDED
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { Logo } from "./components/logo.js";
4
+ import { Layout } from "./components/layout.js";
5
+ import { inkColors } from "./lib/theme.js";
6
+ import { AchievementManager } from "./lib/achievements.js";
7
+ /**
8
+ * Get achievement count string for the welcome screen.
9
+ */
10
+ function getAchievementStatus() {
11
+ try {
12
+ const am = new AchievementManager();
13
+ const unlocked = am.getUnlockedCount();
14
+ const total = am.getTotalCount();
15
+ if (unlocked > 0) {
16
+ return { unlocked, total };
17
+ }
18
+ return null;
19
+ }
20
+ catch {
21
+ return null;
22
+ }
23
+ }
24
+ /**
25
+ * Root Ink application shell.
26
+ * Wraps command output in the standard Layout chrome.
27
+ *
28
+ * When invoked with no command, shows the full gradient logo
29
+ * with tagline and version — the "welcome screen".
30
+ */
31
+ export function App({ command, children, version }) {
32
+ const achievementStatus = getAchievementStatus();
33
+ return (_jsx(Layout, { showHeader: false, children: children ?? (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsx(Logo, { showTagline: true, version: version }), command && (_jsxs(Text, { color: inkColors.muted, children: ["Running: ", command] })), _jsxs(Text, { color: inkColors.muted, children: ["Run ", _jsx(Text, { bold: true, color: inkColors.white, children: "dominion --help" }), " to see available commands."] }), achievementStatus && (_jsxs(Text, { color: "yellow", children: ["\uD83C\uDFC6 ", achievementStatus.unlocked, "/", achievementStatus.total, " achievements unlocked"] }))] })) }));
34
+ }
35
+ export default App;
36
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAQ3D;;GAEG;AACH,SAAS,oBAAoB;IAC3B,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC;QACjC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAY;IAC1D,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;IAEjD,OAAO,CACL,KAAC,MAAM,IAAC,UAAU,EAAE,KAAK,YACtB,QAAQ,IAAI,CACX,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC,aAEhC,KAAC,IAAI,IAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAI,EAE5C,OAAO,IAAI,CACV,MAAC,IAAI,IAAC,KAAK,EAAE,SAAS,CAAC,KAAK,0BAChB,OAAO,IACZ,CACR,EAED,MAAC,IAAI,IAAC,KAAK,EAAE,SAAS,CAAC,KAAK,qBACtB,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,SAAS,CAAC,KAAK,gCAAwB,mCACxD,EAEN,iBAAiB,IAAI,CACpB,MAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,8BACd,iBAAiB,CAAC,QAAQ,OAAG,iBAAiB,CAAC,KAAK,8BACnD,CACR,IACG,CACP,GACM,CACV,CAAC;AACJ,CAAC;AAED,eAAe,GAAG,CAAC"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,9 @@
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
+ export {};
9
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;GAKG"}