From 9d88a4659fe8b8d69d05a39cd28c1adc9efdd06a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1igo=20Medina=20=28aka=20MacGyver=29?= Date: Fri, 29 Mar 2019 19:03:25 +0100 Subject: [PATCH 1/5] fix typo The output in the Developer Center is not being properly rendered just because of a typo in the headline format. --- docs/guides/02-general-concepts.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/guides/02-general-concepts.md b/docs/guides/02-general-concepts.md index a30b54d7..1d85b454 100644 --- a/docs/guides/02-general-concepts.md +++ b/docs/guides/02-general-concepts.md @@ -37,10 +37,10 @@ All the endpoints, which might be accessed using a web browser, add CORS headers **Note:** By default, CARTO uses vector graphics for map rendering. Please [contact us](mailto:support@carto.com) if you need raster rendering enabled as part of your requirements. - ### Mapbox Vector Tiles (MVT) +### Mapbox Vector Tiles (MVT) [Mapbox Vector Tiles (MVT)](https://www.mapbox.com/vector-tiles/specification/) are map tiles that store geographic vector data on the client-side. Browser performance is fast since you can pan and zoom without having to query the server. CARTO uses a Web Graphics Library (WebGL) to process MVT files. This is useful since WebGL's are compatible with most web browsers, include support for multiple client-side mapping engines, and do not require additional information from the server; which makes it more efficient for rendering map tiles. - **Tip:** You can process MVT files with the [`ST_AsMVT` PostGIS function](https://postgis.net/docs/manual-dev/ST_AsMVT.html) with the [Maps API Windshaft renderer](https://github.com/CartoDB/Windshaft/blob/1000x/lib/windshaft/renderers/pg_mvt/renderer.js). \ No newline at end of file + **Tip:** You can process MVT files with the [`ST_AsMVT` PostGIS function](https://postgis.net/docs/manual-dev/ST_AsMVT.html) with the [Maps API Windshaft renderer](https://github.com/CartoDB/Windshaft/blob/1000x/lib/windshaft/renderers/pg_mvt/renderer.js). From 022e6a2f89be6d0a40f3c0f6cb7ba848a1eece75 Mon Sep 17 00:00:00 2001 From: Mario de Frutos Dieguez Date: Wed, 10 Apr 2019 13:06:39 +0200 Subject: [PATCH 2/5] Tests using PG11 and Postgis 2.5 (#1093) --- .travis.yml | 22 +++-- docker-test.sh | 2 +- docker/Dockerfile-nodejs-xenial-pg1121:latest | 85 ++++++++++++++++++ test/acceptance/named_maps_static_view.js | 10 ++- ..._places_simple_reduced-estimated-proj5.png | Bin 0 -> 45392 bytes test/support/prepare_db.sh | 1 - 6 files changed, 109 insertions(+), 11 deletions(-) create mode 100644 docker/Dockerfile-nodejs-xenial-pg1121:latest create mode 100644 test/fixtures/previews/populated_places_simple_reduced-estimated-proj5.png diff --git a/.travis.yml b/.travis.yml index fc228792..12f90930 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,14 @@ -jobs: - include: - - sudo: required - services: - - docker - language: generic - before_install: docker pull carto/nodejs-xenial-pg101:latest - script: npm run docker-test -- 10.15.1 # Node.js version +language: generic +sudo: required +env: + global: + - VERSION=1.${TRAVIS_BUILD_NUMBER} + matrix: + - NODE_VERSION=10.15.1 + DOCKER_IMAGE=carto/nodejs-xenial-pg101:latest + - NODE_VERSION=10.15.1 + DOCKER_IMAGE=carto/nodejs-xenial-pg1121:latest +services: + - docker +before_install: docker pull ${DOCKER_IMAGE} +script: npm run docker-test -- ${DOCKER_IMAGE} ${NODE_VERSION} diff --git a/docker-test.sh b/docker-test.sh index 44821126..bca2c5db 100755 --- a/docker-test.sh +++ b/docker-test.sh @@ -1,4 +1,4 @@ #!/bin/bash -docker run -e "NODEJS_VERSION=${1}" -v `pwd`:/srv carto/nodejs-xenial-pg101:latest bash run_tests_docker.sh && \ +docker run -e "NODEJS_VERSION=${2}" -v `pwd`:/srv ${1} bash run_tests_docker.sh && \ docker ps --filter status=dead --filter status=exited -aq | xargs docker rm -v diff --git a/docker/Dockerfile-nodejs-xenial-pg1121:latest b/docker/Dockerfile-nodejs-xenial-pg1121:latest new file mode 100644 index 00000000..7fccc2a7 --- /dev/null +++ b/docker/Dockerfile-nodejs-xenial-pg1121:latest @@ -0,0 +1,85 @@ +FROM ubuntu:xenial + +# Use UTF8 to avoid encoding problems with pgsql +ENV LANG C.UTF-8 +ENV NPROCS 1 +ENV JOBS 1 +ENV CXX g++-4.9 +ENV PGUSER postgres + +# Add external repos +RUN set -ex \ + && apt-get update \ + && apt-get install -y \ + curl \ + software-properties-common \ + locales \ + && add-apt-repository -y ppa:ubuntu-toolchain-r/test \ + && add-apt-repository -y ppa:cartodb/postgresql-11 \ + && add-apt-repository -y ppa:cartodb/redis-next \ + && curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash \ + && . ~/.nvm/nvm.sh \ + && locale-gen en_US.UTF-8 \ + && update-locale LANG=en_US.UTF-8 + +RUN set -ex \ + && apt-get update \ + && apt-get install -y \ + g++-4.9 \ + gcc-4.9 \ + git \ + libcairo2-dev \ + libgdal-dev=2.3.2+dfsg-2build2~carto1 \ + libgdal20=2.3.2+dfsg-2build2~carto1 \ + libgeos-dev=3.7.1~carto1 \ + libgif-dev \ + libjpeg8-dev \ + libjson-c-dev \ + libpango1.0-dev \ + libpixman-1-dev \ + libproj-dev \ + libprotobuf-c-dev \ + libxml2-dev \ + gdal-bin=2.3.2+dfsg-2build2~carto1 \ + make \ + nodejs \ + protobuf-c-compiler \ + pkg-config \ + wget \ + zip \ + libopenscenegraph100v5 \ + libsfcgal1 \ + liblwgeom-2.5.0=2.5.1.4+carto-1 \ + postgresql-11 \ + postgresql-11-plproxy \ + postgis=2.5.1.4+carto-1 \ + postgresql-11-postgis-2.5=2.5.1.4+carto-1 \ + postgresql-11-postgis-2.5-scripts=2.5.1.4+carto-1 \ + postgresql-client-11 \ + postgresql-client-common \ + postgresql-common \ + postgresql-contrib \ + postgresql-plpython-11 \ + postgresql-server-dev-11 \ + redis=5:4.0.9-1carto1~xenial1 \ + && apt-get purge -y wget protobuf-c-compiler \ + && apt-get autoremove -y + +# Configure PostgreSQL +RUN set -ex \ + && echo "listen_addresses='*'" >> /etc/postgresql/11/main/postgresql.conf \ + && echo "local all all trust" > /etc/postgresql/11/main/pg_hba.conf \ + && echo "host all all 0.0.0.0/0 trust" >> /etc/postgresql/11/main/pg_hba.conf \ + && echo "host all all ::1/128 trust" >> /etc/postgresql/11/main/pg_hba.conf \ + && /etc/init.d/postgresql start \ + && createdb template_postgis \ + && createuser publicuser \ + && psql -c "CREATE EXTENSION postgis" template_postgis \ + && /etc/init.d/postgresql stop + +WORKDIR /srv +EXPOSE 5858 + +COPY ./scripts/nodejs-install.sh /src/nodejs-install.sh +RUN chmod 777 /src/nodejs-install.sh +CMD /src/nodejs-install.sh diff --git a/test/acceptance/named_maps_static_view.js b/test/acceptance/named_maps_static_view.js index a6283d61..8a9b1402 100644 --- a/test/acceptance/named_maps_static_view.js +++ b/test/acceptance/named_maps_static_view.js @@ -106,7 +106,15 @@ describe('named maps static view', function() { } getStaticMap(function(err, img) { assert.ok(!err); - assert.imageIsSimilarToFile(img, previewFixture('estimated'), PNG_IMAGE_TOLERANCE, done); + assert.imageIsSimilarToFile(img, previewFixture('estimated'), PNG_IMAGE_TOLERANCE, err => { + if (err) { + assert.imageIsSimilarToFile(img, previewFixture('estimated-proj5'), PNG_IMAGE_TOLERANCE, done); + } + else + { + done(); + } + }); }); }); }); diff --git a/test/fixtures/previews/populated_places_simple_reduced-estimated-proj5.png b/test/fixtures/previews/populated_places_simple_reduced-estimated-proj5.png new file mode 100644 index 0000000000000000000000000000000000000000..fb6e79486115666b4352b42b6d15c05f12055d0b GIT binary patch literal 45392 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 literal 0 HcmV?d00001 diff --git a/test/support/prepare_db.sh b/test/support/prepare_db.sh index 5989b498..ab9ba0f4 100755 --- a/test/support/prepare_db.sh +++ b/test/support/prepare_db.sh @@ -13,7 +13,6 @@ PREPARE_REDIS=yes PREPARE_PGSQL=yes DOWNLOAD_SQL_FILES=yes -PG_PARALLEL=$(pg_config --version | (awk '{$2*=1000; if ($2 >= 9600) print 1; else print 0;}' 2> /dev/null || echo 0)) while [ -n "$1" ]; do OPTION=$(echo "$1" | tr -d '[:space:]') From 4d30fb57d804255d42bfc482d94483022ceeed09 Mon Sep 17 00:00:00 2001 From: Mario de Frutos Dieguez Date: Wed, 10 Apr 2019 16:43:24 +0200 Subject: [PATCH 3/5] Remove unused travisci variable --- .travis.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 12f90930..14d56ff1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,6 @@ language: generic sudo: required env: - global: - - VERSION=1.${TRAVIS_BUILD_NUMBER} matrix: - NODE_VERSION=10.15.1 DOCKER_IMAGE=carto/nodejs-xenial-pg101:latest From 6549a3a02356f95a4a00f36aaaac39ff1a167521 Mon Sep 17 00:00:00 2001 From: Raul Marin Date: Wed, 10 Apr 2019 16:22:31 +0200 Subject: [PATCH 4/5] Agg tests: Sort before compare to avoid failures due to paralellism --- test/acceptance/cluster.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/test/acceptance/cluster.js b/test/acceptance/cluster.js index d668745a..840757a8 100644 --- a/test/acceptance/cluster.js +++ b/test/acceptance/cluster.js @@ -555,7 +555,14 @@ describe('cluster', function () { return done(err); } - assert.deepStrictEqual(body.rows, expected); + const sort_f = ((a, b) => { + return (a._cdb_feature_count < b._cdb_feature_count) || + (a._cdb_feature_count === b._cdb_feature_count && + (a.type < b.type || + a.type === b.type && a.max_value < b.max_value)); + }); + + assert.deepStrictEqual(body.rows.sort(sort_f), expected.sort(sort_f)); testClient.drain(done); }); From 73c29660d69a9753f61d026a3e922463bfb393c7 Mon Sep 17 00:00:00 2001 From: Raul Marin Date: Wed, 10 Apr 2019 19:07:04 +0200 Subject: [PATCH 5/5] Update @carto/mapnik to 3.6.2-carto.13 --- NEWS.md | 3 +- package-lock.json | 95 ++++++++++++++++++++++++----------------------- package.json | 2 +- 3 files changed, 52 insertions(+), 48 deletions(-) diff --git a/NEWS.md b/NEWS.md index 4dd3f191..7ac8d370 100644 --- a/NEWS.md +++ b/NEWS.md @@ -13,12 +13,13 @@ Announcements: - Fix boolean aggregation layer option not working when numbers of rows are above the threshold (#1082) - Update deps: - camshat@0.64.0 - - windshaft@5.1.0: + - windshaft@5.1.1: - Upgrade `tilelive-mapnik` to version `0.6.18-cdb20` - Upgrade `@carto/tilelive-bridge` to version `2.5.1-cdb12` - Upgrade `grainstore` to version `2.0.0` - Upgrade `torque.js` to version `3.1.0` - Upgrade `canvas` to version `2.4.1` + - Update @carto/mapnik to [`3.6.2-carto.13`](https://github.com/CartoDB/node-mapnik/blob/v3.6.2-carto.13/CHANGELOG.carto.md#362-carto13). ## 7.0.0 diff --git a/package-lock.json b/package-lock.json index 6e012cea..f50f7c54 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,35 +10,35 @@ "integrity": "sha512-hvD8HlzgWkFsCswIHs+wtrIK8HEGC2L8jny3JY00lQ/xwurLxWR+xMYpgjI821INmjEPRFtajFQkniB1HxNBkQ==" }, "@carto/mapnik": { - "version": "3.6.2-carto.11", - "resolved": "https://registry.npmjs.org/@carto/mapnik/-/mapnik-3.6.2-carto.11.tgz", - "integrity": "sha1-8vC8TQBRCAFpJnxccpuQxryTRmE=", + "version": "3.6.2-carto.13", + "resolved": "https://registry.npmjs.org/@carto/mapnik/-/mapnik-3.6.2-carto.13.tgz", + "integrity": "sha512-F1hxZEBpTLvf04ddzf1t1sjNtHBajFPHL6exfzj47lipTDYj1HB1/50ojlg6a+aBE1n5CcCqocHuB7r1cZMxDA==", "requires": { - "mapnik-vector-tile": "github:cartodb/mapnik-vector-tile#e7ca5471f9e5de81243e6035e70444321fc0a82f", - "nan": "2.10.0", - "node-pre-gyp": "0.10.0" + "mapnik-vector-tile": "github:cartodb/mapnik-vector-tile#v1.6.1-carto.2", + "nan": "2.13.2", + "node-pre-gyp": "0.12.0" }, "dependencies": { "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==" + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", + "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==" } } }, "@carto/tilelive-bridge": { - "version": "github:cartodb/tilelive-bridge#8ce03ffd995cf0986b9d6ee7ffbbf310908625c9", - "from": "github:cartodb/tilelive-bridge#2.5.1-cdb12", + "version": "github:Algunenano/tilelive-bridge#f53c2a681c462fa34ef842a151bceec2746fef9f", + "from": "github:Algunenano/tilelive-bridge#mapnik13", "requires": { - "@carto/mapnik": "3.6.2-carto.11", + "@carto/mapnik": "3.6.2-carto.13", "generic-pool": "^3.6.1" } }, "abaculus": { - "version": "github:cartodb/abaculus#3283c523d8bd4bdec78d90166d9c23ff09865ca8", - "from": "github:cartodb/abaculus#2.0.3-cdb13", + "version": "github:Algunenano/abaculus#d390c502130709f547c1c424f22f4c582bf898ec", + "from": "github:Algunenano/abaculus#mapnik13", "requires": { - "@carto/mapnik": "3.6.2-carto.11", + "@carto/mapnik": "3.6.2-carto.13", "d3-queue": "^2.0.2", "sphericalmercator": "1.0.5" } @@ -410,7 +410,7 @@ "integrity": "sha512-1z3Dk9G8KQlNGurbcmGBvNj8DVCh1Keue9uzyyvB6hKOYzBHMxixAMG0D+8nSsA7oQmWUsx/xkZZ5ZxT9toEHA==", "requires": { "debug": "^3.1.0", - "pg": "github:cartodb/node-postgres#5417d7b29b7272ca2e71bb396899ab3f177a9ae6", + "pg": "github:cartodb/node-postgres#6.4.2-cdb2", "underscore": "~1.6.0" } }, @@ -2034,7 +2034,7 @@ "carto": "0.16.3", "debug": "~3.1.0", "generic-pool": "~2.2.0", - "millstone": "github:cartodb/millstone#f201885250d2d7ea6c870a1e1060ca6bcfdef186", + "millstone": "github:cartodb/millstone#v0.6.17-carto.2", "postcss": "~5.2.8", "postcss-scss": "0.4.0", "postcss-strip-inline-comments": "0.1.5", @@ -2814,22 +2814,27 @@ "optional": true }, "needle": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.4.tgz", - "integrity": "sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.3.0.tgz", + "integrity": "sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg==", "requires": { - "debug": "^2.1.2", + "debug": "^4.1.0", "iconv-lite": "^0.4.4", "sax": "^1.2.4" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, @@ -2856,17 +2861,17 @@ } }, "node-pre-gyp": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz", - "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz", + "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==", "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", - "needle": "^2.2.0", + "needle": "^2.2.1", "nopt": "^4.0.1", "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", - "rc": "^1.1.7", + "rc": "^1.2.7", "rimraf": "^2.6.1", "semver": "^5.3.0", "tar": "^4" @@ -3690,9 +3695,9 @@ } }, "spdx-license-ids": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", - "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==" + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", + "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==" }, "speedometer": { "version": "0.1.4", @@ -3969,10 +3974,10 @@ } }, "tilelive-mapnik": { - "version": "github:cartodb/tilelive-mapnik#3f2021f6c5fd720bf09114ed4e012579564723c0", - "from": "github:cartodb/tilelive-mapnik#0.6.18-cdb20", + "version": "github:Algunenano/tilelive-mapnik#b25d2e3a43f70aa9dff378f363c55950761c18d3", + "from": "github:Algunenano/tilelive-mapnik#mapnik13", "requires": { - "@carto/mapnik": "3.6.2-carto.11", + "@carto/mapnik": "3.6.2-carto.13", "generic-pool": "^3.6.1", "mime": "2.3.1" }, @@ -3989,7 +3994,7 @@ "resolved": "https://registry.npmjs.org/torque.js/-/torque.js-3.1.0.tgz", "integrity": "sha512-xX0BVo/gAy5A2Qx17dbgzjB2cnzuSDwzohdT1hGaKbG0jveL3sKgKE5VyzlN1/l4hP3p6f/m20HvZo3waIawCQ==", "requires": { - "carto": "github:cartodb/carto#85881d99dd7fcf2c4e16478b04db67108d27a50c", + "carto": "github:cartodb/carto#master", "d3": "3.5.17", "turbo-carto": "^0.21.1", "turf-jenks": "~1.0.1" @@ -4186,18 +4191,16 @@ "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=" }, "windshaft": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/windshaft/-/windshaft-5.1.0.tgz", - "integrity": "sha512-MCLZLsktgQi3nSR+hreyTAnYbkhZ4y7HHQToJXXCswrziF2qBV4CCdOXSU+pfIfGv8We52BipvG8odC5erWvGw==", + "version": "5.1.1", + "resolved": "github:algunenano/windshaft#ae05af04504bfa2f9f829ebc35e9cfc00579b310", "requires": { - "@carto/mapnik": "3.6.2-carto.11", - "@carto/tilelive-bridge": "github:cartodb/tilelive-bridge#8ce03ffd995cf0986b9d6ee7ffbbf310908625c9", - "abaculus": "github:cartodb/abaculus#3283c523d8bd4bdec78d90166d9c23ff09865ca8", + "@carto/mapnik": "3.6.2-carto.13", + "@carto/tilelive-bridge": "github:Algunenano/tilelive-bridge#mapnik13", + "abaculus": "github:Algunenano/abaculus#mapnik13", "canvas": "^2.4.1", - "carto": "github:cartodb/carto#85881d99dd7fcf2c4e16478b04db67108d27a50c", + "carto": "github:cartodb/carto#0.15.1-cdb5", "cartodb-psql": "0.13.1", "debug": "3.1.0", - "dot": "1.1.2", "grainstore": "^2.0.0", "queue-async": "1.1.0", "redis-mpool": "0.7.0", @@ -4205,7 +4208,7 @@ "semver": "5.5.0", "sphericalmercator": "1.0.5", "tilelive": "5.12.3", - "tilelive-mapnik": "github:cartodb/tilelive-mapnik#3f2021f6c5fd720bf09114ed4e012579564723c0", + "tilelive-mapnik": "github:Algunenano/tilelive-mapnik#mapnik13", "torque.js": "^3.1.0", "underscore": "1.6.0" } diff --git a/package.json b/package.json index 20b660ca..de2b539c 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "step-profiler": "0.3.0", "turbo-carto": "0.21.0", "underscore": "1.6.0", - "windshaft": "^5.1.0", + "windshaft": "5.1.1", "yargs": "11.1.0" }, "devDependencies": {