Merge remote-tracking branch 'upstream/pull/2296'
authorTom Hughes <tom@compton.nu>
Mon, 15 Jul 2019 07:19:30 +0000 (08:19 +0100)
committerTom Hughes <tom@compton.nu>
Mon, 15 Jul 2019 07:19:30 +0000 (08:19 +0100)
34 files changed:
.rubocop.yml
.rubocop_todo.yml
INSTALL.md
app/assets/javascripts/application.js
app/assets/javascripts/id.js
app/assets/javascripts/index.js
app/assets/javascripts/index/changeset.js
app/assets/javascripts/index/directions.js
app/assets/javascripts/index/export.js
app/assets/javascripts/index/history.js
app/assets/javascripts/index/new_note.js
app/assets/javascripts/index/note.js
app/assets/javascripts/index/notes.js
app/assets/javascripts/index/query.js
app/assets/javascripts/index/search.js
app/assets/javascripts/leaflet.key.js
app/assets/javascripts/leaflet.layers.js
app/assets/javascripts/leaflet.map.js
app/assets/javascripts/leaflet.query.js
app/assets/javascripts/leaflet.share.js
app/assets/javascripts/leaflet.sidebar.js
app/assets/javascripts/leaflet.zoom.js
app/assets/javascripts/router.js
config/eslint.json
config/locales/ar.yml
config/locales/ast.yml
config/locales/pl.yml
config/locales/pt-BR.yml
config/locales/sr.yml
config/locales/th.yml
config/locales/tr.yml
config/locales/uk.yml
package.json
yarn.lock

index 7d2df0445445ab5f25f560eeb0cdea58a474f0c2..87abac9a3becdd243a02b10ef612b2781d0a8004 100644 (file)
@@ -23,6 +23,10 @@ Metrics/BlockLength:
   Exclude:
     - 'config/routes.rb'
 
+Metrics/ClassLength:
+  Exclude:
+    - 'test/**/*'
+
 Naming/FileName:
   Exclude:
     - 'script/deliver-message'
index 4d772ed6eace4b65c868bfb15956292dacf95d3c..809cde374d470abfb57c755a369189dc1b73d34a 100644 (file)
@@ -50,7 +50,7 @@ Metrics/BlockNesting:
 # Offense count: 68
 # Configuration parameters: CountComments.
 Metrics/ClassLength:
-  Max: 1397
+  Max: 645
 
 # Offense count: 73
 Metrics/CyclomaticComplexity:
index d2d2b79b40b6a57b5fce6bf6c8a00056a5468ad8..097d4500eef403b2b0c98734ea602d823995cb77 100644 (file)
@@ -218,7 +218,7 @@ Rails comes with a built-in webserver, so that you can test on your own machine
 bundle exec rails server
 ```
 
-You can now view the site in your favourite web-browser at `http://localhost:3000/`
+You can now view the site in your favourite web-browser at [http://localhost:3000/](http://localhost:3000/)
 
 Note that the OSM map tiles you see aren't created from your local database - they are just the standard map tiles.
 
index 4a310f22bb8856778e85481e834f7f9fbe6de1dc..7c2e4665eadf634766d1b548a93486d0a79485ea 100644 (file)
@@ -17,7 +17,7 @@
 //= require richtext
 //= require querystring
 
-var querystring = require("querystring-component");
+var qs = require("querystring-component");
 
 /*
  * Called as the user scrolls/zooms around to maniplate hrefs of the
@@ -26,8 +26,8 @@ var querystring = require("querystring-component");
 window.updateLinks = function (loc, zoom, layers, object) {
   $(".geolink").each(function (index, link) {
     var href = link.href.split(/[?#]/)[0],
-      args = querystring.parse(link.search.substring(1)),
-      editlink = $(link).hasClass("editlink");
+        args = qs.parse(link.search.substring(1)),
+        editlink = $(link).hasClass("editlink");
 
     delete args.node;
     delete args.way;
@@ -38,7 +38,7 @@ window.updateLinks = function (loc, zoom, layers, object) {
       args[object.type] = object.id;
     }
 
-    var query = querystring.stringify(args);
+    var query = qs.stringify(args);
     if (query) href += "?" + query;
 
     args = {
index 0aae749f7d2fbece85bb2713d853d8aab5ec04dc..ba16d9df2451a394d79bb5f726b0fc4d7d22b71b 100644 (file)
@@ -27,8 +27,8 @@ document.addEventListener("DOMContentLoaded", function () {
     id.map().on("move.embed", parent.$.throttle(250, function () {
       if (id.inIntro()) return;
       var zoom = ~~id.map().zoom(),
-        center = id.map().center(),
-        llz = { lon: center[0], lat: center[1], zoom: zoom };
+          center = id.map().center(),
+          llz = { lon: center[0], lat: center[1], zoom: zoom };
 
       parent.updateLinks(llz, zoom);
 
index 6228b2376cd58fe81093f5a4cf9924482fc07eed..935889acee7fc3629290c2eacfdbc61f43abf90d 100644 (file)
@@ -32,6 +32,8 @@ $(document).ready(function () {
   });
 
   OSM.loadSidebarContent = function (path, callback) {
+    var content_path = path;
+
     map.setSidebarOverlaid(false);
 
     clearTimeout(loaderTimeout);
@@ -42,17 +44,17 @@ $(document).ready(function () {
 
     // IE<10 doesn't respect Vary: X-Requested-With header, so
     // prevent caching the XHR response as a full-page URL.
-    if (path.indexOf("?") >= 0) {
-      path += "&xhr=1";
+    if (content_path.indexOf("?") >= 0) {
+      content_path += "&xhr=1";
     } else {
-      path += "?xhr=1";
+      content_path += "?xhr=1";
     }
 
     $("#sidebar_content")
       .empty();
 
     $.ajax({
-      url: path,
+      url: content_path,
       dataType: "html",
       complete: function (xhr) {
         clearTimeout(loaderTimeout);
@@ -234,7 +236,7 @@ $(document).ready(function () {
     e.preventDefault();
 
     var data = $(this).data(),
-      center = L.latLng(data.lat, data.lon);
+        center = L.latLng(data.lat, data.lon);
 
     map.setView(center, data.zoom);
     L.marker(center, { icon: OSM.getUserIcon() }).addTo(map);
@@ -260,13 +262,13 @@ $(document).ready(function () {
     if (object) query.select = object.type + object.id;
 
     var iframe = $("<iframe>")
-        .hide()
-        .appendTo("body")
-        .attr("src", url + querystring.stringify(query))
-        .on("load", function () {
-          $(this).remove();
-          loaded = true;
-        });
+      .hide()
+      .appendTo("body")
+      .attr("src", url + querystring.stringify(query))
+      .on("load", function () {
+        $(this).remove();
+        loaded = true;
+      });
 
     setTimeout(function () {
       if (!loaded) {
index 5ff8edc7103adc5ffc6b58554461d635e2344456..9e38917afeda29892b0ebcfa4df68c172234ceeb 100644 (file)
@@ -1,7 +1,7 @@
 OSM.Changeset = function (map) {
   var page = {},
-    content = $("#sidebar_content"),
-    currentChangesetId;
+      content = $("#sidebar_content"),
+      currentChangesetId;
 
   page.pushstate = page.popstate = function (path, id) {
     OSM.loadSidebarContent(path, function () {
index 4283ef5aa7ef5ca7f57208fcc7fab8b4dd15e604..4f65acdea96afcf420ca57eb6eb49d2275df4f08 100644 (file)
@@ -3,7 +3,7 @@
 
 OSM.Directions = function (map) {
   var awaitingGeocode; // true if the user has requested a route, but we're waiting on a geocode result
-  var awaitingRoute;   // true if we've asked the engine for a route and are waiting to hear back
+  var awaitingRoute; // true if we've asked the engine for a route and are waiting to hear back
   var chosenEngine;
 
   var popup = L.popup({ autoPanPadding: [100, 100] });
@@ -31,9 +31,9 @@ OSM.Directions = function (map) {
   var engines = OSM.Directions.engines;
 
   engines.sort(function (a, b) {
-    a = I18n.t("javascripts.directions.engines." + a.id);
-    b = I18n.t("javascripts.directions.engines." + b.id);
-    return a.localeCompare(b);
+    var localised_a = I18n.t("javascripts.directions.engines." + a.id),
+        localised_b = I18n.t("javascripts.directions.engines." + b.id);
+    return localised_a.localeCompare(localised_b);
   });
 
   var select = $("select.routing_engines");
@@ -260,11 +260,11 @@ OSM.Directions = function (map) {
 
       // Add each row
       route.steps.forEach(function (step) {
-        var ll        = step[0],
-          direction   = step[1],
-          instruction = step[2],
-          dist        = step[3],
-          lineseg     = step[4];
+        var ll = step[0],
+            direction = step[1],
+            instruction = step[2],
+            dist = step[3],
+            lineseg = step[4];
 
         if (dist < 5) {
           dist = "";
@@ -360,7 +360,7 @@ OSM.Directions = function (map) {
       var oe = e.originalEvent;
       var dragData = JSON.parse(oe.dataTransfer.getData("text"));
       var type = dragData.type;
-      var pt = L.DomEvent.getMousePosition(oe, map.getContainer());  // co-ordinates of the mouse pointer at present
+      var pt = L.DomEvent.getMousePosition(oe, map.getContainer()); // co-ordinates of the mouse pointer at present
       pt.y += 20;
       var ll = map.containerPointToLatLng(pt);
       endpoints[type === "from" ? 0 : 1].setLatLng(ll);
index 67530370dc525cd9ca026545e2a31e121f56ba3f..b9050d8a12a01a95f5678841fc57c31c6aad8d10 100644 (file)
@@ -43,9 +43,9 @@ OSM.Export = function (map) {
     $("#maxlat").val(bounds.getNorth().toFixed(precision));
 
     $("#export_overpass").attr("href",
-        "https://overpass-api.de/api/map?bbox=" +
-        $("#minlon").val() + "," + $("#minlat").val() + "," +
-        $("#maxlon").val() + "," + $("#maxlat").val());
+                               "https://overpass-api.de/api/map?bbox=" +
+                               $("#minlon").val() + "," + $("#minlat").val() + "," +
+                               $("#maxlon").val() + "," + $("#maxlat").val());
   }
 
   function validateControls() {
index a0c68e84017b5a9bc5e95aa70658457530e5dc84..80fb68444f6469ee4e41e03d2f09654a337dfe12 100644 (file)
@@ -71,7 +71,7 @@ OSM.History = function (map) {
     });
 
     var feedLink = $("link[type=\"application/atom+xml\"]"),
-      feedHref = feedLink.attr("href").split("?")[0];
+        feedHref = feedLink.attr("href").split("?")[0];
 
     feedLink.attr("href", feedHref + "?bbox=" + data.bbox);
   }
@@ -101,7 +101,7 @@ OSM.History = function (map) {
           topRight = map.project(L.latLng(changeset.bbox.maxlat, changeset.bbox.maxlon)),
           width = topRight.x - bottomLeft.x,
           height = bottomLeft.y - topRight.y,
-          minSize = 20;  // Min width/height of changeset in pixels
+          minSize = 20; // Min width/height of changeset in pixels
 
       if (width < minSize) {
         bottomLeft.x -= ((minSize - width) / 2);
@@ -123,8 +123,8 @@ OSM.History = function (map) {
 
     for (var i = 0; i < changesets.length; ++i) {
       var changeset = changesets[i],
-        rect = L.rectangle(changeset.bounds,
-          { weight: 2, color: "#FF9500", opacity: 1, fillColor: "#FFFFAF", fillOpacity: 0 });
+          rect = L.rectangle(changeset.bounds,
+                             { weight: 2, color: "#FF9500", opacity: 1, fillColor: "#FFFFAF", fillOpacity: 0 });
       rect.id = changeset.id;
       rect.addTo(group);
     }
index 7196a779bf5ef2d1020c1e51c41d6c8c5f9a211d..fbb6a25c4a0200739b4ed7e6c0a918a4dd01accb 100644 (file)
@@ -1,10 +1,10 @@
 OSM.NewNote = function (map) {
   var noteLayer = map.noteLayer,
-    content = $("#sidebar_content"),
-    page = {},
-    addNoteButton = $(".control-note .control-button"),
-    newNote,
-    halo;
+      content = $("#sidebar_content"),
+      page = {},
+      addNoteButton = $(".control-note .control-button"),
+      newNote,
+      halo;
 
   var noteIcons = {
     "new": L.icon({
index 52bb1c90958c0aefcdcf87caab6e5d2019cf7664..3793c573e6122d5165df17181e545e99701dd7d0 100644 (file)
@@ -1,7 +1,7 @@
 OSM.Note = function (map) {
   var content = $("#sidebar_content"),
-    page = {},
-    halo, currentNote;
+      page = {},
+      halo, currentNote;
 
   var noteIcons = {
     "new": L.icon({
@@ -39,7 +39,7 @@ OSM.Note = function (map) {
     OSM.loadSidebarContent(path, function () {
       initialize(function () {
         var data = $(".details").data(),
-          latLng = L.latLng(data.coordinates.split(","));
+            latLng = L.latLng(data.coordinates.split(","));
         if (!map.getBounds().contains(latLng)) moveToNote();
       });
     });
@@ -71,7 +71,7 @@ OSM.Note = function (map) {
     content.find("textarea").val("").trigger("input");
 
     var data = $(".details").data(),
-      latLng = L.latLng(data.coordinates.split(","));
+        latLng = L.latLng(data.coordinates.split(","));
 
     if (!map.hasLayer(halo)) {
       halo = L.circleMarker(latLng, {
@@ -97,7 +97,7 @@ OSM.Note = function (map) {
 
   function moveToNote() {
     var data = $(".details").data(),
-      latLng = L.latLng(data.coordinates.split(","));
+        latLng = L.latLng(data.coordinates.split(","));
 
     if (!window.location.hash || window.location.hash.match(/^#?c[0-9]+$/)) {
       OSM.router.withoutMoveListener(function () {
index 4890a2687d1a86a69811ad46d54a1a870227c1a4..5d553e970c4be49aa9a05f0c6984c1e0361429d3 100644 (file)
@@ -39,7 +39,8 @@ OSM.initializeNotes = function (map) {
     }
   });
 
-  function updateMarker(marker, feature) {
+  function updateMarker(old_marker, feature) {
+    var marker = old_marker;
     if (marker) {
       marker.setIcon(noteIcons[feature.properties.status]);
     } else {
index 6869e19f63835f44366e1a68d6ba4a18487b2d7a..8a190a90ab3f7c1356d3c5c3c642fae0f3086fc9 100644 (file)
@@ -2,9 +2,9 @@
 
 OSM.Query = function (map) {
   var url = OSM.OVERPASS_URL,
-    queryButton = $(".control-query .control-button"),
-    uninterestingTags = ["source", "source_ref", "source:ref", "history", "attribution", "created_by", "tiger:county", "tiger:tlid", "tiger:upload_uuid", "KSJ2:curve_id", "KSJ2:lat", "KSJ2:lon", "KSJ2:coordinate", "KSJ2:filename", "note:ja"],
-    marker;
+      queryButton = $(".control-query .control-button"),
+      uninterestingTags = ["source", "source_ref", "source:ref", "history", "attribution", "created_by", "tiger:county", "tiger:tlid", "tiger:upload_uuid", "KSJ2:curve_id", "KSJ2:lat", "KSJ2:lon", "KSJ2:coordinate", "KSJ2:filename", "note:ja"],
+      marker;
 
   var featureStyle = {
     color: "#FF6200",
@@ -103,7 +103,7 @@ OSM.Query = function (map) {
 
         if (prefixes[key]) {
           var first = value.substr(0, 1).toUpperCase(),
-            rest = value.substr(1).replace(/_/g, " ");
+              rest = value.substr(1).replace(/_/g, " ");
 
           return first + rest;
         }
@@ -119,7 +119,7 @@ OSM.Query = function (map) {
 
   function featureName(feature) {
     var tags = feature.tags,
-      locales = I18n.locales.get();
+        locales = I18n.locales.get();
 
     for (var i = 0; i < locales.length; i++) {
       if (tags["name:" + locales[i]]) {
@@ -153,7 +153,7 @@ OSM.Query = function (map) {
       }), featureStyle);
     } else if (feature.type === "relation" && feature.members) {
       geometry = L.featureGroup(feature.members.map(featureGeometry).filter(function (geometry) {
-        return geometry !== undefined;
+        return typeof geometry !== "undefined";
       }));
     }
 
@@ -249,11 +249,11 @@ OSM.Query = function (map) {
 
   function compareSize(feature1, feature2) {
     var width1 = feature1.bounds.maxlon - feature1.bounds.minlon,
-      height1 = feature1.bounds.maxlat - feature1.bounds.minlat,
-      area1 = width1 * height1,
-      width2 = feature2.bounds.maxlat - feature2.bounds.minlat,
-      height2 = feature2.bounds.maxlat - feature2.bounds.minlat,
-      area2 = width2 * height2;
+        height1 = feature1.bounds.maxlat - feature1.bounds.minlat,
+        area1 = width1 * height1,
+        width2 = feature2.bounds.maxlat - feature2.bounds.minlat,
+        height2 = feature2.bounds.maxlat - feature2.bounds.minlat,
+        area2 = width2 * height2;
 
     return area1 - area2;
   }
@@ -280,15 +280,15 @@ OSM.Query = function (map) {
    */
   function queryOverpass(lat, lng) {
     var latlng = L.latLng(lat, lng).wrap(),
-      bounds = map.getBounds().wrap(),
-      bbox = bounds.getSouth() + "," + bounds.getWest() + "," + bounds.getNorth() + "," + bounds.getEast(),
-      radius = 10 * Math.pow(1.5, 19 - map.getZoom()),
-      around = "around:" + radius + "," + lat + "," + lng,
-      nodes = "node(" + around + ")",
-      ways = "way(" + around + ")",
-      relations = "relation(" + around + ")",
-      nearby = "(" + nodes + ";" + ways + ";);out tags geom(" + bbox + ");" + relations + ";out geom(" + bbox + ");",
-      isin = "is_in(" + lat + "," + lng + ")->.a;way(pivot.a);out tags bb;out ids geom(" + bbox + ");relation(pivot.a);out tags bb;";
+        bounds = map.getBounds().wrap(),
+        bbox = bounds.getSouth() + "," + bounds.getWest() + "," + bounds.getNorth() + "," + bounds.getEast(),
+        radius = 10 * Math.pow(1.5, 19 - map.getZoom()),
+        around = "around:" + radius + "," + lat + "," + lng,
+        nodes = "node(" + around + ")",
+        ways = "way(" + around + ")",
+        relations = "relation(" + around + ")",
+        nearby = "(" + nodes + ";" + ways + ";);out tags geom(" + bbox + ");" + relations + ";out geom(" + bbox + ");",
+        isin = "is_in(" + lat + "," + lng + ")->.a;way(pivot.a);out tags bb;out ids geom(" + bbox + ");relation(pivot.a);out tags bb;";
 
     $("#sidebar_content .query-intro")
       .hide();
@@ -313,9 +313,9 @@ OSM.Query = function (map) {
 
   function clickHandler(e) {
     var precision = OSM.zoomPrecision(map.getZoom()),
-      latlng = e.latlng.wrap(),
-      lat = latlng.lat.toFixed(precision),
-      lng = latlng.lng.toFixed(precision);
+        latlng = e.latlng.wrap(),
+        lat = latlng.lat.toFixed(precision),
+        lng = latlng.lng.toFixed(precision);
 
     OSM.router.route("/query?lat=" + lat + "&lon=" + lng);
   }
@@ -343,7 +343,7 @@ OSM.Query = function (map) {
 
   page.load = function (path, noCentre) {
     var params = querystring.parse(path.substring(path.indexOf("?") + 1)),
-      latlng = L.latLng(params.lat, params.lon);
+        latlng = L.latLng(params.lat, params.lon);
 
     if (!window.location.hash && !noCentre && !map.getBounds().contains(latlng)) {
       OSM.router.withoutMoveListener(function () {
index fa9546f4e27fee974c202a10f20e2588e5d48ebc..a3e53382a0704d497332a5a132500c23db4fc1e3 100644 (file)
@@ -33,7 +33,7 @@ OSM.Search = function (map) {
   $(".describe_location").on("click", function (e) {
     e.preventDefault();
     var center = map.getCenter().wrap(),
-      precision = OSM.zoomPrecision(map.getZoom());
+        precision = OSM.zoomPrecision(map.getZoom());
     OSM.router.route("/search?whereami=1&query=" + encodeURIComponent(
       center.lat.toFixed(precision) + "," + center.lng.toFixed(precision)
     ));
index 321f937db3fc74b94013be51a69a2f28388e6ea7..e839171ab0937bcede9d8ef3795a552eb5b71842 100644 (file)
@@ -65,13 +65,13 @@ L.OSM.key = function (options) {
         .toggleClass("disabled", disabled)
         .attr("data-original-title",
               I18n.t(disabled ?
-                     "javascripts.key.tooltip_disabled" :
-                     "javascripts.key.tooltip"));
+                "javascripts.key.tooltip_disabled" :
+                "javascripts.key.tooltip"));
     }
 
     function update() {
       var layer = map.getMapBaseLayerId(),
-        zoom = map.getZoom();
+          zoom = map.getZoom();
 
       $(".mapkey-table-entry").each(function () {
         var data = $(this).data();
index b12c0c89d79bc56500a445cd242a1f223692e4ef..241880a20ebe874f302dfc0c4249bddf251df52c 100644 (file)
@@ -84,9 +84,9 @@ L.OSM.layers = function (options) {
         .appendTo(item);
 
       var input = $("<input>")
-         .attr("type", "radio")
-         .prop("checked", map.hasLayer(layer))
-         .appendTo(label);
+        .attr("type", "radio")
+        .prop("checked", map.hasLayer(layer))
+        .appendTo(label);
 
       label.append(layer.options.name);
 
index fe8d74af5405bff40d7682d3279e820d2c279ab3..4d9fbac8e35167e951f96f8cfd26bc15225cb9b9 100644 (file)
@@ -71,11 +71,11 @@ L.OSM.Map = L.Map.extend({
   },
 
   updateLayers: function (layerParam) {
-    layerParam = layerParam || "M";
-    var layersAdded = "";
+    var layers = layerParam || "M",
+        layersAdded = "";
 
     for (var i = this.baseLayers.length - 1; i >= 0; i--) {
-      if (layerParam.indexOf(this.baseLayers[i].options.code) >= 0) {
+      if (layers.indexOf(this.baseLayers[i].options.code) >= 0) {
         this.addLayer(this.baseLayers[i]);
         layersAdded = layersAdded + this.baseLayers[i].options.code;
       } else if (i === 0 && layersAdded === "") {
@@ -115,8 +115,8 @@ L.OSM.Map = L.Map.extend({
     }
 
     var url = window.location.protocol + "//" + OSM.SERVER_URL + "/",
-      query = querystring.stringify(params),
-      hash = OSM.formatHash(this);
+        query = querystring.stringify(params),
+        hash = OSM.formatHash(this);
 
     if (query) url += "?" + query;
     if (hash) url += hash;
@@ -126,19 +126,19 @@ L.OSM.Map = L.Map.extend({
 
   getShortUrl: function (marker) {
     var zoom = this.getZoom(),
-      latLng = marker && this.hasLayer(marker) ? marker.getLatLng().wrap() : this.getCenter().wrap(),
-      str = window.location.hostname.match(/^www\.openstreetmap\.org/i) ?
-        window.location.protocol + "//osm.org/go/" :
-        window.location.protocol + "//" + window.location.hostname + "/go/",
-      char_array = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_~",
-      x = Math.round((latLng.lng + 180.0) * ((1 << 30) / 90.0)),
-      y = Math.round((latLng.lat + 90.0) * ((1 << 30) / 45.0)),
-      // JavaScript only has to keep 32 bits of bitwise operators, so this has to be
-      // done in two parts. each of the parts c1/c2 has 30 bits of the total in it
-      // and drops the last 4 bits of the full 64 bit Morton code.
-      c1 = interlace(x >>> 17, y >>> 17), c2 = interlace((x >>> 2) & 0x7fff, (y >>> 2) & 0x7fff),
-      digit,
-      i;
+        latLng = marker && this.hasLayer(marker) ? marker.getLatLng().wrap() : this.getCenter().wrap(),
+        str = window.location.hostname.match(/^www\.openstreetmap\.org/i) ?
+          window.location.protocol + "//osm.org/go/" :
+          window.location.protocol + "//" + window.location.hostname + "/go/",
+        char_array = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_~",
+        x = Math.round((latLng.lng + 180.0) * ((1 << 30) / 90.0)),
+        y = Math.round((latLng.lat + 90.0) * ((1 << 30) / 45.0)),
+        // JavaScript only has to keep 32 bits of bitwise operators, so this has to be
+        // done in two parts. each of the parts c1/c2 has 30 bits of the total in it
+        // and drops the last 4 bits of the full 64 bit Morton code.
+        c1 = interlace(x >>> 17, y >>> 17), c2 = interlace((x >>> 2) & 0x7fff, (y >>> 2) & 0x7fff),
+        digit,
+        i;
 
     for (i = 0; i < Math.ceil((zoom + 8) / 3.0) && i < 5; ++i) {
       digit = (c1 >> (24 - (6 * i))) & 0x3f;
@@ -152,15 +152,17 @@ L.OSM.Map = L.Map.extend({
 
     // Called to interlace the bits in x and y, making a Morton code.
     function interlace(x, y) {
-      x = (x | (x << 8)) & 0x00ff00ff;
-      x = (x | (x << 4)) & 0x0f0f0f0f;
-      x = (x | (x << 2)) & 0x33333333;
-      x = (x | (x << 1)) & 0x55555555;
-      y = (y | (y << 8)) & 0x00ff00ff;
-      y = (y | (y << 4)) & 0x0f0f0f0f;
-      y = (y | (y << 2)) & 0x33333333;
-      y = (y | (y << 1)) & 0x55555555;
-      return (x << 1) | y;
+      var interlaced_x = x,
+          interlaced_y = y;
+      interlaced_x = (interlaced_x | (interlaced_x << 8)) & 0x00ff00ff;
+      interlaced_x = (interlaced_x | (interlaced_x << 4)) & 0x0f0f0f0f;
+      interlaced_x = (interlaced_x | (interlaced_x << 2)) & 0x33333333;
+      interlaced_x = (interlaced_x | (interlaced_x << 1)) & 0x55555555;
+      interlaced_y = (interlaced_y | (interlaced_y << 8)) & 0x00ff00ff;
+      interlaced_y = (interlaced_y | (interlaced_y << 4)) & 0x0f0f0f0f;
+      interlaced_y = (interlaced_y | (interlaced_y << 2)) & 0x33333333;
+      interlaced_y = (interlaced_y | (interlaced_y << 1)) & 0x55555555;
+      return (interlaced_x << 1) | interlaced_y;
     }
 
     var params = {};
index 8e45014a3ebab98c357e7058711a4db141dfbffb..5f449c214a31c782f67655e319a497073d0a71c4 100644 (file)
@@ -17,7 +17,7 @@ L.OSM.query = function (options) {
 
     function update() {
       var wasDisabled = link.hasClass("disabled"),
-        isDisabled = map.getZoom() < 14;
+          isDisabled = map.getZoom() < 14;
       link
         .toggleClass("disabled", isDisabled)
         .attr("data-original-title", I18n.t(isDisabled ?
index 69100e4202c3c9a9ccdca6884a4aa95e697a62db..eedfe3ab34abfab47f41ee4619fdf0ee6065337a 100644 (file)
@@ -1,10 +1,10 @@
 L.OSM.share = function (options) {
   var control = L.control(options),
-    marker = L.marker([0, 0], { draggable: true }),
-    locationFilter = new L.LocationFilter({
-      enableButton: false,
-      adjustButton: false
-    });
+      marker = L.marker([0, 0], { draggable: true }),
+      locationFilter = new L.LocationFilter({
+        enableButton: false,
+        adjustButton: false
+      });
 
   control.onAdd = function (map) {
     var $container = $("<div>")
@@ -364,9 +364,9 @@ L.OSM.share = function (options) {
       }
 
       var scale = $("#mapnik_scale").val(),
-        size = L.bounds(L.CRS.EPSG3857.project(bounds.getSouthWest()),
-                        L.CRS.EPSG3857.project(bounds.getNorthEast())).getSize(),
-        maxScale = Math.floor(Math.sqrt(size.x * size.y / 0.3136));
+          size = L.bounds(L.CRS.EPSG3857.project(bounds.getSouthWest()),
+                          L.CRS.EPSG3857.project(bounds.getNorthEast())).getSize(),
+          maxScale = Math.floor(Math.sqrt(size.x * size.y / 0.3136));
 
       $("#mapnik_minlon").val(bounds.getWest());
       $("#mapnik_minlat").val(bounds.getSouth());
@@ -396,11 +396,11 @@ L.OSM.share = function (options) {
 
     function getScale() {
       var bounds = map.getBounds(),
-        centerLat = bounds.getCenter().lat,
-        halfWorldMeters = 6378137 * Math.PI * Math.cos(centerLat * Math.PI / 180),
-        meters = halfWorldMeters * (bounds.getEast() - bounds.getWest()) / 180,
-        pixelsPerMeter = map.getSize().x / meters,
-        metersPerPixel = 1 / (92 * 39.3701);
+          centerLat = bounds.getCenter().lat,
+          halfWorldMeters = 6378137 * Math.PI * Math.cos(centerLat * Math.PI / 180),
+          meters = halfWorldMeters * (bounds.getEast() - bounds.getWest()) / 180,
+          pixelsPerMeter = map.getSize().x / meters,
+          metersPerPixel = 1 / (92 * 39.3701);
       return Math.round(1 / (pixelsPerMeter * metersPerPixel));
     }
 
index bb046f99ad13ae029c840912e7a7be611494a365..f51aaa72829dfe74e2d26b1705f0372c406d24ec 100644 (file)
@@ -1,9 +1,9 @@
 L.OSM.sidebar = function (selector) {
   var control = {},
-    sidebar = $(selector),
-    current = $(),
-    currentButton = $(),
-    map;
+      sidebar = $(selector),
+      current = $(),
+      currentButton = $(),
+      map;
 
   control.addTo = function (_) {
     map = _;
index 342993347ccdfc206882c1f20b80a241929df8bd..20a02befaf6365d11182b599d6911dc96f00e7a9 100644 (file)
@@ -1,72 +1,72 @@
 L.OSM.Zoom = L.Control.extend({
-        options: {
-                position: "topright"
-        },
+  options: {
+    position: "topright"
+  },
 
-        onAdd: function (map) {
-                var zoomName = "zoom",
-                    container = L.DomUtil.create("div", zoomName);
+  onAdd: function (map) {
+    var zoomName = "zoom",
+        container = L.DomUtil.create("div", zoomName);
 
-                this._map = map;
+    this._map = map;
 
-                this._zoomInButton = this._createButton(
-                        "", I18n.t("javascripts.map.zoom.in"), zoomName + "in", container, this._zoomIn, this);
-                this._zoomOutButton = this._createButton(
-                        "", I18n.t("javascripts.map.zoom.out"), zoomName + "out", container, this._zoomOut, this);
+    this._zoomInButton = this._createButton(
+      "", I18n.t("javascripts.map.zoom.in"), zoomName + "in", container, this._zoomIn, this);
+    this._zoomOutButton = this._createButton(
+      "", I18n.t("javascripts.map.zoom.out"), zoomName + "out", container, this._zoomOut, this);
 
-                map.on("zoomend zoomlevelschange", this._updateDisabled, this);
+    map.on("zoomend zoomlevelschange", this._updateDisabled, this);
 
-                return container;
-        },
+    return container;
+  },
 
-        onRemove: function (map) {
-                map.off("zoomend zoomlevelschange", this._updateDisabled, this);
-        },
+  onRemove: function (map) {
+    map.off("zoomend zoomlevelschange", this._updateDisabled, this);
+  },
 
-        _zoomIn: function (e) {
-                this._map.zoomIn(e.shiftKey ? 3 : 1);
-        },
+  _zoomIn: function (e) {
+    this._map.zoomIn(e.shiftKey ? 3 : 1);
+  },
 
-        _zoomOut: function (e) {
-                this._map.zoomOut(e.shiftKey ? 3 : 1);
-        },
+  _zoomOut: function (e) {
+    this._map.zoomOut(e.shiftKey ? 3 : 1);
+  },
 
-        _createButton: function (html, title, className, container, fn, context) {
-                var link = L.DomUtil.create("a", "control-button " + className, container);
-                link.innerHTML = html;
-                link.href = "#";
-                link.title = title;
+  _createButton: function (html, title, className, container, fn, context) {
+    var link = L.DomUtil.create("a", "control-button " + className, container);
+    link.innerHTML = html;
+    link.href = "#";
+    link.title = title;
 
-                L.DomUtil.create("span", "icon " + className, link);
+    L.DomUtil.create("span", "icon " + className, link);
 
-                var stop = L.DomEvent.stopPropagation;
+    var stop = L.DomEvent.stopPropagation;
 
-                L.DomEvent
-                    .on(link, "click", stop)
-                    .on(link, "mousedown", stop)
-                    .on(link, "dblclick", stop)
-                    .on(link, "click", L.DomEvent.preventDefault)
-                    .on(link, "click", fn, context);
+    L.DomEvent
+      .on(link, "click", stop)
+      .on(link, "mousedown", stop)
+      .on(link, "dblclick", stop)
+      .on(link, "click", L.DomEvent.preventDefault)
+      .on(link, "click", fn, context);
 
-                return link;
-        },
+    return link;
+  },
 
-        _updateDisabled: function () {
-                var map = this._map,
-                        className = "disabled";
+  _updateDisabled: function () {
+    var map = this._map,
+        className = "disabled";
 
-                L.DomUtil.removeClass(this._zoomInButton, className);
-                L.DomUtil.removeClass(this._zoomOutButton, className);
+    L.DomUtil.removeClass(this._zoomInButton, className);
+    L.DomUtil.removeClass(this._zoomOutButton, className);
 
-                if (map._zoom === map.getMinZoom()) {
-                        L.DomUtil.addClass(this._zoomOutButton, className);
-                }
-                if (map._zoom === map.getMaxZoom()) {
-                        L.DomUtil.addClass(this._zoomInButton, className);
-                }
-        }
+    if (map._zoom === map.getMinZoom()) {
+      L.DomUtil.addClass(this._zoomOutButton, className);
+    }
+    if (map._zoom === map.getMaxZoom()) {
+      L.DomUtil.addClass(this._zoomInButton, className);
+    }
+  }
 });
 
 L.OSM.zoom = function (options) {
-        return new L.OSM.Zoom(options);
+  return new L.OSM.Zoom(options);
 };
index a2a20b8469031d4753e5d5dc8f299303b4a6dfc3..c397a44ec4de3eeeb0e338aceaeca557f3a6865c 100644 (file)
    move the map without the hash changing.
  */
 OSM.Router = function (map, rts) {
-  var escapeRegExp  = /[-{}[\]+?.,\\^$|#\s]/g;
+  var escapeRegExp = /[-{}[\]+?.,\\^$|#\s]/g;
   var optionalParam = /\((.*?)\)/g;
-  var namedParam    = /(\(\?)?:\w+/g;
-  var splatParam    = /\*\w+/g;
+  var namedParam = /(\(\?)?:\w+/g;
+  var splatParam = /\*\w+/g;
 
   function Route(path, controller) {
     var regexp = new RegExp("^" +
@@ -96,8 +96,8 @@ OSM.Router = function (map, rts) {
   };
 
   var currentPath = window.location.pathname.replace(/(.)\/$/, "$1") + window.location.search,
-    currentRoute = routes.recognize(currentPath),
-    currentHash = location.hash || OSM.formatHash(map);
+      currentRoute = routes.recognize(currentPath),
+      currentHash = location.hash || OSM.formatHash(map);
 
   var router = {};
 
@@ -105,7 +105,7 @@ OSM.Router = function (map, rts) {
     $(window).on("popstate", function (e) {
       if (!e.originalEvent.state) return; // Is it a real popstate event or just a hash change?
       var path = window.location.pathname + window.location.search,
-        route = routes.recognize(path);
+          route = routes.recognize(path);
       if (path === currentPath) return;
       currentRoute.run("unload", null, route === currentRoute);
       currentPath = path;
@@ -116,7 +116,7 @@ OSM.Router = function (map, rts) {
 
     router.route = function (url) {
       var path = url.replace(/#.*/, ""),
-        route = routes.recognize(path);
+          route = routes.recognize(path);
       if (!route) return false;
       currentRoute.run("unload", null, route === currentRoute);
       var state = OSM.parseHash(url);
index 8790b5edf88b39266b05313b11628f42ddf63f4f..2e9567a4ebba88369fee71bdf9034415f108af77 100644 (file)
     "comma-style": "error",
     "computed-property-spacing": "error",
     "curly": ["error", "multi-line", "consistent"],
+    "dot-location": ["error", "property"],
     "dot-notation": "error",
     "eol-last": "error",
     "eqeqeq": ["error", "smart"],
     "func-call-spacing": "error",
+    "indent": ["error", 2, {
+      "SwitchCase": 1,
+      "VariableDeclarator": "first",
+      "FunctionDeclaration": { "parameters": "first" },
+      "FunctionExpression": { "parameters": "first" },
+      "CallExpression": { "arguments": "first" }
+    }],
     "key-spacing": "error",
     "keyword-spacing": "error",
     "no-alert": "warn",
     "no-array-constructor": "error",
     "no-caller": "error",
+    "no-console": "warn",
     "no-div-regex": "error",
+    "no-eq-null": "error",
     "no-eval": "error",
     "no-extend-native": "error",
     "no-extra-bind": "error",
@@ -47,6 +57,7 @@
     "no-implicit-coercion": "warn",
     "no-implicit-globals": "warn",
     "no-implied-eval": "error",
+    "no-invalid-this": "error",
     "no-iterator": "error",
     "no-labels": "error",
     "no-label-var": "error",
@@ -55,6 +66,7 @@
     "no-loop-func": "error",
     "no-mixed-operators": "error",
     "no-multiple-empty-lines": "error",
+    "no-multi-spaces": "error",
     "no-multi-str": "error",
     "no-negated-condition": "error",
     "no-nested-ternary": "error",
     "no-new-object": "error",
     "no-new-wrappers": "error",
     "no-octal-escape": "error",
+    "no-param-reassign": "error",
     "no-process-env": "error",
     "no-proto": "error",
     "no-script-url": "error",
     "no-self-compare": "error",
     "no-sequences": "error",
-    "no-shadow-restricted-names": "error",
     "no-throw-literal": "error",
     "no-trailing-spaces": "error",
+    "no-undef-init": "error",
+    "no-undefined": "error",
     "no-unmodified-loop-condition": "error",
     "no-unneeded-ternary": "error",
     "no-unused-expressions": "off",
@@ -82,7 +96,6 @@
     "no-void": "error",
     "no-warning-comments": "warn",
     "no-whitespace-before-property": "error",
-    "no-with": "error",
     "object-curly-newline": ["error", { "consistent": true }],
     "object-curly-spacing": ["error", "always"],
     "object-property-newline": ["error", { "allowAllPropertiesOnSameLine": true }],
index a41ad16c1504032fd0f86a0389ee8e4c49f77c05..57f11964e6e4bbb1476f0f709749005984a031f5 100644 (file)
@@ -179,7 +179,7 @@ ar:
     default: الافتراضي (حالياً %{name})
     potlatch:
       name: Potlatch 1
-      description: Potlatch 1 (محرّر ضمن المتصفح)
+      description: Potlatch 1 (محرر ضمن المتصفح)
     id:
       name: آي دي
       description: آي دي (محرر عبر المتصفح)
index 59f744a0682af3cf9a4a8ffb08a5c76f90c4cad2..54c75952a3e72edf6c8b9e078d57138c826d9a0d 100644 (file)
@@ -5,6 +5,7 @@
 # Author: Enolp
 # Author: Fitoschido
 # Author: Macofe
+# Author: TomH
 # Author: Xuacu
 ---
 ast:
@@ -1796,11 +1797,12 @@ ast:
         corréu al completase.
       upload_failed: Sentímoslo, falló la carga del GPX. Avisóse del error a un alministrador.
         Tenta nuevamente.
-      traces_waiting: '{PLURAL|one=Tien %{count} traza esperando pa xubir. Considere
-        esperar a qu''esta termine enantes de xubir más, col envís de nun bloquiar
-        la cola pa otros usuarios.|Tien %{count} traces esperando pa xubir. Considere
-        esperar a qu''estes terminen enantes de xubir más, col envís de nun bloquiar
-        la cola pa otros usuarios.}}'
+      traces_waiting:
+        one: Tien %{count} traza esperando pa xubir. Considere esperar a qu'esta termine
+          enantes de xubir más, col envís de nun bloquiar la cola pa otros usuarios.
+        other: Tien %{count} traces esperando pa xubir. Considere esperar a qu'estes
+          terminen enantes de xubir más, col envís de nun bloquiar la cola pa otros
+          usuarios.
     edit:
       title: Editando la traza %{name}
       heading: Editando la traza %{name}
index 47ef4ef5c73dd662defd215e8136d20b76c270b6..1af0ba106e647fd7adf86ccf7dc1bb804e3e7c88 100644 (file)
@@ -185,7 +185,10 @@ pl:
       x_days:
         one: 1 dzień temu
         other: '%{count} dni temu'
-      x_months: '{{PLURAL:%{count}|miesiąc|%{count} miesiące|%{count} miesięcy}} temu'
+      x_months:
+        one: miesiąc temu
+        few: '%{count} miesiące temu'
+        many: '%{count} miesięcy temu'
       x_years:
         one: rok temu
         other: '%{count} lata temu'
index d2b884efc18b53f4d209019014abecb5336d0d93..8c77812c5159905af7f61f136ddf372157d13b45 100644 (file)
@@ -2,6 +2,7 @@
 # Exported from translatewiki.net
 # Export driver: phpyaml
 # Author: Abijeet Patro
+# Author: Adrianojbr
 # Author: Alvarenga
 # Author: Amgauna
 # Author: Athena in Wonderland
@@ -638,7 +639,7 @@ pt-BR:
           cycleway: Ciclovia
           elevator: Elevador
           emergency_access_point: Ponto de Resgate Emergencial
-          footway: Caminho de Pedestre
+          footway: Caminho de pedestre
           ford: Vau
           give_way: Sinal de preferência de passagem
           living_street: Via de Espaço Compartilhado
@@ -2691,10 +2692,10 @@ pt-BR:
       engines:
         fossgis_osrm_bike: Bicicleta (OSRM)
         fossgis_osrm_car: Carro (OSRM)
-        fossgis_osrm_foot: À Pé (OSRM)
+        fossgis_osrm_foot: A pé (OSRM)
         graphhopper_bicycle: Bicicleta (GraphHopper)
         graphhopper_car: Carro (GraphHopper)
-        graphhopper_foot: Pedestre (GraphHopper)
+        graphhopper_foot: A pé (GraphHopper)
       descend: Descender
       directions: Itinerário
       distance: Distância
index 3419b451329c70ede1fe93948aa6e7556ff60206..50096b6b9291a7ba93536c69f3a67744eb7ff96f 100644 (file)
@@ -54,7 +54,7 @@ sr:
   activerecord:
     errors:
       messages:
-        invalid_email_address: Ð½Ðµ Ð¸Ð·Ð³Ð»ÐµÐ´Ð° Ð´Ð° Ñ\98е Ð¸Ñ\81пÑ\80авна Ð°Ð´Ñ\80еÑ\81а Ðµ-поÑ\88Ñ\82е
+        invalid_email_address: Ð½Ðµ Ð¸Ð·Ð³Ð»ÐµÐ´Ð° ÐºÐ°Ð¾ Ð²Ð°Ð¶ÐµÑ\9bа Ðµ-адÑ\80еÑ\81а
     models:
       acl: Листа контроле приступа
       changeset: Скуп промена
@@ -1007,8 +1007,8 @@ sr:
   reports:
     new:
       title_html: Пријави %{link}
-      missing_params: Ð\9dе Ð¼Ð¾Ð³Ñ\83 Ð´Ð° Ð½Ð°Ð¿Ñ\80авим нову пријаву
-      select: 'Ð\9eдаберите разлог пријаве:'
+      missing_params: Ð\9dиÑ\98е Ð¼Ð¾Ð³Ñ\83Ñ\9bе Ð½Ð°Ð¿Ñ\80авиÑ\82и нову пријаву
+      select: 'Ð\98заберите разлог пријаве:'
       categories:
         diary_entry:
           spam_label: Запис овог дневника је/садржи спам
@@ -1757,7 +1757,7 @@ sr:
       visibility_help: шта ово значи?
       visibility_help_url: http://wiki.openstreetmap.org/wiki/Visibility_of_GPS_traces?uselang=sr-ec
     update:
-      updated: Траг ажуриран
+      updated: Траг је ажуриран
     trace_optionals:
       tags: Ознаке
     show:
@@ -1810,7 +1810,7 @@ sr:
         страници</a>.
       upload_trace: Отпреми траг
       see_all_traces: Погледај све трагове
-      see_my_traces: Ð\92иди моје трагове
+      see_my_traces: Ð\9fÑ\80икажи моје трагове
     delete:
       scheduled_for_deletion: Траг постављен за брисање
     make_public:
@@ -1833,7 +1833,7 @@ sr:
       cookies_needed: Изгледа да сте онемогућили колачиће. Омогућите их пре него што
         наставите.
     require_admin:
-      not_an_admin: Треба да сте администратор да бисте извршили ову радњу.
+      not_an_admin: Треба да будете администратор да бисте извршили ту радњу.
     setup_user_auth:
       blocked_zero_hour: Имате хитну поруку на веб-сајту OpenStreetMap. Морате прочитати
         поруку пре него што могнете спремати своје измене.
@@ -2167,7 +2167,7 @@ sr:
       image: 'Слика:'
       gravatar:
         gravatar: Користи Граватар
-        link: https://wiki.openstreetmap.org/wiki/Gravatar
+        link: https://wiki.openstreetmap.org/wiki/Gravatar?uselang=sr
         link text: шта је ово?
         disabled: Граватар је онемогућен.
         enabled: Приказ Вашег Граватара је омогућен.
@@ -2479,7 +2479,7 @@ sr:
     directions:
       ascend: Растуће
       engines:
-        fossgis_osrm_bike: Бицикла (OSRM)
+        fossgis_osrm_bike: Бицикл (OSRM)
         fossgis_osrm_car: Аутомобилом (OSRM)
         fossgis_osrm_foot: Пешке (OSRM)
         graphhopper_bicycle: Бициклом (GraphHopper)
index 84974cc199690c3a7e74f2e55c2b8ebb2f288d9f..393f62b06e20de4ad90f23455d25f52339a74ad3 100644 (file)
@@ -109,12 +109,13 @@ th:
         pass_crypt: รหัสผ่าน
   datetime:
     distance_in_words_ago:
-      about_x_years:
-        one: about 1 year ago
-        other: about %{count} years ago
+      about_x_years: ประมาณ %{count} ปีก่อน
+      almost_x_years: เกือบ %{count} ปีก่อน
+      over_x_years: มากกว่า %{count} ปีก่อน
       x_days:
         one: 1 day ago
         other: '%{count} days ago'
+      x_years: '%{count} ปีก่อน'
   editor:
     default: ค่าปกติ (ขณะนี้ %{name})
     potlatch:
@@ -132,10 +133,10 @@ th:
   api:
     notes:
       comment:
-        opened_at_html: สร้างเมื่อ %{when}ก่อน
-        commented_at_html: ปรับปรุงเมื่อ %{when}ก่อน
-        closed_at_html: ปิดเรื่องเมื่อ %{when}ก่อน
-        reopened_at_html: รื้อฟื้นเมื่อ %{when}ก่อน
+        opened_at_html: สร้างเมื่อ %{when}
+        commented_at_html: ปรับปรุงเมื่อ %{when}
+        closed_at_html: ปิดเรื่องเมื่อ %{when}
+        reopened_at_html: รื้อฟื้นเมื่อ %{when}
       rss:
         title: หมายเหตุแผนที่ บน OpenStreetMap
       entry:
@@ -144,12 +145,12 @@ th:
   browse:
     created: สร้างเมื่อ
     closed: ปิดเมื่อ
-    created_html: สร้างเมื่อ <abbr title='%{title}'>%{time} ก่อน</abbr>
-    closed_html: ปิดเมื่อ <abbr title='%{title}'>%{time} ก่อน</abbr>
-    created_by_html: สร้างเมื่อ <abbr title='%{title}'>%{time} ก่อน</abbr> โดย %{user}
-    deleted_by_html: ลบเมื่อ <abbr title='%{title}'>%{time} ก่อน</abbr> โดย %{user}
-    edited_by_html: แก้ไขเมื่อ <abbr title='%{title}'>%{time} ก่อน</abbr> โดย %{user}
-    closed_by_html: ปิดเมื่อ <abbr title='%{title}'>%{time} ก่อน</abbr> โดย %{user}
+    created_html: สร้างเมื่อ <abbr title='%{title}'>%{time}</abbr>
+    closed_html: ปิดเมื่อ <abbr title='%{title}'>%{time}</abbr>
+    created_by_html: สร้างเมื่อ <abbr title='%{title}'>%{time}</abbr> โดย %{user}
+    deleted_by_html: ลบเมื่อ <abbr title='%{title}'>%{time}</abbr> โดย %{user}
+    edited_by_html: แก้ไขเมื่อ <abbr title='%{title}'>%{time}</abbr> โดย %{user}
+    closed_by_html: ปิดเมื่อ <abbr title='%{title}'>%{time}</abbr> โดย %{user}
     version: รุ่นที่
     in_changeset: ชุดการเปลี่ยนแปลง
     anonymous: ไม่ระบุตัวตน
@@ -169,10 +170,8 @@ th:
       relation: ความสัมพันธ์ (%{count})
       relation_paginated: ความสัมพันธ์ (%{x}-%{y} จาก %{count})
       comment: ความคิดเห็น (%{count})
-      hidden_commented_by: ความคิดเห็นซ่อนจาก %{user} เมื่อ <abbr title='%{exact_time}'>%{when}
-        ก่อน</abbr>
-      commented_by: ความคิดเห็นจาก %{user} เมื่อ <abbr title='%{exact_time}'>%{when}
-        ก่อน</abbr>
+      hidden_commented_by: ความคิดเห็นซ่อนจาก %{user} เมื่อ <abbr title='%{exact_time}'>%{when}</abbr>
+      commented_by: ความคิดเห็นจาก %{user} เมื่อ <abbr title='%{exact_time}'>%{when}</abbr>
       changesetxml: ชุดการเปลี่ยนแปลง XML
       osmchangexml: เอ็กซ์เอ็มแอลของ osmChange
       feed:
@@ -248,21 +247,15 @@ th:
       open_title: 'หมายเหตุที่ยังไม่มีคำตอบ #%{note_name}'
       closed_title: หมายเหตุที่ตอบสนองแล้ว %{note_name}
       hidden_title: 'หมายเหตุที่ซ่อนอยู่ #%{note_name}'
-      open_by: จัดทำโดย %{user} เมื่อ <abbr title='%{exact_time}'>%{when} ก่อน</abbr>
-      open_by_anonymous: จัดทำโดยผู้ไม่ประสงค์ออกนามเมื่อ <abbr title='%{exact_time}'>%{when}
-        ก่อน</abbr>
-      commented_by: ความเห็นจาก %{user} เมื่อ <abbr title='%{exact_time}'>%{when}
-        ก่อน</abbr>
-      commented_by_anonymous: ความเห็นจากผู้ไม่ประสงค์ออกนามเมื่อ <abbr title='%{exact_time}'>%{when}
-        ก่อน</abbr>
-      closed_by: แก้ไขโดย %{user} เมื่อ <abbr title='%{exact_time}'>%{when} ก่อน</abbr>
-      closed_by_anonymous: แก้ไขโดยผู้ไม่ประสงค์ออกนามเมื่อ <abbr title='%{exact_time}'>%{when}
-        ก่อน</abbr>
-      reopened_by: เปิดใช้ซ้ำโดย %{user} เมื่อ <abbr title='%{exact_time}'>%{when}
-        ก่อน</abbr>
-      reopened_by_anonymous: เปิดใช้ซ้ำโดยผู้ไม่ประสงค์ออกนาม เมื่อ <abbr title='%{exact_time}'>%{when}
-        ก่อน</abbr>
-      hidden_by: ซ่อนโดย %{user} เมื่อ <abbr title='%{exact_time}'>%{when} ก่อน</abbr>
+      open_by: จัดทำโดย %{user} เมื่อ <abbr title='%{exact_time}'>%{when}</abbr>
+      open_by_anonymous: จัดทำโดยผู้ไม่ประสงค์ออกนามเมื่อ <abbr title='%{exact_time}'>%{when}</abbr>
+      commented_by: ความเห็นจาก %{user} เมื่อ <abbr title='%{exact_time}'>%{when}</abbr>
+      commented_by_anonymous: ความเห็นจากผู้ไม่ประสงค์ออกนามเมื่อ <abbr title='%{exact_time}'>%{when}</abbr>
+      closed_by: แก้ไขโดย %{user} เมื่อ <abbr title='%{exact_time}'>%{when}</abbr>
+      closed_by_anonymous: แก้ไขโดยผู้ไม่ประสงค์ออกนามเมื่อ <abbr title='%{exact_time}'>%{when}</abbr>
+      reopened_by: เปิดใช้ซ้ำโดย %{user} เมื่อ <abbr title='%{exact_time}'>%{when}</abbr>
+      reopened_by_anonymous: เปิดใช้ซ้ำโดยผู้ไม่ประสงค์ออกนาม เมื่อ <abbr title='%{exact_time}'>%{when}</abbr>
+      hidden_by: ซ่อนโดย %{user} เมื่อ <abbr title='%{exact_time}'>%{when}</abbr>
       report: แจ้งปัญหาเกี่ยวกับหมายเหตุนี้
     query:
       title: ส่วนประกอบในพื้นที่
@@ -282,7 +275,7 @@ th:
       id: รหัส
       saved_at: บันทึกที่
       user: ผู้ใช้
-      comment: ความเห็น
+      comment: à¹\81สà¸\94à¸\87à¸\84วามà¹\80หà¹\87à¸\99
       area: พื้นที่
     index:
       title: ชุดการเปลี่ยนแปลง
@@ -301,7 +294,7 @@ th:
   changeset_comments:
     comment:
       comment: 'ความคิดเห็นใหม่ที่มีต่อชุดการเปลี่ยนแปลง #%{changeset_id} โดย %{author}'
-      commented_at_by_html: à¸\9bรัà¸\9aà¸\9bรุà¸\87à¹\80มืà¹\88อ %{when} à¸\81à¹\88อà¸\99 à¹\82à¸\94ย %{user}
+      commented_at_by_html: ปรับปรุงเมื่อ %{when} โดย %{user}
     index:
       title_all: การสนทนาชุดการเปลี่ยนแปลงของ OpenStreetMap
       title_particular: 'การอภิปรายชุดการเปลี่ยนแปลง OpenStreetMap  #%{changeset_id}'
@@ -362,7 +355,7 @@ th:
       report: แจ้งปัญหาเกี่ยวกับความเห็นนี้
     location:
       location: 'ที่ตั้ง:'
-      view: à¸\94ู
+      view: à¹\81สà¸\94à¸\87
       edit: แก้ไข
     feed:
       user:
@@ -378,7 +371,7 @@ th:
       has_commented_on: '%{display_name} ได้แสดงความคิดเห็นต่อรายการบันทึกต่อไปนี้'
       post: เผยแพร่
       when: เมื่อ
-      comment: ความเห็น
+      comment: à¹\81สà¸\94à¸\87à¸\84วามà¹\80หà¹\87à¸\99
       newer_comments: ความคิดเห็นใหม่กว่า
       older_comments: ความคิดเห็นเก่ากว่า
   geocoder:
@@ -987,7 +980,7 @@ th:
       user_not_found: ไม่มีผู้ใช้นี้
       status: สถานะ
       reports: รายการปัญหาที่รับแจ้งจากผู้ใช้
-      last_updated_time_html: <abbr title='%{title}'>%{time}ก่อน</abbr>
+      last_updated_time_html: <abbr title='%{title}'>%{time}</abbr>
     comments:
       created_at: เมื่อ %{datetime}
   reports:
@@ -1345,7 +1338,7 @@ th:
         contributors_gb_html: |-
           <strong>สหราชอาณาจักร</strong>: มีข้อมูลจากกองแผนที่ Ordnance
           Survey data &copy; ลิขสิทธิ์ราชการและสิทธิ์แห่งฐานข้อมูล
-          2010-12
+          2010-19
         infringement_title_html: การละเมิดลิขสิทธิ์
         infringement_2_html: |-
           หากท่านเชื่อว่าข้อมูลละเมิดลิขสิทธิ์ปรากฏในเว็บไซต์นี้หรือในฐานข้อมูล OpenStreetMap โปรดดู <a href="https://www.osmfoundation.org/wiki/License/Takedown_procedure">ขั้นตอนการลบข้อมูลละเมิดลิขสิทธิ์</a> หรือแจ้งได้ที่
@@ -1519,7 +1512,7 @@ th:
       edit: แก้ไข
       preview: แสดงตัวอย่าง
     markdown_help:
-      title_html: เขียนด้วยรูปแบบ <a href="https://daringfireball.net/projects/markdown/">Markdown</a>
+      title_html: เขียนด้วยรูปแบบ <a href="https://kramdown.gettalong.org/quickref.html">Kramdown</a>
       headings: หัวเรื่องหลัก
       heading: หัวเรื่องหลัก
       subheading: หัวเรื่องย่อย
@@ -1878,7 +1871,7 @@ th:
       ct status: 'เงื่อนไขผู้ร่วมสร้างสรรค์:'
       ct undecided: ยังไม่ตัดสินใจ
       ct declined: ไม่ยอมรับ
-      latest edit: 'à¹\81à¸\81à¹\89à¹\84à¸\82ลà¹\88าสุà¸\94à¹\80มืà¹\88อ %{ago}:'
+      latest edit: 'à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82ลà¹\88าสุà¸\94 (%{ago}):'
       email address: 'ที่อยู่อีเมล:'
       created from: 'สร้างจาก:'
       status: 'สถานะ:'
@@ -2084,13 +2077,15 @@ th:
     revoke:
       title: ยกเลิกการระงับใช้งานของ %{block_on}
       heading: เพิกถอนการระงับผู้ใช้ %{block_on} ซึ่งสั่งโดยผู้ใช้ %{block_by}
-      past: การระงับนี้ได้สิ้นสุดไปเมื่อ %{time}ก่อนแล้ว การยกเลิกจึงไม่มีผล
+      past: การระงับนี้ได้สิ้นสุดไปเมื่อ %{time} แล้ว การยกเลิกจึงไม่มีผล
       confirm: แน่ใจหรือว่าต้องการจะยกเิลิกการระงับนี้?
       flash: ได้ยกเลิกการระงับนี้แล้ว
     helper:
       time_future: จะสิ้นสุดใน %{time}
       until_login: มีผลจนถึงการเริ่มเข้าระบบครั้งถัดไป
-      time_past: สิ้นสุดไปเมื่อ %{time}ก่อน
+      time_past: สิ้นสุดไปเมื่อ %{time}
+      block_duration:
+        years: '%{count} ปี'
     blocks_on:
       title: การถูกระงับใช้งานของ %{name}
       heading: รายการการถูกระงับของผู้ใช้ %{name}
index 2498cc9661b6937f61f9c45cffb421f5fb2a3b5e..9404e0849268844e4227dcdc97a65360a0ff1f2e 100644 (file)
@@ -31,6 +31,7 @@
 # Author: Talha Samil Cakir
 # Author: Tarikozket
 # Author: TmY e12
+# Author: TomH
 # Author: ToprakM
 # Author: Trncmvsr
 # Author: Trockya
@@ -163,7 +164,9 @@ tr:
       over_x_years:
         one: 1 yıldan fazla
         other: '%{count} yıldan fazla'
-      x_seconds: '{{PLURAL|one=1 saniye önce|%{count} saniye önce}'
+      x_seconds:
+        one: 1 saniye önce
+        other: '%{count} saniye önce'
       x_minutes:
         one: 1 dakika önce
         other: '%{count} dakika önce'
index c296a69c729a3d9fed2515e1121fb8ec452171b5..4a137e93954fefd09b109aa0d4c618cdcf0b5de6 100644 (file)
@@ -32,6 +32,7 @@
 # Author: Sev
 # Author: Shirayuki
 # Author: SteveR
+# Author: TomH
 # Author: Vlad5250
 # Author: Ypryima
 # Author: Yurkoy
@@ -1629,15 +1630,16 @@ uk:
       upload_trace: Надіслати GPS-трек на сервер
       trace_uploaded: Ваш GPX-файл завантажився і чекає додання у базу даних. Зазвичай,
         це триватиме півгодини, після чого вам буде надіслано листа.
-      traces_waiting: '{{PLURAL|one=%{count} ваш трек очікує завантаження на сервер.
-        Будь ласка, дочекайтесь завершення завантаження перед завантаженням на сервер
-        інших треків, що дозволить іншим користувачам також надіслати свої треки.|few=%{count}
-        ваших треки очікують завантаження на сервер. Будь ласка, дочекайтесь завершення
-        їх завантаження перед завантаженням на сервер інших треків, що дозволить іншим
-        користувачам також надіслати свої треки.|%{count} ваших треків очікують завантаження
-        на сервер. Будь ласка, дочекайтесь завершення їх завантаження перед завантаженням
-        на сервер інших треків, що дозволить іншим користувачам також надіслати свої
-        треки.'
+      traces_waiting:
+        one: '%{count} ваш трек очікує завантаження на сервер. Будь ласка, дочекайтесь
+          завершення завантаження перед завантаженням на сервер інших треків, що дозволить
+          іншим користувачам також надіслати свої треки.'
+        few: '%{count} ваших треки очікують завантаження на сервер. Будь ласка, дочекайтесь
+          завершення їх завантаження перед завантаженням на сервер інших треків, що
+          дозволить іншим користувачам також надіслати свої треки.'
+        other: '%{count} ваших треків очікують завантаження на сервер. Будь ласка,
+          дочекайтесь завершення їх завантаження перед завантаженням на сервер інших
+          треків, що дозволить іншим користувачам також надіслати свої треки.'
     edit:
       title: Редагування треку %{name}
       heading: Редагування треку %{name}
index 7dd38621388d54afd0da6daf48fa1ca259d0e993..6afa03ad599e42c2ea08045209a86bece9a88f6c 100644 (file)
@@ -1,9 +1,8 @@
 {
   "name": "openstreetmap",
   "private": true,
-  "dependencies": {
-  },
+  "dependencies": {},
   "devDependencies": {
-    "eslint": "^5.16.0"
+    "eslint": "^6.0.1"
   }
 }
index 0e18c9fe972f8b6d628c80ac871a0aee42bc9c07..689869ce4a7636a6ec1cab0f4e8d7bc773335050 100644 (file)
--- a/yarn.lock
+++ b/yarn.lock
@@ -10,9 +10,9 @@
     "@babel/highlight" "^7.0.0"
 
 "@babel/highlight@^7.0.0":
-  version "7.0.0"
-  resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4"
-  integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==
+  version "7.5.0"
+  resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540"
+  integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==
   dependencies:
     chalk "^2.0.0"
     esutils "^2.0.2"
@@ -24,14 +24,14 @@ acorn-jsx@^5.0.0:
   integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==
 
 acorn@^6.0.7:
-  version "6.1.1"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f"
-  integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==
+  version "6.2.0"
+  resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.0.tgz#67f0da2fc339d6cfb5d6fb244fd449f33cd8bbe3"
+  integrity sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw==
 
-ajv@^6.9.1:
-  version "6.10.0"
-  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1"
-  integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==
+ajv@^6.10.0, ajv@^6.9.1:
+  version "6.10.1"
+  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.1.tgz#ebf8d3af22552df9dd049bfbe50cc2390e823593"
+  integrity sha512-w1YQaVGNC6t2UCPjEawK/vo/dG8OOrVtUmhBT1uJJYxbl5kU2Tj3v6LGqBcsysN1yhuCStJCCA3GqdvKY8sqXQ==
   dependencies:
     fast-deep-equal "^2.0.1"
     fast-json-stable-stringify "^2.0.0"
@@ -191,13 +191,13 @@ eslint-visitor-keys@^1.0.0:
   resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
   integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==
 
-eslint@^5.16.0:
-  version "5.16.0"
-  resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea"
-  integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==
+eslint@^6.0.1:
+  version "6.0.1"
+  resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.0.1.tgz#4a32181d72cb999d6f54151df7d337131f81cda7"
+  integrity sha512-DyQRaMmORQ+JsWShYsSg4OPTjY56u1nCjAmICrE8vLWqyLKxhFXOthwMj1SA8xwfrv0CofLNVnqbfyhwCkaO0w==
   dependencies:
     "@babel/code-frame" "^7.0.0"
-    ajv "^6.9.1"
+    ajv "^6.10.0"
     chalk "^2.1.0"
     cross-spawn "^6.0.5"
     debug "^4.0.1"
@@ -205,18 +205,19 @@ eslint@^5.16.0:
     eslint-scope "^4.0.3"
     eslint-utils "^1.3.1"
     eslint-visitor-keys "^1.0.0"
-    espree "^5.0.1"
+    espree "^6.0.0"
     esquery "^1.0.1"
     esutils "^2.0.2"
     file-entry-cache "^5.0.1"
     functional-red-black-tree "^1.0.1"
-    glob "^7.1.2"
+    glob-parent "^3.1.0"
     globals "^11.7.0"
     ignore "^4.0.6"
     import-fresh "^3.0.0"
     imurmurhash "^0.1.4"
     inquirer "^6.2.2"
-    js-yaml "^3.13.0"
+    is-glob "^4.0.0"
+    js-yaml "^3.13.1"
     json-stable-stringify-without-jsonify "^1.0.1"
     levn "^0.3.0"
     lodash "^4.17.11"
@@ -224,7 +225,6 @@ eslint@^5.16.0:
     mkdirp "^0.5.1"
     natural-compare "^1.4.0"
     optionator "^0.8.2"
-    path-is-inside "^1.0.2"
     progress "^2.0.0"
     regexpp "^2.0.1"
     semver "^5.5.1"
@@ -233,10 +233,10 @@ eslint@^5.16.0:
     table "^5.2.3"
     text-table "^0.2.0"
 
-espree@^5.0.1:
-  version "5.0.1"
-  resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a"
-  integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==
+espree@^6.0.0:
+  version "6.0.0"
+  resolved "https://registry.yarnpkg.com/espree/-/espree-6.0.0.tgz#716fc1f5a245ef5b9a7fdb1d7b0d3f02322e75f6"
+  integrity sha512-lJvCS6YbCn3ImT3yKkPe0+tJ+mH6ljhGNjHQH9mRtiO6gjhVAOhVXW1yjnwqGwTkK3bGbye+hb00nFNmu0l/1Q==
   dependencies:
     acorn "^6.0.7"
     acorn-jsx "^5.0.0"
@@ -272,9 +272,9 @@ esutils@^2.0.2:
   integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
 
 external-editor@^3.0.3:
-  version "3.0.3"
-  resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27"
-  integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
+  integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
   dependencies:
     chardet "^0.7.0"
     iconv-lite "^0.4.24"
@@ -319,9 +319,9 @@ flat-cache@^2.0.1:
     write "1.0.3"
 
 flatted@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916"
-  integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08"
+  integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==
 
 fs.realpath@^1.0.0:
   version "1.0.0"
@@ -333,10 +333,18 @@ functional-red-black-tree@^1.0.1:
   resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
   integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
 
-glob@^7.1.2, glob@^7.1.3:
-  version "7.1.3"
-  resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
-  integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
+glob-parent@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
+  integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
+  dependencies:
+    is-glob "^3.1.0"
+    path-dirname "^1.0.0"
+
+glob@^7.1.3:
+  version "7.1.4"
+  resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
+  integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
   dependencies:
     fs.realpath "^1.0.0"
     inflight "^1.0.4"
@@ -346,9 +354,9 @@ glob@^7.1.2, glob@^7.1.3:
     path-is-absolute "^1.0.0"
 
 globals@^11.7.0:
-  version "11.11.0"
-  resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e"
-  integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==
+  version "11.12.0"
+  resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+  integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
 
 has-flag@^3.0.0:
   version "3.0.0"
@@ -368,9 +376,9 @@ ignore@^4.0.6:
   integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
 
 import-fresh@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390"
-  integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118"
+  integrity sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==
   dependencies:
     parent-module "^1.0.0"
     resolve-from "^4.0.0"
@@ -389,14 +397,14 @@ inflight@^1.0.4:
     wrappy "1"
 
 inherits@2:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
-  integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+  integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
 
 inquirer@^6.2.2:
-  version "6.3.1"
-  resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7"
-  integrity sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==
+  version "6.5.0"
+  resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42"
+  integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==
   dependencies:
     ansi-escapes "^3.2.0"
     chalk "^2.4.2"
@@ -404,7 +412,7 @@ inquirer@^6.2.2:
     cli-width "^2.0.0"
     external-editor "^3.0.3"
     figures "^2.0.0"
-    lodash "^4.17.11"
+    lodash "^4.17.12"
     mute-stream "0.0.7"
     run-async "^2.2.0"
     rxjs "^6.4.0"
@@ -412,11 +420,30 @@ inquirer@^6.2.2:
     strip-ansi "^5.1.0"
     through "^2.3.6"
 
+is-extglob@^2.1.0, is-extglob@^2.1.1:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+  integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+
 is-fullwidth-code-point@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
   integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
 
+is-glob@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
+  integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
+  dependencies:
+    is-extglob "^2.1.0"
+
+is-glob@^4.0.0:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
+  integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
+  dependencies:
+    is-extglob "^2.1.1"
+
 is-promise@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
@@ -432,7 +459,7 @@ js-tokens@^4.0.0:
   resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
   integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
 
-js-yaml@^3.13.0:
+js-yaml@^3.13.1:
   version "3.13.1"
   resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
   integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
@@ -458,10 +485,10 @@ levn@^0.3.0, levn@~0.3.0:
     prelude-ls "~1.1.2"
     type-check "~0.3.2"
 
-lodash@^4.17.11:
-  version "4.17.11"
-  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
-  integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
+lodash@^4.17.11, lodash@^4.17.12:
+  version "4.17.14"
+  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba"
+  integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==
 
 mimic-fn@^1.0.0:
   version "1.2.0"
@@ -488,9 +515,9 @@ mkdirp@^0.5.1:
     minimist "0.0.8"
 
 ms@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
-  integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+  integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
 
 mute-stream@0.0.7:
   version "0.0.7"
@@ -545,16 +572,16 @@ parent-module@^1.0.0:
   dependencies:
     callsites "^3.0.0"
 
+path-dirname@^1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
+  integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
+
 path-is-absolute@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
   integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
 
-path-is-inside@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
-  integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
-
 path-key@^2.0.1:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
@@ -608,9 +635,9 @@ run-async@^2.2.0:
     is-promise "^2.1.0"
 
 rxjs@^6.4.0:
-  version "6.4.0"
-  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.4.0.tgz#f3bb0fe7bda7fb69deac0c16f17b50b0b8790504"
-  integrity sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==
+  version "6.5.2"
+  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7"
+  integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==
   dependencies:
     tslib "^1.9.0"
 
@@ -699,9 +726,9 @@ supports-color@^5.3.0:
     has-flag "^3.0.0"
 
 table@^5.2.3:
-  version "5.2.3"
-  resolved "https://registry.yarnpkg.com/table/-/table-5.2.3.tgz#cde0cc6eb06751c009efab27e8c820ca5b67b7f2"
-  integrity sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==
+  version "5.4.1"
+  resolved "https://registry.yarnpkg.com/table/-/table-5.4.1.tgz#0691ae2ebe8259858efb63e550b6d5f9300171e8"
+  integrity sha512-E6CK1/pZe2N75rGZQotFOdmzWQ1AILtgYbMAbAjvms0S1l5IDB47zG3nCnFGB/w+7nB3vKofbLXCH7HPBo864w==
   dependencies:
     ajv "^6.9.1"
     lodash "^4.17.11"
@@ -726,9 +753,9 @@ tmp@^0.0.33:
     os-tmpdir "~1.0.2"
 
 tslib@^1.9.0:
-  version "1.9.3"
-  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
-  integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
+  version "1.10.0"
+  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
+  integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
 
 type-check@~0.3.2:
   version "0.3.2"