Something went wrong. Try again.
source dump of claude code forked from oppi.li/claude-code
Something went wrong. Try again.
2.4 kB · 84 lines
TypeScript
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485import { chmodSync } from 'fs'import { join } from 'path'import { getClaudeConfigHomeDir } from '../envUtils.js'import { getErrnoCode } from '../errors.js'import { getFsImplementation } from '../fsOperations.js'import { jsonParse, jsonStringify, writeFileSync_DEPRECATED,} from '../slowOperations.js'import type { SecureStorage, SecureStorageData } from './types.js'
function getStoragePath(): { storageDir: string; storagePath: string } { const storageDir = getClaudeConfigHomeDir() const storageFileName = '.credentials.json' return { storageDir, storagePath: join(storageDir, storageFileName) }}
export const plainTextStorage = { name: 'plaintext', read(): SecureStorageData | null { // sync IO: called from sync context (SecureStorage interface) const { storagePath } = getStoragePath() try { const data = getFsImplementation().readFileSync(storagePath, { encoding: 'utf8', }) return jsonParse(data) } catch { return null } }, async readAsync(): Promise<SecureStorageData | null> { const { storagePath } = getStoragePath() try { const data = await getFsImplementation().readFile(storagePath, { encoding: 'utf8', }) return jsonParse(data) } catch { return null } }, update(data: SecureStorageData): { success: boolean; warning?: string } { // sync IO: called from sync context (SecureStorage interface) try { const { storageDir, storagePath } = getStoragePath() try { getFsImplementation().mkdirSync(storageDir) } catch (e: unknown) { const code = getErrnoCode(e) if (code !== 'EEXIST') { throw e } }
writeFileSync_DEPRECATED(storagePath, jsonStringify(data), { encoding: 'utf8', flush: false, }) chmodSync(storagePath, 0o600) return { success: true, warning: 'Warning: Storing credentials in plaintext.', } } catch { return { success: false } } }, delete(): boolean { // sync IO: called from sync context (SecureStorage interface) const { storagePath } = getStoragePath() try { getFsImplementation().unlinkSync(storagePath) return true } catch (e: unknown) { const code = getErrnoCode(e) if (code === 'ENOENT') { return true } return false } },} satisfies SecureStorage