{"_id":"@4bitlabs/ennetree","_rev":"8-6035ca597c143c7cc3ad43f2d33a2e32","name":"@4bitlabs/ennetree","dist-tags":{"latest":"2.0.0"},"versions":{"1.0.0":{"name":"@4bitlabs/ennetree","version":"1.0.0","keywords":["ennetree","spatial","spatial-query","quadtree","2d"],"author":{"name":"J. Holmes","email":"32bitkid@gmail.com"},"license":"ISC","_id":"@4bitlabs/ennetree@1.0.0","maintainers":[{"name":"32bitkid","email":"32bitkid@gmail.com"}],"dist":{"shasum":"8d209b90b98883862ff61974fcadb73ebb209697","tarball":"https://registry.npmjs.org/@4bitlabs/ennetree/-/ennetree-1.0.0.tgz","fileCount":47,"integrity":"sha512-z5Tfjn92iJrwuBFeoyMuSP4lZ/BgVsR6huq50zrjvQUFmbrneCf5awq2FbN+cXJ7k3nTYdp7FVVQWspY8+Vvkg==","signatures":[{"sig":"MEUCICS5HBNxBqoRkRpuzXDRQ6XMZM/HlxhAeOubqQ+gF1iWAiEA7kF1Jf6pRRAVigJXxXc/5sU+BIdSBFO6OXF89Ky2O8E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":57354},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"4e69de9c1b1bb6b9fa5cf9512d4c3ae6323c61af","scripts":{"test":"jest src/","build":"tsc --build","clean":"tsc --build --clean","prepare":"npm run build","clean:wipe":"rimraf ./dist"},"_npmUser":{"name":"32bitkid","email":"32bitkid@gmail.com"},"_npmVersion":"10.5.0","description":"A basic 2D ennetree (3×3 spatial division) for fast, efficient spatial queries","directories":{},"_nodeVersion":"18.18.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ennetree_1.0.0_1720914501329_0.9359899631922597","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@4bitlabs/ennetree","version":"1.0.1","keywords":["ennetree","spatial","spatial-query","quadtree","2d"],"author":"J. Holmes <32bitkid@gmail.com>","license":"ISC","_id":"@4bitlabs/ennetree@1.0.1","maintainers":[{"name":"32bitkid","email":"32bitkid@gmail.com"}],"dist":{"shasum":"a1356f588f0d73cfe696741301351af14185c4c1","tarball":"https://registry.npmjs.org/@4bitlabs/ennetree/-/ennetree-1.0.1.tgz","fileCount":47,"integrity":"sha512-zfEfN6WmualAeYqICRzZcmFvtyxRTpS1gnNuU8OIuaFjIJqEl2vdDRffkEfF9k0RuwwXi4igZSz9IAnOivrETQ==","signatures":[{"sig":"MEUCIE6CXDihzJTUzTgcP+r3KfV1L5T0USY62vZoR4Is+iNNAiEAg0uZ8aOxd/sIi2rskyjYgr6ny7HsyeRfiDnH30UwjlA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55319},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"9593fccc60395cdd429a9f351a35c968d1f51067","scripts":{"test":"jest src/","build":"tsc --build","clean":"tsc --build --clean","prepare":"npm run build","clean:wipe":"rimraf ./dist"},"_npmUser":{"name":"32bitkid","email":"32bitkid@gmail.com"},"_npmVersion":"lerna/8.1.6/node@v18.18.2+arm64 (darwin)","description":"A basic 2D ennetree (3×3 spatial division) for fast, efficient spatial queries","directories":{},"_nodeVersion":"18.18.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ennetree_1.0.1_1720918378973_0.7727472278558323","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@4bitlabs/ennetree","version":"1.0.2","keywords":["ennetree","spatial","spatial-query","quadtree","2d"],"author":"J. Holmes <32bitkid@gmail.com>","license":"ISC","_id":"@4bitlabs/ennetree@1.0.2","maintainers":[{"name":"32bitkid","email":"32bitkid@gmail.com"}],"dist":{"shasum":"13621df947022e2560ecc92dfa0aa91616721450","tarball":"https://registry.npmjs.org/@4bitlabs/ennetree/-/ennetree-1.0.2.tgz","fileCount":47,"integrity":"sha512-PeH5IdL+Yjw54TJ6s/GyL1dsdE+/BYRi8EDlNih6+u2r8TnaorgSgd3M5p4nYaUIhC6AztKi8j0zllOYFTG6iw==","signatures":[{"sig":"MEUCIHXH4r6/v4PK9KIBwFPGnp/a/eOpom8kt8+9tNd/gU4SAiEAqZmpJgdlR9jIyuC6xo4pcZ8IjrEaA01WcMQ3D4Zyj4w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55350},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"5fdb0f62ef5c23c803e05e1a0c7d5c4be454c158","scripts":{"test":"jest src/","build":"tsc --build","clean":"tsc --build --clean","prepack":"npm run build","clean:wipe":"rimraf ./dist"},"_npmUser":{"name":"32bitkid","email":"32bitkid@gmail.com"},"_npmVersion":"lerna/8.1.6/node@v18.18.2+arm64 (darwin)","description":"A basic 2D ennetree (3×3 spatial division) for fast, efficient spatial queries","directories":{},"_nodeVersion":"18.18.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ennetree_1.0.2_1720996071599_0.6284317984980754","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@4bitlabs/ennetree","version":"1.0.3","keywords":["ennetree","spatial","spatial-query","quadtree","2d"],"author":"J. Holmes <32bitkid@gmail.com>","license":"ISC","_id":"@4bitlabs/ennetree@1.0.3","maintainers":[{"name":"32bitkid","email":"32bitkid@gmail.com"}],"dist":{"shasum":"615345487cec3bea8d9e7e8d06d3e446f4655c6c","tarball":"https://registry.npmjs.org/@4bitlabs/ennetree/-/ennetree-1.0.3.tgz","fileCount":47,"integrity":"sha512-dks9SlVQ5iPAa/wvtmpOUwQOROkW337ZYoRAz0NU+c/Tlxgeu+U/UsTYy0+SSAb+BWzs9e3Y8e0twbM23t+LGA==","signatures":[{"sig":"MEYCIQD6jQtnBIMON/3oEk8Tje7wGWlmsHmpSRj/jK5LQMypXwIhALhf859Op7l4EpulSuT6hQxtzmuGRTXh6ti0N0TursPQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":54928},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"5905f9410eff2aa2dad3d5ac16143b6b4acf958f","scripts":{"test":"jest src/","build":"tsc --build","clean":"tsc --build --clean","prepack":"npm run build","clean:wipe":"rimraf ./dist"},"_npmUser":{"name":"32bitkid","email":"32bitkid@gmail.com"},"_npmVersion":"lerna/8.1.6/node@v18.18.2+arm64 (darwin)","description":"A basic 2D ennetree (3×3 spatial division) for fast, efficient spatial queries","directories":{},"_nodeVersion":"18.18.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ennetree_1.0.3_1721008069215_0.9862003312453684","host":"s3://npm-registry-packages"}},"1.0.4":{"name":"@4bitlabs/ennetree","version":"1.0.4","keywords":["ennetree","spatial","spatial-query","quadtree","2d"],"author":"J. Holmes <32bitkid@gmail.com>","license":"ISC","_id":"@4bitlabs/ennetree@1.0.4","maintainers":[{"name":"32bitkid","email":"32bitkid@gmail.com"}],"homepage":"https://github.com/32bitkid/4bitlabs.spatial/tree/main/libs/ennetree","bugs":"https://github.com/32bitkid/4bitlabs.spatial/issues","dist":{"shasum":"ade6e66fd512c489ffddcd794975664e4a0b6077","tarball":"https://registry.npmjs.org/@4bitlabs/ennetree/-/ennetree-1.0.4.tgz","fileCount":51,"integrity":"sha512-hZajpRGJnKhKc1felrjr0cDck9WmqQPBC6can2EuEZXeQWSy6nvp/vM+9wpoKQUqoOcR4LRWIAMKCUNke3bkPQ==","signatures":[{"sig":"MEYCIQCg5W3pZAjeqMQb9mC8Vc2hn+gkUMV0RQN4G1ovB6HZYgIhAKOaLy7lu3YhbinVMq6nFMDa+L/wEg+5JzancFcQt0+v","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":56870},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"ef7aaaebb334b226b099c8d54a938f08d11bf447","scripts":{"test":"jest src/","build":"tsc --build","clean":"tsc --build --clean","prepack":"npm run build","clean:wipe":"rimraf ./dist"},"_npmUser":{"name":"32bitkid","email":"32bitkid@gmail.com"},"repository":"github:32bitkid/4bitlabs.spatial","_npmVersion":"lerna/8.1.6/node@v18.18.2+arm64 (darwin)","description":"A basic 2D ennetree (3×3 spatial division) for fast, efficient spatial queries","directories":{},"_nodeVersion":"18.18.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ennetree_1.0.4_1721050940948_0.5089620248756435","host":"s3://npm-registry-packages"}},"1.0.5":{"name":"@4bitlabs/ennetree","version":"1.0.5","keywords":["ennetree","spatial","spatial-query","quadtree","2d"],"author":"J. Holmes <32bitkid@gmail.com>","license":"ISC","_id":"@4bitlabs/ennetree@1.0.5","maintainers":[{"name":"32bitkid","email":"32bitkid@gmail.com"}],"homepage":"https://github.com/32bitkid/4bitlabs.spatial/tree/main/libs/ennetree","bugs":"https://github.com/32bitkid/4bitlabs.spatial/issues","dist":{"shasum":"faaad25cc1fd615619013eace6130705f9b105ac","tarball":"https://registry.npmjs.org/@4bitlabs/ennetree/-/ennetree-1.0.5.tgz","fileCount":23,"integrity":"sha512-YIAQg1djjQmYPk6NMVrQI16y1xnJd3Ho6bR8Ce7GcG8DJipZRe3NK9rtgi2UJmM9th7JOUR1UILVYcHdqro8yQ==","signatures":[{"sig":"MEUCIEewlv3weAd/raTGp4eZyIBEsfdznv2k5zCc2PG8OjOtAiEA8qccl+aQVj5Uao+WuhVY0Py7bNOTZPFqvR3D0EupRSI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22663},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"93c6c7664155c825e0a3a89c86c539af69165d4e","scripts":{"test":"jest src/","build":"tsc --build","clean":"tsc --build --clean","prepack":"npm run build","clean:wipe":"rimraf ./dist"},"_npmUser":{"name":"32bitkid","email":"32bitkid@gmail.com"},"repository":{"url":"git+https://github.com/32bitkid/4bitlabs.spatial.git","type":"git"},"_npmVersion":"lerna/8.1.6/node@v20.15.1+arm64 (darwin)","description":"A basic 2D ennetree (3×3 spatial division) for fast, efficient spatial queries","directories":{},"_nodeVersion":"20.15.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ennetree_1.0.5_1721790585972_0.6852640632155578","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@4bitlabs/ennetree","version":"1.1.0","keywords":["ennetree","spatial","spatial-query","quadtree","2d"],"author":"J. Holmes <32bitkid@gmail.com>","license":"ISC","_id":"@4bitlabs/ennetree@1.1.0","maintainers":[{"name":"32bitkid","email":"32bitkid@gmail.com"}],"homepage":"https://32bitkid.github.io/4bitlabs.spatial/modules/_4bitlabs_ennetree.html","bugs":"https://github.com/32bitkid/4bitlabs.spatial/issues","dist":{"shasum":"7ea5c80fbc4bf0102ea9db0baeddf63c3dff5390","tarball":"https://registry.npmjs.org/@4bitlabs/ennetree/-/ennetree-1.1.0.tgz","fileCount":27,"integrity":"sha512-jA92vcv8RVvrDBh7gFp2fekpqvdWHfWmrPLFBFKOQoCc/F9RF+F0F9Hqeq0lSzbWhdPMpMzMFGEDcFqvrL/L5Q==","signatures":[{"sig":"MEUCIE8b/+3ZKaTzdFkkDGBsal6KrvBXFx0lZ8L3rFlblSenAiEAmkRbstUlu0jC+8V8Yk7kDr2WKC3P8uTUaSyKfeQpk3E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":29121},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"508ef3fac55c3fe14078023b365c51e596177cdd","scripts":{"test":"jest src/","build":"tsc --build","clean":"tsc --build --clean","prepack":"npm run build","clean:wipe":"rimraf ./dist"},"_npmUser":{"name":"32bitkid","email":"32bitkid@gmail.com"},"repository":{"url":"git+https://github.com/32bitkid/4bitlabs.spatial.git","type":"git"},"_npmVersion":"lerna/8.1.6/node@v20.16.0+x64 (linux)","description":"A simple 2D ennetree (3×3 spatial division) for fast, efficient spatial queries","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ennetree_1.1.0_1722022002471_0.9813594893264408","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@4bitlabs/ennetree","version":"2.0.0","description":"A simple 2D ennetree (3×3 spatial division) for fast, efficient spatial queries","keywords":["ennetree","spatial","spatial-query","quadtree","2d"],"homepage":"https://32bitkid.github.io/4bitlabs.spatial/modules/_4bitlabs_ennetree.html","bugs":{"url":"https://github.com/32bitkid/4bitlabs.spatial/issues"},"repository":{"type":"git","url":"git+https://github.com/32bitkid/4bitlabs.spatial.git"},"license":"ISC","author":{"name":"J. Holmes","email":"32bitkid@gmail.com"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsdown","clean:wipe":"rimraf ./dist","prepack":"npm run build","test":"vitest run","test:dev":"vitest dev"},"gitHead":"e203ef0490e30cd146d4147a0973d4ffef2277bb","_id":"@4bitlabs/ennetree@2.0.0","_nodeVersion":"22.18.0","_npmVersion":"11.18.0","dist":{"integrity":"sha512-Ljql9S0URMJWiWFCzEaN5Us7VocwQuiR2us8DyN974TW5CoF+v0CEU0V0N880CVmiJt3o5T7yfSE/is37n+CIA==","shasum":"549cd5766366208c5991f75331583550ff4cb738","tarball":"https://registry.npmjs.org/@4bitlabs/ennetree/-/ennetree-2.0.0.tgz","fileCount":19,"unpackedSize":25653,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEfwuijy0f7PMQc9xOrfys2m383u8/BsJeho9VqHY2A9AiAeXoEiHmhU95wxXG1uXmBWiHyD+SliveiOcHlvIznz2w=="}]},"_npmUser":{"name":"32bitkid","email":"32bitkid@gmail.com"},"directories":{},"maintainers":[{"name":"32bitkid","email":"32bitkid@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ennetree_2.0.0_1784402863090_0.4342592627222408"},"_hasShrinkwrap":false}},"time":{"created":"2024-07-13T23:48:21.196Z","modified":"2026-07-18T19:27:43.394Z","1.0.0":"2024-07-13T23:48:21.477Z","1.0.1":"2024-07-14T00:52:59.166Z","1.0.2":"2024-07-14T22:27:51.818Z","1.0.3":"2024-07-15T01:47:49.390Z","1.0.4":"2024-07-15T13:42:21.155Z","1.0.5":"2024-07-24T03:09:46.175Z","1.1.0":"2024-07-26T19:26:42.636Z","2.0.0":"2026-07-18T19:27:43.223Z"},"bugs":{"url":"https://github.com/32bitkid/4bitlabs.spatial/issues"},"author":{"name":"J. Holmes","email":"32bitkid@gmail.com"},"license":"ISC","homepage":"https://32bitkid.github.io/4bitlabs.spatial/modules/_4bitlabs_ennetree.html","keywords":["ennetree","spatial","spatial-query","quadtree","2d"],"repository":{"type":"git","url":"git+https://github.com/32bitkid/4bitlabs.spatial.git"},"description":"A simple 2D ennetree (3×3 spatial division) for fast, efficient spatial queries","maintainers":[{"name":"32bitkid","email":"32bitkid@gmail.com"}],"readme":"# `@4bitlabs/ennetree` [![License][license]][npm] [![NPM Version][version]][npm] [![NPM Downloads][dl]][npm]\n\nA simple 2D ennetree (3×3 spatial division) for fast, efficient spatial queries.\n\n![Ennetree split illustration][ennetree-split-img]\n\n## Installing\n\n```shell\n$ npm install --save @4bitlabs/ennetree\n```\n\n```shell\n$ yarn add @4bitlabs/ennetree\n```\n\n```shell\n$ pnpm add @4bitlabs/ennetree\n```\n\n## Documentation\n\nFull documentation for the library can be found [here](https://32bitkid.github.io/4bitlabs.spatial/modules/_4bitlabs_ennetree.html)\n\n## Usage\n\nSimilar to a [**quadtree**][quadtree], but instead of _binary_ recursive subdivisions, an **ennetree** uses trinary (3&times;3) subdivisions. Depending on the use-case, this can sometimes yield _more_ efficient spatial queries.\n\nAn _easy_ way to use this within a browser is to use the built-in `DOMRect` class, consider:\n\n```ts\nimport { ennetree, type Bounds } from '@4bitlabs/ennetree';\n\nconst rectBounds = (r: DOMRect) => [r.left, r.top, r.right, r.bottom];\n\nconst space = ennetree<DOMRect>([0, 0, 1000, 1000], rectBounds);\nspace.insert(new DOMRect(25, 25, 50, 50));\n\nconst matches = space.search([20, 20, 80, 80]);\n```\n\nOr with custom objects:\n\n```ts\nimport { ennetree, type Bounds } from '@4bitlabs/ennetree';\n\nclass Shape {\n  bounds(): Bounds {\n    /* TODO implement return bounds */\n    return [0, 0, 0, 0];\n  }\n}\n\nconst space = ennetree<Shape>([0, 0, 1000, 1000], Shape.prototype.bounds);\nspace.insert(new Shape());\nconst matches = space.search([20, 20, 80, 80]);\n```\n\n## Options\n\n`ennetree()` accept a third argument of `options`:\n\n| option        | Description                                                  | Defaults |\n| ------------- | :----------------------------------------------------------- | -------- |\n| `maxDepth`    | The maximum depth/subdivisions that the graph will divide.   | `4`      |\n| `maxChildren` | The maximum number of objects in a node before it will split | `10`     |\n\n```ts\nconst space = ennetree<DOMRect>([0, 0, 1000, 1000], rectBounds, {\n  maxDepth: 5,\n  maxChildren: 50,\n});\n```\n\n## License\n\n[ISC](https://github.com/32bitkid/4bitlabs.spatial/blob/HEAD/libs/ennetree/LICENSE.txt)\n\n[quadtree]: https://en.wikipedia.org/wiki/Quadtree\n[npm]: https://www.npmjs.com/package/@4bitlabs/ennetree\n[version]: https://img.shields.io/npm/v/%404bitlabs%2Fennetree\n[license]: https://img.shields.io/npm/l/%404bitlabs%2Fennetree\n[dl]: https://img.shields.io/npm/dy/%404bitlabs%2Fennetree\n[ennetree-split-img]: https://github.com/32bitkid/4bitlabs.spatial/blob/main/ennetree-split.png?raw=true\n","readmeFilename":"README.md"}