import { Entry } from "npm:@napi-rs/keyring"; export class CredentialManager { constructor( private credentialsFile: string, private tokenName: string ) {} async storeCredentials(username: string, token: string): Promise { // Store username await Deno.writeTextFile(this.credentialsFile, username); // Store token in keyring const entry = new Entry(this.tokenName, username); if (entry.getPassword()) { entry.deletePassword(); } entry.setPassword(token); } async getCredentials(): Promise<{ username: string, token: string } | undefined> { try { const username = await Deno.readTextFile(this.credentialsFile); const entry = new Entry(this.tokenName, username); const token = entry.getPassword(); if (!token) { console.error("No token found in keyring. Please login first."); return undefined; } return { username, token }; } catch (error) { console.error("No credentials found. Please login first."); return undefined; } } async clearCredentials(username: string): Promise { // Remove username file try { await Deno.remove(this.credentialsFile); } catch (error) { console.error("Failed to remove credentials file:", error); } // Remove token from keyring const entry = new Entry(this.tokenName, username); if (entry.getPassword()) { entry.deletePassword(); } } }