* chore: fix crash on ARM during rendering
Signed-off-by: Martin d'Allens <martin.dallens@liberty-rider.com>
* chore: remove useless comment
Signed-off-by: Martin d'Allens <martin.dallens@liberty-rider.com>
---------
Signed-off-by: Martin d'Allens <martin.dallens@liberty-rider.com>
Promise code never worked: listFonts did not wait for fs.stat() to resolve().
This was not evident because late results were still used.
A recent PR made it worse: late results are now ignored.
This manifested for styles with missing fonts, no fallback could be used.
Signed-off-by: Martin d'Allens <martin.dallens@liberty-rider.com>
Maplibre-native outputs premultiplied pixels values. The sharp library did not
support it so we added code to cancel the alpha premultiplication.
Note that this can only visible onr raster tiles (and probably static maps).
The sharp library now supports premultiplied pixels with the right config.
Let's use it: it should be faster and easie to maintain.
Feature announced here:
https://github.com/lovell/sharp/issues/1599#issuecomment-837004081
Feature developped here by @mnutt:
https://github.com/lovell/sharp/pull/2685
Signed-off-by: Martin d'Allens <martin.dallens@liberty-rider.com>
* chore: make sure error exit codes of tests are returned
Signed-off-by: Martin d'Allens <martin.dallens@liberty-rider.com>
* chore: replace the last 'var' with 'const'
Signed-off-by: Martin d'Allens <martin.dallens@liberty-rider.com>
* chore: extract duplicated font listing
Signed-off-by: Martin d'Allens <martin.dallens@liberty-rider.com>
* chore: extract rendering functions to a new file
Signed-off-by: Martin d'Allens <martin.dallens@liberty-rider.com>
* chore: move nested respondImage() function to top level
Signed-off-by: Martin d'Allens <martin.dallens@liberty-rider.com>
* chore: simplify respondImage() args
Signed-off-by: Martin d'Allens <martin.dallens@liberty-rider.com>
* chore: fix typo in rendeAttribution
Signed-off-by: Martin d'Allens <martin.dallens@liberty-rider.com>
---------
Signed-off-by: Martin d'Allens <martin.dallens@liberty-rider.com>
Root cause: modified regex in #1002 caused URLs to be broken.
Fixed by reverting previous regexes.
Tests:
* Confirmed by building and running locally with formerly breaking config.json and style json.
* Run tests via Dockerfile_test
Adds pmtiles support to TileServer-GL
Signed-off-by: Andrew Calcutt <acalcutt@techidiots.net>
Signed-off-by: Michael Nutt <michael@nuttnet.net>
Co-authored-by: Michael Nutt <michael@nuttnet.net>
* chore: cleanup useless decodeURIComponent() calls
Signed-off-by: Martin d'Allens <martin.dallens@liberty-rider.com>
* chore: try to fix CodeQL failure "Polynomial regular expression"
Fix 1:
\d\.?\d* can backtrack catastrophically
\d(\.\d*)? is safer
Fix 2:
Useless parenthesis around "enc:"
Fix 3:
The httpTester regex was misleading. It did not really check for "http".
Simplified to show its true meaning. The behaviour should not have changed.
Signed-off-by: Martin d'Allens <martin.dallens@liberty-rider.com>
* chore: try to optimize the regex further, to fix CodeQL failure
Signed-off-by: Martin d'Allens <martin.dallens@liberty-rider.com>
* chore: consistency between previous changes, docs, and serve_style.js
Signed-off-by: Martin d'Allens <martin.dallens@liberty-rider.com>
---------
Signed-off-by: Martin d'Allens <martin.dallens@liberty-rider.com>
* fix: incorrect polyline decoding
Don't split static image encoded path on pipe or comma
Signed-off-by: boldtrn <boldtrn@gmail.com>
* fix: still allow other parameters other than enc:
That way we can still style individual paths
Signed-off-by: boldtrn <boldtrn@gmail.com>
* chore: lint
Signed-off-by: Andrew Calcutt <acalcutt@techidiots.net>
* chore: lint + comment
Signed-off-by: Andrew Calcutt <acalcutt@techidiots.net>
* docs: try to clarify path information
Signed-off-by: Andrew Calcutt <acalcutt@techidiots.net>
* fix: stroke color not working unless path is specified
i found this issue testing encoded paths. If width is not specifed, stroke color does not work
Signed-off-by: Andrew Calcutt <acalcutt@techidiots.net>
* docs: show different options
Signed-off-by: Andrew Calcutt <acalcutt@techidiots.net>
---------
Signed-off-by: boldtrn <boldtrn@gmail.com>
Signed-off-by: Andrew Calcutt <acalcutt@techidiots.net>
Co-authored-by: Andrew Calcutt <acalcutt@techidiots.net>
* 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>
* fix: allow to style each individual path for static images
Signed-off-by: Samuel Leihkamm <s.leihkamm@gmx.com>
* chore: cleanup drawPath render function
Signed-off-by: Samuel Leihkamm <s.leihkamm@gmx.com>
---------
Signed-off-by: Samuel Leihkamm <s.leihkamm@gmx.com>
* Use center and zoom from style json as default center for tilejson of rendered maps
* Round zoom as style spec allows fractional zooms while tilejson spec does not
* Handle SIGTERM
Resolve#781
* Add `Caught signal ...` messages
Container log when sending a `SIGHUP` signal and then a `SIGTERM` signal using
`docker kill --signal ...` :
```
Starting tileserver-gl v4.4.8
[INFO] Automatically creating config file for zurich_switzerland.mbtiles
[INFO] Only a basic preview style will be used.
[INFO] See documentation to learn how to create config.json file.
Run with --verbose to see the config file here.
Starting server
Listening at http://[::]:8080/
Startup complete
Caught signal SIGHUP, refreshing
Stopping server and reloading config
Starting server
Listening at http://[::]:8080/
Startup complete
Caught signal SIGTERM, stopping gracefully
```
Note that the numeric signal values, as used in the shell version, were
replaced by signal names, as used in nodeJS.
* run 'npm run lint:js:fix'
---------
Co-authored-by: acalcutt <acalcutt@techidiots.net>
* Add Docker Healthcheck
Fixes#635
* Update Dockerfile_light
* Update healthcheck.js
fix healthcheck output error: "file:///usr/src/app/src/healthcheck.js:1\nvar http = require(\"http\");\n ^\n\nReferenceError: require is not defined in ES module scope, you can use import instead\nThis file is being treated as an ES module because it has a '.js' file extension and '/usr/src/app/package.json' contains \"type\": \"module\". To treat it as a CommonJS script, rename it to use the '.cjs' file extension.\n at file:///usr/src/app/src/healthcheck.js:1:12\n at ModuleJob.run (node:internal/modules/esm/module_job:193:25)\n at async Promise.all (index 0)\n at async ESMLoader.import (node:internal/modules/esm/loader:526:24)\n at async loadESM (node:internal/process/esm_loader:91:5)\n at async handleMainPromise (node:internal/modules/run_main:65:12)\n"
* update version
Co-authored-by: acalcutt <acalcutt@techidiots.net>
* extended staticmap capabilities
* added allowRemoteMarkerIcons configuration option and restricted fetching of remote marker icons only when option is set to true;
asynchronously load all available icons in a settings object on server startup;
replaced fs.existsSync() call in serve_rendered when drawing marker icons with a check against available icons settings object;
* updated documentation for linecap parameter in staticmaps endpoint;
added linejoin parameter to staticmaps endpoint;
* added capability of staticmap endpoint to draw multiple paths
In WMTS the publicUrl path was missed and it was not working properly.
Similar story about wmts.tmpl: the baseUrl is not working properly when
tileserver is hidden behind the proxy with different root path.
* Minor bugfix: make baseUrl always use '/' in the end
Co-authored-by: Oleksandr Shyshatskyi <oshyshatskyi@cloudlinux.com>
Co-authored-by: acalcutt <acalcutt@techidiots.net>
* switch to esm module
* Update package.json
* change to maplibre package
* fix tests
* eslint
* remove extra package updates
* Delete package-lock.json
* change 'fs' to 'node:fs'
* put back node 10.
without the package updates this still works
* remove trailing commas
* remove unassociated fix / formatting
* remove unassociated fix
* remove eslint from this PR
* remove unassociated fix
* lint
* Merge remote-tracking branch 'upstream/master' into esm_update
* fix mlgl
* update maplibre-native to new version with arm64
* update minor version