hyperdrive
                                
                                 hyperdrive copied to clipboard
                                
                                    hyperdrive copied to clipboard
                            
                            
                            
                        Clear is not clearing
;(async function() {
  const Corestore = require('corestore');
  const Hyperdrive = require('hyperdrive');
  const folder = 'animals';
  const store = new Corestore(`./db/${folder}`);
  await store.ready();
  const drive = new Hyperdrive(store);
  await drive.ready();
  await drive.put(`/dogs/husky`, Buffer.from(JSON.stringify({ _id: 'husky', job: 'sled dog' })));
  await drive.put(`/dogs/husky`, Buffer.from(JSON.stringify({ _id: 'husky', job: 'sled dog', origin: 'siberia' })));
  await drive.put(`/dogs/husky`, Buffer.from(JSON.stringify({ _id: 'husky', job: 'sled dog', origin: 'siberia', size: 'medium' })));
  console.log(JSON.parse((await drive.get(`/dogs/husky`)).toString()));
  const trim = drive.db.core.length; // keep tiny on startup
  console.log(1, trim);
  const view = drive.db.createReadStream();
  const blobs = await drive.getBlobs();
      
  for await (const entry of view) {
    console.log(entry);
    const key = entry.key.replace('files\x00', '');
    const value = await blobs.get(entry.value.blob);
    console.log(key, value.toString());
    await drive.put(key, value);
  }
  await drive.db.core.clear(1, trim);
  console.log(JSON.parse((await drive.get(`/dogs/husky`)).toString()));
  console.log((await drive.db.core.get(0, {wait: false})).toString()); // hyperbee
  console.log((await drive.db.core.get(1, {wait: false})).toString()); // files/dogs/husky|{"exec... // I expected null
  console.log((await drive.db.core.get(2, {wait: false})).toString()); // files/dogs/husky}{"exec... // I expected null
  console.log((await drive.db.core.get(3, {wait: false})).toString()); // files/dogs/husky}{"exec... // I expected null
  console.log((await drive.db.core.get(4, {wait: false})).toString()); // files/dogs/husky~{"exec...
})();
For example this works well on a hyperbee
;(async function() {
  const Hyperbee = require('hyperbee');
  const Hypercore = require('hypercore');
  const fs = require('fs').promises;
  await fs.rm('./db', { recursive: true });
  let Toyota = {
    make: "Toyota",
    model: "Camry",
    owner: "John Doe"
  };
  let Honda = {
    make: "Honda",
    model: "Civic",
    owner: "Mark smith"
  };
  const core = new Hypercore('./db');
  const car = new Hyperbee(core);
  await car.ready();
  await car.put('Toyota', JSON.stringify(Toyota));
  console.log((await car.core.get(0)).toString()); // dont remove this
  console.log(JSON.parse((await car.get('Toyota')).value.toString()));
  await car.put('Honda', JSON.stringify(Honda));
  Honda.owner = 'benz';
  await car.put('Honda', JSON.stringify(Honda));
  const trim = car.core.length;
  console.log(trim); // 4
  const view = car.createReadStream();
  for await (const entry of view) {
    await car.put(entry.key.toString(), entry.value.toString());
  }
  await car.core.clear(1, trim);
  console.log(JSON.parse((await car.get('Toyota')).value.toString()));
  console.log(JSON.parse((await car.get('Honda')).value.toString()));
  console.log(car.core.length); // 6
  console.log('#0', await car.core.get(0, { wait: false })); // hyperbee
  console.log('#1', await car.core.get(1, { wait: false })); // null
  console.log('#2', await car.core.get(2, { wait: false })); // null
  console.log('#3', await car.core.get(3, { wait: false })); // null
  console.log('#4', await car.core.get(4, { wait: false })); // Toyota buffer
  console.log('#5', await car.core.get(5, { wait: false })); // Honda buffer
  await car.close();
})();
Use drive.clear(filename) to clear content on the drive
I am going through similar situation in which drive.clear(filePath) doesn't actually clear the data. The disk space also is not reduced. any idea @benzmuircroft ? did you manage to clear data contents from disk using this method?