Merge branch 'master' into windows

Signed-off-by: Andrew Calcutt <acalcutt@techidiots.net>
This commit is contained in:
Andrew Calcutt 2023-11-15 21:38:59 -05:00
commit 49c27cf77d
6 changed files with 688 additions and 694 deletions

View file

@ -28,5 +28,9 @@ module.exports = {
rules: { rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'@typescript-eslint/no-unused-vars': [
'warn',
{ argsIgnorePattern: 'next|err|info|reject' },
],
}, },
}; };

1266
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
{ {
"name": "tileserver-gl", "name": "tileserver-gl",
"version": "4.6.5", "version": "4.6.6",
"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",
@ -27,6 +27,7 @@
"@maplibre/maplibre-gl-style-spec": "18.0.0", "@maplibre/maplibre-gl-style-spec": "18.0.0",
"@sindresorhus/fnv1a": "3.0.0", "@sindresorhus/fnv1a": "3.0.0",
"advanced-pool": "0.3.3", "advanced-pool": "0.3.3",
"axios": "^1.6.2",
"canvas": "2.11.2", "canvas": "2.11.2",
"chokidar": "3.5.3", "chokidar": "3.5.3",
"clone": "2.1.2", "clone": "2.1.2",
@ -40,26 +41,25 @@
"pbf": "3.2.1", "pbf": "3.2.1",
"pmtiles": "2.11.0", "pmtiles": "2.11.0",
"proj4": "2.9.2", "proj4": "2.9.2",
"request": "2.88.2",
"sanitize-filename": "1.6.3", "sanitize-filename": "1.6.3",
"sharp": "0.32.3", "sharp": "0.32.3",
"tileserver-gl-styles": "2.0.0" "tileserver-gl-styles": "2.0.0"
}, },
"devDependencies": { "devDependencies": {
"@commitlint/cli": "^18.2.0", "@commitlint/cli": "^18.4.1",
"@commitlint/config-conventional": "^18.1.0", "@commitlint/config-conventional": "^18.4.0",
"@typescript-eslint/eslint-plugin": "^5.61.0", "@typescript-eslint/eslint-plugin": "^6.11.0",
"@typescript-eslint/parser": "^5.62.0", "@typescript-eslint/parser": "^6.11.0",
"chai": "4.3.10", "chai": "4.3.10",
"eslint": "^8.53.0", "eslint": "^8.53.0",
"eslint-config-prettier": "^9.0.0", "eslint-config-prettier": "^9.0.0",
"eslint-plugin-jsdoc": "^46.8.2", "eslint-plugin-jsdoc": "^46.9.0",
"eslint-plugin-prettier": "^4.2.1", "eslint-plugin-prettier": "^5.0.1",
"eslint-plugin-security": "^1.7.1", "eslint-plugin-security": "^1.7.1",
"husky": "^8.0.3", "husky": "^8.0.3",
"lint-staged": "^15.0.2", "lint-staged": "^15.1.0",
"mocha": "^10.2.0", "mocha": "^10.2.0",
"prettier": "^2.8.8", "prettier": "^3.1.0",
"should": "^13.2.3", "should": "^13.2.3",
"supertest": "^6.3.3", "supertest": "^6.3.3",
"yaml-lint": "^1.7.0" "yaml-lint": "^1.7.0"

View file

@ -5,7 +5,7 @@
import fs from 'node:fs'; import fs from 'node:fs';
import path from 'path'; import path from 'path';
import { fileURLToPath } from 'url'; import { fileURLToPath } from 'url';
import request from 'request'; import axios from 'axios';
import { server } from './server.js'; import { server } from './server.js';
import MBTiles from '@mapbox/mbtiles'; import MBTiles from '@mapbox/mbtiles';
import { isValidHttpUrl } from './utils.js'; import { isValidHttpUrl } from './utils.js';
@ -271,11 +271,24 @@ fs.stat(path.resolve(opts.config), (err, stats) => {
const url = const url =
'https://github.com/maptiler/tileserver-gl/releases/download/v1.3.0/zurich_switzerland.mbtiles'; 'https://github.com/maptiler/tileserver-gl/releases/download/v1.3.0/zurich_switzerland.mbtiles';
const filename = 'zurich_switzerland.mbtiles'; const filename = 'zurich_switzerland.mbtiles';
const stream = fs.createWriteStream(filename); const writer = fs.createWriteStream(filename);
console.log(`No input file found`); console.log(`No input file found`);
console.log(`[DEMO] Downloading sample data (${filename}) from ${url}`); console.log(`[DEMO] Downloading sample data (${filename}) from ${url}`);
stream.on('finish', () => StartWithInputFile(filename)); axios({
return request.get(url).pipe(stream); url,
method: 'GET',
responseType: 'stream',
})
.then((response) => {
response.data.pipe(writer);
writer.on('finish', () => StartWithInputFile(filename));
writer.on('error', (err) =>
console.error(`Error writing file: ${err}`),
);
})
.catch((error) => {
console.error(`Error downloading file: ${error}`);
});
} }
} }
} else { } else {

View file

@ -17,7 +17,7 @@ import mlgl from '@maplibre/maplibre-gl-native';
import MBTiles from '@mapbox/mbtiles'; import MBTiles from '@mapbox/mbtiles';
import polyline from '@mapbox/polyline'; import polyline from '@mapbox/polyline';
import proj4 from 'proj4'; import proj4 from 'proj4';
import request from 'request'; import axios from 'axios';
import { import {
getFontsPbf, getFontsPbf,
getTileUrls, getTileUrls,
@ -1353,37 +1353,36 @@ export const serve_rendered = {
}); });
} }
} else if (protocol === 'http' || protocol === 'https') { } else if (protocol === 'http' || protocol === 'https') {
request( try {
{ const response = await axios.get(req.url, {
url: req.url, responseType: 'arraybuffer', // Get the response as raw buffer
encoding: null, // Axios handles gzip by default, so no need for a gzip flag
gzip: true, });
},
(err, res, body) => { const responseHeaders = response.headers;
const responseData = response.data;
const parsedResponse = {};
if (responseHeaders['last-modified']) {
parsedResponse.modified = new Date(
responseHeaders['last-modified'],
);
}
if (responseHeaders.expires) {
parsedResponse.expires = new Date(responseHeaders.expires);
}
if (responseHeaders.etag) {
parsedResponse.etag = responseHeaders.etag;
}
parsedResponse.data = responseData;
callback(null, parsedResponse);
} catch (error) {
const parts = url.parse(req.url); const parts = url.parse(req.url);
const extension = path.extname(parts.pathname).toLowerCase(); const extension = path.extname(parts.pathname).toLowerCase();
const format = extensionToFormat[extension] || ''; const format = extensionToFormat[extension] || '';
if (err || res.statusCode < 200 || res.statusCode >= 300) {
// console.log('HTTP error', err || res.statusCode);
createEmptyResponse(format, '', callback); createEmptyResponse(format, '', callback);
return;
} }
const response = {};
if (res.headers.modified) {
response.modified = new Date(res.headers.modified);
}
if (res.headers.expires) {
response.expires = new Date(res.headers.expires);
}
if (res.headers.etag) {
response.etag = res.headers.etag;
}
response.data = body;
callback(null, response);
},
);
} }
}, },
}); });

View file

@ -151,10 +151,9 @@ function start(opts) {
if (options.dataDecorator) { if (options.dataDecorator) {
try { try {
options.dataDecoratorFunc = require(path.resolve( options.dataDecoratorFunc = require(
paths.root, path.resolve(paths.root, options.dataDecorator),
options.dataDecorator, );
));
} catch (e) {} } catch (e) {}
} }
@ -427,9 +426,8 @@ function start(opts) {
return res.status(404).send('Not found'); return res.status(404).send('Not found');
} }
} }
data[ data['server_version'] =
'server_version' `${packageJson.name} v${packageJson.version}`;
] = `${packageJson.name} v${packageJson.version}`;
data['public_url'] = opts.publicUrl || '/'; data['public_url'] = opts.publicUrl || '/';
data['is_light'] = isLight; data['is_light'] = isLight;
data['key_query_part'] = req.query.key data['key_query_part'] = req.query.key