diff --git a/Dockerfile.frontend b/Dockerfile.frontend
index a6e06b9306f84..ddf2c1940235f 100644
--- a/Dockerfile.frontend
+++ b/Dockerfile.frontend
@@ -3,7 +3,7 @@
ARG USER_UID=1000
ARG USER_GID=1000
-FROM node:22.9.0 AS builder
+FROM node:lts AS builder
ARG USER_UID
ARG USER_GID
RUN usermod --uid $USER_UID node && \
diff --git a/gulpfile.ts b/gulpfile.ts
index eb770251f5a7d..09728d43aef90 100644
--- a/gulpfile.ts
+++ b/gulpfile.ts
@@ -84,8 +84,8 @@ export function copyJs() {
"./node_modules/foundation-sites/js/vendor/*.js",
"./node_modules/foundation-sites/js/foundation.js",
"./node_modules/papaparse/papaparse.js",
- "./node_modules/osmtogeojson/osmtogeojson.js",
"./node_modules/leaflet/dist/leaflet.js",
+ "./node_modules/leaflet/dist/leaflet-src.esm.js",
"./node_modules/leaflet.markercluster/dist/leaflet.markercluster.js",
"./node_modules/blueimp-tmpl/js/tmpl.js",
"./node_modules/blueimp-load-image/js/load-image.all.min.js",
diff --git a/html/js/display-map.js b/html/js/display-map.js
index d1422dd138ee5..eaac1b6ac4dc6 100644
--- a/html/js/display-map.js
+++ b/html/js/display-map.js
@@ -1,7 +1,7 @@
// This file is part of Product Opener.
//
// Product Opener
-// Copyright (C) 2011-2023 Association Open Food Facts
+// Copyright (C) 2011-2025 Association Open Food Facts
// Contact: contact@openfoodfacts.org
// Address: 21 rue des Iles, 94100 Saint-Maur des Fossés, France
//
@@ -18,10 +18,10 @@
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see .
-/*global L */
-/*exported displayMap*/
+import * as L from './leaflet-src.esm.js';
+import { MarkerClusterGroup } from './leaflet.markercluster.js';
-function displayMap(containerId, pointers) {
+export function displayMap(containerId, pointers) {
const map = L.map(containerId, { maxZoom: 12 });
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
@@ -30,7 +30,7 @@ function displayMap(containerId, pointers) {
}).addTo(map);
- const markers = new L.MarkerClusterGroup({ singleMarkerMode: true });
+ const markers = new MarkerClusterGroup({ singleMarkerMode: true });
const layers = [];
for (const pointer of pointers) {
diff --git a/html/js/display-tag.js b/html/js/display-tag.js
index 7274b3f438547..bd58d0db64b37 100644
--- a/html/js/display-tag.js
+++ b/html/js/display-tag.js
@@ -1,7 +1,7 @@
// This file is part of Product Opener.
//
// Product Opener
-// Copyright (C) 2011-2023 Association Open Food Facts
+// Copyright (C) 2011-2025 Association Open Food Facts
// Contact: contact@openfoodfacts.org
// Address: 21 rue des Iles, 94100 Saint-Maur des Fossés, France
//
@@ -18,15 +18,69 @@
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see .
-/*global L osmtogeojson*/
-/*exported displayMap*/
+import * as L from './leaflet-src.esm.js';
-let map;
-function ensureMapIsDisplayed() {
- if (map) {
- return;
+/* (c) mapstertech https://github.com/mapstertech/mapster-right-hand-rule-fixer/blob/d374e4153ba26c2100b509f59e5a5fe616e267dd/lib/rewind-browser.js */
+class GeoJSONRewind {
+
+ static rewindRing(ring, dir) {
+ let area = 0,
+ err = 0;
+ // eslint-disable-next-line no-plusplus
+ for (let i = 0, len = ring.length, j = len - 1; i < len; j = i++) {
+ const k = (ring[i][0] - ring[j][0]) * (ring[j][1] + ring[i][1]);
+ const m = area + k;
+ err += Math.abs(area) >= Math.abs(k) ? area - m + k : k - m + area;
+ area = m;
+ }
+ // eslint-disable-next-line no-mixed-operators
+ if (area + err >= 0 !== Boolean(dir)) {
+ ring.reverse();
+ }
+ }
+
+ rewindRings(rings, outer) {
+ if (rings.length === 0) {
+ return;
+ }
+
+ this.rewindRing(rings[0], outer);
+ for (let i = 1; i < rings.length; i++) {
+ this.rewindRing(rings[i], !outer);
+ }
+ }
+
+ rewind(gj, outer) {
+ const type = gj?.type;
+ let i;
+
+ if (type === 'FeatureCollection') {
+ for (i = 0; i < gj.features.length; i++) {
+ this.rewind(gj.features[i], outer);
+ }
+
+ } else if (type === 'GeometryCollection') {
+ for (i = 0; i < gj.geometries.length; i++) {
+ this.rewind(gj.geometries[i], outer);
+ }
+
+ } else if (type === 'Feature') {
+ this.rewind(gj.geometry, outer);
+
+ } else if (type === 'Polygon') {
+ this.rewindRings(gj.coordinates, outer);
+
+ } else if (type === 'MultiPolygon') {
+ for (i = 0; i < gj.coordinates.length; i++) {
+ this.rewindRings(gj.coordinates[i], outer);
+ }
+ }
+
+ return gj;
}
+}
+function createLeafletMap() {
const tagDescription = document.getElementById('tag_description');
if (tagDescription) {
tagDescription.classList.remove('large-12');
@@ -38,12 +92,14 @@ function ensureMapIsDisplayed() {
tagMap.style.display = '';
}
- map = L.map('container');
+ const map = L.map('container');
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
maxZoom: 19,
attribution: '© OpenStreetMap'
}).addTo(map);
+
+ return map;
}
function fitBoundsToAllLayers(mapToUpdate) {
@@ -58,94 +114,85 @@ function fitBoundsToAllLayers(mapToUpdate) {
mapToUpdate.fitBounds(latlngbounds);
}
-function runCallbackOnJson(callback) {
- ensureMapIsDisplayed();
- callback(map);
-}
-
-function addWikidataObjectToMap(id) {
- getOpenStreetMapFromWikidata(id, function (data) {
- const bindings = data.results.bindings;
- if (bindings.length === 0) {
- return;
- }
+async function addWikidataObjectToMap(id) {
+ const wikidata_result = await getOpenStreetMapFromWikidata(id);
+ const bindings = wikidata_result.results.bindings;
+ if (bindings.length === 0) {
+ return;
+ }
- const binding = bindings[0];
- const relationId = binding.OpenStreetMap_Relations_ID.value;
- if (!relationId) {
- return;
- }
+ const binding = bindings[0];
+ const relationId = binding.OpenStreetMap_Relations_ID.value;
+ if (!relationId) {
+ return;
+ }
- getGeoJsonFromOsmRelation(relationId, function (geoJson) {
- if (geoJson) {
- runCallbackOnJson(function (mapToUpdate) {
- L.geoJSON(geoJson).addTo(mapToUpdate);
- fitBoundsToAllLayers(mapToUpdate);
- });
- }
- });
- });
+ const geoJson = await getGeoJsonFromOsmRelation(relationId);
+ if (geoJson) {
+ const map = createLeafletMap();
+ L.geoJSON(geoJson).addTo(map);
+ fitBoundsToAllLayers(map);
+ }
}
-function getOpenStreetMapFromWikidata(id, callback) {
- const endpointUrl = 'https://query.wikidata.org/sparql',
- sparqlQuery = "SELECT ?OpenStreetMap_Relations_ID WHERE {\n" +
- " wd:" + id + " wdt:P402 ?OpenStreetMap_Relations_ID.\n" +
- "}",
- settings = {
- headers: { Accept: 'application/sparql-results+json' },
- data: { query: sparqlQuery }
- };
-
- $.ajax(endpointUrl, settings).then(callback);
-}
+async function getOpenStreetMapFromWikidata(id) {
+ const endpointUrl = 'https://query.wikidata.org/sparql';
+ const sparqlQuery = `SELECT ?OpenStreetMap_Relations_ID WHERE {
+ wd:${id} wdt:P402 ?OpenStreetMap_Relations_ID.
+ }`;
+ const settings = {
+ headers: { Accept: 'application/sparql-results+json' }
+ };
+
+ const response = await fetch(`${endpointUrl}?query=${encodeURIComponent(sparqlQuery)}`, settings);
+ const data = await response.json();
-function getOsmDataFromOverpassTurbo(id, callback) {
- $.ajax('https://overpass-api.de/api/interpreter?data=relation%28' + id + '%29%3B%0A%28._%3B%3E%3B%29%3B%0Aout%3B').then(callback);
+ return data;
}
-function getGeoJsonFromOsmRelation(id, callback) {
- getOsmDataFromOverpassTurbo(id, function (xml) {
- callback(osmtogeojson(xml));
- });
+async function getGeoJsonFromOsmRelation(id) {
+ const response = await fetch(`https://polygons.openstreetmap.fr/get_geojson.py?params=0&id=${encodeURIComponent(id)}`);
+ const data = await response.json();
+ const geoJsonRewind = new GeoJSONRewind();
+
+ return geoJsonRewind.rewind(data);
}
function displayPointers(pointers) {
- runCallbackOnJson(function (actualMap) {
- const markers = [];
- for (const pointer of pointers) {
- let coordinates;
-
- // If pointer is an array, it just contains (lat, lng) geo coordinates
- if (Array.isArray(pointer)) {
- coordinates = pointer;
- }
- // Otherwise we have a structured object
- // e.g. from a map element of a knowledge panel
- else {
- coordinates = [pointer.geo.lat, pointer.geo.lng];
- }
-
- const marker = new L.marker(coordinates);
- markers.push(marker);
+ const map = createLeafletMap();
+ const markers = [];
+ for (const pointer of pointers) {
+ let coordinates;
+
+ // If pointer is an array, it just contains (lat, lng) geo coordinates
+ if (Array.isArray(pointer)) {
+ coordinates = pointer;
}
-
- if (markers.length > 0) {
- L.featureGroup(markers).addTo(actualMap);
- fitBoundsToAllLayers(actualMap);
- actualMap.setZoom(8);
+ // Otherwise we have a structured object
+ // e.g. from a map element of a knowledge panel
+ else {
+ coordinates = [pointer.geo.lat, pointer.geo.lng];
}
- });
+
+ const marker = new L.marker(coordinates);
+ markers.push(marker);
+ }
+
+ if (markers.length > 0) {
+ L.featureGroup(markers).addTo(map);
+ fitBoundsToAllLayers(map);
+ map.setZoom(8);
+ }
}
-function displayMap(pointers, wikidataObjects) {
+export async function displayMap(pointers, wikidataObjects) {
if (pointers.length > 0) {
displayPointers(pointers);
}
for (const wikidataObject of wikidataObjects) {
if (wikidataObject !== null) {
- addWikidataObjectToMap(wikidataObject);
+ await addWikidataObjectToMap(wikidataObject); // eslint-disable-line no-await-in-loop
}
}
-}
+}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 6a4e0ab4ada23..5ebfcc0a14ebb 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -28,7 +28,6 @@
"jsvectormap": "^1.6.0",
"leaflet": "^1.7.1",
"leaflet.markercluster": "1.5.3",
- "osmtogeojson": "^3.0.0-beta.4",
"papaparse": "^5.5.2",
"select2": "~4.0"
},
@@ -2272,18 +2271,6 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
- "node_modules/@mapbox/geojson-rewind": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz",
- "integrity": "sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==",
- "dependencies": {
- "get-stream": "^6.0.1",
- "minimist": "^1.2.6"
- },
- "bin": {
- "geojson-rewind": "geojson-rewind"
- }
- },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -2356,174 +2343,6 @@
"@parcel/watcher-win32-x64": "2.5.0"
}
},
- "node_modules/@parcel/watcher-android-arm64": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz",
- "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/watcher-darwin-arm64": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz",
- "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/watcher-darwin-x64": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz",
- "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/watcher-freebsd-x64": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz",
- "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/watcher-linux-arm-glibc": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz",
- "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/watcher-linux-arm-musl": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz",
- "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/watcher-linux-arm64-glibc": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz",
- "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/watcher-linux-arm64-musl": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz",
- "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
"node_modules/@parcel/watcher-linux-x64-glibc": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz",
@@ -2691,12 +2510,6 @@
"integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==",
"dev": true
},
- "node_modules/@types/geojson": {
- "version": "7946.0.14",
- "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz",
- "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==",
- "optional": true
- },
"node_modules/@types/glob-stream": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@types/glob-stream/-/glob-stream-8.0.2.tgz",
@@ -3083,14 +2896,6 @@
"resolved": "https://registry.npmjs.org/@webcomponents/webcomponentsjs/-/webcomponentsjs-2.8.0.tgz",
"integrity": "sha512-loGD63sacRzOzSJgQnB9ZAhaQGkN7wl2Zuw7tsphI5Isa0irijrRo6EnJii/GgjGefIFO8AIO7UivzRhFaEk9w=="
},
- "node_modules/@xmldom/xmldom": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.3.tgz",
- "integrity": "sha512-Lv2vySXypg4nfa51LY1nU8yDAGo/5YwF+EY/rUZgIbfvwVARcd67ttCM8SMsTeJy51YhHYavEq+FS6R0hW9PFQ==",
- "engines": {
- "node": ">=10.0.0"
- }
- },
"node_modules/@yaireo/tagify": {
"version": "4.33.2",
"resolved": "https://registry.npmjs.org/@yaireo/tagify/-/tagify-4.33.2.tgz",
@@ -3604,16 +3409,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/bindings": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
- "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "file-uri-to-path": "1.0.0"
- }
- },
"node_modules/blueimp-canvas-to-blob": {
"version": "3.29.0",
"resolved": "https://registry.npmjs.org/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.29.0.tgz",
@@ -3728,7 +3523,8 @@
"node_modules/buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
},
"node_modules/bytes": {
"version": "3.1.2",
@@ -4232,7 +4028,8 @@
"node_modules/core-util-is": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
+ "dev": true
},
"node_modules/cosmiconfig": {
"version": "9.0.0",
@@ -4688,27 +4485,6 @@
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
- "node_modules/domelementtype": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
- "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w=="
- },
- "node_modules/domhandler": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.2.1.tgz",
- "integrity": "sha512-MFFBQFGkyTuNe3vL9WEw9JdlCwIoBYpOGESLeZAvc/jClYNsOl6P1KzevJbWg76GovdEycfR7/2/Ra7NnqtMKw==",
- "dependencies": {
- "domelementtype": "1"
- }
- },
- "node_modules/domutils": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.3.0.tgz",
- "integrity": "sha512-1UdPmldjSGewOuWE40YYFZB1Q4im4LZoCMXGYeTeLz3R9hvxrDYJPRcPHXR4yBbubQebgGNCY2hwpJxmAiUMzQ==",
- "dependencies": {
- "domelementtype": "1"
- }
- },
"node_modules/dotenv": {
"version": "16.4.7",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz",
@@ -5413,13 +5189,6 @@
"node": "^10.12.0 || >=12.0.0"
}
},
- "node_modules/file-uri-to-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
- "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
- "dev": true,
- "optional": true
- },
"node_modules/fill-range": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
@@ -5780,20 +5549,6 @@
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"dev": true
},
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -5824,45 +5579,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/geojson-numeric": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/geojson-numeric/-/geojson-numeric-0.2.1.tgz",
- "integrity": "sha512-rvItMp3W7pe16o2EQTnRw54v6WHdiE4bYjUsdr3FZskFb6oPC7gjLe4zginP+Wd1B/HLl2acTukfn16Lmwn7lg==",
- "dependencies": {
- "concat-stream": "2.0.0",
- "optimist": "~0.3.5"
- },
- "bin": {
- "geojson-numeric": "geojson-numeric"
- }
- },
- "node_modules/geojson-numeric/node_modules/concat-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
- "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
- "engines": [
- "node >= 6.0"
- ],
- "dependencies": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.0.2",
- "typedarray": "^0.0.6"
- }
- },
- "node_modules/geojson-numeric/node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/get-caller-file": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
@@ -5897,17 +5613,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/get-value": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
@@ -6168,25 +5873,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/glob-watcher/node_modules/fsevents": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
- "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
- "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "dependencies": {
- "bindings": "^1.5.0",
- "nan": "^2.12.1"
- },
- "engines": {
- "node": ">= 4.0"
- }
- },
"node_modules/glob-watcher/node_modules/glob-parent": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
@@ -6856,57 +6542,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/htmlparser2": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.5.1.tgz",
- "integrity": "sha512-9ouaQ6sjVJZS4NhPC65zNm2JCJotiH6BVm6iFvI90hRcsIEISMrgjqMUrPpU9G1VS4vTspH4dyaqSRf6JLQPbg==",
- "dependencies": {
- "domelementtype": "1",
- "domhandler": "2.2",
- "domutils": "1.3",
- "readable-stream": "1.1"
- }
- },
- "node_modules/htmlparser2/node_modules/isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
- },
- "node_modules/htmlparser2/node_modules/readable-stream": {
- "version": "1.1.14",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
- "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- },
- "node_modules/htmlparser2/node_modules/string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
- },
- "node_modules/ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
"node_modules/ignore": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
@@ -6962,7 +6597,8 @@
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
},
"node_modules/ini": {
"version": "1.3.8",
@@ -7417,26 +7053,6 @@
"node": ">=6"
}
},
- "node_modules/jsonparse": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz",
- "integrity": "sha512-fw7Q/8gFR8iSekUi9I+HqWIap6mywuoe7hQIg3buTVjuZgALKj4HAmm0X6f+TaL4c9NJbvyFQdaI2ppr5p6dnQ==",
- "engines": [
- "node >= 0.2.0"
- ]
- },
- "node_modules/JSONStream": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.8.0.tgz",
- "integrity": "sha512-PiV28BpoUorz9kKFwRbD7+wg0t/k0ITHKn0DgCU44YZ/GaGAZRPt9q5PzoifC85gE55SEPIdMu0Labfxevj8cw==",
- "dependencies": {
- "jsonparse": "0.0.5",
- "through": "~2.2.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/jsvectormap": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/jsvectormap/-/jsvectormap-1.6.0.tgz",
@@ -8099,14 +7715,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/minipass": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
@@ -8318,13 +7926,6 @@
"node": ">= 0.10"
}
},
- "node_modules/nan": {
- "version": "2.20.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz",
- "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==",
- "dev": true,
- "optional": true
- },
"node_modules/nanoid": {
"version": "3.3.7",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
@@ -8632,14 +8233,6 @@
"wrappy": "1"
}
},
- "node_modules/optimist": {
- "version": "0.3.7",
- "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz",
- "integrity": "sha512-TCx0dXQzVtSCg2OgY/bO9hjM9cV4XYx09TVK+s3+FhkjT6LovsLe+pPMzpWf+6yXK/hUizs2gUoTw3jHM0VaTQ==",
- "dependencies": {
- "wordwrap": "~0.0.2"
- }
- },
"node_modules/optionator": {
"version": "0.9.4",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
@@ -8678,63 +8271,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/osm-polygon-features": {
- "version": "0.9.2",
- "resolved": "https://registry.npmjs.org/osm-polygon-features/-/osm-polygon-features-0.9.2.tgz",
- "integrity": "sha512-5zNEFCq+G6X2TDkqbKYLF1+GtWVCCLA8zX+FVhSogsiTRsGquyaGRy5cYNW4BE3ci0MKOLvNTkFNsjsCNtgz0A=="
- },
- "node_modules/osmtogeojson": {
- "version": "3.0.0-beta.5",
- "resolved": "https://registry.npmjs.org/osmtogeojson/-/osmtogeojson-3.0.0-beta.5.tgz",
- "integrity": "sha512-izvaUWnunrYvMB4LB0ZN15O1+g90c628yHS4SeSR3daVSBF9vdTHL7iVHfg0wEr1uEYjQ+lMJHCiYFusL5yKVg==",
- "dependencies": {
- "@mapbox/geojson-rewind": "0.5.2",
- "@xmldom/xmldom": "0.8.3",
- "concat-stream": "2.0.0",
- "geojson-numeric": "0.2.1",
- "htmlparser2": "3.5.1",
- "JSONStream": "0.8.0",
- "optimist": "~0.3.5",
- "osm-polygon-features": "^0.9.1",
- "tiny-osmpbf": "^0.1.0"
- },
- "bin": {
- "osmtogeojson": "osmtogeojson"
- },
- "engines": {
- "node": ">=0.5"
- },
- "optionalDependencies": {
- "@types/geojson": "^7946.0"
- }
- },
- "node_modules/osmtogeojson/node_modules/concat-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
- "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
- "engines": [
- "node >= 6.0"
- ],
- "dependencies": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.0.2",
- "typedarray": "^0.0.6"
- }
- },
- "node_modules/osmtogeojson/node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/p-limit": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
@@ -8951,18 +8487,6 @@
"node": ">= 14.16"
}
},
- "node_modules/pbf": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz",
- "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==",
- "dependencies": {
- "ieee754": "^1.1.12",
- "resolve-protobuf-schema": "^2.1.0"
- },
- "bin": {
- "pbf": "bin/pbf"
- }
- },
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -9155,11 +8679,6 @@
"react-is": "^16.13.1"
}
},
- "node_modules/protocol-buffers-schema": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz",
- "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw=="
- },
"node_modules/pump": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
@@ -9604,14 +9123,6 @@
"node": ">= 0.10"
}
},
- "node_modules/resolve-protobuf-schema": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz",
- "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==",
- "dependencies": {
- "protocol-buffers-schema": "^3.3.1"
- }
- },
"node_modules/resolve-url": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
@@ -9723,7 +9234,8 @@
"node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
},
"node_modules/safe-regex": {
"version": "1.1.0",
@@ -10308,6 +9820,7 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
"dependencies": {
"safe-buffer": "~5.1.0"
}
@@ -10922,11 +10435,6 @@
"integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
"dev": true
},
- "node_modules/through": {
- "version": "2.2.7",
- "resolved": "https://registry.npmjs.org/through/-/through-2.2.7.tgz",
- "integrity": "sha512-JIR0m0ybkmTcR8URann+HbwKmodP+OE8UCbsifQDYMLD5J3em1Cdn3MYPpbEd5elGDwmP98T+WbqP/tvzA5Mjg=="
- },
"node_modules/through2": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
@@ -10984,20 +10492,6 @@
"node": ">=0.12"
}
},
- "node_modules/tiny-inflate": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz",
- "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="
- },
- "node_modules/tiny-osmpbf": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/tiny-osmpbf/-/tiny-osmpbf-0.1.0.tgz",
- "integrity": "sha512-Sl0xuDdM0+bnrYPhTAWnQ5eui8+2cpYCnsBxq0EFR1/IgmfB7+FiC23I8aa7tdP4AjaWvBUMK34kfXdY6C1LCQ==",
- "dependencies": {
- "pbf": "^3.0.4",
- "tiny-inflate": "^1.0.2"
- }
- },
"node_modules/to-absolute-glob": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
@@ -11172,7 +10666,8 @@
"node_modules/typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
+ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
+ "dev": true
},
"node_modules/typescript": {
"version": "5.5.4",
@@ -11428,7 +10923,8 @@
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
},
"node_modules/v8-compile-cache-lib": {
"version": "3.0.1",
@@ -11596,14 +11092,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/wordwrap": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
- "integrity": "sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw==",
- "engines": {
- "node": ">=0.4.0"
- }
- },
"node_modules/workerpool": {
"version": "6.5.1",
"resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz",
diff --git a/package.json b/package.json
index 4bace0ba2cc3b..d9e43a5fbb6a8 100644
--- a/package.json
+++ b/package.json
@@ -50,7 +50,6 @@
"jsvectormap": "^1.6.0",
"leaflet": "^1.7.1",
"leaflet.markercluster": "1.5.3",
- "osmtogeojson": "^3.0.0-beta.4",
"papaparse": "^5.5.2",
"select2": "~4.0",
"jsbarcode": "^3.11.6"
@@ -95,4 +94,4 @@
"url": "https://opencollective.com/openfoodfacts-server"
},
"snyk": true
-}
\ No newline at end of file
+}
diff --git a/templates/web/pages/products_map/map_of_products.tt.html b/templates/web/pages/products_map/map_of_products.tt.html
index 5484611f93cb0..16315e56b2f86 100644
--- a/templates/web/pages/products_map/map_of_products.tt.html
+++ b/templates/web/pages/products_map/map_of_products.tt.html
@@ -1,11 +1,8 @@
-
-
-
[% title %]
@@ -15,7 +12,8 @@
→ [% edq(lang('search_map_link')) %]
[% END %]
-
diff --git a/templates/web/pages/tags_map/map_of_tags.tt.html b/templates/web/pages/tags_map/map_of_tags.tt.html
index 2e0dd57c8d3b9..b109d825dd008 100644
--- a/templates/web/pages/tags_map/map_of_tags.tt.html
+++ b/templates/web/pages/tags_map/map_of_tags.tt.html
@@ -1,11 +1,10 @@
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-