@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.
- package/dist/_virtual/rolldown_runtime.cjs +29 -0
- package/dist/base.cjs +21 -0
- package/dist/base.d.cts +20 -0
- package/dist/base.d.cts.map +1 -0
- package/dist/base.d.mts +20 -0
- package/dist/base.d.mts.map +1 -0
- package/dist/base.mjs +21 -0
- package/dist/base.mjs.map +1 -0
- package/dist/file.cjs +125 -0
- package/dist/file.d.cts +23 -0
- package/dist/file.d.cts.map +1 -0
- package/dist/file.d.mts +23 -0
- package/dist/file.d.mts.map +1 -0
- package/dist/file.mjs +123 -0
- package/dist/file.mjs.map +1 -0
- package/dist/index.cjs +19 -0
- package/dist/index.d.cts +9 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +9 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +17 -0
- package/dist/index.mjs.map +1 -0
- package/dist/keytar.cjs +117 -0
- package/dist/keytar.d.cts +25 -0
- package/dist/keytar.d.cts.map +1 -0
- package/dist/keytar.d.mts +25 -0
- package/dist/keytar.d.mts.map +1 -0
- package/dist/keytar.mjs +117 -0
- package/dist/keytar.mjs.map +1 -0
- package/dist/types.d.cts +32 -0
- package/dist/types.d.cts.map +1 -0
- package/dist/types.d.mts +32 -0
- package/dist/types.d.mts.map +1 -0
- package/dist/util.cjs +52 -0
- package/dist/util.mjs +52 -0
- package/dist/util.mjs.map +1 -0
- package/package.json +28 -37
- package/CHANGELOG.md +0 -504
- package/lib/cjs/base.d.ts +0 -15
- package/lib/cjs/base.js +0 -23
- package/lib/cjs/file.d.ts +0 -19
- package/lib/cjs/file.js +0 -147
- package/lib/cjs/index.d.ts +0 -7
- package/lib/cjs/index.js +0 -39
- package/lib/cjs/keytar.d.ts +0 -21
- package/lib/cjs/keytar.js +0 -186
- package/lib/cjs/package.json +0 -3
- package/lib/cjs/types.d.ts +0 -28
- package/lib/cjs/types.js +0 -2
- package/lib/cjs/util.d.ts +0 -4
- package/lib/cjs/util.js +0 -57
- package/lib/esm/base.d.ts +0 -15
- package/lib/esm/base.js +0 -19
- package/lib/esm/file.d.ts +0 -19
- package/lib/esm/file.js +0 -140
- package/lib/esm/index.d.ts +0 -7
- package/lib/esm/index.js +0 -18
- package/lib/esm/keytar.d.ts +0 -21
- package/lib/esm/keytar.js +0 -149
- package/lib/esm/package.json +0 -3
- package/lib/esm/types.d.ts +0 -28
- package/lib/esm/types.js +0 -1
- package/lib/esm/util.d.ts +0 -4
- package/lib/esm/util.js +0 -54
package/lib/cjs/file.js
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.FileStore = void 0;
|
|
7
|
-
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
8
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
-
const yaml_1 = require("yaml");
|
|
10
|
-
const base_js_1 = require("./base.js");
|
|
11
|
-
class FileStore extends base_js_1.BaseSecretStore {
|
|
12
|
-
filepath;
|
|
13
|
-
constructor(options) {
|
|
14
|
-
super();
|
|
15
|
-
this.filepath = options.filepath;
|
|
16
|
-
}
|
|
17
|
-
async available() {
|
|
18
|
-
try {
|
|
19
|
-
await promises_1.default.access(node_path_1.default.dirname(this.filepath));
|
|
20
|
-
return true;
|
|
21
|
-
}
|
|
22
|
-
catch {
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
async load() {
|
|
27
|
-
try {
|
|
28
|
-
const data = await promises_1.default.readFile(this.filepath, "utf-8");
|
|
29
|
-
const parsed = (0, yaml_1.parse)(data);
|
|
30
|
-
if (!parsed || typeof parsed !== "object") {
|
|
31
|
-
return {};
|
|
32
|
-
}
|
|
33
|
-
return parsed;
|
|
34
|
-
}
|
|
35
|
-
catch {
|
|
36
|
-
return {};
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
async save(data) {
|
|
40
|
-
const yaml = (0, yaml_1.stringify)(data);
|
|
41
|
-
await promises_1.default.mkdir(node_path_1.default.dirname(this.filepath), { recursive: true });
|
|
42
|
-
await promises_1.default.writeFile(this.filepath, yaml, "utf-8");
|
|
43
|
-
}
|
|
44
|
-
async setItem(key, value) {
|
|
45
|
-
if (!(await this.available()))
|
|
46
|
-
throw new Error("File store not available");
|
|
47
|
-
const data = await this.load();
|
|
48
|
-
data[key] = value;
|
|
49
|
-
await this.save(data);
|
|
50
|
-
}
|
|
51
|
-
async getItem(key) {
|
|
52
|
-
if (!(await this.available()))
|
|
53
|
-
return null;
|
|
54
|
-
try {
|
|
55
|
-
const data = await this.load();
|
|
56
|
-
return data[key] || null;
|
|
57
|
-
}
|
|
58
|
-
catch {
|
|
59
|
-
return null;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
async deleteItem(key) {
|
|
63
|
-
if (!(await this.available()))
|
|
64
|
-
return false;
|
|
65
|
-
try {
|
|
66
|
-
const data = await this.load();
|
|
67
|
-
if (data[key]) {
|
|
68
|
-
delete data[key];
|
|
69
|
-
await this.save(data);
|
|
70
|
-
return true;
|
|
71
|
-
}
|
|
72
|
-
return false;
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
return false;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
async listItems() {
|
|
79
|
-
if (!(await this.available()))
|
|
80
|
-
return null;
|
|
81
|
-
try {
|
|
82
|
-
const data = await this.load();
|
|
83
|
-
const entries = [];
|
|
84
|
-
for (const [host, config] of Object.entries(data)) {
|
|
85
|
-
if (host === "default")
|
|
86
|
-
continue;
|
|
87
|
-
entries.push({ account: host, password: JSON.stringify(config) });
|
|
88
|
-
}
|
|
89
|
-
return entries.length > 0 ? entries : null;
|
|
90
|
-
}
|
|
91
|
-
catch {
|
|
92
|
-
return null;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
async listEntries() {
|
|
96
|
-
const list = await this.listItems();
|
|
97
|
-
if (!list)
|
|
98
|
-
return [];
|
|
99
|
-
return list.reduce((acc, c) => {
|
|
100
|
-
if (c.password && c.account) {
|
|
101
|
-
acc.push(this.parseKey(c.password));
|
|
102
|
-
}
|
|
103
|
-
return acc;
|
|
104
|
-
}, []);
|
|
105
|
-
}
|
|
106
|
-
async listMap() {
|
|
107
|
-
const list = await this.listItems();
|
|
108
|
-
if (!list)
|
|
109
|
-
return {};
|
|
110
|
-
return list.reduce((acc, host) => {
|
|
111
|
-
if (host.account && host.password) {
|
|
112
|
-
const parsed = this.parseKey(host.password);
|
|
113
|
-
if (parsed)
|
|
114
|
-
acc[host.account] = parsed;
|
|
115
|
-
}
|
|
116
|
-
return acc;
|
|
117
|
-
}, {});
|
|
118
|
-
}
|
|
119
|
-
async setDefaultItem(value) {
|
|
120
|
-
if (!(await this.available()))
|
|
121
|
-
throw new Error("File store not available");
|
|
122
|
-
const data = await this.load();
|
|
123
|
-
data["default"] = value;
|
|
124
|
-
await this.save(data);
|
|
125
|
-
}
|
|
126
|
-
async getDefaultItem() {
|
|
127
|
-
if (!(await this.available()))
|
|
128
|
-
return null;
|
|
129
|
-
try {
|
|
130
|
-
const data = await this.load();
|
|
131
|
-
return data.default ?? null;
|
|
132
|
-
}
|
|
133
|
-
catch {
|
|
134
|
-
// ignore
|
|
135
|
-
}
|
|
136
|
-
return null;
|
|
137
|
-
}
|
|
138
|
-
async deleteDefaultItem() {
|
|
139
|
-
if (!(await this.available()))
|
|
140
|
-
throw new Error("File store not available");
|
|
141
|
-
const data = await this.load();
|
|
142
|
-
delete data.default;
|
|
143
|
-
await this.save(data);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
exports.FileStore = FileStore;
|
|
147
|
-
exports.default = FileStore;
|
package/lib/cjs/index.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import FileStore from "./file.js";
|
|
2
|
-
import KeyringStore from "./keytar.js";
|
|
3
|
-
import type { ISecretStore, StoreOptions } from "./types.js";
|
|
4
|
-
export * from "./types.js";
|
|
5
|
-
export { FileStore, KeyringStore };
|
|
6
|
-
declare function createSecretStore(options: StoreOptions): Promise<ISecretStore>;
|
|
7
|
-
export default createSecretStore;
|
package/lib/cjs/index.js
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
-
};
|
|
19
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.KeyringStore = exports.FileStore = void 0;
|
|
21
|
-
const file_js_1 = __importDefault(require("./file.js"));
|
|
22
|
-
exports.FileStore = file_js_1.default;
|
|
23
|
-
const keytar_js_1 = __importDefault(require("./keytar.js"));
|
|
24
|
-
exports.KeyringStore = keytar_js_1.default;
|
|
25
|
-
__exportStar(require("./types.js"), exports);
|
|
26
|
-
async function createSecretStore(options) {
|
|
27
|
-
if (!options.serviceName) {
|
|
28
|
-
throw new Error("Secret store key is required");
|
|
29
|
-
}
|
|
30
|
-
const keyring = new keytar_js_1.default(options);
|
|
31
|
-
if (await keyring.available()) {
|
|
32
|
-
return keyring;
|
|
33
|
-
}
|
|
34
|
-
const filepath = options.filepath;
|
|
35
|
-
if (!filepath)
|
|
36
|
-
throw new Error("Filepath is required");
|
|
37
|
-
return new file_js_1.default({ filepath });
|
|
38
|
-
}
|
|
39
|
-
exports.default = createSecretStore;
|
package/lib/cjs/keytar.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { BaseSecretStore } from "./base.js";
|
|
2
|
-
import type { CredentialEntry, ItemInfo, StoreOptions } from "./types.js";
|
|
3
|
-
export declare class KeyringStore extends BaseSecretStore {
|
|
4
|
-
private _impl;
|
|
5
|
-
private serviceName;
|
|
6
|
-
private _forceUnavailable;
|
|
7
|
-
private _environmentChecked;
|
|
8
|
-
private _environmentReady;
|
|
9
|
-
constructor(options: StoreOptions);
|
|
10
|
-
available(): Promise<boolean>;
|
|
11
|
-
setItem(key: string, value: ItemInfo): Promise<any>;
|
|
12
|
-
getItem(key: string): Promise<ItemInfo | null>;
|
|
13
|
-
deleteItem(key: string): Promise<boolean>;
|
|
14
|
-
listItems(): Promise<CredentialEntry[] | null>;
|
|
15
|
-
listEntries(): Promise<ItemInfo[]>;
|
|
16
|
-
listMap(): Promise<Record<string, ItemInfo>>;
|
|
17
|
-
setDefaultItem(value: ItemInfo): Promise<void>;
|
|
18
|
-
getDefaultItem(): Promise<ItemInfo | null>;
|
|
19
|
-
deleteDefaultItem(): Promise<void>;
|
|
20
|
-
}
|
|
21
|
-
export default KeyringStore;
|
package/lib/cjs/keytar.js
DELETED
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.KeyringStore = void 0;
|
|
37
|
-
const logger_js_1 = require("@aigne/core/utils/logger.js");
|
|
38
|
-
const base_js_1 = require("./base.js");
|
|
39
|
-
const util_js_1 = require("./util.js");
|
|
40
|
-
const DEFAULT_SERVICE_NAME = "-api-key";
|
|
41
|
-
const DEFAULT_ACCOUNT_NAME_FOR_DEFAULT = "default";
|
|
42
|
-
class KeyringStore extends base_js_1.BaseSecretStore {
|
|
43
|
-
_impl = null;
|
|
44
|
-
serviceName;
|
|
45
|
-
_forceUnavailable;
|
|
46
|
-
_environmentChecked = false;
|
|
47
|
-
_environmentReady = false;
|
|
48
|
-
constructor(options) {
|
|
49
|
-
super();
|
|
50
|
-
const { serviceName, forceKeytarUnavailable = false } = options;
|
|
51
|
-
this.serviceName = `${serviceName}${DEFAULT_SERVICE_NAME}`;
|
|
52
|
-
this._forceUnavailable = !!forceKeytarUnavailable;
|
|
53
|
-
}
|
|
54
|
-
async available() {
|
|
55
|
-
if (this._forceUnavailable)
|
|
56
|
-
return false;
|
|
57
|
-
// Check environment prerequisites before attempting to load the module
|
|
58
|
-
if (!this._environmentChecked) {
|
|
59
|
-
const { ready, reason } = (0, util_js_1.isKeyringEnvironmentReady)();
|
|
60
|
-
this._environmentReady = ready;
|
|
61
|
-
if (!ready) {
|
|
62
|
-
logger_js_1.logger.warn(`Keyring environment not ready: ${reason}`);
|
|
63
|
-
}
|
|
64
|
-
this._environmentChecked = true;
|
|
65
|
-
}
|
|
66
|
-
if (!this._environmentReady) {
|
|
67
|
-
return false;
|
|
68
|
-
}
|
|
69
|
-
try {
|
|
70
|
-
if (!this._impl) {
|
|
71
|
-
const module = await Promise.resolve().then(() => __importStar(require("@zowe/secrets-for-zowe-sdk")));
|
|
72
|
-
this._impl = module.keyring;
|
|
73
|
-
}
|
|
74
|
-
return !!(this._impl &&
|
|
75
|
-
typeof this._impl.getPassword === "function" &&
|
|
76
|
-
typeof this._impl.setPassword === "function" &&
|
|
77
|
-
typeof this._impl.deletePassword === "function");
|
|
78
|
-
}
|
|
79
|
-
catch (error) {
|
|
80
|
-
logger_js_1.logger.error(`Failed to load keyring: ${error.message}`);
|
|
81
|
-
return false;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
async setItem(key, value) {
|
|
85
|
-
if (!(await this.available()))
|
|
86
|
-
throw new Error("Keyring not available");
|
|
87
|
-
if (!this._impl)
|
|
88
|
-
throw new Error("Keyring not loaded");
|
|
89
|
-
return this._impl.setPassword(this.serviceName, key, JSON.stringify(value));
|
|
90
|
-
}
|
|
91
|
-
async getItem(key) {
|
|
92
|
-
if (!(await this.available()))
|
|
93
|
-
return null;
|
|
94
|
-
if (!this._impl)
|
|
95
|
-
return null;
|
|
96
|
-
try {
|
|
97
|
-
const v = await this._impl.getPassword(this.serviceName, key);
|
|
98
|
-
if (!v)
|
|
99
|
-
return null;
|
|
100
|
-
return this.parseKey(v);
|
|
101
|
-
}
|
|
102
|
-
catch {
|
|
103
|
-
return null;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
async deleteItem(key) {
|
|
107
|
-
if (!(await this.available()))
|
|
108
|
-
return false;
|
|
109
|
-
if (!this._impl)
|
|
110
|
-
return false;
|
|
111
|
-
try {
|
|
112
|
-
const ok = await this._impl.deletePassword(this.serviceName, key);
|
|
113
|
-
return !!ok;
|
|
114
|
-
}
|
|
115
|
-
catch {
|
|
116
|
-
return false;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
async listItems() {
|
|
120
|
-
if (!(await this.available()))
|
|
121
|
-
return null;
|
|
122
|
-
if (!this._impl)
|
|
123
|
-
return null;
|
|
124
|
-
try {
|
|
125
|
-
if (typeof this._impl.findCredentials === "function") {
|
|
126
|
-
const list = await this._impl.findCredentials(this.serviceName);
|
|
127
|
-
return Array.isArray(list) && list.length > 0
|
|
128
|
-
? list.filter((c) => c.account !== DEFAULT_ACCOUNT_NAME_FOR_DEFAULT)
|
|
129
|
-
: null;
|
|
130
|
-
}
|
|
131
|
-
return null;
|
|
132
|
-
}
|
|
133
|
-
catch {
|
|
134
|
-
return null;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
async listEntries() {
|
|
138
|
-
const list = await this.listItems();
|
|
139
|
-
if (!list)
|
|
140
|
-
return [];
|
|
141
|
-
return list.reduce((acc, c) => {
|
|
142
|
-
if (c.password) {
|
|
143
|
-
const parsed = this.parseKey(c.password);
|
|
144
|
-
if (parsed)
|
|
145
|
-
acc.push(parsed);
|
|
146
|
-
}
|
|
147
|
-
return acc;
|
|
148
|
-
}, []);
|
|
149
|
-
}
|
|
150
|
-
async listMap() {
|
|
151
|
-
const list = await this.listItems();
|
|
152
|
-
if (!list)
|
|
153
|
-
return {};
|
|
154
|
-
return list.reduce((acc, host) => {
|
|
155
|
-
if (host.account && host.password) {
|
|
156
|
-
const parsed = this.parseKey(host.password);
|
|
157
|
-
if (parsed)
|
|
158
|
-
acc[host.account] = parsed;
|
|
159
|
-
}
|
|
160
|
-
return acc;
|
|
161
|
-
}, {});
|
|
162
|
-
}
|
|
163
|
-
async setDefaultItem(value) {
|
|
164
|
-
if (!(await this.available()))
|
|
165
|
-
throw new Error("Keyring not available");
|
|
166
|
-
if (!this._impl)
|
|
167
|
-
throw new Error("Keyring not loaded");
|
|
168
|
-
return this.setItem(DEFAULT_ACCOUNT_NAME_FOR_DEFAULT, value);
|
|
169
|
-
}
|
|
170
|
-
async getDefaultItem() {
|
|
171
|
-
if (!(await this.available()))
|
|
172
|
-
return null;
|
|
173
|
-
if (!this._impl)
|
|
174
|
-
return null;
|
|
175
|
-
return this.getItem(DEFAULT_ACCOUNT_NAME_FOR_DEFAULT);
|
|
176
|
-
}
|
|
177
|
-
async deleteDefaultItem() {
|
|
178
|
-
if (!(await this.available()))
|
|
179
|
-
throw new Error("Keyring not available");
|
|
180
|
-
if (!this._impl)
|
|
181
|
-
throw new Error("Keyring not loaded");
|
|
182
|
-
await this.deleteItem(DEFAULT_ACCOUNT_NAME_FOR_DEFAULT);
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
exports.KeyringStore = KeyringStore;
|
|
186
|
-
exports.default = KeyringStore;
|
package/lib/cjs/package.json
DELETED
package/lib/cjs/types.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
export interface CredentialEntry {
|
|
2
|
-
account: string;
|
|
3
|
-
password: string | null;
|
|
4
|
-
}
|
|
5
|
-
export interface GetDefaultOptions {
|
|
6
|
-
fallbackToFirst?: boolean;
|
|
7
|
-
presetIfFallback?: boolean;
|
|
8
|
-
}
|
|
9
|
-
export interface StoreOptions {
|
|
10
|
-
filepath?: string;
|
|
11
|
-
serviceName: string;
|
|
12
|
-
forceKeytarUnavailable?: boolean;
|
|
13
|
-
}
|
|
14
|
-
export type ItemInfo = {
|
|
15
|
-
[key: string]: any;
|
|
16
|
-
};
|
|
17
|
-
export interface ISecretStore {
|
|
18
|
-
available(): Promise<boolean>;
|
|
19
|
-
setItem(key: string, value: ItemInfo): Promise<void>;
|
|
20
|
-
getItem(key: string): Promise<ItemInfo | null>;
|
|
21
|
-
deleteItem(key: string): Promise<boolean>;
|
|
22
|
-
listItems(): Promise<CredentialEntry[] | null>;
|
|
23
|
-
listEntries(): Promise<ItemInfo[]>;
|
|
24
|
-
listMap(): Promise<Record<string, ItemInfo>>;
|
|
25
|
-
setDefaultItem(value: ItemInfo): Promise<void>;
|
|
26
|
-
getDefaultItem(options?: GetDefaultOptions): Promise<ItemInfo | null>;
|
|
27
|
-
deleteDefaultItem(): Promise<void>;
|
|
28
|
-
}
|
package/lib/cjs/types.js
DELETED
package/lib/cjs/util.d.ts
DELETED
package/lib/cjs/util.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isKeyringEnvironmentReady = isKeyringEnvironmentReady;
|
|
4
|
-
const node_fs_1 = require("node:fs");
|
|
5
|
-
function isWSL() {
|
|
6
|
-
if (process.platform !== "linux")
|
|
7
|
-
return false;
|
|
8
|
-
// env checks
|
|
9
|
-
if (process.env.WSL_DISTRO_NAME || process.env.WSL_INTEROP)
|
|
10
|
-
return true;
|
|
11
|
-
try {
|
|
12
|
-
const v = (0, node_fs_1.readFileSync)("/proc/version", "utf8").toLowerCase();
|
|
13
|
-
if (v.includes("microsoft") || v.includes("wsl"))
|
|
14
|
-
return true;
|
|
15
|
-
}
|
|
16
|
-
catch { }
|
|
17
|
-
try {
|
|
18
|
-
const r = (0, node_fs_1.readFileSync)("/proc/sys/kernel/osrelease", "utf8").toLowerCase();
|
|
19
|
-
if (r.includes("microsoft") || r.includes("wsl"))
|
|
20
|
-
return true;
|
|
21
|
-
}
|
|
22
|
-
catch { }
|
|
23
|
-
// some WSL setups have /run/WSL or other hints
|
|
24
|
-
if ((0, node_fs_1.existsSync)("/run/WSL") || (0, node_fs_1.existsSync)("/run/WSL/"))
|
|
25
|
-
return true;
|
|
26
|
-
return false;
|
|
27
|
-
}
|
|
28
|
-
function isDBusAvailable() {
|
|
29
|
-
return !!process.env.DBUS_SESSION_BUS_ADDRESS;
|
|
30
|
-
}
|
|
31
|
-
function isDisplayAvailable() {
|
|
32
|
-
return !!(process.env.DISPLAY || process.env.WAYLAND_DISPLAY);
|
|
33
|
-
}
|
|
34
|
-
function isKeyringEnvironmentReady() {
|
|
35
|
-
if (process.platform === "win32")
|
|
36
|
-
return { ready: true };
|
|
37
|
-
if (process.platform === "darwin")
|
|
38
|
-
return { ready: true };
|
|
39
|
-
if (process.platform === "linux") {
|
|
40
|
-
if (!process.env.CI) {
|
|
41
|
-
if (isWSL()) {
|
|
42
|
-
return { ready: false, reason: "Detected WSL (no GNOME keyring by default)" };
|
|
43
|
-
}
|
|
44
|
-
// Check for D-Bus (required for libsecret)
|
|
45
|
-
if (!isDBusAvailable()) {
|
|
46
|
-
return { ready: false, reason: "D-Bus not available" };
|
|
47
|
-
}
|
|
48
|
-
// Check for display server (most keyring services need it)
|
|
49
|
-
if (!isDisplayAvailable()) {
|
|
50
|
-
return { ready: false, reason: "Display not available" };
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return { ready: true };
|
|
54
|
-
}
|
|
55
|
-
// Unknown platform
|
|
56
|
-
return { ready: false, reason: `Unsupported platform: ${process.platform}` };
|
|
57
|
-
}
|
package/lib/esm/base.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { CredentialEntry, GetDefaultOptions, ISecretStore, ItemInfo } from "./types.js";
|
|
2
|
-
export declare abstract class BaseSecretStore implements ISecretStore {
|
|
3
|
-
abstract available(): Promise<boolean>;
|
|
4
|
-
abstract setItem(key: string, value: ItemInfo): Promise<void>;
|
|
5
|
-
abstract getItem(key: string): Promise<ItemInfo | null>;
|
|
6
|
-
abstract deleteItem(key: string): Promise<boolean>;
|
|
7
|
-
abstract listItems(): Promise<CredentialEntry[] | null>;
|
|
8
|
-
abstract listEntries(): Promise<ItemInfo[]>;
|
|
9
|
-
abstract listMap(): Promise<Record<string, ItemInfo>>;
|
|
10
|
-
abstract setDefaultItem(value: ItemInfo): Promise<void>;
|
|
11
|
-
abstract getDefaultItem(options?: GetDefaultOptions): Promise<ItemInfo | null>;
|
|
12
|
-
abstract deleteDefaultItem(): Promise<void>;
|
|
13
|
-
protected normalizeHostFrom(url: string): string;
|
|
14
|
-
protected parseKey(v: string): ItemInfo | null;
|
|
15
|
-
}
|
package/lib/esm/base.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export class BaseSecretStore {
|
|
2
|
-
normalizeHostFrom(url) {
|
|
3
|
-
try {
|
|
4
|
-
return new URL(url).host;
|
|
5
|
-
}
|
|
6
|
-
catch {
|
|
7
|
-
return url;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
parseKey(v) {
|
|
11
|
-
try {
|
|
12
|
-
const parsed = JSON.parse(v);
|
|
13
|
-
return parsed;
|
|
14
|
-
}
|
|
15
|
-
catch {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
package/lib/esm/file.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { BaseSecretStore } from "./base.js";
|
|
2
|
-
import type { CredentialEntry, ItemInfo, StoreOptions } from "./types.js";
|
|
3
|
-
export declare class FileStore extends BaseSecretStore {
|
|
4
|
-
private filepath;
|
|
5
|
-
constructor(options: Required<Pick<StoreOptions, "filepath">>);
|
|
6
|
-
available(): Promise<boolean>;
|
|
7
|
-
private load;
|
|
8
|
-
private save;
|
|
9
|
-
setItem(key: string, value: ItemInfo): Promise<void>;
|
|
10
|
-
getItem(key: string): Promise<ItemInfo | null>;
|
|
11
|
-
deleteItem(key: string): Promise<boolean>;
|
|
12
|
-
listItems(): Promise<CredentialEntry[] | null>;
|
|
13
|
-
listEntries(): Promise<ItemInfo[]>;
|
|
14
|
-
listMap(): Promise<Record<string, ItemInfo>>;
|
|
15
|
-
setDefaultItem(value: ItemInfo): Promise<void>;
|
|
16
|
-
getDefaultItem(): Promise<ItemInfo | null>;
|
|
17
|
-
deleteDefaultItem(): Promise<void>;
|
|
18
|
-
}
|
|
19
|
-
export default FileStore;
|