{"version":3,"file":"safe-storage.mjs","names":[],"sources":["../../src/main/safe-storage/index.ts"],"sourcesContent":["/**\n * Main process handlers for safeStorage module\n * Provides simple encryption and decryption of strings for secure storage\n */\n\nimport { safeStorage } from \"electron\";\nimport type { RpcServer } from \"electron-json-rpc/main\";\n\nconst RPC_METHOD_PREFIX = \"safeStorage\";\n\n/**\n * Check if encryption is available on the current platform\n */\nexport async function isEncryptionAvailableHandler(): Promise<boolean> {\n  return safeStorage.isEncryptionAvailable();\n}\n\n/**\n * Encrypt a string for secure storage\n * Returns a base64-encoded string representing the encrypted data\n */\nexport async function encryptStringHandler(...params: unknown[]): Promise<string> {\n  const [plainText] = params as [string];\n  const buffer = safeStorage.encryptString(plainText);\n  // Convert Buffer to base64 for IPC serialization\n  return buffer.toString(\"base64\");\n}\n\n/**\n * Decrypt an encrypted string back to plain text\n * Expects a base64-encoded string\n */\nexport async function decryptStringHandler(...params: unknown[]): Promise<string> {\n  const [encryptedBase64] = params as [string];\n  // Convert base64 back to Buffer\n  const encryptedBuffer = Buffer.from(encryptedBase64, \"base64\");\n  return safeStorage.decryptString(encryptedBuffer);\n}\n\n/**\n * On Linux, force the use of an in-memory password for encryption\n * No-op on Windows and macOS\n */\nexport async function setUsePlainTextEncryptionHandler(...params: unknown[]): Promise<void> {\n  const [usePlainText] = params as [boolean];\n  safeStorage.setUsePlainTextEncryption(usePlainText);\n}\n\n/**\n * On Linux, get the name of the password manager being used\n * Returns \"unknown\" if called before app ready\n */\nexport async function getSelectedStorageBackendHandler(): Promise<string> {\n  return safeStorage.getSelectedStorageBackend();\n}\n\n/**\n * Register all safeStorage module RPC handlers\n */\nexport function registerSafeStorageModule(rpc: RpcServer): void {\n  rpc.register(`${RPC_METHOD_PREFIX}.isEncryptionAvailable`, isEncryptionAvailableHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.encryptString`, encryptStringHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.decryptString`, decryptStringHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.setUsePlainTextEncryption`, setUsePlainTextEncryptionHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.getSelectedStorageBackend`, getSelectedStorageBackendHandler);\n}\n"],"mappings":";;;;;;;AAQA,MAAM,oBAAoB;;;;AAK1B,eAAsB,+BAAiD;AACrE,QAAO,YAAY,uBAAuB;;;;;;AAO5C,eAAsB,qBAAqB,GAAG,QAAoC;CAChF,MAAM,CAAC,aAAa;AAGpB,QAFe,YAAY,cAAc,UAAU,CAErC,SAAS,SAAS;;;;;;AAOlC,eAAsB,qBAAqB,GAAG,QAAoC;CAChF,MAAM,CAAC,mBAAmB;CAE1B,MAAM,kBAAkB,OAAO,KAAK,iBAAiB,SAAS;AAC9D,QAAO,YAAY,cAAc,gBAAgB;;;;;;AAOnD,eAAsB,iCAAiC,GAAG,QAAkC;CAC1F,MAAM,CAAC,gBAAgB;AACvB,aAAY,0BAA0B,aAAa;;;;;;AAOrD,eAAsB,mCAAoD;AACxE,QAAO,YAAY,2BAA2B;;;;;AAMhD,SAAgB,0BAA0B,KAAsB;AAC9D,KAAI,SAAS,GAAG,kBAAkB,yBAAyB,6BAA6B;AACxF,KAAI,SAAS,GAAG,kBAAkB,iBAAiB,qBAAqB;AACxE,KAAI,SAAS,GAAG,kBAAkB,iBAAiB,qBAAqB;AACxE,KAAI,SAAS,GAAG,kBAAkB,6BAA6B,iCAAiC;AAChG,KAAI,SAAS,GAAG,kBAAkB,6BAA6B,iCAAiC"}