#!/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)