{"version":3,"sources":["jsdelivr-header.js","/npm/hyperlog-kdb-index@4.0.2/index.js"],"names":[],"mappings":"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","file":"/npm/hyperlog-kdb-index@4.0.2/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/hyperlog-kdb-index@4.0.2/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var indexer = require('hyperlog-index')\nvar inherits = require('inherits')\nvar EventEmitter = require('events').EventEmitter\nvar sub = require('subleveldown')\nvar through = require('through2')\nvar readonly = require('read-only-stream')\nvar once = require('once')\n\nmodule.exports = HKDB\ninherits(HKDB, EventEmitter)\n\nfunction HKDB (opts) {\n  if (!(this instanceof HKDB)) return new HKDB(opts)\n  var self = this\n  EventEmitter.call(self)\n  self.log = opts.log\n  self.db = opts.db\n  self.idb = sub(self.db, 'i')\n  self.xdb = sub(self.db, 'x')\n\n  self.xdb.get('available', function (err, value) {\n    if (err && !/^notfound/i.test(err.message) && !err.notFound) {\n      return self.emit('error', err)\n    }\n    self.kdb = opts.kdbtree({\n      types: opts.types.concat('buffer[32]'),\n      store: opts.store,\n      size: opts.chunkLength || opts.store.chunkLength,\n      available: Number(value || 0)\n    })\n    self.kdb.on('available', function (n) {\n      self.xdb.put('available', String(n), function (err) {\n        if (err) self.emit('error', err)\n      })\n    })\n    self.emit('_kdb', self.kdb)\n  })\n\n  self.map = opts.map\n  self.dex = indexer({\n    log: self.log,\n    db: self.idb,\n    map: mapfn\n  })\n  self.dex.on('error', function (err) { self.emit('error', err) })\n\n  function mapfn (row, next) {\n    next = once(next)\n    self.map(row, function (err, rec) {\n      if (err) return next(err)\n      if (Array.isArray(rec)) rec = { type: 'put', point: rec }\n      if (!rec || (!rec.point && !Array.isArray(rec.points))) return next()\n      if (!rec.type) rec.type = 'put'\n      self._getkdb(function (kdb) {\n        onkdb(kdb, row, rec, next)\n      })\n    })\n  }\n\n  function onkdb (kdb, row, rec, next) {\n    var value = Buffer(row.key, 'hex')\n    var links = {}\n    row.links.forEach(function (link) { links[link] = true })\n    var pending = 1\n\n    row.links.forEach(function (link) {\n      pending++\n      self.log.get(link, function (err, doc) {\n        if (err) return next(err)\n        self.map(doc, function (err, rec) {\n          if (err) return next(err)\n          if (Array.isArray(rec)) rec = { type: 'put', point: rec }\n          if (!rec || (!rec.point && !Array.isArray(rec.points))) {\n            if (--pending === 0) insert()\n            return\n          }\n          if (rec.point) {\n            kdb.remove(rec.point, { value: Buffer(link, 'hex') }, onrm)\n          } else if (rec.points) {\n            pending += rec.points.length\n            rec.points.forEach(function (pt) {\n              kdb.remove(pt, { value: Buffer(link, 'hex') }, onrm)\n            })\n            if (--pending === 0) insert()\n          }\n        })\n      })\n    })\n    if (--pending === 0) insert()\n    function insert () {\n      if (rec.type === 'put' && rec.points) {\n        var p = 1 + rec.points.length\n        rec.points.forEach(function (p) {\n          kdb.insert(p, value, oninsert)\n        })\n        function oninsert (err) {\n          if (err) next(err)\n          else if (--p === 0) next()\n        }\n        if (--p === 0) next()\n      } else if (rec.type === 'put') {\n        kdb.insert(rec.point, value, next)\n      } else { // del, unknown type cases\n        next()\n      }\n    }\n    function onrm (err) {\n      if (err) next(err)\n      else if (--pending === 0) insert()\n    }\n  }\n}\n\nHKDB.prototype._getkdb = function (fn) {\n  if (this.kdb) fn(this.kdb)\n  else this.once('_kdb', fn)\n}\n\nHKDB.prototype.ready = function (fn) {\n  this.dex.ready(fn)\n}\n\nHKDB.prototype.query = function (q, opts, cb) {\n  var self = this\n  self.ready(function () {\n    self.kdb.query(q, opts, cb)\n  })\n}\n\nHKDB.prototype.queryStream = function (q, opts) {\n  var self = this\n  var r = through.obj()\n  self.ready(function () {\n    var qs = self.kdb.queryStream(q, opts)\n    qs.on('error', r.emit.bind(r, 'error'))\n    qs.pipe(r)\n  })\n  return readonly(r)\n}\n\nfunction noop () {}\n"]}