Update code to ES6

* var  ->  let / const
* [].forEach  ->  for (... of ...)
* '...' + var  ->  template strings  `...${var}`
* function  ->  arrow functions `=>`
* use === and !==  instead of == and !=
This commit is contained in:
Yuri Astrakhan
2019-12-21 14:09:20 -05:00
parent 736e8d393a
commit 7f8be27844
7 changed files with 701 additions and 733 deletions

View File

@@ -2,20 +2,20 @@
'use strict';
var fs = require('fs'),
path = require('path'),
request = require('request');
const fs = require('fs');
const path = require('path');
const request = require('request');
var mbtiles = require('@mapbox/mbtiles');
const MBTiles = require('@mapbox/mbtiles');
var packageJson = require('../package');
const packageJson = require('../package');
var args = process.argv;
if (args.length >= 3 && args[2][0] != '-') {
const args = process.argv;
if (args.length >= 3 && args[2][0] !== '-') {
args.splice(2, 0, '--mbtiles');
}
var opts = require('commander')
const opts = require('commander')
.description('tileserver-gl startup options')
.usage('tileserver-gl [mbtiles] [options]')
.option(
@@ -68,10 +68,10 @@ var opts = require('commander')
)
.parse(args);
console.log('Starting ' + packageJson.name + ' v' + packageJson.version);
console.log(`Starting ${packageJson.name} v${packageJson.version}`);
var startServer = function(configPath, config) {
var publicUrl = opts.public_url;
const startServer = (configPath, config) => {
let publicUrl = opts.public_url;
if (publicUrl && publicUrl.lastIndexOf('/') !== publicUrl.length - 1) {
publicUrl += '/';
}
@@ -89,29 +89,34 @@ var startServer = function(configPath, config) {
});
};
var startWithMBTiles = function(mbtilesFile) {
console.log('Automatically creating config file for ' + mbtilesFile);
const startWithMBTiles = (mbtilesFile) => {
console.log(`Automatically creating config file for ${mbtilesFile}`);
mbtilesFile = path.resolve(process.cwd(), mbtilesFile);
var mbtilesStats = fs.statSync(mbtilesFile);
const mbtilesStats = fs.statSync(mbtilesFile);
if (!mbtilesStats.isFile() || mbtilesStats.size === 0) {
console.log('ERROR: Not valid MBTiles file: ' + mbtilesFile);
console.log(`ERROR: Not valid MBTiles file: ${mbtilesFile}`);
process.exit(1);
}
var instance = new mbtiles(mbtilesFile, function(err) {
instance.getInfo(function(err, info) {
const instance = new MBTiles(mbtilesFile, (err) => {
if (err) {
console.log('ERROR: Unable to open MBTiles.');
console.log(` Make sure ${path.basename(mbtilesFile)} is valid MBTiles.`);
process.exit(1);
}
instance.getInfo((err, info) => {
if (err || !info) {
console.log('ERROR: Metadata missing in the MBTiles.');
console.log(' Make sure ' + path.basename(mbtilesFile) +
' is valid MBTiles.');
console.log(` Make sure ${path.basename(mbtilesFile)} is valid MBTiles.`);
process.exit(1);
}
var bounds = info.bounds;
const bounds = info.bounds;
var styleDir = path.resolve(__dirname, "../node_modules/tileserver-gl-styles/");
const styleDir = path.resolve(__dirname, "../node_modules/tileserver-gl-styles/");
var config = {
const config = {
"options": {
"paths": {
"root": styleDir,
@@ -124,33 +129,32 @@ var startWithMBTiles = function(mbtilesFile) {
"data": {}
};
if (info.format == 'pbf' &&
info.name.toLowerCase().indexOf('openmaptiles') > -1) {
var omtV = (info.version || '').split('.');
if (info.format === 'pbf' &&
info.name.toLowerCase().indexOf('openmaptiles') > -1) {
const omtV = (info.version || '').split('.');
config['data']['v' + omtV[0]] = {
config['data'][`v${omtV[0]}`] = {
"mbtiles": path.basename(mbtilesFile)
};
var styles = fs.readdirSync(path.resolve(styleDir, 'styles'));
for (var i = 0; i < styles.length; i++) {
var styleName = styles[i];
var styleFileRel = styleName + '/style.json';
var styleFile = path.resolve(styleDir, 'styles', styleFileRel);
const styles = fs.readdirSync(path.resolve(styleDir, 'styles'));
for (let styleName of styles) {
const styleFileRel = styleName + '/style.json';
const styleFile = path.resolve(styleDir, 'styles', styleFileRel);
if (fs.existsSync(styleFile)) {
var styleJSON = require(styleFile);
var omtVersionCompatibility =
const styleJSON = require(styleFile);
const omtVersionCompatibility =
((styleJSON || {}).metadata || {})['openmaptiles:version'] || 'x';
var m = omtVersionCompatibility.toLowerCase().split('.');
const m = omtVersionCompatibility.toLowerCase().split('.');
var isCompatible = !(
m[0] != 'x' && (
m[0] != omtV[0] || (
(m[1] || 'x') != 'x' && (
m[1] != omtV[1] || (
(m[2] || 'x') != 'x' &&
m[2] != omtV[2]
const isCompatible = !(
m[0] !== 'x' && (
m[0] !== omtV[0] || (
(m[1] || 'x') !== 'x' && (
m[1] !== omtV[1] || (
(m[2] || 'x') !== 'x' &&
m[2] !== omtV[2]
)
)
)
@@ -158,25 +162,22 @@ var startWithMBTiles = function(mbtilesFile) {
);
if (isCompatible) {
var styleObject = {
config['styles'][styleName] = {
"style": styleFileRel,
"tilejson": {
"bounds": bounds
}
};
config['styles'][styleName] = styleObject;
} else {
console.log('Style', styleName, 'requires OpenMapTiles version',
omtVersionCompatibility, 'but mbtiles is version', info.version);
console.log(`Style ${styleName} requires OpenMapTiles version ${omtVersionCompatibility} but mbtiles is version ${info.version}`);
}
}
}
} else {
console.log('WARN: MBTiles not in "openmaptiles" format. ' +
'Serving raw data only...');
console.log(`WARN: MBTiles not in "openmaptiles" format. Serving raw data only...`);
config['data'][(info.id || 'mbtiles')
.replace(/\//g, '_')
.replace(/\:/g, '_')
.replace(/:/g, '_')
.replace(/\?/g, '_')] = {
"mbtiles": path.basename(mbtilesFile)
};
@@ -193,16 +194,15 @@ var startWithMBTiles = function(mbtilesFile) {
});
};
fs.stat(path.resolve(opts.config), function(err, stats) {
fs.stat(path.resolve(opts.config), (err, stats) => {
if (err || !stats.isFile() || stats.size === 0) {
var mbtiles = opts.mbtiles;
let mbtiles = opts.mbtiles;
if (!mbtiles) {
// try to find in the cwd
var files = fs.readdirSync(process.cwd());
for (var i=0; i < files.length; i++) {
var filename = files[i];
const files = fs.readdirSync(process.cwd());
for (let filename of files) {
if (filename.endsWith('.mbtiles')) {
var mbTilesStats = fs.statSync(filename);
const mbTilesStats = fs.statSync(filename);
if (mbTilesStats.isFile() && mbTilesStats.size > 0) {
mbtiles = filename;
break;
@@ -210,16 +210,14 @@ fs.stat(path.resolve(opts.config), function(err, stats) {
}
}
if (mbtiles) {
console.log('No MBTiles specified, using ' + mbtiles);
console.log(`No MBTiles specified, using ${mbtiles}`);
return startWithMBTiles(mbtiles);
} else {
var url = 'https://github.com/klokantech/tileserver-gl/releases/download/v1.3.0/zurich_switzerland.mbtiles';
var filename = 'zurich_switzerland.mbtiles';
var stream = fs.createWriteStream(filename);
console.log('Downloading sample data (' + filename + ') from ' + url);
stream.on('finish', function() {
return startWithMBTiles(filename);
});
const url = 'https://github.com/klokantech/tileserver-gl/releases/download/v1.3.0/zurich_switzerland.mbtiles';
const filename = 'zurich_switzerland.mbtiles';
const stream = fs.createWriteStream(filename);
console.log(`Downloading sample data (${filename}) from ${url}`);
stream.on('finish', () => startWithMBTiles(filename));
return request.get(url).pipe(stream);
}
}
@@ -227,7 +225,7 @@ fs.stat(path.resolve(opts.config), function(err, stats) {
return startWithMBTiles(mbtiles);
}
} else {
console.log('Using specified config file from ' + opts.config);
console.log(`Using specified config file from ${opts.config}`);
return startServer(opts.config, null);
}
});