diff --git a/public/templates/index.tmpl b/public/templates/index.tmpl index 2de6634..250d056 100644 --- a/public/templates/index.tmpl +++ b/public/templates/index.tmpl @@ -79,7 +79,7 @@

{{tileJSON.name}}

identifier: {{@key}}{{#if formatted_filesize}} | size: {{formatted_filesize}}{{/if}}
-
type: {{#is_vector}}vector{{/is_vector}}{{^is_vector}}raster{{/is_vector}} data {{#if source_type}} | ext: {{source_type}}{{/if}}
+
type: {{#is_vector}}vector{{/is_vector}}{{^is_vector}}raster{{/is_vector}} data {{#if sourceType}} | ext: {{sourceType}}{{/if}}

services: TileJSON {{#if xyz_link}} diff --git a/src/main.js b/src/main.js index d32f11a..5077ba0 100644 --- a/src/main.js +++ b/src/main.js @@ -9,7 +9,7 @@ import axios from 'axios'; import { server } from './server.js'; import MBTiles from '@mapbox/mbtiles'; import { isValidHttpUrl } from './utils.js'; -import { PMtilesOpen, GetPMtilesInfo } from './pmtiles_adapter.js'; +import { openPMtiles, getPMtilesInfo } from './pmtiles_adapter.js'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); @@ -62,7 +62,7 @@ const opts = program.opts(); console.log(`Starting ${packageJson.name} v${packageJson.version}`); -const StartServer = (configPath, config) => { +const startServer = (configPath, config) => { let publicUrl = opts.public_url; if (publicUrl && publicUrl.lastIndexOf('/') !== publicUrl.length - 1) { publicUrl += '/'; @@ -81,7 +81,7 @@ const StartServer = (configPath, config) => { }); }; -const StartWithInputFile = async (inputFile) => { +const startWithInputFile = async (inputFile) => { console.log(`[INFO] Automatically creating config file for ${inputFile}`); console.log(`[INFO] Only a basic preview style will be used.`); console.log( @@ -123,8 +123,8 @@ const StartWithInputFile = async (inputFile) => { const extension = inputFile.split('.').pop().toLowerCase(); if (extension === 'pmtiles') { - let FileOpenInfo = PMtilesOpen(inputFile); - const metadata = await GetPMtilesInfo(FileOpenInfo); + const fileOpenInfo = openPMtiles(inputFile); + const metadata = await getPMtilesInfo(fileOpenInfo); if ( metadata.format === 'pbf' && @@ -174,7 +174,7 @@ const StartWithInputFile = async (inputFile) => { console.log('Run with --verbose to see the config file here.'); } - return StartServer(null, config); + return startServer(null, config); } else { if (isValidHttpUrl(inputFile)) { console.log( @@ -235,7 +235,7 @@ const StartWithInputFile = async (inputFile) => { console.log('Run with --verbose to see the config file here.'); } - return StartServer(null, config); + return startServer(null, config); }); }); } @@ -251,7 +251,7 @@ fs.stat(path.resolve(opts.config), async (err, stats) => { } if (inputFile) { - return StartWithInputFile(inputFile); + return startWithInputFile(inputFile); } else { // try to find in the cwd const files = fs.readdirSync(process.cwd()); @@ -266,7 +266,7 @@ fs.stat(path.resolve(opts.config), async (err, stats) => { } if (inputFile) { console.log(`No input file specified, using ${inputFile}`); - return StartWithInputFile(inputFile); + return startWithInputFile(inputFile); } else { const url = 'https://github.com/maptiler/tileserver-gl/releases/download/v1.3.0/zurich_switzerland.mbtiles'; @@ -283,7 +283,7 @@ fs.stat(path.resolve(opts.config), async (err, stats) => { }); response.data.pipe(writer); - writer.on('finish', () => StartWithInputFile(filename)); + writer.on('finish', () => startWithInputFile(filename)); writer.on('error', (err) => console.error(`Error writing file: ${err}`), ); @@ -294,6 +294,6 @@ fs.stat(path.resolve(opts.config), async (err, stats) => { } } else { console.log(`Using specified config file from ${opts.config}`); - return StartServer(opts.config, null); + return startServer(opts.config, null); } }); diff --git a/src/pmtiles_adapter.js b/src/pmtiles_adapter.js index a827584..cab3f54 100644 --- a/src/pmtiles_adapter.js +++ b/src/pmtiles_adapter.js @@ -11,7 +11,7 @@ class PMTilesFileSource { } async getBytes(offset, length) { const buffer = Buffer.alloc(length); - await ReadFileBytes(this.fd, buffer, offset); + await readFileBytes(this.fd, buffer, offset); const ab = buffer.buffer.slice( buffer.byteOffset, buffer.byteOffset + buffer.byteLength, @@ -26,7 +26,7 @@ class PMTilesFileSource { * @param buffer * @param offset */ -async function ReadFileBytes(fd, buffer, offset) { +async function readFileBytes(fd, buffer, offset) { return new Promise((resolve, reject) => { fs.read(fd, buffer, 0, buffer.length, offset, (err) => { if (err) { @@ -41,7 +41,7 @@ async function ReadFileBytes(fd, buffer, offset) { * * @param FilePath */ -export function PMtilesOpen(FilePath) { +export function openPMtiles(FilePath) { let pmtiles = undefined; if (isValidHttpUrl(FilePath)) { @@ -59,12 +59,12 @@ export function PMtilesOpen(FilePath) { * * @param pmtiles */ -export async function GetPMtilesInfo(pmtiles) { +export async function getPMtilesInfo(pmtiles) { const header = await pmtiles.getHeader(); const metadata = await pmtiles.getMetadata(); //Add missing metadata from header - metadata['format'] = GetPmtilesTileType(header.tileType).type; + metadata['format'] = getPmtilesTileType(header.tileType).type; metadata['minzoom'] = header.minZoom; metadata['maxzoom'] = header.maxZoom; @@ -103,23 +103,23 @@ export async function GetPMtilesInfo(pmtiles) { * @param x * @param y */ -export async function GetPMtilesTile(pmtiles, z, x, y) { +export async function getPMtilesTile(pmtiles, z, x, y) { const header = await pmtiles.getHeader(); - const TileType = GetPmtilesTileType(header.tileType); + const tileType = getPmtilesTileType(header.tileType); let zxyTile = await pmtiles.getZxy(z, x, y); if (zxyTile && zxyTile.data) { zxyTile = Buffer.from(zxyTile.data); } else { zxyTile = undefined; } - return { data: zxyTile, header: TileType.header }; + return { data: zxyTile, header: tileType.header }; } /** * * @param typenum */ -function GetPmtilesTileType(typenum) { +function getPmtilesTileType(typenum) { let head = {}; let tileType; switch (typenum) { diff --git a/src/serve_data.js b/src/serve_data.js index 0221369..4a95b1f 100644 --- a/src/serve_data.js +++ b/src/serve_data.js @@ -12,9 +12,9 @@ import { VectorTile } from '@mapbox/vector-tile'; import { getTileUrls, isValidHttpUrl, fixTileJSONCenter } from './utils.js'; import { - PMtilesOpen, - GetPMtilesInfo, - GetPMtilesTile, + openPMtiles, + getPMtilesInfo, + getPMtilesTile, } from './pmtiles_adapter.js'; export const serve_data = { @@ -53,8 +53,8 @@ export const serve_data = { ) { return res.status(404).send('Out of bounds'); } - if (item.source_type === 'pmtiles') { - let tileinfo = await GetPMtilesTile(item.source, z, x, y); + if (item.sourceType === 'pmtiles') { + let tileinfo = await getPMtilesTile(item.source, z, x, y); if (tileinfo == undefined || tileinfo.data == undefined) { return res.status(404).send('Not found'); } else { @@ -99,7 +99,7 @@ export const serve_data = { return res.status(200).send(data); } - } else if (item.source_type === 'mbtiles') { + } else if (item.sourceType === 'mbtiles') { item.source.getTile(z, x, y, (err, data, headers) => { let isGzipped; if (err) { @@ -223,11 +223,11 @@ export const serve_data = { } let source; - let source_type; + let sourceType; if (inputType === 'pmtiles') { - source = PMtilesOpen(inputFile); - source_type = 'pmtiles'; - const metadata = await GetPMtilesInfo(source); + source = openPMtiles(inputFile); + sourceType = 'pmtiles'; + const metadata = await getPMtilesInfo(source); tileJSON['name'] = id; tileJSON['format'] = 'pbf'; @@ -245,7 +245,7 @@ export const serve_data = { tileJSON = options.dataDecoratorFunc(id, 'tilejson', tileJSON); } } else if (inputType === 'mbtiles') { - source_type = 'mbtiles'; + sourceType = 'mbtiles'; const sourceInfoPromise = new Promise((resolve, reject) => { source = new MBTiles(inputFile + '?mode=ro', (err) => { if (err) { @@ -285,7 +285,7 @@ export const serve_data = { tileJSON, publicUrl, source, - source_type, + sourceType, }; }, }; diff --git a/src/serve_rendered.js b/src/serve_rendered.js index 4ff0e8b..2a82804 100644 --- a/src/serve_rendered.js +++ b/src/serve_rendered.js @@ -25,9 +25,9 @@ import { fixTileJSONCenter, } from './utils.js'; import { - PMtilesOpen, - GetPMtilesInfo, - GetPMtilesTile, + openPMtiles, + getPMtilesInfo, + getPMtilesTile, } from './pmtiles_adapter.js'; import { renderOverlay, renderWatermark, renderAttribution } from './render.js'; @@ -398,7 +398,7 @@ const respondImage = ( if (mode === 'tile' && tileMargin === 0) { pool = item.map.renderers[scale]; } else { - pool = item.map.renderers_static[scale]; + pool = item.map.renderersStatic[scale]; } pool.acquire((err, renderer) => { const mlglZ = Math.max(0, z - 1); @@ -471,14 +471,14 @@ const respondImage = ( image.resize(width * scale, height * scale); } - const composite_array = []; + const composites = []; if (overlay) { - composite_array.push({ input: overlay }); + composites.push({ input: overlay }); } if (item.watermark) { const canvas = renderWatermark(width, height, scale, item.watermark); - composite_array.push({ input: canvas.toBuffer() }); + composites.push({ input: canvas.toBuffer() }); } if (mode === 'static' && item.staticAttributionText) { @@ -489,11 +489,11 @@ const respondImage = ( item.staticAttributionText, ); - composite_array.push({ input: canvas.toBuffer() }); + composites.push({ input: canvas.toBuffer() }); } - if (composite_array.length > 0) { - image.composite(composite_array); + if (composites.length > 0) { + image.composite(composites); } const formatQuality = (options.formatQuality || {})[format]; @@ -847,9 +847,9 @@ export const serve_rendered = { add: async (options, repo, params, id, publicUrl, dataResolver) => { const map = { renderers: [], - renderers_static: [], + renderersStatic: [], sources: {}, - source_types: {}, + sourceTypes: {}, }; let styleJSON; @@ -888,7 +888,7 @@ export const serve_rendered = { const parts = req.url.split('/'); const sourceId = parts[2]; const source = map.sources[sourceId]; - const source_type = map.source_types[sourceId]; + const sourceType = map.sourceTypes[sourceId]; const sourceInfo = styleJSON.sources[sourceId]; const z = parts[3] | 0; @@ -896,8 +896,8 @@ export const serve_rendered = { const y = parts[5].split('.')[0] | 0; const format = parts[5].split('.')[1]; - if (source_type === 'pmtiles') { - let tileinfo = await GetPMtilesTile(source, z, x, y); + if (sourceType === 'pmtiles') { + let tileinfo = await getPMtilesTile(source, z, x, y); let data = tileinfo.data; let headers = tileinfo.header; if (data == undefined) { @@ -931,7 +931,7 @@ export const serve_rendered = { callback(null, response); } - } else if (source_type === 'mbtiles') { + } else if (sourceType === 'mbtiles') { source.getTile(z, x, y, (err, data, headers) => { if (err) { if (options.verbose) @@ -1092,7 +1092,7 @@ export const serve_rendered = { const queue = []; for (const name of Object.keys(styleJSON.sources)) { - let source_type; + let sourceType; let source = styleJSON.sources[name]; let url = source.url; if ( @@ -1113,10 +1113,10 @@ export const serve_rendered = { } let inputFile; - const DataInfo = dataResolver(dataId); - if (DataInfo.inputFile) { - inputFile = DataInfo.inputFile; - source_type = DataInfo.fileType; + const dataInfo = dataResolver(dataId); + if (dataInfo.inputFile) { + inputFile = dataInfo.inputFile; + sourceType = dataInfo.fileType; } else { console.error(`ERROR: data "${inputFile}" not found!`); process.exit(1); @@ -1129,10 +1129,10 @@ export const serve_rendered = { } } - if (source_type === 'pmtiles') { - map.sources[name] = PMtilesOpen(inputFile); - map.source_types[name] = 'pmtiles'; - const metadata = await GetPMtilesInfo(map.sources[name]); + if (sourceType === 'pmtiles') { + map.sources[name] = openPMtiles(inputFile); + map.sourceTypes[name] = 'pmtiles'; + const metadata = await getPMtilesInfo(map.sources[name]); if (!repoobj.dataProjWGStoInternalWGS && metadata.proj4) { // how to do this for multiple sources with different proj4 defs? @@ -1177,7 +1177,7 @@ export const serve_rendered = { console.error(err); return; } - map.source_types[name] = 'mbtiles'; + map.sourceTypes[name] = 'mbtiles'; if (!repoobj.dataProjWGStoInternalWGS && info.proj4) { // how to do this for multiple sources with different proj4 defs? @@ -1236,7 +1236,7 @@ export const serve_rendered = { const minPoolSize = minPoolSizes[i]; const maxPoolSize = Math.max(minPoolSize, maxPoolSizes[j]); map.renderers[s] = createPool(s, 'tile', minPoolSize, maxPoolSize); - map.renderers_static[s] = createPool( + map.renderersStatic[s] = createPool( s, 'static', minPoolSize, @@ -1250,7 +1250,7 @@ export const serve_rendered = { item.map.renderers.forEach((pool) => { pool.close(); }); - item.map.renderers_static.forEach((pool) => { + item.map.renderersStatic.forEach((pool) => { pool.close(); }); } diff --git a/src/server.js b/src/server.js index 6b10644..2b382a0 100644 --- a/src/server.js +++ b/src/server.js @@ -179,15 +179,15 @@ function start(opts) { item, id, opts.publicUrl, - (StyleSourceId, protocol) => { + (styleSourceId, protocol) => { let dataItemId; for (const id of Object.keys(data)) { - if (id === StyleSourceId) { + if (id === styleSourceId) { // Style id was found in data ids, return that id dataItemId = id; } else { const fileType = Object.keys(data[id])[0]; - if (data[id][fileType] === StyleSourceId) { + if (data[id][fileType] === styleSourceId) { // Style id was found in data filename, return the id that filename belong to dataItemId = id; } @@ -199,21 +199,21 @@ function start(opts) { } else { if (!allowMoreData) { console.log( - `ERROR: style "${item.style}" using unknown file "${StyleSourceId}"! Skipping...`, + `ERROR: style "${item.style}" using unknown file "${styleSourceId}"! Skipping...`, ); return undefined; } else { let id = - StyleSourceId.substr(0, StyleSourceId.lastIndexOf('.')) || - StyleSourceId; - if (isValidHttpUrl(StyleSourceId)) { + styleSourceId.substr(0, styleSourceId.lastIndexOf('.')) || + styleSourceId; + if (isValidHttpUrl(styleSourceId)) { id = - fnv1a(StyleSourceId) + '_' + id.replace(/^.*\/(.*)$/, '$1'); + fnv1a(styleSourceId) + '_' + id.replace(/^.*\/(.*)$/, '$1'); } while (data[id]) id += '_'; //if the data source id already exists, add a "_" untill it doesn't //Add the new data source to the data array. data[id] = { - [protocol]: StyleSourceId, + [protocol]: styleSourceId, }; return id; @@ -236,15 +236,15 @@ function start(opts) { item, id, opts.publicUrl, - (StyleSourceId) => { + function dataResolver(styleSourceId) { let fileType; let inputFile; for (const id of Object.keys(data)) { fileType = Object.keys(data[id])[0]; - if (StyleSourceId == id) { + if (styleSourceId == id) { inputFile = data[id][fileType]; break; - } else if (data[id][fileType] == StyleSourceId) { + } else if (data[id][fileType] == styleSourceId) { inputFile = data[id][fileType]; break; }