refactor(vault): expose structured getBackendInfo alongside string label

This commit is contained in:
ZacharyZhang-NY committed 2026-04-16 23:07:34 -04:00
1 parent adfcb59978
commit 5b7e47f461
1 file changed
+19 -2
+19 -2
View File
@@ -11,15 +11,32 @@ export class SecretVault {
} }
getBackendLabel(): string { getBackendLabel(): string {
const info = this.getBackendInfo();
switch (info.kind) {
case "safe_storage":
return info.backend ? `safe_storage:${info.backend}` : "safe_storage";
case "vault":
return info.backend ? `vault:${info.backend}` : "vault";
case "unavailable":
return "unavailable";
}
}
/** Structured view of the active backend. Prefer this over the string form
* (`getBackendLabel`) when the caller needs to branch on kind vs algorithm. */
getBackendInfo(): { kind: "safe_storage" | "vault" | "unavailable"; backend?: string } {
if (this.canUseSafeStorage()) { if (this.canUseSafeStorage()) {
const selectedBackend = typeof safeStorage?.getSelectedStorageBackend === "function" const selectedBackend = typeof safeStorage?.getSelectedStorageBackend === "function"
? safeStorage.getSelectedStorageBackend() ? safeStorage.getSelectedStorageBackend()
: "platform"; : "platform";
if (selectedBackend && selectedBackend !== "basic_text") { if (selectedBackend && selectedBackend !== "basic_text") {
return `safe_storage:${selectedBackend}`; return { kind: "safe_storage", backend: selectedBackend };
} }
} }
return this.allowInsecureVaultFallback() ? "vault:aes-256-gcm" : "unavailable"; if (this.allowInsecureVaultFallback()) {
return { kind: "vault", backend: "aes-256-gcm" };
}
return { kind: "unavailable" };
} }
encrypt(value: string): { backend: "safe_storage" | "vault"; payload: Buffer } { encrypt(value: string): { backend: "safe_storage" | "vault"; payload: Buffer } {