All files / core SecretManager.ts

100% Statements 8/8
100% Branches 2/2
100% Functions 5/5
100% Lines 8/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26      2x   2x 12x     17x       1x       1x       3x 3x      
import * as vscode from 'vscode';
import { ProviderType } from './interfaces';
 
const KEY_PREFIX = 'manan-kanchu.apikey.';
 
export class SecretManager {
  constructor(private readonly secrets: vscode.SecretStorage) {}
 
  async getApiKey(provider: ProviderType): Promise<string | undefined> {
    return this.secrets.get(`${KEY_PREFIX}${provider}`);
  }
 
  async setApiKey(provider: ProviderType, key: string): Promise<void> {
    await this.secrets.store(`${KEY_PREFIX}${provider}`, key);
  }
 
  async deleteApiKey(provider: ProviderType): Promise<void> {
    await this.secrets.delete(`${KEY_PREFIX}${provider}`);
  }
 
  async hasApiKey(provider: ProviderType): Promise<boolean> {
    const key = await this.getApiKey(provider);
    return key !== undefined && key.length > 0;
  }
}