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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/lib/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for Name.com API request/response validation.
|
|
3
|
+
* Vendored from dominion-site — kept identical for consistency.
|
|
4
|
+
*
|
|
5
|
+
* All API responses are validated before returning to callers.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
// ─── Contact Schemas ─────────────────────────────────────────────────────────
|
|
9
|
+
export const ContactInfoSchema = z.object({
|
|
10
|
+
firstName: z.string(),
|
|
11
|
+
lastName: z.string(),
|
|
12
|
+
email: z.string().email(),
|
|
13
|
+
phone: z.string(),
|
|
14
|
+
address1: z.string(),
|
|
15
|
+
address2: z.string().optional(),
|
|
16
|
+
city: z.string(),
|
|
17
|
+
state: z.string(),
|
|
18
|
+
zip: z.string(),
|
|
19
|
+
country: z.string(),
|
|
20
|
+
organization: z.string().optional(),
|
|
21
|
+
});
|
|
22
|
+
export const ContactsSchema = z.object({
|
|
23
|
+
registrant: ContactInfoSchema,
|
|
24
|
+
admin: ContactInfoSchema,
|
|
25
|
+
tech: ContactInfoSchema,
|
|
26
|
+
billing: ContactInfoSchema,
|
|
27
|
+
});
|
|
28
|
+
// ─── Domain Search Response ──────────────────────────────────────────────────
|
|
29
|
+
export const DomainSearchResultSchema = z.object({
|
|
30
|
+
domainName: z.string(),
|
|
31
|
+
sld: z.string().optional().default(""),
|
|
32
|
+
tld: z.string().optional().default(""),
|
|
33
|
+
purchasable: z.boolean().optional().default(false),
|
|
34
|
+
premium: z.boolean().optional().default(false),
|
|
35
|
+
purchasePrice: z.number().optional().default(0),
|
|
36
|
+
purchaseType: z.string().optional().default(""),
|
|
37
|
+
renewalPrice: z.number().optional().default(0),
|
|
38
|
+
});
|
|
39
|
+
export const DomainSearchResponseSchema = z.object({
|
|
40
|
+
results: z.array(DomainSearchResultSchema),
|
|
41
|
+
});
|
|
42
|
+
// ─── Domain Availability ─────────────────────────────────────────────────────
|
|
43
|
+
export const DomainAvailabilitySchema = z.object({
|
|
44
|
+
domainName: z.string(),
|
|
45
|
+
purchasable: z.boolean().optional().default(false),
|
|
46
|
+
premium: z.boolean().optional().default(false),
|
|
47
|
+
purchasePrice: z.number().optional().default(0),
|
|
48
|
+
renewalPrice: z.number().optional().default(0),
|
|
49
|
+
});
|
|
50
|
+
// ─── Domain Record ───────────────────────────────────────────────────────────
|
|
51
|
+
export const DomainSchema = z.object({
|
|
52
|
+
domainName: z.string(),
|
|
53
|
+
nameservers: z.array(z.string()),
|
|
54
|
+
contacts: ContactsSchema,
|
|
55
|
+
privacyEnabled: z.boolean(),
|
|
56
|
+
locked: z.boolean(),
|
|
57
|
+
autoRenewEnabled: z.boolean(),
|
|
58
|
+
expireDate: z.string(),
|
|
59
|
+
createDate: z.string(),
|
|
60
|
+
renewalPrice: z.number(),
|
|
61
|
+
});
|
|
62
|
+
export const ListDomainsResponseSchema = z.object({
|
|
63
|
+
domains: z.array(DomainSchema),
|
|
64
|
+
nextPage: z.number().optional(),
|
|
65
|
+
lastPage: z.number().optional(),
|
|
66
|
+
});
|
|
67
|
+
// ─── DNS Records ─────────────────────────────────────────────────────────────
|
|
68
|
+
export const DnsRecordTypeSchema = z.enum([
|
|
69
|
+
"A",
|
|
70
|
+
"AAAA",
|
|
71
|
+
"ANAME",
|
|
72
|
+
"CNAME",
|
|
73
|
+
"MX",
|
|
74
|
+
"NS",
|
|
75
|
+
"SRV",
|
|
76
|
+
"TXT",
|
|
77
|
+
"URL",
|
|
78
|
+
]);
|
|
79
|
+
export const DnsRecordSchema = z.object({
|
|
80
|
+
id: z.number(),
|
|
81
|
+
domainName: z.string(),
|
|
82
|
+
host: z.string(),
|
|
83
|
+
fqdn: z.string(),
|
|
84
|
+
type: DnsRecordTypeSchema,
|
|
85
|
+
answer: z.string(),
|
|
86
|
+
ttl: z.number(),
|
|
87
|
+
priority: z.number().optional(),
|
|
88
|
+
});
|
|
89
|
+
export const DnsRecordInputSchema = z.object({
|
|
90
|
+
host: z.string(),
|
|
91
|
+
type: DnsRecordTypeSchema,
|
|
92
|
+
answer: z.string(),
|
|
93
|
+
ttl: z.number().optional(),
|
|
94
|
+
priority: z.number().optional(),
|
|
95
|
+
});
|
|
96
|
+
export const ListDnsRecordsResponseSchema = z.object({
|
|
97
|
+
records: z.array(DnsRecordSchema),
|
|
98
|
+
nextPage: z.number().optional(),
|
|
99
|
+
lastPage: z.number().optional(),
|
|
100
|
+
});
|
|
101
|
+
// ─── Renewal ─────────────────────────────────────────────────────────────────
|
|
102
|
+
export const RenewDomainResponseSchema = z.object({
|
|
103
|
+
domain: DomainSchema,
|
|
104
|
+
order: z.number(),
|
|
105
|
+
totalPaid: z.number(),
|
|
106
|
+
});
|
|
107
|
+
// ─── Error Response ──────────────────────────────────────────────────────────
|
|
108
|
+
export const NamecomErrorResponseSchema = z.object({
|
|
109
|
+
message: z.string(),
|
|
110
|
+
details: z.string().optional(),
|
|
111
|
+
});
|
|
112
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/lib/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TeamManager — manages ~/.dominion/team.json.
|
|
3
|
+
*
|
|
4
|
+
* Stores team member metadata locally for future multi-user features.
|
|
5
|
+
* Roles: admin (full access), member (manage domains, no billing), viewer (read-only).
|
|
6
|
+
* Team data is local-only — no server sync.
|
|
7
|
+
*/
|
|
8
|
+
export type TeamRole = "admin" | "member" | "viewer";
|
|
9
|
+
export interface TeamMember {
|
|
10
|
+
email: string;
|
|
11
|
+
name: string;
|
|
12
|
+
role: TeamRole;
|
|
13
|
+
addedAt: string;
|
|
14
|
+
}
|
|
15
|
+
export interface TeamData {
|
|
16
|
+
members: TeamMember[];
|
|
17
|
+
}
|
|
18
|
+
export declare class TeamManager {
|
|
19
|
+
private readonly teamPath;
|
|
20
|
+
private readonly configDir;
|
|
21
|
+
constructor(configDir?: string);
|
|
22
|
+
/**
|
|
23
|
+
* Load team data from disk. Returns empty team if file doesn't exist.
|
|
24
|
+
*/
|
|
25
|
+
private loadRaw;
|
|
26
|
+
/**
|
|
27
|
+
* Save team data to disk. Creates directory if needed.
|
|
28
|
+
*/
|
|
29
|
+
private saveRaw;
|
|
30
|
+
/**
|
|
31
|
+
* List all team members.
|
|
32
|
+
*/
|
|
33
|
+
list(): TeamMember[];
|
|
34
|
+
/**
|
|
35
|
+
* Add a team member by email and role.
|
|
36
|
+
* If the email already exists, updates the role and name.
|
|
37
|
+
* Returns the added/updated member.
|
|
38
|
+
*/
|
|
39
|
+
add(email: string, role: TeamRole, name?: string): TeamMember;
|
|
40
|
+
/**
|
|
41
|
+
* Remove a team member by email.
|
|
42
|
+
* Returns true if the member was found and removed.
|
|
43
|
+
*/
|
|
44
|
+
remove(email: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Get a team member by email.
|
|
47
|
+
* Returns undefined if not found.
|
|
48
|
+
*/
|
|
49
|
+
getByEmail(email: string): TeamMember | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Get the number of team members.
|
|
52
|
+
*/
|
|
53
|
+
count(): number;
|
|
54
|
+
/**
|
|
55
|
+
* Check if a team member exists by email.
|
|
56
|
+
*/
|
|
57
|
+
has(email: string): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Get the path to the team file.
|
|
60
|
+
*/
|
|
61
|
+
getTeamPath(): string;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Validate that a string is a valid team role.
|
|
65
|
+
*/
|
|
66
|
+
export declare function isValidRole(role: string): role is TeamRole;
|
|
67
|
+
/**
|
|
68
|
+
* Get the list of valid roles.
|
|
69
|
+
*/
|
|
70
|
+
export declare function getValidRoles(): TeamRole[];
|
|
71
|
+
//# sourceMappingURL=team.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../../src/lib/team.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAErD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AASD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,SAAS,CAAC,EAAE,MAAM;IAK9B;;OAEG;IACH,OAAO,CAAC,OAAO;IAgBf;;OAEG;IACH,OAAO,CAAC,OAAO;IAOf;;OAEG;IACH,IAAI,IAAI,UAAU,EAAE;IAIpB;;;;OAIG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU;IA8B7D;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAiB9B;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAOjD;;OAEG;IACH,KAAK,IAAI,MAAM;IAIf;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI3B;;OAEG;IACH,WAAW,IAAI,MAAM;CAGtB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,QAAQ,CAE1D;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,QAAQ,EAAE,CAE1C"}
|
package/dist/lib/team.js
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TeamManager — manages ~/.dominion/team.json.
|
|
3
|
+
*
|
|
4
|
+
* Stores team member metadata locally for future multi-user features.
|
|
5
|
+
* Roles: admin (full access), member (manage domains, no billing), viewer (read-only).
|
|
6
|
+
* Team data is local-only — no server sync.
|
|
7
|
+
*/
|
|
8
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
9
|
+
import { join } from "node:path";
|
|
10
|
+
import { homedir } from "node:os";
|
|
11
|
+
// ─── Constants ──────────────────────────────────────────────────────────────
|
|
12
|
+
const DOMINION_DIR = join(homedir(), ".dominion");
|
|
13
|
+
const VALID_ROLES = ["admin", "member", "viewer"];
|
|
14
|
+
// ─── TeamManager ────────────────────────────────────────────────────────────
|
|
15
|
+
export class TeamManager {
|
|
16
|
+
teamPath;
|
|
17
|
+
configDir;
|
|
18
|
+
constructor(configDir) {
|
|
19
|
+
this.configDir = configDir ?? DOMINION_DIR;
|
|
20
|
+
this.teamPath = join(this.configDir, "team.json");
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Load team data from disk. Returns empty team if file doesn't exist.
|
|
24
|
+
*/
|
|
25
|
+
loadRaw() {
|
|
26
|
+
if (!existsSync(this.teamPath)) {
|
|
27
|
+
return { members: [] };
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
const raw = readFileSync(this.teamPath, "utf-8");
|
|
31
|
+
const parsed = JSON.parse(raw);
|
|
32
|
+
return {
|
|
33
|
+
members: Array.isArray(parsed.members) ? parsed.members : [],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return { members: [] };
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Save team data to disk. Creates directory if needed.
|
|
42
|
+
*/
|
|
43
|
+
saveRaw(data) {
|
|
44
|
+
if (!existsSync(this.configDir)) {
|
|
45
|
+
mkdirSync(this.configDir, { recursive: true });
|
|
46
|
+
}
|
|
47
|
+
writeFileSync(this.teamPath, JSON.stringify(data, null, 2), "utf-8");
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* List all team members.
|
|
51
|
+
*/
|
|
52
|
+
list() {
|
|
53
|
+
return this.loadRaw().members;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Add a team member by email and role.
|
|
57
|
+
* If the email already exists, updates the role and name.
|
|
58
|
+
* Returns the added/updated member.
|
|
59
|
+
*/
|
|
60
|
+
add(email, role, name) {
|
|
61
|
+
const normalized = email.toLowerCase().trim();
|
|
62
|
+
if (!VALID_ROLES.includes(role)) {
|
|
63
|
+
throw new Error(`Invalid role "${role}". Must be one of: ${VALID_ROLES.join(", ")}`);
|
|
64
|
+
}
|
|
65
|
+
if (!normalized || !normalized.includes("@")) {
|
|
66
|
+
throw new Error("Invalid email address.");
|
|
67
|
+
}
|
|
68
|
+
const data = this.loadRaw();
|
|
69
|
+
// Remove existing entry if present (update scenario)
|
|
70
|
+
data.members = data.members.filter((m) => m.email.toLowerCase() !== normalized);
|
|
71
|
+
const member = {
|
|
72
|
+
email: normalized,
|
|
73
|
+
name: name ?? normalized.split("@")[0],
|
|
74
|
+
role,
|
|
75
|
+
addedAt: new Date().toISOString(),
|
|
76
|
+
};
|
|
77
|
+
data.members.push(member);
|
|
78
|
+
this.saveRaw(data);
|
|
79
|
+
return member;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Remove a team member by email.
|
|
83
|
+
* Returns true if the member was found and removed.
|
|
84
|
+
*/
|
|
85
|
+
remove(email) {
|
|
86
|
+
const normalized = email.toLowerCase().trim();
|
|
87
|
+
const data = this.loadRaw();
|
|
88
|
+
const originalLength = data.members.length;
|
|
89
|
+
data.members = data.members.filter((m) => m.email.toLowerCase() !== normalized);
|
|
90
|
+
if (data.members.length === originalLength) {
|
|
91
|
+
return false; // Member was not found
|
|
92
|
+
}
|
|
93
|
+
this.saveRaw(data);
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Get a team member by email.
|
|
98
|
+
* Returns undefined if not found.
|
|
99
|
+
*/
|
|
100
|
+
getByEmail(email) {
|
|
101
|
+
const normalized = email.toLowerCase().trim();
|
|
102
|
+
return this.loadRaw().members.find((m) => m.email.toLowerCase() === normalized);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get the number of team members.
|
|
106
|
+
*/
|
|
107
|
+
count() {
|
|
108
|
+
return this.loadRaw().members.length;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Check if a team member exists by email.
|
|
112
|
+
*/
|
|
113
|
+
has(email) {
|
|
114
|
+
return this.getByEmail(email) !== undefined;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get the path to the team file.
|
|
118
|
+
*/
|
|
119
|
+
getTeamPath() {
|
|
120
|
+
return this.teamPath;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Validate that a string is a valid team role.
|
|
125
|
+
*/
|
|
126
|
+
export function isValidRole(role) {
|
|
127
|
+
return VALID_ROLES.includes(role);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Get the list of valid roles.
|
|
131
|
+
*/
|
|
132
|
+
export function getValidRoles() {
|
|
133
|
+
return [...VALID_ROLES];
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=team.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team.js","sourceRoot":"","sources":["../../src/lib/team.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dominion CLI — consistent color palette and theme utilities.
|
|
3
|
+
*
|
|
4
|
+
* All output uses these named colors for visual consistency.
|
|
5
|
+
* Supports --no-color (via NO_COLOR env or chalk detection)
|
|
6
|
+
* and --quiet mode for scripting.
|
|
7
|
+
*
|
|
8
|
+
* Color palette:
|
|
9
|
+
* - primary: cyan/blue gradient
|
|
10
|
+
* - success: green
|
|
11
|
+
* - warning: yellow
|
|
12
|
+
* - error: red
|
|
13
|
+
* - muted: gray
|
|
14
|
+
* - premium: gold/yellow
|
|
15
|
+
* - accent: magenta
|
|
16
|
+
*/
|
|
17
|
+
import { type ChalkInstance } from "chalk";
|
|
18
|
+
/**
|
|
19
|
+
* Enable or disable color output globally.
|
|
20
|
+
* Respects NO_COLOR env var: https://no-color.org/
|
|
21
|
+
*/
|
|
22
|
+
export declare function setNoColor(value: boolean): void;
|
|
23
|
+
/**
|
|
24
|
+
* Enable or disable quiet mode (suppresses decorative output).
|
|
25
|
+
* When quiet, logos, animations, and decorative ASCII are hidden.
|
|
26
|
+
*/
|
|
27
|
+
export declare function setQuiet(value: boolean): void;
|
|
28
|
+
export declare function isNoColor(): boolean;
|
|
29
|
+
export declare function isQuiet(): boolean;
|
|
30
|
+
export declare const colors: {
|
|
31
|
+
/** Primary brand color — cyan */
|
|
32
|
+
readonly primary: ChalkInstance;
|
|
33
|
+
/** Primary bold — cyan + bold */
|
|
34
|
+
readonly primaryBold: ChalkInstance;
|
|
35
|
+
/** Success — green */
|
|
36
|
+
readonly success: ChalkInstance;
|
|
37
|
+
/** Success bold — green + bold */
|
|
38
|
+
readonly successBold: ChalkInstance;
|
|
39
|
+
/** Warning — yellow */
|
|
40
|
+
readonly warning: ChalkInstance;
|
|
41
|
+
/** Warning bold — yellow + bold */
|
|
42
|
+
readonly warningBold: ChalkInstance;
|
|
43
|
+
/** Error — red */
|
|
44
|
+
readonly error: ChalkInstance;
|
|
45
|
+
/** Error bold — red + bold */
|
|
46
|
+
readonly errorBold: ChalkInstance;
|
|
47
|
+
/** Muted/secondary — gray */
|
|
48
|
+
readonly muted: ChalkInstance;
|
|
49
|
+
/** Premium/gold — yellow */
|
|
50
|
+
readonly premium: ChalkInstance;
|
|
51
|
+
/** Accent — magenta */
|
|
52
|
+
readonly accent: ChalkInstance;
|
|
53
|
+
/** Accent bold — magenta + bold */
|
|
54
|
+
readonly accentBold: ChalkInstance;
|
|
55
|
+
/** White bold — for emphasis */
|
|
56
|
+
readonly bold: ChalkInstance;
|
|
57
|
+
/** Dim — for de-emphasized text */
|
|
58
|
+
readonly dim: ChalkInstance;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Named color strings for Ink's `color` prop.
|
|
62
|
+
* Use these instead of raw strings to keep the palette consistent.
|
|
63
|
+
*/
|
|
64
|
+
export declare const inkColors: {
|
|
65
|
+
readonly primary: "cyan";
|
|
66
|
+
readonly success: "green";
|
|
67
|
+
readonly warning: "yellow";
|
|
68
|
+
readonly error: "red";
|
|
69
|
+
readonly muted: "gray";
|
|
70
|
+
readonly premium: "yellow";
|
|
71
|
+
readonly accent: "magenta";
|
|
72
|
+
readonly white: "white";
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Gradient color stops for gradient-string.
|
|
76
|
+
* Used for the logo and decorative headers.
|
|
77
|
+
*/
|
|
78
|
+
export declare const gradients: {
|
|
79
|
+
/** Primary brand gradient: cyan → blue */
|
|
80
|
+
readonly brand: readonly ["#00d4ff", "#0066ff", "#3333ff"];
|
|
81
|
+
/** Premium gradient: gold → orange */
|
|
82
|
+
readonly premium: readonly ["#ffd700", "#ff8c00", "#ff6600"];
|
|
83
|
+
/** Success gradient: green → teal */
|
|
84
|
+
readonly success: readonly ["#00ff88", "#00cc66", "#009944"];
|
|
85
|
+
/** Spooky gradient (Friday the 13th): orange → purple */
|
|
86
|
+
readonly spooky: readonly ["#ff6600", "#cc33ff", "#6600cc"];
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Check if today is Friday the 13th.
|
|
90
|
+
* When true, the CLI uses the spooky palette.
|
|
91
|
+
*/
|
|
92
|
+
export declare function isFriday13th(date?: Date): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Get the active gradient based on date.
|
|
95
|
+
* Returns spooky gradient on Friday the 13th, brand gradient otherwise.
|
|
96
|
+
*/
|
|
97
|
+
export declare function getActiveGradient(date?: Date): readonly string[];
|
|
98
|
+
/**
|
|
99
|
+
* Spooky skull ASCII for Friday the 13th logo variant.
|
|
100
|
+
*/
|
|
101
|
+
export declare const SPOOKY_SKULL = "\n .------.\n / .--. \\\n | / \\ |\n || \uD83D\uDC80 ||\n | \\ / |\n \\ '--' /\n '------'\n";
|
|
102
|
+
/**
|
|
103
|
+
* Consistent box styling for Ink Box components.
|
|
104
|
+
*/
|
|
105
|
+
export declare const boxStyles: {
|
|
106
|
+
/** Standard rounded card */
|
|
107
|
+
readonly card: {
|
|
108
|
+
readonly borderStyle: "round";
|
|
109
|
+
readonly borderColor: "cyan";
|
|
110
|
+
readonly paddingX: 2;
|
|
111
|
+
readonly paddingY: 1;
|
|
112
|
+
};
|
|
113
|
+
/** Success card */
|
|
114
|
+
readonly success: {
|
|
115
|
+
readonly borderStyle: "round";
|
|
116
|
+
readonly borderColor: "green";
|
|
117
|
+
readonly paddingX: 2;
|
|
118
|
+
readonly paddingY: 1;
|
|
119
|
+
};
|
|
120
|
+
/** Warning card */
|
|
121
|
+
readonly warning: {
|
|
122
|
+
readonly borderStyle: "round";
|
|
123
|
+
readonly borderColor: "yellow";
|
|
124
|
+
readonly paddingX: 2;
|
|
125
|
+
readonly paddingY: 1;
|
|
126
|
+
};
|
|
127
|
+
/** Error card */
|
|
128
|
+
readonly error: {
|
|
129
|
+
readonly borderStyle: "round";
|
|
130
|
+
readonly borderColor: "red";
|
|
131
|
+
readonly paddingX: 2;
|
|
132
|
+
readonly paddingY: 1;
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* Unicode symbols used across the CLI.
|
|
137
|
+
*/
|
|
138
|
+
export declare const symbols: {
|
|
139
|
+
readonly check: "✓";
|
|
140
|
+
readonly cross: "✗";
|
|
141
|
+
readonly bullet: "•";
|
|
142
|
+
readonly arrow: "→";
|
|
143
|
+
readonly star: "★";
|
|
144
|
+
readonly diamond: "◆";
|
|
145
|
+
readonly info: "ℹ";
|
|
146
|
+
readonly warning: "⚠";
|
|
147
|
+
readonly lock: "🔒";
|
|
148
|
+
readonly hourglass: "⌛";
|
|
149
|
+
readonly magnify: "🔍";
|
|
150
|
+
readonly sparkle: "✨";
|
|
151
|
+
};
|
|
152
|
+
//# sourceMappingURL=theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/lib/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAc,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAOlD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAK/C;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAE7C;AAED,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,wBAAgB,OAAO,IAAI,OAAO,CAEjC;AAID,eAAO,MAAM,MAAM;IACjB,iCAAiC;;IAEjC,iCAAiC;;IAEjC,sBAAsB;;IAEtB,kCAAkC;;IAElC,uBAAuB;;IAEvB,mCAAmC;;IAEnC,kBAAkB;;IAElB,8BAA8B;;IAE9B,6BAA6B;;IAE7B,4BAA4B;;IAE5B,uBAAuB;;IAEvB,mCAAmC;;IAEnC,gCAAgC;;IAEhC,mCAAmC;;CAEa,CAAC;AAInD;;;GAGG;AACH,eAAO,MAAM,SAAS;;;;;;;;;CASZ,CAAC;AAIX;;;GAGG;AACH,eAAO,MAAM,SAAS;IACpB,0CAA0C;;IAE1C,sCAAsC;;IAEtC,qCAAqC;;IAErC,yDAAyD;;CAEjD,CAAC;AAIX;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO,CAGjD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,MAAM,EAAE,CAEhE;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,yHAQxB,CAAC;AAIF;;GAEG;AACH,eAAO,MAAM,SAAS;IACpB,4BAA4B;;;;;;;IAO5B,mBAAmB;;;;;;;IAOnB,mBAAmB;;;;;;;IAOnB,iBAAiB;;;;;;;CAOT,CAAC;AAIX;;GAEG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;CAaV,CAAC"}
|