fix: don't crash the server on processing issues (#994)
* fix: don't crash the server on processing issues Use a try/catch for async functions Signed-off-by: boldtrn <boldtrn@gmail.com> * chore: run lint Signed-off-by: boldtrn <boldtrn@gmail.com> --------- Signed-off-by: boldtrn <boldtrn@gmail.com>
This commit is contained in:
parent
775ea74a2a
commit
c13e5e6821
1 changed files with 195 additions and 193 deletions
|
@ -54,7 +54,6 @@ const cachedEmptyResponses = {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an appropriate mlgl response for http errors.
|
* Create an appropriate mlgl response for http errors.
|
||||||
*
|
|
||||||
* @param {string} format The format (a sharp format or 'pbf').
|
* @param {string} format The format (a sharp format or 'pbf').
|
||||||
* @param {string} color The background color (or empty string for transparent).
|
* @param {string} color The background color (or empty string for transparent).
|
||||||
* @param {Function} callback The mlgl callback.
|
* @param {Function} callback The mlgl callback.
|
||||||
|
@ -102,7 +101,6 @@ function createEmptyResponse(format, color, callback) {
|
||||||
/**
|
/**
|
||||||
* Parses coordinate pair provided to pair of floats and ensures the resulting
|
* Parses coordinate pair provided to pair of floats and ensures the resulting
|
||||||
* pair is a longitude/latitude combination depending on lnglat query parameter.
|
* pair is a longitude/latitude combination depending on lnglat query parameter.
|
||||||
*
|
|
||||||
* @param {List} coordinatePair Coordinate pair.
|
* @param {List} coordinatePair Coordinate pair.
|
||||||
* @param coordinates
|
* @param coordinates
|
||||||
* @param {object} query Request query parameters.
|
* @param {object} query Request query parameters.
|
||||||
|
@ -127,7 +125,6 @@ const parseCoordinatePair = (coordinates, query) => {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses a coordinate pair from query arguments and optionally transforms it.
|
* Parses a coordinate pair from query arguments and optionally transforms it.
|
||||||
*
|
|
||||||
* @param {List} coordinatePair Coordinate pair.
|
* @param {List} coordinatePair Coordinate pair.
|
||||||
* @param {object} query Request query parameters.
|
* @param {object} query Request query parameters.
|
||||||
* @param {Function} transformer Optional transform function.
|
* @param {Function} transformer Optional transform function.
|
||||||
|
@ -145,7 +142,6 @@ const parseCoordinates = (coordinatePair, query, transformer) => {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses paths provided via query into a list of path objects.
|
* Parses paths provided via query into a list of path objects.
|
||||||
*
|
|
||||||
* @param {object} query Request query parameters.
|
* @param {object} query Request query parameters.
|
||||||
* @param {Function} transformer Optional transform function.
|
* @param {Function} transformer Optional transform function.
|
||||||
*/
|
*/
|
||||||
|
@ -220,7 +216,6 @@ const extractPathsFromQuery = (query, transformer) => {
|
||||||
* on marker object.
|
* on marker object.
|
||||||
* Options adhere to the following format
|
* Options adhere to the following format
|
||||||
* [optionName]:[optionValue]
|
* [optionName]:[optionValue]
|
||||||
*
|
|
||||||
* @param {List[String]} optionsList List of option strings.
|
* @param {List[String]} optionsList List of option strings.
|
||||||
* @param {object} marker Marker object to configure.
|
* @param {object} marker Marker object to configure.
|
||||||
*/
|
*/
|
||||||
|
@ -255,7 +250,6 @@ const parseMarkerOptions = (optionsList, marker) => {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses markers provided via query into a list of marker objects.
|
* Parses markers provided via query into a list of marker objects.
|
||||||
*
|
|
||||||
* @param {object} query Request query parameters.
|
* @param {object} query Request query parameters.
|
||||||
* @param {object} options Configuration options.
|
* @param {object} options Configuration options.
|
||||||
* @param {Function} transformer Optional transform function.
|
* @param {Function} transformer Optional transform function.
|
||||||
|
@ -335,7 +329,6 @@ const extractMarkersFromQuery = (query, options, transformer) => {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Transforms coordinates to pixels.
|
* Transforms coordinates to pixels.
|
||||||
*
|
|
||||||
* @param {List[Number]} ll Longitude/Latitude coordinate pair.
|
* @param {List[Number]} ll Longitude/Latitude coordinate pair.
|
||||||
* @param {number} zoom Map zoom level.
|
* @param {number} zoom Map zoom level.
|
||||||
*/
|
*/
|
||||||
|
@ -347,7 +340,6 @@ const precisePx = (ll, zoom) => {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Draws a marker in cavans context.
|
* Draws a marker in cavans context.
|
||||||
*
|
|
||||||
* @param {object} ctx Canvas context object.
|
* @param {object} ctx Canvas context object.
|
||||||
* @param {object} marker Marker object parsed by extractMarkersFromQuery.
|
* @param {object} marker Marker object parsed by extractMarkersFromQuery.
|
||||||
* @param {number} z Map zoom level.
|
* @param {number} z Map zoom level.
|
||||||
|
@ -419,7 +411,6 @@ const drawMarker = (ctx, marker, z) => {
|
||||||
* Wraps drawing of markers into list of promises and awaits them.
|
* Wraps drawing of markers into list of promises and awaits them.
|
||||||
* It's required because images are expected to load asynchronous in canvas js
|
* It's required because images are expected to load asynchronous in canvas js
|
||||||
* even when provided from a local disk.
|
* even when provided from a local disk.
|
||||||
*
|
|
||||||
* @param {object} ctx Canvas context object.
|
* @param {object} ctx Canvas context object.
|
||||||
* @param {List[Object]} markers Marker objects parsed by extractMarkersFromQuery.
|
* @param {List[Object]} markers Marker objects parsed by extractMarkersFromQuery.
|
||||||
* @param {number} z Map zoom level.
|
* @param {number} z Map zoom level.
|
||||||
|
@ -438,7 +429,6 @@ const drawMarkers = async (ctx, markers, z) => {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Draws a list of coordinates onto a canvas and styles the resulting path.
|
* Draws a list of coordinates onto a canvas and styles the resulting path.
|
||||||
*
|
|
||||||
* @param {object} ctx Canvas context object.
|
* @param {object} ctx Canvas context object.
|
||||||
* @param {List[Number]} path List of coordinates.
|
* @param {List[Number]} path List of coordinates.
|
||||||
* @param {object} query Request query parameters.
|
* @param {object} query Request query parameters.
|
||||||
|
@ -889,6 +879,7 @@ export const serve_rendered = {
|
||||||
app.get(
|
app.get(
|
||||||
util.format(staticPattern, centerPattern),
|
util.format(staticPattern, centerPattern),
|
||||||
async (req, res, next) => {
|
async (req, res, next) => {
|
||||||
|
try {
|
||||||
const item = repo[req.params.id];
|
const item = repo[req.params.id];
|
||||||
if (!item) {
|
if (!item) {
|
||||||
return res.sendStatus(404);
|
return res.sendStatus(404);
|
||||||
|
@ -954,10 +945,14 @@ export const serve_rendered = {
|
||||||
overlay,
|
overlay,
|
||||||
'static',
|
'static',
|
||||||
);
|
);
|
||||||
|
} catch (e) {
|
||||||
|
next(e);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
const serveBounds = async (req, res, next) => {
|
const serveBounds = async (req, res, next) => {
|
||||||
|
try {
|
||||||
const item = repo[req.params.id];
|
const item = repo[req.params.id];
|
||||||
if (!item) {
|
if (!item) {
|
||||||
return res.sendStatus(404);
|
return res.sendStatus(404);
|
||||||
|
@ -1031,6 +1026,9 @@ export const serve_rendered = {
|
||||||
overlay,
|
overlay,
|
||||||
'static',
|
'static',
|
||||||
);
|
);
|
||||||
|
} catch (e) {
|
||||||
|
next(e);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const boundsPattern = util.format(
|
const boundsPattern = util.format(
|
||||||
|
@ -1070,6 +1068,7 @@ export const serve_rendered = {
|
||||||
app.get(
|
app.get(
|
||||||
util.format(staticPattern, autoPattern),
|
util.format(staticPattern, autoPattern),
|
||||||
async (req, res, next) => {
|
async (req, res, next) => {
|
||||||
|
try {
|
||||||
const item = repo[req.params.id];
|
const item = repo[req.params.id];
|
||||||
if (!item) {
|
if (!item) {
|
||||||
return res.sendStatus(404);
|
return res.sendStatus(404);
|
||||||
|
@ -1161,6 +1160,9 @@ export const serve_rendered = {
|
||||||
overlay,
|
overlay,
|
||||||
'static',
|
'static',
|
||||||
);
|
);
|
||||||
|
} catch (e) {
|
||||||
|
next(e);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue