authPortable.ts
1 import { execa } from 'execa' 2 import { getMacOsKeychainStorageServiceName } from 'src/utils/secureStorage/macOsKeychainHelpers.js' 3 4 export async function maybeRemoveApiKeyFromMacOSKeychainThrows(): Promise<void> { 5 if (process.platform === 'darwin') { 6 const storageServiceName = getMacOsKeychainStorageServiceName() 7 const result = await execa( 8 `security delete-generic-password -a $USER -s "${storageServiceName}"`, 9 { shell: true, reject: false }, 10 ) 11 if (result.exitCode !== 0) { 12 throw new Error('Failed to delete keychain entry') 13 } 14 } 15 } 16 17 export function normalizeApiKeyForConfig(apiKey: string): string { 18 return apiKey.slice(-20) 19 }