diff --git a/Docs/CalculatedTags.md b/Docs/CalculatedTags.md
index c1df5523b..2d16a7987 100644
--- a/Docs/CalculatedTags.md
+++ b/Docs/CalculatedTags.md
@@ -141,6 +141,7 @@ Some advanced functions are available on **feat** as well:
- overlapWith
- closest
- memberships
+ - score
### distanceTo
@@ -168,4 +169,12 @@ Some advanced functions are available on **feat** as well:
For example: `_part_of_walking_routes=feat.memberships().map(r => r.relation.tags.name).join(';')`
+
+### score
+
+ Given the path of an aspected routing json file, will calculate the score. This score is wrapped in a UIEventSource, so for further calculations, use `.map(score => ...)`
+
+For example: `_comfort_score=feat.score('https://raw.githubusercontent.com/pietervdvn/AspectedRouting/master/Examples/bicycle/aspects/bicycle.comfort.json')`
+
+ 0. path
Generated from SimpleMetaTagger, ExtraFunction
\ No newline at end of file
diff --git a/Docs/TagInfo/mapcomplete_artwork.json b/Docs/TagInfo/mapcomplete_artwork.json
new file mode 100644
index 000000000..f968777e1
--- /dev/null
+++ b/Docs/TagInfo/mapcomplete_artwork.json
@@ -0,0 +1,111 @@
+{
+ "data_format": 1,
+ "project": {
+ "name": "MapComplete Open Artwork Map",
+ "description": "Welcome to Open Artwork Map, a map of statues, busts, grafittis and other artwork all over the world",
+ "project_url": "https://mapcomplete.osm.be/artwork",
+ "doc_url": "https://github.com/pietervdvn/MapComplete/tree/master/assets/themes/",
+ "icon_url": "https://mapcomplete.osm.be/assets/themes/artwork/artwork.svg",
+ "contact_name": "Pieter Vander Vennet, MapComplete",
+ "contact_email": "pietervdvn@posteo.net"
+ },
+ "tags": [
+ {
+ "key": "tourism",
+ "description": "The MapComplete theme Open Artwork Map has a layer Artworks showing features with this tag",
+ "value": "artwork"
+ },
+ {
+ "key": "image",
+ "description": "The layer 'Artworks allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "mapillary",
+ "description": "The layer 'Artworks allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "wikidata",
+ "description": "The layer 'Artworks allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "wikipedia",
+ "description": "The layer 'Artworks allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "artwork_type",
+ "description": "Layer 'Artworks' shows and asks freeform values for key 'artwork_type' (in the MapComplete.osm.be theme 'Open Artwork Map')"
+ },
+ {
+ "key": "artwork_type",
+ "description": "Layer 'Artworks' shows artwork_type=architecture with a fixed text, namely 'Architecture' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Artwork Map')",
+ "value": "architecture"
+ },
+ {
+ "key": "artwork_type",
+ "description": "Layer 'Artworks' shows artwork_type=mural with a fixed text, namely 'Mural' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Artwork Map')",
+ "value": "mural"
+ },
+ {
+ "key": "artwork_type",
+ "description": "Layer 'Artworks' shows artwork_type=painting with a fixed text, namely 'Painting' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Artwork Map')",
+ "value": "painting"
+ },
+ {
+ "key": "artwork_type",
+ "description": "Layer 'Artworks' shows artwork_type=sculpture with a fixed text, namely 'Sculpture' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Artwork Map')",
+ "value": "sculpture"
+ },
+ {
+ "key": "artwork_type",
+ "description": "Layer 'Artworks' shows artwork_type=statue with a fixed text, namely 'Statue' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Artwork Map')",
+ "value": "statue"
+ },
+ {
+ "key": "artwork_type",
+ "description": "Layer 'Artworks' shows artwork_type=bust with a fixed text, namely 'Bust' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Artwork Map')",
+ "value": "bust"
+ },
+ {
+ "key": "artwork_type",
+ "description": "Layer 'Artworks' shows artwork_type=stone with a fixed text, namely 'Stone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Artwork Map')",
+ "value": "stone"
+ },
+ {
+ "key": "artwork_type",
+ "description": "Layer 'Artworks' shows artwork_type=installation with a fixed text, namely 'Installation' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Artwork Map')",
+ "value": "installation"
+ },
+ {
+ "key": "artwork_type",
+ "description": "Layer 'Artworks' shows artwork_type=graffiti with a fixed text, namely 'Graffiti' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Artwork Map')",
+ "value": "graffiti"
+ },
+ {
+ "key": "artwork_type",
+ "description": "Layer 'Artworks' shows artwork_type=relief with a fixed text, namely 'Relief' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Artwork Map')",
+ "value": "relief"
+ },
+ {
+ "key": "artwork_type",
+ "description": "Layer 'Artworks' shows artwork_type=azulejo with a fixed text, namely 'Azulejo (Spanish decorative tilework)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Artwork Map')",
+ "value": "azulejo"
+ },
+ {
+ "key": "artwork_type",
+ "description": "Layer 'Artworks' shows artwork_type=tilework with a fixed text, namely 'Tilework' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Artwork Map')",
+ "value": "tilework"
+ },
+ {
+ "key": "artist_name",
+ "description": "Layer 'Artworks' shows and asks freeform values for key 'artist_name' (in the MapComplete.osm.be theme 'Open Artwork Map')"
+ },
+ {
+ "key": "website",
+ "description": "Layer 'Artworks' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Open Artwork Map')"
+ },
+ {
+ "key": "wikidata",
+ "description": "Layer 'Artworks' shows and asks freeform values for key 'wikidata' (in the MapComplete.osm.be theme 'Open Artwork Map')"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Docs/TagInfo/mapcomplete_bicyclelib.json b/Docs/TagInfo/mapcomplete_bicyclelib.json
index fea4ac413..21d234066 100644
--- a/Docs/TagInfo/mapcomplete_bicyclelib.json
+++ b/Docs/TagInfo/mapcomplete_bicyclelib.json
@@ -5,7 +5,7 @@
"description": "A bicycle library is a place where bicycles can be lent, often for a small yearly fee",
"project_url": "https://mapcomplete.osm.be/bicyclelib",
"doc_url": "https://github.com/pietervdvn/MapComplete/tree/master/assets/themes/",
- "icon_url": "https://mapcomplete.osm.be/assets/themes/bicycle_library/logo.svg",
+ "icon_url": "https://mapcomplete.osm.be/assets/themes/bicyclelib/logo.svg",
"contact_name": "Pieter Vander Vennet, MapComplete",
"contact_email": "pietervdvn@posteo.net"
},
diff --git a/Docs/TagInfo/mapcomplete_campersite.json b/Docs/TagInfo/mapcomplete_campersite.json
index d10a49474..8fea7d15a 100644
--- a/Docs/TagInfo/mapcomplete_campersite.json
+++ b/Docs/TagInfo/mapcomplete_campersite.json
@@ -5,7 +5,7 @@
"description": "Find sites to spend the night with your camper",
"project_url": "https://mapcomplete.osm.be/campersite",
"doc_url": "https://github.com/pietervdvn/MapComplete/tree/master/assets/themes/",
- "icon_url": "https://mapcomplete.osm.be/assets/themes/campersites/caravan.svg",
+ "icon_url": "https://mapcomplete.osm.be/assets/themes/campersite/caravan.svg",
"contact_name": "Pieter Vander Vennet, joost schouppe",
"contact_email": "pietervdvn@posteo.net"
},
diff --git a/Docs/TagInfo/mapcomplete_cycle_infra.json b/Docs/TagInfo/mapcomplete_cycle_infra.json
new file mode 100644
index 000000000..94876210a
--- /dev/null
+++ b/Docs/TagInfo/mapcomplete_cycle_infra.json
@@ -0,0 +1,707 @@
+{
+ "data_format": 1,
+ "project": {
+ "name": "MapComplete Bicycle infrastructure",
+ "description": "A map where you can view and edit things related to the bicycle infrastructure.",
+ "project_url": "https://mapcomplete.osm.be/cycle_infra",
+ "doc_url": "https://github.com/pietervdvn/MapComplete/tree/master/assets/themes/",
+ "icon_url": "https://mapcomplete.osm.be/assets/themes/cycle_infra/cycle-infra.svg",
+ "contact_name": "Pieter Vander Vennet, ",
+ "contact_email": "pietervdvn@posteo.net"
+ },
+ "tags": [
+ {
+ "key": "highway",
+ "description": "The MapComplete theme Bicycle infrastructure has a layer Cycleways showing features with this tag",
+ "value": "cycleway"
+ },
+ {
+ "key": "cycleway",
+ "description": "The MapComplete theme Bicycle infrastructure has a layer Cycleways showing features with this tag",
+ "value": "lane"
+ },
+ {
+ "key": "cycleway",
+ "description": "The MapComplete theme Bicycle infrastructure has a layer Cycleways showing features with this tag",
+ "value": "shared_lane"
+ },
+ {
+ "key": "cycleway",
+ "description": "The MapComplete theme Bicycle infrastructure has a layer Cycleways showing features with this tag",
+ "value": "track"
+ },
+ {
+ "key": "cyclestreet",
+ "description": "The MapComplete theme Bicycle infrastructure has a layer Cycleways showing features with this tag",
+ "value": "yes"
+ },
+ {
+ "key": "highway",
+ "description": "The MapComplete theme Bicycle infrastructure has a layer Cycleways showing features with this tag",
+ "value": "path"
+ },
+ {
+ "key": "bicycle",
+ "description": "The MapComplete theme Bicycle infrastructure has a layer Cycleways showing features with this tag",
+ "value": "designated"
+ },
+ {
+ "key": "cycleway",
+ "description": "Layer 'Cycleways' shows cycleway=shared_lane with a fixed text, namely 'There is a shared lane' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "shared_lane"
+ },
+ {
+ "key": "cycleway",
+ "description": "Layer 'Cycleways' shows cycleway=lane with a fixed text, namely 'There is a lane next to the road (seperated with paint)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "lane"
+ },
+ {
+ "key": "cycleway",
+ "description": "Layer 'Cycleways' shows cycleway=track with a fixed text, namely 'There is a track, but no cycleway drawn seperately from this road on the map.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "track"
+ },
+ {
+ "key": "cycleway",
+ "description": "Layer 'Cycleways' shows cycleway=seperate with a fixed text, namely 'There is a seperately drawn cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "seperate"
+ },
+ {
+ "key": "cycleway",
+ "description": "Layer 'Cycleways' shows cycleway=no with a fixed text, namely 'There is no cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "no"
+ },
+ {
+ "key": "cycleway",
+ "description": "Layer 'Cycleways' shows cycleway=no with a fixed text, namely 'There is no cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "no"
+ },
+ {
+ "key": "lit",
+ "description": "Layer 'Cycleways' shows lit=yes with a fixed text, namely 'This street is lit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "yes"
+ },
+ {
+ "key": "lit",
+ "description": "Layer 'Cycleways' shows lit=no with a fixed text, namely 'This road is not lit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "no"
+ },
+ {
+ "key": "lit",
+ "description": "Layer 'Cycleways' shows lit=sunset-sunrise with a fixed text, namely 'This road is lit at night' (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "sunset-sunrise"
+ },
+ {
+ "key": "lit",
+ "description": "Layer 'Cycleways' shows lit=24/7 with a fixed text, namely 'This road is lit 24/7' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "24/7"
+ },
+ {
+ "key": "cyclestreet",
+ "description": "Layer 'Cycleways' shows cyclestreet=yes with a fixed text, namely 'This is a cyclestreet, and a 30km/h zone.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "yes"
+ },
+ {
+ "key": "cyclestreet",
+ "description": "Layer 'Cycleways' shows cyclestreet=yes with a fixed text, namely 'This is a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "yes"
+ },
+ {
+ "key": "cyclestreet",
+ "description": "Layer 'Cycleways' shows cyclestreet= with a fixed text, namely 'This is not a cyclestreet.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure') Picking this answer will delete the key cyclestreet.",
+ "value": ""
+ },
+ {
+ "key": "maxspeed",
+ "description": "Layer 'Cycleways' shows and asks freeform values for key 'maxspeed' (in the MapComplete.osm.be theme 'Bicycle infrastructure')"
+ },
+ {
+ "key": "maxspeed",
+ "description": "Layer 'Cycleways' shows maxspeed=20 with a fixed text, namely 'The maximum speed is 20 km/h' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "20"
+ },
+ {
+ "key": "maxspeed",
+ "description": "Layer 'Cycleways' shows maxspeed=30 with a fixed text, namely 'The maximum speed is 30 km/h' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "30"
+ },
+ {
+ "key": "maxspeed",
+ "description": "Layer 'Cycleways' shows maxspeed=50 with a fixed text, namely 'The maximum speed is 50 km/h' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "50"
+ },
+ {
+ "key": "maxspeed",
+ "description": "Layer 'Cycleways' shows maxspeed=70 with a fixed text, namely 'The maximum speed is 70 km/h' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "70"
+ },
+ {
+ "key": "maxspeed",
+ "description": "Layer 'Cycleways' shows maxspeed=90 with a fixed text, namely 'The maximum speed is 90 km/h' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "90"
+ },
+ {
+ "key": "cycleway:surface",
+ "description": "Layer 'Cycleways' shows and asks freeform values for key 'cycleway:surface' (in the MapComplete.osm.be theme 'Bicycle infrastructure')"
+ },
+ {
+ "key": "cycleway:surface",
+ "description": "Layer 'Cycleways' shows cycleway:surface=wood with a fixed text, namely 'This cycleway is made of wood' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "wood"
+ },
+ {
+ "key": "cycleway:surface",
+ "description": "Layer 'Cycleways' shows cycleway:surface=concrete with a fixed text, namely 'This cycleway is made of concrete' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "concrete"
+ },
+ {
+ "key": "cycleway:surface",
+ "description": "Layer 'Cycleways' shows cycleway:surface=cobblestone with a fixed text, namely 'This cycleway is made of cobblestone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "cobblestone"
+ },
+ {
+ "key": "cycleway:surface",
+ "description": "Layer 'Cycleways' shows cycleway:surface=asphalt with a fixed text, namely 'This cycleway is made of asphalt' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "asphalt"
+ },
+ {
+ "key": "cycleway:surface",
+ "description": "Layer 'Cycleways' shows cycleway:surface=paved with a fixed text, namely 'This cycleway is paved' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "paved"
+ },
+ {
+ "key": "cycleway:smoothness",
+ "description": "Layer 'Cycleways' shows cycleway:smoothness=excellent with a fixed text, namely 'Usable for thin rollers: rollerblade, skateboard' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "excellent"
+ },
+ {
+ "key": "cycleway:smoothness",
+ "description": "Layer 'Cycleways' shows cycleway:smoothness=good with a fixed text, namely 'Usable for thin wheels: racing bike' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "good"
+ },
+ {
+ "key": "cycleway:smoothness",
+ "description": "Layer 'Cycleways' shows cycleway:smoothness=intermediate with a fixed text, namely 'Usable for normal wheels: city bike, wheelchair, scooter' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "intermediate"
+ },
+ {
+ "key": "cycleway:smoothness",
+ "description": "Layer 'Cycleways' shows cycleway:smoothness=bad with a fixed text, namely 'Usable for robust wheels: trekking bike, car, rickshaw' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "bad"
+ },
+ {
+ "key": "cycleway:smoothness",
+ "description": "Layer 'Cycleways' shows cycleway:smoothness=very_bad with a fixed text, namely 'Usable for vehicles with high clearance: light duty off-road vehicle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "very_bad"
+ },
+ {
+ "key": "cycleway:smoothness",
+ "description": "Layer 'Cycleways' shows cycleway:smoothness=horrible with a fixed text, namely 'Usable for off-road vehicles: heavy duty off-road vehicle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "horrible"
+ },
+ {
+ "key": "cycleway:smoothness",
+ "description": "Layer 'Cycleways' shows cycleway:smoothness=very_horrible with a fixed text, namely 'Usable for specialized off-road vehicles: tractor, ATV' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "very_horrible"
+ },
+ {
+ "key": "cycleway:smoothness",
+ "description": "Layer 'Cycleways' shows cycleway:smoothness=impassable with a fixed text, namely 'Impassable / No wheeled vehicle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "impassable"
+ },
+ {
+ "key": "surface",
+ "description": "Layer 'Cycleways' shows and asks freeform values for key 'surface' (in the MapComplete.osm.be theme 'Bicycle infrastructure')"
+ },
+ {
+ "key": "surface",
+ "description": "Layer 'Cycleways' shows surface=wood with a fixed text, namely 'This street is made of wood' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "wood"
+ },
+ {
+ "key": "surface",
+ "description": "Layer 'Cycleways' shows surface=concrete with a fixed text, namely 'This street is made of concrete' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "concrete"
+ },
+ {
+ "key": "surface",
+ "description": "Layer 'Cycleways' shows surface=cobblestone with a fixed text, namely 'This street is made of cobblestone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "cobblestone"
+ },
+ {
+ "key": "surface",
+ "description": "Layer 'Cycleways' shows surface=asphalt with a fixed text, namely 'This street is made of asphalt' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "asphalt"
+ },
+ {
+ "key": "surface",
+ "description": "Layer 'Cycleways' shows surface=paved with a fixed text, namely 'This street is paved' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "paved"
+ },
+ {
+ "key": "smoothness",
+ "description": "Layer 'Cycleways' shows smoothness=excellent with a fixed text, namely 'Usable for thin rollers: rollerblade, skateboard' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "excellent"
+ },
+ {
+ "key": "smoothness",
+ "description": "Layer 'Cycleways' shows smoothness=good with a fixed text, namely 'Usable for thin wheels: racing bike' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "good"
+ },
+ {
+ "key": "smoothness",
+ "description": "Layer 'Cycleways' shows smoothness=intermediate with a fixed text, namely 'Usable for normal wheels: city bike, wheelchair, scooter' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "intermediate"
+ },
+ {
+ "key": "smoothness",
+ "description": "Layer 'Cycleways' shows smoothness=bad with a fixed text, namely 'Usable for robust wheels: trekking bike, car, rickshaw' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "bad"
+ },
+ {
+ "key": "smoothness",
+ "description": "Layer 'Cycleways' shows smoothness=very_bad with a fixed text, namely 'Usable for vehicles with high clearance: light duty off-road vehicle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "very_bad"
+ },
+ {
+ "key": "smoothness",
+ "description": "Layer 'Cycleways' shows smoothness=horrible with a fixed text, namely 'Usable for off-road vehicles: heavy duty off-road vehicle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "horrible"
+ },
+ {
+ "key": "smoothness",
+ "description": "Layer 'Cycleways' shows smoothness=very_horrible with a fixed text, namely 'Usable for specialized off-road vehicles: tractor, ATV' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "very_horrible"
+ },
+ {
+ "key": "smoothness",
+ "description": "Layer 'Cycleways' shows smoothness=impassable with a fixed text, namely 'Impassable / No wheeled vehicle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "impassable"
+ },
+ {
+ "key": "width:carriageway",
+ "description": "Layer 'Cycleways' shows and asks freeform values for key 'width:carriageway' (in the MapComplete.osm.be theme 'Bicycle infrastructure')"
+ },
+ {
+ "key": "cycleway:traffic_sign",
+ "description": "Layer 'Cycleways' shows cycleway:traffic_sign=BE:D7 with a fixed text, namely 'Compulsory cycleway ' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "BE:D7"
+ },
+ {
+ "key": "cycleway:traffic_sign",
+ "description": "Layer 'Cycleways' shows cycleway:traffic_sign~^BE:D7;.*$ with a fixed text, namely 'Compulsory cycleway (with supplementary sign) ' (in the MapComplete.osm.be theme 'Bicycle infrastructure')"
+ },
+ {
+ "key": "cycleway:traffic_sign",
+ "description": "Layer 'Cycleways' shows cycleway:traffic_sign=BE:D9 with a fixed text, namely 'Segregated foot/cycleway ' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "BE:D9"
+ },
+ {
+ "key": "cycleway:traffic_sign",
+ "description": "Layer 'Cycleways' shows cycleway:traffic_sign=BE:D10 with a fixed text, namely 'Unsegregated foot/cycleway ' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "BE:D10"
+ },
+ {
+ "key": "cycleway:traffic_sign",
+ "description": "Layer 'Cycleways' shows cycleway:traffic_sign=none with a fixed text, namely 'No traffic sign present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "none"
+ },
+ {
+ "key": "traffic_sign",
+ "description": "Layer 'Cycleways' shows traffic_sign=BE:D7 with a fixed text, namely 'Compulsory cycleway ' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "BE:D7"
+ },
+ {
+ "key": "traffic_sign",
+ "description": "Layer 'Cycleways' shows traffic_sign~^BE:D7;.*$ with a fixed text, namely 'Compulsory cycleway (with supplementary sign) ' (in the MapComplete.osm.be theme 'Bicycle infrastructure')"
+ },
+ {
+ "key": "traffic_sign",
+ "description": "Layer 'Cycleways' shows traffic_sign=BE:D9 with a fixed text, namely 'Segregated foot/cycleway ' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "BE:D9"
+ },
+ {
+ "key": "traffic_sign",
+ "description": "Layer 'Cycleways' shows traffic_sign=BE:D10 with a fixed text, namely 'Unsegregated foot/cycleway ' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "BE:D10"
+ },
+ {
+ "key": "traffic_sign",
+ "description": "Layer 'Cycleways' shows traffic_sign=none with a fixed text, namely 'No traffic sign present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "none"
+ },
+ {
+ "key": "cycleway:traffic_sign",
+ "description": "Layer 'Cycleways' shows cycleway:traffic_sign=BE:D7;BE:M6 with a fixed text, namely '' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "BE:D7;BE:M6"
+ },
+ {
+ "key": "cycleway:traffic_sign",
+ "description": "Layer 'Cycleways' shows cycleway:traffic_sign=BE:D7;BE:M13 with a fixed text, namely '' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "BE:D7;BE:M13"
+ },
+ {
+ "key": "cycleway:traffic_sign",
+ "description": "Layer 'Cycleways' shows cycleway:traffic_sign=BE:D7;BE:M14 with a fixed text, namely '' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "BE:D7;BE:M14"
+ },
+ {
+ "key": "cycleway:traffic_sign",
+ "description": "Layer 'Cycleways' shows cycleway:traffic_sign=BE:D7;BE:M7 with a fixed text, namely '' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "BE:D7;BE:M7"
+ },
+ {
+ "key": "cycleway:traffic_sign",
+ "description": "Layer 'Cycleways' shows cycleway:traffic_sign=BE:D7;BE:M15 with a fixed text, namely '' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "BE:D7;BE:M15"
+ },
+ {
+ "key": "cycleway:traffic_sign",
+ "description": "Layer 'Cycleways' shows cycleway:traffic_sign=BE:D7;BE:M16 with a fixed text, namely '' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "BE:D7;BE:M16"
+ },
+ {
+ "key": "cycleway:traffic_sign:supplementary",
+ "description": "Layer 'Cycleways' shows cycleway:traffic_sign:supplementary=none with a fixed text, namely 'No supplementary traffic sign present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "none"
+ },
+ {
+ "key": "traffic_sign",
+ "description": "Layer 'Cycleways' shows traffic_sign=BE:D7;BE:M6 with a fixed text, namely '' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "BE:D7;BE:M6"
+ },
+ {
+ "key": "traffic_sign",
+ "description": "Layer 'Cycleways' shows traffic_sign=BE:D7;BE:M13 with a fixed text, namely '' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "BE:D7;BE:M13"
+ },
+ {
+ "key": "traffic_sign",
+ "description": "Layer 'Cycleways' shows traffic_sign=BE:D7;BE:M14 with a fixed text, namely '' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "BE:D7;BE:M14"
+ },
+ {
+ "key": "traffic_sign",
+ "description": "Layer 'Cycleways' shows traffic_sign=BE:D7;BE:M7 with a fixed text, namely '' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "BE:D7;BE:M7"
+ },
+ {
+ "key": ":traffic_sign",
+ "description": "Layer 'Cycleways' shows :traffic_sign=BE:D7;BE:M15 with a fixed text, namely '' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "BE:D7;BE:M15"
+ },
+ {
+ "key": "traffic_sign",
+ "description": "Layer 'Cycleways' shows traffic_sign=BE:D7;BE:M16 with a fixed text, namely '' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "BE:D7;BE:M16"
+ },
+ {
+ "key": "traffic_sign:supplementary",
+ "description": "Layer 'Cycleways' shows traffic_sign:supplementary=none with a fixed text, namely 'No supplementary traffic sign present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "none"
+ },
+ {
+ "key": "cycleway:buffer",
+ "description": "Layer 'Cycleways' shows and asks freeform values for key 'cycleway:buffer' (in the MapComplete.osm.be theme 'Bicycle infrastructure')"
+ },
+ {
+ "key": "cycleway:seperation",
+ "description": "Layer 'Cycleways' shows cycleway:seperation=dashed_line with a fixed text, namely 'This cycleway is seperated by a dashed line' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "dashed_line"
+ },
+ {
+ "key": "cycleway:seperation",
+ "description": "Layer 'Cycleways' shows cycleway:seperation=solid_line with a fixed text, namely 'This cycleway is seperated by a solid line' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "solid_line"
+ },
+ {
+ "key": "cycleway:seperation",
+ "description": "Layer 'Cycleways' shows cycleway:seperation=parking_lane with a fixed text, namely 'This cycleway is seperated by a parking lane' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "parking_lane"
+ },
+ {
+ "key": "cycleway:seperation",
+ "description": "Layer 'Cycleways' shows cycleway:seperation=kerb with a fixed text, namely 'This cycleway is seperated by a kerb' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "kerb"
+ },
+ {
+ "key": "seperation",
+ "description": "Layer 'Cycleways' shows seperation=dashed_line with a fixed text, namely 'This cycleway is seperated by a dashed line' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "dashed_line"
+ },
+ {
+ "key": "seperation",
+ "description": "Layer 'Cycleways' shows seperation=solid_line with a fixed text, namely 'This cycleway is seperated by a solid line' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "solid_line"
+ },
+ {
+ "key": "seperation",
+ "description": "Layer 'Cycleways' shows seperation=parking_lane with a fixed text, namely 'This cycleway is seperated by a parking lane' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "parking_lane"
+ },
+ {
+ "key": "seperation",
+ "description": "Layer 'Cycleways' shows seperation=kerb with a fixed text, namely 'This cycleway is seperated by a kerb' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "kerb"
+ },
+ {
+ "key": "highway",
+ "description": "The MapComplete theme Bicycle infrastructure has a layer All streets showing features with this tag",
+ "value": "residential"
+ },
+ {
+ "key": "highway",
+ "description": "The MapComplete theme Bicycle infrastructure has a layer All streets showing features with this tag",
+ "value": "tertiary"
+ },
+ {
+ "key": "highway",
+ "description": "The MapComplete theme Bicycle infrastructure has a layer All streets showing features with this tag",
+ "value": "unclassified"
+ },
+ {
+ "key": "highway",
+ "description": "The MapComplete theme Bicycle infrastructure has a layer All streets showing features with this tag",
+ "value": "primary"
+ },
+ {
+ "key": "highway",
+ "description": "The MapComplete theme Bicycle infrastructure has a layer All streets showing features with this tag",
+ "value": "secondary"
+ },
+ {
+ "key": "cycleway",
+ "description": "Layer 'All streets' shows and asks freeform values for key 'cycleway' (in the MapComplete.osm.be theme 'Bicycle infrastructure')"
+ },
+ {
+ "key": "cycleway",
+ "description": "Layer 'All streets' shows cycleway=shared_lane with a fixed text, namely 'There is a shared lane' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "shared_lane"
+ },
+ {
+ "key": "cycleway",
+ "description": "Layer 'All streets' shows cycleway=lane with a fixed text, namely 'There is a lane next to the road (seperated with paint)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "lane"
+ },
+ {
+ "key": "cycleway",
+ "description": "Layer 'All streets' shows cycleway=track with a fixed text, namely 'There is a track, but no cycleway drawn seperately from this road on the map.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "track"
+ },
+ {
+ "key": "cycleway",
+ "description": "Layer 'All streets' shows cycleway=seperate with a fixed text, namely 'There is a seperately drawn cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "seperate"
+ },
+ {
+ "key": "cycleway",
+ "description": "Layer 'All streets' shows cycleway= with a fixed text, namely 'There is no cycleway known here' (in the MapComplete.osm.be theme 'Bicycle infrastructure') Picking this answer will delete the key cycleway.",
+ "value": ""
+ },
+ {
+ "key": "cycleway",
+ "description": "Layer 'All streets' shows cycleway=no with a fixed text, namely 'There is no cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "no"
+ },
+ {
+ "key": "cycleway",
+ "description": "Layer 'All streets' shows cycleway=no with a fixed text, namely 'There is no cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "no"
+ },
+ {
+ "key": "cyclestreet",
+ "description": "Layer 'All streets' shows cyclestreet=yes with a fixed text, namely 'This is a cyclestreet, and a 30km/h zone.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "yes"
+ },
+ {
+ "key": "cyclestreet",
+ "description": "Layer 'All streets' shows cyclestreet=yes with a fixed text, namely 'This is a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "yes"
+ },
+ {
+ "key": "cyclestreet",
+ "description": "Layer 'All streets' shows cyclestreet= with a fixed text, namely 'This is not a cyclestreet.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure') Picking this answer will delete the key cyclestreet.",
+ "value": ""
+ },
+ {
+ "key": "barrier",
+ "description": "The MapComplete theme Bicycle infrastructure has a layer Barriers showing features with this tag",
+ "value": "bollard"
+ },
+ {
+ "key": "barrier",
+ "description": "The MapComplete theme Bicycle infrastructure has a layer Barriers showing features with this tag",
+ "value": "cycle_barrier"
+ },
+ {
+ "key": "bicycle",
+ "description": "Layer 'Barriers' shows bicycle=yes with a fixed text, namely 'A cyclist can go past this.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "yes"
+ },
+ {
+ "key": "bicycle",
+ "description": "Layer 'Barriers' shows bicycle=no with a fixed text, namely 'A cyclist can not go past this.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "no"
+ },
+ {
+ "key": "bollard",
+ "description": "Layer 'Barriers' shows bollard=removable with a fixed text, namely 'Removable bollard' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "removable"
+ },
+ {
+ "key": "bollard",
+ "description": "Layer 'Barriers' shows bollard=fixed with a fixed text, namely 'Fixed bollard' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "fixed"
+ },
+ {
+ "key": "bollard",
+ "description": "Layer 'Barriers' shows bollard=foldable with a fixed text, namely 'Bollard that can be folded down' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "foldable"
+ },
+ {
+ "key": "bollard",
+ "description": "Layer 'Barriers' shows bollard=flexible with a fixed text, namely 'Flexible bollard, usually plastic' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "flexible"
+ },
+ {
+ "key": "bollard",
+ "description": "Layer 'Barriers' shows bollard=rising with a fixed text, namely 'Rising bollard' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "rising"
+ },
+ {
+ "key": "cycle_barrier:type",
+ "description": "Layer 'Barriers' shows cycle_barrier:type=single with a fixed text, namely 'Single, just two barriers with a space inbetween ' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "single"
+ },
+ {
+ "key": "cycle_barrier:type",
+ "description": "Layer 'Barriers' shows cycle_barrier:type=double with a fixed text, namely 'Double, two barriers behind each other ' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "double"
+ },
+ {
+ "key": "cycle_barrier:type",
+ "description": "Layer 'Barriers' shows cycle_barrier:type=triple with a fixed text, namely 'Triple, three barriers behind each other ' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "triple"
+ },
+ {
+ "key": "cycle_barrier:type",
+ "description": "Layer 'Barriers' shows cycle_barrier:type=squeeze with a fixed text, namely 'Squeeze gate, gap is smaller at top, than at the bottom ' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "squeeze"
+ },
+ {
+ "key": "maxwidth:physical",
+ "description": "Layer 'Barriers' shows and asks freeform values for key 'maxwidth:physical' (in the MapComplete.osm.be theme 'Bicycle infrastructure')"
+ },
+ {
+ "key": "width:seperation",
+ "description": "Layer 'Barriers' shows and asks freeform values for key 'width:seperation' (in the MapComplete.osm.be theme 'Bicycle infrastructure')"
+ },
+ {
+ "key": "width:opening",
+ "description": "Layer 'Barriers' shows and asks freeform values for key 'width:opening' (in the MapComplete.osm.be theme 'Bicycle infrastructure')"
+ },
+ {
+ "key": "overlap",
+ "description": "Layer 'Barriers' shows and asks freeform values for key 'overlap' (in the MapComplete.osm.be theme 'Bicycle infrastructure')"
+ },
+ {
+ "key": "highway",
+ "description": "The MapComplete theme Bicycle infrastructure has a layer Crossings showing features with this tag",
+ "value": "traffic_signals"
+ },
+ {
+ "key": "highway",
+ "description": "The MapComplete theme Bicycle infrastructure has a layer Crossings showing features with this tag",
+ "value": "crossing"
+ },
+ {
+ "key": "crossing",
+ "description": "Layer 'Crossings' shows crossing=uncontrolled with a fixed text, namely 'Crossing, without traffic lights' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "uncontrolled"
+ },
+ {
+ "key": "crossing",
+ "description": "Layer 'Crossings' shows crossing=traffic_signals with a fixed text, namely 'Crossing with traffic signals' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "traffic_signals"
+ },
+ {
+ "key": "crossing",
+ "description": "Layer 'Crossings' shows crossing=zebra with a fixed text, namely 'Zebra crossing' (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "zebra"
+ },
+ {
+ "key": "bicycle",
+ "description": "Layer 'Crossings' shows bicycle=yes with a fixed text, namely 'A cyclist can use this crossing' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "yes"
+ },
+ {
+ "key": "bicycle",
+ "description": "Layer 'Crossings' shows bicycle=no with a fixed text, namely 'A cyclist can not use this crossing' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "no"
+ },
+ {
+ "key": "crossing:island",
+ "description": "Layer 'Crossings' shows crossing:island=yes with a fixed text, namely 'This crossing has an island in the middle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "yes"
+ },
+ {
+ "key": "crossing:island",
+ "description": "Layer 'Crossings' shows crossing:island=no with a fixed text, namely 'This crossing does not have an island in the middle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "no"
+ },
+ {
+ "key": "tactile_paving",
+ "description": "Layer 'Crossings' shows tactile_paving=yes with a fixed text, namely 'This crossing has tactile paving' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "yes"
+ },
+ {
+ "key": "tactile_paving",
+ "description": "Layer 'Crossings' shows tactile_paving=no with a fixed text, namely 'This crossing does not have tactile paving' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "no"
+ },
+ {
+ "key": "tactile_paving",
+ "description": "Layer 'Crossings' shows tactile_paving=incorrect with a fixed text, namely 'This crossing has tactile paving, but is not correct' (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "incorrect"
+ },
+ {
+ "key": "button_operated",
+ "description": "Layer 'Crossings' shows button_operated=yes with a fixed text, namely 'This traffic light has a button to request green light' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "yes"
+ },
+ {
+ "key": "button_operated",
+ "description": "Layer 'Crossings' shows button_operated=no with a fixed text, namely 'This traffic light does not have a button to request green light' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "no"
+ },
+ {
+ "key": "red_turn:right:bicycle",
+ "description": "Layer 'Crossings' shows red_turn:right:bicycle=yes with a fixed text, namely 'A cyclist can turn right if the light is red ' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "yes"
+ },
+ {
+ "key": "red_turn:right:bicycle",
+ "description": "Layer 'Crossings' shows red_turn:right:bicycle=yes with a fixed text, namely 'A cyclist can turn right if the light is red' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "yes"
+ },
+ {
+ "key": "red_turn:right:bicycle",
+ "description": "Layer 'Crossings' shows red_turn:right:bicycle=no with a fixed text, namely 'A cyclist can not turn right if the light is red' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "no"
+ },
+ {
+ "key": "red_turn:straight:bicycle",
+ "description": "Layer 'Crossings' shows red_turn:straight:bicycle=yes with a fixed text, namely 'A cyclist can go straight on if the light is red ' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "yes"
+ },
+ {
+ "key": "red_turn:straight:bicycle",
+ "description": "Layer 'Crossings' shows red_turn:straight:bicycle=yes with a fixed text, namely 'A cyclist can go straight on if the light is red' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "yes"
+ },
+ {
+ "key": "red_turn:straight:bicycle",
+ "description": "Layer 'Crossings' shows red_turn:straight:bicycle=no with a fixed text, namely 'A cyclist can not go straight on if the light is red' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
+ "value": "no"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Docs/TagInfo/mapcomplete_cyclestreets.json b/Docs/TagInfo/mapcomplete_cyclestreets.json
new file mode 100644
index 000000000..9d21bf348
--- /dev/null
+++ b/Docs/TagInfo/mapcomplete_cyclestreets.json
@@ -0,0 +1,264 @@
+{
+ "data_format": 1,
+ "project": {
+ "name": "MapComplete Cyclestreets",
+ "description": "A map of cyclestreets",
+ "project_url": "https://mapcomplete.osm.be/cyclestreets",
+ "doc_url": "https://github.com/pietervdvn/MapComplete/tree/master/assets/themes/",
+ "icon_url": "https://mapcomplete.osm.be/assets/themes/cyclestreets/F111.svg",
+ "contact_name": "Pieter Vander Vennet, MapComplete",
+ "contact_email": "pietervdvn@posteo.net"
+ },
+ "tags": [
+ {
+ "key": "cyclestreet",
+ "description": "The MapComplete theme Cyclestreets has a layer Cyclestreets showing features with this tag",
+ "value": "yes"
+ },
+ {
+ "key": "image",
+ "description": "The layer 'Cyclestreets allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "mapillary",
+ "description": "The layer 'Cyclestreets allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "wikidata",
+ "description": "The layer 'Cyclestreets allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "wikipedia",
+ "description": "The layer 'Cyclestreets allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "cyclestreet",
+ "description": "Layer 'Cyclestreets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&proposed:cyclestreet= with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
+ "value": "yes"
+ },
+ {
+ "key": "maxspeed",
+ "description": "Layer 'Cyclestreets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&proposed:cyclestreet= with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
+ "value": "30"
+ },
+ {
+ "key": "overtaking:motor_vehicle",
+ "description": "Layer 'Cyclestreets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&proposed:cyclestreet= with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
+ "value": "no"
+ },
+ {
+ "key": "proposed:cyclestreet",
+ "description": "Layer 'Cyclestreets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&proposed:cyclestreet= with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.",
+ "value": ""
+ },
+ {
+ "key": "cyclestreet",
+ "description": "Layer 'Cyclestreets' shows cyclestreet=yes&proposed:cyclestreet= with a fixed text, namely 'This street is a cyclestreet' (in the MapComplete.osm.be theme 'Cyclestreets')",
+ "value": "yes"
+ },
+ {
+ "key": "proposed:cyclestreet",
+ "description": "Layer 'Cyclestreets' shows cyclestreet=yes&proposed:cyclestreet= with a fixed text, namely 'This street is a cyclestreet' (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.",
+ "value": ""
+ },
+ {
+ "key": "cyclestreet",
+ "description": "Layer 'Cyclestreets' shows cyclestreet=&proposed:cyclestreet=yes with a fixed text, namely 'This street will become a cyclstreet soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key cyclestreet.",
+ "value": ""
+ },
+ {
+ "key": "proposed:cyclestreet",
+ "description": "Layer 'Cyclestreets' shows cyclestreet=&proposed:cyclestreet=yes with a fixed text, namely 'This street will become a cyclstreet soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
+ "value": "yes"
+ },
+ {
+ "key": "cyclestreet",
+ "description": "Layer 'Cyclestreets' shows cyclestreet=&proposed:cyclestreet=&overtaking:motor_vehicle= with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key cyclestreet.",
+ "value": ""
+ },
+ {
+ "key": "proposed:cyclestreet",
+ "description": "Layer 'Cyclestreets' shows cyclestreet=&proposed:cyclestreet=&overtaking:motor_vehicle= with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.",
+ "value": ""
+ },
+ {
+ "key": "overtaking:motor_vehicle",
+ "description": "Layer 'Cyclestreets' shows cyclestreet=&proposed:cyclestreet=&overtaking:motor_vehicle= with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key overtaking:motor_vehicle.",
+ "value": ""
+ },
+ {
+ "key": "cyclestreet:start_date",
+ "description": "Layer 'Cyclestreets' shows and asks freeform values for key 'cyclestreet:start_date' (in the MapComplete.osm.be theme 'Cyclestreets')"
+ },
+ {
+ "key": "proposed:cyclestreet",
+ "description": "The MapComplete theme Cyclestreets has a layer Future cyclestreet showing features with this tag",
+ "value": "yes"
+ },
+ {
+ "key": "image",
+ "description": "The layer 'Future cyclestreet allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "mapillary",
+ "description": "The layer 'Future cyclestreet allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "wikidata",
+ "description": "The layer 'Future cyclestreet allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "wikipedia",
+ "description": "The layer 'Future cyclestreet allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "cyclestreet",
+ "description": "Layer 'Future cyclestreet' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&proposed:cyclestreet= with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
+ "value": "yes"
+ },
+ {
+ "key": "maxspeed",
+ "description": "Layer 'Future cyclestreet' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&proposed:cyclestreet= with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
+ "value": "30"
+ },
+ {
+ "key": "overtaking:motor_vehicle",
+ "description": "Layer 'Future cyclestreet' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&proposed:cyclestreet= with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
+ "value": "no"
+ },
+ {
+ "key": "proposed:cyclestreet",
+ "description": "Layer 'Future cyclestreet' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&proposed:cyclestreet= with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.",
+ "value": ""
+ },
+ {
+ "key": "cyclestreet",
+ "description": "Layer 'Future cyclestreet' shows cyclestreet=yes&proposed:cyclestreet= with a fixed text, namely 'This street is a cyclestreet' (in the MapComplete.osm.be theme 'Cyclestreets')",
+ "value": "yes"
+ },
+ {
+ "key": "proposed:cyclestreet",
+ "description": "Layer 'Future cyclestreet' shows cyclestreet=yes&proposed:cyclestreet= with a fixed text, namely 'This street is a cyclestreet' (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.",
+ "value": ""
+ },
+ {
+ "key": "cyclestreet",
+ "description": "Layer 'Future cyclestreet' shows cyclestreet=&proposed:cyclestreet=yes with a fixed text, namely 'This street will become a cyclstreet soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key cyclestreet.",
+ "value": ""
+ },
+ {
+ "key": "proposed:cyclestreet",
+ "description": "Layer 'Future cyclestreet' shows cyclestreet=&proposed:cyclestreet=yes with a fixed text, namely 'This street will become a cyclstreet soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
+ "value": "yes"
+ },
+ {
+ "key": "cyclestreet",
+ "description": "Layer 'Future cyclestreet' shows cyclestreet=&proposed:cyclestreet=&overtaking:motor_vehicle= with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key cyclestreet.",
+ "value": ""
+ },
+ {
+ "key": "proposed:cyclestreet",
+ "description": "Layer 'Future cyclestreet' shows cyclestreet=&proposed:cyclestreet=&overtaking:motor_vehicle= with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.",
+ "value": ""
+ },
+ {
+ "key": "overtaking:motor_vehicle",
+ "description": "Layer 'Future cyclestreet' shows cyclestreet=&proposed:cyclestreet=&overtaking:motor_vehicle= with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key overtaking:motor_vehicle.",
+ "value": ""
+ },
+ {
+ "key": "cyclestreet:start_date",
+ "description": "Layer 'Future cyclestreet' shows and asks freeform values for key 'cyclestreet:start_date' (in the MapComplete.osm.be theme 'Cyclestreets')"
+ },
+ {
+ "key": "highway",
+ "description": "The MapComplete theme Cyclestreets has a layer All streets showing features with this tag",
+ "value": "residential"
+ },
+ {
+ "key": "highway",
+ "description": "The MapComplete theme Cyclestreets has a layer All streets showing features with this tag",
+ "value": "tertiary"
+ },
+ {
+ "key": "highway",
+ "description": "The MapComplete theme Cyclestreets has a layer All streets showing features with this tag",
+ "value": "unclassified"
+ },
+ {
+ "key": "image",
+ "description": "The layer 'All streets allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "mapillary",
+ "description": "The layer 'All streets allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "wikidata",
+ "description": "The layer 'All streets allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "wikipedia",
+ "description": "The layer 'All streets allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "cyclestreet",
+ "description": "Layer 'All streets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&proposed:cyclestreet= with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
+ "value": "yes"
+ },
+ {
+ "key": "maxspeed",
+ "description": "Layer 'All streets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&proposed:cyclestreet= with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
+ "value": "30"
+ },
+ {
+ "key": "overtaking:motor_vehicle",
+ "description": "Layer 'All streets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&proposed:cyclestreet= with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
+ "value": "no"
+ },
+ {
+ "key": "proposed:cyclestreet",
+ "description": "Layer 'All streets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&proposed:cyclestreet= with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.",
+ "value": ""
+ },
+ {
+ "key": "cyclestreet",
+ "description": "Layer 'All streets' shows cyclestreet=yes&proposed:cyclestreet= with a fixed text, namely 'This street is a cyclestreet' (in the MapComplete.osm.be theme 'Cyclestreets')",
+ "value": "yes"
+ },
+ {
+ "key": "proposed:cyclestreet",
+ "description": "Layer 'All streets' shows cyclestreet=yes&proposed:cyclestreet= with a fixed text, namely 'This street is a cyclestreet' (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.",
+ "value": ""
+ },
+ {
+ "key": "cyclestreet",
+ "description": "Layer 'All streets' shows cyclestreet=&proposed:cyclestreet=yes with a fixed text, namely 'This street will become a cyclstreet soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key cyclestreet.",
+ "value": ""
+ },
+ {
+ "key": "proposed:cyclestreet",
+ "description": "Layer 'All streets' shows cyclestreet=&proposed:cyclestreet=yes with a fixed text, namely 'This street will become a cyclstreet soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
+ "value": "yes"
+ },
+ {
+ "key": "cyclestreet",
+ "description": "Layer 'All streets' shows cyclestreet=&proposed:cyclestreet=&overtaking:motor_vehicle= with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key cyclestreet.",
+ "value": ""
+ },
+ {
+ "key": "proposed:cyclestreet",
+ "description": "Layer 'All streets' shows cyclestreet=&proposed:cyclestreet=&overtaking:motor_vehicle= with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.",
+ "value": ""
+ },
+ {
+ "key": "overtaking:motor_vehicle",
+ "description": "Layer 'All streets' shows cyclestreet=&proposed:cyclestreet=&overtaking:motor_vehicle= with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key overtaking:motor_vehicle.",
+ "value": ""
+ },
+ {
+ "key": "cyclestreet:start_date",
+ "description": "Layer 'All streets' shows and asks freeform values for key 'cyclestreet:start_date' (in the MapComplete.osm.be theme 'Cyclestreets')"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Docs/TagInfo/mapcomplete_surveillance.json b/Docs/TagInfo/mapcomplete_surveillance.json
index 7c0ecfc1b..0b9b99e17 100644
--- a/Docs/TagInfo/mapcomplete_surveillance.json
+++ b/Docs/TagInfo/mapcomplete_surveillance.json
@@ -5,7 +5,7 @@
"description": "Surveillance cameras and other means of surveillance",
"project_url": "https://mapcomplete.osm.be/surveillance",
"doc_url": "https://github.com/pietervdvn/MapComplete/tree/master/assets/themes/",
- "icon_url": "https://mapcomplete.osm.be/assets/themes/surveillance_cameras/logo.svg",
+ "icon_url": "https://mapcomplete.osm.be/assets/themes/surveillance/logo.svg",
"contact_name": "Pieter Vander Vennet, ",
"contact_email": "pietervdvn@posteo.net"
},
diff --git a/Logic/ExtraFunction.ts b/Logic/ExtraFunction.ts
index b10c1eee3..b3b10ac2a 100644
--- a/Logic/ExtraFunction.ts
+++ b/Logic/ExtraFunction.ts
@@ -6,8 +6,8 @@ import {Utils} from "../Utils";
import BaseUIElement from "../UI/BaseUIElement";
import List from "../UI/Base/List";
import Title from "../UI/Base/Title";
-import AspectedRouting from "aspected-routing"
import {UIEventSourceTools} from "./UIEventSource";
+import AspectedRouting from "./Osm/aspectedRouting";
export class ExtraFunction {
@@ -189,7 +189,6 @@ export class ExtraFunction {
private readonly _name: string;
private readonly _args: string[];
private readonly _doc: string;
- private readonly _async: boolean;
private readonly _f: (params: { featuresPerLayer: Map, relations: { role: string, relation: Relation }[] }, feat: any) => any;
constructor(options: { name: string, doc: string, args: string[] },
diff --git a/Logic/Osm/aspectedRouting.ts b/Logic/Osm/aspectedRouting.ts
new file mode 100644
index 000000000..33a171719
--- /dev/null
+++ b/Logic/Osm/aspectedRouting.ts
@@ -0,0 +1,194 @@
+export default class AspectedRouting {
+
+ public readonly name: string
+ public readonly description: string
+ public readonly units: string
+ public readonly program: any
+
+ public constructor(program) {
+ this.name = program.name;
+ this.description = program.description;
+ this.units = program.unit
+ this.program = JSON.parse(JSON.stringify(program))
+ delete this.program.name
+ delete this.program.description
+ delete this.program.unit
+ }
+
+ public evaluate(properties){
+ return AspectedRouting.interpret(this.program, properties)
+ }
+ /**
+ * Interprets the given Aspected-routing program for the given properties
+ */
+ public static interpret(program: any, properties: any) {
+ if (typeof program !== "object") {
+ return program;
+ }
+
+ let functionName /*: string*/ = undefined;
+ let functionArguments /*: any */ = undefined
+ let otherValues = {}
+ // @ts-ignore
+ Object.entries(program).forEach(tag => {
+ const [key, value] = tag;
+ if (key.startsWith("$")) {
+ functionName = key
+ functionArguments = value
+ } else {
+ otherValues[key] = value
+ }
+ }
+ )
+
+ if (functionName === undefined) {
+ return AspectedRouting.interpretAsDictionary(program, properties)
+ }
+
+ if (functionName === '$multiply') {
+ return AspectedRouting.multiplyScore(properties, functionArguments);
+ } else if (functionName === '$firstMatchOf') {
+ return AspectedRouting.getFirstMatchScore(properties, functionArguments);
+ } else if (functionName === '$min') {
+ return AspectedRouting.getMinValue(properties, functionArguments);
+ } else if (functionName === '$max') {
+ return AspectedRouting.getMaxValue(properties, functionArguments);
+ } else if (functionName === '$default') {
+ return AspectedRouting.defaultV(functionArguments, otherValues, properties)
+ } else {
+ console.error(`Error: Program ${functionName} is not implemented yet. ${JSON.stringify(program)}`);
+ }
+ }
+
+ /**
+ * Given a 'program' without function invocation, interprets it as a dictionary
+ *
+ * E.g., given the program
+ *
+ * {
+ * highway: {
+ * residential: 30,
+ * living_street: 20
+ * },
+ * surface: {
+ * sett : 0.9
+ * }
+ *
+ * }
+ *
+ * in combination with the tags {highway: residential},
+ *
+ * the result should be [30, undefined];
+ *
+ * For the tags {highway: residential, surface: sett} we should get [30, 0.9]
+ *
+ *
+ * @param program
+ * @param tags
+ * @return {(undefined|*)[]}
+ */
+ private static interpretAsDictionary(program, tags) {
+ // @ts-ignore
+ return Object.entries(tags).map(tag => {
+ const [key, value] = tag;
+ const propertyValue = program[key]
+ if (propertyValue === undefined) {
+ return undefined
+ }
+ if (typeof propertyValue !== "object") {
+ return propertyValue
+ }
+ // @ts-ignore
+ return propertyValue[value]
+ });
+ }
+
+ private static defaultV(subProgram, otherArgs, tags) {
+ // @ts-ignore
+ const normalProgram = Object.entries(otherArgs)[0][1]
+ const value = AspectedRouting.interpret(normalProgram, tags)
+ if (value !== undefined) {
+ return value;
+ }
+ return AspectedRouting.interpret(subProgram, tags)
+ }
+
+ /**
+ * Multiplies the default score with the proper values
+ * @param tags {object} the active tags to check against
+ * @param subprograms which should generate a list of values
+ * @returns score after multiplication
+ */
+ private static multiplyScore(tags, subprograms) {
+ let number = 1
+
+ let subResults: any[]
+ if (subprograms.length !== undefined) {
+ subResults = AspectedRouting.concatMap(subprograms, subprogram => AspectedRouting.interpret(subprogram, tags))
+ } else {
+ subResults = AspectedRouting.interpret(subprograms, tags)
+ }
+
+ subResults.filter(r => r !== undefined).forEach(r => number *= parseFloat(r))
+ return number.toFixed(2);
+ }
+
+ private static getFirstMatchScore(tags, order: any) {
+ /*Order should be a list of arguments after evaluation*/
+ order = AspectedRouting.interpret(order, tags)
+ for (let key of order) {
+ // @ts-ignore
+ for (let entry of Object.entries(JSON.parse(tags))) {
+ const [tagKey, value] = entry;
+ if (key === tagKey) {
+ // We have a match... let's evaluate the subprogram
+ const evaluated = AspectedRouting.interpret(value, tags)
+ if (evaluated !== undefined) {
+ return evaluated;
+ }
+ }
+ }
+ }
+
+ // Not a single match found...
+ return undefined
+ }
+
+ private static getMinValue(tags, subprogram) {
+ const minArr = subprogram.map(part => {
+ if (typeof (part) === 'object') {
+ const calculatedValue = this.interpret(part, tags)
+ return parseFloat(calculatedValue)
+ } else {
+ return parseFloat(part);
+ }
+ }).filter(v => !isNaN(v));
+ return Math.min(...minArr);
+ }
+
+ private static getMaxValue(tags, subprogram) {
+ const maxArr = subprogram.map(part => {
+ if (typeof (part) === 'object') {
+ return parseFloat(AspectedRouting.interpret(part, tags))
+ } else {
+ return parseFloat(part);
+ }
+ }).filter(v => !isNaN(v));
+ return Math.max(...maxArr);
+ }
+
+ private static concatMap(list, f): any[] {
+ const result = []
+ list = list.map(f)
+ for (const elem of list) {
+ if (elem.length !== undefined) {
+ // This is a list
+ result.push(...elem)
+ } else {
+ result.push(elem)
+ }
+ }
+ return result;
+ }
+
+}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 6e616cb83..603c91eb3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -22,7 +22,6 @@
"@types/leaflet.markercluster": "^1.4.3",
"@types/lz-string": "^1.3.34",
"@types/prompt-sync": "^4.1.0",
- "aspected-routing": "^0.3.1",
"autoprefixer": "^9.8.6",
"country-language": "^0.1.7",
"email-validator": "^2.0.4",
@@ -53,7 +52,7 @@
"fs": "0.0.1-security",
"marked": "^2.0.0",
"read-file": "^0.2.0",
- "sharp": "^0.27.0",
+ "sharp": "^0.28.3",
"tailwindcss": "npm:@tailwindcss/postcss7-compat@^2.2.7",
"ts-node": "^9.0.0",
"ts-node-dev": "^1.0.0-pre.63",
@@ -3107,12 +3106,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/array-flatten": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz",
- "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==",
- "dev": true
- },
"node_modules/array-unique": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
@@ -3140,11 +3133,6 @@
"safer-buffer": "^2.1.0"
}
},
- "node_modules/aspected-routing": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/aspected-routing/-/aspected-routing-0.3.1.tgz",
- "integrity": "sha512-abHvrYeun/XbXq/p7KKa5p2v/LVVMa2uC3iJis1hEFi59yMithWulBMIV5mStms4wFDMui4Xvv+plRYrTmB8zw=="
- },
"node_modules/assert": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz",
@@ -3467,6 +3455,20 @@
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
"dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
"dependencies": {
"base64-js": "^1.3.1",
"ieee754": "^1.1.13"
@@ -9192,6 +9194,9 @@
"dev": true,
"engines": {
"node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/minimalistic-assert": {
@@ -9440,9 +9445,9 @@
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
},
"node_modules/node-abi": {
- "version": "2.26.0",
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.26.0.tgz",
- "integrity": "sha512-ag/Vos/mXXpWLLAYWsAoQdgS+gW7IwvgMLOgqopm/DbzAjazLltzgzpVMsFlgmo9TzG5hGXeaBZx2AI731RIsQ==",
+ "version": "2.30.0",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.0.tgz",
+ "integrity": "sha512-g6bZh3YCKQRdwuO/tSZZYJAw622SjsRfJ2X0Iy4sSOHZ34/sPPdVBn8fev2tj7njzLwuqPw9uMtGsGkO5kIQvg==",
"dev": true,
"dependencies": {
"semver": "^5.4.1"
@@ -9540,12 +9545,6 @@
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz",
"integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg=="
},
- "node_modules/noop-logger": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz",
- "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=",
- "dev": true
- },
"node_modules/normalize-package-data": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
@@ -11215,9 +11214,9 @@
}
},
"node_modules/prebuild-install": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.2.tgz",
- "integrity": "sha512-PzYWIKZeP+967WuKYXlTOhYBgGOvTRSfaKI89XnfJ0ansRAH7hDU45X+K+FZeI1Wb/7p/NnuctPH3g0IqKUuSQ==",
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.3.tgz",
+ "integrity": "sha512-iqqSR84tNYQUQHRXalSKdIaM8Ov1QxOVuBNWI7+BzZWv6Ih9k75wOnH1rGQ9WWTaaLkTpxWKIciOF0KyfM74+Q==",
"dev": true,
"dependencies": {
"detect-libc": "^1.0.3",
@@ -11227,7 +11226,6 @@
"mkdirp-classic": "^0.5.3",
"napi-build-utils": "^1.0.1",
"node-abi": "^2.21.0",
- "noop-logger": "^0.1.1",
"npmlog": "^4.0.1",
"pump": "^3.0.0",
"rc": "^1.2.7",
@@ -11242,17 +11240,6 @@
"node": ">=6"
}
},
- "node_modules/prebuild-install/node_modules/simple-get": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz",
- "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==",
- "dev": true,
- "dependencies": {
- "decompress-response": "^4.2.0",
- "once": "^1.3.1",
- "simple-concat": "^1.0.0"
- }
- },
"node_modules/prelude-ls": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
@@ -12100,24 +12087,26 @@
"integrity": "sha1-16oye87PUY+RBqxrjwA/o7zqhWY="
},
"node_modules/sharp": {
- "version": "0.27.2",
- "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.27.2.tgz",
- "integrity": "sha512-w3FVoONPG/x5MXCc3wsjOS+b9h3CI60qkus6EPQU4dkT0BDm0PyGhDCK6KhtfT3/vbeOMOXAKFNSw+I3QGWkMA==",
+ "version": "0.28.3",
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.28.3.tgz",
+ "integrity": "sha512-21GEP45Rmr7q2qcmdnjDkNP04Ooh5v0laGS5FDpojOO84D1DJwUijLiSq8XNNM6e8aGXYtoYRh3sVNdm8NodMA==",
"dev": true,
+ "hasInstallScript": true,
"dependencies": {
- "array-flatten": "^3.0.0",
"color": "^3.1.3",
"detect-libc": "^1.0.3",
- "node-addon-api": "^3.1.0",
- "npmlog": "^4.1.2",
- "prebuild-install": "^6.0.1",
- "semver": "^7.3.4",
- "simple-get": "^4.0.0",
+ "node-addon-api": "^3.2.0",
+ "prebuild-install": "^6.1.2",
+ "semver": "^7.3.5",
+ "simple-get": "^3.1.0",
"tar-fs": "^2.1.1",
"tunnel-agent": "^0.6.0"
},
"engines": {
"node": ">=10"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
}
},
"node_modules/sharp/node_modules/lru-cache": {
@@ -12133,9 +12122,9 @@
}
},
"node_modules/sharp/node_modules/node-addon-api": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz",
- "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==",
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
+ "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
"dev": true
},
"node_modules/sharp/node_modules/semver": {
@@ -12186,40 +12175,33 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
"integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
- "dev": true
+ "dev": true,
+ "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/simple-get": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.0.tgz",
- "integrity": "sha512-ZalZGexYr3TA0SwySsr5HlgOOinS4Jsa8YB2GJ6lUNAazyAu4KG/VmzMTwAt2YVXzzVj8QmefmAonZIK2BSGcQ==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz",
+ "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==",
"dev": true,
"dependencies": {
- "decompress-response": "^6.0.0",
+ "decompress-response": "^4.2.0",
"once": "^1.3.1",
"simple-concat": "^1.0.0"
}
},
- "node_modules/simple-get/node_modules/decompress-response": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
- "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
- "dev": true,
- "dependencies": {
- "mimic-response": "^3.1.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/simple-get/node_modules/mimic-response": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
- "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/simple-swizzle": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
@@ -17640,12 +17622,6 @@
"integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
"dev": true
},
- "array-flatten": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz",
- "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==",
- "dev": true
- },
"array-unique": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
@@ -17670,11 +17646,6 @@
"safer-buffer": "^2.1.0"
}
},
- "aspected-routing": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/aspected-routing/-/aspected-routing-0.3.1.tgz",
- "integrity": "sha512-abHvrYeun/XbXq/p7KKa5p2v/LVVMa2uC3iJis1hEFi59yMithWulBMIV5mStms4wFDMui4Xvv+plRYrTmB8zw=="
- },
"assert": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz",
@@ -23180,9 +23151,9 @@
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
},
"node-abi": {
- "version": "2.26.0",
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.26.0.tgz",
- "integrity": "sha512-ag/Vos/mXXpWLLAYWsAoQdgS+gW7IwvgMLOgqopm/DbzAjazLltzgzpVMsFlgmo9TzG5hGXeaBZx2AI731RIsQ==",
+ "version": "2.30.0",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.0.tgz",
+ "integrity": "sha512-g6bZh3YCKQRdwuO/tSZZYJAw622SjsRfJ2X0Iy4sSOHZ34/sPPdVBn8fev2tj7njzLwuqPw9uMtGsGkO5kIQvg==",
"dev": true,
"requires": {
"semver": "^5.4.1"
@@ -23280,12 +23251,6 @@
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz",
"integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg=="
},
- "noop-logger": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz",
- "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=",
- "dev": true
- },
"normalize-package-data": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
@@ -24704,9 +24669,9 @@
"integrity": "sha512-eSToKjNLu0FiF76SSGMHjOFXYzAc/CJqi677Sq6hYvcvFCBtD6de/W5l+0IYPf7ypscqAfjCttxvTdMJt5Gj8Q=="
},
"prebuild-install": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.2.tgz",
- "integrity": "sha512-PzYWIKZeP+967WuKYXlTOhYBgGOvTRSfaKI89XnfJ0ansRAH7hDU45X+K+FZeI1Wb/7p/NnuctPH3g0IqKUuSQ==",
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.3.tgz",
+ "integrity": "sha512-iqqSR84tNYQUQHRXalSKdIaM8Ov1QxOVuBNWI7+BzZWv6Ih9k75wOnH1rGQ9WWTaaLkTpxWKIciOF0KyfM74+Q==",
"dev": true,
"requires": {
"detect-libc": "^1.0.3",
@@ -24716,26 +24681,12 @@
"mkdirp-classic": "^0.5.3",
"napi-build-utils": "^1.0.1",
"node-abi": "^2.21.0",
- "noop-logger": "^0.1.1",
"npmlog": "^4.0.1",
"pump": "^3.0.0",
"rc": "^1.2.7",
"simple-get": "^3.0.3",
"tar-fs": "^2.0.0",
"tunnel-agent": "^0.6.0"
- },
- "dependencies": {
- "simple-get": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz",
- "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==",
- "dev": true,
- "requires": {
- "decompress-response": "^4.2.0",
- "once": "^1.3.1",
- "simple-concat": "^1.0.0"
- }
- }
}
},
"prelude-ls": {
@@ -25454,19 +25405,17 @@
}
},
"sharp": {
- "version": "0.27.2",
- "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.27.2.tgz",
- "integrity": "sha512-w3FVoONPG/x5MXCc3wsjOS+b9h3CI60qkus6EPQU4dkT0BDm0PyGhDCK6KhtfT3/vbeOMOXAKFNSw+I3QGWkMA==",
+ "version": "0.28.3",
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.28.3.tgz",
+ "integrity": "sha512-21GEP45Rmr7q2qcmdnjDkNP04Ooh5v0laGS5FDpojOO84D1DJwUijLiSq8XNNM6e8aGXYtoYRh3sVNdm8NodMA==",
"dev": true,
"requires": {
- "array-flatten": "^3.0.0",
"color": "^3.1.3",
"detect-libc": "^1.0.3",
- "node-addon-api": "^3.1.0",
- "npmlog": "^4.1.2",
- "prebuild-install": "^6.0.1",
- "semver": "^7.3.4",
- "simple-get": "^4.0.0",
+ "node-addon-api": "^3.2.0",
+ "prebuild-install": "^6.1.2",
+ "semver": "^7.3.5",
+ "simple-get": "^3.1.0",
"tar-fs": "^2.1.1",
"tunnel-agent": "^0.6.0"
},
@@ -25481,9 +25430,9 @@
}
},
"node-addon-api": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz",
- "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==",
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
+ "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
"dev": true
},
"semver": {
@@ -25527,31 +25476,14 @@
"dev": true
},
"simple-get": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.0.tgz",
- "integrity": "sha512-ZalZGexYr3TA0SwySsr5HlgOOinS4Jsa8YB2GJ6lUNAazyAu4KG/VmzMTwAt2YVXzzVj8QmefmAonZIK2BSGcQ==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz",
+ "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==",
"dev": true,
"requires": {
- "decompress-response": "^6.0.0",
+ "decompress-response": "^4.2.0",
"once": "^1.3.1",
"simple-concat": "^1.0.0"
- },
- "dependencies": {
- "decompress-response": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
- "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
- "dev": true,
- "requires": {
- "mimic-response": "^3.1.0"
- }
- },
- "mimic-response": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
- "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
- "dev": true
- }
}
},
"simple-swizzle": {
diff --git a/package.json b/package.json
index cb105f3d1..9a02c0439 100644
--- a/package.json
+++ b/package.json
@@ -58,7 +58,6 @@
"@types/leaflet.markercluster": "^1.4.3",
"@types/lz-string": "^1.3.34",
"@types/prompt-sync": "^4.1.0",
- "aspected-routing": "^0.3.1",
"autoprefixer": "^9.8.6",
"country-language": "^0.1.7",
"email-validator": "^2.0.4",
@@ -89,7 +88,7 @@
"fs": "0.0.1-security",
"marked": "^2.0.0",
"read-file": "^0.2.0",
- "sharp": "^0.27.0",
+ "sharp": "^0.28.3",
"tailwindcss": "npm:@tailwindcss/postcss7-compat@^2.2.7",
"ts-node": "^9.0.0",
"ts-node-dev": "^1.0.0-pre.63",