A fast static index for 2D points
Make sure empty KDBush (with zero items) doesn't throw an error.
Fix NPM package missing index.js
.
⚠️ A major rewrite of the library to make it more memory-efficient, serializable and similar in API to Flatbush. Breaks the API in the following way:
// old API
const index = new KDBush(points, p => p.x, p => p.y, 64, Uint32Array);
// new API
const index = new KDBush(points.length, 64, Uint32Array);
for (const {x, y} of points) index.add(x, y);
index.finish();
The new API is more verbose, but it allows creating an index without requiring to store coordinates in some intermediate point array, allowing more efficient memory use, and allows transferring (or saving to a binary file) and recreating an index from a single array buffer:
// instantly transfer the index from a worker to the main thread
postMessage(index.data, [index.data]);
// reconstruct the index from a raw array buffer
const index = Flatbush.from(e.data);
⚠️ Also breaking in this version:
kdbush(...)
to new KDBush(...)
.module
consumers. Browser/Node builds are still transpiled to ES5.Fix Unpkg and JSDelivr configurations.
Expose KDBush as a proper ES module:
import kdbush from 'kdbush';
tape
from dependencies
to devDependencies
.