dominion-cli 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +13 -9
- package/dist/cli.js.map +1 -1
- package/dist/commands/account.d.ts +1 -1
- package/dist/commands/account.d.ts.map +1 -1
- package/dist/commands/account.js +6 -9
- package/dist/commands/account.js.map +1 -1
- package/dist/commands/billing.d.ts +1 -1
- package/dist/commands/billing.d.ts.map +1 -1
- package/dist/commands/billing.js +3 -7
- package/dist/commands/billing.js.map +1 -1
- package/dist/commands/buy.d.ts +7 -7
- package/dist/commands/buy.d.ts.map +1 -1
- package/dist/commands/buy.js +45 -141
- package/dist/commands/buy.js.map +1 -1
- package/dist/commands/cart/add.d.ts +1 -1
- package/dist/commands/cart/add.d.ts.map +1 -1
- package/dist/commands/cart/add.js +9 -8
- package/dist/commands/cart/add.js.map +1 -1
- package/dist/commands/credits.js +1 -1
- package/dist/commands/dns/add.d.ts +3 -3
- package/dist/commands/dns/add.d.ts.map +1 -1
- package/dist/commands/dns/add.js +3 -3
- package/dist/commands/dns/add.js.map +1 -1
- package/dist/commands/dns/list.d.ts +3 -3
- package/dist/commands/dns/list.d.ts.map +1 -1
- package/dist/commands/dns/list.js +3 -3
- package/dist/commands/dns/list.js.map +1 -1
- package/dist/commands/dns/remove.d.ts +3 -3
- package/dist/commands/dns/remove.d.ts.map +1 -1
- package/dist/commands/dns/remove.js +3 -3
- package/dist/commands/dns/remove.js.map +1 -1
- package/dist/commands/domains/detail.d.ts +1 -1
- package/dist/commands/domains/detail.js +3 -3
- package/dist/commands/domains/detail.js.map +1 -1
- package/dist/commands/domains/list.d.ts +1 -1
- package/dist/commands/domains/list.js +3 -3
- package/dist/commands/domains/list.js.map +1 -1
- package/dist/commands/login.d.ts +6 -6
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +58 -42
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts +1 -1
- package/dist/commands/logout.js +1 -1
- package/dist/commands/search.d.ts +2 -2
- package/dist/commands/search.js +4 -4
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/settings/set.d.ts +4 -4
- package/dist/commands/settings/set.d.ts.map +1 -1
- package/dist/commands/settings/set.js +10 -11
- package/dist/commands/settings/set.js.map +1 -1
- package/dist/commands/settings/view.d.ts +3 -3
- package/dist/commands/settings/view.d.ts.map +1 -1
- package/dist/commands/settings/view.js +4 -4
- package/dist/commands/settings/view.js.map +1 -1
- package/dist/commands/vercel/link.d.ts +4 -4
- package/dist/commands/vercel/link.d.ts.map +1 -1
- package/dist/commands/vercel/link.js +8 -8
- package/dist/commands/vercel/link.js.map +1 -1
- package/dist/commands/whoami.d.ts +1 -1
- package/dist/commands/whoami.js +3 -3
- package/dist/commands/whoami.js.map +1 -1
- package/dist/components/account-card.d.ts +3 -3
- package/dist/components/account-card.d.ts.map +1 -1
- package/dist/components/account-card.js +3 -3
- package/dist/components/account-card.js.map +1 -1
- package/dist/components/command-runner.d.ts +25 -0
- package/dist/components/command-runner.d.ts.map +1 -0
- package/dist/components/command-runner.js +67 -0
- package/dist/components/command-runner.js.map +1 -0
- package/dist/components/prompt.d.ts +24 -0
- package/dist/components/prompt.d.ts.map +1 -0
- package/dist/components/prompt.js +113 -0
- package/dist/components/prompt.js.map +1 -0
- package/dist/components/search-results.d.ts +1 -1
- package/dist/components/search-results.js +1 -1
- package/dist/lib/auth.d.ts +17 -9
- package/dist/lib/auth.d.ts.map +1 -1
- package/dist/lib/auth.js +125 -46
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/command-registry.d.ts +47 -0
- package/dist/lib/command-registry.d.ts.map +1 -0
- package/dist/lib/command-registry.js +384 -0
- package/dist/lib/command-registry.js.map +1 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +0 -8
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/dns-validation.d.ts +1 -1
- package/dist/lib/dns-validation.d.ts.map +1 -1
- package/dist/lib/dns-validation.js +2 -2
- package/dist/lib/dns-validation.js.map +1 -1
- package/dist/lib/dominion-client.d.ts +43 -0
- package/dist/lib/dominion-client.d.ts.map +1 -0
- package/dist/lib/dominion-client.js +183 -0
- package/dist/lib/dominion-client.js.map +1 -0
- package/dist/lib/error-personality.js +7 -7
- package/dist/lib/error-personality.js.map +1 -1
- package/dist/lib/history.d.ts +40 -0
- package/dist/lib/history.d.ts.map +1 -0
- package/dist/lib/history.js +113 -0
- package/dist/lib/history.js.map +1 -0
- package/dist/lib/nameserver-presets.js +4 -4
- package/dist/lib/nameserver-presets.js.map +1 -1
- package/dist/lib/purchase.d.ts +20 -23
- package/dist/lib/purchase.d.ts.map +1 -1
- package/dist/lib/purchase.js +42 -70
- package/dist/lib/purchase.js.map +1 -1
- package/dist/lib/schemas.d.ts +351 -352
- package/dist/lib/schemas.d.ts.map +1 -1
- package/dist/lib/schemas.js +1 -2
- package/dist/lib/schemas.js.map +1 -1
- package/dist/lib/types.d.ts +8 -11
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +1 -4
- package/dist/lib/types.js.map +1 -1
- package/dist/repl.d.ts +17 -0
- package/dist/repl.d.ts.map +1 -0
- package/dist/repl.js +189 -0
- package/dist/repl.js.map +1 -0
- package/package.json +4 -2
|
@@ -3,7 +3,7 @@ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
|
3
3
|
* dominion vercel link <domain> — link a domain to a Vercel project.
|
|
4
4
|
*
|
|
5
5
|
* Flow:
|
|
6
|
-
* 1. Verify
|
|
6
|
+
* 1. Verify auth and Vercel config exist
|
|
7
7
|
* 2. Auto-configure DNS (A + CNAME pointing to Vercel)
|
|
8
8
|
* 3. Add domain to Vercel project via VercelClient.addDomain()
|
|
9
9
|
* 4. Poll verification status with progress indicator
|
|
@@ -15,7 +15,7 @@ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
|
15
15
|
import { Box, Text, useApp } from "ink";
|
|
16
16
|
import { useState, useEffect, useRef } from "react";
|
|
17
17
|
import { ConfigManager } from "../../lib/config.js";
|
|
18
|
-
import {
|
|
18
|
+
import { DominionClient } from "../../lib/dominion-client.js";
|
|
19
19
|
import { VercelClient } from "../../lib/vercel-client.js";
|
|
20
20
|
import { getAuthStatus } from "../../lib/auth.js";
|
|
21
21
|
import { getRandomMessage } from "../../components/spinner-messages.js";
|
|
@@ -24,7 +24,7 @@ import { DomainError } from "../../lib/types.js";
|
|
|
24
24
|
const VERCEL_A_RECORD_IP = "76.76.21.21";
|
|
25
25
|
const VERCEL_CNAME_TARGET = "cname.vercel-dns.com";
|
|
26
26
|
const DEFAULT_TTL = 300;
|
|
27
|
-
export function VercelLink({ domain, configManager,
|
|
27
|
+
export function VercelLink({ domain, configManager, dominionClient, vercelClient, }) {
|
|
28
28
|
const { exit } = useApp();
|
|
29
29
|
const [state, setState] = useState("checking");
|
|
30
30
|
const [loadingMessage, setLoadingMessage] = useState(getRandomMessage());
|
|
@@ -51,7 +51,7 @@ export function VercelLink({ domain, configManager, namecomClient, vercelClient,
|
|
|
51
51
|
let cancelled = false;
|
|
52
52
|
const manager = configManager ?? new ConfigManager();
|
|
53
53
|
async function linkDomain() {
|
|
54
|
-
// 1. Check
|
|
54
|
+
// 1. Check auth
|
|
55
55
|
const authStatus = getAuthStatus(manager);
|
|
56
56
|
if (!authStatus.authenticated) {
|
|
57
57
|
setErrorMessage("Please run `dominion login` first.");
|
|
@@ -72,16 +72,16 @@ export function VercelLink({ domain, configManager, namecomClient, vercelClient,
|
|
|
72
72
|
if (cancelled)
|
|
73
73
|
return;
|
|
74
74
|
setState("configuring-dns");
|
|
75
|
-
const
|
|
75
|
+
const client = dominionClient ?? new DominionClient();
|
|
76
76
|
// Create A record: @ -> 76.76.21.21
|
|
77
|
-
await
|
|
77
|
+
await client.createDnsRecord(domain, {
|
|
78
78
|
host: "",
|
|
79
79
|
type: "A",
|
|
80
80
|
answer: VERCEL_A_RECORD_IP,
|
|
81
81
|
ttl: DEFAULT_TTL,
|
|
82
82
|
});
|
|
83
83
|
// Create CNAME record: www -> cname.vercel-dns.com
|
|
84
|
-
await
|
|
84
|
+
await client.createDnsRecord(domain, {
|
|
85
85
|
host: "www",
|
|
86
86
|
type: "CNAME",
|
|
87
87
|
answer: VERCEL_CNAME_TARGET,
|
|
@@ -143,7 +143,7 @@ export function VercelLink({ domain, configManager, namecomClient, vercelClient,
|
|
|
143
143
|
return () => {
|
|
144
144
|
cancelled = true;
|
|
145
145
|
};
|
|
146
|
-
}, [domain, configManager,
|
|
146
|
+
}, [domain, configManager, dominionClient, vercelClient, exit]);
|
|
147
147
|
// ─── Checking state ─────────────────────────────────────────────────────────
|
|
148
148
|
if (state === "checking") {
|
|
149
149
|
return (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsxs(Text, { bold: true, color: "cyan", children: ["Linking ", domain, " to Vercel..."] }), _jsxs(Text, { color: "yellow", children: ["\u2837", " Checking credentials..."] })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/commands/vercel/link.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/commands/vercel/link.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* dominion whoami — display authenticated user info.
|
|
3
3
|
*
|
|
4
|
-
* Shows
|
|
4
|
+
* Shows email, domain count, and config path when logged in.
|
|
5
5
|
* Shows "Not logged in" with hint when not authenticated.
|
|
6
6
|
*/
|
|
7
7
|
import { ConfigManager } from "../lib/config.js";
|
package/dist/commands/whoami.js
CHANGED
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
/**
|
|
3
3
|
* dominion whoami — display authenticated user info.
|
|
4
4
|
*
|
|
5
|
-
* Shows
|
|
5
|
+
* Shows email, domain count, and config path when logged in.
|
|
6
6
|
* Shows "Not logged in" with hint when not authenticated.
|
|
7
7
|
*/
|
|
8
8
|
import { Box, Text, useApp } from "ink";
|
|
@@ -25,9 +25,9 @@ export function Whoami({ configManager }) {
|
|
|
25
25
|
return (_jsx(Box, { children: _jsx(Text, { color: "yellow", children: "Checking authentication..." }) }));
|
|
26
26
|
}
|
|
27
27
|
if (!authStatus.authenticated) {
|
|
28
|
-
return (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsx(Text, { color: "yellow", bold: true, children: "Not logged in" }), _jsxs(Text, { color: "gray", children: ["Run ", _jsx(Text, { bold: true, color: "white", children: "dominion login" }), "
|
|
28
|
+
return (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsx(Text, { color: "yellow", bold: true, children: "Not logged in" }), _jsxs(Text, { color: "gray", children: ["Run ", _jsx(Text, { bold: true, color: "white", children: "dominion login" }), " or ", _jsx(Text, { bold: true, color: "white", children: "dominion register" }), " to get started."] })] }));
|
|
29
29
|
}
|
|
30
|
-
return (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Authenticated User" }), _jsxs(Box, { children: [_jsx(Text, { color: "gray", children: "
|
|
30
|
+
return (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Authenticated User" }), _jsxs(Box, { children: [_jsx(Text, { color: "gray", children: "Email: " }), _jsx(Text, { bold: true, color: "white", children: authStatus.email })] }), authStatus.domainCount !== undefined && (_jsxs(Box, { children: [_jsx(Text, { color: "gray", children: "Domains: " }), _jsxs(Text, { bold: true, color: "white", children: [authStatus.domainCount, " domain", authStatus.domainCount !== 1 ? "s" : ""] })] })), _jsxs(Box, { children: [_jsx(Text, { color: "gray", children: "Config: " }), _jsx(Text, { color: "white", children: authStatus.configPath })] })] }));
|
|
31
31
|
}
|
|
32
32
|
export default Whoami;
|
|
33
33
|
//# sourceMappingURL=whoami.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,4BAA4B,EAAmB,MAAM,gBAAgB,CAAC;AAQ/E,MAAM,UAAU,MAAM,CAAC,EAAE,aAAa,EAAe;IACnD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAc,SAAS,CAAC,CAAC;IAC3D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAoB,IAAI,CAAC,CAAC;IAEtE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,aAAa,IAAI,IAAI,aAAa,EAAE,CAAC;QAErD,4BAA4B,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACpD,aAAa,CAAC,MAAM,CAAC,CAAC;YACtB,QAAQ,CAAC,MAAM,CAAC,CAAC;YACjB,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;IAE1B,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;QACvC,OAAO,CACL,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,2CAAkC,GAClD,CACP,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAC9B,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC,aAChC,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,oCAElB,EACP,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,qBACZ,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,OAAO,+BAAsB,
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,4BAA4B,EAAmB,MAAM,gBAAgB,CAAC;AAQ/E,MAAM,UAAU,MAAM,CAAC,EAAE,aAAa,EAAe;IACnD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAc,SAAS,CAAC,CAAC;IAC3D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAoB,IAAI,CAAC,CAAC;IAEtE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,aAAa,IAAI,IAAI,aAAa,EAAE,CAAC;QAErD,4BAA4B,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACpD,aAAa,CAAC,MAAM,CAAC,CAAC;YACtB,QAAQ,CAAC,MAAM,CAAC,CAAC;YACjB,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;IAE1B,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;QACvC,OAAO,CACL,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,2CAAkC,GAClD,CACP,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAC9B,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC,aAChC,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,oCAElB,EACP,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,qBACZ,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,OAAO,+BAAsB,UAAI,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,OAAO,kCAAyB,wBAClG,IACH,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC,aAChC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,mCAEhB,EAEP,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,2BAAkB,EACpC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,OAAO,YAAE,UAAU,CAAC,KAAK,GAAQ,IAC9C,EAEL,UAAU,CAAC,WAAW,KAAK,SAAS,IAAI,CACvC,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,2BAAkB,EACpC,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,OAAO,aACrB,UAAU,CAAC,WAAW,aAAS,UAAU,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAClE,IACH,CACP,EAED,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,2BAAkB,EACpC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,UAAU,CAAC,UAAU,GAAQ,IAC9C,IACF,CACP,CAAC;AACJ,CAAC;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* AccountCard — boxen-style card layout for account detail view.
|
|
3
3
|
*
|
|
4
|
-
* Displays:
|
|
4
|
+
* Displays: email, total domains, config file location,
|
|
5
5
|
* stored contact info (if set), integration status (Vercel y/n).
|
|
6
6
|
*/
|
|
7
7
|
import type { ContactInfo } from "../lib/types.js";
|
|
8
8
|
export interface AccountCardProps {
|
|
9
|
-
|
|
9
|
+
email: string;
|
|
10
10
|
domainCount: number;
|
|
11
11
|
configPath: string;
|
|
12
12
|
contactInfo?: ContactInfo;
|
|
13
13
|
vercelConnected: boolean;
|
|
14
14
|
}
|
|
15
|
-
export declare function AccountCard({
|
|
15
|
+
export declare function AccountCard({ email, domainCount, configPath, contactInfo, vercelConnected, }: AccountCardProps): import("react/jsx-runtime").JSX.Element;
|
|
16
16
|
export default AccountCard;
|
|
17
17
|
//# sourceMappingURL=account-card.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-card.d.ts","sourceRoot":"","sources":["../../src/components/account-card.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,
|
|
1
|
+
{"version":3,"file":"account-card.d.ts","sourceRoot":"","sources":["../../src/components/account-card.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAgBD,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,WAAW,EACX,UAAU,EACV,WAAW,EACX,eAAe,GAChB,EAAE,gBAAgB,2CAsFlB;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
/**
|
|
3
3
|
* AccountCard — boxen-style card layout for account detail view.
|
|
4
4
|
*
|
|
5
|
-
* Displays:
|
|
5
|
+
* Displays: email, total domains, config file location,
|
|
6
6
|
* stored contact info (if set), integration status (Vercel y/n).
|
|
7
7
|
*/
|
|
8
8
|
import { Box, Text } from "ink";
|
|
@@ -12,8 +12,8 @@ import { Box, Text } from "ink";
|
|
|
12
12
|
function CardRow({ label, children }) {
|
|
13
13
|
return (_jsxs(Box, { children: [_jsx(Box, { width: 22, children: _jsx(Text, { color: "gray", children: label }) }), children] }));
|
|
14
14
|
}
|
|
15
|
-
export function AccountCard({
|
|
16
|
-
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, color: "cyan", children: "Account Details" }) }), _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "white", underline: true, children: "Identity" }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(CardRow, { label: "
|
|
15
|
+
export function AccountCard({ email, domainCount, configPath, contactInfo, vercelConnected, }) {
|
|
16
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, color: "cyan", children: "Account Details" }) }), _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "white", underline: true, children: "Identity" }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(CardRow, { label: "Email:", children: _jsx(Text, { bold: true, color: "white", children: email }) }), _jsx(CardRow, { label: "Total Domains:", children: _jsxs(Text, { color: "white", children: [domainCount, " domain", domainCount !== 1 ? "s" : ""] }) }), _jsx(CardRow, { label: "Config File:", children: _jsx(Text, { color: "white", children: configPath }) })] })] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { bold: true, color: "white", underline: true, children: "Contact Info" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: contactInfo ? (_jsxs(_Fragment, { children: [_jsx(CardRow, { label: "Name:", children: _jsxs(Text, { color: "white", children: [contactInfo.firstName, " ", contactInfo.lastName] }) }), _jsx(CardRow, { label: "Email:", children: _jsx(Text, { color: "white", children: contactInfo.email }) }), _jsx(CardRow, { label: "Phone:", children: _jsx(Text, { color: "white", children: contactInfo.phone }) }), _jsx(CardRow, { label: "Address:", children: _jsxs(Text, { color: "white", children: [contactInfo.address1, contactInfo.address2 ? `, ${contactInfo.address2}` : ""] }) }), _jsx(CardRow, { label: "Location:", children: _jsxs(Text, { color: "white", children: [contactInfo.city, ", ", contactInfo.state, " ", contactInfo.zip, ", ", contactInfo.country] }) })] })) : (_jsx(CardRow, { label: "Status:", children: _jsxs(Text, { color: "yellow", children: ["Not set \u2014 run", " ", _jsx(Text, { bold: true, color: "white", children: "dominion account set contact" }), " ", "to configure"] }) })) })] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { bold: true, color: "white", underline: true, children: "Integrations" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: _jsx(CardRow, { label: "Vercel:", children: _jsx(Text, { color: vercelConnected ? "green" : "gray", children: vercelConnected ? "Connected" : "Not connected" }) }) })] })] }));
|
|
17
17
|
}
|
|
18
18
|
export default AccountCard;
|
|
19
19
|
//# sourceMappingURL=account-card.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-card.js","sourceRoot":"","sources":["../../src/components/account-card.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAWhC;;GAEG;AACH,SAAS,OAAO,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAgD;IAChF,OAAO,CACL,MAAC,GAAG,eACF,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,KAAK,GAAQ,GAC7B,EACL,QAAQ,IACL,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAC1B,
|
|
1
|
+
{"version":3,"file":"account-card.js","sourceRoot":"","sources":["../../src/components/account-card.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CommandRunner — wraps command components for REPL mode.
|
|
3
|
+
*
|
|
4
|
+
* Intercepts useApp().exit() calls from child components so they
|
|
5
|
+
* signal "command done" instead of killing the entire Ink app.
|
|
6
|
+
* Also provides error boundary and timeout protection.
|
|
7
|
+
*/
|
|
8
|
+
import { type ReactElement } from "react";
|
|
9
|
+
interface CommandRunnerProps {
|
|
10
|
+
/** The command element to render. */
|
|
11
|
+
element: ReactElement;
|
|
12
|
+
/** Called when the command finishes (either via exit() or error). */
|
|
13
|
+
onComplete: () => void;
|
|
14
|
+
/** Timeout in ms before force-completing. Default: 60000 (60s). */
|
|
15
|
+
timeout?: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Renders a command component with exit() interception.
|
|
19
|
+
*
|
|
20
|
+
* Shadows Ink's AppContext to replace the real exit() with a
|
|
21
|
+
* callback that signals the REPL to return to the prompt.
|
|
22
|
+
*/
|
|
23
|
+
export declare function CommandRunner({ element, onComplete, timeout }: CommandRunnerProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=command-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-runner.d.ts","sourceRoot":"","sources":["../../src/components/command-runner.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,YAAY,EAA6B,MAAM,OAAO,CAAC;AAKrE,UAAU,kBAAkB;IAC1B,qCAAqC;IACrC,OAAO,EAAE,YAAY,CAAC;IACtB,qEAAqE;IACrE,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAmCD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,OAAe,EAAE,EAAE,kBAAkB,2CAmCzF"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* CommandRunner — wraps command components for REPL mode.
|
|
4
|
+
*
|
|
5
|
+
* Intercepts useApp().exit() calls from child components so they
|
|
6
|
+
* signal "command done" instead of killing the entire Ink app.
|
|
7
|
+
* Also provides error boundary and timeout protection.
|
|
8
|
+
*/
|
|
9
|
+
import { Component } from "react";
|
|
10
|
+
import { useApp, Box, Text } from "ink";
|
|
11
|
+
import AppContext from "ink/build/components/AppContext.js";
|
|
12
|
+
import { inkColors } from "../lib/theme.js";
|
|
13
|
+
/**
|
|
14
|
+
* Error boundary that catches render errors from command components.
|
|
15
|
+
*/
|
|
16
|
+
class CommandErrorBoundary extends Component {
|
|
17
|
+
constructor(props) {
|
|
18
|
+
super(props);
|
|
19
|
+
this.state = { error: null };
|
|
20
|
+
}
|
|
21
|
+
static getDerivedStateFromError(error) {
|
|
22
|
+
return { error };
|
|
23
|
+
}
|
|
24
|
+
componentDidCatch(error) {
|
|
25
|
+
this.props.onError(error);
|
|
26
|
+
}
|
|
27
|
+
render() {
|
|
28
|
+
if (this.state.error) {
|
|
29
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "red", bold: true, children: "Command error:" }), _jsx(Text, { color: inkColors.muted, children: this.state.error.message })] }));
|
|
30
|
+
}
|
|
31
|
+
return this.props.children;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Renders a command component with exit() interception.
|
|
36
|
+
*
|
|
37
|
+
* Shadows Ink's AppContext to replace the real exit() with a
|
|
38
|
+
* callback that signals the REPL to return to the prompt.
|
|
39
|
+
*/
|
|
40
|
+
export function CommandRunner({ element, onComplete, timeout = 60000 }) {
|
|
41
|
+
const realApp = useApp();
|
|
42
|
+
// Create a fake app context that intercepts exit()
|
|
43
|
+
const fakeApp = {
|
|
44
|
+
...realApp,
|
|
45
|
+
exit: (_error) => {
|
|
46
|
+
onComplete();
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
// Set up timeout protection
|
|
50
|
+
const timeoutRef = { current: null };
|
|
51
|
+
if (timeout > 0) {
|
|
52
|
+
// Clear previous timeout on re-render
|
|
53
|
+
if (timeoutRef.current)
|
|
54
|
+
clearTimeout(timeoutRef.current);
|
|
55
|
+
timeoutRef.current = setTimeout(() => {
|
|
56
|
+
onComplete();
|
|
57
|
+
}, timeout);
|
|
58
|
+
}
|
|
59
|
+
const handleError = (_error) => {
|
|
60
|
+
if (timeoutRef.current)
|
|
61
|
+
clearTimeout(timeoutRef.current);
|
|
62
|
+
// Error boundary renders the error message, then we complete after a delay
|
|
63
|
+
setTimeout(() => onComplete(), 2000);
|
|
64
|
+
};
|
|
65
|
+
return (_jsx(AppContext.Provider, { value: fakeApp, children: _jsx(CommandErrorBoundary, { onError: handleError, children: element }) }));
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=command-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-runner.js","sourceRoot":"","sources":["../../src/components/command-runner.tsx"],"names":[],"mappings":";AAAA;;;;;;GAMG;AAEH,OAAO,EAAqB,SAAS,EAAkB,MAAM,OAAO,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACxC,OAAO,UAAU,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAW5C;;GAEG;AACH,MAAM,oBAAqB,SAAQ,SAGlC;IACC,YAAY,KAA+D;QACzE,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,wBAAwB,CAAC,KAAY;QAC1C,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC;IAED,iBAAiB,CAAC,KAAY;QAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,EAAC,IAAI,qCAAsB,EAC5C,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,CAAC,KAAK,YAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAQ,IAC3D,CACP,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,KAAK,EAAsB;IACxF,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC;IAEzB,mDAAmD;IACnD,MAAM,OAAO,GAAG;QACd,GAAG,OAAO;QACV,IAAI,EAAE,CAAC,MAAc,EAAE,EAAE;YACvB,UAAU,EAAE,CAAC;QACf,CAAC;KACF,CAAC;IAEF,4BAA4B;IAC5B,MAAM,UAAU,GAAG,EAAE,OAAO,EAAE,IAA4C,EAAE,CAAC;IAE7E,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,sCAAsC;QACtC,IAAI,UAAU,CAAC,OAAO;YAAE,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACzD,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YACnC,UAAU,EAAE,CAAC;QACf,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,MAAa,EAAE,EAAE;QACpC,IAAI,UAAU,CAAC,OAAO;YAAE,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACzD,2EAA2E;QAC3E,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,UAAU,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,YACjC,KAAC,oBAAoB,IAAC,OAAO,EAAE,WAAW,YACvC,OAAO,GACa,GACH,CACvB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt — interactive input prompt for REPL mode.
|
|
3
|
+
*
|
|
4
|
+
* Renders "dominion> " and captures user input character by character
|
|
5
|
+
* using Ink's useInput hook. Supports history navigation and tab completion.
|
|
6
|
+
*/
|
|
7
|
+
export interface PromptProps {
|
|
8
|
+
/** Called when user presses Enter with input text. */
|
|
9
|
+
onSubmit: (input: string) => void;
|
|
10
|
+
/** Disable input (during command execution). */
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
/** Prompt prefix (e.g., "corey@dominion"). */
|
|
13
|
+
prefix?: string;
|
|
14
|
+
/** Navigate history up. Returns previous entry or null. */
|
|
15
|
+
onHistoryUp?: () => string | null;
|
|
16
|
+
/** Navigate history down. Returns next entry or null. */
|
|
17
|
+
onHistoryDown?: () => string | null;
|
|
18
|
+
/** Tab completion handler. Returns completed text or null. */
|
|
19
|
+
onTab?: (partial: string) => string | null;
|
|
20
|
+
/** Completion candidates to display (shown below prompt). */
|
|
21
|
+
completionCandidates?: string[];
|
|
22
|
+
}
|
|
23
|
+
export declare function Prompt({ onSubmit, disabled, prefix, onHistoryUp, onHistoryDown, onTab, completionCandidates, }: PromptProps): import("react/jsx-runtime").JSX.Element | null;
|
|
24
|
+
//# sourceMappingURL=prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/components/prompt.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,WAAW;IAC1B,sDAAsD;IACtD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,gDAAgD;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAClC,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACpC,8DAA8D;IAC9D,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC3C,6DAA6D;IAC7D,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,wBAAgB,MAAM,CAAC,EACrB,QAAQ,EACR,QAAgB,EAChB,MAAmB,EACnB,WAAW,EACX,aAAa,EACb,KAAK,EACL,oBAAoB,GACrB,EAAE,WAAW,kDAuIb"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Prompt — interactive input prompt for REPL mode.
|
|
4
|
+
*
|
|
5
|
+
* Renders "dominion> " and captures user input character by character
|
|
6
|
+
* using Ink's useInput hook. Supports history navigation and tab completion.
|
|
7
|
+
*/
|
|
8
|
+
import { Box, Text, useInput } from "ink";
|
|
9
|
+
import { useState, useCallback } from "react";
|
|
10
|
+
import { inkColors } from "../lib/theme.js";
|
|
11
|
+
export function Prompt({ onSubmit, disabled = false, prefix = "dominion", onHistoryUp, onHistoryDown, onTab, completionCandidates, }) {
|
|
12
|
+
const [input, setInput] = useState("");
|
|
13
|
+
const [savedInput, setSavedInput] = useState(null);
|
|
14
|
+
const [cursorOffset, setCursorOffset] = useState(0);
|
|
15
|
+
const cursorPos = input.length - cursorOffset;
|
|
16
|
+
const handleSubmit = useCallback(() => {
|
|
17
|
+
const trimmed = input.trim();
|
|
18
|
+
setInput("");
|
|
19
|
+
setCursorOffset(0);
|
|
20
|
+
setSavedInput(null);
|
|
21
|
+
if (trimmed) {
|
|
22
|
+
onSubmit(trimmed);
|
|
23
|
+
}
|
|
24
|
+
}, [input, onSubmit]);
|
|
25
|
+
useInput((ch, key) => {
|
|
26
|
+
if (disabled)
|
|
27
|
+
return;
|
|
28
|
+
// Enter — submit
|
|
29
|
+
if (key.return) {
|
|
30
|
+
handleSubmit();
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
// Escape — clear line
|
|
34
|
+
if (key.escape) {
|
|
35
|
+
setInput("");
|
|
36
|
+
setCursorOffset(0);
|
|
37
|
+
setSavedInput(null);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
// Backspace
|
|
41
|
+
if (key.backspace || key.delete) {
|
|
42
|
+
if (cursorPos > 0) {
|
|
43
|
+
setInput((prev) => prev.slice(0, cursorPos - 1) + prev.slice(cursorPos));
|
|
44
|
+
if (cursorOffset > 0) {
|
|
45
|
+
// Keep cursor offset the same — cursor stays in place
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
// Cursor at end, just remove last char
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
// Up arrow — history
|
|
54
|
+
if (key.upArrow && onHistoryUp) {
|
|
55
|
+
if (savedInput === null) {
|
|
56
|
+
setSavedInput(input);
|
|
57
|
+
}
|
|
58
|
+
const prev = onHistoryUp();
|
|
59
|
+
if (prev !== null) {
|
|
60
|
+
setInput(prev);
|
|
61
|
+
setCursorOffset(0);
|
|
62
|
+
}
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
// Down arrow — history
|
|
66
|
+
if (key.downArrow && onHistoryDown) {
|
|
67
|
+
const next = onHistoryDown();
|
|
68
|
+
if (next !== null) {
|
|
69
|
+
setInput(next);
|
|
70
|
+
setCursorOffset(0);
|
|
71
|
+
}
|
|
72
|
+
else if (savedInput !== null) {
|
|
73
|
+
setInput(savedInput);
|
|
74
|
+
setSavedInput(null);
|
|
75
|
+
setCursorOffset(0);
|
|
76
|
+
}
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
// Left arrow
|
|
80
|
+
if (key.leftArrow) {
|
|
81
|
+
setCursorOffset((prev) => Math.min(prev + 1, input.length));
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
// Right arrow
|
|
85
|
+
if (key.rightArrow) {
|
|
86
|
+
setCursorOffset((prev) => Math.max(prev - 1, 0));
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
// Tab — completion
|
|
90
|
+
if (key.tab && onTab) {
|
|
91
|
+
const completed = onTab(input);
|
|
92
|
+
if (completed !== null) {
|
|
93
|
+
setInput(completed);
|
|
94
|
+
setCursorOffset(0);
|
|
95
|
+
}
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
// Regular character input
|
|
99
|
+
if (ch && !key.ctrl && !key.meta) {
|
|
100
|
+
setInput((prev) => prev.slice(0, cursorPos) + ch + prev.slice(cursorPos));
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
}, { isActive: !disabled });
|
|
104
|
+
if (disabled) {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
// Render input with cursor
|
|
108
|
+
const before = input.slice(0, cursorPos);
|
|
109
|
+
const cursorChar = input[cursorPos] ?? " ";
|
|
110
|
+
const after = input.slice(cursorPos + 1);
|
|
111
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { color: inkColors.primary, bold: true, children: prefix }), _jsx(Text, { color: inkColors.muted, children: "> " }), _jsx(Text, { children: before }), _jsx(Text, { inverse: true, children: cursorChar }), _jsx(Text, { children: after })] }), completionCandidates && completionCandidates.length > 0 && (_jsx(Box, { paddingLeft: prefix.length + 2, children: _jsx(Text, { color: inkColors.muted, children: completionCandidates.join(" ") }) }))] }));
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/components/prompt.tsx"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ export interface SearchResultsProps {
|
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
15
|
* Format price from cents to dollars.
|
|
16
|
-
*
|
|
16
|
+
* Prices are in cents (e.g. 1299 = $12.99).
|
|
17
17
|
*/
|
|
18
18
|
export declare function formatPrice(cents: number): string;
|
|
19
19
|
/**
|
|
@@ -9,7 +9,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
9
9
|
import { Box, Text } from "ink";
|
|
10
10
|
/**
|
|
11
11
|
* Format price from cents to dollars.
|
|
12
|
-
*
|
|
12
|
+
* Prices are in cents (e.g. 1299 = $12.99).
|
|
13
13
|
*/
|
|
14
14
|
export function formatPrice(cents) {
|
|
15
15
|
return `$${(cents / 100).toFixed(2)}`;
|
package/dist/lib/auth.d.ts
CHANGED
|
@@ -1,31 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Auth utilities for login, logout, and whoami flows.
|
|
2
|
+
* Auth utilities for login, register, logout, and whoami flows.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Authenticates against the Dominion API.
|
|
5
5
|
* All credentials stored in ~/.dominion/config.json with 0600 permissions.
|
|
6
6
|
*/
|
|
7
7
|
import { ConfigManager } from "./config.js";
|
|
8
8
|
export interface AuthStatus {
|
|
9
9
|
authenticated: boolean;
|
|
10
|
-
|
|
10
|
+
email?: string;
|
|
11
11
|
domainCount?: number;
|
|
12
12
|
configPath: string;
|
|
13
13
|
}
|
|
14
14
|
export interface ValidateResult {
|
|
15
15
|
success: boolean;
|
|
16
|
-
|
|
16
|
+
email: string;
|
|
17
|
+
token?: string;
|
|
17
18
|
domainCount: number;
|
|
18
19
|
error?: string;
|
|
19
20
|
}
|
|
20
21
|
/**
|
|
21
|
-
*
|
|
22
|
-
* Returns domain count on success for display in whoami.
|
|
22
|
+
* Register a new Dominion account.
|
|
23
23
|
*/
|
|
24
|
-
export declare function
|
|
24
|
+
export declare function register(email: string, password: string, configManager?: ConfigManager): Promise<ValidateResult>;
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
26
|
+
* Login to an existing Dominion account.
|
|
27
27
|
*/
|
|
28
|
-
export declare function
|
|
28
|
+
export declare function login(email: string, password: string, configManager?: ConfigManager): Promise<ValidateResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Validate current session by calling /auth/me.
|
|
31
|
+
*/
|
|
32
|
+
export declare function validateSession(configManager?: ConfigManager): Promise<ValidateResult>;
|
|
33
|
+
/**
|
|
34
|
+
* Save auth credentials to config.
|
|
35
|
+
*/
|
|
36
|
+
export declare function saveCredentials(email: string, token: string, configManager?: ConfigManager): void;
|
|
29
37
|
/**
|
|
30
38
|
* Clear credentials from config (logout).
|
|
31
39
|
*/
|
package/dist/lib/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAI5C,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAQD;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,cAAc,CAAC,CAkCzB;AAED;;GAEG;AACH,wBAAsB,KAAK,CACzB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,cAAc,CAAC,CAkCzB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,cAAc,CAAC,CA+CzB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,aAAa,GAC5B,IAAI,CAGN;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAKpE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,UAAU,CAUvE;AAED;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,UAAU,CAAC,CAmBrB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB9D"}
|