seamless-cli 0.5.2 → 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.
Files changed (46) hide show
  1. package/README.md +133 -0
  2. package/dist/commands/adminShared.js +23 -0
  3. package/dist/commands/adminShared.js.map +1 -0
  4. package/dist/commands/config.js +187 -0
  5. package/dist/commands/config.js.map +1 -0
  6. package/dist/commands/help.js +98 -0
  7. package/dist/commands/help.js.map +1 -1
  8. package/dist/commands/login.js +86 -0
  9. package/dist/commands/login.js.map +1 -0
  10. package/dist/commands/logout.js +43 -0
  11. package/dist/commands/logout.js.map +1 -0
  12. package/dist/commands/org.js +249 -0
  13. package/dist/commands/org.js.map +1 -0
  14. package/dist/commands/profile.js +150 -0
  15. package/dist/commands/profile.js.map +1 -0
  16. package/dist/commands/sessions.js +112 -0
  17. package/dist/commands/sessions.js.map +1 -0
  18. package/dist/commands/users.js +147 -0
  19. package/dist/commands/users.js.map +1 -0
  20. package/dist/commands/verify.js +133 -9
  21. package/dist/commands/verify.js.map +1 -1
  22. package/dist/commands/whoami.js +29 -0
  23. package/dist/commands/whoami.js.map +1 -0
  24. package/dist/core/admin.js +142 -0
  25. package/dist/core/admin.js.map +1 -0
  26. package/dist/core/args.js +19 -0
  27. package/dist/core/args.js.map +1 -0
  28. package/dist/core/authClient.js +113 -0
  29. package/dist/core/authClient.js.map +1 -0
  30. package/dist/core/config.js +146 -0
  31. package/dist/core/config.js.map +1 -0
  32. package/dist/core/http.js +34 -0
  33. package/dist/core/http.js.map +1 -0
  34. package/dist/core/keychain.js +112 -0
  35. package/dist/core/keychain.js.map +1 -0
  36. package/dist/core/loginFlow.js +143 -0
  37. package/dist/core/loginFlow.js.map +1 -0
  38. package/dist/core/session.js +30 -0
  39. package/dist/core/session.js.map +1 -0
  40. package/dist/core/sessions.js +41 -0
  41. package/dist/core/sessions.js.map +1 -0
  42. package/dist/core/systemConfig.js +125 -0
  43. package/dist/core/systemConfig.js.map +1 -0
  44. package/dist/index.js +40 -0
  45. package/dist/index.js.map +1 -1
  46. 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;AAEjD,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AACnC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC7C,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI;aACjB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aACjC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,MAAM,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,QAAQ,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,iBAAiB,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;AACxB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
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;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AACnC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC7C,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI;aACjB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aACjC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,MAAM,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,QAAQ,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,iBAAiB,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,MAAM,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;AACxB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "seamless-cli",
3
- "version": "0.5.2",
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
  }