{"_id":"@mapbox/tile-reduce","_rev":"268-d0048d7be3ffe087c0a484209594327a","name":"@mapbox/tile-reduce","description":"vector tile mapreduce","dist-tags":{"latest":"3.3.1"},"versions":{"3.1.1":{"name":"@mapbox/tile-reduce","version":"3.1.1","description":"vector tile mapreduce","main":"src/index.js","directories":{"test":"test"},"scripts":{"test":"eslint src test examples/*/*.js && tap -R spec test/test.*.js","cover":"tap test/test.*.js --cov --coverage-report=lcov","lint":"eslint src test examples/*/*.js"},"repository":{"type":"git","url":"git+https://github.com/mapbox/tile-reduce.git"},"author":{"name":"morganherlocker"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/tile-reduce/issues"},"homepage":"https://github.com/mapbox/tile-reduce","dependencies":{"@turf/bbox-polygon":"^3.5.2","binary-split":"^1.0.0","function-rate-limit":"^1.0.1","mbtiles":"^0.8.2","pbf":"^1.3.5","queue-async":"^1.0.7","request":"^2.67.0","stream-array":"^1.1.1","through2":"^2.0.0","tile-cover":"^3.0.1","tilebelt":"^1.0.1","vector-tile":"^1.1.3"},"devDependencies":{"eslint":"^2.4.0","eslint-config-mourner":"^2.0.0","split":"^1.0.0","tap":"^5.7.0"},"eslintConfig":{"extends":"mourner","rules":{"indent":[2,2],"camelcase":0,"space-before-function-paren":[2,"never"]}},"gitHead":"7112645ba2cf9661610d225bed327f311ca04335","_id":"@mapbox/tile-reduce@3.1.1","_shasum":"2f696f0277f4df2e8e6bee5be4d2450aaa245bf4","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.2.1","_npmUser":{"name":"tmcw","email":"tom@macwright.org"},"dist":{"shasum":"2f696f0277f4df2e8e6bee5be4d2450aaa245bf4","tarball":"https://registry.npmjs.org/@mapbox/tile-reduce/-/tile-reduce-3.1.1.tgz","integrity":"sha512-fC8I/hlVcT/PFQSXJjMSKzPBNagwEWNvilLnMqPqJ+J3+u4WUay4GUXuSgY95tgMNPgG6T6HpVEf74hoDc2tEQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAvgN7QPeQTWv85ijQO74KvuB6d0dAxxuXAZeTkna1EsAiA6Au988xJtcMm7IE/Wx6dTo5GQNGTKNeufv0ux6XxKMA=="}]},"maintainers":[{"name":"tmcw","email":"tom@macwright.org"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/tile-reduce-3.1.1.tgz_1482427378802_0.357180085266009"}},"3.2.0":{"name":"@mapbox/tile-reduce","version":"3.2.0","description":"vector tile mapreduce","main":"src/index.js","directories":{"test":"test"},"scripts":{"test":"eslint src test examples/*/*.js && tap -R spec test/test.*.js","cover":"tap test/test.*.js --cov --coverage-report=lcov","lint":"eslint src test examples/*/*.js"},"repository":{"type":"git","url":"git+https://github.com/mapbox/tile-reduce.git"},"author":{"name":"morganherlocker"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/tile-reduce/issues"},"homepage":"https://github.com/mapbox/tile-reduce","dependencies":{"@turf/bbox-polygon":"^3.7.3","binary-split":"^1.0.3","function-rate-limit":"^1.1.0","mbtiles":"^0.9.0","pbf":"^3.0.5","queue-async":"^1.2.1","request":"^2.79.0","stream-array":"^1.1.2","through2":"^2.0.3","tile-cover":"^3.0.1","tilebelt":"^1.0.1","vector-tile":"^1.3.0"},"devDependencies":{"eslint":"^3.13.1","eslint-config-mourner":"^2.0.1","split":"^1.0.0","tap":"^9.0.3"},"eslintConfig":{"extends":"mourner","rules":{"indent":[2,2],"camelcase":0,"space-before-function-paren":[2,"never"]}},"gitHead":"d0cb6f6a1818bd77d3b7157fa3929008a9aeadc7","_id":"@mapbox/tile-reduce@3.2.0","_shasum":"386e7a112eff59309df56f7c62e808ef94e8bc71","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.4.0","_npmUser":{"name":"mourner","email":"agafonkin@gmail.com"},"dist":{"shasum":"386e7a112eff59309df56f7c62e808ef94e8bc71","tarball":"https://registry.npmjs.org/@mapbox/tile-reduce/-/tile-reduce-3.2.0.tgz","integrity":"sha512-cSLAHUXRAU0zQRhp3vMpVOe8wo5KdaQf4t3/gyj/bnXHv1KxwiiyW8ic9vZt9LkXUbQ/edAlcndlrVuG/pQeiA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNjCQ45dn23A1PoSsGlP4NH8W0necsF8thzYfsA29juQIgeBx1GxJaCPEoNRa8uDdBLGTqKmTEIvnNY17Iw7VQB7E="}]},"maintainers":[{"name":"aaronlidman","email":"aaronlidman@gmail.com"},{"name":"aarthykc","email":"aarthy@mapbox.com"},{"name":"ajithranka","email":"ajith@mapbox.com"},{"name":"aliceykuo","email":"alice@mapbox.com"},{"name":"alinapaz","email":"alinapaz@gmail.com"},{"name":"alulsh","email":"ulsh@mapbox.com"},{"name":"amishas157","email":"amisha@mapbox.com"},{"name":"amyleew","email":"amyleewalton@gmail.com"},{"name":"andreasviglakis","email":"andreas.viglakis@gmail.com"},{"name":"ansis","email":"ansis.brammanis@gmail.com"},{"name":"aparlato","email":"alex.parlato@mapbox.com"},{"name":"apendleton","email":"andrew@mapbox.com"},{"name":"arunasank","email":"aruna@mapbox.com"},{"name":"batpad","email":"sanjay@mapbox.com"},{"name":"benjamintd","email":"benjamin@mapbox.com"},{"name":"bhousel","email":"bryan@mapbox.com"},{"name":"bkowshik","email":"bhargav.kowshik@gmail.com"},{"name":"brendanmcfarland","email":"brendan@mapbox.com"},{"name":"bsrinivasa","email":"bharata+npm@mapbox.com"},{"name":"bsudekum","email":"bobby@mapbox.com"},{"name":"camillacaros","email":"camilla@mapbox.com"},{"name":"captainbarbosa","email":"nadia.barbosa@mapbox.com"},{"name":"chaupow","email":"hello@chau-nguyen.de"},{"name":"colleenmcginnis","email":"colleen.mcginnis@mapbox.com"},{"name":"danieljh","email":"daniel+npm@trvx.org"},{"name":"danpat","email":"danpat@danpat.net"},{"name":"danswick","email":"dan@mapbox.com"},{"name":"dasulit","email":"dana.sulit@mapbox.com"},{"name":"davidtheclark","email":"david.dave.clark@gmail.com"},{"name":"dnomadb","email":"damon@mapbox.com"},{"name":"dthompson","email":"dthompson@gmail.com"},{"name":"emilymcafee","email":"emily@mapbox.com"},{"name":"emilymdubois","email":"dubois@mapbox.com"},{"name":"enf","email":"fischer@mapbox.com"},{"name":"freenerd","email":"spam@freenerd.de"},{"name":"geohacker","email":"sajjadkm@gmail.com"},{"name":"ghoshkaj","email":"ghoshkaj@gmail.com"},{"name":"gretacb","email":"carol@mapbox.com"},{"name":"ian29","email":"ian.villeda@gmail.com"},{"name":"ianshward","email":"ian@mapbox.com"},{"name":"ingalls","email":"nicholas.ingalls@gmail.com"},{"name":"isiyu","email":"siyu.song@gmail.com"},{"name":"jacquestardie","email":"hi@jacquestardie.org"},{"name":"jfirebaugh","email":"john.firebaugh@gmail.com"},{"name":"jothirnadh","email":"jothirnadh@mapbox.com"},{"name":"jrpruit1","email":"jake@jakepruitt.com"},{"name":"k-mahoney","email":"kara.e.mahoney@gmail.com"},{"name":"kaibot3000","email":"kai@mapbox.com"},{"name":"kaidalgleish","email":"kai@mapbox.com"},{"name":"karenzshea","email":"karen@mapbox.com"},{"name":"karitotp","email":"karito@mapbox.com"},{"name":"katydecorah","email":"decorah@mapbox.com"},{"name":"kkaefer","email":"mail@kkaefer.com"},{"name":"l-r","email":"laurier@mapbox.com"},{"name":"laurier","email":"l@pwd.io"},{"name":"lbud","email":"lauren@mapbox.com"},{"name":"lily-chai","email":"lily@mapbox.com"},{"name":"lucaswoj","email":"lucas@lucaswoj.com"},{"name":"lxbarth","email":"alex@mapbox.com"},{"name":"lyzidiamond","email":"lyzi@mapbox.com"},{"name":"maning","email":"emmanuel.sambale@gmail.com"},{"name":"mapbox-admin","email":"accounts@mapbox.com"},{"name":"mapsam","email":"sam@mapbox.com"},{"name":"mateov","email":"matt@mapbox.com"},{"name":"mattficke","email":"matt@mattficke.com"},{"name":"mayaqgao","email":"mayaqgao@gmail.com"},{"name":"mcwhittemore","email":"mcwhittemore@gmail.com"},{"name":"miccolis","email":"jeff@miccolis.net"},{"name":"miles-dev","email":"miles.sackler@mapbox.com"},{"name":"mokob","email":"moritz@mapbox.com"},{"name":"mollymerp","email":"mollylloyd@gmail.com"},{"name":"morganherlocker","email":"morgan.herlocker@gmail.com"},{"name":"mourner","email":"agafonkin@gmail.com"},{"name":"msirenko","email":"max@mapbox.com"},{"name":"natslaughter","email":"nat@mapbox.com"},{"name":"nickcordella","email":"nick.cordella@mapbox.com"},{"name":"nickidlugash","email":"nicki@mapbox.com"},{"name":"oini","email":"oindrila.gupta92@gmail.com"},{"name":"oxidase","email":"michael.krasnyk@gmail.com"},{"name":"pdgoodman","email":"paul@mapbox.com"},{"name":"perrygeo","email":"perrygeo@gmail.colm"},{"name":"planemad","email":"arun.planemad@gmail.com"},{"name":"pratikyadav","email":"pratik@mapbox.com"},{"name":"rclark","email":"ryan.clark.j@gmail.com"},{"name":"rodowi","email":"rod@wilhel.me"},{"name":"rub21","email":"ruben@mapbox.com"},{"name":"rumc","email":"r.ragupathy85@gmail.com"},{"name":"ryan-baumann","email":"rsbaumann@gmail.com"},{"name":"saikia.abhishek","email":"abhishek@mapbox.com"},{"name":"samanbb","email":"saman@mapbox.com"},{"name":"sbma44","email":"tlee@mapbox.com"},{"name":"scothis","email":"scothis@gmail.com"},{"name":"springmeyer","email":"dane@mapbox.com"},{"name":"srividyacb","email":"srividyabharadwaj26@gmail.com"},{"name":"tcql","email":"tim.channell@gmail.com"},{"name":"themarex","email":"patrick@mapbox.com"},{"name":"tmcw","email":"tom@macwright.org"},{"name":"tony-cj","email":"tony.chen@mapbox.com"},{"name":"tristen","email":"tristen.brown@gmail.com"},{"name":"uvollmer","email":"ugo.vollmer@mapbox.com"},{"name":"vincents","email":"vincent.sarago@mapbox.com"},{"name":"virginiayung","email":"virginia@mapbox.com"},{"name":"who8mycakes","email":"nina@mapbox.com"},{"name":"willwhite","email":"will@mapbox.com"},{"name":"xrwang","email":"xiaowei@mapbox.com"},{"name":"yhahn","email":"young@mapbox.com"},{"name":"yunjieli","email":"yunjie.li@mapbox.com"},{"name":"zmully","email":"mully@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/tile-reduce-3.2.0.tgz_1484146609811_0.6729937079362571"}},"3.3.0":{"name":"@mapbox/tile-reduce","version":"3.3.0","description":"vector tile mapreduce","main":"src/index.js","directories":{"test":"test"},"scripts":{"lint":"eslint src test examples/*/*.js","pretest":"npm run lint","test":"tap -R spec test/test.*.js","cover":"tap test/test.*.js --cov --coverage-report=lcov","prepublishOnly":"npm run test"},"repository":{"type":"git","url":"git+https://github.com/mapbox/tile-reduce.git"},"author":{"name":"morganherlocker"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/tile-reduce/issues"},"homepage":"https://github.com/mapbox/tile-reduce","dependencies":{"@mapbox/mbtiles":"^0.10.0","@mapbox/tile-cover":"^3.0.2","@mapbox/vector-tile":"^1.3.1","@turf/bbox-polygon":"^6.0.1","binary-split":"^1.0.5","function-rate-limit":"^1.1.0","pbf":"^3.1.0","queue-async":"^1.2.1","request":"^2.88.0","stream-array":"^1.1.2","through2":"^3.0.0"},"devDependencies":{"eslint":"^3.19.0","eslint-config-mourner":"^2.0.1","split":"^1.0.1","tap":"^12.4.0"},"eslintConfig":{"extends":"mourner","rules":{"indent":[2,2],"camelcase":0,"space-before-function-paren":[2,"never"]}},"gitHead":"82147dc5ee6fcf0f9437eab731777994165a2ec7","_id":"@mapbox/tile-reduce@3.3.0","_nodeVersion":"10.15.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-JNO8GWKLMQ/Bi/iC0KILgGSf4YfJgvzwiG0trcPzkQR86Klunj04eCnA2l99ZQEYqjPfDfr4dLEpi6tmQcFwQQ==","shasum":"eefdb930f8106847a1b95b84e71dceb06a2b32be","tarball":"https://registry.npmjs.org/@mapbox/tile-reduce/-/tile-reduce-3.3.0.tgz","fileCount":12,"unpackedSize":22728,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcTyWaCRA9TVsSAnZWagAASIYP/AskPoVuFywzD9J9gDWS\nRteZ0h6oc1V9byI5D/6OKvG5q0nPiALDD0ydrFJ5JQ3sWGURUhRtMA5EvbgL\nSjpwal7ySuh2Jsq2gFla6rOl0zOhYI7P6AzBKJeeflnwwBnC+BkwdRr6CK0m\nOrCCiVj1Fr6U/0r1dPEkt9LgsSFG9pOmNnjyGSJYHfUElyDzvQSkcJ+qsIvo\nY+o1+jympG09wR7k6UDt/lFo8C6x+RQPl4AC0FzA1z636wqUMiECnVTb3EAA\n3t7sgCWs12meoDbvcm+5xi7WiGf7olnYLHUCOOp/hoqTwdpAgqTn7tgmF1Ej\nY1GXbALNQeIE7sbr55vF/XpD+NCSpj8EBvkEWy2s7mlnBnook0A+5PZkKYH3\nsMAIwM2idGJnC119+utSEN7yiPsuX9wCnu8MujvWr5s05YlK9/ReB4cDyCVY\nv/XDMEcWauyGh+n2vZfQ75PKN5S/gIDec6eouYtBUvJup62P/UZRwhnRx5ab\n8Pe6F/COzGIcvt/fJ/6jmZWA1OtzwLBMMVWWhUIJpVSM47Nu1gD3lwJVV/kL\nunfUrAzjTl1KGbWJLzyhrzlMxAndghVROrZdtjDqzQAzf5rhbwSDMwQ/RYZ9\nOK03C9DSiI/33VRghgCUi2JCAhOfsJ6ga83kahMYSRLiGa9HxR1oeqncIXiP\no7Qy\r\n=3MZk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnv1YaJsh2HJE5fHpS92nxuB3TJcNazlJxI/vdvnMtkwIgZz2sAb1k5fE0btaok5NjP01S+2mO4+nH1DVHLmiGn9Q="}]},"maintainers":[{"email":"accounts@mapbox.com","name":"mapbox-admin"},{"email":"accounts+npm-mapbox-machine-user@mapbox.com","name":"mapbox-machine-user"},{"email":"accounts+npmjs@mapbox.com","name":"mapbox-npm"},{"email":"accounts+npmjs-01@mapbox.com","name":"mapbox-npm-01"},{"email":"accounts+npmjs-02@mapbox.com","name":"mapbox-npm-02"},{"email":"accounts+npmjs-03@mapbox.com","name":"mapbox-npm-03"},{"email":"accounts+npmjs-04@mapbox.com","name":"mapbox-npm-04"},{"email":"accounts+npmjs-05@mapbox.com","name":"mapbox-npm-05"},{"email":"accounts+npmjs-06@mapbox.com","name":"mapbox-npm-06"},{"email":"accounts+npmjs-07@mapbox.com","name":"mapbox-npm-07"},{"email":"accounts+npmjs-08@mapbox.com","name":"mapbox-npm-08"},{"email":"accounts+npmjs-09@mapbox.com","name":"mapbox-npm-09"},{"email":"accounts+npmjs-advanced-actions@mapbox.com","name":"mapbox-npm-advanced-actions"},{"email":"accounts+npmjs-npm-ci@mapbox.com","name":"mapbox-npm-ci"}],"_npmUser":{"name":"mapbox-npm-03","email":"accounts+npmjs-03@mapbox.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tile-reduce_3.3.0_1548690842177_0.6558248070269443"},"_hasShrinkwrap":false},"3.3.1":{"name":"@mapbox/tile-reduce","version":"3.3.1","description":"vector tile mapreduce","main":"src/index.js","directories":{"test":"test"},"scripts":{"lint":"eslint src test examples/*/*.js","pretest":"npm run lint","test":"tap -R spec test/test.*.js","cover":"tap test/test.*.js --cov --coverage-report=lcov","prepublishOnly":"npm run test"},"repository":{"type":"git","url":"git+https://github.com/mapbox/tile-reduce.git"},"author":{"name":"morganherlocker"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/tile-reduce/issues"},"homepage":"https://github.com/mapbox/tile-reduce","dependencies":{"@mapbox/mbtiles":"^0.12.1","@mapbox/tile-cover":"^3.0.2","@mapbox/vector-tile":"^1.3.1","@turf/bbox-polygon":"^6.3.0","binary-split":"^1.0.5","function-rate-limit":"^1.1.0","pbf":"^3.2.1","queue-async":"^1.2.1","request":"^2.88.0","stream-array":"^1.1.2","through2":"^3.0.0"},"devDependencies":{"eslint":"^3.19.0","eslint-config-mourner":"^2.0.1","split":"^1.0.1","tap":"^12.4.0"},"eslintConfig":{"extends":"mourner","rules":{"indent":[2,2],"camelcase":0,"space-before-function-paren":[2,"never"]}},"gitHead":"6cab4e88d7c474676f5e4dc894bba59dbf7b05df","_id":"@mapbox/tile-reduce@3.3.1","_nodeVersion":"10.19.0","_npmVersion":"7.10.0","dist":{"integrity":"sha512-/qPnJ47gW1uIur4swKn9CYO9ZIeAhelzA0hnjrBMm4vQ0ZkaoXFZy7N9kV6hFnq5ImJSlgRkDkxAfe6rsU3Pcg==","shasum":"3b81d0c01fb93b84663fdf69a394a5c28fe1ddcf","tarball":"https://registry.npmjs.org/@mapbox/tile-reduce/-/tile-reduce-3.3.1.tgz","fileCount":12,"unpackedSize":23061,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggrvNCRA9TVsSAnZWagAANqoP/0zHT2Ws+A8VVyrxgMqK\n5Zl/aYlsySSOHDp8TT9AEJ6jGMjEs8OBEVInvt5XfYRZ5ZkYX2EvFKvyYNmV\ncfAUQSc3IccyaxixV/L/4CLSUXG+2p0pnOC9fBHgZftkpRfj40+RkEXCAsOz\nPgBlEedsqHe6K4Cp32u81bEu6uOn/Pp4fY12TTxPUd8+7yF/LHAmpmM1dEFn\nYRusD3I+OZr5oVTIeTtHRr1jkSJG7aqHwZOas+EWi9OIw7ZI7xqHpY8OP/F9\nhKUqkiGU6JHuekTPg5/AD7UCKTM8kE/x2LKLoUZIjVFGecs8fhiVTlb+h/Ub\ndORHhH96UMFzCwkt6UiOaf9zOIHc6sq7SRuAXoVS56QYb39bm9WZLG3eatL6\niJRe5z3ZME1R40xPrME28ySGer5uA8yiJl2wXLgLwotPx7RN5wFirajcNI/X\noh0/FbwBbFW6prmhoyhKNfuCFVnRprBH3sTIOlcd3ygGtBPtjFunzifejnUY\nwjgoADjViVhqUwkeKlSu3xIMVOEci5KDEJRN5Zk+utsgN4b4q/nXp6ngwLhc\nzU1lbH8Y8f/oqek9o7HvHHUCJ9FaF3X0UTaqJfsAxnSD6qoTySsXwrWEgB+P\n4XwjqUfvfLSsk1QlihDgDV+xN/mUX4utYYia4iKyl8lQYqbhedRCtxbwySpf\nqHHJ\r\n=/9Sk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2psQstKY2Js/UDpOaih/c9mXEQuKLh8A0sKTYDNo05wIhAMai/rBktsGHSOXrjIgQlextme87o0auH/bdLvhEqQrO"}]},"_npmUser":{"name":"mapbox-npm-06","email":"accounts+npmjs-06@mapbox.com"},"maintainers":[{"name":"mapbox-npm-01","email":"accounts+npmjs-01@mapbox.com"},{"name":"mapbox-npm-02","email":"accounts+npmjs-02@mapbox.com"},{"name":"mapbox-npm-07","email":"accounts+npmjs-07@mapbox.com"},{"name":"mapbox-npm-03","email":"accounts+npmjs-03@mapbox.com"},{"name":"mapbox-npm-04","email":"accounts+npmjs-04@mapbox.com"},{"name":"mapbox-npm-09","email":"accounts+npmjs-09@mapbox.com"},{"name":"mapbox-npm-05","email":"accounts+npmjs-05@mapbox.com"},{"name":"mapbox-npm-06","email":"accounts+npmjs-06@mapbox.com"},{"name":"mapbox-npm-08","email":"accounts+npmjs-08@mapbox.com"},{"name":"mapbox-npm-advanced-actions","email":"accounts+npmjs-advanced-actions@mapbox.com"},{"name":"mapbox-npm-ci","email":"accounts+npmjs-npm-ci@mapbox.com"},{"name":"mapbox-npm","email":"accounts+npmjs@mapbox.com"},{"name":"mapbox-admin","email":"accounts@mapbox.com"},{"name":"mapbox-machine-user","email":"accounts+npm-mapbox-machine-user@mapbox.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tile-reduce_3.3.1_1619180493022_0.8112329659225146"},"_hasShrinkwrap":false}},"readme":"# TileReduce\n\n[![Build Status](https://travis-ci.org/mapbox/tile-reduce.svg)](https://travis-ci.org/mapbox/tile-reduce)\n\nTileReduce is a geoprocessing library that implements [MapReduce](http://en.wikipedia.org/wiki/MapReduce) to let you run scalable distributed spatial analysis using [JavaScript](http://nodejs.org/) and [Mapbox Vector Tiles](https://www.mapbox.com/developers/vector-tiles/). TileReduce coordinates tasks across all available processors on a machine, so your analysis runs lightning fast.\n\n## Install\n\n```sh\nnpm install @mapbox/tile-reduce\n```\n\n## Usage\n\nA TileReduce processor is composed of two parts; the \"map\" script and the \"reduce\" script. The \"map\" portion comprises the expensive processing you want to distribute, while the \"reduce\" script comprises the quick aggregation step.\n\n### 'map' script\n\nThe map script operates on each individual tile. It's purpose is to receive one tile at a time, do analysis or processing on the tile, and write data and send results to the reduce script.\n\n[See the count example processor's map script](https://github.com/mapbox/tile-reduce/blob/master/examples/count/count.js)\n\n### 'reduce' script\n\nThe reduce script serves both to initialize TileReduce with job options, and to handle reducing results returned by the map script for each tile.\n\n[See the count example processor's reduce script](https://github.com/mapbox/tile-reduce/blob/master/examples/count/index.js)\n\n\n## Options\n\n### Basic Options\n\n#### zoom (required)\n\n`zoom` specifies the zoom level of tiles to retrieve from each source.\n\n```js\ntilereduce({\n\tzoom: 15,\n\t// ...\n})\n```\n\n#### map (required)\n\nPath to the map script, which will be executed against each tile\n\n```js\ntilereduce({\n\tmap: path.join(__dirname, 'map.js')\n\t// ...\n})\n```\n#### maxWorkers\n\nBy default, TileReduce creates one worker process per CPU. `maxWorkers` may be used to limit the number of workers created\n\n```js\ntilereduce({\n  maxWorkers: 3,\n  // ...\n})\n```\n\n#### output\n\nBy default, any data written from workers is piped to `process.stdout` on the main process. You can pipe to an alternative writable stream using the `output` option.\n\n```js\ntilereduce({\n\toutput: fs.createWriteStream('output-file'),\n\t// ...\n})\n```\n\n#### log\n\nDisables logging and progress output\n\n```js\ntilereduce({\n\tlog: false,\n\t// ...\n})\n```\n\n#### mapOptions\n\nPasses through arbitrary options to workers. Options are made available to map scripts as `global.mapOptions`\n\n```js\ntilereduce({\n\tmapOptions: {\n\t\tbufferSize: 4\n\t}\n\t// ...\n})\n```\n\n```js\n// map.js\nmodule.exports = function (sources, tile, write, done) {\n  global.mapOptions.bufferSize; // = 4\n};\n```\n\n### Specifying Sources (required)\n\nSources are specified as an array in the `sources` option:\n\n```js\ntilereduce({\n\tsources: [\n\t\t/* source objects */\n\t],\n\t// ...\n})\n```\n\n#### MBTiles sources:\n\n```js\ntilereduce({\n    sources: [\n      {\n        name: 'osmdata',\n        mbtiles: __dirname+'/latest.planet.mbtiles',\n        layers: ['osm']\n      }\n    ]\n})\n```\n\n[MBTiles](https://github.com/mapbox/mbtiles-spec) work well for optimizing tasks that request many tiles, since the data is stored on disk. Create your own MBTiles from vector data using [tippecanoe](https://github.com/mapbox/tippecanoe), or use [OSM QA Tiles](http://osmlab.github.io/osm-qa-tiles/), a continuously updated MBTiles representation of OpenStreetMap.\n\n#### URL\n\nRemote Vector Tile sources accessible over HTTP work well for mashups of datasets and datasets that would not be practical to fit on a single machine. Be aware that HTTP requests are slower than mbtiles, and throttling is typically required to avoid disrupting servers at high tile volumes. `maxrate` dictates how many requests per second will be made to each remote source.\n\n```js\nsources: [\n  {\n    name: 'streets',\n    url: 'https://b.tiles.mapbox.com/v4/mapbox.mapbox-streets-v6/{z}/{x}/{y}.vector.pbf',\n    layers: ['roads'],\n    maxrate: 10\n  }\n]\n```\n\n#### raw\n\nBy default, sources will be automatically converted from their raw Vector Tile representation to GeoJSON. If you set `raw: true` in an MBTiles or URL source, the [raw Vector Tile data](https://github.com/mapbox/vector-tile-js) will be provided, allowing you to lazily parse features as needed. This is useful in some situations for maximizing performance.\n\n```js\nsources: [\n  {\n    name: 'streets',\n    url: 'https://b.tiles.mapbox.com/v4/mapbox.mapbox-streets-v6/{z}/{x}/{y}.vector.pbf',\n    raw: true\n  }\n]\n```\n\n---\n\n### Specifying Job Area\n\nJobs run over a geographic region represented by a set of tiles. TileReduce also accepts several area definitions that will be automatically converted into tiles.\n\n#### BBOX\n\nA valid [bounding box](http://geojson.org/geojson-spec.html#bounding-boxes) array.\n\n```js\ntilereduce({\n\tbbox: [w, s, e, n],\n\t// ...\n})\n```\n\n#### GeoJSON\n\nA valid [GeoJSON geometry](http://geojson.org/geojson-spec.html#geojson-objects) of any type.\n\n```js\ntilereduce({\n\tgeojson: {\"type\": \"Polygon\", \"coordinates\": [/* coordinates */]},\n\t// ...\n})\n```\n\n#### Tile Array\n\nAn array of [quadtiles](https://msdn.microsoft.com/en-us/library/bb259689.aspx) represented as xyz arrays.\n\n```js\ntilereduce({\n\ttiles: [\n\t\t[x, y, z]\n\t],\n\t// ...\n})\n```\n\n#### Tile Stream\n\nTiles can be read from an object mode [node stream](https://nodejs.org/api/stream.html). Each object in the stream should be either a string in the format `x y z` or an array in the format `[x, y, z]`.\n\n```js\ntilereduce({\n\ttileStream: /* an object mode node stream */,\n\t// ...\n})\n```\n\nLine separated tile list files can easily be converted into the appropriate object mode streams using [binary-split](https://github.com/maxogden/binary-split):\n\n```js\nvar split = require('binary-split'),\n\tfs = require('fs');\n\ntilereduce({\n\ttileStream: fs.createReadStream('/path/to/tile-file').pipe(split()),\n\t// ...\n})\n```\n\n#### Source Cover\n\nWhen using MBTiles sources, a list of tiles to process can be automatically retrieved from the source metadata\n\n```js\ntilereduce({\n\tsourceCover: 'osmdata',\n\tsources: [\n\t\t{\n\t\t\tname: 'osmdata',\n\t\t\tmbtiles: __dirname+'/latest.planet.mbtiles'\n\t\t}\n\t]\n\t// ...\n})\n```\n\n## Events\n\nTileReduce returns an [EventEmitter]().\n\n### start\n\nFired once all workers are initialized and before the first tiles are sent for processing\n\n```js\ntilereduce({/* ... */})\n.on('start', function () {\n\tconsole.log('starting');\n});\n```\n\n### map \n\nFired just before a tile is sent to a worker. Receives the tile and worker number assigned to process the tile.\n\n```js\ntilereduce({/* ... */})\n.on('map', function (tile, workerId) {\n\tconsole.log('about to process ' + JSON.stringify(tile) +' on worker '+workerId);\n});\n```\n\n### reduce \n\nFired when a tile has finished processing. Receives data returned in the map function's `done` callback (if any), and the tile.\n\n```js\nvar count = 0;\ntilereduce({/* ... */})\n.on('reduce', function (result, tile) { \n\tconsole.log('got a count of ' + result + ' from ' + JSON.stringify(tile));\n\tcount++;\n});\n```\n\n### end\n\nFired when all queued tiles have been processed. Use this event to output final reduce results.\n\n```js\nvar count = 0;\ntilereduce({/* ... */})\n.on('end', function () {\n\tconsole.log('Total count was: ' + count);\n});\n```\n\n## Processor Examples\n\n- [osm-coverage](https://github.com/mapbox/osm-coverage) - a processor for computing statistics about [OpenStreetMap](http://www.openstreetmap.org/) coverage across countries.\n\n- [osm-sidewalker](https://github.com/mapbox/osm-sidewalker) - a processor for detecting potentially untagged sidewalks in [OpenStreetMap](http://www.openstreetmap.org/).\n\n## Development\n\n### Testing\n\n```sh\nnpm test\n```\n\n### Linting\n\n```sh\nnpm run lint\n```\n\n### Test Coverage\n\n```sh\nnpm run cover\n```\n","maintainers":[{"email":"yannick.meeus+npm+production+ci@mapbox.com","name":"mbx-npm-ci-production"},{"email":"yannick.meeus+npm+staging+ci@mapbox.com","name":"mbx-npm-ci-staging"},{"email":"yannick.meeus+npm+prod+advanced+actions@mapbox.com","name":"mbx-npm-advanced-actions-production"},{"email":"yannick.meeus+npm+staging+advanced+actions@mapbox.com","name":"mbx-npm-advanced-actions-staging"},{"email":"yannick.meeus+npm+prod+09@mapbox.com","name":"mbx-npm-09-production"},{"email":"yannick.meeus+npm+prod+08@mapbox.com","name":"mbx-npm-08-production"},{"email":"yannick.meeus+npm+prod+07@mapbox.com","name":"mbx-npm-07-production"},{"email":"yannick.meeus+npm+prod+06@mapbox.com","name":"mbx-npm-06-production"},{"email":"yannick.meeus+npm+prod+05@mapbox.com","name":"mbx-npm-05-production"},{"email":"yannick.meeus+npm+prod+04@mapbox.com","name":"mbx-npm-04-production"},{"email":"yannick.meeus+npm+prod+03@mapbox.com","name":"mbx-npm-03-production"},{"email":"yannick.meeus+npm+prod+02@mapbox.com","name":"mbx-npm-02-production"},{"email":"yannick.meeus+npm+prod+01@mapbox.com","name":"mbx-npm-01-production"},{"email":"yannick.meeus@mapbox.com","name":"mbx-npm-02-staging"},{"email":"accounts+npmjs-01@mapbox.com","name":"mapbox-npm-01"},{"email":"accounts+npmjs-02@mapbox.com","name":"mapbox-npm-02"},{"email":"accounts+npmjs-07@mapbox.com","name":"mapbox-npm-07"},{"email":"accounts+npmjs-03@mapbox.com","name":"mapbox-npm-03"},{"email":"accounts+npmjs-04@mapbox.com","name":"mapbox-npm-04"},{"email":"accounts+npmjs-09@mapbox.com","name":"mapbox-npm-09"},{"email":"accounts+npmjs-05@mapbox.com","name":"mapbox-npm-05"},{"email":"accounts+npmjs-06@mapbox.com","name":"mapbox-npm-06"},{"email":"accounts+npmjs-08@mapbox.com","name":"mapbox-npm-08"},{"email":"accounts+npmjs-advanced-actions@mapbox.com","name":"mapbox-npm-advanced-actions"},{"email":"accounts+npmjs-npm-ci@mapbox.com","name":"mapbox-npm-ci"},{"email":"accounts+npmjs@mapbox.com","name":"mapbox-npm"},{"email":"accounts@mapbox.com","name":"mapbox-admin"},{"email":"accounts+npm-mapbox-machine-user@mapbox.com","name":"mapbox-machine-user"}],"time":{"modified":"2023-01-12T12:45:54.144Z","created":"2016-12-22T17:22:59.625Z","3.1.1":"2016-12-22T17:22:59.625Z","3.2.0":"2017-01-11T14:56:50.593Z","3.3.0":"2019-01-28T15:54:02.292Z","3.3.1":"2021-04-23T12:21:33.180Z"},"homepage":"https://github.com/mapbox/tile-reduce","repository":{"type":"git","url":"git+https://github.com/mapbox/tile-reduce.git"},"author":{"name":"morganherlocker"},"bugs":{"url":"https://github.com/mapbox/tile-reduce/issues"},"license":"ISC","readmeFilename":"README.md"}