@quire-io/quire-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/CHANGES.md +33 -0
- package/LICENSE +15 -0
- package/README.md +69 -0
- package/dist/cli.js +209 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/chat.js +200 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/colors.js +34 -0
- package/dist/commands/colors.js.map +1 -0
- package/dist/commands/comment.js +128 -0
- package/dist/commands/comment.js.map +1 -0
- package/dist/commands/doc.js +139 -0
- package/dist/commands/doc.js.map +1 -0
- package/dist/commands/insight.js +234 -0
- package/dist/commands/insight.js.map +1 -0
- package/dist/commands/login.js +78 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.js +25 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/mine.js +61 -0
- package/dist/commands/mine.js.map +1 -0
- package/dist/commands/notify.js +25 -0
- package/dist/commands/notify.js.map +1 -0
- package/dist/commands/org.js +99 -0
- package/dist/commands/org.js.map +1 -0
- package/dist/commands/partner.js +36 -0
- package/dist/commands/partner.js.map +1 -0
- package/dist/commands/project.js +346 -0
- package/dist/commands/project.js.map +1 -0
- package/dist/commands/resolve.js +61 -0
- package/dist/commands/resolve.js.map +1 -0
- package/dist/commands/status.js +130 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/sublist.js +143 -0
- package/dist/commands/sublist.js.map +1 -0
- package/dist/commands/tag.js +108 -0
- package/dist/commands/tag.js.map +1 -0
- package/dist/commands/task.js +767 -0
- package/dist/commands/task.js.map +1 -0
- package/dist/commands/undo.js +64 -0
- package/dist/commands/undo.js.map +1 -0
- package/dist/commands/user.js +24 -0
- package/dist/commands/user.js.map +1 -0
- package/dist/commands/whoami.js +34 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/config.js +37 -0
- package/dist/config.js.map +1 -0
- package/dist/credentials.js +28 -0
- package/dist/credentials.js.map +1 -0
- package/dist/errors.js +56 -0
- package/dist/errors.js.map +1 -0
- package/dist/log.js +37 -0
- package/dist/log.js.map +1 -0
- package/dist/oauth/config.js +22 -0
- package/dist/oauth/config.js.map +1 -0
- package/dist/oauth/loopback.js +101 -0
- package/dist/oauth/loopback.js.map +1 -0
- package/dist/oauth/pkce.js +16 -0
- package/dist/oauth/pkce.js.map +1 -0
- package/dist/options.js +2 -0
- package/dist/options.js.map +1 -0
- package/dist/output/colors.js +77 -0
- package/dist/output/colors.js.map +1 -0
- package/dist/output/columns.js +22 -0
- package/dist/output/columns.js.map +1 -0
- package/dist/output/keyvalue.js +18 -0
- package/dist/output/keyvalue.js.map +1 -0
- package/dist/output/render.js +30 -0
- package/dist/output/render.js.map +1 -0
- package/dist/output/table.js +35 -0
- package/dist/output/table.js.map +1 -0
- package/dist/quire-client.js +74 -0
- package/dist/quire-client.js.map +1 -0
- package/dist/util/attach-input.js +65 -0
- package/dist/util/attach-input.js.map +1 -0
- package/dist/util/bulk-input.js +80 -0
- package/dist/util/bulk-input.js.map +1 -0
- package/dist/util/confirm.js +31 -0
- package/dist/util/confirm.js.map +1 -0
- package/dist/util/field-flags.js +52 -0
- package/dist/util/field-flags.js.map +1 -0
- package/dist/util/open-url.js +39 -0
- package/dist/util/open-url.js.map +1 -0
- package/dist/util/recurrence.js +53 -0
- package/dist/util/recurrence.js.map +1 -0
- package/dist/util/retry-after.js +56 -0
- package/dist/util/retry-after.js.map +1 -0
- package/dist/util/task-id.js +34 -0
- package/dist/util/task-id.js.map +1 -0
- package/dist/util/text-input.js +26 -0
- package/dist/util/text-input.js.map +1 -0
- package/dist/version.js +19 -0
- package/dist/version.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { ValidationError } from "../errors.js";
|
|
2
|
+
import { TASK_GET_FIELDS } from "../output/columns.js";
|
|
3
|
+
import { renderObject } from "../output/render.js";
|
|
4
|
+
import { createQuireClient } from "../quire-client.js";
|
|
5
|
+
const VALID_KINDS = [
|
|
6
|
+
"task",
|
|
7
|
+
"chat",
|
|
8
|
+
"comment",
|
|
9
|
+
"document",
|
|
10
|
+
"insight",
|
|
11
|
+
"sublist",
|
|
12
|
+
];
|
|
13
|
+
const GENERIC_FIELDS = [
|
|
14
|
+
{ label: "Name", get: (r) => r.nameText ?? r.name },
|
|
15
|
+
{ label: "ID", get: (r) => (r.id !== undefined ? String(r.id) : undefined) },
|
|
16
|
+
{ label: "OID", get: (r) => r.oid },
|
|
17
|
+
{ label: "Description", get: (r) => r.descriptionText },
|
|
18
|
+
{ label: "URL", get: (r) => r.url },
|
|
19
|
+
];
|
|
20
|
+
export function registerUndoCommand(program) {
|
|
21
|
+
program
|
|
22
|
+
.command("undo <kind> <oid>")
|
|
23
|
+
.description(`Restore a deleted resource. <kind> = ${VALID_KINDS.join(" | ")}. Mirrors the per-resource \`undo-remove\` subcommands.`)
|
|
24
|
+
.action(async (kind, oid) => {
|
|
25
|
+
if (!VALID_KINDS.includes(kind)) {
|
|
26
|
+
throw new ValidationError(`Unknown kind "${kind}". Expected one of: ${VALID_KINDS.join(", ")}.`);
|
|
27
|
+
}
|
|
28
|
+
const root = program.opts();
|
|
29
|
+
const client = createQuireClient({ profile: root.profile });
|
|
30
|
+
switch (kind) {
|
|
31
|
+
case "task": {
|
|
32
|
+
const t = await client.undoRemoveTask(oid);
|
|
33
|
+
renderObject(t, root, { fields: TASK_GET_FIELDS, toId: (t) => t.oid });
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
case "chat": {
|
|
37
|
+
const c = await client.undoRemoveChat(oid);
|
|
38
|
+
renderObject(c, root, { fields: GENERIC_FIELDS, toId: (r) => r.oid });
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
case "comment": {
|
|
42
|
+
const c = await client.undoRemoveComment(oid);
|
|
43
|
+
renderObject(c, root, { fields: GENERIC_FIELDS, toId: (r) => r.oid });
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
case "document": {
|
|
47
|
+
const d = await client.undoRemoveDocument(oid);
|
|
48
|
+
renderObject(d, root, { fields: GENERIC_FIELDS, toId: (d) => d.oid });
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
case "insight": {
|
|
52
|
+
const i = await client.undoRemoveInsight(oid);
|
|
53
|
+
renderObject(i, root, { fields: GENERIC_FIELDS, toId: (i) => i.oid });
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
case "sublist": {
|
|
57
|
+
const s = await client.undoRemoveSublist(oid);
|
|
58
|
+
renderObject(s, root, { fields: GENERIC_FIELDS, toId: (s) => s.oid });
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=undo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"undo.js","sourceRoot":"","sources":["../../src/commands/undo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { renderObject } from "../output/render.js";
|
|
2
|
+
import { createQuireClient } from "../quire-client.js";
|
|
3
|
+
const USER_FIELDS = [
|
|
4
|
+
{ label: "Name", get: (u) => u.nameText ?? u.name },
|
|
5
|
+
{ label: "ID", get: (u) => u.id },
|
|
6
|
+
{ label: "OID", get: (u) => u.oid },
|
|
7
|
+
{ label: "Email", get: (u) => u.email },
|
|
8
|
+
{ label: "Description", get: (u) => u.descriptionText },
|
|
9
|
+
{ label: "Website", get: (u) => u.website },
|
|
10
|
+
{ label: "URL", get: (u) => u.url },
|
|
11
|
+
];
|
|
12
|
+
export function registerUserCommand(program) {
|
|
13
|
+
const user = program.command("user").description("Quire users.");
|
|
14
|
+
user
|
|
15
|
+
.command("get <oid>")
|
|
16
|
+
.description("Show one user by OID. Use `quire whoami` for the signed-in user; `quire resolve <url>` for a public-id URL.")
|
|
17
|
+
.action(async (oid) => {
|
|
18
|
+
const root = program.opts();
|
|
19
|
+
const client = createQuireClient({ profile: root.profile });
|
|
20
|
+
const u = await client.getUser(oid);
|
|
21
|
+
renderObject(u, root, { fields: USER_FIELDS, toId: (u) => u.oid });
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=user.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/commands/user.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,WAAW,GAAG;IAClB,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAsC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE;IACxF,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;IACjD,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE;IACpD,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAqB,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE;IAC3D,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAA+B,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE;IACrF,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAuB,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;IACjE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE;CACtD,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAEjE,IAAI;SACD,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,6GAA6G,CAAC;SAC1H,MAAM,CAAC,KAAK,EAAE,GAAW,EAAE,EAAE;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAc,CAAC;QACxC,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5D,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpC,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { createQuireClient } from "../quire-client.js";
|
|
2
|
+
import { createLogger } from "../log.js";
|
|
3
|
+
export function registerWhoamiCommand(program) {
|
|
4
|
+
program
|
|
5
|
+
.command("whoami")
|
|
6
|
+
.description("Show the signed-in Quire user and the orgs they belong to.")
|
|
7
|
+
.action(async () => {
|
|
8
|
+
const root = program.opts();
|
|
9
|
+
const log = createLogger({ verbose: root.verbose === true, color: root.colorMode });
|
|
10
|
+
const client = createQuireClient({ profile: root.profile });
|
|
11
|
+
const [me, orgs] = await Promise.all([client.getMe(), client.listOrganizations()]);
|
|
12
|
+
if (root.json === true) {
|
|
13
|
+
process.stdout.write(`${JSON.stringify({ ...me, organizations: orgs })}\n`);
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
if (root.quiet === true) {
|
|
17
|
+
process.stdout.write(`${me.oid}\n`);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const displayName = me.nameText ?? me.name;
|
|
21
|
+
const emailSuffix = me.email ? ` <${me.email}>` : "";
|
|
22
|
+
log.info(`${displayName}${emailSuffix}`);
|
|
23
|
+
if (orgs.length === 0) {
|
|
24
|
+
log.info(" (no organizations)");
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
log.info(" Organizations:");
|
|
28
|
+
for (const org of orgs) {
|
|
29
|
+
const name = org.nameText ?? org.name;
|
|
30
|
+
log.info(` - ${name} ${org.oid}`);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=whoami.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAUzC,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,4DAA4D,CAAC;SACzE,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAc,CAAC;QACxC,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAEpF,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5D,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;QAEnF,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;YAC5E,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,IAAI,CAAC;QAC3C,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,GAAG,WAAW,EAAE,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC;YACtC,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { mkdirSync } from "node:fs";
|
|
2
|
+
import { homedir, platform } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
function resolveConfigHome() {
|
|
5
|
+
if (process.env.QUIRE_CONFIG_HOME)
|
|
6
|
+
return process.env.QUIRE_CONFIG_HOME;
|
|
7
|
+
if (platform() === "win32") {
|
|
8
|
+
const appData = process.env.APPDATA ?? join(homedir(), "AppData", "Roaming");
|
|
9
|
+
return join(appData, "quire");
|
|
10
|
+
}
|
|
11
|
+
// XDG: $XDG_CONFIG_HOME/quire, falling back to ~/.config/quire.
|
|
12
|
+
const xdg = process.env.XDG_CONFIG_HOME;
|
|
13
|
+
if (xdg)
|
|
14
|
+
return join(xdg, "quire");
|
|
15
|
+
return join(homedir(), ".config", "quire");
|
|
16
|
+
}
|
|
17
|
+
export function resolveConfigPaths(profile) {
|
|
18
|
+
const configDir = resolveConfigHome();
|
|
19
|
+
const resolvedProfile = profile ?? process.env.QUIRE_PROFILE ?? "default";
|
|
20
|
+
const credentialsFile = resolvedProfile === "default"
|
|
21
|
+
? "credentials.json"
|
|
22
|
+
: `credentials.${resolvedProfile}.json`;
|
|
23
|
+
return {
|
|
24
|
+
configDir,
|
|
25
|
+
credentialsPath: join(configDir, credentialsFile),
|
|
26
|
+
profile: resolvedProfile,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export function ensureConfigDir(configDir) {
|
|
30
|
+
// mode 0o700 is honored on POSIX; silently ignored on Windows.
|
|
31
|
+
// recursive: true makes this idempotent.
|
|
32
|
+
mkdirSync(configDir, { recursive: true, mode: 0o700 });
|
|
33
|
+
}
|
|
34
|
+
export function getApiServer() {
|
|
35
|
+
return process.env.QUIRE_API_SERVER ?? "https://quire.io";
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAQjC,SAAS,iBAAiB;IACxB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAExE,IAAI,QAAQ,EAAE,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC7E,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,gEAAgE;IAChE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACxC,IAAI,GAAG;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IACtC,MAAM,eAAe,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,SAAS,CAAC;IAC1E,MAAM,eAAe,GACnB,eAAe,KAAK,SAAS;QAC3B,CAAC,CAAC,kBAAkB;QACpB,CAAC,CAAC,eAAe,eAAe,OAAO,CAAC;IAC5C,OAAO;QACL,SAAS;QACT,eAAe,EAAE,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC;QACjD,OAAO,EAAE,eAAe;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,+DAA+D;IAC/D,yCAAyC;IACzC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,kBAAkB,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { existsSync, readFileSync, renameSync, unlinkSync, writeFileSync, } from "node:fs";
|
|
2
|
+
import { ensureConfigDir, resolveConfigPaths } from "./config.js";
|
|
3
|
+
export function readCredentials(profile) {
|
|
4
|
+
const { credentialsPath } = resolveConfigPaths(profile);
|
|
5
|
+
if (!existsSync(credentialsPath))
|
|
6
|
+
return null;
|
|
7
|
+
const raw = readFileSync(credentialsPath, "utf8");
|
|
8
|
+
return JSON.parse(raw);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Atomically persist credentials. Writes to a same-directory temp file
|
|
12
|
+
* first, then renames over the target so a CLI killed mid-rotation can't
|
|
13
|
+
* leave a torn JSON file behind. File mode is 0600 on POSIX (silently
|
|
14
|
+
* ignored on Windows).
|
|
15
|
+
*/
|
|
16
|
+
export function writeCredentials(creds, profile) {
|
|
17
|
+
const { configDir, credentialsPath } = resolveConfigPaths(profile);
|
|
18
|
+
ensureConfigDir(configDir);
|
|
19
|
+
const tmpPath = `${credentialsPath}.${process.pid}.tmp`;
|
|
20
|
+
writeFileSync(tmpPath, `${JSON.stringify(creds, null, 2)}\n`, { mode: 0o600 });
|
|
21
|
+
renameSync(tmpPath, credentialsPath);
|
|
22
|
+
}
|
|
23
|
+
export function deleteCredentials(profile) {
|
|
24
|
+
const { credentialsPath } = resolveConfigPaths(profile);
|
|
25
|
+
if (existsSync(credentialsPath))
|
|
26
|
+
unlinkSync(credentialsPath);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,UAAU,EACV,UAAU,EACV,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAWlE,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,MAAM,EAAE,eAAe,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,GAAG,GAAG,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAsB,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAwB,EAAE,OAAgB;IACzE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACnE,eAAe,CAAC,SAAS,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,GAAG,eAAe,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;IACxD,aAAa,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/E,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,MAAM,EAAE,eAAe,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,eAAe,CAAC;QAAE,UAAU,CAAC,eAAe,CAAC,CAAC;AAC/D,CAAC"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { QuireAuthRevokedError } from "@quire-io/api-client";
|
|
2
|
+
export const ExitCode = {
|
|
3
|
+
Success: 0,
|
|
4
|
+
NotLoggedIn: 1,
|
|
5
|
+
ApiError: 2,
|
|
6
|
+
Validation: 3,
|
|
7
|
+
UserDeclined: 4,
|
|
8
|
+
Usage: 64,
|
|
9
|
+
};
|
|
10
|
+
export class CliError extends Error {
|
|
11
|
+
exitCode;
|
|
12
|
+
constructor(message, exitCode = ExitCode.ApiError) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.name = "CliError";
|
|
15
|
+
this.exitCode = exitCode;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export class NotLoggedInError extends CliError {
|
|
19
|
+
constructor(message = "Not logged in. Run `quire login`.") {
|
|
20
|
+
super(message, ExitCode.NotLoggedIn);
|
|
21
|
+
this.name = "NotLoggedInError";
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export class ValidationError extends CliError {
|
|
25
|
+
constructor(message) {
|
|
26
|
+
super(message, ExitCode.Validation);
|
|
27
|
+
this.name = "ValidationError";
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export class UserDeclinedError extends CliError {
|
|
31
|
+
constructor(message = "Aborted by user.") {
|
|
32
|
+
super(message, ExitCode.UserDeclined);
|
|
33
|
+
this.name = "UserDeclinedError";
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export function handleError(err, log) {
|
|
37
|
+
if (err instanceof QuireAuthRevokedError) {
|
|
38
|
+
// Refresh token is dead — `createQuireClient`'s onAuthRevoked has
|
|
39
|
+
// already wiped the credentials file. Surface a clean login prompt.
|
|
40
|
+
log.error("Your Quire credentials are no longer valid. Run `quire login` to re-authenticate.");
|
|
41
|
+
process.exit(ExitCode.NotLoggedIn);
|
|
42
|
+
}
|
|
43
|
+
if (err instanceof CliError) {
|
|
44
|
+
log.error(err.message);
|
|
45
|
+
process.exit(err.exitCode);
|
|
46
|
+
}
|
|
47
|
+
if (err instanceof Error) {
|
|
48
|
+
log.error(err.message);
|
|
49
|
+
if (err.stack)
|
|
50
|
+
log.debug(err.stack);
|
|
51
|
+
process.exit(ExitCode.ApiError);
|
|
52
|
+
}
|
|
53
|
+
log.error(String(err));
|
|
54
|
+
process.exit(ExitCode.ApiError);
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAI7D,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO,EAAE,CAAC;IACV,WAAW,EAAE,CAAC;IACd,QAAQ,EAAE,CAAC;IACX,UAAU,EAAE,CAAC;IACb,YAAY,EAAE,CAAC;IACf,KAAK,EAAE,EAAE;CACD,CAAC;AAIX,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,QAAQ,CAAgB;IACjC,YAAY,OAAe,EAAE,WAA0B,QAAQ,CAAC,QAAQ;QACtE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,QAAQ;IAC5C,YAAY,OAAO,GAAG,mCAAmC;QACvD,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,QAAQ;IAC7C,YAAY,OAAO,GAAG,kBAAkB;QACtC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,MAAM,UAAU,WAAW,CAAC,GAAY,EAAE,GAAW;IACnD,IAAI,GAAG,YAAY,qBAAqB,EAAE,CAAC;QACzC,kEAAkE;QAClE,oEAAoE;QACpE,GAAG,CAAC,KAAK,CAAC,mFAAmF,CAAC,CAAC;QAC/F,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,GAAG,CAAC,KAAK;YAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IACD,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC"}
|
package/dist/log.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { isatty } from "node:tty";
|
|
2
|
+
function shouldColor(mode) {
|
|
3
|
+
if (mode === "always")
|
|
4
|
+
return true;
|
|
5
|
+
if (mode === "never")
|
|
6
|
+
return false;
|
|
7
|
+
if (process.env.NO_COLOR)
|
|
8
|
+
return false;
|
|
9
|
+
return isatty(2);
|
|
10
|
+
}
|
|
11
|
+
function paint(use, code, s) {
|
|
12
|
+
return use ? `\x1b[${code}m${s}\x1b[0m` : s;
|
|
13
|
+
}
|
|
14
|
+
export function createLogger(opts = {}) {
|
|
15
|
+
const verbose = opts.verbose === true;
|
|
16
|
+
const useColor = shouldColor(opts.color);
|
|
17
|
+
const dim = (s) => paint(useColor, "2", s);
|
|
18
|
+
const yellow = (s) => paint(useColor, "33", s);
|
|
19
|
+
const red = (s) => paint(useColor, "31", s);
|
|
20
|
+
return {
|
|
21
|
+
debug(msg, ...rest) {
|
|
22
|
+
if (!verbose)
|
|
23
|
+
return;
|
|
24
|
+
console.error(dim(`[debug] ${msg}`), ...rest);
|
|
25
|
+
},
|
|
26
|
+
info(msg, ...rest) {
|
|
27
|
+
console.error(msg, ...rest);
|
|
28
|
+
},
|
|
29
|
+
warn(msg, ...rest) {
|
|
30
|
+
console.error(yellow(`warning: ${msg}`), ...rest);
|
|
31
|
+
},
|
|
32
|
+
error(msg, ...rest) {
|
|
33
|
+
console.error(red(`error: ${msg}`), ...rest);
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=log.js.map
|
package/dist/log.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAelC,SAAS,WAAW,CAAC,IAA4B;IAC/C,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IACvC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,KAAK,CAAC,GAAY,EAAE,IAAY,EAAE,CAAS;IAClD,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAsB,EAAE;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;IACtC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEpD,OAAO;QACL,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI;YAChB,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI;YACf,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI;YACf,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,GAAG,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;QACpD,CAAC;QACD,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI;YAChB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;QAC/C,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// OAuth client configuration for the Quire CLI.
|
|
2
|
+
//
|
|
3
|
+
// Public client — no client_secret. Authorization is gated by PKCE (RFC 7636)
|
|
4
|
+
// and a loopback redirect URI per RFC 8252. The OAuth app is registered at
|
|
5
|
+
// <https://quire.io/apps/dev/quire_cli>; this constant is the public
|
|
6
|
+
// `client_id` from that page.
|
|
7
|
+
//
|
|
8
|
+
// !!! Development client_id !!!
|
|
9
|
+
// This is the *development* OAuth app. Swap for the production `client_id`
|
|
10
|
+
// before cutting the first public release.
|
|
11
|
+
export const QUIRE_CLI_CLIENT_ID = ":0000mVxxApzA5wCng9iFk3Nzw0v";
|
|
12
|
+
// Fixed loopback port for the OAuth callback. The Quire OAuth app form
|
|
13
|
+
// requires an exact-match redirect URI (no RFC 8252 §7.3 port-wildcard
|
|
14
|
+
// support yet), so the CLI binds to a single known port and the OAuth app's
|
|
15
|
+
// registered redirect URI must exactly equal `http://127.0.0.1:<this>/callback`.
|
|
16
|
+
//
|
|
17
|
+
// Override via $QUIRE_CLI_LOOPBACK_PORT for testing against an OAuth app
|
|
18
|
+
// that registers a different port. Range-clamped to a non-privileged port
|
|
19
|
+
// (>1023) so the CLI never tries to bind 80/443 without root.
|
|
20
|
+
const ENV_PORT = Number.parseInt(process.env.QUIRE_CLI_LOOPBACK_PORT ?? "", 10);
|
|
21
|
+
export const QUIRE_CLI_LOOPBACK_PORT = Number.isInteger(ENV_PORT) && ENV_PORT > 1023 && ENV_PORT < 65536 ? ENV_PORT : 8866;
|
|
22
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/oauth/config.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,qEAAqE;AACrE,8BAA8B;AAC9B,EAAE;AACF,gCAAgC;AAChC,2EAA2E;AAC3E,2CAA2C;AAC3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,8BAA8B,CAAC;AAElE,uEAAuE;AACvE,uEAAuE;AACvE,4EAA4E;AAC5E,iFAAiF;AACjF,EAAE;AACF,yEAAyE;AACzE,0EAA0E;AAC1E,8DAA8D;AAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,uBAAuB,GAClC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { createServer } from "node:http";
|
|
2
|
+
const SUCCESS_HTML = `<!doctype html>
|
|
3
|
+
<html><head><meta charset="utf-8"><title>Quire CLI — login complete</title>
|
|
4
|
+
<style>body{font-family:-apple-system,Segoe UI,Roboto,sans-serif;max-width:32rem;margin:5rem auto;padding:0 1rem;color:#222;text-align:center}
|
|
5
|
+
h1{font-size:1.4rem}p{color:#555}</style></head>
|
|
6
|
+
<body><h1>You're signed in to Quire.</h1><p>You can close this window and return to your terminal.</p></body></html>
|
|
7
|
+
`;
|
|
8
|
+
function failureHtml(reason) {
|
|
9
|
+
return `<!doctype html>
|
|
10
|
+
<html><head><meta charset="utf-8"><title>Quire CLI — login failed</title>
|
|
11
|
+
<style>body{font-family:-apple-system,Segoe UI,Roboto,sans-serif;max-width:32rem;margin:5rem auto;padding:0 1rem;color:#222;text-align:center}
|
|
12
|
+
h1{font-size:1.4rem;color:#b00020}p{color:#555}code{background:#f4f4f4;padding:.1rem .3rem;border-radius:3px}</style></head>
|
|
13
|
+
<body><h1>Login failed</h1><p><code>${reason}</code></p><p>You can close this window.</p></body></html>
|
|
14
|
+
`;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Start a single-shot loopback server on `127.0.0.1`. The server listens
|
|
18
|
+
* only on `127.0.0.1` — never `0.0.0.0` — so other machines on the network
|
|
19
|
+
* can't observe the auth code in transit.
|
|
20
|
+
*/
|
|
21
|
+
export async function startLoopbackServer(opts = {}) {
|
|
22
|
+
let resolveResult = () => { };
|
|
23
|
+
let rejectResult = () => { };
|
|
24
|
+
const resultPromise = new Promise((resolve, reject) => {
|
|
25
|
+
resolveResult = resolve;
|
|
26
|
+
rejectResult = reject;
|
|
27
|
+
});
|
|
28
|
+
const handler = (req, res) => {
|
|
29
|
+
if (!req.url) {
|
|
30
|
+
res.writeHead(400, { "Content-Type": "text/plain" });
|
|
31
|
+
res.end("Bad request");
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const url = new URL(req.url, "http://127.0.0.1");
|
|
35
|
+
if (url.pathname !== "/callback") {
|
|
36
|
+
res.writeHead(404, { "Content-Type": "text/plain" });
|
|
37
|
+
res.end("Not found");
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const error = url.searchParams.get("error");
|
|
41
|
+
const errorDesc = url.searchParams.get("error_description");
|
|
42
|
+
if (error) {
|
|
43
|
+
const message = errorDesc ? `${error}: ${errorDesc}` : error;
|
|
44
|
+
res.writeHead(400, { "Content-Type": "text/html; charset=utf-8" });
|
|
45
|
+
res.end(failureHtml(message));
|
|
46
|
+
rejectResult(new Error(`OAuth error from Quire — ${message}`));
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const code = url.searchParams.get("code");
|
|
50
|
+
const state = url.searchParams.get("state");
|
|
51
|
+
if (!code || !state) {
|
|
52
|
+
res.writeHead(400, { "Content-Type": "text/html; charset=utf-8" });
|
|
53
|
+
res.end(failureHtml("Missing code or state"));
|
|
54
|
+
rejectResult(new Error("OAuth callback missing code or state"));
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
|
|
58
|
+
res.end(SUCCESS_HTML);
|
|
59
|
+
resolveResult({ code, state });
|
|
60
|
+
};
|
|
61
|
+
const server = createServer(handler);
|
|
62
|
+
const port = opts.port ?? 0;
|
|
63
|
+
await new Promise((resolve, reject) => {
|
|
64
|
+
server.once("error", (err) => {
|
|
65
|
+
if (err.code === "EADDRINUSE") {
|
|
66
|
+
reject(new Error(`Port ${port} is already in use. Close whatever is holding it, or set $QUIRE_CLI_LOOPBACK_PORT to a free port (must match the OAuth app's registered redirect URI).`));
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
reject(err);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
server.listen(port, "127.0.0.1", () => resolve());
|
|
73
|
+
});
|
|
74
|
+
const address = server.address();
|
|
75
|
+
const redirectUri = `http://127.0.0.1:${address.port}/callback`;
|
|
76
|
+
let closed = false;
|
|
77
|
+
const close = () => {
|
|
78
|
+
if (closed)
|
|
79
|
+
return;
|
|
80
|
+
closed = true;
|
|
81
|
+
server.close();
|
|
82
|
+
};
|
|
83
|
+
return {
|
|
84
|
+
redirectUri,
|
|
85
|
+
waitForCallback: async ({ timeoutMs = 5 * 60 * 1000 } = {}) => {
|
|
86
|
+
let timer;
|
|
87
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
88
|
+
timer = setTimeout(() => reject(new Error("Login timed out — no response after 5 minutes.")), timeoutMs);
|
|
89
|
+
});
|
|
90
|
+
try {
|
|
91
|
+
return await Promise.race([resultPromise, timeoutPromise]);
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
if (timer)
|
|
95
|
+
clearTimeout(timer);
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
close,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=loopback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loopback.js","sourceRoot":"","sources":["../../src/oauth/loopback.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { createHash, randomBytes } from "node:crypto";
|
|
2
|
+
/**
|
|
3
|
+
* Generate a PKCE verifier + S256 challenge per RFC 7636. 32 bytes of
|
|
4
|
+
* entropy → 43 base64url chars (the lower bound the spec allows; well
|
|
5
|
+
* above 256 bits of unpredictability).
|
|
6
|
+
*/
|
|
7
|
+
export function generatePkce() {
|
|
8
|
+
const codeVerifier = randomBytes(32).toString("base64url");
|
|
9
|
+
const codeChallenge = createHash("sha256").update(codeVerifier).digest("base64url");
|
|
10
|
+
return { codeVerifier, codeChallenge };
|
|
11
|
+
}
|
|
12
|
+
/** Generate an opaque OAuth `state` value to bind the redirect to this flow. */
|
|
13
|
+
export function generateState() {
|
|
14
|
+
return randomBytes(32).toString("base64url");
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=pkce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pkce.js","sourceRoot":"","sources":["../../src/oauth/pkce.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAOtD;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,YAAY,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACpF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;AACzC,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,aAAa;IAC3B,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC/C,CAAC"}
|
package/dist/options.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":""}
|