Upgrade to node10, latest dependencies

use node10 (latest node that has binary built @mapbox/mapbox-gl-native v5.0.2)
use latest canvas and sharp API
This commit is contained in:
Yuri Astrakhan 2019-12-21 12:05:43 -05:00
parent f77ccd06af
commit 736e8d393a
5 changed files with 30 additions and 28 deletions

View file

@ -1,4 +1,4 @@
FROM node:6.15.1-stretch FROM node:10-stretch
MAINTAINER Petr Sloup <petr.sloup@klokantech.com> MAINTAINER Petr Sloup <petr.sloup@klokantech.com>
ENV NODE_ENV="production" ENV NODE_ENV="production"

View file

@ -1,4 +1,4 @@
FROM node:6.15.1-stretch FROM node:10-stretch
MAINTAINER Petr Sloup <petr.sloup@klokantech.com> MAINTAINER Petr Sloup <petr.sloup@klokantech.com>
ENV NODE_ENV="production" ENV NODE_ENV="production"

View file

@ -2,7 +2,7 @@
# Simply run "docker build -f Dockerfile_test ." # Simply run "docker build -f Dockerfile_test ."
# WARNING: sometimes it fails with a core dumped exception # WARNING: sometimes it fails with a core dumped exception
FROM node:6-stretch FROM node:10-stretch
MAINTAINER Petr Sloup <petr.sloup@klokantech.com> MAINTAINER Petr Sloup <petr.sloup@klokantech.com>
RUN apt-get -qq update \ RUN apt-get -qq update \

View file

@ -1,6 +1,6 @@
{ {
"name": "tileserver-gl", "name": "tileserver-gl",
"version": "2.6.0", "version": "3.0.0",
"description": "Map tile server for JSON GL styles - vector and server side generated raster tiles", "description": "Map tile server for JSON GL styles - vector and server side generated raster tiles",
"main": "src/main.js", "main": "src/main.js",
"bin": "src/main.js", "bin": "src/main.js",
@ -13,36 +13,37 @@
}, },
"license": "BSD-2-Clause", "license": "BSD-2-Clause",
"engines": { "engines": {
"node": ">=6 <7" "node": ">=10 <11"
}, },
"scripts": { "scripts": {
"test": "mocha test/**.js --timeout 10000" "test": "mocha test/**.js --timeout 10000",
"docker": "docker build -f Dockerfile . && docker run --rm -i -p 8080:80 $(docker build -q .)"
}, },
"dependencies": { "dependencies": {
"@mapbox/mapbox-gl-native": "4.0.0", "@mapbox/mapbox-gl-native": "5.0.2",
"@mapbox/mbtiles": "0.10.0", "@mapbox/mbtiles": "0.11.0",
"@mapbox/sphericalmercator": "1.1.0", "@mapbox/sphericalmercator": "1.1.0",
"@mapbox/vector-tile": "1.3.1", "@mapbox/vector-tile": "1.3.1",
"advanced-pool": "0.3.3", "advanced-pool": "0.3.3",
"canvas": "1.6.13", "canvas": "2.6.1",
"clone": "2.1.2", "clone": "2.1.2",
"color": "3.1.0", "color": "3.1.2",
"commander": "2.19.0", "commander": "4.0.1",
"cors": "2.8.5", "cors": "2.8.5",
"express": "4.16.4", "express": "4.17.1",
"glyph-pbf-composite": "0.0.2", "glyph-pbf-composite": "0.0.2",
"handlebars": "4.1.2", "handlebars": "4.5.3",
"http-shutdown": "^1.2.0", "http-shutdown": "1.2.1",
"morgan": "1.9.1", "morgan": "1.9.1",
"pbf": "3.1.0", "pbf": "3.2.1",
"proj4": "2.5.0", "proj4": "2.6.0",
"request": "2.88.0", "request": "2.88.0",
"sharp": "0.21.1", "sharp": "0.23.4",
"tileserver-gl-styles": "1.2.0" "tileserver-gl-styles": "1.2.0"
}, },
"devDependencies": { "devDependencies": {
"mocha": "^5.2.0", "mocha": "^6.2.2",
"should": "^13.2.0", "should": "^13.2.3",
"supertest": "^3.1.0" "supertest": "^4.0.2"
} }
} }

View file

@ -11,8 +11,9 @@ var advancedPool = require('advanced-pool'),
// see https://github.com/lovell/sharp/issues/371 // see https://github.com/lovell/sharp/issues/371
var sharp = require('sharp'); var sharp = require('sharp');
var Canvas = require('canvas'), const { createCanvas } = require('canvas');
clone = require('clone'),
var clone = require('clone'),
Color = require('color'), Color = require('color'),
express = require('express'), express = require('express'),
mercator = new (require('@mapbox/sphericalmercator'))(), mercator = new (require('@mapbox/sphericalmercator'))(),
@ -419,7 +420,7 @@ module.exports = function(options, repo, params, id, publicUrl, dataResolver) {
params.width *= 2; params.width *= 2;
params.height *= 2; params.height *= 2;
} }
var tileMargin = Math.max(options.tileMargin || 0, 0); var tileMargin = Math.max(options.tileMargin || 0, 0);
if (z > 2 && tileMargin > 0) { if (z > 2 && tileMargin > 0) {
params.width += tileMargin * 2 * scale; params.width += tileMargin * 2 * scale;
@ -440,7 +441,7 @@ module.exports = function(options, repo, params, id, publicUrl, dataResolver) {
channels: 4 channels: 4
} }
}); });
if (z > 2 && tileMargin > 0) { if (z > 2 && tileMargin > 0) {
image.extract({ left: tileMargin * scale, top: tileMargin * scale, width: width * scale, height: height * scale }); image.extract({ left: tileMargin * scale, top: tileMargin * scale, width: width * scale, height: height * scale });
} }
@ -451,10 +452,10 @@ module.exports = function(options, repo, params, id, publicUrl, dataResolver) {
} }
if (opt_overlay) { if (opt_overlay) {
image.overlayWith(opt_overlay); image.composite([{ input: opt_overlay }]);
} }
if (watermark) { if (watermark) {
var canvas = new Canvas(scale * width, scale * height); var canvas = createCanvas(scale * width, scale * height);
var ctx = canvas.getContext('2d'); var ctx = canvas.getContext('2d');
ctx.scale(scale, scale); ctx.scale(scale, scale);
ctx.font = '10px sans-serif'; ctx.font = '10px sans-serif';
@ -464,7 +465,7 @@ module.exports = function(options, repo, params, id, publicUrl, dataResolver) {
ctx.fillStyle = 'rgba(0,0,0,.4)'; ctx.fillStyle = 'rgba(0,0,0,.4)';
ctx.fillText(watermark, 5, height - 5); ctx.fillText(watermark, 5, height - 5);
image.overlayWith(canvas.toBuffer()); image.composite([{ input: canvas.toBuffer() }]);
} }
var formatQuality = (params.formatQuality || {})[format] || var formatQuality = (params.formatQuality || {})[format] ||
@ -561,7 +562,7 @@ module.exports = function(options, repo, params, id, publicUrl, dataResolver) {
center[1] -= minEdge; center[1] -= minEdge;
} }
var canvas = new Canvas(scale * w, scale * h); var canvas = createCanvas(scale * w, scale * h);
var ctx = canvas.getContext('2d'); var ctx = canvas.getContext('2d');
ctx.scale(scale, scale); ctx.scale(scale, scale);
if (bearing) { if (bearing) {