// Steady-state size: RocksDB reports its uncompacted footprint, which flatters
// nothing and misleads on small stores. Compact, then measure.
// node test/compact-size.mjs <storeDir...>
import { createRequire } from 'module'
const require = createRequire(import.meta.url)
const { execFileSync } = require('child_process')
const CorestoreStorage = require('hypercore-storage')
const du = (p) => Number(execFileSync('du', ['-sb', p]).toString().split('\t')[0])
for (const dir of process.argv.slice(2)) {
const before = du(dir)
const s = new CorestoreStorage(dir)
await s.ready()
await s.compact()
await s.close()
const after = du(dir)
console.log(JSON.stringify({ dir, before, afterCompact: after, freed: before - after }))
}