in-memory-vault.ts

995 B · raw

1import { Capacitor, registerPlugin } from "@capacitor/core";2import type { VaultEntry } from "./types";34const InMemoryVault = registerPlugin<{5  setEntries(options: { entries: string }): Promise<void>;6  clearEntries(): Promise<void>;7}>("InMemoryVault");89function credentialEntries(entries: VaultEntry[]) {10  return entries11    .filter((entry) => entry.type === "login" && !entry.deletedAt && entry.password)12    .map((entry) => ({13      id: entry.id,14      type: entry.type,15      title: entry.title,16      username: entry.username ?? "",17      password: entry.password ?? "",18      url: entry.url ?? "",19    }));20}2122export async function publishInMemoryVault(entries: VaultEntry[]): Promise<void> {23  if (!Capacitor.isNativePlatform()) return;24  await InMemoryVault.setEntries({25    entries: JSON.stringify(credentialEntries(entries)),26  });27}2829export async function clearInMemoryVault(): Promise<void> {30  if (!Capacitor.isNativePlatform()) return;31  await InMemoryVault.clearEntries();32}