@kingslanding/cli 0.3.1 → 0.4.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/commands/login.d.ts +57 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +108 -12
- package/dist/commands/login.js.map +1 -1
- package/dist/lib/api.d.ts +2 -1
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/config.d.ts +15 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +18 -12
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/qr.d.ts +9 -0
- package/dist/lib/qr.d.ts.map +1 -0
- package/dist/lib/qr.js +16 -0
- package/dist/lib/qr.js.map +1 -0
- package/dist/services/auth-service.d.ts +1 -1
- package/dist/services/auth-service.d.ts.map +1 -1
- package/dist/services/auth-service.js +2 -2
- package/dist/services/auth-service.js.map +1 -1
- package/package.json +5 -3
package/dist/commands/login.d.ts
CHANGED
|
@@ -1,3 +1,60 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
|
+
import type { LoginPreferences } from "../lib/config.js";
|
|
3
|
+
/**
|
|
4
|
+
* Pick the URL to open: the code-embedded (complete) URL when the server
|
|
5
|
+
* provides it, otherwise the plain verification URI (older server).
|
|
6
|
+
*/
|
|
7
|
+
export declare function resolveVerificationTarget(verificationUri: string, verificationUriComplete: string | undefined): string;
|
|
8
|
+
/**
|
|
9
|
+
* A session is "headless" when there's no local browser to open — over SSH,
|
|
10
|
+
* or on Linux with no display server. In that case the QR (scanned from a
|
|
11
|
+
* phone) is the primary path rather than redundant with an auto-opened browser.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isHeadlessSession(env: NodeJS.ProcessEnv, platform: NodeJS.Platform): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Merge command-line flags with persisted config into effective preferences.
|
|
16
|
+
* Precedence: an explicit flag wins, then persisted config, then the default.
|
|
17
|
+
* `--no-browser` (browserFlag=false) and `--qr` (qrFlag=true) are the only
|
|
18
|
+
* flags, so a flag can force the browser off or the QR on; config supplies the
|
|
19
|
+
* default for whichever flag wasn't passed.
|
|
20
|
+
*/
|
|
21
|
+
export declare function resolveLoginPreferences(flags: {
|
|
22
|
+
browserFlag: boolean;
|
|
23
|
+
qrFlag: boolean;
|
|
24
|
+
}, config: LoginPreferences): {
|
|
25
|
+
noBrowser: boolean;
|
|
26
|
+
qr: boolean;
|
|
27
|
+
};
|
|
28
|
+
export interface LoginDisplay {
|
|
29
|
+
openBrowser: boolean;
|
|
30
|
+
showQr: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Decide whether to auto-open a browser and whether to render the QR.
|
|
34
|
+
*
|
|
35
|
+
* We open a browser unless the user opted out (`--no-browser`) or there's
|
|
36
|
+
* none to open (headless). We show the QR whenever we're NOT auto-opening a
|
|
37
|
+
* browser (so the user has a scannable path), or when explicitly forced
|
|
38
|
+
* (`--qr`). On a normal desktop the QR is hidden — it would just duplicate
|
|
39
|
+
* the browser that already opened pre-filled.
|
|
40
|
+
*/
|
|
41
|
+
export declare function resolveLoginDisplay(opts: {
|
|
42
|
+
noBrowser: boolean;
|
|
43
|
+
qr: boolean;
|
|
44
|
+
headless: boolean;
|
|
45
|
+
}): LoginDisplay;
|
|
46
|
+
/**
|
|
47
|
+
* Build the login prompt, adapting the wording to what actually happens:
|
|
48
|
+
* automatic framing ("Opening your browser…") when we open it, manual framing
|
|
49
|
+
* ("visit this URL / scan this") when we don't. In browser mode the code isn't
|
|
50
|
+
* repeated — it's already visible in the URL and pre-filled on the page. In
|
|
51
|
+
* manual mode it's shown as a clean token for typing.
|
|
52
|
+
*/
|
|
53
|
+
export declare function formatLoginMessage(args: {
|
|
54
|
+
userCode: string;
|
|
55
|
+
target: string;
|
|
56
|
+
openBrowser: boolean;
|
|
57
|
+
qr: string | null;
|
|
58
|
+
}): string;
|
|
2
59
|
export declare function registerLoginCommand(program: Command): void;
|
|
3
60
|
//# sourceMappingURL=login.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAezD;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,eAAe,EAAE,MAAM,EACvB,uBAAuB,EAAE,MAAM,GAAG,SAAS,GAC1C,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,OAAO,CAI5F;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,EAChD,MAAM,EAAE,gBAAgB,GACvB;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,OAAO,CAAA;CAAE,CAIrC;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;CACnB,GAAG,YAAY,CAIf;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CACnB,GAAG,MAAM,CA0BT;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgF3D"}
|
package/dist/commands/login.js
CHANGED
|
@@ -1,20 +1,101 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
2
|
import { ApiClient } from "../lib/api.js";
|
|
3
|
-
import { resolveApiUrl, isLocalMode } from "../lib/config.js";
|
|
4
|
-
import { getAuthHeader, loadCredentials, isTokenExpiringSoon
|
|
3
|
+
import { resolveApiUrl, isLocalMode, loadGlobalConfig } from "../lib/config.js";
|
|
4
|
+
import { getAuthHeader, loadCredentials, isTokenExpiringSoon } from "../lib/auth.js";
|
|
5
5
|
import { createSpinner } from "../lib/output.js";
|
|
6
|
+
import { renderQrCode } from "../lib/qr.js";
|
|
6
7
|
import { AuthService } from "../services/auth-service.js";
|
|
7
8
|
function tryOpenBrowser(url) {
|
|
8
9
|
const cmd = process.platform === "darwin" ? "open" : "xdg-open";
|
|
9
|
-
|
|
10
|
+
// execFile (no shell) passes the URL as a single argv element, so a
|
|
11
|
+
// server-provided URL can't inject shell metacharacters.
|
|
12
|
+
execFile(cmd, [url], () => {
|
|
10
13
|
// Silent failure — user can copy/paste the URL
|
|
11
14
|
});
|
|
12
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Pick the URL to open: the code-embedded (complete) URL when the server
|
|
18
|
+
* provides it, otherwise the plain verification URI (older server).
|
|
19
|
+
*/
|
|
20
|
+
export function resolveVerificationTarget(verificationUri, verificationUriComplete) {
|
|
21
|
+
return verificationUriComplete ?? verificationUri;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* A session is "headless" when there's no local browser to open — over SSH,
|
|
25
|
+
* or on Linux with no display server. In that case the QR (scanned from a
|
|
26
|
+
* phone) is the primary path rather than redundant with an auto-opened browser.
|
|
27
|
+
*/
|
|
28
|
+
export function isHeadlessSession(env, platform) {
|
|
29
|
+
if (env.SSH_CONNECTION || env.SSH_TTY)
|
|
30
|
+
return true;
|
|
31
|
+
if (platform === "linux" && !env.DISPLAY && !env.WAYLAND_DISPLAY)
|
|
32
|
+
return true;
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Merge command-line flags with persisted config into effective preferences.
|
|
37
|
+
* Precedence: an explicit flag wins, then persisted config, then the default.
|
|
38
|
+
* `--no-browser` (browserFlag=false) and `--qr` (qrFlag=true) are the only
|
|
39
|
+
* flags, so a flag can force the browser off or the QR on; config supplies the
|
|
40
|
+
* default for whichever flag wasn't passed.
|
|
41
|
+
*/
|
|
42
|
+
export function resolveLoginPreferences(flags, config) {
|
|
43
|
+
const noBrowser = flags.browserFlag === false || config.browser === false;
|
|
44
|
+
const qr = flags.qrFlag || config.qr === true;
|
|
45
|
+
return { noBrowser, qr };
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Decide whether to auto-open a browser and whether to render the QR.
|
|
49
|
+
*
|
|
50
|
+
* We open a browser unless the user opted out (`--no-browser`) or there's
|
|
51
|
+
* none to open (headless). We show the QR whenever we're NOT auto-opening a
|
|
52
|
+
* browser (so the user has a scannable path), or when explicitly forced
|
|
53
|
+
* (`--qr`). On a normal desktop the QR is hidden — it would just duplicate
|
|
54
|
+
* the browser that already opened pre-filled.
|
|
55
|
+
*/
|
|
56
|
+
export function resolveLoginDisplay(opts) {
|
|
57
|
+
const openBrowser = !opts.noBrowser && !opts.headless;
|
|
58
|
+
const showQr = opts.qr || !openBrowser;
|
|
59
|
+
return { openBrowser, showQr };
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Build the login prompt, adapting the wording to what actually happens:
|
|
63
|
+
* automatic framing ("Opening your browser…") when we open it, manual framing
|
|
64
|
+
* ("visit this URL / scan this") when we don't. In browser mode the code isn't
|
|
65
|
+
* repeated — it's already visible in the URL and pre-filled on the page. In
|
|
66
|
+
* manual mode it's shown as a clean token for typing.
|
|
67
|
+
*/
|
|
68
|
+
export function formatLoginMessage(args) {
|
|
69
|
+
const { userCode, target, openBrowser, qr } = args;
|
|
70
|
+
const lines = [];
|
|
71
|
+
if (openBrowser) {
|
|
72
|
+
lines.push("Opening your browser to authorize this device…");
|
|
73
|
+
lines.push("");
|
|
74
|
+
lines.push(" Didn't open? Visit:");
|
|
75
|
+
lines.push(" " + target);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
lines.push("To authorize this device, visit:");
|
|
79
|
+
lines.push(" " + target);
|
|
80
|
+
}
|
|
81
|
+
if (qr) {
|
|
82
|
+
lines.push("");
|
|
83
|
+
lines.push("Or scan with your phone:");
|
|
84
|
+
lines.push(qr);
|
|
85
|
+
}
|
|
86
|
+
if (!openBrowser) {
|
|
87
|
+
lines.push("");
|
|
88
|
+
lines.push(`Verification code: ${userCode}`);
|
|
89
|
+
}
|
|
90
|
+
return lines.join("\n");
|
|
91
|
+
}
|
|
13
92
|
export function registerLoginCommand(program) {
|
|
14
93
|
program
|
|
15
94
|
.command("login")
|
|
16
95
|
.description("Authenticate with King's Landing")
|
|
17
|
-
.
|
|
96
|
+
.option("--no-browser", "Don't open the browser automatically; show a QR to scan instead")
|
|
97
|
+
.option("--qr", "Always show a QR code, even when the browser opens")
|
|
98
|
+
.action(async (options) => {
|
|
18
99
|
const apiUrl = resolveApiUrl();
|
|
19
100
|
if (isLocalMode(apiUrl)) {
|
|
20
101
|
console.log("Local mode — no login required.");
|
|
@@ -35,15 +116,30 @@ export function registerLoginCommand(program) {
|
|
|
35
116
|
const authHeader = getAuthHeader(apiUrl);
|
|
36
117
|
const api = new ApiClient(apiUrl, authHeader);
|
|
37
118
|
const authService = new AuthService(api, apiUrl);
|
|
38
|
-
const spinner = createSpinner("Waiting for
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
119
|
+
const spinner = createSpinner("Waiting for authorization…");
|
|
120
|
+
const prefs = resolveLoginPreferences({ browserFlag: options.browser, qrFlag: options.qr ?? false }, loadGlobalConfig().login ?? {});
|
|
121
|
+
const display = resolveLoginDisplay({
|
|
122
|
+
noBrowser: prefs.noBrowser,
|
|
123
|
+
qr: prefs.qr,
|
|
124
|
+
headless: isHeadlessSession(process.env, process.platform),
|
|
125
|
+
});
|
|
126
|
+
await authService.login((userCode, verificationUri, verificationUriComplete) => {
|
|
127
|
+
const target = resolveVerificationTarget(verificationUri, verificationUriComplete);
|
|
128
|
+
let qr = null;
|
|
129
|
+
if (display.showQr) {
|
|
130
|
+
try {
|
|
131
|
+
qr = renderQrCode(target);
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
// QR is a convenience — never block login on a render failure
|
|
135
|
+
}
|
|
136
|
+
}
|
|
43
137
|
console.log();
|
|
44
|
-
console.log(
|
|
138
|
+
console.log(formatLoginMessage({ userCode, target, openBrowser: display.openBrowser, qr }));
|
|
45
139
|
console.log();
|
|
46
|
-
|
|
140
|
+
if (display.openBrowser) {
|
|
141
|
+
tryOpenBrowser(target);
|
|
142
|
+
}
|
|
47
143
|
spinner.start();
|
|
48
144
|
});
|
|
49
145
|
spinner.stop();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/api.d.ts
CHANGED
|
@@ -60,7 +60,8 @@ export interface DeployKeyStatusResponse {
|
|
|
60
60
|
export interface DeviceCodeResponse {
|
|
61
61
|
device_code: string;
|
|
62
62
|
user_code: string;
|
|
63
|
-
|
|
63
|
+
verification_uri: string;
|
|
64
|
+
verification_uri_complete?: string;
|
|
64
65
|
expires_in: number;
|
|
65
66
|
}
|
|
66
67
|
export interface DeviceTokenResponse {
|
package/dist/lib/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,iBAAiB,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnD,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CAChD;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI,CAAC;CACV;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,SAAS;IAElB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,UAAU;gBADD,OAAO,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,GAAG,IAAI;IAGnC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIhC,gBAAgB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAI/C,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -4,6 +4,21 @@ export interface ProjectConfig {
|
|
|
4
4
|
directory: string;
|
|
5
5
|
api_url?: string;
|
|
6
6
|
}
|
|
7
|
+
export interface LoginPreferences {
|
|
8
|
+
/** Whether `kl login` auto-opens the browser (default true). */
|
|
9
|
+
browser?: boolean;
|
|
10
|
+
/** Whether `kl login` always renders the QR code (default false / auto). */
|
|
11
|
+
qr?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface GlobalConfig {
|
|
14
|
+
api_url?: string;
|
|
15
|
+
login?: LoginPreferences;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Load the global config from `<dir>/config.json` (default `~/.kl`). Returns an
|
|
19
|
+
* empty object when the file is missing or malformed — config is always optional.
|
|
20
|
+
*/
|
|
21
|
+
export declare function loadGlobalConfig(dir?: string): GlobalConfig;
|
|
7
22
|
export declare function resolveApiUrl(cwd?: string): string;
|
|
8
23
|
export declare function loadProjectConfig(cwd: string): ProjectConfig | null;
|
|
9
24
|
export declare function writeProjectConfig(cwd: string, config: Pick<ProjectConfig, "project" | "directory">): void;
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,MAAM,QAAiC,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,MAAM,QAAiC,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4EAA4E;IAC5E,EAAE,CAAC,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAe,GAAG,YAAY,CAQnE;AAED,wBAAgB,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAalD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAyBnE;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,WAAW,CAAC,GACnD,IAAI,CAGN;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAgB,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQnE"}
|
package/dist/lib/config.js
CHANGED
|
@@ -4,6 +4,21 @@ import * as os from "node:os";
|
|
|
4
4
|
const DEFAULT_API_URL = "https://api.kingslanding.io";
|
|
5
5
|
const LOCAL_API_URL = "https://api.kl.test";
|
|
6
6
|
export const KL_DIR = path.join(os.homedir(), ".kl");
|
|
7
|
+
/**
|
|
8
|
+
* Load the global config from `<dir>/config.json` (default `~/.kl`). Returns an
|
|
9
|
+
* empty object when the file is missing or malformed — config is always optional.
|
|
10
|
+
*/
|
|
11
|
+
export function loadGlobalConfig(dir = KL_DIR) {
|
|
12
|
+
const configPath = path.join(dir, "config.json");
|
|
13
|
+
if (!fs.existsSync(configPath))
|
|
14
|
+
return {};
|
|
15
|
+
try {
|
|
16
|
+
return JSON.parse(fs.readFileSync(configPath, "utf-8"));
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return {};
|
|
20
|
+
}
|
|
21
|
+
}
|
|
7
22
|
export function resolveApiUrl(cwd) {
|
|
8
23
|
const resolvedCwd = cwd ?? process.cwd();
|
|
9
24
|
const envUrl = process.env.KL_API_URL;
|
|
@@ -12,18 +27,9 @@ export function resolveApiUrl(cwd) {
|
|
|
12
27
|
const config = loadProjectConfig(resolvedCwd);
|
|
13
28
|
if (config?.api_url)
|
|
14
29
|
return config.api_url;
|
|
15
|
-
const
|
|
16
|
-
if (
|
|
17
|
-
|
|
18
|
-
const raw = fs.readFileSync(globalConfigPath, "utf-8");
|
|
19
|
-
const globalConfig = JSON.parse(raw);
|
|
20
|
-
if (globalConfig.api_url)
|
|
21
|
-
return globalConfig.api_url;
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
// Ignore malformed global config
|
|
25
|
-
}
|
|
26
|
-
}
|
|
30
|
+
const globalConfig = loadGlobalConfig();
|
|
31
|
+
if (globalConfig.api_url)
|
|
32
|
+
return globalConfig.api_url;
|
|
27
33
|
return DEFAULT_API_URL;
|
|
28
34
|
}
|
|
29
35
|
export function loadProjectConfig(cwd) {
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,MAAM,eAAe,GAAG,6BAA6B,CAAC;AACtD,MAAM,aAAa,GAAG,qBAAqB,CAAC;AAC5C,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/qr.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Render `text` as a compact ASCII QR code string.
|
|
3
|
+
*
|
|
4
|
+
* qrcode-terminal invokes the callback synchronously, so we capture the
|
|
5
|
+
* output and return it rather than letting the library print directly —
|
|
6
|
+
* this keeps rendering testable and lets the caller control output.
|
|
7
|
+
*/
|
|
8
|
+
export declare function renderQrCode(text: string): string;
|
|
9
|
+
//# sourceMappingURL=qr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qr.d.ts","sourceRoot":"","sources":["../../src/lib/qr.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMjD"}
|
package/dist/lib/qr.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import qrcode from "qrcode-terminal";
|
|
2
|
+
/**
|
|
3
|
+
* Render `text` as a compact ASCII QR code string.
|
|
4
|
+
*
|
|
5
|
+
* qrcode-terminal invokes the callback synchronously, so we capture the
|
|
6
|
+
* output and return it rather than letting the library print directly —
|
|
7
|
+
* this keeps rendering testable and lets the caller control output.
|
|
8
|
+
*/
|
|
9
|
+
export function renderQrCode(text) {
|
|
10
|
+
let output = "";
|
|
11
|
+
qrcode.generate(text, { small: true }, (qr) => {
|
|
12
|
+
output = qr;
|
|
13
|
+
});
|
|
14
|
+
return output;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=qr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qr.js","sourceRoot":"","sources":["../../src/lib/qr.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,EAAU,EAAE,EAAE;QACpD,MAAM,GAAG,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -4,7 +4,7 @@ export declare class AuthService {
|
|
|
4
4
|
private readonly api;
|
|
5
5
|
private readonly apiUrl;
|
|
6
6
|
constructor(api: ApiClient, apiUrl: string);
|
|
7
|
-
login(onShowCode: (userCode: string,
|
|
7
|
+
login(onShowCode: (userCode: string, verificationUri: string, verificationUriComplete: string | undefined) => void, pollInterval?: number): Promise<{
|
|
8
8
|
access_token: string;
|
|
9
9
|
refresh_token: string;
|
|
10
10
|
id_token: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-service.d.ts","sourceRoot":"","sources":["../../src/services/auth-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,KAAK,WAAW,EAKjB,MAAM,gBAAgB,CAAC;AAKxB,qBAAa,WAAW;IAEpB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,MAAM;IAG3B,KAAK,CACT,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"auth-service.d.ts","sourceRoot":"","sources":["../../src/services/auth-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,KAAK,WAAW,EAKjB,MAAM,gBAAgB,CAAC;AAKxB,qBAAa,WAAW;IAEpB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,MAAM;IAG3B,KAAK,CACT,UAAU,EAAE,CACV,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,uBAAuB,EAAE,MAAM,GAAG,SAAS,KACxC,IAAI,EACT,YAAY,SAAwB,GACnC,OAAO,CAAC;QACT,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IA8BI,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3C,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;CAmBhE"}
|
|
@@ -9,8 +9,8 @@ export class AuthService {
|
|
|
9
9
|
this.apiUrl = apiUrl;
|
|
10
10
|
}
|
|
11
11
|
async login(onShowCode, pollInterval = DEFAULT_POLL_INTERVAL) {
|
|
12
|
-
const { device_code, user_code,
|
|
13
|
-
onShowCode(user_code,
|
|
12
|
+
const { device_code, user_code, verification_uri, verification_uri_complete } = await this.api.createDeviceCode();
|
|
13
|
+
onShowCode(user_code, verification_uri, verification_uri_complete);
|
|
14
14
|
// eslint-disable-next-line no-constant-condition
|
|
15
15
|
while (true) {
|
|
16
16
|
if (pollInterval > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-service.js","sourceRoot":"","sources":["../../src/services/auth-service.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAEnC,MAAM,OAAO,WAAW;IAEH;IACA;IAFnB,YACmB,GAAc,EACd,MAAc;QADd,QAAG,GAAH,GAAG,CAAW;QACd,WAAM,GAAN,MAAM,CAAQ;IAC9B,CAAC;IAEJ,KAAK,CAAC,KAAK,CACT,
|
|
1
|
+
{"version":3,"file":"auth-service.js","sourceRoot":"","sources":["../../src/services/auth-service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kingslanding/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Deploy static sites to King's Landing from any terminal or CI/CD pipeline",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -37,13 +37,15 @@
|
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@inquirer/prompts": "^7.0.0",
|
|
39
39
|
"commander": "^13.0.0",
|
|
40
|
-
"glob": "^
|
|
40
|
+
"glob": "^13.0.6",
|
|
41
41
|
"mime-types": "^2.1.35",
|
|
42
|
-
"ora": "^8.0.0"
|
|
42
|
+
"ora": "^8.0.0",
|
|
43
|
+
"qrcode-terminal": "^0.12.0"
|
|
43
44
|
},
|
|
44
45
|
"devDependencies": {
|
|
45
46
|
"@types/mime-types": "^2.1.4",
|
|
46
47
|
"@types/node": "^22.0.0",
|
|
48
|
+
"@types/qrcode-terminal": "^0.12.2",
|
|
47
49
|
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
|
48
50
|
"@typescript-eslint/parser": "^8.0.0",
|
|
49
51
|
"@vitest/coverage-v8": "^4.1.9",
|