@aigne/secrets 0.1.7-beta → 1.74.0-beta.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 (64) hide show
  1. package/dist/_virtual/rolldown_runtime.cjs +29 -0
  2. package/dist/base.cjs +21 -0
  3. package/dist/base.d.cts +20 -0
  4. package/dist/base.d.cts.map +1 -0
  5. package/dist/base.d.mts +20 -0
  6. package/dist/base.d.mts.map +1 -0
  7. package/dist/base.mjs +21 -0
  8. package/dist/base.mjs.map +1 -0
  9. package/dist/file.cjs +125 -0
  10. package/dist/file.d.cts +23 -0
  11. package/dist/file.d.cts.map +1 -0
  12. package/dist/file.d.mts +23 -0
  13. package/dist/file.d.mts.map +1 -0
  14. package/dist/file.mjs +123 -0
  15. package/dist/file.mjs.map +1 -0
  16. package/dist/index.cjs +19 -0
  17. package/dist/index.d.cts +9 -0
  18. package/dist/index.d.cts.map +1 -0
  19. package/dist/index.d.mts +9 -0
  20. package/dist/index.d.mts.map +1 -0
  21. package/dist/index.mjs +17 -0
  22. package/dist/index.mjs.map +1 -0
  23. package/dist/keytar.cjs +117 -0
  24. package/dist/keytar.d.cts +25 -0
  25. package/dist/keytar.d.cts.map +1 -0
  26. package/dist/keytar.d.mts +25 -0
  27. package/dist/keytar.d.mts.map +1 -0
  28. package/dist/keytar.mjs +117 -0
  29. package/dist/keytar.mjs.map +1 -0
  30. package/dist/types.d.cts +32 -0
  31. package/dist/types.d.cts.map +1 -0
  32. package/dist/types.d.mts +32 -0
  33. package/dist/types.d.mts.map +1 -0
  34. package/dist/util.cjs +52 -0
  35. package/dist/util.mjs +52 -0
  36. package/dist/util.mjs.map +1 -0
  37. package/package.json +28 -37
  38. package/CHANGELOG.md +0 -504
  39. package/lib/cjs/base.d.ts +0 -15
  40. package/lib/cjs/base.js +0 -23
  41. package/lib/cjs/file.d.ts +0 -19
  42. package/lib/cjs/file.js +0 -147
  43. package/lib/cjs/index.d.ts +0 -7
  44. package/lib/cjs/index.js +0 -39
  45. package/lib/cjs/keytar.d.ts +0 -21
  46. package/lib/cjs/keytar.js +0 -186
  47. package/lib/cjs/package.json +0 -3
  48. package/lib/cjs/types.d.ts +0 -28
  49. package/lib/cjs/types.js +0 -2
  50. package/lib/cjs/util.d.ts +0 -4
  51. package/lib/cjs/util.js +0 -57
  52. package/lib/esm/base.d.ts +0 -15
  53. package/lib/esm/base.js +0 -19
  54. package/lib/esm/file.d.ts +0 -19
  55. package/lib/esm/file.js +0 -140
  56. package/lib/esm/index.d.ts +0 -7
  57. package/lib/esm/index.js +0 -18
  58. package/lib/esm/keytar.d.ts +0 -21
  59. package/lib/esm/keytar.js +0 -149
  60. package/lib/esm/package.json +0 -3
  61. package/lib/esm/types.d.ts +0 -28
  62. package/lib/esm/types.js +0 -1
  63. package/lib/esm/util.d.ts +0 -4
  64. package/lib/esm/util.js +0 -54
@@ -0,0 +1,25 @@
1
+ import { CredentialEntry, ItemInfo, StoreOptions } from "./types.mjs";
2
+ import { BaseSecretStore } from "./base.mjs";
3
+
4
+ //#region src/keytar.d.ts
5
+ declare class KeyringStore extends BaseSecretStore {
6
+ private _impl;
7
+ private serviceName;
8
+ private _forceUnavailable;
9
+ private _environmentChecked;
10
+ private _environmentReady;
11
+ constructor(options: StoreOptions);
12
+ available(): Promise<boolean>;
13
+ setItem(key: string, value: ItemInfo): Promise<any>;
14
+ getItem(key: string): Promise<ItemInfo | null>;
15
+ deleteItem(key: string): Promise<boolean>;
16
+ listItems(): Promise<CredentialEntry[] | null>;
17
+ listEntries(): Promise<ItemInfo[]>;
18
+ listMap(): Promise<Record<string, ItemInfo>>;
19
+ setDefaultItem(value: ItemInfo): Promise<void>;
20
+ getDefaultItem(): Promise<ItemInfo | null>;
21
+ deleteDefaultItem(): Promise<void>;
22
+ }
23
+ //#endregion
24
+ export { KeyringStore };
25
+ //# sourceMappingURL=keytar.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keytar.d.mts","names":[],"sources":["../src/keytar.ts"],"mappings":";;;;cAQa,YAAA,SAAqB,eAAA;EAAA,QAAA,KAAA;EAAA,QAAA,WAAA;EAAA,QAAA,iBAAA;EAAA,QAAA,mBAAA;EAAA,QAAA,iBAAA;EAAA,YAAA,OAAA,EAOX,YAAA;EAAA,UAAA,GASN,OAAA;EAAA,QAAA,GAAA,UAAA,KAAA,EAsCmB,QAAA,GAAQ,OAAA;EAAA,QAAA,GAAA,WAOd,OAAA,CAAQ,QAAA;EAAA,WAAA,GAAA,WAaL,OAAA;EAAA,UAAA,GAYZ,OAAA,CAAQ,eAAA;EAAA,YAAA,GAkBG,OAAA,CAAQ,QAAA;EAAA,QAAA,GAaZ,OAAA,CAAQ,MAAA,SAAe,QAAA;EAAA,eAAA,KAAA,EAiBZ,QAAA,GAAW,OAAA;EAAA,eAAA,GAOf,OAAA,CAAQ,QAAA;EAAA,kBAAA,GAOL,OAAA;AAAA"}
@@ -0,0 +1,117 @@
1
+ import { BaseSecretStore } from "./base.mjs";
2
+ import { isKeyringEnvironmentReady } from "./util.mjs";
3
+ import { logger } from "@aigne/core/utils/logger";
4
+
5
+ //#region src/keytar.ts
6
+ const DEFAULT_SERVICE_NAME = "-api-key";
7
+ const DEFAULT_ACCOUNT_NAME_FOR_DEFAULT = "default";
8
+ var KeyringStore = class extends BaseSecretStore {
9
+ _impl = null;
10
+ serviceName;
11
+ _forceUnavailable;
12
+ _environmentChecked = false;
13
+ _environmentReady = false;
14
+ constructor(options) {
15
+ super();
16
+ const { serviceName, forceKeytarUnavailable = false } = options;
17
+ this.serviceName = `${serviceName}${DEFAULT_SERVICE_NAME}`;
18
+ this._forceUnavailable = !!forceKeytarUnavailable;
19
+ }
20
+ async available() {
21
+ if (this._forceUnavailable) return false;
22
+ if (!this._environmentChecked) {
23
+ const { ready, reason } = isKeyringEnvironmentReady();
24
+ this._environmentReady = ready;
25
+ if (!ready) logger.warn(`Keyring environment not ready: ${reason}`);
26
+ this._environmentChecked = true;
27
+ }
28
+ if (!this._environmentReady) return false;
29
+ try {
30
+ if (!this._impl) this._impl = (await import("@zowe/secrets-for-zowe-sdk")).keyring;
31
+ return !!(this._impl && typeof this._impl.getPassword === "function" && typeof this._impl.setPassword === "function" && typeof this._impl.deletePassword === "function");
32
+ } catch (error) {
33
+ logger.error(`Failed to load keyring: ${error.message}`);
34
+ return false;
35
+ }
36
+ }
37
+ async setItem(key, value) {
38
+ if (!await this.available()) throw new Error("Keyring not available");
39
+ if (!this._impl) throw new Error("Keyring not loaded");
40
+ return this._impl.setPassword(this.serviceName, key, JSON.stringify(value));
41
+ }
42
+ async getItem(key) {
43
+ if (!await this.available()) return null;
44
+ if (!this._impl) return null;
45
+ try {
46
+ const v = await this._impl.getPassword(this.serviceName, key);
47
+ if (!v) return null;
48
+ return this.parseKey(v);
49
+ } catch {
50
+ return null;
51
+ }
52
+ }
53
+ async deleteItem(key) {
54
+ if (!await this.available()) return false;
55
+ if (!this._impl) return false;
56
+ try {
57
+ return !!await this._impl.deletePassword(this.serviceName, key);
58
+ } catch {
59
+ return false;
60
+ }
61
+ }
62
+ async listItems() {
63
+ if (!await this.available()) return null;
64
+ if (!this._impl) return null;
65
+ try {
66
+ if (typeof this._impl.findCredentials === "function") {
67
+ const list = await this._impl.findCredentials(this.serviceName);
68
+ return Array.isArray(list) && list.length > 0 ? list.filter((c) => c.account !== DEFAULT_ACCOUNT_NAME_FOR_DEFAULT) : null;
69
+ }
70
+ return null;
71
+ } catch {
72
+ return null;
73
+ }
74
+ }
75
+ async listEntries() {
76
+ const list = await this.listItems();
77
+ if (!list) return [];
78
+ return list.reduce((acc, c) => {
79
+ if (c.password) {
80
+ const parsed = this.parseKey(c.password);
81
+ if (parsed) acc.push(parsed);
82
+ }
83
+ return acc;
84
+ }, []);
85
+ }
86
+ async listMap() {
87
+ const list = await this.listItems();
88
+ if (!list) return {};
89
+ return list.reduce((acc, host) => {
90
+ if (host.account && host.password) {
91
+ const parsed = this.parseKey(host.password);
92
+ if (parsed) acc[host.account] = parsed;
93
+ }
94
+ return acc;
95
+ }, {});
96
+ }
97
+ async setDefaultItem(value) {
98
+ if (!await this.available()) throw new Error("Keyring not available");
99
+ if (!this._impl) throw new Error("Keyring not loaded");
100
+ return this.setItem(DEFAULT_ACCOUNT_NAME_FOR_DEFAULT, value);
101
+ }
102
+ async getDefaultItem() {
103
+ if (!await this.available()) return null;
104
+ if (!this._impl) return null;
105
+ return this.getItem(DEFAULT_ACCOUNT_NAME_FOR_DEFAULT);
106
+ }
107
+ async deleteDefaultItem() {
108
+ if (!await this.available()) throw new Error("Keyring not available");
109
+ if (!this._impl) throw new Error("Keyring not loaded");
110
+ await this.deleteItem(DEFAULT_ACCOUNT_NAME_FOR_DEFAULT);
111
+ }
112
+ };
113
+ var keytar_default = KeyringStore;
114
+
115
+ //#endregion
116
+ export { keytar_default as default };
117
+ //# sourceMappingURL=keytar.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keytar.mjs","names":[],"sources":["../src/keytar.ts"],"sourcesContent":["import { logger } from \"@aigne/core/utils/logger\";\nimport { BaseSecretStore } from \"./base.js\";\nimport type { CredentialEntry, ItemInfo, StoreOptions } from \"./types.js\";\nimport { isKeyringEnvironmentReady } from \"./util.js\";\n\nconst DEFAULT_SERVICE_NAME = \"-api-key\";\nconst DEFAULT_ACCOUNT_NAME_FOR_DEFAULT = \"default\";\n\nexport class KeyringStore extends BaseSecretStore {\n private _impl: any = null;\n private serviceName: string;\n private _forceUnavailable: boolean;\n private _environmentChecked: boolean = false;\n private _environmentReady: boolean = false;\n\n constructor(options: StoreOptions) {\n super();\n\n const { serviceName, forceKeytarUnavailable = false } = options;\n\n this.serviceName = `${serviceName}${DEFAULT_SERVICE_NAME}`;\n this._forceUnavailable = !!forceKeytarUnavailable;\n }\n\n async available() {\n if (this._forceUnavailable) return false;\n\n // Check environment prerequisites before attempting to load the module\n if (!this._environmentChecked) {\n const { ready, reason } = isKeyringEnvironmentReady();\n this._environmentReady = ready;\n\n if (!ready) {\n logger.warn(`Keyring environment not ready: ${reason}`);\n }\n\n this._environmentChecked = true;\n }\n\n if (!this._environmentReady) {\n return false;\n }\n\n try {\n if (!this._impl) {\n const module = await import(\"@zowe/secrets-for-zowe-sdk\");\n this._impl = module.keyring;\n }\n\n return !!(\n this._impl &&\n typeof this._impl.getPassword === \"function\" &&\n typeof this._impl.setPassword === \"function\" &&\n typeof this._impl.deletePassword === \"function\"\n );\n } catch (error) {\n logger.error(`Failed to load keyring: ${error.message}`);\n\n return false;\n }\n }\n\n async setItem(key: string, value: ItemInfo) {\n if (!(await this.available())) throw new Error(\"Keyring not available\");\n if (!this._impl) throw new Error(\"Keyring not loaded\");\n\n return this._impl.setPassword(this.serviceName, key, JSON.stringify(value));\n }\n\n async getItem(key: string): Promise<ItemInfo | null> {\n if (!(await this.available())) return null;\n if (!this._impl) return null;\n\n try {\n const v = await this._impl.getPassword(this.serviceName, key);\n if (!v) return null;\n return this.parseKey(v);\n } catch {\n return null;\n }\n }\n\n async deleteItem(key: string): Promise<boolean> {\n if (!(await this.available())) return false;\n if (!this._impl) return false;\n\n try {\n const ok = await this._impl.deletePassword(this.serviceName, key);\n return !!ok;\n } catch {\n return false;\n }\n }\n\n async listItems(): Promise<CredentialEntry[] | null> {\n if (!(await this.available())) return null;\n if (!this._impl) return null;\n\n try {\n if (typeof this._impl.findCredentials === \"function\") {\n const list = await this._impl.findCredentials(this.serviceName);\n return Array.isArray(list) && list.length > 0\n ? list.filter((c) => c.account !== DEFAULT_ACCOUNT_NAME_FOR_DEFAULT)\n : null;\n }\n\n return null;\n } catch {\n return null;\n }\n }\n\n override async listEntries(): Promise<ItemInfo[]> {\n const list = await this.listItems();\n if (!list) return [];\n\n return list.reduce<ItemInfo[]>((acc, c) => {\n if (c.password) {\n const parsed = this.parseKey(c.password);\n if (parsed) acc.push(parsed);\n }\n return acc;\n }, []);\n }\n\n override async listMap(): Promise<Record<string, ItemInfo>> {\n const list = await this.listItems();\n if (!list) return {};\n\n return list.reduce(\n (acc, host) => {\n if (host.account && host.password) {\n const parsed = this.parseKey(host.password);\n if (parsed) acc[host.account] = parsed;\n }\n\n return acc;\n },\n {} as Record<string, ItemInfo>,\n );\n }\n\n override async setDefaultItem(value: ItemInfo): Promise<void> {\n if (!(await this.available())) throw new Error(\"Keyring not available\");\n if (!this._impl) throw new Error(\"Keyring not loaded\");\n\n return this.setItem(DEFAULT_ACCOUNT_NAME_FOR_DEFAULT, value);\n }\n\n override async getDefaultItem(): Promise<ItemInfo | null> {\n if (!(await this.available())) return null;\n if (!this._impl) return null;\n\n return this.getItem(DEFAULT_ACCOUNT_NAME_FOR_DEFAULT);\n }\n\n override async deleteDefaultItem(): Promise<void> {\n if (!(await this.available())) throw new Error(\"Keyring not available\");\n if (!this._impl) throw new Error(\"Keyring not loaded\");\n\n await this.deleteItem(DEFAULT_ACCOUNT_NAME_FOR_DEFAULT);\n }\n}\n\nexport default KeyringStore;\n"],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ //#region src/types.d.ts
2
+ interface CredentialEntry {
3
+ account: string;
4
+ password: string | null;
5
+ }
6
+ interface GetDefaultOptions {
7
+ fallbackToFirst?: boolean;
8
+ presetIfFallback?: boolean;
9
+ }
10
+ interface StoreOptions {
11
+ filepath?: string;
12
+ serviceName: string;
13
+ forceKeytarUnavailable?: boolean;
14
+ }
15
+ type ItemInfo = {
16
+ [key: string]: any;
17
+ };
18
+ interface ISecretStore {
19
+ available(): Promise<boolean>;
20
+ setItem(key: string, value: ItemInfo): Promise<void>;
21
+ getItem(key: string): Promise<ItemInfo | null>;
22
+ deleteItem(key: string): Promise<boolean>;
23
+ listItems(): Promise<CredentialEntry[] | null>;
24
+ listEntries(): Promise<ItemInfo[]>;
25
+ listMap(): Promise<Record<string, ItemInfo>>;
26
+ setDefaultItem(value: ItemInfo): Promise<void>;
27
+ getDefaultItem(options?: GetDefaultOptions): Promise<ItemInfo | null>;
28
+ deleteDefaultItem(): Promise<void>;
29
+ }
30
+ //#endregion
31
+ export { CredentialEntry, GetDefaultOptions, ISecretStore, ItemInfo, StoreOptions };
32
+ //# sourceMappingURL=types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.cts","names":[],"sources":["../src/types.ts"],"mappings":";UAAiB,eAAA;EAAA,OAAA;EAAA,QAAA;AAAA;AAAA,UAKA,iBAAA;EAAA,eAAA;EAAA,gBAAA;AAAA;AAAA,UAKA,YAAA;EAAA,QAAA;EAAA,WAAA;EAAA,sBAAA;AAAA;AAAA,KAML,QAAA;EAAA,CAAA,GAAA;AAAA;AAAA,UAIK,YAAA;EAAA,SAAA,IACF,OAAA;EAAA,OAAA,CAAA,GAAA,UAAA,KAAA,EAEe,QAAA,GAAW,OAAA;EAAA,OAAA,CAAA,GAAA,WACjB,OAAA,CAAQ,QAAA;EAAA,UAAA,CAAA,GAAA,WACL,OAAA;EAAA,SAAA,IAEZ,OAAA,CAAQ,eAAA;EAAA,WAAA,IACN,OAAA,CAAQ,QAAA;EAAA,OAAA,IACZ,OAAA,CAAQ,MAAA,SAAe,QAAA;EAAA,cAAA,CAAA,KAAA,EAEZ,QAAA,GAAW,OAAA;EAAA,cAAA,CAAA,OAAA,GACR,iBAAA,GAAoB,OAAA,CAAQ,QAAA;EAAA,iBAAA,IAChC,OAAA;AAAA"}
@@ -0,0 +1,32 @@
1
+ //#region src/types.d.ts
2
+ interface CredentialEntry {
3
+ account: string;
4
+ password: string | null;
5
+ }
6
+ interface GetDefaultOptions {
7
+ fallbackToFirst?: boolean;
8
+ presetIfFallback?: boolean;
9
+ }
10
+ interface StoreOptions {
11
+ filepath?: string;
12
+ serviceName: string;
13
+ forceKeytarUnavailable?: boolean;
14
+ }
15
+ type ItemInfo = {
16
+ [key: string]: any;
17
+ };
18
+ interface ISecretStore {
19
+ available(): Promise<boolean>;
20
+ setItem(key: string, value: ItemInfo): Promise<void>;
21
+ getItem(key: string): Promise<ItemInfo | null>;
22
+ deleteItem(key: string): Promise<boolean>;
23
+ listItems(): Promise<CredentialEntry[] | null>;
24
+ listEntries(): Promise<ItemInfo[]>;
25
+ listMap(): Promise<Record<string, ItemInfo>>;
26
+ setDefaultItem(value: ItemInfo): Promise<void>;
27
+ getDefaultItem(options?: GetDefaultOptions): Promise<ItemInfo | null>;
28
+ deleteDefaultItem(): Promise<void>;
29
+ }
30
+ //#endregion
31
+ export { CredentialEntry, GetDefaultOptions, ISecretStore, ItemInfo, StoreOptions };
32
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../src/types.ts"],"mappings":";UAAiB,eAAA;EAAA,OAAA;EAAA,QAAA;AAAA;AAAA,UAKA,iBAAA;EAAA,eAAA;EAAA,gBAAA;AAAA;AAAA,UAKA,YAAA;EAAA,QAAA;EAAA,WAAA;EAAA,sBAAA;AAAA;AAAA,KAML,QAAA;EAAA,CAAA,GAAA;AAAA;AAAA,UAIK,YAAA;EAAA,SAAA,IACF,OAAA;EAAA,OAAA,CAAA,GAAA,UAAA,KAAA,EAEe,QAAA,GAAW,OAAA;EAAA,OAAA,CAAA,GAAA,WACjB,OAAA,CAAQ,QAAA;EAAA,UAAA,CAAA,GAAA,WACL,OAAA;EAAA,SAAA,IAEZ,OAAA,CAAQ,eAAA;EAAA,WAAA,IACN,OAAA,CAAQ,QAAA;EAAA,OAAA,IACZ,OAAA,CAAQ,MAAA,SAAe,QAAA;EAAA,cAAA,CAAA,KAAA,EAEZ,QAAA,GAAW,OAAA;EAAA,cAAA,CAAA,OAAA,GACR,iBAAA,GAAoB,OAAA,CAAQ,QAAA;EAAA,iBAAA,IAChC,OAAA;AAAA"}
package/dist/util.cjs ADDED
@@ -0,0 +1,52 @@
1
+ const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs');
2
+ let node_fs = require("node:fs");
3
+
4
+ //#region src/util.ts
5
+ function isWSL() {
6
+ if (process.platform !== "linux") return false;
7
+ if (process.env.WSL_DISTRO_NAME || process.env.WSL_INTEROP) return true;
8
+ try {
9
+ const v = (0, node_fs.readFileSync)("/proc/version", "utf8").toLowerCase();
10
+ if (v.includes("microsoft") || v.includes("wsl")) return true;
11
+ } catch {}
12
+ try {
13
+ const r = (0, node_fs.readFileSync)("/proc/sys/kernel/osrelease", "utf8").toLowerCase();
14
+ if (r.includes("microsoft") || r.includes("wsl")) return true;
15
+ } catch {}
16
+ if ((0, node_fs.existsSync)("/run/WSL") || (0, node_fs.existsSync)("/run/WSL/")) return true;
17
+ return false;
18
+ }
19
+ function isDBusAvailable() {
20
+ return !!process.env.DBUS_SESSION_BUS_ADDRESS;
21
+ }
22
+ function isDisplayAvailable() {
23
+ return !!(process.env.DISPLAY || process.env.WAYLAND_DISPLAY);
24
+ }
25
+ function isKeyringEnvironmentReady() {
26
+ if (process.platform === "win32") return { ready: true };
27
+ if (process.platform === "darwin") return { ready: true };
28
+ if (process.platform === "linux") {
29
+ if (!process.env.CI) {
30
+ if (isWSL()) return {
31
+ ready: false,
32
+ reason: "Detected WSL (no GNOME keyring by default)"
33
+ };
34
+ if (!isDBusAvailable()) return {
35
+ ready: false,
36
+ reason: "D-Bus not available"
37
+ };
38
+ if (!isDisplayAvailable()) return {
39
+ ready: false,
40
+ reason: "Display not available"
41
+ };
42
+ }
43
+ return { ready: true };
44
+ }
45
+ return {
46
+ ready: false,
47
+ reason: `Unsupported platform: ${process.platform}`
48
+ };
49
+ }
50
+
51
+ //#endregion
52
+ exports.isKeyringEnvironmentReady = isKeyringEnvironmentReady;
package/dist/util.mjs ADDED
@@ -0,0 +1,52 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+
3
+ //#region src/util.ts
4
+ function isWSL() {
5
+ if (process.platform !== "linux") return false;
6
+ if (process.env.WSL_DISTRO_NAME || process.env.WSL_INTEROP) return true;
7
+ try {
8
+ const v = readFileSync("/proc/version", "utf8").toLowerCase();
9
+ if (v.includes("microsoft") || v.includes("wsl")) return true;
10
+ } catch {}
11
+ try {
12
+ const r = readFileSync("/proc/sys/kernel/osrelease", "utf8").toLowerCase();
13
+ if (r.includes("microsoft") || r.includes("wsl")) return true;
14
+ } catch {}
15
+ if (existsSync("/run/WSL") || existsSync("/run/WSL/")) return true;
16
+ return false;
17
+ }
18
+ function isDBusAvailable() {
19
+ return !!process.env.DBUS_SESSION_BUS_ADDRESS;
20
+ }
21
+ function isDisplayAvailable() {
22
+ return !!(process.env.DISPLAY || process.env.WAYLAND_DISPLAY);
23
+ }
24
+ function isKeyringEnvironmentReady() {
25
+ if (process.platform === "win32") return { ready: true };
26
+ if (process.platform === "darwin") return { ready: true };
27
+ if (process.platform === "linux") {
28
+ if (!process.env.CI) {
29
+ if (isWSL()) return {
30
+ ready: false,
31
+ reason: "Detected WSL (no GNOME keyring by default)"
32
+ };
33
+ if (!isDBusAvailable()) return {
34
+ ready: false,
35
+ reason: "D-Bus not available"
36
+ };
37
+ if (!isDisplayAvailable()) return {
38
+ ready: false,
39
+ reason: "Display not available"
40
+ };
41
+ }
42
+ return { ready: true };
43
+ }
44
+ return {
45
+ ready: false,
46
+ reason: `Unsupported platform: ${process.platform}`
47
+ };
48
+ }
49
+
50
+ //#endregion
51
+ export { isKeyringEnvironmentReady };
52
+ //# sourceMappingURL=util.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.mjs","names":[],"sources":["../src/util.ts"],"sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\n\nfunction isWSL(): boolean {\n if (process.platform !== \"linux\") return false;\n\n // env checks\n if (process.env.WSL_DISTRO_NAME || process.env.WSL_INTEROP) return true;\n\n try {\n const v = readFileSync(\"/proc/version\", \"utf8\").toLowerCase();\n if (v.includes(\"microsoft\") || v.includes(\"wsl\")) return true;\n } catch {}\n\n try {\n const r = readFileSync(\"/proc/sys/kernel/osrelease\", \"utf8\").toLowerCase();\n if (r.includes(\"microsoft\") || r.includes(\"wsl\")) return true;\n } catch {}\n\n // some WSL setups have /run/WSL or other hints\n if (existsSync(\"/run/WSL\") || existsSync(\"/run/WSL/\")) return true;\n\n return false;\n}\n\nfunction isDBusAvailable() {\n return !!process.env.DBUS_SESSION_BUS_ADDRESS;\n}\n\nfunction isDisplayAvailable(): boolean {\n return !!(process.env.DISPLAY || process.env.WAYLAND_DISPLAY);\n}\n\nexport function isKeyringEnvironmentReady(): { ready: boolean; reason?: string } {\n if (process.platform === \"win32\") return { ready: true };\n if (process.platform === \"darwin\") return { ready: true };\n\n if (process.platform === \"linux\") {\n if (!process.env.CI) {\n if (isWSL()) {\n return { ready: false, reason: \"Detected WSL (no GNOME keyring by default)\" };\n }\n\n // Check for D-Bus (required for libsecret)\n if (!isDBusAvailable()) {\n return { ready: false, reason: \"D-Bus not available\" };\n }\n\n // Check for display server (most keyring services need it)\n if (!isDisplayAvailable()) {\n return { ready: false, reason: \"Display not available\" };\n }\n }\n\n return { ready: true };\n }\n\n // Unknown platform\n return { ready: false, reason: `Unsupported platform: ${process.platform}` };\n}\n"],"mappings":";;;AAEA,SAAS,QAAiB;AACxB,KAAI,QAAQ,aAAa,QAAS,QAAO;AAGzC,KAAI,QAAQ,IAAI,mBAAmB,QAAQ,IAAI,YAAa,QAAO;AAEnE,KAAI;EACF,MAAM,IAAI,aAAa,iBAAiB,OAAO,CAAC,aAAa;AAC7D,MAAI,EAAE,SAAS,YAAY,IAAI,EAAE,SAAS,MAAM,CAAE,QAAO;SACnD;AAER,KAAI;EACF,MAAM,IAAI,aAAa,8BAA8B,OAAO,CAAC,aAAa;AAC1E,MAAI,EAAE,SAAS,YAAY,IAAI,EAAE,SAAS,MAAM,CAAE,QAAO;SACnD;AAGR,KAAI,WAAW,WAAW,IAAI,WAAW,YAAY,CAAE,QAAO;AAE9D,QAAO;;AAGT,SAAS,kBAAkB;AACzB,QAAO,CAAC,CAAC,QAAQ,IAAI;;AAGvB,SAAS,qBAA8B;AACrC,QAAO,CAAC,EAAE,QAAQ,IAAI,WAAW,QAAQ,IAAI;;AAG/C,SAAgB,4BAAiE;AAC/E,KAAI,QAAQ,aAAa,QAAS,QAAO,EAAE,OAAO,MAAM;AACxD,KAAI,QAAQ,aAAa,SAAU,QAAO,EAAE,OAAO,MAAM;AAEzD,KAAI,QAAQ,aAAa,SAAS;AAChC,MAAI,CAAC,QAAQ,IAAI,IAAI;AACnB,OAAI,OAAO,CACT,QAAO;IAAE,OAAO;IAAO,QAAQ;IAA8C;AAI/E,OAAI,CAAC,iBAAiB,CACpB,QAAO;IAAE,OAAO;IAAO,QAAQ;IAAuB;AAIxD,OAAI,CAAC,oBAAoB,CACvB,QAAO;IAAE,OAAO;IAAO,QAAQ;IAAyB;;AAI5D,SAAO,EAAE,OAAO,MAAM;;AAIxB,QAAO;EAAE,OAAO;EAAO,QAAQ,yBAAyB,QAAQ;EAAY"}
package/package.json CHANGED
@@ -1,67 +1,58 @@
1
1
  {
2
2
  "name": "@aigne/secrets",
3
- "version": "0.1.7-beta",
3
+ "version": "1.74.0-beta.1",
4
4
  "description": "Secure credential storage for AIGNE Hub API keys with system keyring and file-based fallback",
5
+ "license": "Elastic-2.0",
5
6
  "publishConfig": {
6
7
  "access": "public"
7
8
  },
8
9
  "author": "Arcblock <blocklet@arcblock.io> https://github.com/blocklet",
9
10
  "homepage": "https://www.aigne.io/framework",
10
- "license": "Elastic-2.0",
11
11
  "repository": {
12
12
  "type": "git",
13
- "url": "git+https://github.com/AIGNE-io/aigne-framework"
13
+ "url": "git+https://github.com/ArcBlock/aigne-framework"
14
14
  },
15
15
  "bugs": {
16
- "url": "https://github.com/AIGNE-io/aigne-framework/issues"
16
+ "url": "https://github.com/ArcBlock/aigne-framework/issues"
17
17
  },
18
- "files": [
19
- "lib/cjs",
20
- "lib/esm",
21
- "LICENSE",
22
- "README.md",
23
- "CHANGELOG.md"
24
- ],
25
18
  "type": "module",
26
- "types": "./lib/esm/index.d.ts",
19
+ "main": "./dist/index.cjs",
20
+ "module": "./dist/index.mjs",
21
+ "types": "./dist/index.d.cts",
27
22
  "exports": {
28
23
  ".": {
29
- "import": "./lib/esm/index.js",
30
- "default": "./lib/esm/index.js",
31
- "types": "./lib/esm/index.d.ts"
24
+ "require": "./dist/index.cjs",
25
+ "import": "./dist/index.mjs"
32
26
  },
33
- "./types.js": {
34
- "require": "./lib/cjs/types.js",
35
- "default": "./lib/esm/types.js",
36
- "types": "./lib/esm/types.d.ts"
37
- }
38
- },
39
- "typesVersions": {
40
- "*": {
41
- "types.js": [
42
- "./lib/esm/types.d.ts"
43
- ]
44
- }
27
+ "./*": "./*"
45
28
  },
29
+ "files": [
30
+ "dist",
31
+ "LICENSE",
32
+ "README.md",
33
+ "CHANGELOG.md"
34
+ ],
46
35
  "dependencies": {
47
36
  "@zowe/secrets-for-zowe-sdk": "^8.29.4",
48
37
  "yaml": "^2.8.1",
49
- "@aigne/core": "^1.73.0-beta"
38
+ "@aigne/core": "^1.74.0-beta.1"
50
39
  },
51
40
  "devDependencies": {
52
- "@types/bun": "^1.2.22",
41
+ "@types/bun": "^1.3.6",
53
42
  "@types/node": "^24.5.1",
54
43
  "npm-run-all": "^4.1.5",
55
- "rimraf": "^6.0.1",
56
- "typescript": "^5.9.2",
57
- "@aigne/test-utils": "^0.5.70-beta"
44
+ "rimraf": "^6.1.2",
45
+ "tsdown": "0.20.0-beta.3",
46
+ "typescript": "5.9.2",
47
+ "@aigne/scripts": "0.0.0",
48
+ "@aigne/typescript-config": "0.0.0",
49
+ "@aigne/utils": "^1.74.0-beta.1"
58
50
  },
59
51
  "scripts": {
60
- "lint": "tsc --noEmit",
61
- "build": "tsc --build scripts/tsconfig.build.json",
62
- "clean": "rimraf lib test/coverage",
52
+ "build": "tsdown",
53
+ "check-types": "tsc --noEmit",
54
+ "clean": "rimraf dist coverage",
63
55
  "test": "export CI=true && bun test",
64
- "test:coverage": "export CI=true && bun test --coverage --coverage-reporter=lcov --coverage-reporter=text",
65
- "postbuild": "node ../../scripts/post-build-lib.mjs"
56
+ "test:coverage": "export CI=true && bun test --coverage --coverage-reporter=lcov --coverage-reporter=text"
66
57
  }
67
58
  }