(root: string, rel: string)
| 113 | } |
| 114 | |
| 115 | async function readSidecar(root: string, rel: string): Promise<DatabaseSidecar | null> { |
| 116 | try { |
| 117 | const raw = await fs.readFile(databaseSidecarPath(root, rel), 'utf8') |
| 118 | const sidecar = normalizeSidecar(JSON.parse(raw)) |
| 119 | if (sidecar?.pages) sidecar.pages = pagesToFull(toPosix(rel), sidecar.pages) |
| 120 | return sidecar |
| 121 | } catch (err) { |
| 122 | if (isMissing(err)) return null |
| 123 | if (err instanceof SyntaxError) return null |
| 124 | throw err |
| 125 | } |
| 126 | } |
| 127 | |
| 128 | function hydrate( |
| 129 | rel: string, |
no test coverage detected