packages/vscode-bootstrap/src/vscode/secrets/ReadonlySecretStorageProvider.ts (24 lines of code) (raw):
import type { ISecretStorageProvider } from '../types';
type KeyPredicate = (key: string) => boolean;
type ValueProvider = () => Promise<string>;
export type SecretStorageEntry = [KeyPredicate, ValueProvider];
export class ReadonlySecretStorageProvider implements ISecretStorageProvider {
readonly #values: SecretStorageEntry[];
constructor(values: SecretStorageEntry[]) {
this.#values = values;
}
readonly type = 'in-memory';
async get(key: string): Promise<string | undefined> {
const valueProvider = this.#values.find(([predicate]) => predicate(key))?.[1];
if (!valueProvider) {
return undefined;
}
return valueProvider();
}
// eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-unused-vars
set(key: string, value: string): Promise<void> {
// note: Instead of panicing, let's just intentionally no-op
return Promise.resolve();
}
// eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-unused-vars
delete(key: string): Promise<void> {
// note: Instead of panicing, let's just intentionally no-op
return Promise.resolve();
}
}