{"_id":"@acalcutt/maplibre-contour","_rev":"7-c85ab9a36e0e966ee0db0839e692dd13","name":"@acalcutt/maplibre-contour","dist-tags":{"latest":"0.1.7"},"versions":{"0.1.1":{"name":"@acalcutt/maplibre-contour","version":"0.1.1","author":{"name":"Michael Barry"},"license":"BSD-3-Clause","_id":"@acalcutt/maplibre-contour@0.1.1","maintainers":[{"name":"acalcutt","email":"acalcutt@techidiots.net"}],"homepage":"https://github.com/onthegomap/maplibre-contour","bugs":{"url":"https://github.com/onthegomap/maplibre-contour/issues"},"dist":{"shasum":"26576d4359d847b5d9d4c3ac5058cc7e8b4154f7","tarball":"https://registry.npmjs.org/@acalcutt/maplibre-contour/-/maplibre-contour-0.1.1.tgz","fileCount":60,"integrity":"sha512-CZea4xIw7H2VYV4iaX27RLW7HEMvao0yJ7xecRxzOJzz+bRKxPivohP3vh5Ho6nkVlST44zjBBZQ6i7eSH0EdA==","signatures":[{"sig":"MEUCIB3lg+Kr2CL8CivHt5rFbJEGUQ7INuAQunJB/pVIU31iAiEA3Rxer721ji3wZKBAs+vMFQ9TlTMBNjwGpx1vL5VjFNY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":513443},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","unpkg":"dist/index.min.js","module":"dist/index.mjs","exports":{"types":"./dist/index.d.ts","module":"./dist/index.mjs","browser":"./dist/index.min.js","default":"./dist/index.mjs","require":"./dist/index.cjs"},"gitHead":"81aeba9eb3bdb324806735ea725af5c1f07d4791","scripts":{"jest":"jest","lint":"eslint src","test":"run-p typecheck lint jest checkformat","bench":"npm run build && node benchmark.js","build":"rm -rf dist && rollup -c && npm run generate-types && tsc --project tsconfig.dist.json","format":"prettier src --write","typecheck":"tsc --noEmit","jest:watch":"jest --watch","test-build":"cd test-project && rm -rf node_modules && rm -rf package-lock.json && npm i && npm test","checkformat":"prettier src --check","test-build-v3":"cd test-project-maplibre-3 && rm -rf node_modules && rm -rf package-lock.json && npm i && npm test","generate-types":"tsc --emitDeclarationOnly --declaration --outDir dist && rm -rf dist/*{.t,-j}est.d.ts","prepublishOnly":"npm run test && npm run build"},"_npmUser":{"name":"acalcutt","email":"acalcutt@techidiots.net"},"repository":{"url":"git+https://github.com/onthegomap/maplibre-contour.git","type":"git"},"_npmVersion":"10.2.3","description":"Render contour lines from raster elevation tiles in maplibre-gl-js","directories":{},"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"devDependencies":{"pbf":"4.0.1","jest":"29.7.0","pngjs":"7.0.0","canvas":"2.11.2","eslint":"9.18.0","lodash":"4.17.21","rollup":"4.39.0","ts-jest":"29.2.5","prettier":"3.5.3","benchmark":"2.1.4","@eslint/js":"9.18.0","@types/pbf":"3.0.5","typescript":"5.7.3","@types/jest":"29.5.14","@types/node":"22.10.7","npm-run-all":"4.1.5","@types/pngjs":"6.0.5","whatwg-fetch":"3.6.20","@types/lodash":"4.17.20","@eslint/eslintrc":"3.2.0","@types/benchmark":"2.1.5","typescript-eslint":"8.42.0","@mapbox/vector-tile":"2.0.3","@rollup/plugin-terser":"0.4.4","eslint-config-prettier":"10.0.1","jest-environment-jsdom":"29.7.0","@rollup/plugin-commonjs":"28.0.2","@rollup/plugin-typescript":"12.1.2","@types/mapbox__vector-tile":"1.3.4","@rollup/plugin-node-resolve":"16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/maplibre-contour_0.1.1_1761082498549_0.47486997203884496","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@acalcutt/maplibre-contour","version":"0.1.2","author":{"name":"Michael Barry"},"license":"BSD-3-Clause","_id":"@acalcutt/maplibre-contour@0.1.2","maintainers":[{"name":"acalcutt","email":"acalcutt@techidiots.net"}],"homepage":"https://github.com/onthegomap/maplibre-contour","bugs":{"url":"https://github.com/onthegomap/maplibre-contour/issues"},"dist":{"shasum":"33bc4edb5027652ce124435ed93aac1ba7eeb2c0","tarball":"https://registry.npmjs.org/@acalcutt/maplibre-contour/-/maplibre-contour-0.1.2.tgz","fileCount":60,"integrity":"sha512-ddyhPW3cMTD8xp/KAnn6KS2dLXDrj+ljTzIjc4Yv+GmW7A+hZhAmKGswkNfZcHSEVF3xkkglLIN6rEJIOFXIVQ==","signatures":[{"sig":"MEQCIFkmGonJDUxIm5Pfy5Wz0G3o4OmbynwsBfnVTLP5+AO9AiBuf3xxE+UQrE4Ms/Azp4d91AlFH3KXerMYFSJ4bm6VPg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":534292},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","unpkg":"dist/index.min.js","module":"dist/index.mjs","exports":{"types":"./dist/index.d.ts","module":"./dist/index.mjs","browser":"./dist/index.min.js","default":"./dist/index.mjs","require":"./dist/index.cjs"},"gitHead":"a661e64fd2a3b7354a6472c86c39ce9710ea9385","scripts":{"jest":"jest","lint":"eslint src","test":"run-p typecheck lint jest checkformat","bench":"npm run build && node benchmark.js","build":"rm -rf dist && rollup -c && npm run generate-types && tsc --project tsconfig.dist.json","format":"prettier src --write","typecheck":"tsc --noEmit","jest:watch":"jest --watch","test-build":"cd test-project && rm -rf node_modules && rm -rf package-lock.json && npm i && npm test","checkformat":"prettier src --check","test-build-v3":"cd test-project-maplibre-3 && rm -rf node_modules && rm -rf package-lock.json && npm i && npm test","generate-types":"tsc --emitDeclarationOnly --declaration --outDir dist && rm -rf dist/*{.t,-j}est.d.ts","prepublishOnly":"npm run test && npm run build"},"_npmUser":{"name":"acalcutt","email":"acalcutt@techidiots.net"},"repository":{"url":"git+https://github.com/onthegomap/maplibre-contour.git","type":"git"},"_npmVersion":"10.2.3","description":"Render contour lines from raster elevation tiles in maplibre-gl-js","directories":{},"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"devDependencies":{"pbf":"4.0.1","jest":"29.7.0","pngjs":"7.0.0","canvas":"2.11.2","eslint":"9.18.0","lodash":"4.17.21","rollup":"4.39.0","ts-jest":"29.2.5","prettier":"3.5.3","benchmark":"2.1.4","@eslint/js":"9.18.0","@types/pbf":"3.0.5","typescript":"5.7.3","@types/jest":"29.5.14","@types/node":"22.10.7","npm-run-all":"4.1.5","@types/pngjs":"6.0.5","whatwg-fetch":"3.6.20","@types/lodash":"4.17.20","@eslint/eslintrc":"3.2.0","@types/benchmark":"2.1.5","typescript-eslint":"8.42.0","@mapbox/vector-tile":"2.0.3","@rollup/plugin-terser":"0.4.4","eslint-config-prettier":"10.0.1","jest-environment-jsdom":"29.7.0","@rollup/plugin-commonjs":"28.0.2","@rollup/plugin-typescript":"12.1.2","@types/mapbox__vector-tile":"1.3.4","@rollup/plugin-node-resolve":"16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/maplibre-contour_0.1.2_1761087748297_0.8212871805034796","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@acalcutt/maplibre-contour","version":"0.1.3","author":{"name":"Michael Barry"},"license":"BSD-3-Clause","_id":"@acalcutt/maplibre-contour@0.1.3","maintainers":[{"name":"acalcutt","email":"acalcutt@techidiots.net"}],"homepage":"https://github.com/onthegomap/maplibre-contour","bugs":{"url":"https://github.com/onthegomap/maplibre-contour/issues"},"dist":{"shasum":"3dcd18e46e2eb42bb3e2f3bdad59e3a9a9267e4f","tarball":"https://registry.npmjs.org/@acalcutt/maplibre-contour/-/maplibre-contour-0.1.3.tgz","fileCount":60,"integrity":"sha512-vJmHbcNH9spMxg2A3mkauo63IBONICWHUZdN9/8c5P2e3stLjEELg8YtNVOrwQqZo6j6Eru0ulZQYR9YTLRiSg==","signatures":[{"sig":"MEUCIFRy3jvqfJedXBKwDSb29YqFuL3MVbkljasPHe2gWBF9AiEA6ogdlnT954EjByuizod+ItkoDSBbjbUmXV+p0VVM3VQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":553950},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","unpkg":"dist/index.min.js","module":"dist/index.mjs","exports":{"types":"./dist/index.d.ts","module":"./dist/index.mjs","browser":"./dist/index.min.js","default":"./dist/index.mjs","require":"./dist/index.cjs"},"gitHead":"35cebff62c1dcfc6d77e8657fc1d7b80dc6f8016","scripts":{"jest":"jest","lint":"eslint src","test":"run-p typecheck lint jest checkformat","bench":"npm run build && node benchmark.js","build":"rm -rf dist && rollup -c && npm run generate-types && tsc --project tsconfig.dist.json","format":"prettier src --write","typecheck":"tsc --noEmit","jest:watch":"jest --watch","test-build":"cd test-project && rm -rf node_modules && rm -rf package-lock.json && npm i && npm test","checkformat":"prettier src --check","test-build-v3":"cd test-project-maplibre-3 && rm -rf node_modules && rm -rf package-lock.json && npm i && npm test","generate-types":"tsc --emitDeclarationOnly --declaration --outDir dist && rm -rf dist/*{.t,-j}est.d.ts","prepublishOnly":"npm run test && npm run build"},"_npmUser":{"name":"acalcutt","email":"acalcutt@techidiots.net"},"repository":{"url":"git+https://github.com/onthegomap/maplibre-contour.git","type":"git"},"_npmVersion":"10.2.3","description":"Render contour lines from raster elevation tiles in maplibre-gl-js","directories":{},"_nodeVersion":"20.10.0","dependencies":{"tslib":"^2.8.1"},"_hasShrinkwrap":false,"devDependencies":{"pbf":"4.0.1","jest":"29.7.0","pngjs":"7.0.0","canvas":"2.11.2","eslint":"9.18.0","lodash":"4.17.21","rollup":"4.39.0","ts-jest":"29.2.5","prettier":"3.5.3","benchmark":"2.1.4","@eslint/js":"9.18.0","@types/pbf":"3.0.5","typescript":"5.7.3","@types/jest":"29.5.14","@types/node":"22.10.7","npm-run-all":"4.1.5","@types/pngjs":"6.0.5","whatwg-fetch":"3.6.20","@types/lodash":"4.17.20","@eslint/eslintrc":"3.2.0","@types/benchmark":"2.1.5","typescript-eslint":"8.42.0","@mapbox/vector-tile":"2.0.3","@rollup/plugin-terser":"0.4.4","eslint-config-prettier":"10.0.1","jest-environment-jsdom":"29.7.0","@rollup/plugin-commonjs":"28.0.2","@rollup/plugin-typescript":"12.1.2","@types/mapbox__vector-tile":"1.3.4","@rollup/plugin-node-resolve":"16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/maplibre-contour_0.1.3_1761104828068_0.16341718869871458","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@acalcutt/maplibre-contour","version":"0.1.4","author":{"name":"Michael Barry"},"license":"BSD-3-Clause","_id":"@acalcutt/maplibre-contour@0.1.4","maintainers":[{"name":"acalcutt","email":"acalcutt@techidiots.net"}],"homepage":"https://github.com/onthegomap/maplibre-contour","bugs":{"url":"https://github.com/onthegomap/maplibre-contour/issues"},"dist":{"shasum":"a1a712a4e7b023b4219662fd13ccd3b3d0c322c7","tarball":"https://registry.npmjs.org/@acalcutt/maplibre-contour/-/maplibre-contour-0.1.4.tgz","fileCount":60,"integrity":"sha512-fLwZHvugvsYqbiwwz88sU83wHHYEZ2dEyDvzlxV9GOIHO/ZGQyyPSWmmSJe045YBrvdaY/qpj+6FfuZyOirQ1Q==","signatures":[{"sig":"MEUCIQDPmADzAS5oDXIsxHQWLDA7YpevIfXkwcr8ByOyDbeHpAIga7PGgWYD0144OunLx7gyXgrmL2aRgnOuqFPqu6tl1hw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":552265},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","unpkg":"dist/index.min.js","module":"dist/index.mjs","exports":{"types":"./dist/index.d.ts","module":"./dist/index.mjs","browser":"./dist/index.min.js","default":"./dist/index.mjs","require":"./dist/index.cjs"},"gitHead":"2dc8cc940cd7262489ffc4c35cd3d39d0dd01923","scripts":{"jest":"jest","lint":"eslint src","test":"run-p typecheck lint jest checkformat","bench":"npm run build && node benchmark.js","build":"rm -rf dist && rollup -c && npm run generate-types && tsc --project tsconfig.dist.json","format":"prettier src --write","typecheck":"tsc --noEmit","jest:watch":"jest --watch","test-build":"cd test-project && rm -rf node_modules && rm -rf package-lock.json && npm i && npm test","checkformat":"prettier src --check","test-build-v3":"cd test-project-maplibre-3 && rm -rf node_modules && rm -rf package-lock.json && npm i && npm test","generate-types":"tsc --emitDeclarationOnly --declaration --outDir dist && rm -rf dist/*{.t,-j}est.d.ts","prepublishOnly":"npm run test && npm run build"},"_npmUser":{"name":"acalcutt","email":"acalcutt@techidiots.net"},"repository":{"url":"git+https://github.com/onthegomap/maplibre-contour.git","type":"git"},"_npmVersion":"10.2.3","description":"Render contour lines from raster elevation tiles in maplibre-gl-js","directories":{},"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"devDependencies":{"pbf":"4.0.1","jest":"29.7.0","pngjs":"7.0.0","tslib":"^2.8.1","canvas":"2.11.2","eslint":"9.18.0","lodash":"4.17.21","rollup":"4.39.0","ts-jest":"29.2.5","prettier":"3.5.3","benchmark":"2.1.4","@eslint/js":"9.18.0","@types/pbf":"3.0.5","typescript":"5.7.3","@types/jest":"29.5.14","@types/node":"22.10.7","npm-run-all":"4.1.5","@types/pngjs":"6.0.5","whatwg-fetch":"3.6.20","@types/lodash":"4.17.20","@eslint/eslintrc":"3.2.0","@types/benchmark":"2.1.5","typescript-eslint":"8.42.0","@mapbox/vector-tile":"2.0.3","@rollup/plugin-terser":"0.4.4","eslint-config-prettier":"10.0.1","jest-environment-jsdom":"29.7.0","@rollup/plugin-commonjs":"28.0.2","@rollup/plugin-typescript":"12.1.2","@types/mapbox__vector-tile":"1.3.4","@rollup/plugin-node-resolve":"16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/maplibre-contour_0.1.4_1761107090419_0.5548521927458854","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@acalcutt/maplibre-contour","version":"0.1.5","author":{"name":"Michael Barry"},"license":"BSD-3-Clause","_id":"@acalcutt/maplibre-contour@0.1.5","maintainers":[{"name":"acalcutt","email":"acalcutt@techidiots.net"}],"homepage":"https://github.com/onthegomap/maplibre-contour","bugs":{"url":"https://github.com/onthegomap/maplibre-contour/issues"},"dist":{"shasum":"ccd463b089cc2b7952f4cd32a1939e0c2d534d83","tarball":"https://registry.npmjs.org/@acalcutt/maplibre-contour/-/maplibre-contour-0.1.5.tgz","fileCount":60,"integrity":"sha512-i02+nD4uk3R6XMyHbIl9fcruDZUadPzOdZrC75hUHnnFwAGPOwi2B9xj6yu97VvJ5izAHczXWGqi07fLw+/HsA==","signatures":[{"sig":"MEYCIQCHFmfRpo+ZlaRqmsnQ8TWEF6DvEYG5ym1dSc60gJU6ugIhANdOo8XHzJd6O4AP8Lk5qhb1BD5TMxfBjGCn0otGLCYR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":554041},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","unpkg":"dist/index.min.js","module":"dist/index.mjs","exports":{"types":"./dist/index.d.ts","module":"./dist/index.mjs","browser":"./dist/index.min.js","default":"./dist/index.mjs","require":"./dist/index.cjs"},"gitHead":"8f841ef8fcee03008b029ce82e94295fa62ee5b1","scripts":{"jest":"jest","lint":"eslint src","test":"run-p typecheck lint jest checkformat","bench":"npm run build && node benchmark.js","build":"rm -rf dist && rollup -c && npm run generate-types && tsc --project tsconfig.dist.json","format":"prettier src --write","typecheck":"tsc --noEmit","jest:watch":"jest --watch","test-build":"cd test-project && rm -rf node_modules && rm -rf package-lock.json && npm i && npm test","checkformat":"prettier src --check","test-build-v3":"cd test-project-maplibre-3 && rm -rf node_modules && rm -rf package-lock.json && npm i && npm test","generate-types":"tsc --emitDeclarationOnly --declaration --outDir dist && rm -rf dist/*{.t,-j}est.d.ts","prepublishOnly":"npm run test && npm run build"},"_npmUser":{"name":"acalcutt","email":"acalcutt@techidiots.net"},"repository":{"url":"git+https://github.com/onthegomap/maplibre-contour.git","type":"git"},"_npmVersion":"10.2.3","description":"Render contour lines from raster elevation tiles in maplibre-gl-js","directories":{},"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"devDependencies":{"pbf":"4.0.1","jest":"29.7.0","pngjs":"7.0.0","canvas":"2.11.2","eslint":"9.18.0","lodash":"4.17.21","rollup":"4.39.0","ts-jest":"29.2.5","prettier":"3.5.3","benchmark":"2.1.4","@eslint/js":"9.38.0","@types/pbf":"3.0.5","typescript":"5.7.3","@types/jest":"29.5.14","@types/node":"22.10.7","npm-run-all":"4.1.5","@types/pngjs":"6.0.5","whatwg-fetch":"3.6.20","@types/lodash":"4.17.20","@eslint/eslintrc":"3.2.0","@types/benchmark":"2.1.5","typescript-eslint":"8.42.0","@mapbox/vector-tile":"2.0.3","@rollup/plugin-terser":"0.4.4","eslint-config-prettier":"10.0.1","jest-environment-jsdom":"29.7.0","@rollup/plugin-commonjs":"28.0.2","@rollup/plugin-typescript":"12.1.2","@types/mapbox__vector-tile":"1.3.4","@rollup/plugin-node-resolve":"16.0.3"},"_npmOperationalInternal":{"tmp":"tmp/maplibre-contour_0.1.5_1761145344921_0.8002508495895191","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@acalcutt/maplibre-contour","version":"0.1.6","author":{"name":"Michael Barry"},"license":"BSD-3-Clause","_id":"@acalcutt/maplibre-contour@0.1.6","maintainers":[{"name":"acalcutt","email":"acalcutt@techidiots.net"}],"homepage":"https://github.com/onthegomap/maplibre-contour","bugs":{"url":"https://github.com/onthegomap/maplibre-contour/issues"},"dist":{"shasum":"c11cd04833f32e6ac25bfb3b20436e5f1d34a31c","tarball":"https://registry.npmjs.org/@acalcutt/maplibre-contour/-/maplibre-contour-0.1.6.tgz","fileCount":60,"integrity":"sha512-X169sieB/j91kXulZTN+qEwV+NIdA8a8UZMIjm2VwBKrV0IsU5LdysKuyD3pJmTyJ24K2Zo/smp05VacvbJDnA==","signatures":[{"sig":"MEUCIEDTBgu96vUEXqXRUEZigqiDry880fcB5YKEMSRz3MYOAiEAyk1rlNQPxV8y0vsBxAtl5rfRHHRFTIj5zNm1BKPLlfo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":572181},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","unpkg":"dist/index.min.js","module":"dist/index.mjs","exports":{"types":"./dist/index.d.ts","module":"./dist/index.mjs","browser":"./dist/index.min.js","default":"./dist/index.mjs","require":"./dist/index.cjs"},"gitHead":"3e90c60e407f1fcc81a75f4cc10cb65cb265be84","scripts":{"jest":"jest","lint":"eslint src","test":"run-p typecheck lint jest checkformat","bench":"npm run build && node benchmark.js","build":"rm -rf dist && rollup -c && npm run generate-types && tsc --project tsconfig.dist.json","format":"prettier src --write","typecheck":"tsc --noEmit","jest:watch":"jest --watch","test-build":"cd test-project && rm -rf node_modules && rm -rf package-lock.json && npm i && npm test","checkformat":"prettier src --check","test-build-v3":"cd test-project-maplibre-3 && rm -rf node_modules && rm -rf package-lock.json && npm i && npm test","generate-types":"tsc --emitDeclarationOnly --declaration --outDir dist && rm -rf dist/*{.t,-j}est.d.ts","prepublishOnly":"npm run test && npm run build"},"_npmUser":{"name":"acalcutt","email":"acalcutt@techidiots.net"},"repository":{"url":"git+https://github.com/onthegomap/maplibre-contour.git","type":"git"},"_npmVersion":"10.2.3","description":"Render contour lines from raster elevation tiles in maplibre-gl-js","directories":{},"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"devDependencies":{"pbf":"4.0.1","jest":"29.7.0","pngjs":"7.0.0","tslib":"^2.8.1","canvas":"2.11.2","eslint":"9.18.0","lodash":"4.17.21","rollup":"4.39.0","ts-jest":"29.2.5","prettier":"3.5.3","benchmark":"2.1.4","@eslint/js":"9.38.0","@types/pbf":"3.0.5","typescript":"5.7.3","@types/jest":"29.5.14","@types/node":"22.10.7","npm-run-all":"4.1.5","@types/pngjs":"6.0.5","whatwg-fetch":"3.6.20","@types/lodash":"4.17.20","@eslint/eslintrc":"3.2.0","@types/benchmark":"2.1.5","typescript-eslint":"8.42.0","@mapbox/vector-tile":"2.0.3","@rollup/plugin-terser":"0.4.4","eslint-config-prettier":"10.0.1","jest-environment-jsdom":"29.7.0","@rollup/plugin-commonjs":"28.0.2","@rollup/plugin-typescript":"12.1.2","@types/mapbox__vector-tile":"1.3.4","@rollup/plugin-node-resolve":"16.0.3"},"_npmOperationalInternal":{"tmp":"tmp/maplibre-contour_0.1.6_1761186388090_0.09040421670798171","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@acalcutt/maplibre-contour","version":"0.1.7","description":"Render contour lines from raster elevation tiles in maplibre-gl-js","unpkg":"dist/index.min.js","main":"dist/index.cjs","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{"default":"./dist/index.mjs","module":"./dist/index.mjs","require":"./dist/index.cjs","types":"./dist/index.d.ts","browser":"./dist/index.min.js"},"scripts":{"bench":"npm run build && node benchmark.js","build":"rm -rf dist && rollup -c && npm run generate-types && tsc --project tsconfig.dist.json","test-build-v3":"cd test-project-maplibre-3 && rm -rf node_modules && rm -rf package-lock.json && npm i && npm test","test-build":"cd test-project && rm -rf node_modules && rm -rf package-lock.json && npm i && npm test","generate-types":"tsc --emitDeclarationOnly --declaration --outDir dist && rm -rf dist/*{.t,-j}est.d.ts","jest":"jest","jest:watch":"jest --watch","test":"run-p typecheck lint jest checkformat","lint":"eslint src","format":"prettier src --write","checkformat":"prettier src --check","typecheck":"tsc --noEmit","prepublishOnly":"npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/onthegomap/maplibre-contour.git"},"type":"module","author":{"name":"Michael Barry"},"license":"BSD-3-Clause","homepage":"https://github.com/onthegomap/maplibre-contour","devDependencies":{"@eslint/eslintrc":"3.2.0","@eslint/js":"9.38.0","@mapbox/vector-tile":"2.0.3","@rollup/plugin-commonjs":"28.0.2","@rollup/plugin-node-resolve":"16.0.3","@rollup/plugin-terser":"0.4.4","@rollup/plugin-typescript":"12.1.2","@types/benchmark":"2.1.5","@types/jest":"29.5.14","@types/lodash":"4.17.20","@types/mapbox__vector-tile":"1.3.4","@types/node":"22.10.7","@types/pbf":"3.0.5","@types/pngjs":"6.0.5","benchmark":"2.1.4","canvas":"2.11.2","eslint":"9.18.0","eslint-config-prettier":"10.0.1","jest":"29.7.0","jest-environment-jsdom":"29.7.0","lodash":"4.17.21","npm-run-all":"4.1.5","pbf":"4.0.1","pngjs":"7.0.0","prettier":"3.5.3","rollup":"4.39.0","ts-jest":"29.2.5","tslib":"^2.8.1","typescript":"5.7.3","typescript-eslint":"8.42.0","whatwg-fetch":"3.6.20"},"_id":"@acalcutt/maplibre-contour@0.1.7","gitHead":"735b5340faa6b0d3d5d8cdec40dc7bbdefa29010","bugs":{"url":"https://github.com/onthegomap/maplibre-contour/issues"},"_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-sF36Psh51AH5BP98rzxXLVy2dfmPr/4KjWqAZZugLMyqxAOdDH4Af927kobYsqGpUINl8Dn41oC6qLmaFhwMPw==","shasum":"2345638fd0c6c69acf9052308ef0955b587d249e","tarball":"https://registry.npmjs.org/@acalcutt/maplibre-contour/-/maplibre-contour-0.1.7.tgz","fileCount":60,"unpackedSize":577843,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDnCC2ZFbGmmMD41bXevZpLPIcjkymLnwD87uA/8zYjHAiACwex8ohh/EjsD7B8EXk59z/4DvWhltKJDtzDmlZ5rYw=="}]},"_npmUser":{"name":"acalcutt","email":"acalcutt@techidiots.net"},"directories":{},"maintainers":[{"name":"acalcutt","email":"acalcutt@techidiots.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/maplibre-contour_0.1.7_1761227763245_0.26135209058020736"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-21T21:34:58.488Z","modified":"2025-10-23T13:56:03.671Z","0.1.1":"2025-10-21T21:34:58.776Z","0.1.2":"2025-10-21T23:02:28.526Z","0.1.3":"2025-10-22T03:47:08.287Z","0.1.4":"2025-10-22T04:24:50.616Z","0.1.5":"2025-10-22T15:02:25.130Z","0.1.6":"2025-10-23T02:26:28.301Z","0.1.7":"2025-10-23T13:56:03.455Z"},"bugs":{"url":"https://github.com/onthegomap/maplibre-contour/issues"},"author":{"name":"Michael Barry"},"license":"BSD-3-Clause","homepage":"https://github.com/onthegomap/maplibre-contour","repository":{"type":"git","url":"git+https://github.com/onthegomap/maplibre-contour.git"},"description":"Render contour lines from raster elevation tiles in maplibre-gl-js","maintainers":[{"name":"acalcutt","email":"acalcutt@techidiots.net"}],"readme":"# maplibre-contour\n\nmaplibre-contour is a plugin to render contour lines in [MapLibre GL JS](https://github.com/maplibre/maplibre-gl-js) from `raster-dem` sources that powers the terrain mode for [onthegomap.com](https://onthegomap.com).\n\n![Topographic map of Mount Washington](demo.png)\n\n[Live example](https://onthegomap.github.io/maplibre-contour) | [Code](./index.html)\n\nTo use it, import the [maplibre-contour](https://www.npmjs.com/package/maplibre-contour) package with a script tag:\n\n```html\n<script src=\"https://unpkg.com/maplibre-contour@0.1.0/dist/index.min.js\"></script>\n```\n\nOr as an ES6 module: `npm add maplibre-contour`\n\n```js\nimport mlcontour from \"maplibre-contour\";\n```\n\nThen to use, first create a `DemSource` and register it with maplibre:\n\n```js\nvar demSource = new mlcontour.DemSource({\n  url: \"https://url/of/dem/source/{z}/{x}/{y}.png\",\n  encoding: \"terrarium\", // \"mapbox\" or \"terrarium\" default=\"terrarium\"\n  maxzoom: 13,\n  worker: true, // offload isoline computation to a web worker to reduce jank\n  cacheSize: 100, // number of most-recent tiles to cache\n  timeoutMs: 10_000, // timeout on fetch requests\n});\ndemSource.setupMaplibre(maplibregl);\n```\n\nThen configure a new contour source and add it to your map:\n\n```js\nmap.addSource(\"contour-source\", {\n  type: \"vector\",\n  tiles: [\n    demSource.contourProtocolUrl({\n      // convert meters to feet, default=1 for meters\n      multiplier: 3.28084,\n      thresholds: {\n        // zoom: [minor, major]\n        11: [200, 1000],\n        12: [100, 500],\n        14: [50, 200],\n        15: [20, 100],\n      },\n      // optional, override vector tile parameters:\n      contourLayer: \"contours\",\n      elevationKey: \"ele\",\n      levelKey: \"level\",\n      extent: 4096,\n      buffer: 1,\n    }),\n  ],\n  maxzoom: 15,\n});\n```\n\nThen add contour line and label layers:\n\n```js\nmap.addLayer({\n  id: \"contour-lines\",\n  type: \"line\",\n  source: \"contour-source\",\n  \"source-layer\": \"contours\",\n  paint: {\n    \"line-color\": \"rgba(0,0,0, 50%)\",\n    // level = highest index in thresholds array the elevation is a multiple of\n    \"line-width\": [\"match\", [\"get\", \"level\"], 1, 1, 0.5],\n  },\n});\nmap.addLayer({\n  id: \"contour-labels\",\n  type: \"symbol\",\n  source: \"contour-source\",\n  \"source-layer\": \"contours\",\n  filter: [\">\", [\"get\", \"level\"], 0],\n  layout: {\n    \"symbol-placement\": \"line\",\n    \"text-size\": 10,\n    \"text-field\": [\"concat\", [\"number-format\", [\"get\", \"ele\"], {}], \"'\"],\n    \"text-font\": [\"Noto Sans Bold\"],\n  },\n  paint: {\n    \"text-halo-color\": \"white\",\n    \"text-halo-width\": 1,\n  },\n});\n```\n\nYou can also share the cached tiles with other maplibre sources that need elevation data:\n\n```js\nmap.addSource(\"dem\", {\n  type: \"raster-dem\",\n  encoding: \"terrarium\",\n  tiles: [demSource.sharedDemProtocolUrl],\n  maxzoom: 13,\n  tileSize: 256,\n});\n```\n\n# How it works\n\n<img src=\"architecture.png\" width=\"500\">\n\n[`DemSource.setupMaplibre`](./src/dem-source.ts) uses MapLibre's [`addProtocol`](https://maplibre.org/maplibre-gl-js-docs/api/properties/#addprotocol) utility to register a callback to provide vector tile for the contours source. Each time maplibre requests a vector tile:\n\n- [`DemManager`](./src/dem-manager.ts) fetches (and caches) the raster-dem image tile and its neighbors so that contours are continuous across tile boundaries.\n  - When `DemSource` is configured with `worker: true`, it uses [`RemoteDemManager`](./src/remote-dem-manager.ts) to spawn [`worker.ts`](./src/worker.ts) in a web worker. The web worker runs [`LocalDemManager`](./src/dem-manager.ts) locally and uses the [`Actor`](./src/actor.ts) utility to send cancelable requests and responses between the main and worker thread.\n- [`decode-image.ts`](./src/decode-image.ts) decodes the raster-dem image RGB values to meters above sea level for each pixel in the tile.\n- [`HeightTile`](./src/height-tile.ts) stitches those raw DEM tiles into a \"virtual tile\" that contains the border of neighboring tiles, aligns elevation measurements to the tile grid, and smooths the elevation measurements.\n- [`isoline.ts`](./src/isolines.ts) generates contour isolines from a `HeightTile` using a marching-squares implementation derived from [d3-contour](https://github.com/d3/d3-contour).\n- [`vtpbf.ts`](./src/vtpbf.ts) encodes the contour isolines as mapbox vector tile bytes.\n\nMapLibre sends that vector tile to its own worker, decodes it, and renders as if it had been generated by a server.\n\n# Why?\n\nThere are a lot of parameters you can tweak when generating contour lines from elevation data like units, thresholds, and smoothing parameters. Pre-generated contour vector tiles require 100+gb of storage for each variation you want to generate and host. Generating them on-the-fly in the browser gives infinite control over the variations you can use on a map from the same source of raw elevation data that maplibre uses to render hillshade.\n\n# License\n\nmaplibre-contour is licensed under the [BSD 3-Clause License](LICENSE). It includes code adapted from:\n\n- [d3-contour](https://github.com/d3/d3-contour) (ISC license)\n- [vt-pbf](https://github.com/mapbox/vt-pbf) (MIT license)\n","readmeFilename":"README.md"}