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:
124
src/main.js
124
src/main.js
@@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user