{"_id":"@4bitlabs/quadtree","_rev":"8-a5b0bffaef03157a42eba3ba295be431","name":"@4bitlabs/quadtree","dist-tags":{"latest":"2.0.0"},"versions":{"1.0.0":{"name":"@4bitlabs/quadtree","version":"1.0.0","keywords":["quadtree","spatial","spatial-query","2d"],"author":{"name":"J. Holmes","email":"32bitkid@gmail.com"},"license":"ISC","_id":"@4bitlabs/quadtree@1.0.0","maintainers":[{"name":"32bitkid","email":"32bitkid@gmail.com"}],"dist":{"shasum":"5d2877af448a96b3802dbc5a399099d4e7daab5c","tarball":"https://registry.npmjs.org/@4bitlabs/quadtree/-/quadtree-1.0.0.tgz","fileCount":27,"integrity":"sha512-FVddijUyvNm7Bwxy+DUJgLEE/c3KfYRa+taxCS2Q735nUeqnPMSPcsfnXlDbrl2ItpafS/MIZMpsuaxcTedfLA==","signatures":[{"sig":"MEUCIALg/TsXVYaPa8jU453jB8jHHAXJaUmc1zCzWARcKrIQAiEAjre3v12RqOfmtlZgZ3BNoyKEF3OVltIcBWcjSrp6kIE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24154},"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 quadtree (2×2 spatial division) for fast, efficient spatial queries","directories":{},"_nodeVersion":"18.18.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/quadtree_1.0.0_1720914489151_0.9301961634783518","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@4bitlabs/quadtree","version":"1.0.1","keywords":["quadtree","spatial","spatial-query","2d"],"author":"J. Holmes <32bitkid@gmail.com>","license":"ISC","_id":"@4bitlabs/quadtree@1.0.1","maintainers":[{"name":"32bitkid","email":"32bitkid@gmail.com"}],"dist":{"shasum":"2383532fe6f23a908537c7c6df9a2892f73791b8","tarball":"https://registry.npmjs.org/@4bitlabs/quadtree/-/quadtree-1.0.1.tgz","fileCount":27,"integrity":"sha512-eB61YMkpzKhBdVJs0C8kTQtAYOwh8dlf/clekXU+ni/oYLGtr0ISYRwBwMtN52GrK1Mwj6jYe2EZeE+08b3F4w==","signatures":[{"sig":"MEUCIEbcqBWUoueMS7P4Gh1dvO0pATefTC57eiuBQaeUehE5AiEA/AbWyWb+NVlrCE6+k9uZ2iT1+uVWFayh9lvPJna5bYo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22105},"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 quadtree (2×2 spatial division) for fast, efficient spatial queries","directories":{},"_nodeVersion":"18.18.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/quadtree_1.0.1_1720918379043_0.5001248157264846","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@4bitlabs/quadtree","version":"1.0.2","keywords":["quadtree","spatial","spatial-query","2d"],"author":"J. Holmes <32bitkid@gmail.com>","license":"ISC","_id":"@4bitlabs/quadtree@1.0.2","maintainers":[{"name":"32bitkid","email":"32bitkid@gmail.com"}],"dist":{"shasum":"bb85ab33c0c6410ba670ea6e4d5d7dfed1951186","tarball":"https://registry.npmjs.org/@4bitlabs/quadtree/-/quadtree-1.0.2.tgz","fileCount":27,"integrity":"sha512-lQV6ewAjCCWtSxvn/cWXlf/MOnXBOhbXwj548fiXOwwnjY0RRlsT73T0/si21D9f5vdfqbq9fSZ7JrTQLLcuig==","signatures":[{"sig":"MEUCIQCVdEAq1e8TPqAzAopHhtRoaFxgf0QVutZ6DnAXd/O4XwIgMdFzqO5NIa9ZgqyRqHtdMw4DJYu/THPbmLKC1QCA98k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22136},"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 quadtree (2×2 spatial division) for fast, efficient spatial queries","directories":{},"_nodeVersion":"18.18.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/quadtree_1.0.2_1720996071609_0.42776576762979834","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@4bitlabs/quadtree","version":"1.0.3","keywords":["quadtree","spatial","spatial-query","2d"],"author":"J. Holmes <32bitkid@gmail.com>","license":"ISC","_id":"@4bitlabs/quadtree@1.0.3","maintainers":[{"name":"32bitkid","email":"32bitkid@gmail.com"}],"dist":{"shasum":"e9e0f99e3fd1186d08fa53ff430994f9b9219dae","tarball":"https://registry.npmjs.org/@4bitlabs/quadtree/-/quadtree-1.0.3.tgz","fileCount":35,"integrity":"sha512-M9bvedfvtLnfgViTYIMyClcxBuBnzAm2zFg6RFEVYR1YU8vq+CGhS19jvuLrxnKHQiQswv5ddn7ALTjJsNlvdA==","signatures":[{"sig":"MEUCIBsvq752i255hwPdOdYJC9oKw/tA02c4OH6Q0rh7DiHJAiEAlG1DD5aQPB+f+vUjtTCaRhy4vQ06LJooa/EHJB6w5uE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50101},"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 quadtree (2×2 spatial division) for fast, efficient spatial queries","directories":{},"_nodeVersion":"18.18.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/quadtree_1.0.3_1721008069191_0.25374179091787474","host":"s3://npm-registry-packages"}},"1.0.4":{"name":"@4bitlabs/quadtree","version":"1.0.4","keywords":["quadtree","spatial","spatial-query","2d"],"author":"J. Holmes <32bitkid@gmail.com>","license":"ISC","_id":"@4bitlabs/quadtree@1.0.4","maintainers":[{"name":"32bitkid","email":"32bitkid@gmail.com"}],"homepage":"https://github.com/32bitkid/4bitlabs.spatial/tree/main/libs/quadtree","bugs":"https://github.com/32bitkid/4bitlabs.spatial/issues","dist":{"shasum":"6f86b8d1e321ab0326dbbcf61b8d4372e28aa4bd","tarball":"https://registry.npmjs.org/@4bitlabs/quadtree/-/quadtree-1.0.4.tgz","fileCount":43,"integrity":"sha512-wxl5vbK8JVSSyMnQeAnoyf4LVR9nu1/+vMIPS0dFVmJqsPnHULZ0iohR5ITi4N4YUUSH7866feiNsAvU6+LZeA==","signatures":[{"sig":"MEUCIDWzxME5ji6jgurMPv0MGfzRfTJMwPsvCHRxPDFqd8FtAiEA9DzppYo266ouS3H6V6ugyVtE6O3nND/6MEnr8DM2U5A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":51095},"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 quadtree (2×2 spatial division) for fast, efficient spatial queries","directories":{},"_nodeVersion":"18.18.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/quadtree_1.0.4_1721050940977_0.5659633501235211","host":"s3://npm-registry-packages"}},"1.0.5":{"name":"@4bitlabs/quadtree","version":"1.0.5","keywords":["quadtree","spatial","spatial-query","2d"],"author":"J. Holmes <32bitkid@gmail.com>","license":"ISC","_id":"@4bitlabs/quadtree@1.0.5","maintainers":[{"name":"32bitkid","email":"32bitkid@gmail.com"}],"homepage":"https://github.com/32bitkid/4bitlabs.spatial/tree/main/libs/quadtree","bugs":"https://github.com/32bitkid/4bitlabs.spatial/issues","dist":{"shasum":"b83796194d8992da865d4c242e1699a9382b866b","tarball":"https://registry.npmjs.org/@4bitlabs/quadtree/-/quadtree-1.0.5.tgz","fileCount":23,"integrity":"sha512-SnT+ryCpTYeDqWx6eDQPKZEX7SDPZHqfuHZJHNbW46KEZ6B8I7n9/NooNicSFZz9mrKMA35DKwZUGCOFxG5Y/A==","signatures":[{"sig":"MEUCIHA+6n4/QIyUY03AyE+D+wRX9Z+t9HNfL5G7PJR2vFz+AiEA05QkX0bYJ3UCslHERZrIKkDmTwIOlCvcsMeZ3z+XOhQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21494},"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 quadtree (2×2 spatial division) for fast, efficient spatial queries","directories":{},"_nodeVersion":"20.15.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/quadtree_1.0.5_1721790585944_0.8253951984712036","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@4bitlabs/quadtree","version":"1.1.0","keywords":["quadtree","spatial","spatial-query","2d"],"author":"J. Holmes <32bitkid@gmail.com>","license":"ISC","_id":"@4bitlabs/quadtree@1.1.0","maintainers":[{"name":"32bitkid","email":"32bitkid@gmail.com"}],"homepage":"https://32bitkid.github.io/4bitlabs.spatial/modules/_4bitlabs_quadtree.html","bugs":"https://github.com/32bitkid/4bitlabs.spatial/issues","dist":{"shasum":"2e8e1ce9d104174d8d1e5388d94726cd3a4c246f","tarball":"https://registry.npmjs.org/@4bitlabs/quadtree/-/quadtree-1.1.0.tgz","fileCount":27,"integrity":"sha512-doCDUo7oXbCuEvli6+u70NGFbOrJ9YEuG3SS9c9q1wnrEuPtZsod4gbMdve+ahRBKyM2Qs9P0pXlC7xoJ3RnzA==","signatures":[{"sig":"MEUCIApWl/jOXGDpZum4HuhUxtF/5WZZSFJvDM9SUuFF5I2VAiEA53e/QC7P2mVhHEkQ41/4oNywFPCCXDQiqbwllLRNGpQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":28522},"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 quadtree (2×2 spatial division) for fast, efficient spatial queries","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/quadtree_1.1.0_1722022002488_0.11709218317056935","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@4bitlabs/quadtree","version":"2.0.0","description":"A simple 2D quadtree (2×2 spatial division) for fast, efficient spatial queries","keywords":["quadtree","spatial","spatial-query","2d"],"homepage":"https://32bitkid.github.io/4bitlabs.spatial/modules/_4bitlabs_quadtree.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","exports":"./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/quadtree@2.0.0","_nodeVersion":"22.18.0","_npmVersion":"11.18.0","dist":{"integrity":"sha512-+TNRQ70nrOpWZSge6EbAHXY1EHlGtK4yC4djgpUoISCy5DR1FEEreI6otS4UozYqRt5dD7mKipLsdB2aje7Jkg==","shasum":"3a222b706365444331b344268d21bb8ce0b8ffc4","tarball":"https://registry.npmjs.org/@4bitlabs/quadtree/-/quadtree-2.0.0.tgz","fileCount":19,"unpackedSize":24433,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCgiNbqThQigqutTvgLEkWBwXtuqsEIwI8oaVm2lmYE2AIhAMwb2wZ+q683obCpzjFpYZ0zFKfcA3dJq8D7/g4LyzrW"}]},"_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/quadtree_2.0.0_1784402835486_0.5169175582215844"},"_hasShrinkwrap":false}},"time":{"created":"2024-07-13T23:48:09.059Z","modified":"2026-07-18T19:27:15.779Z","1.0.0":"2024-07-13T23:48:09.348Z","1.0.1":"2024-07-14T00:52:59.200Z","1.0.2":"2024-07-14T22:27:51.764Z","1.0.3":"2024-07-15T01:47:49.370Z","1.0.4":"2024-07-15T13:42:21.121Z","1.0.5":"2024-07-24T03:09:46.098Z","1.1.0":"2024-07-26T19:26:42.703Z","2.0.0":"2026-07-18T19:27:15.626Z"},"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_quadtree.html","keywords":["quadtree","spatial","spatial-query","2d"],"repository":{"type":"git","url":"git+https://github.com/32bitkid/4bitlabs.spatial.git"},"description":"A simple 2D quadtree (2×2 spatial division) for fast, efficient spatial queries","maintainers":[{"name":"32bitkid","email":"32bitkid@gmail.com"}],"readme":"# `@4bitlabs/quadtree` [![License][license]][npm] [![NPM Version][version]][npm] [![NPM Downloads][dl]][npm]\n\nA simple 2D quadtree (2×2 spatial division) for fast, efficient spatial queries.\n\n![Quadtree split illustration][quadtree-split-img]\n\n## Installing\n\n```shell\n$ npm install --save @4bitlabs/quadtree\n```\n\n```shell\n$ yarn add @4bitlabs/quadtree\n```\n\n```shell\n$ pnpm add @4bitlabs/quadtree\n```\n\n## Documentation\n\nFull documentation for the library can be found [here](https://32bitkid.github.io/4bitlabs.spatial/modules/_4bitlabs_quadtree.html)\n\n## Usage\n\nAn _easy_ way to use this within a browser is to use the built-in `DOMRect` class, consider:\n\n```ts\nimport { quadtree, type Bounds } from '@4bitlabs/quadtree';\n\nconst rectBounds = (r: DOMRect) => [r.left, r.top, r.right, r.bottom];\n\nconst space = quadtree<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 { quadtree, type Bounds } from '@4bitlabs/quadtree';\n\nclass Shape {\n  bounds(): Bounds {\n    /* TODO implement return bounds */\n    return [0, 0, 0, 0];\n  }\n}\n\nconst space = quadtree<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`quadtree()` accept a third argument of `options`:\n\n| option        | Description                                                  | Defaults |\n| ------------- | :----------------------------------------------------------- | -------- |\n| `maxDepth`    | The maximum depth/subdivisions that the graph will divide.   | `7`      |\n| `maxChildren` | The maximum number of objects in a node before it will split | `10`     |\n\n```ts\nconst space = quadtree<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/quadtree/LICENSE.txt)\n\n[quadtree]: https://en.wikipedia.org/wiki/Quadtree\n[npm]: https://www.npmjs.com/package/@4bitlabs/quadtree\n[version]: https://img.shields.io/npm/v/%404bitlabs%2Fquadtree\n[license]: https://img.shields.io/npm/l/%404bitlabs%2Fquadtree\n[dl]: https://img.shields.io/npm/dy/%404bitlabs%2Fquadtree\n[quadtree-split-img]: https://github.com/32bitkid/4bitlabs.spatial/blob/main/quadtree-split.png?raw=true\n","readmeFilename":"README.md"}