OverviewFilesCommitsIssuesDocsReleasesPeers

holepunchto-kb / skills / autobase / api-extract.json

84 lines · json ref:
{
  "repo": "autobase",
  "timestamp": "2026-01-16T23:00:28.105Z",
  "entryPoint": "index.js",
  "exports": {
    "packageJson": {
      "main": "index.js"
    }
  },
  "api": {
    "file": "index.js",
    "exports": [
      {
        "type": "default",
        "name": "class"
      }
    ],
    "classes": [
      {
        "name": "WakeupHandler"
      },
      {
        "name": "Autobase"
      }
    ],
    "functions": [
      {
        "name": "for"
      },
      {
        "name": "for"
      },
      {
        "name": "toKey"
      },
      {
        "name": "isAutobaseMessage"
      },
      {
        "name": "compareNodes"
      },
      {
        "name": "random2over1"
      },
      {
        "name": "noop"
      },
      {
        "name": "crashSoon"
      },
      {
        "name": "isObject"
      },
      {
        "name": "emitWarning"
      },
      {
        "name": "normalize"
      }
    ]
  },
  "readme": {
    "content": "# Autobase\n\nA multiwriter data structure for combining multiple writer cores into a view of the system. Using the event sourcing pattern, writers append blocks which are linearized into an eventually consistent order for building a view of the system, combining their inputs.\n\n## Install\n\n`npm i autobase`\n\n## Usage\n\n```js\nconst Corestore = require('corestore')\nconst Autobase = require('autobase')\n\nconst store = new Corestore('./some-dir')\nconst local = new Autobase(store, remote.key, { apply, open })\nawait local.ready()\n\n// on remote base\n// remote.append({ addWriter: local.local.key })\n\nawait local.append('local 0')\n\n// remote.append('remote 0')\n// remote.append('remote 1')\n\nawait local.update()\nawait local.append('local 1')\n\nfor (let i = 0; i < local.view.length; i++) {\n  console.log(await local.view.get(i))\n\n  /*\n  local 0\n  remote 0\n  remote 1\n  local 1\n  */\n}\n\n// create the view\nfunction open(store) {\n  return store.get('test')\n}\n\n// use apply to handle to updates\nasync function ap",
    "sections": [
      "intro",
      "install",
      "usage",
      "api"
    ],
    "hasApi": true,
    "hasExamples": true,
    "exampleCount": 7,
    "examples": [
      "const Corestore = require('corestore')\nconst Autobase = require('autobase')\n\nconst store = new Corestore('./some-dir')\nconst local = new Autobase(store, remote.key, { apply, open })\nawait local.ready()\n\n// on remote base\n// remote.append({ addWriter: local.local.key })\n\nawait local.append('local 0')\n\n// remote.append('remote 0')\n// remote.append('remote 1')\n\nawait local.update()\nawait local.append('local 1')\n\nfor (let i = 0; i < local.view.length; i++) {\n  console.log(await local.view.get(i))\n\n  /*\n  local 0\n  remote 0\n  remote 1\n  local 1\n  */\n}\n\n// create the view\nfunction open(store) {\n  return store.get('test')\n}\n\n// use apply to handle to updates\nasync function apply(nodes, view, host) {\n  for (const { value } of nodes) {\n    if (value.addWriter) {\n      await host.addWriter(value.addWriter, { indexer: true })\n      continue\n    }\n\n    await view.append(value)\n  }\n}",
      "function open(store) {\n  return store.get('my-view')\n}",
      "async function apply(nodes, view, host) {\n  for (const n of nodes) await view.append(n)\n}"
    ]
  },
  "patterns": [
    "append-only-log",
    "binary-encoding",
    "cryptography"
  ]
}