From: Tom Hughes Date: Thu, 28 Dec 2023 18:39:22 +0000 (+0000) Subject: Merge remote-tracking branch 'upstream/pull/4439' X-Git-Tag: live~1377 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/ee56d1057dffb23bc3836970aab06f455e4ae487?hp=8c32e6349281dc041af55d3b493fdeac85212b02 Merge remote-tracking branch 'upstream/pull/4439' --- diff --git a/.rubocop.yml b/.rubocop.yml index 97bb72e0a..1e18afd83 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -37,9 +37,6 @@ Metrics/ClassLength: Metrics/ModuleLength: Max: 150 -Minitest/MultipleAssertions: - Enabled: false - Naming/FileName: Exclude: - 'script/deliver-message' diff --git a/Gemfile.lock b/Gemfile.lock index 29ad5ed31..96ece492d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -95,8 +95,8 @@ GEM autoprefixer-rails (10.4.16.0) execjs (~> 2) aws-eventstream (1.3.0) - aws-partitions (1.869.0) - aws-sdk-core (3.190.0) + aws-partitions (1.875.0) + aws-sdk-core (3.190.1) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.8) @@ -104,7 +104,7 @@ GEM aws-sdk-kms (1.75.0) aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.141.0) + aws-sdk-s3 (1.142.0) aws-sdk-core (~> 3, >= 3.189.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.8) @@ -133,7 +133,8 @@ GEM bootstrap_form (5.4.0) actionpack (>= 6.1) activemodel (>= 6.1) - brakeman (6.1.0) + brakeman (6.1.1) + racc brotli (0.4.0) browser (5.3.1) builder (3.2.4) @@ -228,12 +229,12 @@ GEM erubi (1.12.0) execjs (2.9.1) exifr (1.4.0) - factory_bot (6.4.2) + factory_bot (6.4.4) activesupport (>= 5.0.0) factory_bot_rails (6.4.2) factory_bot (~> 6.4) railties (>= 5.0.0) - faraday (2.7.12) + faraday (2.8.1) base64 faraday-net_http (>= 2.0, < 3.1) ruby2_keywords (>= 0.0.4) @@ -289,7 +290,7 @@ GEM image_size (3.3.0) in_threads (1.6.0) io-console (0.7.1) - irb (1.10.1) + irb (1.11.0) rdoc reline (>= 0.3.8) jbuilder (2.11.5) @@ -335,7 +336,7 @@ GEM multi_json (1.15.0) multi_xml (0.6.0) mutex_m (0.2.0) - net-imap (0.4.8) + net-imap (0.4.9) date net-protocol net-pop (0.1.2) @@ -345,7 +346,7 @@ GEM net-smtp (0.4.0) net-protocol nio4r (2.7.0) - nokogiri (1.15.5) + nokogiri (1.16.0) mini_portile2 (~> 2.8.2) racc (~> 1.4) oauth (0.4.7) @@ -495,13 +496,13 @@ GEM rubocop (~> 1.41) rubocop-factory_bot (2.24.0) rubocop (~> 1.33) - rubocop-minitest (0.34.1) + rubocop-minitest (0.34.2) rubocop (>= 1.39, < 2.0) rubocop-ast (>= 1.30.0, < 2.0) - rubocop-performance (1.20.0) + rubocop-performance (1.20.1) rubocop (>= 1.48.1, < 2.0) rubocop-ast (>= 1.30.0, < 2.0) - rubocop-rails (2.23.0) + rubocop-rails (2.23.1) activesupport (>= 4.2.0) rack (>= 1.1) rubocop (>= 1.33.0, < 2.0) diff --git a/app/assets/images/key/cyclemap/cycleway.png b/app/assets/images/key/cyclemap/cycleway.png deleted file mode 100644 index 13bed4a7d..000000000 Binary files a/app/assets/images/key/cyclemap/cycleway.png and /dev/null differ diff --git a/app/assets/images/key/cyclemap/footway.svg b/app/assets/images/key/cyclemap/footway.svg deleted file mode 100644 index ecad17425..000000000 --- a/app/assets/images/key/cyclemap/footway.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/assets/images/key/cyclemap/motorway12.png b/app/assets/images/key/cyclemap/motorway12.png deleted file mode 100644 index 749493ad6..000000000 Binary files a/app/assets/images/key/cyclemap/motorway12.png and /dev/null differ diff --git a/app/assets/images/key/cyclemap/pedestrian.svg b/app/assets/images/key/cyclemap/pedestrian.svg deleted file mode 100644 index af8fce170..000000000 --- a/app/assets/images/key/cyclemap/pedestrian.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/assets/images/key/cyclemap/primary12.png b/app/assets/images/key/cyclemap/primary12.png deleted file mode 100644 index fed37d054..000000000 Binary files a/app/assets/images/key/cyclemap/primary12.png and /dev/null differ diff --git a/app/assets/images/key/cyclemap/rail.png b/app/assets/images/key/cyclemap/rail.png deleted file mode 100644 index 0abf0c1df..000000000 Binary files a/app/assets/images/key/cyclemap/rail.png and /dev/null differ diff --git a/app/assets/images/key/cyclemap/rail14.png b/app/assets/images/key/cyclemap/rail14.png deleted file mode 100644 index 957f17c85..000000000 Binary files a/app/assets/images/key/cyclemap/rail14.png and /dev/null differ diff --git a/app/assets/images/key/cyclemap/secondary12.png b/app/assets/images/key/cyclemap/secondary12.png deleted file mode 100644 index cde008523..000000000 Binary files a/app/assets/images/key/cyclemap/secondary12.png and /dev/null differ diff --git a/app/assets/images/key/cyclemap/track.png b/app/assets/images/key/cyclemap/track.png deleted file mode 100644 index f294edca0..000000000 Binary files a/app/assets/images/key/cyclemap/track.png and /dev/null differ diff --git a/app/assets/images/key/cyclemap/trunk12.png b/app/assets/images/key/cyclemap/trunk12.png deleted file mode 100644 index 51230a021..000000000 Binary files a/app/assets/images/key/cyclemap/trunk12.png and /dev/null differ diff --git a/app/assets/images/key/mapnik/bridge.svg b/app/assets/images/key/mapnik/bridge.svg deleted file mode 100644 index 4096e8166..000000000 --- a/app/assets/images/key/mapnik/bridge.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/app/assets/images/key/mapnik/bridleway.png b/app/assets/images/key/mapnik/bridleway.png deleted file mode 100644 index 9aec1ad33..000000000 Binary files a/app/assets/images/key/mapnik/bridleway.png and /dev/null differ diff --git a/app/assets/images/key/mapnik/building15.svg b/app/assets/images/key/mapnik/building15.svg deleted file mode 100644 index cc0507340..000000000 --- a/app/assets/images/key/mapnik/building15.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/assets/images/key/mapnik/building16.svg b/app/assets/images/key/mapnik/building16.svg deleted file mode 100644 index 6ff2210a5..000000000 --- a/app/assets/images/key/mapnik/building16.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/assets/images/key/mapnik/cycleway.png b/app/assets/images/key/mapnik/cycleway.png deleted file mode 100644 index a1a16f1ed..000000000 Binary files a/app/assets/images/key/mapnik/cycleway.png and /dev/null differ diff --git a/app/assets/images/key/mapnik/footway.png b/app/assets/images/key/mapnik/footway.png deleted file mode 100644 index 4486119ba..000000000 Binary files a/app/assets/images/key/mapnik/footway.png and /dev/null differ diff --git a/app/assets/images/key/mapnik/glacier10.svg b/app/assets/images/key/mapnik/glacier10.svg deleted file mode 100644 index be79f238a..000000000 --- a/app/assets/images/key/mapnik/glacier10.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/assets/images/key/mapnik/glacier5.svg b/app/assets/images/key/mapnik/glacier5.svg deleted file mode 100644 index 8e6d368eb..000000000 --- a/app/assets/images/key/mapnik/glacier5.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/assets/images/key/mapnik/motorway.png b/app/assets/images/key/mapnik/motorway.png deleted file mode 100644 index 484fc9daa..000000000 Binary files a/app/assets/images/key/mapnik/motorway.png and /dev/null differ diff --git a/app/assets/images/key/mapnik/rail12.svg b/app/assets/images/key/mapnik/rail12.svg deleted file mode 100644 index 45c76a41e..000000000 --- a/app/assets/images/key/mapnik/rail12.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/app/assets/images/key/mapnik/rail18.svg b/app/assets/images/key/mapnik/rail18.svg deleted file mode 100644 index 5094bafde..000000000 --- a/app/assets/images/key/mapnik/rail18.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/app/assets/images/key/mapnik/track.png b/app/assets/images/key/mapnik/track.png deleted file mode 100644 index f294edca0..000000000 Binary files a/app/assets/images/key/mapnik/track.png and /dev/null differ diff --git a/app/assets/images/key/mapnik/tram15.svg b/app/assets/images/key/mapnik/tram15.svg deleted file mode 100644 index 8f873f7ee..000000000 --- a/app/assets/images/key/mapnik/tram15.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/assets/images/key/mapnik/tunnel.svg b/app/assets/images/key/mapnik/tunnel.svg deleted file mode 100644 index 05cd7e713..000000000 --- a/app/assets/images/key/mapnik/tunnel.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/app/assets/images/key/mapnik/unclassified.png b/app/assets/images/key/mapnik/unclassified.png deleted file mode 100644 index 3cdfb2dda..000000000 Binary files a/app/assets/images/key/mapnik/unclassified.png and /dev/null differ diff --git a/app/assets/images/key/mapnik/unclassified13.png b/app/assets/images/key/mapnik/unclassified13.png deleted file mode 100644 index 1a8792462..000000000 Binary files a/app/assets/images/key/mapnik/unclassified13.png and /dev/null differ diff --git a/app/assets/images/key/opnvkarte/main_road11.svg b/app/assets/images/key/opnvkarte/main_road11.svg deleted file mode 100644 index b03c74414..000000000 --- a/app/assets/images/key/opnvkarte/main_road11.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/assets/images/key/opnvkarte/main_road13.svg b/app/assets/images/key/opnvkarte/main_road13.svg deleted file mode 100644 index 2d5902236..000000000 --- a/app/assets/images/key/opnvkarte/main_road13.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/assets/images/key/opnvkarte/main_road15.svg b/app/assets/images/key/opnvkarte/main_road15.svg deleted file mode 100644 index cb5391648..000000000 --- a/app/assets/images/key/opnvkarte/main_road15.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/assets/images/key/opnvkarte/main_road17.svg b/app/assets/images/key/opnvkarte/main_road17.svg deleted file mode 100644 index de7db0f17..000000000 --- a/app/assets/images/key/opnvkarte/main_road17.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/assets/images/key/opnvkarte/motorway13.svg b/app/assets/images/key/opnvkarte/motorway13.svg deleted file mode 100644 index c44e777a2..000000000 --- a/app/assets/images/key/opnvkarte/motorway13.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/assets/images/key/opnvkarte/motorway15.svg b/app/assets/images/key/opnvkarte/motorway15.svg deleted file mode 100644 index c217bb2a7..000000000 --- a/app/assets/images/key/opnvkarte/motorway15.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/app/assets/images/key/opnvkarte/motorway17.svg b/app/assets/images/key/opnvkarte/motorway17.svg deleted file mode 100644 index 36b37db59..000000000 --- a/app/assets/images/key/opnvkarte/motorway17.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/app/assets/images/key/opnvkarte/motorway8.svg b/app/assets/images/key/opnvkarte/motorway8.svg deleted file mode 100644 index 21f006cef..000000000 --- a/app/assets/images/key/opnvkarte/motorway8.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/assets/images/key/opnvkarte/rail11.svg b/app/assets/images/key/opnvkarte/rail11.svg deleted file mode 100644 index 849f5cf94..000000000 --- a/app/assets/images/key/opnvkarte/rail11.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/app/assets/images/key/opnvkarte/rail15.svg b/app/assets/images/key/opnvkarte/rail15.svg deleted file mode 100644 index efe7792b9..000000000 --- a/app/assets/images/key/opnvkarte/rail15.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/app/assets/javascripts/messages.js b/app/assets/javascripts/messages.js index 5accc1a60..cc86da05e 100644 --- a/app/assets/javascripts/messages.js +++ b/app/assets/javascripts/messages.js @@ -22,6 +22,8 @@ $(document).ready(function () { $(".user-button").before(data.inboxanchor); $("#inbox-count").replaceWith(data.inbox_count); + $("#outbox-count").replaceWith(data.outbox_count); + $("#muted-count").replaceWith(data.muted_count); } function updateReadState(target, isRead) { diff --git a/app/helpers/svg_helper.rb b/app/helpers/svg_helper.rb index abb512f0d..a40fa7086 100644 --- a/app/helpers/svg_helper.rb +++ b/app/helpers/svg_helper.rb @@ -1,7 +1,37 @@ module SvgHelper - def solid_svg_tag(width, height, fill, **options) - tag.svg :width => width, :height => height, **options do - tag.rect :width => "100%", :height => "100%", :fill => fill + def key_svg_tag(**options) + border_width = options["border"] ? (options["border-width"] || 1) : 0 + rect_attrs = { + :width => "100%", + :height => "100%", + :fill => options["fill"] || "none" + } + if border_width.positive? + rect_attrs[:x] = rect_attrs[:y] = format("%g", 0.5 * border_width) + rect_attrs[:width] = options["width"] - border_width + rect_attrs[:height] = options["height"] - border_width end + svg_attrs = options.slice("width", "height", "opacity", :class) + + tag.svg(**svg_attrs) do + horizontal = "H#{options['width']}" + concat tag.rect(**rect_attrs, **stroke_attrs(options, "border")) if options["fill"] || options["border"] + if options["line"] + y_middle = format("%g", 0.5 * options["height"]) + concat tag.path(:d => "M0,#{y_middle} #{horizontal}", **stroke_attrs(options, "line")) + end + if options["casing"] + casing_width = options["casing-width"] || 1 + y_top = format("%g", 0.5 * casing_width) + y_bottom = format("%g", options["height"] - (0.5 * casing_width)) + concat tag.path(:d => "M0,#{y_top} #{horizontal} M0,#{y_bottom} #{horizontal}", **stroke_attrs(options, "casing")) + end + end + end + + private + + def stroke_attrs(attrs, prefix) + attrs.select { |key| key.start_with?(prefix) }.transform_keys { |key| key.delete_prefix(prefix).prepend("stroke") } end end diff --git a/app/views/layouts/map.html.erb b/app/views/layouts/map.html.erb index 55066f25f..f6a7473a4 100644 --- a/app/views/layouts/map.html.erb +++ b/app/views/layouts/map.html.erb @@ -50,13 +50,9 @@ :bytemark => link_to(t("layouts.partners_bytemark"), "https://www.bytemark.co.uk"), :partners => link_to(t("layouts.partners_partners"), "https://hardware.openstreetmap.org/thanks/") %>

-
- - +
<% end %> diff --git a/app/views/messages/_message_count.html.erb b/app/views/messages/_inbox_count.html.erb similarity index 91% rename from app/views/messages/_message_count.html.erb rename to app/views/messages/_inbox_count.html.erb index 33a3b52f3..86bb2c474 100644 --- a/app/views/messages/_message_count.html.erb +++ b/app/views/messages/_inbox_count.html.erb @@ -1,7 +1,7 @@ -

+

<%= t "messages.inbox.messages", :new_messages => t("messages.inbox.new_messages", :count => current_user.new_messages.size), :old_messages => t("messages.inbox.old_messages", :count => current_user.messages.size - current_user.new_messages.size) %> -

+

diff --git a/app/views/messages/_muted_count.html.erb b/app/views/messages/_muted_count.html.erb new file mode 100644 index 000000000..207973d58 --- /dev/null +++ b/app/views/messages/_muted_count.html.erb @@ -0,0 +1,3 @@ +

+<%= t "messages.muted.messages", :count => current_user.muted_messages.size %> +

diff --git a/app/views/messages/_outbox_count.html.erb b/app/views/messages/_outbox_count.html.erb new file mode 100644 index 000000000..5b27f1d6e --- /dev/null +++ b/app/views/messages/_outbox_count.html.erb @@ -0,0 +1,3 @@ +

+<%= t "messages.outbox.messages", :count => current_user.sent_messages.size %> +

diff --git a/app/views/messages/destroy.json.jbuilder b/app/views/messages/destroy.json.jbuilder index 3403ac888..65bfd6a6b 100644 --- a/app/views/messages/destroy.json.jbuilder +++ b/app/views/messages/destroy.json.jbuilder @@ -1,2 +1,4 @@ json.inboxanchor render(:partial => "layouts/inbox") -json.inbox_count render(:partial => "message_count") +json.inbox_count render(:partial => "inbox_count") +json.outbox_count render(:partial => "outbox_count") +json.muted_count render(:partial => "muted_count") diff --git a/app/views/messages/inbox.html.erb b/app/views/messages/inbox.html.erb index db807d2df..4d6be787b 100644 --- a/app/views/messages/inbox.html.erb +++ b/app/views/messages/inbox.html.erb @@ -4,7 +4,7 @@ <%= render :partial => "heading", :locals => { :active_link_path => inbox_messages_path } %> -

<%= render :partial => "message_count" %>

+<%= render :partial => "inbox_count" %> <% if current_user.messages.size > 0 %> <%= render :partial => "messages_table", :locals => { :columns => %w[from subject date], :messages => current_user.messages, :inner_partial => "message_summary" } %> diff --git a/app/views/messages/mark.json.jbuilder b/app/views/messages/mark.json.jbuilder index 3403ac888..65bfd6a6b 100644 --- a/app/views/messages/mark.json.jbuilder +++ b/app/views/messages/mark.json.jbuilder @@ -1,2 +1,4 @@ json.inboxanchor render(:partial => "layouts/inbox") -json.inbox_count render(:partial => "message_count") +json.inbox_count render(:partial => "inbox_count") +json.outbox_count render(:partial => "outbox_count") +json.muted_count render(:partial => "muted_count") diff --git a/app/views/messages/muted.html.erb b/app/views/messages/muted.html.erb index 40c74e915..8e97abc7f 100644 --- a/app/views/messages/muted.html.erb +++ b/app/views/messages/muted.html.erb @@ -4,6 +4,6 @@ <%= render :partial => "heading", :locals => { :active_link_path => muted_messages_path } %> -

<%= t ".messages", :count => current_user.muted_messages.size %>

+<%= render :partial => "muted_count" %> <%= render :partial => "messages_table", :locals => { :columns => %w[from subject date], :messages => current_user.muted_messages, :inner_partial => "message_summary" } %> diff --git a/app/views/messages/outbox.html.erb b/app/views/messages/outbox.html.erb index ae8a899c4..65fbaf326 100644 --- a/app/views/messages/outbox.html.erb +++ b/app/views/messages/outbox.html.erb @@ -4,7 +4,7 @@ <%= render :partial => "heading", :locals => { :active_link_path => outbox_messages_path } %> -

<%= t ".messages", :count => current_user.sent_messages.size %>

+<%= render :partial => "outbox_count" %> <% if current_user.sent_messages.size > 0 %> <%= render :partial => "messages_table", :locals => { :columns => %w[to subject date], :messages => current_user.sent_messages, :inner_partial => "sent_message_summary" } %> diff --git a/app/views/site/key.html.erb b/app/views/site/key.html.erb index 28e364685..82105097e 100644 --- a/app/views/site/key.html.erb +++ b/app/views/site/key.html.erb @@ -4,10 +4,10 @@ <% layer_data.each do |entry| %> <%= tag.tr :class => "mapkey-table-entry", :data => { :layer => layer_name, :zoom_min => entry["min_zoom"], :zoom_max => entry["max_zoom"] } do %> - <% if entry["width"] && entry["height"] && entry["fill"] %> - <%= solid_svg_tag entry["width"], entry["height"], entry["fill"], :class => "d-block mx-auto" %> - <% else %> + <% if entry["image"] %> <%= image_tag "key/#{layer_name}/#{entry['image']}", :class => "d-block mx-auto" %> + <% else %> + <%= key_svg_tag :class => "d-block mx-auto", **entry %> <% end %> diff --git a/config/key.yml b/config/key.yml index d7d4017b1..5341245e5 100644 --- a/config/key.yml +++ b/config/key.yml @@ -1,24 +1,24 @@ mapnik: # transportation: roads.mss - - { min_zoom: 6, name: motorway, image: motorway.png } + - { min_zoom: 6, name: motorway, width: 52, height: 5, fill: "#e892a2", casing: "#dc2a67" } - { min_zoom: 6, name: main_road, image: mainroad.png } - { min_zoom: 8, name: main_road, image: mainroad8.png } - { min_zoom: 12, name: main_road, image: mainroad12.png } - - { min_zoom: 13, name: track, image: track.png } - - { min_zoom: 13, name: bridleway, image: bridleway.png } - - { min_zoom: 13, name: cycleway, image: cycleway.png } - - { min_zoom: 13, name: footway, image: footway.png } + - { min_zoom: 13, name: track, width: 52, height: 3, opacity: .8, line: "#996600", line-width: 1.5, line-dasharray: "6 5" } + - { min_zoom: 13, name: bridleway, width: 52, height: 3, line: green, line-width: 1.25, line-dasharray: "4 2" } + - { min_zoom: 13, name: cycleway, width: 52, height: 1, line: blue, line-dasharray: "3 3.5" } + - { min_zoom: 13, name: footway, width: 52, height: 3, line: salmon, line-width: 1.3, line-dasharray: "3 3.5" } - { min_zoom: 8, name: rail, width: 52, height: 1, fill: "#787878" } - - { min_zoom: 12, name: rail, image: rail12.svg } - - { min_zoom: 18, name: rail, image: rail18.svg } + - { min_zoom: 12, name: rail, width: 52, height: 3, fill: "#707070", line: white, line-dasharray: 8, line-dashoffset: 2 } + - { min_zoom: 18, name: rail, width: 52, height: 4, fill: "#707070", line: white, line-dasharray: 8, line-dashoffset: 2, line-width: 2 } - { min_zoom: 12, name: subway, width: 52, height: 2, fill: "#999" } - { min_zoom: 8, name: light_rail, width: 52, height: 1, fill: "#ccc" } - { min_zoom: 10, name: light_rail, width: 52, height: 1, fill: "#aaa" } - { min_zoom: 13, name: light_rail, width: 52, height: 2, fill: "#666" } - - { min_zoom: 12, name: tram_only, width: 52, height: 1, fill: "#6e6e6eaa" } - - { min_zoom: 14, name: tram_only, width: 52, height: 1, fill: "#6e6e6e" } - - { min_zoom: 15, name: tram_only, image: tram15.svg } - - { min_zoom: 17, name: tram_only, width: 52, height: 2, fill: "#6e6e6e" } + - { min_zoom: 12, name: tram_only, width: 52, height: 1, line: "#6e6e6e", line-width: 0.75 } + - { min_zoom: 14, name: tram_only, width: 52, height: 3, line: "#6e6e6e", line-width: 1 } + - { min_zoom: 15, name: tram_only, width: 52, height: 3, line: "#6e6e6e", line-width: 1.5 } + - { min_zoom: 17, name: tram_only, width: 52, height: 2, line: "#6e6e6e", line-width: 2 } - { min_zoom: 12, name: [cable_car, chair_lift], image: cable.png } - { min_zoom: 11, name: [runway_only, taxiway], image: runway11.svg } - { min_zoom: 12, name: [runway_only, taxiway], image: runway12.svg } @@ -30,8 +30,8 @@ mapnik: # landcover z5: landcover.mss, water.mss - { name: [lake_only, reservoir], width: 26, height: 10, fill: "#aad3df" } - { name: intermittent_water, image: intermittent_water.svg } - - { min_zoom: 5, name: glacier, image: glacier5.svg } - - { min_zoom: 10, name: glacier, image: glacier10.svg } + - { min_zoom: 5, name: glacier, width: 26, height: 10, fill: "#ddecec", border: "#9cf" } + - { min_zoom: 10, name: glacier, width: 26, height: 10, fill: "#ddecec", border: "#9cf", border-dasharray: "4 2" } - { min_zoom: 10, name: reef, image: reef.png } - { min_zoom: 10, name: wetland, image: wetland.png } - { min_zoom: 5, name: [forest_only, wood], width: 26, height: 10, fill: "#bddab1" } @@ -74,40 +74,42 @@ mapnik: - { min_zoom: 13, name: [school_only, university, hospital], image: school.svg } # buildings: buildings.mss - { min_zoom: 14, name: building, width: 10, height: 10, fill: "#ab9793" } - - { min_zoom: 15, name: building, image: building15.svg } - - { min_zoom: 16, name: building, image: building16.svg } + - { min_zoom: 15, name: building, width: 10, height: 10, fill: "#b9a99c", border: "#a99a8d" } + - { min_zoom: 16, name: building, width: 10, height: 10, fill: "#c4b6ab", border: "#a99a8d" } # stations: stations.mss - { min_zoom: 12, name: station, width: 4, height: 4, fill: "#7981b0" } - { min_zoom: 13, name: station, width: 6, height: 6, fill: "#7981b0" } - { min_zoom: 15, name: station, width: 9, height: 9, fill: "#7981b0" } # other - { min_zoom: 11, name: [summit_only, peak], image: summit.svg } # amenity-points.mss - - { min_zoom: 13, name: tunnel, image: tunnel.svg } # roads.mss - - { min_zoom: 13, name: bridge, image: bridge.svg } # roads.mss + - { min_zoom: 13, name: tunnel, width: 50, height: 5, casing: grey, casing-dasharray: "4 2", casing-dashoffset: 1 } # roads.mss + - { min_zoom: 13, name: bridge, width: 50, height: 5, casing: black } # roads.mss - { min_zoom: 15, name: private, image: private.png } - { min_zoom: 15, name: destination, image: destination.png } - { min_zoom: 12, name: construction, image: construction.png } cyclemap: - { min_zoom: 5, name: motorway, width: 50, height: 3, fill: "#9a9ab1" } - - { min_zoom: 12, name: motorway, image: motorway12.png } + - { min_zoom: 12, name: motorway, width: 50, height: 5, fill: "#bdbece", casing: "#8d95a7" } - { min_zoom: 6, name: trunk, width: 50, height: 2, fill: "#c8d8c8" } - - { min_zoom: 12, name: trunk, image: trunk12.png } + - { min_zoom: 12, name: trunk, width: 50, height: 5, fill: "#c8d8c8", casing: "#abb5a4" } - { min_zoom: 8, name: primary, width: 50, height: 2, fill: "#d8c8c8" } - - { min_zoom: 12, name: primary, image: primary12.png } + - { min_zoom: 12, name: primary, width: 50, height: 4, fill: "#f0e3e3", casing: "#d4b6b7" } - { min_zoom: 10, name: secondary, width: 50, height: 1, fill: "#dadacc" } - - { min_zoom: 12, name: secondary, image: secondary12.png } - - { min_zoom: 15, name: pedestrian, image: pedestrian.svg } - - { min_zoom: 13, name: track, image: track.png } - - { min_zoom: 8, name: cycleway, image: cycleway.png } + - { min_zoom: 12, name: secondary, width: 50, height: 4, fill: "#ededc8", casing: "#c8b48a" } + - { min_zoom: 15, name: pedestrian, width: 50, height: 4, fill: "#e2e3e2", casing: "#9a9a9a" } + - { min_zoom: 13, name: track, width: 50, height: 3, fill: white, casing: "#999", casing-dasharray: "5 3", casing-dashoffset: 1 } + - { min_zoom: 15, name: track, width: 50, height: 4, fill: white, casing: "#999", casing-dasharray: "5 3", casing-dashoffset: 1 } + - { min_zoom: 17, name: track, width: 50, height: 5, fill: white, casing: "#999", casing-dasharray: "5 3", casing-dashoffset: 1 } + - { min_zoom: 8, name: cycleway, width: 50, height: 3, line: "#0100fe", line-width: 1.5, line-dasharray: "6 2" } - { min_zoom: 5, name: cycleway_national, width: 50, height: 2, fill: "#fe0000" } - { min_zoom: 13, name: cycleway_national, width: 50, height: 4, fill: "#ffb3b3" } - { min_zoom: 7, name: cycleway_regional, width: 50, height: 2, fill: "#b638fb" } - { min_zoom: 13, name: cycleway_regional, width: 50, height: 4, fill: "#ddb5d9" } - { min_zoom: 8, name: cycleway_local, width: 50, height: 2, fill: "#0100fe" } - { min_zoom: 13, name: cycleway_local, width: 50, height: 4, fill: "#b2b2ff" } - - { min_zoom: 13, name: footway, image: footway.svg } - - { min_zoom: 7, name: rail, image: rail.png } - - { min_zoom: 14, name: rail, image: rail14.png } + - { min_zoom: 13, name: footway, width: 50, height: 3, line: "#bd6d6e", line-width: 1.5, line-dasharray: "6 2" } + - { min_zoom: 7, name: rail, width: 50, height: 3, line: "#999999", line-width: 1.5 } + - { min_zoom: 14, name: rail, width: 50, height: 4, fill: "#999999", line: white, line-dasharray: 4, line-width: 2 } - { min_zoom: 1, name: [lake_only, reservoir], width: 26, height: 10, fill: "#addeff" } - { min_zoom: 9, name: [forest_only, wood], width: 26, height: 10, fill: "#b3d6a4" } - { min_zoom: 10, name: meadow, width: 26, height: 10, fill: "#c0de9c" } @@ -119,8 +121,8 @@ cyclemap: opnvkarte: - { min_zoom: 6, name: rail, width: 52, height: 1, fill: "#868686" } - { min_zoom: 8, name: rail, width: 52, height: 2, fill: "#868686" } - - { min_zoom: 11, name: rail, image: rail11.svg } - - { min_zoom: 15, name: rail, image: rail15.svg } + - { min_zoom: 11, name: rail, width: 52, height: 3, fill: "#868686", line: "#eeeeee", line-dasharray: 10, line-dashoffset: 9 } + - { min_zoom: 15, name: rail, width: 52, height: 4, fill: "#868686", line: "#eeeeee", line-dasharray: 10, line-dashoffset: 9, line-width: 2 } - { min_zoom: 17, name: rail, image: rail17.svg } - { min_zoom: 6, name: train, width: 52, height: 2, fill: "#ffc366" } - { min_zoom: 10, name: train, width: 52, height: 3, fill: "#ffc366" } @@ -154,15 +156,15 @@ opnvkarte: - { min_zoom: 15, name: bus_stop, image: bus_stop15.svg } - { min_zoom: 13, name: stop, image: stop13.svg } - { min_zoom: 15, name: stop, image: stop15.svg } - - { min_zoom: 8, name: motorway, image: motorway8.svg } - - { min_zoom: 13, name: motorway, image: motorway13.svg } - - { min_zoom: 15, name: motorway, image: motorway15.svg } - - { min_zoom: 17, name: motorway, image: motorway17.svg } - - { min_zoom: 8, name: main_road, width: 52, height: 1, fill: "#5c6d6d88" } - - { min_zoom: 11, name: main_road, image: main_road11.svg } - - { min_zoom: 13, name: main_road, image: main_road13.svg } - - { min_zoom: 15, name: main_road, image: main_road15.svg } - - { min_zoom: 17, name: main_road, image: main_road17.svg } + - { min_zoom: 8, name: motorway, width: 52, height: 4, fill: "#dddddd", casing: "#6d6d6d" } + - { min_zoom: 13, name: motorway, width: 52, height: 8, fill: "#dddddd", casing: "#6d6d6d" } + - { min_zoom: 15, name: motorway, width: 52, height: 13, fill: "#dddddd", casing: "#6d6d6d", line: "#ffffff", line-dasharray: 12, line-dashoffset: 4 } + - { min_zoom: 17, name: motorway, width: 52, height: 17, fill: "#dddddd", casing: "#6d6d6d", line: "#ffffff", line-dasharray: 12, line-dashoffset: 4, casing-width: 2 } + - { min_zoom: 8, name: main_road, width: 52, height: 1, fill: "#5c6d6d88" } + - { min_zoom: 11, name: main_road, width: 52, height: 4, fill: "#dddddd", casing: "#a1968b" } + - { min_zoom: 13, name: main_road, width: 52, height: 8, fill: "#dddddd", casing: "#a1968b" } + - { min_zoom: 15, name: main_road, width: 52, height: 13, fill: "#dddddd", casing: "#a1968b" } + - { min_zoom: 17, name: main_road, width: 52, height: 17, fill: "#dddddd", casing: "#a1968b" } # landcover - { min_zoom: 0, name: [lake_only, reservoir], width: 26, height: 10, fill: "#a1cbea" } - { min_zoom: 8, name: [lake_only, reservoir], width: 26, height: 10, fill: "#bfd3ef" } diff --git a/config/locales/en.yml b/config/locales/en.yml index fa10f018f..14e9b5c44 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2683,6 +2683,7 @@ en: application: "Application" permissions: "Permissions" no_applications_html: "You have not yet authorized any %{oauth2} applications." + oauth_2: "OAuth 2" application: revoke: "Revoke Access" confirm_revoke: "Revoke access for this application?" diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 1caa4e7de..0db0ee2ce 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -1812,6 +1812,7 @@ fa: no home location: شما محل خانهٔ خودتان را وارد نکرده‌اید. update home location on click: وقتی روی نقشه کلیک می‌کنم موقعیت خانه روزآمد شود. + delete: حذف update: success: نمایه ذخیره شد. failure: ذخیره‌سازی نمایه انجام نشد. diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 9db11fabb..56a0ce9fc 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -2,6 +2,7 @@ # Exported from translatewiki.net # Export driver: phpyaml # Author: 0x010C +# Author: 2NumForIce # Author: Adriendelucca # Author: Ajeje Brazorf # Author: Alno @@ -137,6 +138,11 @@ fr: messages: invalid_email_address: ne semble pas être une adresse de courriel valide email_address_not_routable: n’est pas routable + models: + user_mute: + attributes: + subject: + format: '%{message}' models: acl: Liste de contrôle d’accès changeset: Groupe de modifications @@ -2526,7 +2532,7 @@ fr: military: Zone militaire school_only: École university: université - hospital: hôpital + hospital: Hôpital building: Bâtiment important station: Gare ferroviaire summit_only: Sommet @@ -2537,7 +2543,7 @@ fr: destination: Accès réservé aux riverains construction: Routes en construction bus_stop: Arrêt de bus - stop: Arrêt + stop: Arrêter bicycle_shop: Magasin de vélos bicycle_parking: Parking à vélos toilets: Toilettes diff --git a/config/locales/ia.yml b/config/locales/ia.yml index 5a5bb722a..ac7a08dbc 100644 --- a/config/locales/ia.yml +++ b/config/locales/ia.yml @@ -2341,16 +2341,16 @@ ia: cable_car: Telepherico chair_lift: Telesedia runway_only: Pista de aeroporto - taxiway: via de circulation pro aviones + taxiway: Via de circulation pro aviones apron_only: Platteforma pro aviones admin: Limite administrative orchard_only: Verdiero - vineyard: vinia + vineyard: Vinia forest_only: Foreste - wood: bosco + wood: Bosco farmland: Terra agricole grass_only: Herba - meadow: prato + meadow: Prato bare_rock: Rocca nude sand: Sablo golf: Percurso de golf @@ -2364,7 +2364,7 @@ ia: heathland: Landa scrubland: Terreno de brossas lake_only: Laco - reservoir: bassino + reservoir: Reservoir intermittent_water: Massa de aqua intermittente glacier: Glaciero reef: Scolio @@ -2378,12 +2378,12 @@ ia: reserve: Reserva natural military: Area militar school_only: Schola - university: universitate - hospital: hospital + university: Universitate + hospital: Hospital building: Edificio significante station: Station ferroviari summit_only: Summitate - peak: picco + peak: Picco tunnel: Bordo a lineettas = tunnel bridge: Bordo nigre = ponte private: Accesso private diff --git a/config/locales/skr-arab.yml b/config/locales/skr-arab.yml index 4bd17ca3c..b27491ed1 100644 --- a/config/locales/skr-arab.yml +++ b/config/locales/skr-arab.yml @@ -1054,6 +1054,7 @@ skr-arab: back_to_inbox: انباکس تے واپس outbox: title: آؤٹ باکس + actions: عمل show: title: سنیہا پڑھو reply_button: جواب @@ -1219,6 +1220,7 @@ skr-arab: bus: بس cable_car: کیبل کار chair_lift: چیئر لفٹ + taxiway: ٹیکسی دا راہ orchard_only: بغیچا forest_only: جنگل wood: لکڑ @@ -1238,6 +1240,7 @@ skr-arab: university: یونی ورسٹی hospital: ہسپتال station: ریلوے ٹیشݨ + peak: چوٹی bus_stop: بساں دا اݙا stop: اݙہ welcome: diff --git a/config/locales/ta.yml b/config/locales/ta.yml index 85e7d5faf..680773e89 100644 --- a/config/locales/ta.yml +++ b/config/locales/ta.yml @@ -53,6 +53,12 @@ ta: messages: invalid_email_address: செல்லுபடியாகும் மின்னஞ்சல் முகவரியாகத் தெரியவில்லை email_address_not_routable: திசைதிருப்பக்கூடியது அல்ல + models: + user_mute: + attributes: + subject: + format: '%{message}' + is_already_muted: ஏற்கனவே மௌனிக்கப்பட்டுள்ளார் models: acl: அனுமதிக் கட்டுப்பாட்டுப் பட்டியல் changeset: மாற்றங்கள் @@ -597,14 +603,16 @@ ta: from: 'அனுப்புநர்:' subject: பொருள் date: நாள் + actions: செயல்கள் message_summary: unread_button: வாசிக்கப்படாததாக என குறியிடு read_button: வாசித்ததாக குறியிடு reply_button: பதிலளி destroy_button: நீக்கு + unmute_button: வருமஞ்சலுக்கு நகர்த்து new: - title: தகவல் அனுப்பு - send_message_to_html: '%{name} க்கு புதிய தகவல் அனுப்பு' + title: தகவலனுப்பு + send_message_to_html: '%{name} என்பவருக்கு ஒரு புதிய தகவலை அனுப்பு' back_to_inbox: உள்பெட்டிக்கு திரும்பவும் create: message_sent: செய்தி அனுப்பப்பட்டுவிட்டது @@ -613,6 +621,12 @@ ta: heading: அப்படியொரு தகவல் இல்லை outbox: title: அனுப்பியவை + actions: செயல்கள் + muted: + title: மௌனித்த தகவல்கள் + messages: + one: '%{count} மௌனித்த தகவல்' + other: உமக்கு %{count} மௌனித்த தகவல்கள் உள்ளன show: title: தகவலை வாசிக்கவும் reply_button: பதிலளி @@ -620,6 +634,10 @@ ta: destroy_button: நீக்கு sent_message_summary: destroy_button: நீக்கு + heading: + muted_messages: மௌனித்த தகவல்கள் + unmute: + notice: தகவல் வருமஞ்சலுக்கு நகர்த்தப்பட்டுள்ளது destroy: destroyed: தகவல் நீக்கப்பட்டது passwords: @@ -692,23 +710,33 @@ ta: secondary: இரண்டாம் நிலை சாலை unclassified: வகைப்படுத்தாத சாலை rail: இரயில்வே + vineyard: திராட்சைத் தோட்டம் forest_only: காடு wood: விறகு + farmland: பண்ணை நிலம் + meadow: புல்வெளி + bare_rock: வெற்றுப் பாறை + sand: மணல் park: பூங்கா common_only: பொதுவான + built_up: கட்டடப் பகுதி industrial: தொழிற்சாலை பகுதி commercial: வணிக பகுதி + scrubland: புதர் நிலம் lake_only: ஏரி - reservoir: நீர்த்தேக்கம் + reservoir: நீர்நிலை + glacier: பனிப்பாறை + wetland: ஈரநிலம் farm: பண்ணை centre: விளையாட்டு மையம் military: ராணுவ பகுதி school_only: பள்ளி university: பல்கலைக்கழகம் + hospital: மருத்துவமனை building: குறிப்பிடத்தக்க கட்டிடம் station: தொடர்வண்டி நிலையம் summit_only: உச்சி மாநாடு - peak: உயரமான இடம் + peak: உச்சி private: தனியார் அனுமதி construction: சாலைகளில் கட்டுமானப் பணிகள் நடந்து வருகின்றன. toilets: கழிவறைகள் @@ -750,6 +778,9 @@ ta: in: உள் index: upload_trace: சுவடை பதிவேற்றவும் + application: + settings_menu: + muted_users: மௌனித்த பயனர்கள் oauth_clients: show: edit: தொகுப்பு விவரங்கள் @@ -772,6 +803,8 @@ ta: my diary: எனது நாட்குறிப்பேடு my edits: என் திருத்தங்கள் my settings: என் அமைப்புகள் + create_mute: இப்பயனரை மௌனி + destroy_mute: இப்பயனரை ஓசையாக்கு diary: நாட்குறிப்பேடு edits: தொகுப்புகள் add as friend: நண்பராக சேர் @@ -824,6 +857,25 @@ ta: display_name: தடைசெய்யப்பட்ட பயனர் creator_name: உருவாக்கியவர் status: நிலை + user_mutes: + index: + title: மௌனித்த பயனர்கள் + my_muted_users: எனது மௌனிக்கப்பட்ட பயனர்கள் + you_have_muted_n_users: + one: நீர் %{count} பயனரை மௌனித்துள்ளீர் + other: நீர் %{count} பயனர்களை மௌனித்துள்ளீர் + table: + thead: + muted_user: மௌனித்த பயனர் + actions: செயல்கள் + tbody: + unmute: ஓசையாக்கு + send_message: தகவலனுப்பு + create: + notice: நீர் %{name} என்பவரை மௌனித்தீர். + error: '%{name} என்பவரை மௌனிக்க முடியவில்லை. %{full_message}.' + destroy: + notice: நீர் %{name} என்பவரை ஓசையாக்கினீர். notes: show: description: விளக்கம் diff --git a/test/helpers/svg_helper_test.rb b/test/helpers/svg_helper_test.rb new file mode 100644 index 000000000..25a9e4568 --- /dev/null +++ b/test/helpers/svg_helper_test.rb @@ -0,0 +1,113 @@ +require "test_helper" + +class SvgHelperTest < ActionView::TestCase + def test_key_fill + svg = key_svg_tag("width" => 60, "height" => 40, "fill" => "green") + expected = <<~HTML.gsub(/\n\s*/, "") + + + + HTML + assert_dom_equal expected, svg + end + + def test_key_border + svg = key_svg_tag("width" => 60, "height" => 40, "border" => "red") + expected = <<~HTML.gsub(/\n\s*/, "") + + + + HTML + assert_dom_equal expected, svg + end + + def test_key_border_width + svg = key_svg_tag("width" => 60, "height" => 40, "border" => "red", "border-width" => 3) + expected = <<~HTML.gsub(/\n\s*/, "") + + + + HTML + assert_dom_equal expected, svg + end + + def test_key_border_with_integer_coords + svg = key_svg_tag("width" => 60, "height" => 40, "border" => "red", "border-width" => 2) + expected = <<~HTML.gsub(/\n\s*/, "") + + + + HTML + assert_dom_equal expected, svg + end + + def test_key_border_fractional_width + svg = key_svg_tag("width" => 60, "height" => 40, "border" => "red", "border-width" => 1.5) + expected = <<~HTML.gsub(/\n\s*/, "") + + + + HTML + assert_dom_equal expected, svg + end + + def test_key_line + svg = key_svg_tag("width" => 80, "height" => 15, "line" => "blue") + expected = <<~HTML.gsub(/\n\s*/, "") + + + + HTML + assert_dom_equal expected, svg + end + + def test_key_line_width + svg = key_svg_tag("width" => 80, "height" => 15, "line" => "blue", "line-width" => 3) + expected = <<~HTML.gsub(/\n\s*/, "") + + + + HTML + assert_dom_equal expected, svg + end + + def test_key_line_with_integer_coords + svg = key_svg_tag("width" => 80, "height" => 20, "line" => "blue") + expected = <<~HTML.gsub(/\n\s*/, "") + + + + HTML + assert_dom_equal expected, svg + end + + def test_key_casing + svg = key_svg_tag("width" => 80, "height" => 20, "casing" => "yellow") + expected = <<~HTML.gsub(/\n\s*/, "") + + + + HTML + assert_dom_equal expected, svg + end + + def test_key_casing_width + svg = key_svg_tag("width" => 80, "height" => 20, "casing" => "yellow", "casing-width" => 5) + expected = <<~HTML.gsub(/\n\s*/, "") + + + + HTML + assert_dom_equal expected, svg + end + + def test_key_casing_with_integer_coords + svg = key_svg_tag("width" => 80, "height" => 20, "casing" => "yellow", "casing-width" => 2) + expected = <<~HTML.gsub(/\n\s*/, "") + + + + HTML + assert_dom_equal expected, svg + end +end diff --git a/test/system/messages_test.rb b/test/system/messages_test.rb new file mode 100644 index 000000000..87021dd6b --- /dev/null +++ b/test/system/messages_test.rb @@ -0,0 +1,41 @@ +require "application_system_test_case" + +class NoteCommentsTest < ApplicationSystemTestCase + def test_delete_received_message + user = create(:user) + create(:message, :recipient => user) + sign_in_as(user) + + visit inbox_messages_path + assert_text "You have 1 new message and 0 old messages" + + click_button "Delete" + assert_text "You have 0 new messages and 0 old messages" + end + + def test_delete_sent_message + user = create(:user) + create(:message, :sender => user) + sign_in_as(user) + + visit outbox_messages_path + assert_text "You have 1 sent message" + + click_button "Delete" + assert_text "You have 0 sent messages" + end + + def test_delete_muted_message + user = create(:user) + muted_user = create(:user) + create(:user_mute, :owner => user, :subject => muted_user) + create(:message, :sender => muted_user, :recipient => user) + sign_in_as(user) + + visit muted_messages_path + assert_text "1 muted message" + + click_button "Delete" + assert_text "0 muted messages" + end +end diff --git a/test/system/oauth2_test.rb b/test/system/oauth2_test.rb new file mode 100644 index 000000000..ab4964052 --- /dev/null +++ b/test/system/oauth2_test.rb @@ -0,0 +1,10 @@ +require "application_system_test_case" + +class Oauth2Test < ApplicationSystemTestCase + def test_authorized_applications + sign_in_as(create(:user)) + visit oauth_authorized_applications_path + + assert_text "You have not yet authorized any OAuth 2 applications." + end +end diff --git a/yarn.lock b/yarn.lock index f722b6a1b..f113d5752 100644 --- a/yarn.lock +++ b/yarn.lock @@ -574,9 +574,9 @@ optionator@^0.9.3: type-check "^0.4.0" osm-community-index@^5.2.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/osm-community-index/-/osm-community-index-5.6.0.tgz#b2361fce7ded723844b0ed68d47bddfc4a8cb240" - integrity sha512-C5AqEWidBIgKeaJKQwuPWvDqSzm9CpZgDbHDi+k4+ZCHBazRQjnl7TpWVv2/fQWMqsJL3I5qzh19rXBTWMWL1A== + version "5.6.1" + resolved "https://registry.yarnpkg.com/osm-community-index/-/osm-community-index-5.6.1.tgz#5be72c700145e94c57f2006e6f767a0e49d93870" + integrity sha512-eMi5mDwwLkt3tbZtD60+aMj4kIa3smlQanxb3OcvJa2pv6w5uVCLbyCem0j8cTqAO3A+C7HD4T7dFUyt2WCYaQ== dependencies: diacritics "^1.3.0"