OverviewFilesCommitsIssuesDocsReleasesPeers

hyper-wallet / tests / manual / test-autobase-api.cjs

62 lines · javascript ref:
#!/usr/bin/env bare

// Test what methods autobase actually has
require('bare-node-runtime/global')

const path = require('bare-path')
const os = require('bare-os')
const Corestore = require('corestore')
const Autobase = require('autobase')
const Hyperbee = require('hyperbee')

const STORAGE_DIR = path.join(os.homedir(), '.hyper-wallet', 'storage')

class TestView {
  open(store) {
    return new Hyperbee(store.get('view'), {
      keyEncoding: 'utf-8',
      valueEncoding: 'binary'
    })
  }

  async apply(nodes, view, base) {
    // No-op
  }

  close(view) {
    return view.close()
  }
}

async function main() {
  const store = new Corestore(STORAGE_DIR)
  await store.ready()

  const namespace = await Autobase.getLocalKey(store)
  const autobase = new Autobase(store.namespace(namespace), null, new TestView())
  await autobase.ready()

  console.log('Autobase instance:')
  console.log('  Type:', typeof autobase)
  console.log('  Constructor:', autobase.constructor.name)
  console.log('')

  console.log('Checking for addWriter method:')
  console.log('  typeof autobase.addWriter:', typeof autobase.addWriter)
  console.log('  addWriter exists:', 'addWriter' in autobase)
  console.log('')

  console.log('All methods on autobase:')
  const proto = Object.getPrototypeOf(autobase)
  const methods = Object.getOwnPropertyNames(proto).filter(name => {
    return typeof autobase[name] === 'function'
  })
  console.log('  Methods:', methods.join(', '))
  console.log('')

  await autobase.close()
  await store.close()
}

main().catch(console.error)