seamless-cli 0.5.1 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +133 -0
- package/dist/commands/adminShared.js +23 -0
- package/dist/commands/adminShared.js.map +1 -0
- package/dist/commands/config.js +187 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/help.js +98 -0
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/login.js +86 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.js +43 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/org.js +249 -0
- package/dist/commands/org.js.map +1 -0
- package/dist/commands/profile.js +150 -0
- package/dist/commands/profile.js.map +1 -0
- package/dist/commands/sessions.js +112 -0
- package/dist/commands/sessions.js.map +1 -0
- package/dist/commands/users.js +147 -0
- package/dist/commands/users.js.map +1 -0
- package/dist/commands/verify.js +133 -9
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/whoami.js +29 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/core/admin.js +142 -0
- package/dist/core/admin.js.map +1 -0
- package/dist/core/args.js +19 -0
- package/dist/core/args.js.map +1 -0
- package/dist/core/authClient.js +113 -0
- package/dist/core/authClient.js.map +1 -0
- package/dist/core/config.js +146 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/http.js +34 -0
- package/dist/core/http.js.map +1 -0
- package/dist/core/images.js +1 -1
- package/dist/core/keychain.js +112 -0
- package/dist/core/keychain.js.map +1 -0
- package/dist/core/loginFlow.js +143 -0
- package/dist/core/loginFlow.js.map +1 -0
- package/dist/core/session.js +30 -0
- package/dist/core/session.js.map +1 -0
- package/dist/core/sessions.js +41 -0
- package/dist/core/sessions.js.map +1 -0
- package/dist/core/systemConfig.js +125 -0
- package/dist/core/systemConfig.js.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -1
- package/package.json +8 -2
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
function str(record, key) {
|
|
2
|
+
const value = record[key];
|
|
3
|
+
return typeof value === "string" && value ? value : undefined;
|
|
4
|
+
}
|
|
5
|
+
function toSessionInfo(raw) {
|
|
6
|
+
if (!raw || typeof raw !== "object")
|
|
7
|
+
return null;
|
|
8
|
+
const record = raw;
|
|
9
|
+
if (typeof record.id !== "string")
|
|
10
|
+
return null;
|
|
11
|
+
return {
|
|
12
|
+
id: record.id,
|
|
13
|
+
deviceName: str(record, "deviceName"),
|
|
14
|
+
ipAddress: str(record, "ipAddress"),
|
|
15
|
+
userAgent: str(record, "userAgent"),
|
|
16
|
+
lastUsedAt: str(record, "lastUsedAt"),
|
|
17
|
+
expiresAt: str(record, "expiresAt"),
|
|
18
|
+
current: record.current === true,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export async function listSessions(client) {
|
|
22
|
+
const res = await client.get("/sessions");
|
|
23
|
+
if (!res.ok) {
|
|
24
|
+
throw new Error(`Could not list sessions (${res.status}).`);
|
|
25
|
+
}
|
|
26
|
+
const raw = Array.isArray(res.data?.sessions) ? res.data.sessions : [];
|
|
27
|
+
return raw
|
|
28
|
+
.map(toSessionInfo)
|
|
29
|
+
.filter((session) => session !== null);
|
|
30
|
+
}
|
|
31
|
+
export async function revokeSessionById(client, id) {
|
|
32
|
+
const res = await client.request(`/sessions/${encodeURIComponent(id)}`, {
|
|
33
|
+
method: "DELETE",
|
|
34
|
+
});
|
|
35
|
+
return { ok: res.ok, status: res.status };
|
|
36
|
+
}
|
|
37
|
+
export async function revokeAllSessions(client) {
|
|
38
|
+
const res = await client.request("/sessions", { method: "DELETE" });
|
|
39
|
+
return { ok: res.ok, status: res.status };
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/core/sessions.ts"],"names":[],"mappings":"AAYA,SAAS,GAAG,CAAC,MAA+B,EAAE,GAAW;IACvD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAChE,CAAC;AAED,SAAS,aAAa,CAAC,GAAY;IACjC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,MAAM,GAAG,GAA8B,CAAC;IAC9C,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE/C,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;QACrC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;QACnC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;QACnC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;QACrC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;QACnC,OAAO,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI;KACjC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAkB;IACnD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAA2B,WAAW,CAAC,CAAC;IACpE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,OAAO,GAAG;SACP,GAAG,CAAC,aAAa,CAAC;SAClB,MAAM,CAAC,CAAC,OAAO,EAA0B,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;AACnE,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAkB,EAClB,EAAU;IAEV,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,aAAa,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE;QACtE,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAC;IACH,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
export const WRITABLE_KEYS = [
|
|
2
|
+
"app_name",
|
|
3
|
+
"default_roles",
|
|
4
|
+
"available_roles",
|
|
5
|
+
"login_methods",
|
|
6
|
+
"passkey_login_fallback_enabled",
|
|
7
|
+
"oauth_providers",
|
|
8
|
+
"lockout_policy",
|
|
9
|
+
"access_token_ttl",
|
|
10
|
+
"refresh_token_ttl",
|
|
11
|
+
"rate_limit",
|
|
12
|
+
"delay_after",
|
|
13
|
+
"rpid",
|
|
14
|
+
"origins",
|
|
15
|
+
];
|
|
16
|
+
const WRITABLE = new Set(WRITABLE_KEYS);
|
|
17
|
+
export class PermissionError extends Error {
|
|
18
|
+
constructor(message = "You do not have permission for this action. It requires an admin role on the instance.") {
|
|
19
|
+
super(message);
|
|
20
|
+
this.name = "PermissionError";
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export class ConfigApiError extends Error {
|
|
24
|
+
constructor(message) {
|
|
25
|
+
super(message);
|
|
26
|
+
this.name = "ConfigApiError";
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export async function getSystemConfig(client) {
|
|
30
|
+
const res = await client.get("/system-config/admin");
|
|
31
|
+
if (res.status === 403)
|
|
32
|
+
throw new PermissionError();
|
|
33
|
+
if (!res.ok || !res.data) {
|
|
34
|
+
throw new ConfigApiError(`Could not read system config (${res.status}).`);
|
|
35
|
+
}
|
|
36
|
+
return res.data;
|
|
37
|
+
}
|
|
38
|
+
export async function getRoles(client) {
|
|
39
|
+
const res = await client.get("/system-config/roles");
|
|
40
|
+
if (res.status === 403)
|
|
41
|
+
throw new PermissionError();
|
|
42
|
+
if (!res.ok) {
|
|
43
|
+
throw new ConfigApiError(`Could not read roles (${res.status}).`);
|
|
44
|
+
}
|
|
45
|
+
return Array.isArray(res.data?.roles)
|
|
46
|
+
? res.data.roles.filter((role) => typeof role === "string")
|
|
47
|
+
: [];
|
|
48
|
+
}
|
|
49
|
+
export async function patchSystemConfig(client, patch) {
|
|
50
|
+
const res = await client.request("/system-config/admin", {
|
|
51
|
+
method: "PATCH",
|
|
52
|
+
headers: { "Content-Type": "application/json" },
|
|
53
|
+
body: JSON.stringify(patch),
|
|
54
|
+
});
|
|
55
|
+
if (res.status === 403)
|
|
56
|
+
throw new PermissionError();
|
|
57
|
+
if (res.status === 400) {
|
|
58
|
+
const reason = res.data?.error ?? "Invalid configuration";
|
|
59
|
+
const details = res.data?.details
|
|
60
|
+
? ` ${JSON.stringify(res.data.details)}`
|
|
61
|
+
: "";
|
|
62
|
+
throw new ConfigApiError(`${reason}.${details}`);
|
|
63
|
+
}
|
|
64
|
+
if (!res.ok) {
|
|
65
|
+
throw new ConfigApiError(`Could not update system config (${res.status}).`);
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
success: res.data?.success ?? true,
|
|
69
|
+
updatedKeys: Array.isArray(res.data?.updatedKeys)
|
|
70
|
+
? res.data.updatedKeys
|
|
71
|
+
: [],
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
export function parseValue(raw) {
|
|
75
|
+
try {
|
|
76
|
+
return JSON.parse(raw.trim());
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return raw;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
export function filterWritable(config) {
|
|
83
|
+
const patch = {};
|
|
84
|
+
const dropped = [];
|
|
85
|
+
for (const [key, value] of Object.entries(config)) {
|
|
86
|
+
if (WRITABLE.has(key))
|
|
87
|
+
patch[key] = value;
|
|
88
|
+
else
|
|
89
|
+
dropped.push(key);
|
|
90
|
+
}
|
|
91
|
+
return { patch, dropped };
|
|
92
|
+
}
|
|
93
|
+
export function deepEqual(a, b) {
|
|
94
|
+
if (a === b)
|
|
95
|
+
return true;
|
|
96
|
+
if (a === null || b === null)
|
|
97
|
+
return a === b;
|
|
98
|
+
if (typeof a !== typeof b)
|
|
99
|
+
return false;
|
|
100
|
+
if (Array.isArray(a) || Array.isArray(b)) {
|
|
101
|
+
if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
return a.every((item, i) => deepEqual(item, b[i]));
|
|
105
|
+
}
|
|
106
|
+
if (typeof a === "object" && typeof b === "object") {
|
|
107
|
+
const aKeys = Object.keys(a);
|
|
108
|
+
const bKeys = Object.keys(b);
|
|
109
|
+
if (aKeys.length !== bKeys.length)
|
|
110
|
+
return false;
|
|
111
|
+
return aKeys.every((key) => Object.prototype.hasOwnProperty.call(b, key) &&
|
|
112
|
+
deepEqual(a[key], b[key]));
|
|
113
|
+
}
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
export function diffConfig(local, remote) {
|
|
117
|
+
const changes = [];
|
|
118
|
+
for (const [key, to] of Object.entries(local)) {
|
|
119
|
+
if (!deepEqual(remote[key], to)) {
|
|
120
|
+
changes.push({ key, from: remote[key], to });
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return changes;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=systemConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"systemConfig.js","sourceRoot":"","sources":["../../src/core/systemConfig.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,14 @@ import { printHelp } from "./commands/help.js";
|
|
|
5
5
|
import pkg from "../package.json" with { type: "json" };
|
|
6
6
|
import { runBootstrapAdmin } from "./commands/bootstrapAdmin.js";
|
|
7
7
|
import { runVerify } from "./commands/verify.js";
|
|
8
|
+
import { runProfile } from "./commands/profile.js";
|
|
9
|
+
import { runLogin } from "./commands/login.js";
|
|
10
|
+
import { runWhoami } from "./commands/whoami.js";
|
|
11
|
+
import { runLogout } from "./commands/logout.js";
|
|
12
|
+
import { runSessions } from "./commands/sessions.js";
|
|
13
|
+
import { runConfig } from "./commands/config.js";
|
|
14
|
+
import { runUsers } from "./commands/users.js";
|
|
15
|
+
import { runOrg } from "./commands/org.js";
|
|
8
16
|
export const VERSION = pkg.version;
|
|
9
17
|
const args = process.argv.slice(2);
|
|
10
18
|
const command = args[0];
|
|
@@ -43,6 +51,38 @@ async function main() {
|
|
|
43
51
|
await runVerify(args.slice(1));
|
|
44
52
|
return;
|
|
45
53
|
}
|
|
54
|
+
if (command === "profile") {
|
|
55
|
+
await runProfile(args.slice(1));
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
if (command === "login") {
|
|
59
|
+
await runLogin(args.slice(1));
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (command === "whoami") {
|
|
63
|
+
await runWhoami(args.slice(1));
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (command === "logout") {
|
|
67
|
+
await runLogout(args.slice(1));
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (command === "sessions") {
|
|
71
|
+
await runSessions(args.slice(1));
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (command === "config") {
|
|
75
|
+
await runConfig(args.slice(1));
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (command === "users") {
|
|
79
|
+
await runUsers(args.slice(1));
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (command === "org") {
|
|
83
|
+
await runOrg(args.slice(1));
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
46
86
|
await runCLI(command);
|
|
47
87
|
}
|
|
48
88
|
main().catch((err) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "seamless-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "The Seamless Auth command-line interface",
|
|
5
5
|
"homepage": "https://github.com/fells-code/seamless-cli#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -16,10 +16,14 @@
|
|
|
16
16
|
"seamless": "dist/index.js"
|
|
17
17
|
},
|
|
18
18
|
"type": "module",
|
|
19
|
+
"engines": {
|
|
20
|
+
"node": ">=24 <25"
|
|
21
|
+
},
|
|
19
22
|
"scripts": {
|
|
20
23
|
"build": "tsc",
|
|
21
24
|
"dev": "tsx src/index.ts",
|
|
22
25
|
"clean": "rm -rf dist",
|
|
26
|
+
"test": "vitest run",
|
|
23
27
|
"changeset": "changeset",
|
|
24
28
|
"version-packages": "changeset version",
|
|
25
29
|
"release:stable": "npm run build && changeset publish",
|
|
@@ -35,6 +39,7 @@
|
|
|
35
39
|
],
|
|
36
40
|
"dependencies": {
|
|
37
41
|
"@clack/prompts": "^1.0.1",
|
|
42
|
+
"@napi-rs/keyring": "^1.3.0",
|
|
38
43
|
"adm-zip": "^0.5.16",
|
|
39
44
|
"kleur": "^4.1.5"
|
|
40
45
|
},
|
|
@@ -43,6 +48,7 @@
|
|
|
43
48
|
"@types/adm-zip": "^0.5.7",
|
|
44
49
|
"@types/node": "^24.10.13",
|
|
45
50
|
"tsx": "^4.21.0",
|
|
46
|
-
"typescript": "^5.9.3"
|
|
51
|
+
"typescript": "^5.9.3",
|
|
52
|
+
"vitest": "^3.2.7"
|
|
47
53
|
}
|
|
48
54
|
}
|