clishop 0.1.0 → 0.1.1

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 (3) hide show
  1. package/dist/index.js +16 -11
  2. package/package.json +1 -3
  3. package/src/auth.ts +17 -12
package/dist/index.js CHANGED
@@ -10,7 +10,7 @@ import ora from "ora";
10
10
  import inquirer from "inquirer";
11
11
 
12
12
  // src/auth.ts
13
- import keytar from "keytar";
13
+ import Conf2 from "conf";
14
14
  import axios from "axios";
15
15
 
16
16
  // src/config.ts
@@ -97,27 +97,32 @@ function listAgents() {
97
97
  }
98
98
 
99
99
  // src/auth.ts
100
- var SERVICE_NAME = "clishop";
100
+ var SERVICE_NAME = "clishop-auth";
101
101
  var ACCOUNT_TOKEN = "auth-token";
102
102
  var ACCOUNT_REFRESH = "refresh-token";
103
103
  var ACCOUNT_USER = "user-info";
104
+ var authStore = new Conf2({
105
+ projectName: SERVICE_NAME,
106
+ encryptionKey: "clishop-local-encryption-key"
107
+ // Basic obfuscation
108
+ });
104
109
  async function storeToken(token) {
105
- await keytar.setPassword(SERVICE_NAME, ACCOUNT_TOKEN, token);
110
+ authStore.set(ACCOUNT_TOKEN, token);
106
111
  }
107
112
  async function storeRefreshToken(token) {
108
- await keytar.setPassword(SERVICE_NAME, ACCOUNT_REFRESH, token);
113
+ authStore.set(ACCOUNT_REFRESH, token);
109
114
  }
110
115
  async function storeUserInfo(user) {
111
- await keytar.setPassword(SERVICE_NAME, ACCOUNT_USER, JSON.stringify(user));
116
+ authStore.set(ACCOUNT_USER, JSON.stringify(user));
112
117
  }
113
118
  async function getToken() {
114
- return keytar.getPassword(SERVICE_NAME, ACCOUNT_TOKEN);
119
+ return authStore.get(ACCOUNT_TOKEN) || null;
115
120
  }
116
121
  async function getRefreshToken() {
117
- return keytar.getPassword(SERVICE_NAME, ACCOUNT_REFRESH);
122
+ return authStore.get(ACCOUNT_REFRESH) || null;
118
123
  }
119
124
  async function getUserInfo() {
120
- const raw = await keytar.getPassword(SERVICE_NAME, ACCOUNT_USER);
125
+ const raw = authStore.get(ACCOUNT_USER);
121
126
  if (!raw) return null;
122
127
  try {
123
128
  return JSON.parse(raw);
@@ -126,9 +131,9 @@ async function getUserInfo() {
126
131
  }
127
132
  }
128
133
  async function clearAuth() {
129
- await keytar.deletePassword(SERVICE_NAME, ACCOUNT_TOKEN);
130
- await keytar.deletePassword(SERVICE_NAME, ACCOUNT_REFRESH);
131
- await keytar.deletePassword(SERVICE_NAME, ACCOUNT_USER);
134
+ authStore.delete(ACCOUNT_TOKEN);
135
+ authStore.delete(ACCOUNT_REFRESH);
136
+ authStore.delete(ACCOUNT_USER);
132
137
  }
133
138
  async function isLoggedIn() {
134
139
  const token = await getToken();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clishop",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "CLISHOP — Order anything from your terminal",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -37,12 +37,10 @@
37
37
  "commander": "^14.0.3",
38
38
  "conf": "^15.1.0",
39
39
  "inquirer": "^13.2.4",
40
- "keytar": "^7.9.0",
41
40
  "ora": "^9.3.0"
42
41
  },
43
42
  "devDependencies": {
44
43
  "@types/inquirer": "^9.0.9",
45
- "@types/keytar": "^4.4.0",
46
44
  "@types/node": "^25.2.3",
47
45
  "ts-node": "^10.9.2",
48
46
  "tsup": "^8.5.1",
package/src/auth.ts CHANGED
@@ -1,12 +1,17 @@
1
- import keytar from "keytar";
1
+ import Conf from "conf";
2
2
  import axios from "axios";
3
3
  import { getConfig } from "./config.js";
4
4
 
5
- const SERVICE_NAME = "clishop";
5
+ const SERVICE_NAME = "clishop-auth";
6
6
  const ACCOUNT_TOKEN = "auth-token";
7
7
  const ACCOUNT_REFRESH = "refresh-token";
8
8
  const ACCOUNT_USER = "user-info";
9
9
 
10
+ const authStore = new Conf({
11
+ projectName: SERVICE_NAME,
12
+ encryptionKey: "clishop-local-encryption-key", // Basic obfuscation
13
+ });
14
+
10
15
  export interface UserInfo {
11
16
  id: string;
12
17
  email: string;
@@ -14,30 +19,30 @@ export interface UserInfo {
14
19
  }
15
20
 
16
21
  /**
17
- * Store auth token securely in the OS keychain.
22
+ * Store auth token securely.
18
23
  */
19
24
  export async function storeToken(token: string): Promise<void> {
20
- await keytar.setPassword(SERVICE_NAME, ACCOUNT_TOKEN, token);
25
+ authStore.set(ACCOUNT_TOKEN, token);
21
26
  }
22
27
 
23
28
  export async function storeRefreshToken(token: string): Promise<void> {
24
- await keytar.setPassword(SERVICE_NAME, ACCOUNT_REFRESH, token);
29
+ authStore.set(ACCOUNT_REFRESH, token);
25
30
  }
26
31
 
27
32
  export async function storeUserInfo(user: UserInfo): Promise<void> {
28
- await keytar.setPassword(SERVICE_NAME, ACCOUNT_USER, JSON.stringify(user));
33
+ authStore.set(ACCOUNT_USER, JSON.stringify(user));
29
34
  }
30
35
 
31
36
  export async function getToken(): Promise<string | null> {
32
- return keytar.getPassword(SERVICE_NAME, ACCOUNT_TOKEN);
37
+ return (authStore.get(ACCOUNT_TOKEN) as string) || null;
33
38
  }
34
39
 
35
40
  export async function getRefreshToken(): Promise<string | null> {
36
- return keytar.getPassword(SERVICE_NAME, ACCOUNT_REFRESH);
41
+ return (authStore.get(ACCOUNT_REFRESH) as string) || null;
37
42
  }
38
43
 
39
44
  export async function getUserInfo(): Promise<UserInfo | null> {
40
- const raw = await keytar.getPassword(SERVICE_NAME, ACCOUNT_USER);
45
+ const raw = authStore.get(ACCOUNT_USER) as string;
41
46
  if (!raw) return null;
42
47
  try {
43
48
  return JSON.parse(raw) as UserInfo;
@@ -47,9 +52,9 @@ export async function getUserInfo(): Promise<UserInfo | null> {
47
52
  }
48
53
 
49
54
  export async function clearAuth(): Promise<void> {
50
- await keytar.deletePassword(SERVICE_NAME, ACCOUNT_TOKEN);
51
- await keytar.deletePassword(SERVICE_NAME, ACCOUNT_REFRESH);
52
- await keytar.deletePassword(SERVICE_NAME, ACCOUNT_USER);
55
+ authStore.delete(ACCOUNT_TOKEN);
56
+ authStore.delete(ACCOUNT_REFRESH);
57
+ authStore.delete(ACCOUNT_USER);
53
58
  }
54
59
 
55
60
  export async function isLoggedIn(): Promise<boolean> {