byokay-kit
Version:
Byokay Kit lets users bring their own AI API keys and store them securely in their browser. This eliminates the need for your app to manage sensitive credentials or maintain AI API backend infrastructure.
39 lines (38 loc) • 1.37 kB
JavaScript
export class KeyManager {
constructor(options = {}) {
this.storage =
options.storage ||
(typeof window !== "undefined"
? localStorage
: this.createMemoryStorage());
this.memoryStorage = new Map();
}
setKey(provider, key) {
const keyName = this.getStorageKey(provider);
this.storage.setItem(keyName, key);
this.memoryStorage.set(keyName, key);
}
getKey(provider) {
const keyName = this.getStorageKey(provider);
return this.memoryStorage.get(keyName) || this.storage.getItem(keyName);
}
removeKey(provider) {
const keyName = this.getStorageKey(provider);
this.storage.removeItem(keyName);
this.memoryStorage.delete(keyName);
}
getStorageKey(provider) {
return `byok-${provider}-key`;
}
// Fallback memory-only storage (used in SSR or tests)
createMemoryStorage() {
return {
getItem: (key) => this.memoryStorage.get(key) || null,
setItem: (key, value) => this.memoryStorage.set(key, value),
removeItem: (key) => this.memoryStorage.delete(key),
clear: () => this.memoryStorage.clear(),
key: (index) => Array.from(this.memoryStorage.keys())[index] || null,
length: 0,
};
}
}