diff --git a/.travis.yml b/.travis.yml index e52163c..a8a832b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,3 +2,6 @@ language: node_js node_js: - lts/* cache: yarn +script: + - yarn test + - yarn lint diff --git a/CHANGELOG.md b/CHANGELOG.md index 1302b52..02955e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # BRouter-Web Changelog +## 0.14.0 (2020-12-04) + +### New Features [fr] + +- [French users only] New button to add 20km allowed zone - by [@bagage](https://github.com/bagage) ([#347](https://github.com/nrenner/brouter-web/pull/347), [#350](https://github.com/nrenner/brouter-web/pull/350), [#352](https://github.com/nrenner/brouter-web/pull/352)) + ## 0.13.0 (2020-08-04) See also [milestone 0.13.0](https://github.com/nrenner/brouter-web/milestone/14?closed=1) diff --git a/config.template.js b/config.template.js index 9c29543..4604bf0 100644 --- a/config.template.js +++ b/config.template.js @@ -1,4 +1,4 @@ -(function() { +(function () { var hostname = window.location.hostname; var origin = window.location.protocol + '//' + hostname + (window.location.port ? ':' + window.location.port : ''); @@ -54,7 +54,7 @@ 'vm-forum-velomobil-schnell', 'fastbike-lowtraffic', 'fastbike-asia-pacific', - 'hiking-beta' + 'hiking-beta', ]; // Removes default base layers when 'true'. Useful for only having custom layers (see below). @@ -84,22 +84,22 @@ weight: 5, dashArray: [10, 10], opacity: 0.6, - color: 'magenta' + color: 'magenta', }, track: { weight: 5, color: 'magenta', - opacity: BR.conf.defaultOpacity + opacity: BR.conf.defaultOpacity, }, trackCasing: { weight: 8, color: 'white', // assumed to be same as track, see setOpacity - opacity: BR.conf.defaultOpacity + opacity: BR.conf.defaultOpacity, }, nodata: { - color: 'darkred' - } + color: 'darkred', + }, }; BR.conf.markerColors = { @@ -107,7 +107,7 @@ poi: '#436978', start: '#72b026', via: '#38aadd', - stop: '#d63e2a' + stop: '#d63e2a', }; // transit (intermodal routing) demo config @@ -121,7 +121,7 @@ 'fastbike', 'shortest', 'moped', - 'car-test' + 'car-test', ]; } diff --git a/css/style.css b/css/style.css index 379b6e8..99cc7b3 100644 --- a/css/style.css +++ b/css/style.css @@ -197,6 +197,12 @@ input#trackname:focus:invalid { .pois-draw-enabled { cursor: cell; } +.circlego-draw-enabled { + cursor: pointer; +} +.circlego-outside { + cursor: not-allowed; +} #map { /* center error message horizontally */ diff --git a/gulpfile.js b/gulpfile.js index 99a9d61..d834c0b 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -34,16 +34,15 @@ var debug = false; var paths = { // see overrides in package.json - scriptsConfig: mainNpmFiles().filter(f => RegExp('url-search-params/.*\\.js', 'i').test(f)), + scriptsConfig: mainNpmFiles().filter((f) => RegExp('url-search-params/.*\\.js', 'i').test(f)), scripts: [ 'node_modules/jquery/dist/jquery.js', - 'node_modules/tether/dist/js/tether.js', 'node_modules/async/lib/async.js', - 'node_modules/leaflet/dist/leaflet-src.js' + 'node_modules/leaflet/dist/leaflet-src.js', ] .concat( mainNpmFiles().filter( - f => + (f) => RegExp('.*\\.js', 'i').test(f) && !RegExp('.*\\.min\\.js', 'i').test(f) && !RegExp('url-search-params/.*\\.js', 'i').test(f) @@ -58,13 +57,13 @@ var paths = { 'js/util/*.js', 'js/plugin/*.js', 'js/control/*.js', - 'js/index.js' + 'js/index.js', ]), styles: mainNpmFiles() - .filter(f => RegExp('.*\\.css', 'i').test(f) && !RegExp('.*\\.min\\.css', 'i').test(f)) + .filter((f) => RegExp('.*\\.css', 'i').test(f) && !RegExp('.*\\.min\\.css', 'i').test(f)) .concat('css/*.css'), - images: mainNpmFiles().filter(f => RegExp('.*.+(png|gif|svg)', 'i').test(f)), - fonts: mainNpmFiles().filter(f => RegExp('font-awesome/fonts/.*', 'i').test(f)), + images: mainNpmFiles().filter((f) => RegExp('.*.+(png|gif|svg)', 'i').test(f)), + fonts: mainNpmFiles().filter((f) => RegExp('font-awesome/fonts/.*', 'i').test(f)), locales: 'locales/*.json', layers: 'layers/**/*.geojson', layersDestName: 'layers.js', @@ -72,25 +71,25 @@ var paths = { 'layers/config/config.js', 'layers/config/tree.js', 'layers/config/overrides.js', - 'layers/config/geometry.js' + 'layers/config/geometry.js', ], layersConfigDestName: 'layersConf.js', zip: ['dist/**', 'index.html', 'config.template.js', 'keys.template.js'], dest: 'dist', - destName: 'brouter-web' + destName: 'brouter-web', }; -gulp.task('clean', function(cb) { +gulp.task('clean', function (cb) { del(paths.dest + '/**/*', cb); }); // libs that require loading before config.js -gulp.task('scripts_config', function() { +gulp.task('scripts_config', function () { // just copy for now return gulp.src(paths.scriptsConfig).pipe(gulp.dest(paths.dest)); }); -gulp.task('scripts', function() { +gulp.task('scripts', function () { if (debug) gutil.log(gutil.colors.yellow('Running in Debug mode')); else gutil.log(gutil.colors.green('Running in Release mode')); @@ -106,14 +105,14 @@ gulp.task('scripts', function() { }); // separate, fallback task for debugging (switch manually in index.html) -gulp.task('concat', function() { +gulp.task('concat', function () { return gulp .src(paths.scripts) .pipe(concat(paths.destName + '.src.js')) .pipe(gulp.dest(paths.dest)); }); -gulp.task('styles', function() { +gulp.task('styles', function () { return gulp .src(paths.styles) .pipe( @@ -129,40 +128,40 @@ gulp.task('styles', function() { } return distUrl; - } + }, }) ) .pipe(concat(paths.destName + '.css')) .pipe( cleanCSS({ - rebase: false + rebase: false, }) ) .pipe(postcss([autoprefixer({ remove: false })])) .pipe(gulp.dest(paths.dest)); }); -gulp.task('images', function() { +gulp.task('images', function () { return gulp.src(paths.images).pipe(gulp.dest(paths.dest + '/images')); }); -gulp.task('fonts', function() { +gulp.task('fonts', function () { return gulp.src(paths.fonts).pipe(gulp.dest(paths.dest + '/fonts')); }); -gulp.task('locales', function() { +gulp.task('locales', function () { return gulp.src(paths.locales).pipe(gulp.dest(paths.dest + '/locales')); }); -gulp.task('reload', function(done) { +gulp.task('reload', function (done) { server.reload(); done(); }); -gulp.task('watch', function() { +gulp.task('watch', function () { debug = true; var watcher = gulp.watch(paths.scripts, gulp.series('scripts', 'reload')); - watcher.on('change', function(event) { + watcher.on('change', function (event) { if (event.type === 'deleted') { delete cached.caches.scripts[event.path]; remember.forget('scripts', event.path); @@ -171,35 +170,26 @@ gulp.task('watch', function() { gulp.watch(paths.locales, gulp.series('locales', 'reload')); gulp.watch(paths.styles, gulp.series('styles', 'reload')); gulp.watch(paths.layersConfig, gulp.series('layers_config', 'reload')); - gulp.watch( - ['./index.html'] - .concat(paths.images) - .concat(paths.fonts) - .concat(paths.locales), - gulp.series('reload') - ); + gulp.watch(['./index.html'].concat(paths.images).concat(paths.fonts).concat(paths.locales), gulp.series('reload')); }); // Print paths to console, for manually debugging the gulp build // (comment out corresponding line of paths to print) -gulp.task('log', function() { +gulp.task('log', function () { // var src = paths.scripts // var src = paths.styles // var src = paths.images // var src = paths.locales - var src = paths.scripts - .concat(paths.styles) - .concat(paths.images) - .concat(paths.locales); + var src = paths.scripts.concat(paths.styles).concat(paths.images).concat(paths.locales); return gulp.src(src).pipe(gulpDebug()); }); -gulp.task('inject', function() { +gulp.task('inject', function () { var target = gulp.src('index.html'); var sources = gulp.src(paths.scripts.concat(paths.styles), { base: '.', - read: false + read: false, }); return target.pipe(inject(sources, { relative: true })).pipe(gulp.dest('.')); @@ -209,7 +199,7 @@ var pkg = require('./package.json'); var nextVersion; var ghToken; -gulp.task('release:init', function(cb) { +gulp.task('release:init', function (cb) { var tag = gutil.env.tag; if (!tag) { return cb(new Error('--tag is required')); @@ -227,7 +217,7 @@ gulp.task('release:init', function(cb) { nextVersion = semver.inc(pkg.version, tag); - git.status({ args: '--porcelain', quiet: true }, function(err, stdout) { + git.status({ args: '--porcelain', quiet: true }, function (err, stdout) { if (err) return cb(err); if (stdout.length > 0) { return cb(new Error('Repository is not clean. Please commit or stash your pending modification')); @@ -237,7 +227,7 @@ gulp.task('release:init', function(cb) { }); }); -gulp.task('bump:json', function() { +gulp.task('bump:json', function () { gutil.log(gutil.colors.green('Bump to ' + nextVersion)); return gulp .src(['./package.json']) @@ -245,7 +235,7 @@ gulp.task('bump:json', function() { .pipe(gulp.dest('./')); }); -gulp.task('bump:html', function() { +gulp.task('bump:html', function () { return gulp .src('./index.html') .pipe(replace(/(.*)<\/sup>/, '' + nextVersion + '')) @@ -254,19 +244,19 @@ gulp.task('bump:html', function() { gulp.task('bump', gulp.series('bump:json', 'bump:html')); -gulp.task('release:commit', function() { +gulp.task('release:commit', function () { return gulp.src(['./index.html', './package.json']).pipe(git.commit('release: ' + nextVersion)); }); -gulp.task('release:tag', function(cb) { +gulp.task('release:tag', function (cb) { return git.tag(nextVersion, '', cb); }); -gulp.task('release:push', function(cb) { +gulp.task('release:push', function (cb) { git.push('origin', 'master', { args: '--tags' }, cb); }); -gulp.task('i18next', function() { +gulp.task('i18next', function () { return gulp .src(['index.html', 'locales/keys.js', 'layers/config/overrides.js', 'js/**/*.js']) .pipe(sort()) @@ -280,29 +270,26 @@ gulp.task('i18next', function() { loadPath: 'locales/{{lng}}.json', // the destination path is relative to your `gulp.dest()` path - savePath: 'locales/{{lng}}.json' - } + savePath: 'locales/{{lng}}.json', + }, }) ) .pipe(gulp.dest('.')); }); -gulp.task('layers_config', function() { - return gulp - .src(paths.layersConfig) - .pipe(concat(paths.layersConfigDestName)) - .pipe(gulp.dest(paths.dest)); +gulp.task('layers_config', function () { + return gulp.src(paths.layersConfig).pipe(concat(paths.layersConfigDestName)).pipe(gulp.dest(paths.dest)); }); // Bundles layer files. To download and extract run "yarn layers" -gulp.task('layers', function() { +gulp.task('layers', function () { return ( gulp .src(paths.layers) // Workaround to get file extension removed from the dictionary key .pipe(rename({ extname: '.json' })) .pipe( - jsonConcat(paths.layersDestName, function(data) { + jsonConcat(paths.layersDestName, function (data) { var header = '// Licensed under the MIT License (https://github.com/nrenner/brouter-web#license + Credits and Licenses),\n' + '// except JOSM imagery database (dataSource=JOSM) is licensed under Creative Commons (CC-BY-SA),\n' + @@ -321,7 +308,7 @@ gulp.task( gulp.task( 'debug', - gulp.series(function(cb) { + gulp.series(function (cb) { debug = true; cb(); }, 'default') @@ -329,28 +316,28 @@ gulp.task( gulp.task( 'serve', - gulp.series('debug', function(cb) { + gulp.series('debug', function (cb) { server.init({ server: { - baseDir: './' + baseDir: './', }, - open: false + open: false, }); cb(); }) ); -gulp.task('release:zip', function() { +gulp.task('release:zip', function () { gutil.log(gutil.colors.green('Build brouter-web.' + nextVersion + '.zip')); return gulp .src(paths.zip, { - base: '.' + base: '.', }) .pipe(zip('brouter-web.' + nextVersion + '.zip')) .pipe(gulp.dest('.')); }); -gulp.task('release:zip_standalone', function() { +gulp.task('release:zip_standalone', function () { var version = pkg.version; var destName = 'brouter-web-standalone.' + version + '.zip'; @@ -358,10 +345,10 @@ gulp.task('release:zip_standalone', function() { var brouterWeb = gulp .src(paths.zip, { - base: '.' + base: '.', }) .pipe( - rename(function(path) { + rename(function (path) { path.dirname = 'brouter-web/' + path.dirname; }) ); @@ -372,14 +359,14 @@ gulp.task('release:zip_standalone', function() { .src( [ 'misc/readmes/profile_developers_guide.txt', - 'brouter-server/target/brouter-server-*-jar-with-dependencies.jar' + 'brouter-server/target/brouter-server-*-jar-with-dependencies.jar', ], { - cwd: path.join(process.cwd(), '../brouter') + cwd: path.join(process.cwd(), '../brouter'), } ) .pipe( - rename(function(path) { + rename(function (path) { if (path.basename.startsWith('brouter-server-')) { path.basename = 'brouter'; } @@ -392,30 +379,28 @@ gulp.task('release:zip_standalone', function() { '!profiles2/all.brf', '!profiles2/car-eco-suspect_scan.brf', '!profiles2/car-traffic_analysis.brf', - '!profiles2/softaccess.brf' + '!profiles2/softaccess.brf', ], { cwd: path.join(process.cwd(), '../brouter/misc/'), - base: '../brouter/misc/' + base: '../brouter/misc/', } ); var serverScripts = gulp.src(['standalone/**'], { cwd: path.join(process.cwd(), '../brouter/misc/scripts/'), - base: '../brouter/misc/scripts/' + base: '../brouter/misc/scripts/', }); - return merge(brouterWeb, root, serverRoot, serverProfiles, serverScripts) - .pipe(zip(destName)) - .pipe(gulp.dest('.')); + return merge(brouterWeb, root, serverRoot, serverProfiles, serverScripts).pipe(zip(destName)).pipe(gulp.dest('.')); }); -gulp.task('release:publish', function() { +gulp.task('release:publish', function () { return gulp.src('./brouter-web.' + nextVersion + '.zip').pipe( release({ tag: nextVersion, token: ghToken, - manifest: pkg + manifest: pkg, }) ); }); diff --git a/index.html b/index.html index 1d15611..ad56b2f 100644 --- a/index.html +++ b/index.html @@ -1,1138 +1,1115 @@ - - - - - - - - BRouter web client - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
-
- -
- - -
-
- -
- - - - - - - - - - - - - - - - - + + + + + + + + BRouter web client + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+ +
+ + +
+
+ +
+ + + + + + + + + + + + + + + + + diff --git a/js/Browser.js b/js/Browser.js index 84ce45a..646cc48 100644 --- a/js/Browser.js +++ b/js/Browser.js @@ -1,5 +1,5 @@ -(function() { - var touchScreen = (function() { +(function () { + var touchScreen = (function () { var result = null; if ('maxTouchPoints' in navigator) { @@ -21,6 +21,6 @@ BR.Browser = { touchScreen: touchScreen, touchScreenDetectable: touchScreenDetectable, - touch: touch + touch: touch, }; })(); diff --git a/js/LayersConfig.js b/js/LayersConfig.js index 97c19b5..a3b497b 100644 --- a/js/LayersConfig.js +++ b/js/LayersConfig.js @@ -5,7 +5,7 @@ BR.LayersConfig = L.Class.extend({ // hardcoded, built-in layers with an id set (for URL hash) builtInLayers: ['route-quality'], - initialize: function(map) { + initialize: function (map) { this._map = map; this._addLeafletProvidersLayers(); @@ -14,7 +14,7 @@ BR.LayersConfig = L.Class.extend({ this._addLanguageDefaultLayer(); }, - loadDefaultLayers: function() { + loadDefaultLayers: function () { if (BR.Util.localStorageAvailable()) { var item = localStorage.getItem('map/defaultLayers'); if (item) { @@ -25,17 +25,17 @@ BR.LayersConfig = L.Class.extend({ } }, - storeDefaultLayers: function(baseLayers, overlays) { + storeDefaultLayers: function (baseLayers, overlays) { if (BR.Util.localStorageAvailable()) { var defaultLayers = { baseLayers: baseLayers, - overlays: overlays + overlays: overlays, }; localStorage.setItem('map/defaultLayers', JSON.stringify(defaultLayers)); } }, - _addLeafletProvidersLayers: function() { + _addLeafletProvidersLayers: function () { var includeList = BR.confLayers.leafletProvidersIncludeList; for (var i = 0; i < includeList.length; i++) { @@ -45,15 +45,15 @@ BR.LayersConfig = L.Class.extend({ properties: { id: id, name: id.replace('.', ' '), - dataSource: 'leaflet-providers' + dataSource: 'leaflet-providers', }, - type: 'Feature' + type: 'Feature', }; BR.layerIndex[id] = obj; } }, - _customizeLayers: function() { + _customizeLayers: function () { var propertyOverrides = BR.confLayers.getPropertyOverrides(); for (id in propertyOverrides) { @@ -79,7 +79,7 @@ BR.LayersConfig = L.Class.extend({ BR.layerIndex['1017'].geometry = BR.confLayers.osmapaPl; }, - _addLanguageDefaultLayer: function() { + _addLanguageDefaultLayer: function () { // language code -> layer id var languageLayersMap = {}; var i; @@ -107,7 +107,7 @@ BR.LayersConfig = L.Class.extend({ } }, - isDefaultLayer: function(id, overlay) { + isDefaultLayer: function (id, overlay) { var result = false; if (overlay) { result = this.defaultOverlays.indexOf(id) > -1; @@ -117,15 +117,15 @@ BR.LayersConfig = L.Class.extend({ return result; }, - getBaseLayers: function() { + getBaseLayers: function () { return this._getLayers(this.defaultBaseLayers); }, - getOverlays: function() { + getOverlays: function () { return this._getLayers(this.defaultOverlays); }, - _getLayers: function(ids) { + _getLayers: function (ids) { var layers = {}; for (var i = 0; i < ids.length; i++) { @@ -148,7 +148,7 @@ BR.LayersConfig = L.Class.extend({ // own convention: key placeholder with prefix // e.g. ?api_key={keys_openrouteservice} - getKeyName: function(url) { + getKeyName: function (url) { var result = null; // L.Util.template only matches [\w_-] var prefix = 'keys_'; @@ -162,14 +162,14 @@ BR.LayersConfig = L.Class.extend({ name = found[1]; result = { name: name, - urlVar: prefix + name + urlVar: prefix + name, }; } return result; }, - createLayer: function(layerData) { + createLayer: function (layerData) { var props = layerData.properties; var url = props.url; var layer; @@ -218,7 +218,7 @@ BR.LayersConfig = L.Class.extend({ var options = { maxZoom: this._map.getMaxZoom(), - bounds: layerData.geometry && !props.worldTiles ? L.geoJson(layerData.geometry).getBounds() : null + bounds: layerData.geometry && !props.worldTiles ? L.geoJson(layerData.geometry).getBounds() : null, }; if (props.mapUrl) { options.mapLink = @@ -237,7 +237,7 @@ BR.LayersConfig = L.Class.extend({ layer = L.tileLayer.provider(props.id); var layerOptions = L.Util.extend(options, { - maxNativeZoom: layer.options.maxZoom + maxNativeZoom: layer.options.maxZoom, }); L.setOptions(layer, layerOptions); } else if (props.dataSource === 'LayersCollection') { @@ -245,7 +245,7 @@ BR.LayersConfig = L.Class.extend({ url, L.Util.extend(options, { minZoom: props.minZoom || 0, - maxNativeZoom: props.maxZoom + maxNativeZoom: props.maxZoom, }) ); if (props.subdomains) { @@ -260,7 +260,7 @@ BR.LayersConfig = L.Class.extend({ minZoom: props.min_zoom || 0, maxNativeZoom: props.max_zoom, subdomains: getSubdomains(josmUrl), - attribution: convertAttributionJosm(props) + attribution: convertAttributionJosm(props), }); if (props.type && props.type === 'wms') { @@ -268,7 +268,7 @@ BR.LayersConfig = L.Class.extend({ url, L.Util.extend(josmOptions, { layers: props.layers, - format: props.format + format: props.format, }) ); } else { @@ -279,7 +279,7 @@ BR.LayersConfig = L.Class.extend({ // Layer attribution here only as short link to original site, // to keep current position use placeholders: {zoom}/{lat}/{lon} // Copyright attribution in index.html #credits - var getAttribution = function() { + var getAttribution = function () { return this.options.mapLink; }; layer.getAttribution = getAttribution; @@ -287,9 +287,9 @@ BR.LayersConfig = L.Class.extend({ layer.id = props.id; return layer; - } + }, }); -BR.layersConfig = function(map) { +BR.layersConfig = function (map) { return new BR.LayersConfig(map); }; diff --git a/js/Map.js b/js/Map.js index deb1145..d772e11 100644 --- a/js/Map.js +++ b/js/Map.js @@ -1,11 +1,11 @@ BR.Map = { - initMap: function() { + initMap: function () { var map, layersControl; L.setOptions(this, { shortcut: { - locate: 76 // char code for 'l' - } + locate: 76, // char code for 'l' + }, }); BR.keys = BR.keys || {}; @@ -18,14 +18,14 @@ BR.Map = { minZoom: 0, maxZoom: maxZoom, // fix for route drag on mobile (#285), until next Leaflet version released (> 1.6.0) - tap: false + tap: false, }); if (BR.Util.getResponsiveBreakpoint() >= '3md') { L.control .zoom({ zoomInTitle: i18next.t('keyboard.generic-shortcut', { action: '$t(map.zoomInTitle)', key: '+' }), - zoomOutTitle: i18next.t('keyboard.generic-shortcut', { action: '$t(map.zoomOutTitle)', key: '-' }) + zoomOutTitle: i18next.t('keyboard.generic-shortcut', { action: '$t(map.zoomOutTitle)', key: '-' }), }) .addTo(map); } @@ -54,7 +54,7 @@ BR.Map = { '' ); - $('#credits').on('show.bs.modal', function(event) { + $('#credits').on('show.bs.modal', function (event) { BR.Map._renderLayerCredits(layersControl._layers); }); @@ -77,7 +77,7 @@ BR.Map = { minZoom: 1, maxZoom: 19, attribution: - '© DigitalGlobe (Terms of Use)' + '© DigitalGlobe (Terms of Use)', } ); baseLayers[i18next.t('map.layer.digitalglobe')] = recent; @@ -105,16 +105,16 @@ BR.Map = { var locationControl = L.control .locate({ strings: { - title: i18next.t('keyboard.generic-shortcut', { action: '$t(map.locate-me)', key: 'L' }) + title: i18next.t('keyboard.generic-shortcut', { action: '$t(map.locate-me)', key: 'L' }), }, icon: 'fa fa-location-arrow', - iconLoading: 'fa fa-spinner fa-pulse' + iconLoading: 'fa fa-spinner fa-pulse', }) .addTo(map); L.DomEvent.addListener( document, 'keydown', - function(e) { + function (e) { if (BR.Util.keyboardShortcutsAllowed(e) && e.keyCode === this.options.shortcut.locate) { locationControl.start(); } @@ -133,11 +133,11 @@ BR.Map = { return { map: map, - layersControl: layersControl + layersControl: layersControl, }; }, - _renderLayerCredits: function(layers) { + _renderLayerCredits: function (layers) { var dl = document.getElementById('credits-maps'); var i, obj, dt, dd, attribution; @@ -157,5 +157,5 @@ BR.Map = { dl.appendChild(dd); } } - } + }, }; diff --git a/js/Util.js b/js/Util.js index 17923b4..2e6f532 100644 --- a/js/Util.js +++ b/js/Util.js @@ -1,16 +1,16 @@ BR.Util = { - get: function(url, cb) { + get: function (url, cb) { var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); - xhr.onload = function() { + xhr.onload = function () { if ((xhr.status === 200 || xhr.status === 0) && xhr.responseText) { cb(null, xhr.responseText); } else { cb(BR.Util.getError(xhr)); } }; - xhr.onerror = function() { + xhr.onerror = function () { cb(BR.Util.getError(xhr)); }; try { @@ -20,7 +20,7 @@ BR.Util = { } }, - getError: function(xhr) { + getError: function (xhr) { var msg = i18next.t('warning.no-response'); if (xhr.responseText) { msg = xhr.responseText; @@ -38,7 +38,7 @@ BR.Util = { // https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API#Testing_for_support_vs_availability // by Mozilla Contributors, with modifications; // Any copyright is dedicated to the Public Domain. https://creativecommons.org/publicdomain/zero/1.0/ - localStorageAvailable: function() { + localStorageAvailable: function () { try { var storage = window.localStorage, x = '__storage_test__'; @@ -51,7 +51,7 @@ BR.Util = { }, // see https://stackoverflow.com/a/37141090/1906123 - getResponsiveBreakpoint: function() { + getResponsiveBreakpoint: function () { var envs = { '1xs': 'd-none', '2sm': 'd-sm-none', '3md': 'd-md-none', '4lg': 'd-lg-none', '5xl': 'd-xl-none' }; var env = ''; @@ -69,7 +69,7 @@ BR.Util = { return env; }, - keyboardShortcutsAllowed: function(keyEvent) { + keyboardShortcutsAllowed: function (keyEvent) { // Skip auto-repeating key events if (keyEvent.repeat) { return false; @@ -102,9 +102,9 @@ BR.Util = { // this method must only be used to sanitize for textContent. // do NOT use it to sanitize any attribute, // see https://web.archive.org/web/20121208091505/http://benv.ca/2012/10/4/you-are-probably-misusing-DOM-text-methods/ - sanitizeHTMLContent: function(str) { + sanitizeHTMLContent: function (str) { var temp = document.createElement('div'); temp.textContent = str; return temp.innerHTML; - } + }, }; diff --git a/js/control/Control.Layers.js b/js/control/Control.Layers.js index 9bb34fa..a46c345 100644 --- a/js/control/Control.Layers.js +++ b/js/control/Control.Layers.js @@ -1,5 +1,5 @@ BR.ControlLayers = L.Control.Layers.extend({ - getActiveLayers: function() { + getActiveLayers: function () { var result = []; for (var i = 0; i < this._layers.length; i++) { @@ -16,7 +16,7 @@ BR.ControlLayers = L.Control.Layers.extend({ return result; }, - getActiveBaseLayer: function() { + getActiveBaseLayer: function () { var activeLayers = this.getActiveLayers(); for (var i = 0; i < activeLayers.length; i++) { var obj = activeLayers[i]; @@ -28,7 +28,7 @@ BR.ControlLayers = L.Control.Layers.extend({ return null; }, - removeActiveLayers: function() { + removeActiveLayers: function () { var removed = []; for (var i = 0; i < this._layers.length; i++) { @@ -42,7 +42,7 @@ BR.ControlLayers = L.Control.Layers.extend({ return removed; }, - getLayer: function(name) { + getLayer: function (name) { for (var i = 0; i < this._layers.length; i++) { var obj = this._layers[i]; if (obj.name === name) { @@ -53,19 +53,19 @@ BR.ControlLayers = L.Control.Layers.extend({ return null; }, - getBaseLayers: function() { - return this._layers.filter(function(obj) { + getBaseLayers: function () { + return this._layers.filter(function (obj) { return !obj.overlay; }); }, - activateLayer: function(obj) { + activateLayer: function (obj) { if (!this._map.hasLayer(obj.layer)) { this._map.addLayer(obj.layer); } }, - activateFirstLayer: function() { + activateFirstLayer: function () { for (var i = 0; i < this._layers.length; i++) { var obj = this._layers[i]; if (!obj.overlay) { @@ -75,14 +75,14 @@ BR.ControlLayers = L.Control.Layers.extend({ } }, - activateBaseLayerIndex: function(index) { + activateBaseLayerIndex: function (index) { var baseLayers = this.getBaseLayers(); var obj = baseLayers[index]; this.activateLayer(obj); }, - _addLayer: function(layer, name, overlay) { + _addLayer: function (layer, name, overlay) { L.Control.Layers.prototype._addLayer.call(this, layer, name, overlay); // override z-index assignment to fix that base layers added later @@ -95,5 +95,5 @@ BR.ControlLayers = L.Control.Layers.extend({ layer.setZIndex(0); } } - } + }, }); diff --git a/js/control/Export.js b/js/control/Export.js index fd6b69c..3740c8b 100644 --- a/js/control/Export.js +++ b/js/control/Export.js @@ -3,11 +3,11 @@ BR.Export = L.Class.extend({ options: { shortcut: { - export: 88 // char code for 'x' - } + export: 88, // char code for 'x' + }, }, - initialize: function(router, pois) { + initialize: function (router, pois) { this.router = router; this.pois = pois; this.exportButton = $('#exportButton'); @@ -31,7 +31,7 @@ BR.Export = L.Class.extend({ this.update([]); }, - update: function(latLngs) { + update: function (latLngs) { this.latLngs = latLngs; if (latLngs.length < 2) { @@ -41,13 +41,13 @@ BR.Export = L.Class.extend({ } }, - _export: function(e) { + _export: function (e) { var exportForm = document.forms['export']; var format = exportForm['format'].value || $('#export-format input:radio:checked').val(); var name = encodeURIComponent(exportForm['trackname'].value); var includeWaypoints = exportForm['include-waypoints'].checked; - var uri = this.router.getUrl(this.latLngs, this.pois.getMarkers(), format, name, includeWaypoints); + var uri = this.router.getUrl(this.latLngs, this.pois.getMarkers(), null, format, name, includeWaypoints); e.preventDefault(); @@ -58,7 +58,7 @@ BR.Export = L.Class.extend({ link.dispatchEvent(evt); }, - _validationMessage: function() { + _validationMessage: function () { var trackname = this.trackname; var replaceRegex = new RegExp('[^' + this.tracknameAllowedChars + ']', 'g'); @@ -71,14 +71,14 @@ BR.Export = L.Class.extend({ } }, - _generateTrackname: function() { + _generateTrackname: function () { var trackname = this.trackname; this._getCityAtPosition( this.latLngs[0], - L.bind(function(from) { + L.bind(function (from) { this._getCityAtPosition( this.latLngs[this.latLngs.length - 1], - L.bind(function(to) { + L.bind(function (to) { var distance = document.getElementById('distance').innerHTML; if (this.tracknameAllowedChars) { distance = distance.replace(',', '.'); // temp. fix (#202) @@ -88,13 +88,13 @@ BR.Export = L.Class.extend({ } else if (from === to) { trackname.value = i18next.t('export.route-loop', { from: from, - distance: distance + distance: distance, }); } else { trackname.value = i18next.t('export.route-from-to', { from: from, to: to, - distance: distance + distance: distance, }); } @@ -109,14 +109,14 @@ BR.Export = L.Class.extend({ ); }, - _getCityAtPosition: function(lonlat, cb) { + _getCityAtPosition: function (lonlat, cb) { var url = L.Util.template( 'https://nominatim.openstreetmap.org/reverse?lon={lng}&lat={lat}&format=json', lonlat ); BR.Util.get( url, - L.bind(function(err, response) { + L.bind(function (err, response) { try { var addr = JSON.parse(response).address; cb(addr.village || addr.town || addr.hamlet || addr.city_district || addr.city); @@ -128,7 +128,7 @@ BR.Export = L.Class.extend({ ); }, - _keydownListener: function(e) { + _keydownListener: function (e) { if ( BR.Util.keyboardShortcutsAllowed(e) && e.keyCode === this.options.shortcut.export && @@ -137,9 +137,9 @@ BR.Export = L.Class.extend({ this._generateTrackname(); $('#export').modal('show'); } - } + }, }); -BR.export = function() { +BR.export = function () { return new BR.Export(); }; diff --git a/js/control/Itinerary.js b/js/control/Itinerary.js index b4a9fa3..8a4c562 100644 --- a/js/control/Itinerary.js +++ b/js/control/Itinerary.js @@ -1,10 +1,10 @@ BR.Itinerary = L.Class.extend({ - initialize: function() { + initialize: function () { this._content = document.getElementById('itinerary'); this.update(); }, - update: function(polyline, segments) { + update: function (polyline, segments) { var i, j, iter, @@ -20,5 +20,5 @@ BR.Itinerary = L.Class.extend({ html += ''; this._content.innerHTML = html; - } + }, }); diff --git a/js/control/Layers.js b/js/control/Layers.js index 788917f..0171d2f 100644 --- a/js/control/Layers.js +++ b/js/control/Layers.js @@ -1,5 +1,5 @@ BR.Layers = L.Class.extend({ - _loadLayers: function() { + _loadLayers: function () { this._customLayers = {}; if (BR.Util.localStorageAvailable()) { @@ -10,13 +10,13 @@ BR.Layers = L.Class.extend({ } }, - _loadTable: function() { + _loadTable: function () { var layersData = []; for (layer in this._customLayers) { layersData.push([ layer, this._customLayers[layer].layer._url, - this._customLayers[layer].isOverlay ? 'Overlay' : 'Layer' + this._customLayers[layer].isOverlay ? 'Overlay' : 'Layer', ]); } if (this._layersTable != null) { @@ -29,17 +29,17 @@ BR.Layers = L.Class.extend({ searching: false, paging: false, language: { - emptyTable: i18next.t('sidebar.layers.table.empty') + emptyTable: i18next.t('sidebar.layers.table.empty'), }, columns: [ { title: i18next.t('sidebar.layers.table.name') }, { title: i18next.t('sidebar.layers.table.URL') }, - { title: i18next.t('sidebar.layers.table.type') } - ] + { title: i18next.t('sidebar.layers.table.type') }, + ], }); }, - init: function(map, layersControl, baseLayers, overlays) { + init: function (map, layersControl, baseLayers, overlays) { this._layersControl = layersControl; this._map = map; this._layers = {}; @@ -54,7 +54,7 @@ BR.Layers = L.Class.extend({ this._loadTable(); var table = this._layersTable; - $('#custom_layers_table tbody').on('click', 'tr', function() { + $('#custom_layers_table tbody').on('click', 'tr', function () { if ($(this).hasClass('selected')) { $(this).removeClass('selected'); } else { @@ -63,40 +63,37 @@ BR.Layers = L.Class.extend({ } }); - L.DomUtil.get('custom_layers_button').onclick = function() { + L.DomUtil.get('custom_layers_button').onclick = function () { $('#custom_layers').modal(); }; }, - _remove: function(evt) { + _remove: function (evt) { var row = this._layersTable.row('.selected').data(); if (row != null) { var name = row[0]; this._layersControl.removeLayer(this._customLayers[name].layer); this._map.removeLayer(this._customLayers[name].layer); delete this._customLayers[name]; - this._layersTable - .row('.selected') - .remove() - .draw(false); + this._layersTable.row('.selected').remove().draw(false); this._sync(); } }, - _addFromInput: function(isOverlay) { + _addFromInput: function (isOverlay) { var layer_name = L.DomUtil.get('layer_name').value; var layer_url = L.DomUtil.get('layer_url').value; if (layer_name.length > 0 && layer_url.length > 0) this._addLayer(layer_name, layer_url, isOverlay); }, - _addBaseLayer: function(evt) { + _addBaseLayer: function (evt) { this._addFromInput(false); }, - _addOverlay: function(evt) { + _addOverlay: function (evt) { this._addFromInput(true); }, - _addLayer: function(layerName, layerUrl, isOverlay) { + _addLayer: function (layerName, layerUrl, isOverlay) { if (layerName in this._layers) return; if (layerName in this._customLayers) return; @@ -106,7 +103,7 @@ BR.Layers = L.Class.extend({ this._customLayers[layerName] = { layer: layer, - isOverlay: isOverlay + isOverlay: isOverlay, }; if (isOverlay) { @@ -123,15 +120,15 @@ BR.Layers = L.Class.extend({ } }, - _sync: function() { + _sync: function () { if (BR.Util.localStorageAvailable()) { localStorage.setItem( 'map/customLayers', - JSON.stringify(this._customLayers, function(k, v) { + JSON.stringify(this._customLayers, function (k, v) { // dont write Leaflet.Layer in localStorage; simply keep the URL return v._url || v; }) ); } - } + }, }); diff --git a/js/control/LayersTab.js b/js/control/LayersTab.js index f39bbf9..872ec47 100644 --- a/js/control/LayersTab.js +++ b/js/control/LayersTab.js @@ -3,13 +3,13 @@ BR.LayersTab = BR.ControlLayers.extend({ previewBounds: null, saveLayers: [], - initialize: function(layersConfig, baseLayers, overlays, options) { + initialize: function (layersConfig, baseLayers, overlays, options) { L.Control.Layers.prototype.initialize.call(this, baseLayers, overlays, options); this.layersConfig = layersConfig; }, - addTo: function(map) { + addTo: function (map) { this._map = map; this.onAdd(map); @@ -22,19 +22,19 @@ BR.LayersTab = BR.ControlLayers.extend({ return this; }, - onAdd: function(map) { + onAdd: function (map) { BR.ControlLayers.prototype.onAdd.call(this, map); map.on('baselayerchange overlayadd overlayremove', this.storeActiveLayers, this); }, - onRemove: function(map) { + onRemove: function (map) { BR.ControlLayers.prototype.onRemove.call(this, map); map.off('baselayerchange overlayadd overlayremove', this.storeActiveLayers, this); }, - initOpacitySlider: function(map) { + initOpacitySlider: function (map) { var self = this; var overlayOpacitySlider = new BR.OpacitySlider({ id: 'overlay', @@ -42,7 +42,7 @@ BR.LayersTab = BR.ControlLayers.extend({ orientation: 'horizontal', defaultValue: 1, title: i18next.t('layers.opacity-slider'), - callback: function(opacity) { + callback: function (opacity) { for (var i = 0; i < self._layers.length; i++) { if (!self._layers[i].overlay || !map.hasLayer(self._layers[i].layer)) { continue; @@ -53,20 +53,20 @@ BR.LayersTab = BR.ControlLayers.extend({ self._layers[i].layer.setStyle({ opacity: opacity }); } } - } + }, }); L.DomUtil.get('leaflet-control-layers-overlays-opacity-slider').appendChild(overlayOpacitySlider.getElement()); }, - initButtons: function() { - var expandTree = function(e) { + initButtons: function () { + var expandTree = function (e) { this.jstree.open_all(); }; - var collapseTree = function(e) { + var collapseTree = function (e) { this.jstree.close_all(); }; - var toggleOptionalLayers = function(e) { + var toggleOptionalLayers = function (e) { var button = L.DomUtil.get('optional_layers_button'); var treeButtons = L.DomUtil.get('tree-button-group'); var div = L.DomUtil.get('optional-layers'); @@ -86,12 +86,12 @@ BR.LayersTab = BR.ControlLayers.extend({ L.DomUtil.get('optional_layers_button').onclick = L.bind(toggleOptionalLayers, this); }, - initJsTree: function() { + initJsTree: function () { var layerIndex = BR.layerIndex; var treeData = this.toJsTree(BR.confLayers.tree); var oldSelected = null; - var onSelectNode = function(e, data) { + var onSelectNode = function (e, data) { var layerData = layerIndex[data.node.id]; var selected = data.selected[0]; @@ -103,12 +103,12 @@ BR.LayersTab = BR.ControlLayers.extend({ } }; - var onDeselectNode = function(e, data) { + var onDeselectNode = function (e, data) { this.hidePreview(); oldSelected = null; }; - var onCheckNode = function(e, data) { + var onCheckNode = function (e, data) { var layerData = layerIndex[data.node.id]; var layer = this.createLayer(layerData); var name = layerData.properties.name; @@ -124,12 +124,12 @@ BR.LayersTab = BR.ControlLayers.extend({ var ele = document.getElementById(data.node.a_attr.id); ele.classList.add('added'); - setTimeout(function() { + setTimeout(function () { ele.classList.remove('added'); }, 1000); }; - var onUncheckNode = function(e, data) { + var onUncheckNode = function (e, data) { var obj = this.getLayerById(data.node.id); if (!obj) return; @@ -146,7 +146,7 @@ BR.LayersTab = BR.ControlLayers.extend({ var ele = document.getElementById(data.node.a_attr.id); ele.classList.add('removed'); - setTimeout(function() { + setTimeout(function () { ele.classList.remove('removed'); }, 1000); }; @@ -156,30 +156,30 @@ BR.LayersTab = BR.ControlLayers.extend({ .on('deselect_node.jstree', L.bind(onDeselectNode, this)) .on('check_node.jstree', L.bind(onCheckNode, this)) .on('uncheck_node.jstree', L.bind(onUncheckNode, this)) - .on('ready.jstree', function(e, data) { + .on('ready.jstree', function (e, data) { data.instance.open_all(); }) .jstree({ plugins: ['checkbox'], checkbox: { whole_node: false, - tie_selection: false + tie_selection: false, }, core: { multiple: false, themes: { icons: false, - dots: false + dots: false, }, - data: treeData - } + data: treeData, + }, }); this.jstree = $('#optional-layers-tree').jstree(true); }, - toJsTree: function(layerTree) { + toJsTree: function (layerTree) { var data = { - children: [] + children: [], }; var self = this; @@ -187,9 +187,9 @@ BR.LayersTab = BR.ControlLayers.extend({ var rootNode = { text: i18next.t('sidebar.layers.category.' + name, name), state: { - disabled: true + disabled: true, }, - children: [] + children: [], }; return rootNode; } @@ -217,8 +217,8 @@ BR.LayersTab = BR.ControlLayers.extend({ id: id, text: getText(props, parent), state: { - checked: self.layersConfig.isDefaultLayer(id, props.overlay) - } + checked: self.layersConfig.isDefaultLayer(id, props.overlay), + }, }; } return childNode; @@ -262,7 +262,7 @@ BR.LayersTab = BR.ControlLayers.extend({ return data.children; }, - storeDefaultLayers: function() { + storeDefaultLayers: function () { var baseLayers = []; var overlays = []; @@ -284,7 +284,7 @@ BR.LayersTab = BR.ControlLayers.extend({ this.layersConfig.storeDefaultLayers(baseLayers, overlays); }, - createLayer: function(layerData) { + createLayer: function (layerData) { var layer = this.layersConfig.createLayer(layerData); var overlay = layerData.properties.overlay; @@ -294,7 +294,7 @@ BR.LayersTab = BR.ControlLayers.extend({ return layer; }, - getLayerById: function(id) { + getLayerById: function (id) { for (var i = 0; i < this._layers.length; i++) { var obj = this._layers[i]; if (obj.layer.id === id) { @@ -305,7 +305,7 @@ BR.LayersTab = BR.ControlLayers.extend({ return null; }, - getLayerByLegacyName: function(legacyName) { + getLayerByLegacyName: function (legacyName) { var obj = null; var id = this.layersConfig.legacyNameToIdMap[legacyName]; @@ -316,7 +316,7 @@ BR.LayersTab = BR.ControlLayers.extend({ return obj; }, - activateDefaultBaseLayer: function() { + activateDefaultBaseLayer: function () { var index = BR.conf.defaultBaseLayerIndex || 0; var activeBaseLayer = this.getActiveBaseLayer(); if (!activeBaseLayer) { @@ -324,11 +324,11 @@ BR.LayersTab = BR.ControlLayers.extend({ } }, - saveRemoveActiveLayers: function() { + saveRemoveActiveLayers: function () { this.saveLayers = this.removeActiveLayers(); }, - restoreActiveLayers: function(overlaysOnly) { + restoreActiveLayers: function (overlaysOnly) { for (var i = 0; i < this.saveLayers.length; i++) { var obj = this.saveLayers[i]; @@ -345,7 +345,7 @@ BR.LayersTab = BR.ControlLayers.extend({ this.saveLayers = []; }, - removePreviewLayer: function() { + removePreviewLayer: function () { if (this.previewLayer && this._map.hasLayer(this.previewLayer)) { this._map.removeLayer(this.previewLayer); this.previewLayer = null; @@ -354,7 +354,7 @@ BR.LayersTab = BR.ControlLayers.extend({ return false; }, - showPreviewBounds: function(layerData) { + showPreviewBounds: function (layerData) { if (layerData.geometry) { this.previewBounds = L.geoJson(layerData.geometry, { // fill/mask outside of bounds polygon with Leaflet.snogylop @@ -363,30 +363,30 @@ BR.LayersTab = BR.ControlLayers.extend({ renderer: L.svg({ padding: 1 }), color: '#333', fillOpacity: 0.4, - weight: 2 + weight: 2, }).addTo(this._map); } }, - removePreviewBounds: function() { + removePreviewBounds: function () { if (this.previewBounds && this._map.hasLayer(this.previewBounds)) { this._map.removeLayer(this.previewBounds); this.previewBounds = null; } }, - deselectNode: function() { + deselectNode: function () { var selected = this.jstree.get_selected(); if (selected.length > 0) { this.jstree.deselect_node(selected[0]); } }, - onBaselayerchange: function() { + onBaselayerchange: function () { // execute after current input click handler, // otherwise added overlay checkbox state doesn't update setTimeout( - L.Util.bind(function() { + L.Util.bind(function () { this.removePreviewBounds(); this.removePreviewLayer(); this.restoreActiveLayers(true); @@ -396,7 +396,7 @@ BR.LayersTab = BR.ControlLayers.extend({ ); }, - showPreview: function(layerData) { + showPreview: function (layerData) { var layer = this.createLayer(layerData); this._map.addLayer(layer); this.removePreviewBounds(); @@ -411,7 +411,7 @@ BR.LayersTab = BR.ControlLayers.extend({ L.DomUtil.get('preview').hidden = false; }, - hidePreview: function(layer) { + hidePreview: function (layer) { this._map.off('baselayerchange', this.onBaselayerchange, this); this.removePreviewBounds(); this.removePreviewLayer(); @@ -420,11 +420,11 @@ BR.LayersTab = BR.ControlLayers.extend({ L.DomUtil.get('preview').hidden = true; }, - toLayerString: function(obj) { + toLayerString: function (obj) { return obj.layer.id ? obj.layer.id : obj.name; }, - getLayerFromString: function(layerString) { + getLayerFromString: function (layerString) { var obj = this.getLayerById(layerString); if (!obj) { @@ -440,11 +440,11 @@ BR.LayersTab = BR.ControlLayers.extend({ return obj; }, - storeActiveLayers: function() { + storeActiveLayers: function () { if (BR.Util.localStorageAvailable()) { var objList = this.getActiveLayers(); var idList = objList.map( - L.bind(function(obj) { + L.bind(function (obj) { return this.toLayerString(obj); }, this) ); @@ -454,7 +454,7 @@ BR.LayersTab = BR.ControlLayers.extend({ } }, - loadActiveLayers: function() { + loadActiveLayers: function () { if (BR.Util.localStorageAvailable()) { var item = localStorage.getItem('map/activeLayers'); @@ -471,9 +471,9 @@ BR.LayersTab = BR.ControlLayers.extend({ } } } - } + }, }); -BR.layersTab = function(baseLayers, overlays, options) { +BR.layersTab = function (baseLayers, overlays, options) { return new BR.LayersTab(baseLayers, overlays, options); }; diff --git a/js/control/Message.js b/js/control/Message.js index b71c5aa..96f99ee 100644 --- a/js/control/Message.js +++ b/js/control/Message.js @@ -2,15 +2,15 @@ BR.Message = L.Class.extend({ options: { // true to manually attach click event to close button, // Bootstrap data-api's auto-initialization doesn't work in Controls because of stopPropagation - alert: false + alert: false, }, - initialize: function(id, options) { + initialize: function (id, options) { L.setOptions(this, options); this.id = id; }, - _show: function(msg, type) { + _show: function (msg, type) { var ele = L.DomUtil.get(this.id), iconClass = type === 'warning' ? 'fa-exclamation-triangle' : 'fa-times-circle', alertClass = type === 'warning' ? 'alert-warning' : 'alert-danger'; @@ -35,20 +35,30 @@ BR.Message = L.Class.extend({ } }, - hide: function() { + hide: function () { $('#' + this.id + ' .alert').alert('close'); }, - showError: function(err) { - if (err == 'Error: target island detected for section 0\n') { + showError: function (err) { + if (err && err.message) err = err.message; + + if (err == 'target island detected for section 0\n') { + err = i18next.t('warning.no-route-found'); + } else if (err == 'no track found at pass=0\n') { + err = i18next.t('warning.no-route-found'); + } else if (err == 'to-position not mapped in existing datafile\n') { + err = i18next.t('warning.invalid-route-to'); + } else if (err == 'from-position not mapped in existing datafile\n') { + err = i18next.t('warning.invalid-route-from'); + } else if (err && err.startsWith('null description for: ')) { err = i18next.t('warning.no-route-found'); } this._show(err, 'error'); }, - showWarning: function(msg) { + showWarning: function (msg) { this._show(msg, 'warning'); - } + }, }); // static instance as global control diff --git a/js/control/OpacitySlider.js b/js/control/OpacitySlider.js index e675b2c..26fbd1b 100644 --- a/js/control/OpacitySlider.js +++ b/js/control/OpacitySlider.js @@ -5,10 +5,10 @@ BR.OpacitySlider = L.Class.extend({ orientation: 'vertical', defaultValue: BR.conf.defaultOpacity, title: '', - callback: function(opacity) {} + callback: function (opacity) {}, }, - initialize: function(options) { + initialize: function (options) { L.setOptions(this, options); var input = (this.input = $('')), @@ -30,12 +30,12 @@ BR.OpacitySlider = L.Class.extend({ orientation: this.options.orientation, reversed: this.options.reversed, selection: this.options.reversed ? 'before' : 'after', // inverted, serves as track style, see css - tooltip: 'hide' + tooltip: 'hide', }) - .on('slide slideStop', { self: this }, function(evt) { + .on('slide slideStop', { self: this }, function (evt) { evt.data.self.options.callback(evt.value / 100); }) - .on('slideStop', { self: this }, function(evt) { + .on('slideStop', { self: this }, function (evt) { if (BR.Util.localStorageAvailable()) { localStorage['opacitySliderValue' + evt.data.self.options.id] = evt.value; } @@ -51,19 +51,19 @@ BR.OpacitySlider = L.Class.extend({ } }, - _keydownListener: function(e) { + _keydownListener: function (e) { if (BR.Util.keyboardShortcutsAllowed(e) && e.keyCode === this.options.muteKeyCode) { this.options.callback(0); } }, - _keyupListener: function(e) { + _keyupListener: function (e) { if (BR.Util.keyboardShortcutsAllowed(e) && e.keyCode === this.options.muteKeyCode) { this.options.callback(this.input.val() / 100); } }, - getElement: function() { + getElement: function () { return this.input.slider('getElement'); - } + }, }); diff --git a/js/control/OpacitySliderControl.js b/js/control/OpacitySliderControl.js index 14603cf..8532e3e 100644 --- a/js/control/OpacitySliderControl.js +++ b/js/control/OpacitySliderControl.js @@ -1,9 +1,9 @@ BR.OpacitySliderControl = L.Control.extend({ options: { - position: 'topleft' + position: 'topleft', }, - onAdd: function(map) { + onAdd: function (map) { var container = L.DomUtil.create('div', 'leaflet-bar control-slider'); // prevent also dragging map in Chrome @@ -21,22 +21,22 @@ BR.OpacitySliderControl = L.Control.extend({ var slider = new BR.OpacitySlider(this.options); container.appendChild(slider.getElement()); - var stopClickAfterSlide = function(evt) { + var stopClickAfterSlide = function (evt) { L.DomEvent.stop(evt); removeStopClickListeners(); }; - var removeStopClickListeners = function() { + var removeStopClickListeners = function () { document.removeEventListener('click', stopClickAfterSlide, true); document.removeEventListener('mousedown', removeStopClickListeners, true); }; slider.input - .on('slideStart', function(evt) { + .on('slideStart', function (evt) { // dragging beyond slider control selects zoom control +/- text in Firefox L.DomUtil.disableTextSelection(); }) - .on('slideStop', { self: this }, function(evt) { + .on('slideStop', { self: this }, function (evt) { L.DomUtil.enableTextSelection(); // When dragging outside slider and over map, click event after mouseup @@ -49,5 +49,5 @@ BR.OpacitySliderControl = L.Control.extend({ }); return container; - } + }, }); diff --git a/js/control/Profile.js b/js/control/Profile.js index 2c17ccd..e380d56 100644 --- a/js/control/Profile.js +++ b/js/control/Profile.js @@ -2,15 +2,15 @@ BR.Profile = L.Evented.extend({ cache: {}, saveWarningShown: false, - initialize: function() { + initialize: function () { var textArea = L.DomUtil.get('profile_upload'); this.editor = CodeMirror.fromTextArea(textArea, { - lineNumbers: true + lineNumbers: true, }); $('#profileEditorTabs a[data-toggle="tab"]').on( 'shown.bs.tab', - L.bind(function(e) { + L.bind(function (e) { this._activateSecondaryTab(); }, this) ); @@ -22,11 +22,11 @@ BR.Profile = L.Evented.extend({ this.pinned = L.DomUtil.get('profile-pinned'); this.message = new BR.Message('profile_message', { - alert: true + alert: true, }); }, - clear: function(evt) { + clear: function (evt) { var button = evt.target || evt.srcElement; evt.preventDefault(); @@ -38,7 +38,7 @@ BR.Profile = L.Evented.extend({ button.blur(); }, - update: function(options) { + update: function (options) { var profileName = options.profile, profileUrl, empty = !this.editor.getValue(), @@ -53,7 +53,7 @@ BR.Profile = L.Evented.extend({ profileUrl = BR.conf.profilesUrl + profileName + '.brf'; BR.Util.get( profileUrl, - L.bind(function(err, profileText) { + L.bind(function (err, profileText) { if (err) { console.warn('Error getting profile from "' + profileUrl + '": ' + err); return; @@ -82,15 +82,15 @@ BR.Profile = L.Evented.extend({ } }, - show: function() { + show: function () { this.editor.refresh(); }, - onResize: function() { + onResize: function () { this.editor.refresh(); }, - _upload: function(evt) { + _upload: function (evt) { var button = evt.target || evt.srcElement, profile = this.editor.getValue(); @@ -99,7 +99,7 @@ BR.Profile = L.Evented.extend({ this.fire('update', { profileText: profile, - callback: L.bind(function(err, profileId, profileText) { + callback: L.bind(function (err, profileId, profileText) { $(button).blur(); if (!err) { this.profileName = profileId; @@ -110,12 +110,12 @@ BR.Profile = L.Evented.extend({ this.saveWarningShown = true; } } - }, this) + }, this), }); }, - _buildCustomProfile: function(profileText) { - document.querySelectorAll('#profile_params input, #profile_params select').forEach(function(input) { + _buildCustomProfile: function (profileText) { + document.querySelectorAll('#profile_params input, #profile_params select').forEach(function (input) { var name = input.name; var value; if (input.type == 'checkbox') { @@ -129,28 +129,28 @@ BR.Profile = L.Evented.extend({ name + '\\s*=?\\s*)([\\w.]*)(\\s*#\\s*%(.*)%\\s*(\\|\\s*(.*)\\s*\\|\\s*(.*)\\s*)?[\\r\\n])' ); - profileText = profileText.replace(re, function(match, p1, p2, p3) { + profileText = profileText.replace(re, function (match, p1, p2, p3) { return p1 + value + p3; }); }); return profileText; }, - _save: function(evt) { + _save: function (evt) { var profileText = this._buildCustomProfile(this.editor.getValue()); var that = this; this.fire('update', { profileText: profileText, - callback: function(err, profileId, profileText) { + callback: function (err, profileId, profileText) { if (!err) { that.profileName = profileId; that.cache[profileId] = profileText; } - } + }, }); }, - _setValue: function(profileText) { + _setValue: function (profileText) { profileText = profileText || ''; var clean = this.editor.isClean(); @@ -169,12 +169,12 @@ BR.Profile = L.Evented.extend({ } }, - _buildParamsForm: function(profileText) { + _buildParamsForm: function (profileText) { if (!profileText) return; // Otherwise, create user friendly form var params = {}; - var global = profileText.split('---context:').filter(function(e) { + var global = profileText.split('---context:').filter(function (e) { return e.startsWith('global'); }); if (global && global.length > 0) { @@ -183,7 +183,7 @@ BR.Profile = L.Evented.extend({ // Comment is mandatory var assignRegex = /assign\s*(\w*)\s*=?\s*([\w\.]*)\s*#\s*%(.*)%\s*(\|\s*(.*)\s*\|\s*(.*)\s*)?$/; - global.forEach(function(item) { + global.forEach(function (item) { var match = item.match(assignRegex); var value; if (match) { @@ -198,7 +198,7 @@ BR.Profile = L.Evented.extend({ paramType .slice(1, -1) .split(',') - .forEach(function(option) { + .forEach(function (option) { var splitOption = option.split('='); var value = (splitOption[0] || '').replace(/^\s+|\s+$/g, ''); var description = (splitOption[1] || '').replace(/^\s+|\s+$/g, ''); @@ -230,7 +230,7 @@ BR.Profile = L.Evented.extend({ description: description, type: paramType, value: value, - possible_values: paramValues + possible_values: paramValues, }; } }); @@ -242,7 +242,7 @@ BR.Profile = L.Evented.extend({ paramsSection.append(i18next.t('sidebar.profile.no_easy_configuration_warning')); } - Object.keys(params).forEach(function(param) { + Object.keys(params).forEach(function (param) { var div = document.createElement('div'); var label = document.createElement('label'); @@ -257,7 +257,7 @@ BR.Profile = L.Evented.extend({ label.htmlFor = select.id = 'customize-profile-' + paramName; var paramValues = params[param].possible_values; - Object.keys(paramValues).forEach(function(paramValue) { + Object.keys(paramValues).forEach(function (paramValue) { var option = document.createElement('option'); option.value = paramValue; if (paramValue == params[param].value) { @@ -308,11 +308,11 @@ BR.Profile = L.Evented.extend({ }); }, - _isParamsFormActive: function() { + _isParamsFormActive: function () { return L.DomUtil.get('profile_params_container').classList.contains('active'); }, - _activateSecondaryTab: function() { + _activateSecondaryTab: function () { var profileText = this.editor.getValue(); if (this._isParamsFormActive()) { @@ -320,5 +320,5 @@ BR.Profile = L.Evented.extend({ } else { this._setValue(this._buildCustomProfile(profileText)); } - } + }, }); diff --git a/js/control/RoutingOptions.js b/js/control/RoutingOptions.js index 2ca6b25..cf8f51a 100644 --- a/js/control/RoutingOptions.js +++ b/js/control/RoutingOptions.js @@ -1,11 +1,11 @@ BR.RoutingOptions = L.Evented.extend({ options: { shortcut: { - switch: 71 // char code for 'g' - } + switch: 71, // char code for 'g' + }, }, - initialize: function() { + initialize: function () { $('#profile-alternative').on('changed.bs.select', this._getChangeHandler()); // build option list from config @@ -25,17 +25,17 @@ BR.RoutingOptions = L.Evented.extend({ L.DomEvent.addListener(document, 'keydown', this._keydownListener, this); }, - refreshUI: function() { + refreshUI: function () { // we do not allow to select more than one profile and/or alternative at a time // so we disable the current selected items $('#profile-alternative') .find('option:disabled') - .each(function(index) { + .each(function (index) { $(this).prop('disabled', false); }); $('#profile-alternative') .find('option:selected') - .each(function(index) { + .each(function (index) { $(this).prop('disabled', true); }); @@ -51,21 +51,21 @@ BR.RoutingOptions = L.Evented.extend({ button.title = button.title + i18next.t('navbar.profile-tooltip', { key: 'G' }); }, - getOptions: function() { + getOptions: function () { var profile = $('#profile option:selected'), alternative = $('#alternative option:selected'); this.refreshUI(); return { profile: profile.val(), - alternative: alternative.val() + alternative: alternative.val(), }; }, - setOptions: function(options) { + setOptions: function (options) { var values = [ options.profile ? options.profile : $('#profile option:selected').val(), - options.alternative ? options.alternative : $('#alternative option:selected').val() + options.alternative ? options.alternative : $('#alternative option:selected').val(), ]; $('.selectpicker').selectpicker('val', values); this.refreshUI(); @@ -76,7 +76,7 @@ BR.RoutingOptions = L.Evented.extend({ } }, - setCustomProfile: function(profile, noUpdate) { + setCustomProfile: function (profile, noUpdate) { var profiles_grp, option; profiles_grp = L.DomUtil.get('profile'); @@ -87,7 +87,7 @@ BR.RoutingOptions = L.Evented.extend({ if (profile) { $('#profile') .find('option:selected') - .each(function(index) { + .each(function (index) { $(this).prop('selected', false); }); } else if (option.selected) { @@ -102,7 +102,7 @@ BR.RoutingOptions = L.Evented.extend({ } }, - getCustomProfile: function() { + getCustomProfile: function () { var profiles_grp = L.DomUtil.get('profile'), option = profiles_grp.children[0], profile = null; @@ -113,17 +113,17 @@ BR.RoutingOptions = L.Evented.extend({ return profile; }, - _getChangeHandler: function() { - return L.bind(function(evt) { + _getChangeHandler: function () { + return L.bind(function (evt) { this.fire('update', { options: this.getOptions() }); }, this); }, - _keydownListener: function(e) { + _keydownListener: function (e) { if (BR.Util.keyboardShortcutsAllowed(e) && e.keyCode === this.options.shortcut.switch) { if (!$('#profile-alternative-form .dropdown').hasClass('show')) { $('#profile-alternative-form button').click(); } } - } + }, }); diff --git a/js/control/TrackAnalysis.js b/js/control/TrackAnalysis.js index 5fe4c46..2f230c9 100644 --- a/js/control/TrackAnalysis.js +++ b/js/control/TrackAnalysis.js @@ -20,8 +20,8 @@ BR.TrackAnalysis = L.Class.extend({ opacity: 0.8, weight: 8, // show above quality coding (pane defined in RoutingPathQuality.js) - pane: 'routingQualityPane' - } + pane: 'routingQualityPane', + }, }, /** @@ -35,7 +35,7 @@ BR.TrackAnalysis = L.Class.extend({ * @param {Map} map * @param {object} options */ - initialize: function(map, options) { + initialize: function (map, options) { this.map = map; L.setOptions(this, options); }, @@ -60,7 +60,7 @@ BR.TrackAnalysis = L.Class.extend({ /** * Called by BR.Sidebar when tab is activated */ - show: function() { + show: function () { this.active = true; this.options.requestUpdate(this); }, @@ -68,7 +68,7 @@ BR.TrackAnalysis = L.Class.extend({ /** * Called by BR.Sidebar when tab is deactivated */ - hide: function() { + hide: function () { this.active = false; }, @@ -84,7 +84,7 @@ BR.TrackAnalysis = L.Class.extend({ * @param {Polyline} polyline * @param {Array} segments */ - update: function(polyline, segments) { + update: function (polyline, segments) { if (!this.active) { return; } @@ -121,11 +121,11 @@ BR.TrackAnalysis = L.Class.extend({ * @param segments * @returns {Object} */ - calcStats: function(polyline, segments) { + calcStats: function (polyline, segments) { var analysis = { highway: {}, surface: {}, - smoothness: {} + smoothness: {}, }; this.totalRouteDistance = 0.0; @@ -158,7 +158,7 @@ BR.TrackAnalysis = L.Class.extend({ ), name: wayTagParts[1], subtype: trackType, - distance: 0.0 + distance: 0.0, }; } analysis.highway[highwayType].distance += parseFloat( @@ -175,7 +175,7 @@ BR.TrackAnalysis = L.Class.extend({ ), name: wayTagParts[1], subtype: '', - distance: 0.0 + distance: 0.0, }; } analysis[wayTagParts[0]][wayTagParts[1]].distance += parseFloat( @@ -198,7 +198,7 @@ BR.TrackAnalysis = L.Class.extend({ * * @returns {Object} */ - sortAnalysisData: function(analysis) { + sortAnalysisData: function (analysis) { var analysisSortable = {}; var result = {}; @@ -217,7 +217,7 @@ BR.TrackAnalysis = L.Class.extend({ analysisSortable[type].push(analysis[type][name]); } - analysisSortable[type].sort(function(a, b) { + analysisSortable[type].sort(function (a, b) { return b.distance - a.distance; }); @@ -236,7 +236,7 @@ BR.TrackAnalysis = L.Class.extend({ * @param {string[]} wayTags * @returns {string} */ - getTrackType: function(wayTags) { + getTrackType: function (wayTags) { for (var i = 0; i < wayTags.length; i++) { var wayTagParts = wayTags[i].split('='); if (wayTagParts[0] === 'tracktype') { @@ -250,7 +250,7 @@ BR.TrackAnalysis = L.Class.extend({ /** * @param {Object} analysis */ - render: function(analysis) { + render: function (analysis) { var $content = $('#track_statistics'); $content.html(''); @@ -275,7 +275,7 @@ BR.TrackAnalysis = L.Class.extend({ * @param {Array} data * @returns {jQuery} */ - renderTable: function(type, data) { + renderTable: function (type, data) { var index; var $table = $( '
' @@ -366,11 +366,11 @@ BR.TrackAnalysis = L.Class.extend({ * @param {number} meters * @returns {string} */ - formatDistance: function(meters) { + formatDistance: function (meters) { return (meters / 1000).toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 }); }, - handleHover: function(event) { + handleHover: function (event) { var $tableRow = $(event.currentTarget); var $table = $tableRow.parents('table').first(); var dataType = $table.data('type'); @@ -382,15 +382,13 @@ BR.TrackAnalysis = L.Class.extend({ this.highlightedSegments = L.layerGroup(polylinesForDataType).addTo(this.map); }, - handleHoverOut: function() { + handleHoverOut: function () { this.map.removeLayer(this.highlightedSegments); }, - toggleSelected: function(event) { + toggleSelected: function (event) { var tableRow = event.currentTarget; - var $table = $(tableRow) - .parents('table') - .first(); + var $table = $(tableRow).parents('table').first(); var dataType = $table.data('type'); var dataName = $(tableRow).data('name'); var trackType = $(tableRow).data('subtype'); @@ -426,7 +424,7 @@ BR.TrackAnalysis = L.Class.extend({ * * @returns {Polyline[]} */ - getPolylinesForDataType: function(dataType, dataName, trackType) { + getPolylinesForDataType: function (dataType, dataName, trackType) { var polylines = []; var trackLatLngs = this.trackPolyline.getLatLngs(); @@ -461,7 +459,7 @@ BR.TrackAnalysis = L.Class.extend({ * * @returns {boolean} */ - wayTagsMatchesData: function(wayTags, dataType, dataName, trackType) { + wayTagsMatchesData: function (wayTags, dataType, dataName, trackType) { var parsed = this.parseWayTags(wayTags); switch (dataType) { @@ -502,7 +500,7 @@ BR.TrackAnalysis = L.Class.extend({ * * @returns {object} */ - parseWayTags: function(wayTags) { + parseWayTags: function (wayTags) { var result = {}; var wayTagPairs = wayTags.feature.wayTags.split(' '); @@ -512,5 +510,5 @@ BR.TrackAnalysis = L.Class.extend({ } return result; - } + }, }); diff --git a/js/control/TrackMessages.js b/js/control/TrackMessages.js index d082d1a..ed2f435 100644 --- a/js/control/TrackMessages.js +++ b/js/control/TrackMessages.js @@ -5,10 +5,10 @@ BR.TrackMessages = L.Class.extend({ opacity: 0.8, weight: 8, // show above quality coding (pane defined in RoutingPathQuality.js) - pane: 'routingQualityPane' + pane: 'routingQualityPane', }, // center hovered edge (way segment) on map - syncMap: true + syncMap: true, }, // true when tab is shown, false when hidden @@ -23,7 +23,7 @@ BR.TrackMessages = L.Class.extend({ ElevCost: { title: 'elev$', className: 'dt-body-right' }, TurnCost: { title: 'turn$', className: 'dt-body-right' }, NodeCost: { title: 'node$', className: 'dt-body-right' }, - InitialCost: { title: 'initial$', className: 'dt-body-right' } + InitialCost: { title: 'initial$', className: 'dt-body-right' }, }, /** @@ -36,7 +36,7 @@ BR.TrackMessages = L.Class.extend({ */ trackPolyline: null, - initialize: function(map, options) { + initialize: function (map, options) { L.setOptions(this, options); this._map = map; @@ -48,7 +48,7 @@ BR.TrackMessages = L.Class.extend({ L.DomEvent.on(syncButton, 'click', this._toggleSyncMap, this); }, - update: function(polyline, segments) { + update: function (polyline, segments) { var i, messages, columns, @@ -89,7 +89,7 @@ BR.TrackMessages = L.Class.extend({ // (^= minimum height with flexbox?) scrollY: 50, scrollX: true, - order: [] + order: [], }); // highlight track segment (graph edge) on row hover @@ -98,23 +98,21 @@ BR.TrackMessages = L.Class.extend({ $('#datatable tbody').on('click', 'tr', L.bind(this._toggleSelected, this)); }, - show: function() { + show: function () { this.active = true; this.options.requestUpdate(this); }, - hide: function() { + hide: function () { this.active = false; }, - _destroyTable: function() { + _destroyTable: function () { var ele; if ($.fn.DataTable.isDataTable('#datatable')) { // destroy option too slow on update, really remove elements with destroy method - $('#datatable') - .DataTable() - .destroy(true); + $('#datatable').DataTable().destroy(true); // recreate original table element, destroy removes all ele = document.createElement('table'); @@ -126,7 +124,7 @@ BR.TrackMessages = L.Class.extend({ return ele || document.getElementById('datatable'); }, - _getColumns: function(headings, data) { + _getColumns: function (headings, data) { var columns = [], defaultOptions, options, @@ -135,7 +133,7 @@ BR.TrackMessages = L.Class.extend({ for (k = 0; k < headings.length; k++) { defaultOptions = { title: headings[k], - visible: !emptyColumns[k] + visible: !emptyColumns[k], }; options = L.extend(defaultOptions, this.columnOptions[headings[k]]); columns.push(options); @@ -143,7 +141,7 @@ BR.TrackMessages = L.Class.extend({ return columns; }, - _getEmptyColumns: function(data) { + _getEmptyColumns: function (data) { var empty = new Array(data[0].length), i; @@ -151,8 +149,8 @@ BR.TrackMessages = L.Class.extend({ empty[i] = true; } - data.forEach(function(row) { - row.forEach(function(val, i) { + data.forEach(function (row) { + row.forEach(function (val, i) { empty[i] = empty[i] && !val; }); }); @@ -160,7 +158,7 @@ BR.TrackMessages = L.Class.extend({ return empty; }, - _getRowEdge: function(tr) { + _getRowEdge: function (tr) { var row = this._table.row($(tr)), trackLatLngs = this.trackPolyline.getLatLngs(), startIndex = row.index() > 0 ? this.trackEdges.edges[row.index() - 1] : 0, @@ -170,7 +168,7 @@ BR.TrackMessages = L.Class.extend({ return L.polyline(edgeLatLngs, this.options.edgeStyle); }, - _handleHover: function(evt) { + _handleHover: function (evt) { var tr = evt.currentTarget; this._hoveredEdge = this._getRowEdge(tr).addTo(this._map); @@ -179,12 +177,12 @@ BR.TrackMessages = L.Class.extend({ } }, - _handleHoverOut: function(evt) { + _handleHoverOut: function (evt) { this._map.removeLayer(this._hoveredEdge); this._hoveredEdge = null; }, - _toggleSelected: function(evt) { + _toggleSelected: function (evt) { var tr = evt.currentTarget; if (tr.classList.toggle('selected')) { @@ -205,10 +203,10 @@ BR.TrackMessages = L.Class.extend({ } }, - _toggleSyncMap: function(evt) { + _toggleSyncMap: function (evt) { var button = evt.currentTarget; button.classList.toggle('active'); this.options.syncMap = !this.options.syncMap; - } + }, }); diff --git a/js/control/TrackStats.js b/js/control/TrackStats.js index 4e33bc5..de6f63f 100644 --- a/js/control/TrackStats.js +++ b/js/control/TrackStats.js @@ -1,5 +1,5 @@ BR.TrackStats = L.Class.extend({ - update: function(polyline, segments) { + update: function (polyline, segments) { if (segments.length == 0) { $('#stats-container').hide(); $('#stats-info').show(); @@ -12,7 +12,7 @@ BR.TrackStats = L.Class.extend({ var stats = this.calcStats(polyline, segments), length1 = L.Util.formatNum(stats.trackLength / 1000, 1).toLocaleString(), length3 = L.Util.formatNum(stats.trackLength / 1000, 3).toLocaleString(undefined, { - minimumFractionDigits: 3 + minimumFractionDigits: 3, }), formattedAscend = stats.filteredAscend.toLocaleString(), formattedPlainAscend = stats.plainAscend.toLocaleString(), @@ -39,14 +39,14 @@ BR.TrackStats = L.Class.extend({ $('#meanenergy').html(meanEnergy); }, - calcStats: function(polyline, segments) { + calcStats: function (polyline, segments) { var stats = { trackLength: 0, filteredAscend: 0, plainAscend: 0, totalTime: 0, totalEnergy: 0, - cost: 0 + cost: 0, }; var i, props; @@ -61,5 +61,5 @@ BR.TrackStats = L.Class.extend({ } return stats; - } + }, }); diff --git a/js/index.js b/js/index.js index b9bba2f..f89dd3d 100644 --- a/js/index.js +++ b/js/index.js @@ -4,7 +4,7 @@ Licensed under the MIT license. */ -(function() { +(function () { var mapContext; function verifyTouchStyle(mapContext) { @@ -34,6 +34,7 @@ drawButton, deleteRouteButton, pois, + circlego, urlHash; // By default bootstrap-select use glyphicons @@ -41,14 +42,14 @@ iconBase: 'fa', tickIcon: 'fa-check', // don't overlap with footer - windowPadding: [0, 0, 40, 0] + windowPadding: [0, 0, 40, 0], }); search = new BR.Search(); map.addControl(search); $('#map .leaflet-control-geocoder > button')[0].title = i18next.t('keyboard.generic-shortcut', { action: '$t(map.geocoder)', - key: 'F' + key: 'F', }); router = L.bRouter(); //brouterCgi dummyRouter @@ -58,55 +59,67 @@ { stateName: 'deactivate-draw', icon: 'fa-pencil active', - onClick: function(control) { + onClick: function (control) { routing.draw(false); control.state('activate-draw'); }, title: i18next.t('keyboard.generic-shortcut', { action: '$t(map.draw-route-stop)', - key: '$t(keyboard.escape)' - }) + key: '$t(keyboard.escape)', + }), }, { stateName: 'activate-draw', icon: 'fa-pencil', - onClick: function(control) { + onClick: function (control) { routing.draw(true); control.state('deactivate-draw'); }, - title: i18next.t('keyboard.generic-shortcut', { action: '$t(map.draw-route-start)', key: 'D' }) - } - ] + title: i18next.t('keyboard.generic-shortcut', { + action: '$t(map.draw-route-start)', + key: 'D', + }), + }, + ], }); var reverseRouteButton = L.easyButton( 'fa-random', - function() { + function () { routing.reverse(); }, - i18next.t('keyboard.generic-shortcut', { action: '$t(map.reverse-route)', key: 'R' }) + i18next.t('keyboard.generic-shortcut', { + action: '$t(map.reverse-route)', + key: 'R', + }) ); var deletePointButton = L.easyButton( '', - function() { + function () { routing.deleteLastPoint(); }, - i18next.t('keyboard.generic-shortcut', { action: '$t(map.delete-last-point)', key: 'Z' }) + i18next.t('keyboard.generic-shortcut', { + action: '$t(map.delete-last-point)', + key: 'Z', + }) ); deleteRouteButton = L.easyButton( 'fa-trash-o', - function() { + function () { clearRoute(); }, - i18next.t('keyboard.generic-shortcut', { action: '$t(map.clear-route)', key: '$t(keyboard.backspace)' }) + i18next.t('keyboard.generic-shortcut', { + action: '$t(map.clear-route)', + key: '$t(keyboard.backspace)', + }) ); L.DomEvent.addListener( document, 'keydown', - function(e) { + function (e) { if (BR.Util.keyboardShortcutsAllowed(e) && !$('.modal.show').length) { if (e.keyCode === 8) { // char code for 'backspace' @@ -128,19 +141,19 @@ inputOptions: [ { text: i18next.t('map.delete-route'), - value: 'route' + value: 'route', }, { text: i18next.t('map.delete-nogo-areas'), - value: 'nogo' + value: 'nogo', }, { text: i18next.t('map.delete-pois'), - value: 'pois' - } + value: 'pois', + }, ], value: ['route'], - callback: function(result) { + callback: function (result) { if (result !== null) { if (result.indexOf('route') !== -1) { routing.clear(); @@ -154,7 +167,7 @@ onUpdate(); urlHash.onMapMove(); } - } + }, }); } @@ -177,14 +190,17 @@ routingOptions = new BR.RoutingOptions(); routingOptions.on('update', updateRoute); - routingOptions.on('update', function(evt) { + routingOptions.on('update', function (evt) { profile.update(evt.options); }); - BR.NogoAreas.MSG_BUTTON = i18next.t('keyboard.generic-shortcut', { action: '$t(map.nogo.draw)', key: 'N' }); + BR.NogoAreas.MSG_BUTTON = i18next.t('keyboard.generic-shortcut', { + action: '$t(map.nogo.draw)', + key: 'N', + }); BR.NogoAreas.MSG_BUTTON_CANCEL = i18next.t('keyboard.generic-shortcut', { action: '$t(map.nogo.cancel)', - key: '$t(keyboard.escape)' + key: '$t(keyboard.escape)', }); BR.NogoAreas.MSG_CREATE = i18next.t('map.nogo.click-drag'); BR.NogoAreas.MSG_DISABLED = i18next.t('map.nogo.edit'); @@ -202,14 +218,14 @@ elevation = new BR.Heightgraph(); profile = new BR.Profile(); - profile.on('update', function(evt) { + profile.on('update', function (evt) { BR.message.hide(); var profileId = routingOptions.getCustomProfile(); - router.uploadProfile(profileId, evt.profileText, function(err, profileId) { + router.uploadProfile(profileId, evt.profileText, function (err, profileId) { if (!err) { routingOptions.setCustomProfile(profileId, true); updateRoute({ - options: routingOptions.getOptions() + options: routingOptions.getOptions(), }); } else { profile.message.showError(err); @@ -224,40 +240,38 @@ } }); }); - profile.on('clear', function(evt) { + profile.on('clear', function (evt) { profile.message.hide(); routingOptions.setCustomProfile(null); }); trackMessages = new BR.TrackMessages(map, { - requestUpdate: requestUpdate + requestUpdate: requestUpdate, }); trackAnalysis = new BR.TrackAnalysis(map, { - requestUpdate: requestUpdate + requestUpdate: requestUpdate, }); routingPathQuality = new BR.RoutingPathQuality(map, layersControl); routing = new BR.Routing({ routing: { - router: L.bind(router.getRouteSegment, router) + router: L.bind(router.getRouteSegment, router), }, - styles: BR.conf.routingStyles + styles: BR.conf.routingStyles, }); - pois = new BR.PoiMarkers({ - routing: routing - }); + pois = new BR.PoiMarkers(routing); exportRoute = new BR.Export(router, pois); - routing.on('routing:routeWaypointEnd routing:setWaypointsEnd', function(evt) { + routing.on('routing:routeWaypointEnd routing:setWaypointsEnd', function (evt) { search.clear(); onUpdate(evt && evt.err); }); - map.on('routing:draw-start', function() { + map.on('routing:draw-start', function () { drawButton.state('deactivate-draw'); }); - map.on('routing:draw-end', function() { + map.on('routing:draw-end', function () { drawButton.state('activate-draw'); }); @@ -298,15 +312,34 @@ listeningTabs: { tab_profile: profile, tab_data: trackMessages, - tab_analysis: trackAnalysis - } + tab_analysis: trackAnalysis, + }, }).addTo(map); if (BR.conf.transit) { sidebar.showPanel('tab_itinerary'); } nogos.addTo(map); - L.easyBar([drawButton, reverseRouteButton, nogos.getButton(), deletePointButton, deleteRouteButton]).addTo(map); + + var circlegoRadius = null; + var lang = i18next.languages.length && i18next.languages[0]; + + if (lang.startsWith('fr')) { + circlegoRadius = 20000; + } + + if (circlegoRadius != null) { + circlego = new BR.CircleGoArea(routing, nogos, pois); + circlego.options.radius = circlegoRadius; + pois.circlego = circlego; + circlego.addTo(map); + } + + var buttons = [drawButton, reverseRouteButton, nogos.getButton()]; + if (circlegoRadius) buttons.push(circlego.getButton()); + buttons.push(deletePointButton, deleteRouteButton); + + L.easyBar(buttons).addTo(map); nogos.preventRoutePointOnCreate(routing); if (BR.keys.strava) { @@ -323,9 +356,12 @@ map.addControl( new BR.OpacitySliderControl({ id: 'route', - title: i18next.t('map.opacity-slider-shortcut', { action: '$t(map.opacity-slider)', key: 'M' }), + title: i18next.t('map.opacity-slider-shortcut', { + action: '$t(map.opacity-slider)', + key: 'M', + }), muteKeyCode: 77, // m - callback: L.bind(routing.setOpacity, routing) + callback: L.bind(routing.setOpacity, routing), }) ); @@ -340,8 +376,8 @@ layersControl.loadActiveLayers(); } - var onHashChangeCb = function(url) { - var url2params = function(s) { + var onHashChangeCb = function (url) { + var url2params = function (s) { s = s.replace(/;/g, '|'); var p = {}; var sep = '&'; @@ -367,13 +403,16 @@ routing.clear(); routing.setWaypoints(opts.lonlats); } - if (opts.pois) { pois.setMarkers(opts.pois); } + if (circlego && opts.circlego) { + circlego.options.radius = opts.circlego[2]; + circlego.setCircle([opts.circlego[0], opts.circlego[1]], opts.polylines != null); + } }; - var onInvalidHashChangeCb = function(params) { + var onInvalidHashChangeCb = function (params) { params = params.replace('zoom=', 'map='); params = params.replace('&lat=', '/'); params = params.replace('&lon=', '/'); @@ -384,8 +423,10 @@ // do not initialize immediately urlHash = new L.Hash(null, null); // this callback is used to append anything in URL after L.Hash wrote #map=zoom/lat/lng/layer - urlHash.additionalCb = function() { - var url = router.getUrl(routing.getWaypoints(), pois.getMarkers(), null).substr('brouter?'.length + 1); + urlHash.additionalCb = function () { + var url = router + .getUrl(routing.getWaypoints(), pois.getMarkers(), circlego ? circlego.getCircle() : null, null) + .substr('brouter?'.length + 1); // by default brouter use | as separator. To make URL more human-readable, we remplace them with ; for users url = url.replace(/\|/g, ';'); @@ -395,12 +436,12 @@ urlHash.onHashChangeCb = onHashChangeCb; urlHash.onInvalidHashChangeCb = onInvalidHashChangeCb; urlHash.init(map, { - layersControl: layersControl + layersControl: layersControl, }); // activate configured default base layer or first if no hash, // only after hash init, by using the same delay - setTimeout(function() { + setTimeout(function () { layersControl.activateDefaultBaseLayer(); }, urlHash.changeDefer); @@ -412,7 +453,7 @@ // delete last waypoint routing.on( 'waypoint:click', - function(evt) { + function (evt) { var r = evt.marker._routing; if (!r.prevMarker && !r.nextMarker) { urlHash.onMapMove(); @@ -422,7 +463,7 @@ ); } - i18next.on('languageChanged', function(detectedLanguage) { + i18next.on('languageChanged', function (detectedLanguage) { // detected + fallbacks, e.g. ["de-DE", "de", "en"] for (i = 0; i < i18next.languages.length; i++) { var language = i18next.languages[i]; @@ -445,14 +486,14 @@ { fallbackLng: 'en', backend: { - loadPath: 'dist/locales/{{lng}}.json' - } + loadPath: 'dist/locales/{{lng}}.json', + }, }, - function(err, t) { + function (err, t) { jqueryI18next.init(i18next, $, { useOptionsAttr: true }); $('html').localize(); $('#aboutLinks').localize({ - privacyPolicyUrl: BR.conf.privacyPolicyUrl || 'https://brouter.de/privacypolicy.html' + privacyPolicyUrl: BR.conf.privacyPolicyUrl || 'https://brouter.de/privacypolicy.html', }); mapContext = BR.Map.initMap(); diff --git a/js/plugin/Bing.js b/js/plugin/Bing.js index f2d071c..4446d05 100644 --- a/js/plugin/Bing.js +++ b/js/plugin/Bing.js @@ -3,14 +3,14 @@ BR.BingLayer = L.BingLayer.extend({ maxZoom: 19, attribution: 'Bing Maps' + - ' (TOU)' + ' (TOU)', }, - initialize: function(key, options) { + initialize: function (key, options) { L.BingLayer.prototype.initialize.call(this, key, options); this._logo = L.control({ position: 'bottomleft' }); - this._logo.onAdd = function(map) { + this._logo.onAdd = function (map) { this._div = L.DomUtil.create('div', 'bing-logo'); this._div.innerHTML = ''; @@ -18,13 +18,13 @@ BR.BingLayer = L.BingLayer.extend({ }; }, - onAdd: function(map) { + onAdd: function (map) { L.BingLayer.prototype.onAdd.call(this, map); map.addControl(this._logo); }, - onRemove: function(map) { + onRemove: function (map) { L.BingLayer.prototype.onRemove.call(this, map); map.removeControl(this._logo); - } + }, }); diff --git a/js/plugin/CircleGoArea.js b/js/plugin/CircleGoArea.js new file mode 100644 index 0000000..41b45a2 --- /dev/null +++ b/js/plugin/CircleGoArea.js @@ -0,0 +1,248 @@ +BR.CircleGoArea = L.Control.extend({ + circleLayer: null, + outsideAreaRenderer: L.svg({ padding: 1 }), + + options: { + radius: 1000, // in meters + shortcut: { + draw: { + enable: 73, // char code for 'i' + disable: 27, // char code for 'ESC' + }, + }, + }, + initialize: function (routing, nogos, pois) { + this.routing = routing; + this.nogos = nogos; + this.pois = pois; + }, + + onAdd: function (map) { + var self = this; + + this.map = map; + this.circleLayer = L.layerGroup([]).addTo(map); + + var radiusKm = (this.options.radius / 1000).toFixed(); + this.drawButton = L.easyButton({ + states: [ + { + stateName: 'activate-circlego', + icon: 'fa-circle-o', + onClick: function () { + self.draw(true); + }, + title: i18next.t('keyboard.generic-shortcut', { + action: i18next.t('map.draw-circlego-start', { radius: radiusKm }), + key: 'I', + }), + }, + { + stateName: 'deactivate-circlego', + icon: 'fa-circle-o active', + onClick: function () { + self.draw(false); + }, + title: i18next.t('keyboard.generic-shortcut', { + action: i18next.t('map.draw-circlego-stop', { radius: radiusKm }), + key: '$t(keyboard.escape)', + }), + }, + ], + }); + + map.on('routing:draw-start', function () { + self.draw(false); + }); + + L.DomEvent.addListener(document, 'keydown', this._keydownListener, this); + + var container = new L.DomUtil.create('div'); + return container; + }, + + draw: function (enable) { + this.drawButton.state(enable ? 'deactivate-circlego' : 'activate-circlego'); + if (enable) { + this.routing.draw(false); + this.pois.draw(false); + this.map.on('click', this.onMapClick, this); + L.DomUtil.addClass(this.map.getContainer(), 'circlego-draw-enabled'); + } else { + this.map.off('click', this.onMapClick, this); + L.DomUtil.removeClass(this.map.getContainer(), 'circlego-draw-enabled'); + } + }, + + _keydownListener: function (e) { + if (!BR.Util.keyboardShortcutsAllowed(e)) { + return; + } + if (e.keyCode === this.options.shortcut.draw.disable) { + this.draw(false); + } else if (e.keyCode === this.options.shortcut.draw.enable) { + this.draw(true); + } + }, + + setNogoCircle: function (center) { + if (center) { + var polygon = this.circleToPolygon(center, this.options.radius); + var geoJson = JSON.stringify(polygon); + $('#nogoJSON').val(geoJson); + $('#nogoBuffer').val(0); + this.nogos.uploadNogos(); + + var polygonClone = JSON.parse(geoJson); + this.setOutsideArea(polygonClone); + } else { + this.nogos.clear(); + this.map.removeLayer(this.outsideArea); + } + }, + + setOutsideArea: function (polygon) { + var inner = polygon.features[0].geometry.coordinates.concat(polygon.features[1].geometry.coordinates); + var world = [ + [180, 90], + [-180, 90], + [-180, -90], + [180, -90], + [180, 90], + ]; + polygon.features[0].geometry.coordinates = [world, inner]; + polygon.features[0].geometry.type = 'Polygon'; + polygon.features.pop(); + + if (this.outsideArea) { + this.map.removeLayer(this.outsideArea); + } + + this.outsideArea = L.geoJson(polygon, { + renderer: this.outsideAreaRenderer, + style: function (feature) { + return { + weight: 2, + color: 'black', + opacity: 0.4, + fillColor: 'black', + fillOpacity: 0.4, + className: 'circlego-outside', + }; + }, + }) + .on('click', L.DomEvent.stop) + .addTo(this.map); + }, + + onMapClick: function (e) { + this.setCircle([e.latlng.lng, e.latlng.lat], false); + }, + + setCircle: function (center, skipNogo) { + var self = this; + var icon = L.VectorMarkers.icon({ + icon: 'home', + markerColor: BR.conf.markerColors.circlego, + }); + var marker = L.marker([center[1], center[0]], { icon: icon, draggable: true, name: name }) + .on('dragend', function (e) { + self.setNogoCircle([e.target.getLatLng().lng, e.target.getLatLng().lat]); + }) + .on('click', function () { + var drawing = self.drawButton.state() == 'deactivate-circlego'; + if (drawing) { + self.circleLayer.removeLayer(marker); + self.setNogoCircle(undefined); + } + }); + + this.clear(); + marker.addTo(this.circleLayer); + if (!skipNogo) { + this.setNogoCircle(center); + } else { + var polygon = this.circleToPolygon(center, this.options.radius); + this.setOutsideArea(polygon); + } + this.draw(false); + }, + + clear: function () { + this.circleLayer.clearLayers(); + }, + + getButton: function () { + return this.drawButton; + }, + + getCircle: function () { + var circle = this.circleLayer.getLayers().map(function (it) { + return it.getLatLng(); + }); + if (circle && circle.length) { + return [circle[0].lng.toFixed(6), circle[0].lat.toFixed(6), this.options.radius].join(','); + } else { + return null; + } + }, + + toRadians: function (angleInDegrees) { + return (angleInDegrees * Math.PI) / 180; + }, + + toDegrees: function (angleInRadians) { + return (angleInRadians * 180) / Math.PI; + }, + + offset: function (c1, distance, bearing) { + var lon1 = this.toRadians(c1[0]); + var lat1 = this.toRadians(c1[1]); + var dByR = distance / 6378137; // distance divided by 6378137 (radius of the earth) wgs84 + var lat = Math.asin(Math.sin(lat1) * Math.cos(dByR) + Math.cos(lat1) * Math.sin(dByR) * Math.cos(bearing)); + var lon = + lon1 + + Math.atan2( + Math.sin(bearing) * Math.sin(dByR) * Math.cos(lat1), + Math.cos(dByR) - Math.sin(lat1) * Math.sin(lat) + ); + return [this.toDegrees(lon), this.toDegrees(lat)]; + }, + + circleToPolygon: function (center, radius, numberOfSegments) { + var n = numberOfSegments ? numberOfSegments : 32; + + var inner = []; + for (var i = 0; i < n; ++i) { + inner.push(this.offset(center, radius, (2 * Math.PI * -i) / n)); + } + inner.push(inner[0]); + + /* hack: it seems there is a bug when using a single closed ring line, + cf. https://github.com/nrenner/brouter-web/issues/349#issue-755514458 + so instead we use 2 half rings to ensure we properly close the area */ + return { + type: 'FeatureCollection', + features: [ + { + type: 'Feature', + properties: {}, + geometry: { + type: 'LineString', + coordinates: inner.slice(n / 2 - 1), + }, + }, + { + type: 'Feature', + properties: {}, + geometry: { + type: 'LineString', + coordinates: inner.slice(0, n / 2 + 1), + }, + }, + ], + }; + }, +}); + +BR.CircleGoArea.include(L.Evented.prototype); diff --git a/js/plugin/Heightgraph.js b/js/plugin/Heightgraph.js index aea4348..f0ebb3e 100644 --- a/js/plugin/Heightgraph.js +++ b/js/plugin/Heightgraph.js @@ -1,4 +1,4 @@ -BR.Heightgraph = function(map, layersControl, routing, pois) { +BR.Heightgraph = function (map, layersControl, routing, pois) { Heightgraph = L.Control.Heightgraph.extend({ options: { width: $('#map').outerWidth(), @@ -6,64 +6,64 @@ BR.Heightgraph = function(map, layersControl, routing, pois) { top: 15, right: 30, bottom: 30, - left: 70 + left: 70, }, expandControls: false, mappings: { gradient: { '-5': { text: '- 16%+', - color: '#028306' + color: '#028306', }, '-4': { text: '- 10-15%', - color: '#2AA12E' + color: '#2AA12E', }, '-3': { text: '- 7-9%', - color: '#53BF56' + color: '#53BF56', }, '-2': { text: '- 4-6%', - color: '#7BDD7E' + color: '#7BDD7E', }, '-1': { text: '- 1-3%', - color: '#A4FBA6' + color: '#A4FBA6', }, - '0': { + 0: { text: '0%', - color: '#ffcc99' + color: '#ffcc99', }, - '1': { + 1: { text: '1-3%', - color: '#F29898' + color: '#F29898', }, - '2': { + 2: { text: '4-6%', - color: '#E07575' + color: '#E07575', }, - '3': { + 3: { text: '7-9%', - color: '#CF5352' + color: '#CF5352', }, - '4': { + 4: { text: '10-15%', - color: '#BE312F' + color: '#BE312F', }, - '5': { + 5: { text: '16%+', - color: '#AD0F0C' - } - } + color: '#AD0F0C', + }, + }, }, // extra options shortcut: { - toggle: 69 // char code for 'e' - } + toggle: 69, // char code for 'e' + }, }, - addBelow: function(map) { + addBelow: function (map) { // waiting for https://github.com/MrMufflon/Leaflet.Elevation/pull/66 // this.width($('#map').outerWidth()); this.options.width = $('#content').outerWidth(); @@ -89,12 +89,12 @@ BR.Heightgraph = function(map, layersControl, routing, pois) { var self = this; var container = $('#elevation-chart'); - $(window).resize(function() { + $(window).resize(function () { // avoid useless computations if the chart is not visible if (container.is(':visible')) { self.resize({ width: container.width(), - height: container.height() + height: container.height(), }); } }); @@ -103,10 +103,10 @@ BR.Heightgraph = function(map, layersControl, routing, pois) { // The resize must be called after the animation (i.e. 'shown.bs.collapse') // and cannot be called before the animation (i.e. 'show.bs.collapse'), // for the container has the old width pre animation and new width post animation. - container.on('shown.bs.collapse', function() { + container.on('shown.bs.collapse', function () { self.resize({ width: container.width(), - height: container.height() + height: container.height(), }); }); @@ -114,9 +114,9 @@ BR.Heightgraph = function(map, layersControl, routing, pois) { this.update(); }, - initCollapse: function(map) { + initCollapse: function (map) { var self = this; - var onHide = function() { + var onHide = function () { $('#elevation-btn').removeClass('active'); // we must fetch tiles that are located behind elevation-chart map._onResize(); @@ -125,7 +125,7 @@ BR.Heightgraph = function(map, layersControl, routing, pois) { localStorage.removeItem(this.id); } }; - var onShow = function() { + var onShow = function () { $('#elevation-btn').addClass('active'); if (this.id && BR.Util.localStorageAvailable()) { @@ -136,20 +136,20 @@ BR.Heightgraph = function(map, layersControl, routing, pois) { $('#elevation-chart') .on('hidden.bs.collapse', onHide) .on('shown.bs.collapse', onShow) - .each(function() { + .each(function () { if (this.id && BR.Util.localStorageAvailable() && localStorage[this.id] === 'true') { self.shouldRestoreChart = true; } }); }, - _keydownListener: function(e) { + _keydownListener: function (e) { if (BR.Util.keyboardShortcutsAllowed(e) && e.keyCode === this.options.shortcut.toggle) { $('#elevation-btn').click(); } }, - update: function(track, layer) { + update: function (track, layer) { // bring height indicator to front, because of track casing in BR.Routing if (this._mouseHeightFocus) { var g = this._mouseHeightFocus._groups[0][0].parentNode; @@ -186,7 +186,7 @@ BR.Heightgraph = function(map, layersControl, routing, pois) { } $('#elevation-chart').collapse('hide'); } - } + }, }); var heightgraphControl = new Heightgraph(); diff --git a/js/plugin/NogoAreas.js b/js/plugin/NogoAreas.js index 6cff5ec..521b296 100644 --- a/js/plugin/NogoAreas.js +++ b/js/plugin/NogoAreas.js @@ -3,9 +3,9 @@ BR.NogoAreas = L.Control.extend({ shortcut: { draw: { enable: 78, // char code for 'n' - disable: 27 // char code for 'ESC' - } - } + disable: 27, // char code for 'ESC' + }, + }, }, statics: { @@ -16,7 +16,7 @@ BR.NogoAreas = L.Control.extend({ MSG_ENABLED: '□ = move / resize, = delete,
click nogo to quit editing', STATE_CREATE: 'no-go-create', - STATE_CANCEL: 'cancel-no-go-create' + STATE_CANCEL: 'cancel-no-go-create', }, style: { @@ -25,27 +25,27 @@ BR.NogoAreas = L.Control.extend({ opacity: 0.5, fillColor: null, //same as color by default fillOpacity: 0.2, - dashArray: null + dashArray: null, }, editStyle: { color: '#fe57a1', opacity: 0.6, dashArray: '10, 10', - fillOpacity: 0.1 + fillOpacity: 0.1, }, - initialize: function() { + initialize: function () { this._wasRouteDrawing = false; }, - onAdd: function(map) { + onAdd: function (map) { var self = this; $('#submitNogos').on('click', L.bind(this.uploadNogos, this)); this.drawnItems = new L.FeatureGroup().addTo(map); - this.drawnItems.on('click', function(e) { + this.drawnItems.on('click', function (e) { L.DomEvent.stop(e); e.layer.toggleEdit(); }); @@ -54,10 +54,10 @@ BR.NogoAreas = L.Control.extend({ circleEditorClass: BR.DeletableCircleEditor, // FeatureGroup instead of LayerGroup to propagate events to members editLayer: new L.FeatureGroup().addTo(map), - featuresLayer: this.drawnItems + featuresLayer: this.drawnItems, })); - this.startDrawing = function(control) { + this.startDrawing = function (control) { // initial radius of 0 to detect click, see DeletableCircleEditor.onDrawingMouseUp var opts = L.extend({ radius: 0 }, self.style); editTools.startCircle(null, opts); @@ -65,7 +65,7 @@ BR.NogoAreas = L.Control.extend({ control.state('cancel-no-go-create'); }; - this.stopDrawing = function(control) { + this.stopDrawing = function (control) { editTools.stopDrawing(); control.state('no-go-create'); }; @@ -76,15 +76,15 @@ BR.NogoAreas = L.Control.extend({ stateName: BR.NogoAreas.STATE_CREATE, icon: 'fa-ban', title: BR.NogoAreas.MSG_BUTTON, - onClick: this.startDrawing + onClick: this.startDrawing, }, { stateName: BR.NogoAreas.STATE_CANCEL, icon: 'fa-ban active', title: BR.NogoAreas.MSG_BUTTON_CANCEL, - onClick: this.stopDrawing - } - ] + onClick: this.stopDrawing, + }, + ], }); // prevent instant re-activate when turning off button by both Pointer and Click @@ -95,11 +95,11 @@ BR.NogoAreas = L.Control.extend({ this.editTools.on( 'editable:drawing:end', - function(e) { + function (e) { self.button.state(BR.NogoAreas.STATE_CREATE); setTimeout( - L.bind(function() { + L.bind(function () { // turn editing off after create; async to still fire 'editable:vertex:dragend' e.layer.disableEdit(); }, this), @@ -111,7 +111,7 @@ BR.NogoAreas = L.Control.extend({ this.editTools.on( 'editable:vertex:dragend editable:deleted', - function(e) { + function (e) { this._fireUpdate(); }, this @@ -119,14 +119,14 @@ BR.NogoAreas = L.Control.extend({ this.editTools.on( 'editable:enable', - function(e) { + function (e) { e.layer.setStyle(this.editStyle); }, this ); this.editTools.on( 'editable:disable', - function(e) { + function (e) { e.layer.setStyle(this.style); }, this @@ -139,7 +139,7 @@ BR.NogoAreas = L.Control.extend({ return L.DomUtil.create('div'); }, - _keydownListener: function(e) { + _keydownListener: function (e) { if (!BR.Util.keyboardShortcutsAllowed(e)) { return; } @@ -153,34 +153,38 @@ BR.NogoAreas = L.Control.extend({ } }, - displayUploadError: function(message) { + displayUploadError: function (message) { $('#nogoError').text(message ? message : ''); $('#nogoError').css('display', message ? 'block' : 'none'); }, - uploadNogos: function() { + uploadNogos: function () { var self = this; var geoJSONPromise; + var nogoJSON = $('#nogoJSON').val(); //hidden var nogoURL = $('#nogoURL').val(); var nogoFile = $('#nogoFile')[0].files[0]; - if (nogoURL) { + if (nogoJSON) { + geoJSONPromise = Promise.resolve(JSON.parse(nogoJSON)); + $('#nogoJSON').val(undefined); + } else if (nogoURL) { // TODO: Handle {{bbox}} - geoJSONPromise = fetch(nogoURL).then(function(response) { + geoJSONPromise = fetch(nogoURL).then(function (response) { response.json(); }); } else if (nogoFile) { - geoJSONPromise = new Promise(function(resolve, reject) { + geoJSONPromise = new Promise(function (resolve, reject) { var reader = new FileReader(); - reader.onload = function() { + reader.onload = function () { resolve(reader.result); }; - reader.onerror = function() { + reader.onerror = function () { self.displayUploadError('Could not load file: ' + reader.error.message); }; reader.readAsText(nogoFile); - }).then(function(response) { + }).then(function (response) { return JSON.parse(response); }); } else { @@ -207,10 +211,10 @@ BR.NogoAreas = L.Control.extend({ return false; } - geoJSONPromise.then(function(response) { + geoJSONPromise.then(function (response) { // Iterate on features in order to discard features without geometry var cleanedGeoJSONFeatures = []; - turf.flattenEach(response, function(feature) { + turf.flattenEach(response, function (feature) { if (turf.getGeom(feature)) { var maybeBufferedFeature = feature; // Eventually buffer GeoJSON @@ -227,31 +231,31 @@ BR.NogoAreas = L.Control.extend({ } var geoJSON = L.geoJson(turf.featureCollection(cleanedGeoJSONFeatures), { - onEachFeature: function(feature, layer) { + onEachFeature: function (feature, layer) { layer.options.nogoWeight = feature.properties.nogoWeight || nogoWeight; - } + }, }); - var nogosPoints = geoJSON.getLayers().filter(function(e) { + var nogosPoints = geoJSON.getLayers().filter(function (e) { return e.feature.geometry.type === 'Point'; }); - nogosPoints = nogosPoints.map(function(item) { + nogosPoints = nogosPoints.map(function (item) { var radius = item.feature.properties.radius || nogoRadius; if (radius > 0) { return L.circle(item.getLatLng(), { radius: radius }); } return null; }); - nogosPoints = nogosPoints.filter(function(e) { + nogosPoints = nogosPoints.filter(function (e) { return e; }); self.setOptions({ nogos: nogosPoints, - polygons: geoJSON.getLayers().filter(function(e) { + polygons: geoJSON.getLayers().filter(function (e) { return e.feature.geometry.type === 'Polygon'; }), - polylines: geoJSON.getLayers().filter(function(e) { + polylines: geoJSON.getLayers().filter(function (e) { return e.feature.geometry.type === 'LineString'; - }) + }), }); self._fireUpdate(); self.displayUploadError(undefined); @@ -261,10 +265,10 @@ BR.NogoAreas = L.Control.extend({ }, // prevent route waypoint added after circle create (map click after up) - preventRoutePointOnCreate: function(routing) { + preventRoutePointOnCreate: function (routing) { this.editTools.on( 'editable:drawing:start', - function(e) { + function (e) { this._wasRouteDrawing = routing.isDrawing(); routing.draw(false); }, @@ -274,9 +278,9 @@ BR.NogoAreas = L.Control.extend({ // after create this.editTools.on( 'editable:drawing:end', - function(e) { + function (e) { if (this._wasRouteDrawing) { - setTimeout(function() { + setTimeout(function () { routing.draw(true); }, 0); } @@ -285,21 +289,21 @@ BR.NogoAreas = L.Control.extend({ ); }, - getOptions: function() { + getOptions: function () { return { - nogos: this.drawnItems.getLayers().filter(function(e) { + nogos: this.drawnItems.getLayers().filter(function (e) { return e instanceof L.Circle; }), - polygons: this.drawnItems.getLayers().filter(function(e) { + polygons: this.drawnItems.getLayers().filter(function (e) { return e instanceof L.Polygon; }), - polylines: this.drawnItems.getLayers().filter(function(e) { + polylines: this.drawnItems.getLayers().filter(function (e) { return e instanceof L.Polyline && !(e instanceof L.Polygon); - }) + }), }; }, - setOptions: function(options) { + setOptions: function (options) { var nogos = options.nogos; var polylines = options.polylines; var polygons = options.polygons; @@ -324,30 +328,30 @@ BR.NogoAreas = L.Control.extend({ } }, - _clear: function() { + _clear: function () { this.drawnItems.clearLayers(); }, - clear: function() { + clear: function () { this._clear(); this._fireUpdate(); }, - _fireUpdate: function() { + _fireUpdate: function () { this.fire('update', { options: this.getOptions() }); }, - getFeatureGroup: function() { + getFeatureGroup: function () { return this.drawnItems; }, - getEditGroup: function() { + getEditGroup: function () { return this.editTools.editLayer; }, - getButton: function() { + getButton: function () { return this.button; - } + }, }); BR.NogoAreas.include(L.Evented.prototype); @@ -359,7 +363,7 @@ BR.Editable = L.Editable.extend({ // Also, we generally disable the Tap handler in the map options for route dragging, // see Map.js, so we always need to enable for drawing. - initialize: function(map, options) { + initialize: function (map, options) { L.Editable.prototype.initialize.call(this, map, options); if (!this.map.tap) { @@ -368,7 +372,7 @@ BR.Editable = L.Editable.extend({ } }, - registerForDrawing: function(editor) { + registerForDrawing: function (editor) { this._tapEnabled = this.map.tap.enabled(); if (!this._tapEnabled) { this.map.tap.enable(); @@ -377,7 +381,7 @@ BR.Editable = L.Editable.extend({ L.Editable.prototype.registerForDrawing.call(this, editor); }, - unregisterForDrawing: function(editor) { + unregisterForDrawing: function (editor) { if (!this._tapEnabled) { this.map.tap.disable(); } @@ -385,23 +389,23 @@ BR.Editable = L.Editable.extend({ L.Editable.prototype.unregisterForDrawing.call(this, editor); }, - createVertexIcon: function(options) { + createVertexIcon: function (options) { return BR.Browser.touch ? new L.Editable.TouchVertexIcon(options) : new L.Editable.VertexIcon(options); - } + }, }); BR.EditingTooltip = L.Handler.extend({ options: { - closeTimeout: 2000 + closeTimeout: 2000, }, - initialize: function(map, editTools, button) { + initialize: function (map, editTools, button) { this.map = map; this.editTools = editTools; this.button = button; }, - addHooks: function() { + addHooks: function () { // hack: listen to EasyButton click (instead of editable:drawing:start), // to get mouse position from event for initial tooltip location L.DomEvent.addListener(this.button.button, 'click', this._addCreate, this); @@ -413,7 +417,7 @@ BR.EditingTooltip = L.Handler.extend({ this.editTools.on('editable:disable', this._disable, this); }, - removeHooks: function() { + removeHooks: function () { L.DomEvent.removeListener(this.button.button, 'click', this._addCreate, this); this.editTools.featuresLayer.off('layeradd', this._bind, this); @@ -423,19 +427,19 @@ BR.EditingTooltip = L.Handler.extend({ this.editTools.off('editable:disable', this._disable, this); }, - _bind: function(e) { + _bind: function (e) { // Position tooltip at bottom of circle, less distracting than // sticky with cursor or at center. var layer = e.layer; layer.bindTooltip(BR.NogoAreas.MSG_DISABLED, { direction: 'bottom', - className: 'editing-tooltip' + className: 'editing-tooltip', }); // Override to set position to south instead of center (circle latlng); // works better with zooming than updating offset to match radius - layer.openTooltip = function(layer, latlng) { + layer.openTooltip = function (layer, latlng) { if (!latlng && layer instanceof L.Layer) { latlng = L.latLng( layer.getBounds().getSouth(), @@ -446,7 +450,7 @@ BR.EditingTooltip = L.Handler.extend({ }; }, - _addCreate: function(e) { + _addCreate: function (e) { // button cancel if (!this.editTools.drawing()) return; @@ -457,21 +461,21 @@ BR.EditingTooltip = L.Handler.extend({ // offset wrong with 'auto' when switching direction direction: 'right', offset: L.point(5, 28), - className: 'editing-tooltip-create' + className: 'editing-tooltip-create', }); // self-reference hack for _moveTooltip, as tooltip is not bound to layer tooltip._tooltip = tooltip; // simulate sticky feature (follow mouse) for map tooltip without layer - var onOffMove = function(e) { + var onOffMove = function (e) { var onOff = e.type === 'tooltipclose' ? 'off' : 'on'; this._map[onOff]('mousemove', this._moveTooltip, this); }; this.map.on('tooltipopen', onOffMove, tooltip); this.map.on('tooltipclose', onOffMove, tooltip); - var onTooltipRemove = function(e) { + var onTooltipRemove = function (e) { this.map.off('tooltipopen', onOffMove, e.tooltip); this.map.off('tooltipclose', onOffMove, e.tooltip); this.map.off('tooltipclose', onTooltipRemove, this); @@ -482,7 +486,7 @@ BR.EditingTooltip = L.Handler.extend({ tooltip.setTooltipContent(BR.NogoAreas.MSG_CREATE); this.map.openTooltip(tooltip, initialLatLng); - var closeTooltip = function() { + var closeTooltip = function () { this.map.closeTooltip(tooltip); }; this.editTools.once('editable:editing editable:drawing:cancel', closeTooltip, this); @@ -493,22 +497,22 @@ BR.EditingTooltip = L.Handler.extend({ } }, - _setCloseTimeout: function(layer) { - var timeoutId = setTimeout(function() { + _setCloseTimeout: function (layer) { + var timeoutId = setTimeout(function () { layer.closeTooltip(); }, this.options.closeTimeout); // prevent timer to close tooltip that changed in the meantime - layer.once('tooltipopen', function(e) { + layer.once('tooltipopen', function (e) { clearTimeout(timeoutId); }); }, - _postCreate: function() { + _postCreate: function () { // editing is disabled by another handler, tooltip won't stay open before this.editTools.once( 'editable:disable', - function(e) { + function (e) { // show for a few seconds, as mouse often not hovering circle after create e.layer.openTooltip(e.layer); this._setCloseTimeout(e.layer); @@ -517,54 +521,54 @@ BR.EditingTooltip = L.Handler.extend({ ); }, - _enable: function(e) { + _enable: function (e) { e.layer.setTooltipContent(BR.NogoAreas.MSG_ENABLED); this.editTools.once( 'editable:editing', - function(e) { + function (e) { e.layer.closeTooltip(); }, this ); }, - _disable: function(e) { + _disable: function (e) { e.layer.setTooltipContent(BR.NogoAreas.MSG_DISABLED); this._setCloseTimeout(e.layer); - } + }, }); BR.DeletableCircleEditor = L.Editable.CircleEditor.extend({ - _computeDeleteLatLng: function() { + _computeDeleteLatLng: function () { // While circle is not added to the map, _radius is not set. var delta = (this.feature._radius || this.feature._mRadius) * Math.cos(Math.PI / 4), point = this.map.project(this.feature._latlng); return this.map.unproject([point.x - delta, point.y - delta]); }, - _updateDeleteLatLng: function() { + _updateDeleteLatLng: function () { this._deleteLatLng.update(this._computeDeleteLatLng()); this._deleteLatLng.__vertex.update(); }, - _addDeleteMarker: function() { + _addDeleteMarker: function () { if (!this.enabled()) return; this._deleteLatLng = this._computeDeleteLatLng(); return new BR.DeleteMarker(this._deleteLatLng, this); }, - _delete: function() { + _delete: function () { this.disable(); this.tools.featuresLayer.removeLayer(this.feature); }, - delete: function() { + delete: function () { this._delete(); this.fireAndForward('editable:deleted'); }, - initialize: function(map, feature, options) { + initialize: function (map, feature, options) { L.Editable.CircleEditor.prototype.initialize.call(this, map, feature, options); this._deleteLatLng = this._computeDeleteLatLng(); @@ -572,7 +576,7 @@ BR.DeletableCircleEditor = L.Editable.CircleEditor.extend({ this.editLayer = new L.FeatureGroup(); }, - addHooks: function() { + addHooks: function () { L.Editable.CircleEditor.prototype.addHooks.call(this); if (this.feature) { this._addDeleteMarker(); @@ -580,12 +584,12 @@ BR.DeletableCircleEditor = L.Editable.CircleEditor.extend({ return this; }, - reset: function() { + reset: function () { L.Editable.CircleEditor.prototype.reset.call(this); this._addDeleteMarker(); }, - onDrawingMouseDown: function(e) { + onDrawingMouseDown: function (e) { this._deleteLatLng.update(e.latlng); L.Editable.CircleEditor.prototype.onDrawingMouseDown.call(this, e); }, @@ -593,7 +597,7 @@ BR.DeletableCircleEditor = L.Editable.CircleEditor.extend({ // override to cancel/remove created circle when added by click instead of drag, because: // - without resize, edit handles stacked on top of each other // - makes event handling more complicated (editable:vertex:dragend not called) - onDrawingMouseUp: function(e) { + onDrawingMouseUp: function (e) { if (this.feature.getRadius() > 0) { this.commitDrawing(e); } else { @@ -604,10 +608,10 @@ BR.DeletableCircleEditor = L.Editable.CircleEditor.extend({ L.Editable.PathEditor.prototype.onDrawingMouseUp.call(this, e); }, - onVertexMarkerDrag: function(e) { + onVertexMarkerDrag: function (e) { this._updateDeleteLatLng(); L.Editable.CircleEditor.prototype.onVertexMarkerDrag.call(this, e); - } + }, }); BR.DeleteMarker = L.Marker.extend({ @@ -615,11 +619,11 @@ BR.DeleteMarker = L.Marker.extend({ draggable: false, icon: L.divIcon({ iconSize: BR.Browser.touch ? new L.Point(24, 24) : new L.Point(16, 16), - className: 'leaflet-div-icon fa fa-trash-o nogo-delete-marker' - }) + className: 'leaflet-div-icon fa fa-trash-o nogo-delete-marker', + }), }, - initialize: function(latlng, editor, options) { + initialize: function (latlng, editor, options) { // derived from L.Editable.VertexMarker.initialize // We don't use this._latlng, because on drag Leaflet replace it while @@ -636,18 +640,18 @@ BR.DeleteMarker = L.Marker.extend({ this.setZIndexOffset(editor.tools._lastZIndex); }, - onAdd: function(map) { + onAdd: function (map) { L.Marker.prototype.onAdd.call(this, map); this.on('click', this.onClick); }, - onRemove: function(map) { + onRemove: function (map) { delete this.latlng.__vertex; this.off('click', this.onClick); L.Marker.prototype.onRemove.call(this, map); }, - onClick: function(e) { + onClick: function (e) { this.editor.delete(); - } + }, }); diff --git a/js/plugin/POIMarkers.js b/js/plugin/POIMarkers.js index c47990d..30df878 100644 --- a/js/plugin/POIMarkers.js +++ b/js/plugin/POIMarkers.js @@ -1,17 +1,21 @@ BR.PoiMarkers = L.Control.extend({ markersLayer: null, + circlego: null, options: { - routing: null, shortcut: { draw: { enable: 80, // char code for 'p' - disable: 27 // char code for 'ESC' - } - } + disable: 27, // char code for 'ESC' + }, + }, + }, + initialize: function (routing) { + this.routing = routing; + this.circlego = null; }, - onAdd: function(map) { + onAdd: function (map) { var self = this; this.map = map; @@ -22,26 +26,26 @@ BR.PoiMarkers = L.Control.extend({ { stateName: 'activate-poi', icon: 'fa-hand-o-right', - onClick: function() { + onClick: function () { self.draw(true); }, - title: i18next.t('keyboard.generic-shortcut', { action: '$t(map.draw-poi-start)', key: 'P' }) + title: i18next.t('keyboard.generic-shortcut', { action: '$t(map.draw-poi-start)', key: 'P' }), }, { stateName: 'deactivate-poi', icon: 'fa-hand-o-right active', - onClick: function() { + onClick: function () { self.draw(false); }, title: i18next.t('keyboard.generic-shortcut', { action: '$t(map.draw-poi-stop)', - key: '$t(keyboard.escape)' - }) - } - ] + key: '$t(keyboard.escape)', + }), + }, + ], }).addTo(map); - map.on('routing:draw-start', function() { + map.on('routing:draw-start', function () { self.draw(false); }); @@ -51,10 +55,11 @@ BR.PoiMarkers = L.Control.extend({ return container; }, - draw: function(enable) { + draw: function (enable) { this.drawButton.state(enable ? 'deactivate-poi' : 'activate-poi'); if (enable) { - this.options.routing.draw(false); + this.routing.draw(false); + if (this.circlego) this.circlego.draw(false); this.map.on('click', this.onMapClick, this); L.DomUtil.addClass(this.map.getContainer(), 'pois-draw-enabled'); } else { @@ -63,7 +68,7 @@ BR.PoiMarkers = L.Control.extend({ } }, - _keydownListener: function(e) { + _keydownListener: function (e) { if (!BR.Util.keyboardShortcutsAllowed(e)) { return; } @@ -74,22 +79,22 @@ BR.PoiMarkers = L.Control.extend({ } }, - onMapClick: function(e) { + onMapClick: function (e) { var self = this; bootbox.prompt({ title: i18next.t('map.enter-poi-name'), - callback: function(result) { + callback: function (result) { if (result !== null) { self.addMarker(e.latlng, result); } - } + }, }); }, - addMarker: function(latlng, name) { + addMarker: function (latlng, name) { var icon = L.VectorMarkers.icon({ icon: 'star', - markerColor: BR.conf.markerColors.poi + markerColor: BR.conf.markerColors.poi, }); var content = BR.Util.sanitizeHTMLContent(name) + '
'; @@ -98,11 +103,11 @@ BR.PoiMarkers = L.Control.extend({ var self = this; var marker = L.marker(latlng, { icon: icon, draggable: true, name: name }) .bindPopup(content) - .on('dragend', function() { + .on('dragend', function () { self.fire('update'); }) - .on('popupopen', function() { - $('#remove-poi-marker').on('click', function(e) { + .on('popupopen', function () { + $('#remove-poi-marker').on('click', function (e) { self.markersLayer.removeLayer(marker); e.preventDefault(); self.fire('update'); @@ -111,11 +116,11 @@ BR.PoiMarkers = L.Control.extend({ .addTo(this.markersLayer); }, - clear: function() { + clear: function () { this.markersLayer.clearLayers(); }, - setMarkers: function(latLngNames) { + setMarkers: function (latLngNames) { this.clear(); if (!latLngNames) return; @@ -126,14 +131,14 @@ BR.PoiMarkers = L.Control.extend({ } }, - getMarkers: function() { - return this.markersLayer.getLayers().map(function(it) { + getMarkers: function () { + return this.markersLayer.getLayers().map(function (it) { return { - latlng: it._latlng, - name: it.options.name + latlng: it.getLatLng(), + name: it.options.name, }; }); - } + }, }); BR.PoiMarkers.include(L.Evented.prototype); diff --git a/js/plugin/RouteLoaderConverter.js b/js/plugin/RouteLoaderConverter.js index 0fb1b0f..1c0b357 100644 --- a/js/plugin/RouteLoaderConverter.js +++ b/js/plugin/RouteLoaderConverter.js @@ -1,395 +1,393 @@ -BR.routeLoader = function(map, layersControl, routing, pois) { - RouteLoader = L.Control.extend({ - _layerName: 'Tracklayer', - _trackLayer: undefined, - _bounds: undefined, - _testLayer: L.layerGroup().addTo(map), - _trackPoints: [], - _maxTrackPoints: 200, - _closeCanceled: true, - _currentGeoJSON: {}, - _options: { - format: undefined, - showTrackLayer: true, - showPointAsPoi: true, - simplifyTolerance: -1, - isTestMode: false, - simplifyLastKnownGood: 0.001 - }, - - setDialogDraggable: function(jqDlgHeader) { - jqDlgHeader.on('mousedown', function(mousedownEvt) { - var $draggable = $(this); - var x = mousedownEvt.pageX - $draggable.offset().left, - y = mousedownEvt.pageY - $draggable.offset().top; - $('body').on('mousemove.draggable', function(mousemoveEvt) { - $draggable.closest('.modal-dialog').offset({ - left: mousemoveEvt.pageX - x, - top: mousemoveEvt.pageY - y - }); - }); - $('body').one('mouseup', function() { - $('body').off('mousemove.draggable'); - }); - $draggable.closest('.modal').one('bs.modal.hide', function() { - $('body').off('mousemove.draggable'); - }); - }); - }, - - getSimplifiedCoords: function(tolerance) { - var simplifiedLine = turf.simplify(this._trackPoints.geometry, { - tolerance: tolerance, - highQuality: true - }); - return simplifiedLine.coordinates; - }, - - refreshTestLayer: function() { - this.onBusyChanged(true); - this._testLayer.clearLayers(); - - var simplifiedLatLngs = L.GeoJSON.coordsToLatLngs( - this.getSimplifiedCoords(this._options.simplifyTolerance) - ); - if (simplifiedLatLngs.length > this._maxTrackPoints) { - this.onBusyChanged(false); - return false; - } - for (var i = 0; i < simplifiedLatLngs.length; i++) { - this._testLayer.addLayer( - L.circleMarker(simplifiedLatLngs[i], { - radius: 6, - fill: false, - color: '#FF0000' - }) - ); - } - - this.onBusyChanged(false); - return true; - }, - - cleanup: function(e) { - this._testLayer.clearLayers(); - if ( - this._trackLayer && - map.hasLayer(this._trackLayer) && - (!this._options.showTrackLayer || this._closeCanceled) - ) { - map.removeLayer(this._trackLayer); - layersControl.removeLayer(this._trackLayer); - this._trackLayer = undefined; - } - (this._bounds = undefined), (this._trackPoints = []); - this._currentGeoJSON = {}; - this._options = { - ext: 'gpx', - showTrackLayer: true, - showPointAsPoi: true, - simplifyTolerance: -1, - isTestMode: false, - simplifyLastKnownGood: 0.001 - }; - }, - - setSliderRange: function() { - $slider = $('#simplify_tolerance'); - $slider.prop('min', -500); - var guessedTolerance = this.guessSimplifyTolerance(this._trackPoints); - var guessedLength = this.getSimplifiedCoords(guessedTolerance).length; - - if (guessedLength > this._maxTrackPoints) { - this._maxTrackPoints = guessedLength; - $slider.prop('min', 0); - } - - $slider.data('lastknowngood', 0); - $slider.data('guess', guessedTolerance.toFixed(20)); - $slider.val(0); - this._options.simplifyTolerance = guessedTolerance; - this.refreshTestLayer(); - }, - - onToleranceSlider: function(e) { - var guess = parseFloat($(e.target).data('guess')); - var f = parseFloat(e.target.value); - var frac = parseFloat($(e.target).prop('max')); - - if (f > guess) - this._options.simplifyTolerance = guess + Math.pow(f, 2) * (guess / (Math.pow(frac, 2) / 10)); - else this._options.simplifyTolerance = Math.abs(guess + Math.pow(f, 3) * (guess / Math.pow(frac, 3))); - - if (!this.refreshTestLayer()) { - var iterate = this.findLowestTolerance( - parseInt(e.target.value), - parseInt($(e.target).data('lastknowngood')), - guess, - frac - ); - $(e.target).prop('min', iterate); - $(e.target).data('lastknowngood', iterate); - e.target.value = $(e.target).data('lastknowngood'); - this._options.simplifyTolerance = this._options.simplifyLastKnownGood = Math.abs( - guess + Math.pow(iterate, 3) * (guess / Math.pow(frac, 3)) - ); - this.refreshTestLayer(); - } else { - this._options.simplifyLastKnownGood = this._options.simplifyTolerance; - $(e.target).data('lastknowngood', e.target.value); - } - }, - - findLowestTolerance: function(min, max, guess, frac) { - if (Math.abs(max - min) <= 2) return max; - var meridian = Math.round((max + min) / 2); - - var tolerance = Math.abs(guess + Math.pow(meridian, 3) * (guess / Math.pow(frac, 3))); - var simplifiedCoords = this.getSimplifiedCoords(tolerance); - - if (simplifiedCoords.length > this._maxTrackPoints) - return this.findLowestTolerance(meridian, max, guess, frac); - else return this.findLowestTolerance(min, meridian, guess, frac); - }, - - onBusyChanged: function(isBusy) { - if (typeof isBusy === undefined) { - isBusy = false; - } - if (isBusy === true) $('#loadedittrackdlg #msg_busy').removeClass('invisible'); - else $('#loadedittrackdlg #msg_busy').addClass('invisible'); - }, - - onManualCollapse: function(e) { - //workaround for starting with closed collapse - if ($('#loadedittrackdlg').is(':hidden')) return; - this._options.isTestMode = $(e.target).hasClass('show'); - - if (this._options.isTestMode) { - this.once('file:loaded', this.setSliderRange, this); - this.convertTrackLocal(); - } else this.cleanup(); - }, - - onAdd: function(map) { - $('#loadedittrackdlg').on( - 'hidden.bs.modal', - function(e) { - this.cleanup(); - }.bind(this) - ); - $('#loadedittrackdlg').on( - 'show.bs.modal', - function(e) { - $('#manual_collapse').collapse('hide'); - this._closeCanceled = true; - }.bind(this) - ); - - L.DomUtil.get('submitLoadEditTrack').onclick = L.bind(function() { - this._closeCanceled = false; - this.onBusyChanged(true); - if (this._testLayer.getLayers().length > 0) { - this._testLayer.clearLayers(); - setTimeout( - function() { - this.addRoutingPoints(); - this.onBusyChanged(false); - $('#loadedittrackdlg').modal('hide'); - }.bind(this), - 0 - ); - } else - setTimeout( - function() { - this.convertTrackLocal(); - $('#loadedittrackdlg').modal('hide'); - }.bind(this), - 0 - ); - }, this); - - L.DomUtil.get('simplify_tolerance').oninput = L.bind(this.onToleranceSlider, this); - - L.DomUtil.get('loadedittrackFile').onchange = L.bind(this.onFileChanged, this); - this.onFileChanged({ target: L.DomUtil.get('loadedittrackFile') }); - - this.setDialogDraggable($('#loadedittrackdlg .modal-header')); - - $('#manual_collapse').collapse('hide'); - $('#manual_collapse').on( - 'hidden.bs.collapse shown.bs.collapse', - function(e) { - this.onManualCollapse(e); - }.bind(this) - ); - - // dummy, no own representation, delegating to EasyButton - var dummy = L.DomUtil.create('div'); - dummy.hidden = true; - return dummy; - }, - - onRemove: function(map) { - // Nothing to do here - }, - - onFileChanged: function(e) { - if (!e.target.files[0]) return; - $(e.target) - .next('label') - .text(e.target.files[0].name); - var testmode = this._options.isTestMode; - this.cleanup(); - this._options.isTestMode = testmode; - if (this._options.isTestMode) { - this.once('file:loaded', this.setSliderRange, this); - this.convertTrackLocal(); - } - }, - - setLayerNameFromGeojson: function(geoJSON) { - if (geoJSON.type == 'Feature' && geoJSON.properties && geoJSON.properties.name) { - this._layerName = geoJSON.properties.name; - return; - } - - if (geoJSON.type == 'FeatureCollection') { - for (var i = 0; i < geoJSON.features.length; i++) { - if (geoJSON.features[i].properties && geoJSON.features[i].properties.name) { - this._layerName = geoJSON.features[i].properties.name; - return; - } - } - } - }, - - getOptions: function() { - this._options.showTrackLayer = $('#cb_showtracklayer')[0].checked; - this._options.showPointAsPoi = $('#cb_showpois')[0].checked; - - this._options.simplifyTolerance = -1; - this._bounds = undefined; - }, - - convertTrackLocal: function() { - if ($('#loadedittrackFile')[0].files.length == 0) return; - this.onBusyChanged(true); - - this.getOptions(); - - var trackFile = $('#loadedittrackFile')[0].files[0]; - this._layerName = trackFile.name.replace(/\.[^\.]*$/, ''); - - if (!this._options.format) this._options.format = trackFile.name.split('.').pop(); - - var reader = new FileReader(); - - reader.onload = L.bind(this.processFile, this); - reader.readAsText(trackFile); - }, - - addTrackOverlay: function(geoJSON) { - this._trackLayer = L.geoJSON(geoJSON, BR.Track.getGeoJsonOptions(layersControl)).addTo(map); - - layersControl.addOverlay(this._trackLayer, BR.Util.sanitizeHTMLContent(this._layerName)); - - this._bounds = this._trackLayer.getBounds(); - - if (this._bounds) map.fitBounds(this._bounds); - }, - - getLineStringsFromGeoJSON: function(geoJSON) { - var allLinePoints = []; - var flat = turf.flatten(geoJSON); - turf.featureEach(flat, function(feature, idx) { - if (turf.getType(feature) == 'LineString') { - feature = turf.cleanCoords(feature); - var lPoints = turf.coordAll(feature); - allLinePoints = allLinePoints.concat(lPoints); - } - }); - - var linesGeoJSON = turf.lineString(allLinePoints); - linesGeoJSON.length = allLinePoints.length; - return linesGeoJSON; - }, - - guessSimplifyTolerance: function(trackPoints) { - var tolerance = trackPoints.length / 1000000; - if (tolerance > 0.8) tolerance = 0.8; - return tolerance; - }, - - addRoutingPoints: function(geoJSON) { - if (this._options.simplifyTolerance < 0) - this._options.simplifyTolerance = this.guessSimplifyTolerance(this._trackPoints); - - var routingPoints = []; - var simplifiedLatLngs = L.GeoJSON.coordsToLatLngs( - this.getSimplifiedCoords(this._options.simplifyTolerance) - ); - - for (var i = 0; i < simplifiedLatLngs.length; i++) { - routingPoints.push(simplifiedLatLngs[i]); - } - - if (routingPoints.length > 0) { - routing.setWaypoints(routingPoints, function(event) { - if (!event) return; - var err = event.error; - BR.message.showError( - i18next.t('warning.tracks-load-error', { - error: err && err.message ? err.message : err - }) - ); - }); - - if (!this._bounds) this._bounds = L.latLngBounds(routingPoints); - } - - if (!this._bounds) map.fitBounds(this._bounds); - - if (this._options.showPointAsPoi) { - BR.Track.addPoiMarkers(pois, this._currentGeoJSON); - } - }, - - processFile: function(e) { - var res = e.target.result; - var geoJSON = null; - switch (this._options.format) { - case 'kml': - case 'gpx': - var xml = new DOMParser().parseFromString(res, 'text/xml'); - geoJSON = toGeoJSON[this._options.format](xml); - break; - - default: - geoJSON = JSON.parse(res); - break; - } - - this._currentGeoJSON = geoJSON; - this.setLayerNameFromGeojson(geoJSON); - - this._trackPoints = this.getLineStringsFromGeoJSON(geoJSON); - var length = turf.length(this._trackPoints, { units: 'kilometers' }); - this._maxTrackPoints = Math.min(length * Math.max(-0.14 * length + 10, 1), 200); - this.fire('file:loaded'); - - if (this._options.showTrackLayer || this._options.isTestMode) this.addTrackOverlay(geoJSON); - - if (!this._options.isTestMode) this.addRoutingPoints(); - - this.onBusyChanged(false); - } - }); - - RouteLoader.include(L.Evented.prototype); - - var routeLoaderControl = new RouteLoader(); - routeLoaderControl.addTo(map); - - return routeLoaderControl; -}; +BR.routeLoader = function (map, layersControl, routing, pois) { + RouteLoader = L.Control.extend({ + _layerName: 'Tracklayer', + _trackLayer: undefined, + _bounds: undefined, + _testLayer: L.layerGroup().addTo(map), + _trackPoints: [], + _maxTrackPoints: 200, + _closeCanceled: true, + _currentGeoJSON: {}, + _options: { + format: undefined, + showTrackLayer: true, + showPointAsPoi: true, + simplifyTolerance: -1, + isTestMode: false, + simplifyLastKnownGood: 0.001, + }, + + setDialogDraggable: function (jqDlgHeader) { + jqDlgHeader.on('mousedown', function (mousedownEvt) { + var $draggable = $(this); + var x = mousedownEvt.pageX - $draggable.offset().left, + y = mousedownEvt.pageY - $draggable.offset().top; + $('body').on('mousemove.draggable', function (mousemoveEvt) { + $draggable.closest('.modal-dialog').offset({ + left: mousemoveEvt.pageX - x, + top: mousemoveEvt.pageY - y, + }); + }); + $('body').one('mouseup', function () { + $('body').off('mousemove.draggable'); + }); + $draggable.closest('.modal').one('bs.modal.hide', function () { + $('body').off('mousemove.draggable'); + }); + }); + }, + + getSimplifiedCoords: function (tolerance) { + var simplifiedLine = turf.simplify(this._trackPoints.geometry, { + tolerance: tolerance, + highQuality: true, + }); + return simplifiedLine.coordinates; + }, + + refreshTestLayer: function () { + this.onBusyChanged(true); + this._testLayer.clearLayers(); + + var simplifiedLatLngs = L.GeoJSON.coordsToLatLngs( + this.getSimplifiedCoords(this._options.simplifyTolerance) + ); + if (simplifiedLatLngs.length > this._maxTrackPoints) { + this.onBusyChanged(false); + return false; + } + for (var i = 0; i < simplifiedLatLngs.length; i++) { + this._testLayer.addLayer( + L.circleMarker(simplifiedLatLngs[i], { + radius: 6, + fill: false, + color: '#FF0000', + }) + ); + } + + this.onBusyChanged(false); + return true; + }, + + cleanup: function (e) { + this._testLayer.clearLayers(); + if ( + this._trackLayer && + map.hasLayer(this._trackLayer) && + (!this._options.showTrackLayer || this._closeCanceled) + ) { + map.removeLayer(this._trackLayer); + layersControl.removeLayer(this._trackLayer); + this._trackLayer = undefined; + } + (this._bounds = undefined), (this._trackPoints = []); + this._currentGeoJSON = {}; + this._options = { + ext: 'gpx', + showTrackLayer: true, + showPointAsPoi: true, + simplifyTolerance: -1, + isTestMode: false, + simplifyLastKnownGood: 0.001, + }; + }, + + setSliderRange: function () { + $slider = $('#simplify_tolerance'); + $slider.prop('min', -500); + var guessedTolerance = this.guessSimplifyTolerance(this._trackPoints); + var guessedLength = this.getSimplifiedCoords(guessedTolerance).length; + + if (guessedLength > this._maxTrackPoints) { + this._maxTrackPoints = guessedLength; + $slider.prop('min', 0); + } + + $slider.data('lastknowngood', 0); + $slider.data('guess', guessedTolerance.toFixed(20)); + $slider.val(0); + this._options.simplifyTolerance = guessedTolerance; + this.refreshTestLayer(); + }, + + onToleranceSlider: function (e) { + var guess = parseFloat($(e.target).data('guess')); + var f = parseFloat(e.target.value); + var frac = parseFloat($(e.target).prop('max')); + + if (f > guess) + this._options.simplifyTolerance = guess + Math.pow(f, 2) * (guess / (Math.pow(frac, 2) / 10)); + else this._options.simplifyTolerance = Math.abs(guess + Math.pow(f, 3) * (guess / Math.pow(frac, 3))); + + if (!this.refreshTestLayer()) { + var iterate = this.findLowestTolerance( + parseInt(e.target.value), + parseInt($(e.target).data('lastknowngood')), + guess, + frac + ); + $(e.target).prop('min', iterate); + $(e.target).data('lastknowngood', iterate); + e.target.value = $(e.target).data('lastknowngood'); + this._options.simplifyTolerance = this._options.simplifyLastKnownGood = Math.abs( + guess + Math.pow(iterate, 3) * (guess / Math.pow(frac, 3)) + ); + this.refreshTestLayer(); + } else { + this._options.simplifyLastKnownGood = this._options.simplifyTolerance; + $(e.target).data('lastknowngood', e.target.value); + } + }, + + findLowestTolerance: function (min, max, guess, frac) { + if (Math.abs(max - min) <= 2) return max; + var meridian = Math.round((max + min) / 2); + + var tolerance = Math.abs(guess + Math.pow(meridian, 3) * (guess / Math.pow(frac, 3))); + var simplifiedCoords = this.getSimplifiedCoords(tolerance); + + if (simplifiedCoords.length > this._maxTrackPoints) + return this.findLowestTolerance(meridian, max, guess, frac); + else return this.findLowestTolerance(min, meridian, guess, frac); + }, + + onBusyChanged: function (isBusy) { + if (typeof isBusy === undefined) { + isBusy = false; + } + if (isBusy === true) $('#loadedittrackdlg #msg_busy').removeClass('invisible'); + else $('#loadedittrackdlg #msg_busy').addClass('invisible'); + }, + + onManualCollapse: function (e) { + //workaround for starting with closed collapse + if ($('#loadedittrackdlg').is(':hidden')) return; + this._options.isTestMode = $(e.target).hasClass('show'); + + if (this._options.isTestMode) { + this.once('file:loaded', this.setSliderRange, this); + this.convertTrackLocal(); + } else this.cleanup(); + }, + + onAdd: function (map) { + $('#loadedittrackdlg').on( + 'hidden.bs.modal', + function (e) { + this.cleanup(); + }.bind(this) + ); + $('#loadedittrackdlg').on( + 'show.bs.modal', + function (e) { + $('#manual_collapse').collapse('hide'); + this._closeCanceled = true; + }.bind(this) + ); + + L.DomUtil.get('submitLoadEditTrack').onclick = L.bind(function () { + this._closeCanceled = false; + this.onBusyChanged(true); + if (this._testLayer.getLayers().length > 0) { + this._testLayer.clearLayers(); + setTimeout( + function () { + this.addRoutingPoints(); + this.onBusyChanged(false); + $('#loadedittrackdlg').modal('hide'); + }.bind(this), + 0 + ); + } else + setTimeout( + function () { + this.convertTrackLocal(); + $('#loadedittrackdlg').modal('hide'); + }.bind(this), + 0 + ); + }, this); + + L.DomUtil.get('simplify_tolerance').oninput = L.bind(this.onToleranceSlider, this); + + L.DomUtil.get('loadedittrackFile').onchange = L.bind(this.onFileChanged, this); + this.onFileChanged({ target: L.DomUtil.get('loadedittrackFile') }); + + this.setDialogDraggable($('#loadedittrackdlg .modal-header')); + + $('#manual_collapse').collapse('hide'); + $('#manual_collapse').on( + 'hidden.bs.collapse shown.bs.collapse', + function (e) { + this.onManualCollapse(e); + }.bind(this) + ); + + // dummy, no own representation, delegating to EasyButton + var dummy = L.DomUtil.create('div'); + dummy.hidden = true; + return dummy; + }, + + onRemove: function (map) { + // Nothing to do here + }, + + onFileChanged: function (e) { + if (!e.target.files[0]) return; + $(e.target).next('label').text(e.target.files[0].name); + var testmode = this._options.isTestMode; + this.cleanup(); + this._options.isTestMode = testmode; + if (this._options.isTestMode) { + this.once('file:loaded', this.setSliderRange, this); + this.convertTrackLocal(); + } + }, + + setLayerNameFromGeojson: function (geoJSON) { + if (geoJSON.type == 'Feature' && geoJSON.properties && geoJSON.properties.name) { + this._layerName = geoJSON.properties.name; + return; + } + + if (geoJSON.type == 'FeatureCollection') { + for (var i = 0; i < geoJSON.features.length; i++) { + if (geoJSON.features[i].properties && geoJSON.features[i].properties.name) { + this._layerName = geoJSON.features[i].properties.name; + return; + } + } + } + }, + + getOptions: function () { + this._options.showTrackLayer = $('#cb_showtracklayer')[0].checked; + this._options.showPointAsPoi = $('#cb_showpois')[0].checked; + + this._options.simplifyTolerance = -1; + this._bounds = undefined; + }, + + convertTrackLocal: function () { + if ($('#loadedittrackFile')[0].files.length == 0) return; + this.onBusyChanged(true); + + this.getOptions(); + + var trackFile = $('#loadedittrackFile')[0].files[0]; + this._layerName = trackFile.name.replace(/\.[^\.]*$/, ''); + + if (!this._options.format) this._options.format = trackFile.name.split('.').pop(); + + var reader = new FileReader(); + + reader.onload = L.bind(this.processFile, this); + reader.readAsText(trackFile); + }, + + addTrackOverlay: function (geoJSON) { + this._trackLayer = L.geoJSON(geoJSON, BR.Track.getGeoJsonOptions(layersControl)).addTo(map); + + layersControl.addOverlay(this._trackLayer, BR.Util.sanitizeHTMLContent(this._layerName)); + + this._bounds = this._trackLayer.getBounds(); + + if (this._bounds) map.fitBounds(this._bounds); + }, + + getLineStringsFromGeoJSON: function (geoJSON) { + var allLinePoints = []; + var flat = turf.flatten(geoJSON); + turf.featureEach(flat, function (feature, idx) { + if (turf.getType(feature) == 'LineString') { + feature = turf.cleanCoords(feature); + var lPoints = turf.coordAll(feature); + allLinePoints = allLinePoints.concat(lPoints); + } + }); + + var linesGeoJSON = turf.lineString(allLinePoints); + linesGeoJSON.length = allLinePoints.length; + return linesGeoJSON; + }, + + guessSimplifyTolerance: function (trackPoints) { + var tolerance = trackPoints.length / 1000000; + if (tolerance > 0.8) tolerance = 0.8; + return tolerance; + }, + + addRoutingPoints: function (geoJSON) { + if (this._options.simplifyTolerance < 0) + this._options.simplifyTolerance = this.guessSimplifyTolerance(this._trackPoints); + + var routingPoints = []; + var simplifiedLatLngs = L.GeoJSON.coordsToLatLngs( + this.getSimplifiedCoords(this._options.simplifyTolerance) + ); + + for (var i = 0; i < simplifiedLatLngs.length; i++) { + routingPoints.push(simplifiedLatLngs[i]); + } + + if (routingPoints.length > 0) { + routing.setWaypoints(routingPoints, function (event) { + if (!event) return; + var err = event.error; + BR.message.showError( + i18next.t('warning.tracks-load-error', { + error: err && err.message ? err.message : err, + }) + ); + }); + + if (!this._bounds) this._bounds = L.latLngBounds(routingPoints); + } + + if (!this._bounds) map.fitBounds(this._bounds); + + if (this._options.showPointAsPoi) { + BR.Track.addPoiMarkers(pois, this._currentGeoJSON); + } + }, + + processFile: function (e) { + var res = e.target.result; + var geoJSON = null; + switch (this._options.format) { + case 'kml': + case 'gpx': + var xml = new DOMParser().parseFromString(res, 'text/xml'); + geoJSON = toGeoJSON[this._options.format](xml); + break; + + default: + geoJSON = JSON.parse(res); + break; + } + + this._currentGeoJSON = geoJSON; + this.setLayerNameFromGeojson(geoJSON); + + this._trackPoints = this.getLineStringsFromGeoJSON(geoJSON); + var length = turf.length(this._trackPoints, { units: 'kilometers' }); + this._maxTrackPoints = Math.min(length * Math.max(-0.14 * length + 10, 1), 200); + this.fire('file:loaded'); + + if (this._options.showTrackLayer || this._options.isTestMode) this.addTrackOverlay(geoJSON); + + if (!this._options.isTestMode) this.addRoutingPoints(); + + this.onBusyChanged(false); + }, + }); + + RouteLoader.include(L.Evented.prototype); + + var routeLoaderControl = new RouteLoader(); + routeLoaderControl.addTo(map); + + return routeLoaderControl; +}; diff --git a/js/plugin/Routing.js b/js/plugin/Routing.js index dedf2b8..4572c0e 100644 --- a/js/plugin/Routing.js +++ b/js/plugin/Routing.js @@ -1,4 +1,4 @@ -L.Routing.Draw.prototype._hideTrailer = function() { +L.Routing.Draw.prototype._hideTrailer = function () { if (this._trailer.options.opacity !== 0.0) { this._trailer.setStyle({ opacity: 0.0 }); } @@ -12,7 +12,7 @@ BR.Routing = L.Routing.extend({ normal: L.VectorMarkers.icon({ icon: 'circle', markerColor: BR.conf.markerColors.via }), end: L.VectorMarkers.icon({ icon: 'stop', markerColor: BR.conf.markerColors.stop }), draw: false, - opacity: 1 + opacity: 1, }, snapping: null, zIndexOffset: -2000, @@ -20,21 +20,21 @@ BR.Routing = L.Routing.extend({ // width as base number, multiplied by number of digits + one for padding iconSize: [6, 18], offset: 5000, - textFunction: function(distance) { + textFunction: function (distance) { return distance / 1000; - } + }, }, shortcut: { draw: { enable: 68, // char code for 'd' - disable: 27 // char code for 'ESC' + disable: 27, // char code for 'ESC' }, reverse: 82, // char code for 'r' - deleteLastPoint: 90 // char code for 'z' - } + deleteLastPoint: 90, // char code for 'z' + }, }, - onAdd: function(map) { + onAdd: function (map) { this._segmentsCasing = new L.FeatureGroup().addTo(map); this._loadingTrailerGroup = new L.FeatureGroup().addTo(map); @@ -45,18 +45,18 @@ BR.Routing = L.Routing.extend({ this._waypoints.on('layeradd', this._setMarkerOpacity, this); - this.on('routing:routeWaypointStart routing:rerouteAllSegmentsStart', function(evt) { + this.on('routing:routeWaypointStart routing:rerouteAllSegmentsStart', function (evt) { this._removeDistanceMarkers(); }); - this.on('routing:routeWaypointEnd routing:setWaypointsEnd routing:rerouteAllSegmentsEnd', function(evt) { + this.on('routing:routeWaypointEnd routing:setWaypointsEnd routing:rerouteAllSegmentsEnd', function (evt) { this._updateDistanceMarkers(evt); }); // turn line mouse marker off while over waypoint marker this.on( 'waypoint:mouseover', - function(e) { + function (e) { // L.Routing.Edit._segmentOnMouseout without firing 'segment:mouseout' (enables draw) if (this._dragging) { return; @@ -71,7 +71,7 @@ BR.Routing = L.Routing.extend({ this.on( 'waypoint:mouseout', - function(e) { + function (e) { this._segmentOnMouseover(e); this._suspended = false; }, @@ -82,7 +82,7 @@ BR.Routing = L.Routing.extend({ L.divIcon({ className: 'line-mouse-marker', iconAnchor: [8, 8], // size/2 + border/2 - iconSize: [16, 16] + iconSize: [16, 16], }) ); @@ -90,7 +90,7 @@ BR.Routing = L.Routing.extend({ // update indicator), see also L.Routing.Edit._segmentOnMousemove this._edit._mouseMarker.on( 'move', - L.bind(function(e) { + L.bind(function (e) { var latLng = e.latlng; if (latLng._feature) { this._mouseMarker._feature = latLng._feature; @@ -98,7 +98,7 @@ BR.Routing = L.Routing.extend({ } }, this._edit) ); - var mouseoutHandler = function(e) { + var mouseoutHandler = function (e) { if (this._mouseMarker._feature) { this._mouseMarker._feature.fire('mouseout', e, true); this._mouseMarker._feature = null; @@ -108,7 +108,7 @@ BR.Routing = L.Routing.extend({ this._edit._mouseMarker.on('dragstart', mouseoutHandler, this._edit); this.on('waypoint:mouseover', mouseoutHandler, this._edit); - this._draw.on('enabled', function() { + this._draw.on('enabled', function () { // crosshair cursor L.DomUtil.addClass(map.getContainer(), 'routing-draw-enabled'); @@ -120,7 +120,7 @@ BR.Routing = L.Routing.extend({ this._parent.off('waypoint:mouseout', this._catchWaypointEvent, this); this.on( 'waypoint:mouseout', - function(e) { + function (e) { if (!this._parent._edit._suspended) { this._catchWaypointEvent(e); } @@ -128,7 +128,7 @@ BR.Routing = L.Routing.extend({ this ); }); - this._draw.on('disabled', function() { + this._draw.on('disabled', function () { L.DomUtil.removeClass(map.getContainer(), 'routing-draw-enabled'); }); @@ -143,13 +143,13 @@ BR.Routing = L.Routing.extend({ this._hide(); } } - this._draw.on('enabled', function() { + this._draw.on('enabled', function () { this._map.on('mouseout', hide, this); this._map.on('mouseover', show, this); L.DomEvent.on(this._map._controlContainer, 'mouseout', show, this); L.DomEvent.on(this._map._controlContainer, 'mouseover', hide, this); }); - this._draw.on('disabled', function() { + this._draw.on('disabled', function () { this._map.off('mouseout', hide, this); this._map.off('mouseover', show, this); L.DomEvent.off(this._map._controlContainer, 'mouseout', show, this); @@ -163,7 +163,7 @@ BR.Routing = L.Routing.extend({ // although enabled. this.on( 'waypoint:click', - function() { + function () { if (this._hidden && !this._parent._waypoints._first) { this._show(); this._hideTrailer(); @@ -181,18 +181,18 @@ BR.Routing = L.Routing.extend({ return container; }, - _addSegmentCasing: function(e) { + _addSegmentCasing: function (e) { var casing = L.polyline(e.layer.getLatLngs(), this.options.styles.trackCasing); this._segmentsCasing.addLayer(casing); e.layer._casing = casing; this._segments.bringToFront(); }, - _removeSegmentCasing: function(e) { + _removeSegmentCasing: function (e) { this._segmentsCasing.removeLayer(e.layer._casing); }, - setOpacity: function(opacity) { + setOpacity: function (opacity) { // Due to the second Polyline layer for casing, the combined opacity is less // transparent than with a single layer and the slider is non-linear. The // inverted formula is used to get the same result as with a single layer. @@ -205,12 +205,12 @@ BR.Routing = L.Routing.extend({ this.options.icons.opacity = opacity; this._segments.setStyle({ - opacity: sourceOpacity + opacity: sourceOpacity, }); this._segmentsCasing.setStyle({ - opacity: sourceOpacity + opacity: sourceOpacity, }); - this._waypoints.eachLayer(function(marker) { + this._waypoints.eachLayer(function (marker) { marker.setOpacity(opacity); }); @@ -219,11 +219,11 @@ BR.Routing = L.Routing.extend({ } }, - _setMarkerOpacity: function(e) { + _setMarkerOpacity: function (e) { e.layer.setOpacity(this.options.icons.opacity); }, - _removeMarkerEvents: function(marker) { + _removeMarkerEvents: function (marker) { marker.off('mouseover', this._fireWaypointEvent, this); marker.off('mouseout', this._fireWaypointEvent, this); marker.off('dragstart', this._fireWaypointEvent, this); @@ -232,7 +232,7 @@ BR.Routing = L.Routing.extend({ marker.off('click', this._fireWaypointEvent, this); }, - clear: function() { + clear: function () { var drawEnabled = this._draw._enabled; var current = this._waypoints._first; @@ -259,13 +259,13 @@ BR.Routing = L.Routing.extend({ } }, - setWaypoints: function(latLngs, cb) { + setWaypoints: function (latLngs, cb) { var i; var callbackCount = 0; var firstErr; var $this = this; - var callback = function(err, data) { + var callback = function (err, data) { callbackCount++; firstErr = firstErr || err; if (callbackCount >= latLngs.length) { @@ -299,10 +299,10 @@ BR.Routing = L.Routing.extend({ // patch to fix error when line is null or error line // (when called while still segments to calculate, e.g. permalink or fast drawing) - toPolyline: function() { + toPolyline: function () { var latLngs = []; - this._eachSegment(function(m1, m2, line) { + this._eachSegment(function (m1, m2, line) { // omit if null (still calculating) or error // NOTE: feature check specific to BRouter GeoJSON response, workaround to detect error line if (line && line.feature) { @@ -313,7 +313,7 @@ BR.Routing = L.Routing.extend({ return L.polyline(latLngs); }, - _routeSegment: function(m1, m2, cb) { + _routeSegment: function (m1, m2, cb) { var loadingTrailer; // change segment color before request to indicate recalculation (mark old) @@ -327,7 +327,7 @@ BR.Routing = L.Routing.extend({ color: this.options.styles.track.color, opacity: this.options.styles.trailer.opacity, dashArray: [10, 10], - className: 'loading-trailer' + className: 'loading-trailer', }); this._loadingTrailerGroup.addLayer(loadingTrailer); } @@ -336,7 +336,7 @@ BR.Routing = L.Routing.extend({ this, m1, m2, - L.bind(function(err, data) { + L.bind(function (err, data) { if (loadingTrailer) { this._loadingTrailerGroup.removeLayer(loadingTrailer); } @@ -345,10 +345,10 @@ BR.Routing = L.Routing.extend({ ); }, - getSegments: function() { + getSegments: function () { var segments = []; - this._eachSegment(function(m1, m2, line) { + this._eachSegment(function (m1, m2, line) { // omit if null (still calculating) or error // NOTE: feature check specific to BRouter GeoJSON response, workaround to detect error line if (line && line.feature) { @@ -359,7 +359,7 @@ BR.Routing = L.Routing.extend({ return segments; }, - _keydownListener: function(e) { + _keydownListener: function (e) { if (!BR.Util.keyboardShortcutsAllowed(e)) { return; } @@ -374,7 +374,7 @@ BR.Routing = L.Routing.extend({ } }, - _keyupListener: function(e) { + _keyupListener: function (e) { // Prevent Leaflet from triggering drawing a second time on keyup, // since this is already done in _keydownListener if (e.keyCode === this.options.shortcut.draw.enable) { @@ -382,30 +382,30 @@ BR.Routing = L.Routing.extend({ } }, - isDrawing: function() { + isDrawing: function () { return this._draw._enabled; }, - reverse: function() { + reverse: function () { var waypoints = this.getWaypoints(); waypoints.reverse(); this.clear(); this.setWaypoints(waypoints); }, - deleteLastPoint: function() { + deleteLastPoint: function () { if ((lastPoint = this.getLast())) { - this.removeWaypoint(lastPoint, function(err, data) {}); + this.removeWaypoint(lastPoint, function (err, data) {}); } }, - _removeDistanceMarkers: function() { + _removeDistanceMarkers: function () { if (this._map && this._distanceMarkers) { this._map.removeLayer(this._distanceMarkers); } }, - _updateDistanceMarkers: function(e) { + _updateDistanceMarkers: function (e) { this._removeDistanceMarkers(); if (this._map) { @@ -413,5 +413,5 @@ BR.Routing = L.Routing.extend({ this._distanceMarkers = new L.DistanceMarkers(this.toPolyline(), this._map, distanceMarkersOpts); this._map.addLayer(this._distanceMarkers); } - } + }, }); diff --git a/js/plugin/RoutingPathQuality.js b/js/plugin/RoutingPathQuality.js index 7c714c1..2e0e074 100644 --- a/js/plugin/RoutingPathQuality.js +++ b/js/plugin/RoutingPathQuality.js @@ -2,11 +2,11 @@ BR.RoutingPathQuality = L.Control.extend({ options: { shortcut: { toggle: 67, // char code for 'c' - muteKeyCode: 77 // char code for 'm' - } + muteKeyCode: 77, // char code for 'm' + }, }, - initialize: function(map, layersControl, options) { + initialize: function (map, layersControl, options) { L.setOptions(this, options); // hotline uses canvas and cannot be moved in front of the svg, so we create another pane @@ -32,20 +32,20 @@ BR.RoutingPathQuality = L.Control.extend({ 0.25: '#00ffff', // cyan 0.5: '#00ff00', // green 0.75: '#ffff00', // yellow - 1.0: '#ff0000' // red + 1.0: '#ff0000', // red }, outlineColor: 'dimgray', - renderer: renderer + renderer: renderer, }, - valueFunction: function(latLng, prevLatLng) { + valueFunction: function (latLng, prevLatLng) { var deltaAltitude = latLng.alt - prevLatLng.alt, // in m distance = prevLatLng.distanceTo(latLng); // in m if (distance === 0) { return 0; } return (Math.atan(deltaAltitude / distance) * 180) / Math.PI; - } - }) + }, + }), }, altitude: { title: i18next.t('map.route-quality-shortcut', { action: '$t(map.route-quality-altitude)', key: 'C' }), @@ -53,12 +53,12 @@ BR.RoutingPathQuality = L.Control.extend({ provider: new HotLineQualityProvider({ hotlineOptions: { outlineColor: 'dimgray', - renderer: renderer + renderer: renderer, }, - valueFunction: function(latLng) { + valueFunction: function (latLng) { return latLng.alt; - } - }) + }, + }), }, cost: { title: i18next.t('map.route-quality-shortcut', { action: '$t(map.route-quality-cost)', key: 'C' }), @@ -66,9 +66,9 @@ BR.RoutingPathQuality = L.Control.extend({ provider: new HotLineQualityProvider({ hotlineOptions: { outlineColor: 'dimgray', - renderer: renderer + renderer: renderer, }, - valueFunction: function(latLng) { + valueFunction: function (latLng) { var feature = latLng.feature; var cost = feature.cost.perKm; var distance = feature.distance / 1000; // in km @@ -78,9 +78,9 @@ BR.RoutingPathQuality = L.Control.extend({ distance; } return cost; - } - }) - } + }, + }), + }, }; this._initialProvider = this.options.initialProvider || 'incline'; this.selectedProvider = this._initialProvider; @@ -89,12 +89,12 @@ BR.RoutingPathQuality = L.Control.extend({ this._muted = false; }, - onAdd: function(map) { + onAdd: function (map) { this._map = map; map.on( 'overlayadd', - function(evt) { + function (evt) { if (evt.layer === this._routingSegments) { this._activate(this.routingPathButton); } @@ -103,7 +103,7 @@ BR.RoutingPathQuality = L.Control.extend({ ); map.on( 'overlayremove', - function(evt) { + function (evt) { if (evt.layer === this._routingSegments) { this._deactivate(this.routingPathButton); } @@ -123,8 +123,8 @@ BR.RoutingPathQuality = L.Control.extend({ stateName: keys[i], icon: provider.icon, title: provider.title, - onClick: L.bind(function(state) { - return L.bind(function(btn) { + onClick: L.bind(function (state) { + return L.bind(function (btn) { if (this._active) { btn.state(state); this.setProvider(state); @@ -138,7 +138,7 @@ BR.RoutingPathQuality = L.Control.extend({ this._activate(btn); } }, this); - }, this)(nextState) + }, this)(nextState), }); } @@ -148,42 +148,42 @@ BR.RoutingPathQuality = L.Control.extend({ } this.routingPathButton = new L.easyButton({ - states: states + states: states, }).addTo(map); return new L.DomUtil.create('div'); }, - _activate: function(btn) { + _activate: function (btn) { this._active = true; this._getIcon(btn).classList.add('active'); this._routingSegments.addTo(this._map); }, - _deactivate: function(btn) { + _deactivate: function (btn) { this._active = false; this._getIcon(btn).classList.remove('active'); this._map.removeLayer(this._routingSegments); }, - _getIcon: function(btn) { + _getIcon: function (btn) { return btn.button.firstChild.firstChild; }, - update: function(track, layer) { + update: function (track, layer) { var segments = []; - layer.eachLayer(function(layer) { + layer.eachLayer(function (layer) { segments.push(layer); }); this.segments = segments; this._update(this.segments); }, - setProvider: function(provider) { + setProvider: function (provider) { this.selectedProvider = provider; this._update(this.segments); }, - _update: function(segments) { + _update: function (segments) { this._routingSegments.clearLayers(); var layers = this.providers[this.selectedProvider].provider.computeLayers(segments); if (layers) { @@ -193,7 +193,7 @@ BR.RoutingPathQuality = L.Control.extend({ } }, - _keydownListener: function(e) { + _keydownListener: function (e) { if (!BR.Util.keyboardShortcutsAllowed(e)) { return; } @@ -206,21 +206,21 @@ BR.RoutingPathQuality = L.Control.extend({ } }, - _keyupListener: function(e) { + _keyupListener: function (e) { if (BR.Util.keyboardShortcutsAllowed(e) && this._muted && e.keyCode === this.options.shortcut.muteKeyCode) { this._muted = false; this._activate(this.routingPathButton); } - } + }, }); var HotLineQualityProvider = L.Class.extend({ - initialize: function(options) { + initialize: function (options) { this.hotlineOptions = options.hotlineOptions; this.valueFunction = options.valueFunction; }, - computeLayers: function(segments) { + computeLayers: function (segments) { var layers = []; if (segments) { var segmentLatLngs = []; @@ -250,7 +250,7 @@ var HotLineQualityProvider = L.Class.extend({ return layers; }, - _computeLatLngVals: function(segment) { + _computeLatLngVals: function (segment) { var latLngVals = [], segmentLatLngs = segment.getLatLngs(), segmentLength = segmentLatLngs.length; @@ -268,11 +268,11 @@ var HotLineQualityProvider = L.Class.extend({ return latLngVals; }, - _convertToArray: function(latLng, val) { + _convertToArray: function (latLng, val) { return [latLng.lat, latLng.lng, val]; }, - _calcMinMaxValues: function(lines) { + _calcMinMaxValues: function (lines) { var min = lines[0][2], max = min; for (var i = 1; lines && i < lines.length; i++) { @@ -285,7 +285,7 @@ var HotLineQualityProvider = L.Class.extend({ } return { min: min, - max: max + max: max, }; - } + }, }); diff --git a/js/plugin/Search.js b/js/plugin/Search.js index 4985caa..c56e6df 100644 --- a/js/plugin/Search.js +++ b/js/plugin/Search.js @@ -2,30 +2,30 @@ BR.Search = L.Control.Geocoder.extend({ options: { geocoder: new L.Control.Geocoder.LatLng({ next: new L.Control.Geocoder.Nominatim({ - serviceUrl: 'https://nominatim.openstreetmap.org/' + serviceUrl: 'https://nominatim.openstreetmap.org/', }), - sizeInMeters: 800 + sizeInMeters: 800, }), position: 'topleft', shortcut: { - search: 70 // char code for 'f' - } + search: 70, // char code for 'f' + }, }, - initialize: function(options) { + initialize: function (options) { L.Control.Geocoder.prototype.initialize.call(this, options); L.setOptions(this, { // i18next.t will only return 'undefined' if it is called in a static context // (e.g. when added directly to "options:" above), so we have to call it here - placeholder: i18next.t('map.geocoder-placeholder') + placeholder: i18next.t('map.geocoder-placeholder'), }); L.DomEvent.addListener(document, 'keydown', this._keydownListener, this); }, - markGeocode: function(result) { + markGeocode: function (result) { this._map.fitBounds(result.geocode.bbox, { - maxZoom: 17 + maxZoom: 17, }); this.clear(); @@ -33,22 +33,22 @@ BR.Search = L.Control.Geocoder.extend({ interactive: false, color: 'red', opacity: 1, - weight: 3 + weight: 3, }).addTo(this._map); return this; }, - clear: function() { + clear: function () { if (this._geocodeMarker) { this._map.removeLayer(this._geocodeMarker); } }, - _keydownListener: function(e) { + _keydownListener: function (e) { if (BR.Util.keyboardShortcutsAllowed(e) && e.keyCode === this.options.shortcut.search) { $('#map .leaflet-control-geocoder')[0].dispatchEvent(new MouseEvent('mousedown')); e.preventDefault(); } - } + }, }); diff --git a/js/plugin/Sidebar.js b/js/plugin/Sidebar.js index c8e16be..79c7094 100644 --- a/js/plugin/Sidebar.js +++ b/js/plugin/Sidebar.js @@ -9,15 +9,15 @@ BR.Sidebar = L.Control.Sidebar.extend({ defaultTabId: '', shortcut: { - toggleTabs: 84 // char code for 't' + toggleTabs: 84, // char code for 't' }, // Tabs to be notified when shown or hidden // (tab div id -> object implementing show/hide methods) - listeningTabs: {} + listeningTabs: {}, }, - initialize: function(id, options) { + initialize: function (id, options) { L.Control.Sidebar.prototype.initialize.call(this, id, options); this.oldTab = null; @@ -25,7 +25,7 @@ BR.Sidebar = L.Control.Sidebar.extend({ L.DomEvent.addListener(document, 'keydown', this._keydownListener, this); }, - addTo: function(map) { + addTo: function (map) { L.Control.Sidebar.prototype.addTo.call(this, map); this.on('content', this._notifyOnContent, this); @@ -34,7 +34,7 @@ BR.Sidebar = L.Control.Sidebar.extend({ this.on( 'closing', - function() { + function () { this._map.getContainer().focus(); }, this @@ -43,7 +43,7 @@ BR.Sidebar = L.Control.Sidebar.extend({ this.recentTab = this.options.defaultTabId; this.on( 'content', - function(tab) { + function (tab) { this.recentTab = tab.id; }, this @@ -59,14 +59,14 @@ BR.Sidebar = L.Control.Sidebar.extend({ return this; }, - showPanel: function(id) { + showPanel: function (id) { var tab = this._getTab(id); tab.hidden = false; return this; }, - _rememberTabState: function() { + _rememberTabState: function () { if (BR.Util.localStorageAvailable()) { this.on('content closing', this._storeActiveTab, this); @@ -85,42 +85,42 @@ BR.Sidebar = L.Control.Sidebar.extend({ } }, - _notifyShow: function(tab) { + _notifyShow: function (tab) { if (tab && tab.show) { tab.show(); } }, - _notifyHide: function(tab) { + _notifyHide: function (tab) { if (tab && tab.hide) { tab.hide(); } }, - _notifyOnContent: function(e) { + _notifyOnContent: function (e) { var tab = this.options.listeningTabs[e.id]; this._notifyHide(this.oldTab); this._notifyShow(tab); this.oldTab = tab; }, - _notifyOnClose: function(e) { + _notifyOnClose: function (e) { this._notifyHide(this.oldTab); this.oldTab = null; }, - _notifyOnResize: function(e) { + _notifyOnResize: function (e) { var tab = this.oldTab; if (tab && tab.onResize) { tab.onResize(); } }, - _storeActiveTab: function(e) { + _storeActiveTab: function (e) { localStorage.setItem(this.storageId, e.id || ''); }, - _keydownListener: function(e) { + _keydownListener: function (e) { if (BR.Util.keyboardShortcutsAllowed(e) && e.keyCode === this.options.shortcut.toggleTabs) { if ($('#sidebarTabs > ul > li[class=active]').length) { // sidebar is currently open, close current tab @@ -142,9 +142,9 @@ BR.Sidebar = L.Control.Sidebar.extend({ this.open(nextTab.attr('href').slice(1)); } } - } + }, }); -BR.sidebar = function(divId, options) { +BR.sidebar = function (divId, options) { return new BR.Sidebar(divId, options); }; diff --git a/js/plugin/TracksLoader.js b/js/plugin/TracksLoader.js index d78c888..9f53401 100644 --- a/js/plugin/TracksLoader.js +++ b/js/plugin/TracksLoader.js @@ -1,6 +1,6 @@ -BR.tracksLoader = function(map, layersControl, routing, pois) { +BR.tracksLoader = function (map, layersControl, routing, pois) { // proxy to L.geoJSON factory function, to get hold of raw GeoJSON object - var createGeoJsonLayer = function(geojson, options) { + var createGeoJsonLayer = function (geojson, options) { BR.Track.addPoiMarkers(pois, geojson); return L.geoJSON(geojson, options); @@ -15,11 +15,11 @@ BR.tracksLoader = function(map, layersControl, routing, pois) { // File size limit in kb (default: 1024) ? fileSizeLimit: 1024, shortcut: { - open: 79 // char code for 'o' - } + open: 79, // char code for 'o' + }, }, - _initContainer: function() { + _initContainer: function () { var thisLoader = this.loader; var fileInput; @@ -40,7 +40,7 @@ BR.tracksLoader = function(map, layersControl, routing, pois) { // Load on file change fileInput.addEventListener( 'change', - function() { + function () { thisLoader.loadMultiple(this.files); // reset so that the user can upload the same file again if they want to this.value = ''; @@ -50,7 +50,7 @@ BR.tracksLoader = function(map, layersControl, routing, pois) { var link = L.DomUtil.get('navbarLoadTracks'); L.DomEvent.disableClickPropagation(link); - L.DomEvent.on(link, 'click', function(e) { + L.DomEvent.on(link, 'click', function (e) { fileInput.click(); e.preventDefault(); }); @@ -60,7 +60,7 @@ BR.tracksLoader = function(map, layersControl, routing, pois) { return dummy; }, - _keydownListener: function(e) { + _keydownListener: function (e) { if (BR.Util.keyboardShortcutsAllowed(e) && e.keyCode === this.options.shortcut.open) { if (e.shiftKey) { $('#loadNogos').modal('show'); @@ -68,12 +68,12 @@ BR.tracksLoader = function(map, layersControl, routing, pois) { $('#navbarLoadTracks')[0].click(); } } - } + }, }); var tracksLoaderControl = new TracksLoader(); tracksLoaderControl.addTo(map); - tracksLoaderControl.loader.on('data:loaded', function(event) { + tracksLoaderControl.loader.on('data:loaded', function (event) { var eventLayer = event.layer, routingMarkers = []; /* disabled for now, see issue #254 @@ -101,11 +101,11 @@ BR.tracksLoader = function(map, layersControl, routing, pois) { eventLayer.addTo(map); }); - tracksLoaderControl.loader.on('data:error', function(event) { + tracksLoaderControl.loader.on('data:error', function (event) { var err = event.error; BR.message.showError( i18next.t('warning.tracks-load-error', { - error: err && err.message ? err.message : err + error: err && err.message ? err.message : err, }) ); console.error(err); diff --git a/js/plugin/leaflet-distance-marker.js b/js/plugin/leaflet-distance-marker.js index dd63a80..7c5bd06 100644 --- a/js/plugin/leaflet-distance-marker.js +++ b/js/plugin/leaflet-distance-marker.js @@ -24,7 +24,7 @@ */ L.DistanceMarkers = L.LayerGroup.extend({ - initialize: function(line, map, options) { + initialize: function (line, map, options) { options = options || {}; var offset = options.offset || 1000; var showAll = Math.min(map.getMaxZoom(), options.showAll || 12); @@ -32,7 +32,7 @@ L.DistanceMarkers = L.LayerGroup.extend({ var iconSize = options.iconSize !== undefined ? options.iconSize : [12, 12]; var textFunction = options.textFunction || - function(distance, i) { + function (distance, i) { return i; }; @@ -81,7 +81,7 @@ L.DistanceMarkers = L.LayerGroup.extend({ var currentZoomLevel = 0; var markerLayer = this; - var updateMarkerVisibility = function() { + var updateMarkerVisibility = function () { var oldZoom = currentZoomLevel; var newZoom = (currentZoomLevel = map.getZoom()); @@ -106,20 +106,20 @@ L.DistanceMarkers = L.LayerGroup.extend({ updateMarkerVisibility(); }, - setOpacity: function(opacity) { + setOpacity: function (opacity) { var i, keys = Object.keys(this._zoomLayers), l = keys.length; for (i = 0; i < l; ++i) { var zoomLayer = this._zoomLayers[keys[i]]; - zoomLayer.eachLayer(function(layer) { + zoomLayer.eachLayer(function (layer) { layer.setOpacity(opacity); }); } }, - _minimumZoomLevelForItem: function(item, showAllLevel) { + _minimumZoomLevelForItem: function (item, showAllLevel) { var zoom = showAllLevel, i = item; while (i > 0 && i % 2 === 0) { @@ -127,5 +127,5 @@ L.DistanceMarkers = L.LayerGroup.extend({ i = Math.floor(i / 2); } return zoom; - } + }, }); diff --git a/js/plugin/leaflet-fullHash.js b/js/plugin/leaflet-fullHash.js index 7c77f40..6254f62 100644 --- a/js/plugin/leaflet-fullHash.js +++ b/js/plugin/leaflet-fullHash.js @@ -1,10 +1,10 @@ -(function(window) { - var HAS_HASHCHANGE = (function() { +(function (window) { + var HAS_HASHCHANGE = (function () { var doc_mode = window.documentMode; return 'onhashchange' in window && (doc_mode === undefined || doc_mode > 7); })(); - L.Hash = function(map, options) { + L.Hash = function (map, options) { this.onHashChange = L.Util.bind(this.onHashChange, this); if (map) { @@ -12,7 +12,7 @@ } }; - L.Hash.parseHash = function(hash) { + L.Hash.parseHash = function (hash) { if (hash.indexOf('#map=') === 0) { hash = hash.substr(5); } @@ -31,7 +31,7 @@ center: new L.LatLng(lat, lon), zoom: zoom, layers: layers, - additional: additional + additional: additional, }; } } else { @@ -39,7 +39,7 @@ } }; - (L.Hash.formatHash = function(map) { + (L.Hash.formatHash = function (map) { var center = map.getCenter(), zoom = map.getZoom(), precision = Math.max(0, Math.ceil(Math.log(zoom) / Math.LN2)), @@ -57,7 +57,7 @@ }), (L.Hash.prototype = { options: { - layerSeparator: ',' + layerSeparator: ',', }, map: null, lastHash: null, @@ -65,7 +65,7 @@ parseHash: L.Hash.parseHash, formatHash: L.Hash.formatHash, - init: function(map, options) { + init: function (map, options) { this.map = map; L.Util.setOptions(this, options); @@ -78,9 +78,9 @@ } }, - _parseLayers: function(layersParam, layerSeparator) { + _parseLayers: function (layersParam, layerSeparator) { var layers = layersParam.split(layerSeparator).map( - L.bind(function(layerEncoded) { + L.bind(function (layerEncoded) { var obj = null; var layerString = decodeURIComponent(layerEncoded); @@ -95,8 +95,8 @@ return layers; }, - parseLayers: function(layersParam) { - var countFoundLayers = function(count, obj) { + parseLayers: function (layersParam) { + var countFoundLayers = function (count, obj) { if (obj) { count++; } @@ -119,14 +119,14 @@ return layers; }, - activateLayers: function(layers) { + activateLayers: function (layers) { var layersControl = this.options.layersControl; var added = false; layersControl.removeActiveLayers(); layers.forEach( - L.bind(function(obj, index, array) { + L.bind(function (obj, index, array) { if (obj) { layersControl.activateLayer(obj); if (obj && !obj.overlay) { @@ -142,14 +142,14 @@ } }, - formatLayers: function() { + formatLayers: function () { var objList = this.options.layersControl.getActiveLayers(); // exclude vector layers (loaded tracks), but not when id set (route quality coding) - objList = objList.filter(function(obj) { + objList = objList.filter(function (obj) { return obj.layer instanceof L.GridLayer || obj.layer.id; }); var layerList = objList.map( - L.bind(function(obj) { + L.bind(function (obj) { return encodeURIComponent(this.options.layersControl.toLayerString(obj)); }, this) ); @@ -157,7 +157,7 @@ return layerList.join(this.options.layerSeparator); }, - removeFrom: function(map) { + removeFrom: function (map) { if (this.changeTimeout) { clearTimeout(this.changeTimeout); } @@ -169,7 +169,7 @@ this.map = null; }, - onMapMove: function() { + onMapMove: function () { // bail if we're moving the map (updating from a hash), // or if the map is not yet loaded @@ -185,7 +185,7 @@ }, movingMap: false, - update: function() { + update: function () { var hash = location.hash; if (hash === this.lastHash) { return; @@ -221,12 +221,12 @@ // defer hash change updates every 100ms changeDefer: 100, changeTimeout: null, - onHashChange: function() { + onHashChange: function () { // throttle calls to update() so that they only happen every // `changeDefer` ms if (!this.changeTimeout) { var that = this; - this.changeTimeout = setTimeout(function() { + this.changeTimeout = setTimeout(function () { that.update(); that.changeTimeout = null; }, this.changeDefer); @@ -235,7 +235,7 @@ isListening: false, hashChangeInterval: null, - startListening: function() { + startListening: function () { this.map.on('moveend layeradd layerremove', this.onMapMove, this); if (HAS_HASHCHANGE) { @@ -247,7 +247,7 @@ this.isListening = true; }, - stopListening: function() { + stopListening: function () { this.map.off('moveend layeradd layerremove', this.onMapMove, this); if (HAS_HASHCHANGE) { @@ -258,7 +258,7 @@ this.isListening = false; }, - _keyByValue: function(obj, value) { + _keyByValue: function (obj, value) { for (var key in obj) { if (obj.hasOwnProperty(key)) { if (obj[key] === value) { @@ -268,15 +268,15 @@ } } } - } + }, }); - L.hash = function(map, options) { + L.hash = function (map, options) { return new L.Hash(map, options); }; - L.Map.prototype.addHash = function() { + L.Map.prototype.addHash = function () { this._hash = L.hash(this, this.options); }; - L.Map.prototype.removeHash = function() { + L.Map.prototype.removeHash = function () { this._hash.removeFrom(); }; })(window); diff --git a/js/plugin/stravaSegments.js b/js/plugin/stravaSegments.js index 626a9db..2f7117e 100644 --- a/js/plugin/stravaSegments.js +++ b/js/plugin/stravaSegments.js @@ -1,29 +1,29 @@ -BR.stravaSegments = function(map, layersControl) { +BR.stravaSegments = function (map, layersControl) { var stravaControl = L.control .stravaSegments({ runningTitle: i18next.t('map.strava-shortcut', { action: '$t(map.strava-running)', key: 'S' }), bikingTitle: i18next.t('map.strava-shortcut', { action: '$t(map.strava-biking)', key: 'S' }), loadingTitle: i18next.t('map.loading'), - stravaToken: BR.keys.strava + stravaToken: BR.keys.strava, }) .addTo(map); layersControl.addOverlay(stravaControl.stravaLayer, i18next.t('map.layer.strava-segments')); - stravaControl.onError = function(err) { + stravaControl.onError = function (err) { BR.message.showError( i18next.t('warning.strava-error', { - error: err && err.message ? err.message : err + error: err && err.message ? err.message : err, }) ); }; L.setOptions(this, { shortcut: { - toggleLayer: 83 // char code for 's' - } + toggleLayer: 83, // char code for 's' + }, }); // hide strava buttons when layer is inactive - var toggleStravaControl = function() { + var toggleStravaControl = function () { var stravaBar = stravaControl.runningButton.button.parentElement; stravaBar.hidden = !stravaBar.hidden; }; @@ -33,7 +33,7 @@ BR.stravaSegments = function(map, layersControl) { L.DomEvent.addListener( document, 'keydown', - function(e) { + function (e) { if (BR.Util.keyboardShortcutsAllowed(e) && e.keyCode === this.options.shortcut.toggleLayer) { if (map.hasLayer(stravaControl.stravaLayer)) { map.removeLayer(stravaControl.stravaLayer); diff --git a/js/router/BRouter.js b/js/router/BRouter.js index d8985b1..9d5d22c 100644 --- a/js/router/BRouter.js +++ b/js/router/BRouter.js @@ -3,46 +3,46 @@ L.BRouter = L.Class.extend({ // NOTE: the routing API used here is not public! // /brouter?lonlats=1.1,1.2|2.1,2.2|3.1,3.2|4.1,4.2&nogos=-1.1,-1.2,1|-2.1,-2.2,2&profile=shortest&alternativeidx=1&format=kml URL_TEMPLATE: - '/brouter?lonlats={lonlats}&nogos={nogos}&polylines={polylines}&polygons={polygons}&profile={profile}&alternativeidx={alternativeidx}&format={format}', + '/brouter?lonlats={lonlats}&profile={profile}&alternativeidx={alternativeidx}&format={format}&nogos={nogos}&polylines={polylines}&polygons={polygons}', URL_PROFILE_UPLOAD: BR.conf.host + '/brouter/profile', PRECISION: 6, NUMBER_SEPARATOR: ',', GROUP_SEPARATOR: '|', ABORTED_ERROR: 'aborted', CUSTOM_PREFIX: 'custom_', - isCustomProfile: function(profileName) { + isCustomProfile: function (profileName) { return profileName && profileName.substring(0, 7) === L.BRouter.CUSTOM_PREFIX; - } + }, }, options: {}, - initialize: function(options) { + initialize: function (options) { L.setOptions(this, options); this.queue = async.queue( - L.bind(function(task, callback) { + L.bind(function (task, callback) { this.getRoute(task.segment, callback); }, this), 1 ); // patch to call callbacks on kill for cleanup (loadingTrailer) - this.queue.kill = function() { + this.queue.kill = function () { var aborted = this.tasks; this.drain = null; this.tasks = []; - aborted.forEach(function(task) { + aborted.forEach(function (task) { task.callback(L.BRouter.ABORTED_ERROR); }); }; }, - setOptions: function(options) { + setOptions: function (options) { L.setOptions(this, options); }, - getUrlParams: function(latLngs, pois, format) { + getUrlParams: function (latLngs, pois, circlego, format) { params = {}; if (this._getLonLatsString(latLngs) != null) params.lonlats = this._getLonLatsString(latLngs); @@ -59,6 +59,8 @@ L.BRouter = L.Class.extend({ if (pois && this._getLonLatsNameString(pois) != null) params.pois = this._getLonLatsNameString(pois); + if (circlego) params.circlego = circlego; + params.alternativeidx = this.options.alternative; if (format != null) { @@ -77,7 +79,7 @@ L.BRouter = L.Class.extend({ return params; }, - parseUrlParams: function(params) { + parseUrlParams: function (params) { var opts = {}; if (params.lonlats) { opts.lonlats = this._parseLonLats(params.lonlats); @@ -100,15 +102,27 @@ L.BRouter = L.Class.extend({ if (params.pois) { opts.pois = this._parseLonLatNames(params.pois); } + if (params.circlego) { + var circlego = params.circlego.split(','); + if (circlego.length == 3) { + circlego = [ + Number.parseFloat(circlego[0]), + Number.parseFloat(circlego[1]), + Number.parseInt(circlego[2]), + ]; + opts.circlego = circlego; + } + } return opts; }, - getUrl: function(latLngs, pois, format, trackname, exportWaypoints) { - var urlParams = this.getUrlParams(latLngs, pois, format); + getUrl: function (latLngs, pois, circlego, format, trackname, exportWaypoints) { + var urlParams = this.getUrlParams(latLngs, pois, circlego, format); var args = []; if (urlParams.lonlats != null && urlParams.lonlats.length > 0) args.push(L.Util.template('lonlats={lonlats}', urlParams)); if (urlParams.pois != null && urlParams.pois.length > 0) args.push(L.Util.template('pois={pois}', urlParams)); + if (urlParams.circlego != null) args.push(L.Util.template('circlego={circlego}', urlParams)); if (urlParams.nogos != null) args.push(L.Util.template('nogos={nogos}', urlParams)); if (urlParams.polylines != null) args.push(L.Util.template('polylines={polylines}', urlParams)); if (urlParams.polygons != null) args.push(L.Util.template('polygons={polygons}', urlParams)); @@ -118,7 +132,7 @@ L.BRouter = L.Class.extend({ if (trackname) args.push( L.Util.template('trackname={trackname}', { - trackname: trackname + trackname: trackname, }) ); if (exportWaypoints) args.push('exportWaypoints=1'); @@ -128,8 +142,8 @@ L.BRouter = L.Class.extend({ return (prepend_host ? BR.conf.host : '') + '/brouter?' + args.join('&'); }, - getRoute: function(latLngs, cb) { - var url = this.getUrl(latLngs, null, 'geojson'), + getRoute: function (latLngs, cb) { + var url = this.getUrl(latLngs, null, null, 'geojson'), xhr = new XMLHttpRequest(); if (!url) { @@ -139,7 +153,7 @@ L.BRouter = L.Class.extend({ xhr.open('GET', url, true); xhr.onload = L.bind(this._handleRouteResponse, this, xhr, cb); xhr.onerror = L.bind( - function(xhr, cb) { + function (xhr, cb) { cb(BR.Util.getError(xhr)); }, this, @@ -149,7 +163,7 @@ L.BRouter = L.Class.extend({ xhr.send(); }, - _handleRouteResponse: function(xhr, cb) { + _handleRouteResponse: function (xhr, cb) { var layer, geojson; if ( @@ -175,11 +189,11 @@ L.BRouter = L.Class.extend({ } }, - getRouteSegment: function(l1, l2, cb) { + getRouteSegment: function (l1, l2, cb) { this.queue.push({ segment: [l1, l2] }, cb); }, - uploadProfile: function(profileId, profileText, cb) { + uploadProfile: function (profileId, profileText, cb) { var url = L.BRouter.URL_PROFILE_UPLOAD; xhr = new XMLHttpRequest(); @@ -190,7 +204,7 @@ L.BRouter = L.Class.extend({ xhr.open('POST', url, true); xhr.onload = L.bind(this._handleProfileResponse, this, xhr, cb); - xhr.onerror = function(evt) { + xhr.onerror = function (evt) { var xhr = this; cb(i18next.t('warning.upload-error', { error: xhr.statusText })); }; @@ -199,7 +213,7 @@ L.BRouter = L.Class.extend({ xhr.send(profileText); }, - _assignFeatures: function(segment) { + _assignFeatures: function (segment) { if (segment.feature.properties.messages) { var featureMessages = segment.feature.properties.messages, segmentLatLngs = segment.getLatLngs(), @@ -226,7 +240,7 @@ L.BRouter = L.Class.extend({ return segment; }, - _getFeature: function(featureMessage) { + _getFeature: function (featureMessage) { //["Longitude", "Latitude", "Elevation", "Distance", "CostPerKm", "ElevCost", "TurnCost", "NodeCost", "InitialCost", "WayTags", "NodeTags"] return { cost: { @@ -234,22 +248,22 @@ L.BRouter = L.Class.extend({ elev: parseInt(featureMessage[5]), turn: parseInt(featureMessage[6]), node: parseInt(featureMessage[7]), - initial: parseInt(featureMessage[8]) + initial: parseInt(featureMessage[8]), }, distance: parseInt(featureMessage[3]), wayTags: featureMessage[9], - nodeTags: featureMessage[10] + nodeTags: featureMessage[10], }; }, - _getFeatureLatLng: function(message) { + _getFeatureLatLng: function (message) { var lon = message[0] / 1000000, lat = message[1] / 1000000; return L.latLng(lat, lon); }, - _handleProfileResponse: function(xhr, cb) { + _handleProfileResponse: function (xhr, cb) { var response; if (xhr.status === 200 && xhr.responseText && xhr.responseText.length > 0) { @@ -260,7 +274,7 @@ L.BRouter = L.Class.extend({ } }, - _getLonLatsString: function(latLngs) { + _getLonLatsString: function (latLngs) { var s = ''; for (var i = 0; i < latLngs.length; i++) { s += this._formatLatLng(latLngs[i]); @@ -271,7 +285,7 @@ L.BRouter = L.Class.extend({ return s; }, - _parseLonLats: function(s) { + _parseLonLats: function (s) { var groups, numbers, lonlats = []; @@ -290,7 +304,7 @@ L.BRouter = L.Class.extend({ return lonlats; }, - _getLonLatsNameString: function(latLngNames) { + _getLonLatsNameString: function (latLngNames) { var s = ''; for (var i = 0; i < latLngNames.length; i++) { s += this._formatLatLng(latLngNames[i].latlng); @@ -304,7 +318,7 @@ L.BRouter = L.Class.extend({ return s; }, - _parseLonLatNames: function(s) { + _parseLonLatNames: function (s) { var groups, part, lonlatnames = []; @@ -323,7 +337,7 @@ L.BRouter = L.Class.extend({ return lonlatnames; }, - _getNogosString: function(nogos) { + _getNogosString: function (nogos) { var s = ''; for (var i = 0, circle; i < nogos.length; i++) { circle = nogos[i]; @@ -346,7 +360,7 @@ L.BRouter = L.Class.extend({ return s; }, - _parseNogos: function(s) { + _parseNogos: function (s) { var groups, numbers, nogos = []; @@ -372,7 +386,7 @@ L.BRouter = L.Class.extend({ return nogos; }, - _getNogosPolylinesString: function(nogos) { + _getNogosPolylinesString: function (nogos) { var s = ''; for (var i = 0, polyline, vertices; i < nogos.length; i++) { polyline = nogos[i]; @@ -399,7 +413,7 @@ L.BRouter = L.Class.extend({ return s; }, - _parseNogosPolylines: function(s) { + _parseNogosPolylines: function (s) { var groups, numbers, latlngs, @@ -425,7 +439,7 @@ L.BRouter = L.Class.extend({ return nogos; }, - _getNogosPolygonsString: function(nogos) { + _getNogosPolygonsString: function (nogos) { var s = ''; for (var i = 0, polygon, vertices; i < nogos.length; i++) { polygon = nogos[i]; @@ -452,7 +466,7 @@ L.BRouter = L.Class.extend({ return s; }, - _parseNogosPolygons: function(s) { + _parseNogosPolygons: function (s) { var groups, numbers, latlngs, @@ -479,15 +493,15 @@ L.BRouter = L.Class.extend({ }, // formats L.LatLng object as lng,lat string - _formatLatLng: function(latLng) { + _formatLatLng: function (latLng) { var s = ''; s += L.Util.formatNum(latLng.lng || latLng[1], L.BRouter.PRECISION); s += L.BRouter.NUMBER_SEPARATOR; s += L.Util.formatNum(latLng.lat || latLng[0], L.BRouter.PRECISION); return s; - } + }, }); -L.bRouter = function(options) { +L.bRouter = function (options) { return new L.BRouter(options); }; diff --git a/js/router/brouterCgi.js b/js/router/brouterCgi.js index 3cd91bf..1bb30f6 100644 --- a/js/router/brouterCgi.js +++ b/js/router/brouterCgi.js @@ -1,6 +1,6 @@ // BRouter online demo interface // TODO remove or adopt to new structure (only supports two waypoints!) -var brouterCgi = (function() { +var brouterCgi = (function () { // http://brouter.de/cgi-bin/brouter.sh?coords=13.404681_52.520185_13.340278_52.512356_trekking_0 //var URL_TEMPLATE = '/cgi-bin/proxy.cgi?url=' + 'http://brouter.de/cgi-bin/brouter.sh?coords={fromLng}_{fromLat}_{toLng}_{toLat}_{profile}_{alt}'; var URL_TEMPLATE = @@ -15,7 +15,7 @@ var brouterCgi = (function() { toLat: L.Util.formatNum(latLngs[1].lat, PRECISION), toLng: L.Util.formatNum(latLngs[1].lng, PRECISION), profile: 'trekking', - alt: '0' + alt: '0', }; var url = L.Util.template(URL_TEMPLATE, urlParams); //console.log(url); @@ -24,6 +24,6 @@ var brouterCgi = (function() { } return { - getUrl: getUrl + getUrl: getUrl, }; })(); diff --git a/js/util/Track.js b/js/util/Track.js index f806131..19734ca 100644 --- a/js/util/Track.js +++ b/js/util/Track.js @@ -9,29 +9,29 @@ BR.Track = { * * @returns {Object} to pass as `options` parameter to `L.geoJson` */ - getGeoJsonOptions: function(layersControl) { + getGeoJsonOptions: function (layersControl) { return { - style: function(geoJsonFeature) { + style: function (geoJsonFeature) { var currentLayerId = layersControl.getActiveBaseLayer().layer.id; return { color: currentLayerId === 'cyclosm' ? 'yellow' : 'blue', - weight: 4 + weight: 4, }; }, interactive: false, - filter: function(geoJsonFeature) { + filter: function (geoJsonFeature) { // remove POIs, added separately return !BR.Track.isPoiPoint(geoJsonFeature); }, - pointToLayer: function(geoJsonPoint, latlng) { + pointToLayer: function (geoJsonPoint, latlng) { // route waypoint (type=from/via/to) return L.marker(latlng, { interactive: false, opacity: 0.7, // prevent being on top of route markers - zIndexOffset: -1000 + zIndexOffset: -1000, }); - } + }, }; }, @@ -41,8 +41,8 @@ BR.Track = { * @param {BR.PoiMarkers} pois POI control instance * @param {Object} geoJson GeoJSON object */ - addPoiMarkers: function(pois, geoJson) { - turf.featureEach(geoJson, function(feature, idx) { + addPoiMarkers: function (pois, geoJson) { + turf.featureEach(geoJson, function (feature, idx) { if (BR.Track.isPoiPoint(feature)) { var coord = turf.getCoord(feature); var latlng = L.GeoJSON.coordsToLatLng(coord); @@ -61,7 +61,7 @@ BR.Track = { * * @param {Object} geoJsonPointFeature GeoJSON Point feature */ - isRouteWaypoint: function(geoJsonPointFeature) { + isRouteWaypoint: function (geoJsonPointFeature) { var props = geoJsonPointFeature.properties; if (props && props.type) { var wptType = props.type; @@ -77,7 +77,7 @@ BR.Track = { * * @param {Object} geoJsonFeature GeoJSON feature */ - isPoiPoint: function(geoJsonFeature) { + isPoiPoint: function (geoJsonFeature) { return turf.getType(geoJsonFeature) === 'Point' && !BR.Track.isRouteWaypoint(geoJsonFeature); - } + }, }; diff --git a/js/util/TrackEdges.js b/js/util/TrackEdges.js index 7815064..6602545 100644 --- a/js/util/TrackEdges.js +++ b/js/util/TrackEdges.js @@ -17,7 +17,7 @@ BR.TrackEdges = L.Class.extend({ /** * @param {Array} segments */ - initialize: function(segments) { + initialize: function (segments) { this.edges = this.getTrackEdges(segments); }, @@ -30,7 +30,7 @@ BR.TrackEdges = L.Class.extend({ * * @return {number[]} */ - getTrackEdges: function(segments) { + getTrackEdges: function (segments) { var messages, segLatLngs, length, @@ -70,10 +70,10 @@ BR.TrackEdges = L.Class.extend({ return edges; }, - getMessageLatLng: function(message) { + getMessageLatLng: function (message) { var lon = message[0] / 1000000, lat = message[1] / 1000000; return L.latLng(lat, lon); - } + }, }); diff --git a/keys.template.js b/keys.template.js index a39d13f..9c7359b 100644 --- a/keys.template.js +++ b/keys.template.js @@ -1,4 +1,4 @@ -(function() { +(function () { // COPYING: Please get your own API keys from the sites listed below BR.keys = { @@ -15,6 +15,6 @@ strava: '', // OpenMapSurfer (OpenRouteService API), https://openrouteservice.org/plans/ - openrouteservice: '' + openrouteservice: '', }; })(); diff --git a/locales/ca.json b/locales/ca.json new file mode 100644 index 0000000..91651ad --- /dev/null +++ b/locales/ca.json @@ -0,0 +1,282 @@ +{ + "about": { + "bug-reports": "Informes d'errors i petició de funcionalitats:", + "bug-reports-back": "servidor / dorsal, motor d'itineraris, aplicació Android, web brouter.de", + "bug-reports-front": "client web / frontal.", + "chat": "Xat amb usuaris i desenvolupadors", + "contact": "Contacte:", + "contact-language": "L'idioma preferit és l'anglès, ja que tenim tant contribuïdors com usuaris d'arreu del món.", + "data": "Dades:", + "data-description": "Això està basat en OpenStreetMap. Normalment s'actualitza diàriament, veure les dates a fitxers de dades.", + "description": "Serveis en línia del motor d'itineraris BRouter. Per l'aplicació Android fora de línia i més informació, veure brouter.de", + "details": "Política de privacitat, \nCrèdits,\nRegistre de canvis i\nmés informació sobre el client.", + "support": "Debats generals/preguntes, suport", + "title": "Quant a", + "tooltip": "Mostra més informació sobre BRouter-Web" + }, + "credits": { + "brouter": "BRouter", + "brouter-license": "BRouter © Arndt Brenschede", + "elevation-data": "Dades d'elevació", + "esri-license": "Imatgeria del món © Esri, fonts: Esri, DigitalGlobe, Earthstar Geographics, CNES/Airbus DS, GeoEye, USDA FSA, USGS, Getmapping, Aerogrid, IGN, IGP, i la comunitat d'usuaris de SIG", + "esri-tiles": "Imatgeria del món d'Esri", + "map-data": "Dades del mapa", + "map-tiles": "Tessel·les del mapa", + "nominatim": "Cerca per Nominatim", + "openstreetmap": "© contribuïdors d'OpenStreetMap sota ODbL" + }, + "export": { + "format": "Format", + "format_csv": "CSV", + "format_geojson": "GeoJSON", + "format_gpx": "GPX", + "format_kml": "KML", + "include": "Inclou", + "include_waypoints": "Fites", + "route-from-to": "{{from}} -> {{to}} ({{distance}}km)", + "route-loop": "{{from}} ({{distance}}km)", + "title": "Exporta la ruta", + "trackname": "Nom" + }, + "footer": { + "ascend": "Desnivell acumulat", + "cost": "Cost", + "distance": "Distància", + "elevation-chart": "Commuta el gràfic d'elevació", + "energy-per-100km": "Energia per 100 km", + "hours": "hores", + "hours-abbrev": "h", + "kilometer": "kilòmetres", + "kilometer-abbrev": "km", + "kilowatthour": "kilowatts hora", + "kilowatthour-abbrev": "kWh", + "mean-cost-factor": "Factor de cost mitjà", + "meter": "metres", + "meter-abbrev": "m", + "plain-ascend": "Desnivell final", + "stats-info": "Comenceu a dibuixar una ruta per obtenir les estadístiques", + "total-energy": "Energia total", + "travel-time": "Temps de viatge" + }, + "keyboard": { + "backspace": "Retrocés", + "escape": "Esc", + "generic-shortcut": "{{action}} ({{key}} tecla)", + "shift": "Majúscules" + }, + "layers": { + "add-base": "Afegeix una capa base", + "add-overlay": "Afegeix superposició", + "customize": "Personalitza les capes", + "opacity-slider": "Control lliscant de l'opacitat", + "placeholder-layer-name": "Nom de la capa personalitzada. (eg: OpenStreetMap)", + "placeholder-layer-url": "URL de la capa personalitzada. (eg: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png)", + "remove-selection": "Elimina la selecció" + }, + "loadNogos": { + "defaultProperties": "Propietats per defecte", + "file": "Fitxer (.geojson):", + "load": "Carrega", + "nogoBuffer": "Zona d'influència de les àrees omeses (en metres):", + "nogoRadius": "Radi de les àrees omeses per punts (en metres)", + "nogoWeight": "Pes de les àrees omeses (-1 vol dir inaccessible)", + "source": "Font", + "title": "Carrega les àrees omeses", + "url": "URL: " + }, + "map": { + "attribution-osm-long": "Contribuidors de l'OpenStreetMap", + "attribution-osm-short": "OpenStreetMap", + "clear-route": "Neteja les dades de la ruta", + "copyright": "Copyright", + "cycling": "Ciclisme", + "delete-last-point": "Esborra l'últim punt", + "delete-nogo-areas": "Esborra totes les àrees omeses", + "delete-pois": "Esborra tots els punts d'interès", + "delete-route": "Esborra la ruta", + "draw-circlego-start": "Draw limited {{radius}}km go-to zone", + "draw-circlego-stop": "Stop drawing limited {{radius}}km go-to zone", + "draw-poi-start": "Dibuixa punts d'interès", + "draw-poi-stop": "Para de dibuixar punts d'interès", + "draw-route-start": "Dibuixa una ruta", + "draw-route-stop": "Para de dibuixar la ruta", + "enter-poi-name": "Introdueix el nom del punt d'interès", + "geocoder": "Cerca", + "geocoder-placeholder": "Cerca...", + "hikebike-hillshading": "Ombreig del relleu ", + "hiking": "Excursionisme", + "layer": { + "bing": "Bing aeri", + "cycle": "OpenCycleMap (Thunderf.)", + "cycling": "Bici (camins marcats)", + "digitalglobe": "Imatgeria recent de DigitalGlobe", + "esri": "Imatgeria del món d'Esri", + "hikebike-hillshading": "Ombreig del relleu (mapa per caminades i bici)", + "hiking": "Caminada (camins marcats)", + "osm": "OpenStreetMap", + "osmde": "OpenStreetMap.de", + "outdoors": "Aire lliure (Thunderforest)", + "route-quality": "Codificació de la qualitat de la ruta", + "stamen-terrain": "Terreny (Stamen)", + "strava-segments": "Segments de Strava", + "topo": "OpenTopoMap" + }, + "loading": "Carregant...", + "locate-me": "Mostra'm on sóc", + "nogo": { + "cancel": "Cancel·la el dibuix d'àrees omeses", + "click-drag": "Cliqueu i arrossegueu per dibuixar un cercle", + "draw": "Dibuixa una àrea omesa circular", + "edit": "Cliqueu per editar", + "help": "□ = mou / redimensiona, = esborra,
clique al cercle per deixar d'editar" + }, + "opacity-slider": "Especifica la transparència de la ruta i els marcadors", + "opacity-slider-shortcut": "{{action}}\n(Mantén premuda la tecla {{key}} per silenciar temporalment)", + "preview": "Previsualitza", + "privacy": "Privacitat", + "reverse-route": "Capgira la ruta", + "route-quality-altitude": "Codificació de l'altitud", + "route-quality-cost": "Codificació del cost", + "route-quality-incline": "Codificació de la inclinació", + "route-quality-shortcut": "{{action}} ({{key}} tecla per commutar)", + "strava-biking": "Mostra els segments de bici de Strava", + "strava-running": "Mostra els segments de córrer de Strava", + "strava-shortcut": "{{action}}\n(tecla {{key}} per commutar les capes, cliqueu per recarregar l'àrea actual)", + "zoomInTitle": "Apropa", + "zoomOutTitle": "Allunya" + }, + "modal": { + "close": "Tanca" + }, + "navbar": { + "about": "Quant a", + "alternative": { + "first": "1a alternativa", + "original": "Original", + "second": "2a alternativa", + "third": "3a alternativa" + }, + "export": "Exporta", + "export-tooltip": "Exporta la ruta", + "load": { + "nogos": "Carrega les àrees omeses", + "title": "Carrega", + "tooltip": "{{tracksAction}} (tecla {{tracksKey}})\n{{nogosAction}} ({{nogosKey}})", + "tracks": "Carrega traces" + }, + "profile": { + "car-eco": "Cotxe (econòmic)", + "car-fast": "Cotxe (ràpid)", + "car-test": "Cotxe (test)", + "custom": "Personalitzat", + "fastbike": "Bici ràpida", + "fastbike-asia-pacific": "Bici ràpida (Àsia Pacífic)", + "fastbike-lowtraffic": "Bici ràpida (poc trànsit)", + "hiking-beta": "Excursionisme (beta)", + "moped": "Ciclomotor", + "rail": "Via", + "river": "Riu", + "safety": "Seguretat", + "shortest": "El més curt", + "trekking": "Trescar amb bici", + "trekking-ignore-cr": "Trescar amb bici (ignora les rutes de bici)", + "trekking-noferries": "Trescar amb bici (sense ferris)", + "trekking-nosteps": "Trescar amb bici (sense graons)", + "trekking-steep": "Trescar amb bici (dret)", + "vm-forum-liegerad-schnell": "Trescar amb bici (ràpid)", + "vm-forum-velomobil-schnell": "Velomobile (ràpid)" + }, + "profile-tooltip": "\n(tecla {{key}} per canviar)" + }, + "sidebar": { + "analysis": { + "header": { + "highway": "Autopista", + "smoothness": "Suavitat", + "surface": "Superfície" + }, + "table": { + "category": "Categoria", + "length": "Longitud", + "total_known": "Total conegut:", + "unknown": "Desconegut" + }, + "title": "Anàlisi", + "tooltip": "Analitza la ruta" + }, + "customize-profile": { + "title": "Personalitza el perfil", + "tooltip": "Personalitza el perfil" + }, + "data": { + "sync-map": "Sincronitza el mapa", + "title": "Dades", + "tooltip": "Mostra la taula de dades detallades de la ruta" + }, + "itinerary": { + "title": "Itinerari", + "tooltip": "Mostra l'itinerari" + }, + "layers": { + "category": { + "base-layers": "Capes base", + "country": "País", + "europe": "Europa", + "europe-monolingual": "Europa monolingüe", + "overlays": "Superposicions", + "worldwide": "Arreu del món", + "worldwide-international": "Arreu del món internacional", + "worldwide-monolingual": "Arreu del món monolígüe" + }, + "collapse": "Col·lapsa-ho tot", + "custom-layers": "Capes personalitzades", + "customize": "Afegeix o elimina capes personalitzades", + "expand": "Expandeix-ho tot", + "optional": "Afegeix o elimina capes opcionals", + "optional-layers": "Més", + "overlay-opacity": "Transparència de la superposició", + "table": { + "URL": "URL", + "empty": "Encara no hi ha cap capa personalitzada configurada.", + "name": "Nom", + "type": "Tipus" + }, + "title": "Capes", + "tooltip": "Seleccioneu capes" + }, + "profile": { + "apply": "Aplica", + "clear": "Neteja", + "help": "Ajuda", + "no_easy_configuration_warning": "No hi ha configuració fàcil per aquest perfil.", + "options": "Opcions", + "placeholder": "Escriviu el vostre propi perfil personalitzat aquí", + "profile": "Perfil" + }, + "tab-tooltip": "{{action}}\n(tecla {{toggleKey}} per commutar, {{switchKey}} per canviar a la pestanya següent)" + }, + "title": "Client web de BRouter", + "trackasroute": { + "explainpoi": "(mostra les fites com a PDI)", + "explaintracklayer": "(mostra traces com a capa separada)", + "file": "Fitxer de traça", + "fuzziness": "grau d'aproximació", + "pleasewait": "Espereu si us plau.", + "showpois": "PDI", + "title": "Carrega una traça com a ruta", + "tracklayer": "Capa de la traça", + "tuning": "Ajust" + }, + "warning": { + "cannot-get-route": "Error en obtenir l'URL de la ruta", + "invalid-route-from": "Start marker is too far from a route.", + "invalid-route-to": "Destination marker is too far from a route.", + "no-response": "el servidor no respon", + "no-route-found": "Error: no es pot trobar una ruta pels punts donats. Podríeu provar de moure'ls més a prop de carreteres?", + "profile-error": "Error del perfil: cap resposta o resposta buida del servidor", + "strava-error": "Error en obtenir els segments de Strava: {{error}}", + "temporary-profile": "Nota: Els perfils personalitzats carregats només es desen temporalment al servidor.
Deseu les vostres edicions al vostre ordinador.", + "tracks-load-error": "Error en carregar les traces: {{error}}", + "upload-error": "Error de càrrega: {{error}}" + } +} diff --git a/locales/de.json b/locales/de.json index e17e7fb..9703de0 100644 --- a/locales/de.json +++ b/locales/de.json @@ -94,6 +94,8 @@ "delete-nogo-areas": "Alle No-go-Areas löschen", "delete-pois": "Alle POI löschen", "delete-route": "Route löschen", + "draw-circlego-start": "Draw limited {{radius}}km go-to zone", + "draw-circlego-stop": "Stop drawing limited {{radius}}km go-to zone", "draw-poi-start": "POI einzeichnen", "draw-poi-stop": "Einzeichnen der POI beenden", "draw-route-start": "Route zeichnen", @@ -267,6 +269,8 @@ }, "warning": { "cannot-get-route": "Fehler beim Abrufen der Routen-URL", + "invalid-route-from": "Start marker is too far from a route.", + "invalid-route-to": "Destination marker is too far from a route.", "no-response": "Keine Antwort vom Server", "no-route-found": "Fehler: kann für angegebene Punkte keine Route finden. Vielleicht die Punkte näher an Straßen verschieben?", "profile-error": "Profil-Fehler: keine oder leere Antwort vom Server", diff --git a/locales/en.json b/locales/en.json index 89da476..5374acc 100644 --- a/locales/en.json +++ b/locales/en.json @@ -94,6 +94,8 @@ "delete-nogo-areas": "Delete all no-go areas", "delete-pois": "Delete all points of interest", "delete-route": "Delete route", + "draw-circlego-start": "Draw limited {{radius}}km go-to zone", + "draw-circlego-stop": "Stop drawing limited {{radius}}km go-to zone", "draw-poi-start": "Draw points of interest", "draw-poi-stop": "Stop drawing points of interest", "draw-route-start": "Draw route", @@ -258,7 +260,7 @@ "explainpoi": "(show waypoints as POI's)", "explaintracklayer": "(show Track as separate Layer)", "file": "Trackfile", - "fuzziness": "fuzzines", + "fuzziness": "fuzziness", "pleasewait": "Please wait!", "showpois": "POI's", "title": "Load Track as Route", @@ -267,6 +269,8 @@ }, "warning": { "cannot-get-route": "Error getting route URL", + "invalid-route-from": "Start marker is too far from a route.", + "invalid-route-to": "Destination marker is too far from a route.", "no-response": "no response from server", "no-route-found": "Error: cannot find a route for given points. Maybe try to move them closer to roads?", "profile-error": "Profile error: no or empty response from server", diff --git a/locales/eo.json b/locales/eo.json index 2e8fa60..d57d346 100644 --- a/locales/eo.json +++ b/locales/eo.json @@ -94,6 +94,8 @@ "delete-nogo-areas": "Delete all no-go areas", "delete-pois": "Delete all points of interest", "delete-route": "Delete route", + "draw-circlego-start": "Draw limited {{radius}}km go-to zone", + "draw-circlego-stop": "Stop drawing limited {{radius}}km go-to zone", "draw-poi-start": "Draw points of interest", "draw-poi-stop": "Stop drawing points of interest", "draw-route-start": "Draw route", @@ -258,7 +260,7 @@ "explainpoi": "(show waypoints as POI's)", "explaintracklayer": "(show Track as separate Layer)", "file": "Trackfile", - "fuzziness": "fuzzines", + "fuzziness": "fuzziness", "pleasewait": "Please wait!", "showpois": "POI's", "title": "Load Track as Route", @@ -267,6 +269,8 @@ }, "warning": { "cannot-get-route": "Error getting route URL", + "invalid-route-from": "Start marker is too far from a route.", + "invalid-route-to": "Destination marker is too far from a route.", "no-response": "no response from server", "no-route-found": "Error: cannot find a route for given points. Maybe try to move them closer to roads?", "profile-error": "Profile error: no or empty response from server", diff --git a/locales/es_ES.json b/locales/es_ES.json index 13d0174..d628c68 100644 --- a/locales/es_ES.json +++ b/locales/es_ES.json @@ -94,6 +94,8 @@ "delete-nogo-areas": "Eliminar todas las áreas prohibidas", "delete-pois": "Eliminar todos los Puntos de Interés", "delete-route": "Eliminar ruta", + "draw-circlego-start": "Draw limited {{radius}}km go-to zone", + "draw-circlego-stop": "Stop drawing limited {{radius}}km go-to zone", "draw-poi-start": "Draw points of interest", "draw-poi-stop": "Stop drawing points of interest", "draw-route-start": "Draw route", @@ -258,7 +260,7 @@ "explainpoi": "(show waypoints as POI's)", "explaintracklayer": "(show Track as separate Layer)", "file": "Trackfile", - "fuzziness": "fuzzines", + "fuzziness": "fuzziness", "pleasewait": "Please wait!", "showpois": "POI's", "title": "Load Track as Route", @@ -267,6 +269,8 @@ }, "warning": { "cannot-get-route": "Error al obtener la URL de ruta", + "invalid-route-from": "Start marker is too far from a route.", + "invalid-route-to": "Destination marker is too far from a route.", "no-response": "sin respuesta del servidor", "no-route-found": "Error: no se puede encontrar una ruta para los puntos dados. ¿Quizás intentando acercarlos a las carreteras?", "profile-error": "Error de perfil: no o respuesta vacía del servidor", diff --git a/locales/fa.json b/locales/fa.json index bb80ba6..d67a164 100644 --- a/locales/fa.json +++ b/locales/fa.json @@ -94,6 +94,8 @@ "delete-nogo-areas": "Delete all no-go areas", "delete-pois": "Delete all points of interest", "delete-route": "Delete route", + "draw-circlego-start": "Draw limited {{radius}}km go-to zone", + "draw-circlego-stop": "Stop drawing limited {{radius}}km go-to zone", "draw-poi-start": "Draw points of interest", "draw-poi-stop": "Stop drawing points of interest", "draw-route-start": "Draw route", @@ -258,7 +260,7 @@ "explainpoi": "(show waypoints as POI's)", "explaintracklayer": "(show Track as separate Layer)", "file": "Trackfile", - "fuzziness": "fuzzines", + "fuzziness": "fuzziness", "pleasewait": "Please wait!", "showpois": "POI's", "title": "Load Track as Route", @@ -267,6 +269,8 @@ }, "warning": { "cannot-get-route": "Error getting route URL", + "invalid-route-from": "Start marker is too far from a route.", + "invalid-route-to": "Destination marker is too far from a route.", "no-response": "no response from server", "no-route-found": "Error: cannot find a route for given points. Maybe try to move them closer to roads?", "profile-error": "Profile error: no or empty response from server", diff --git a/locales/fr.json b/locales/fr.json index 96c0c28..7a22108 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -3,16 +3,16 @@ "bug-reports": "Rapporter un problème ou une amélioration :", "bug-reports-back": "serveur, moteur de routage, appli Android, profils, site brouter.de ;", "bug-reports-front": "client web.", - "chat": "Discuter avec d'autres utilisateurs et développeurs", + "chat": "Discuter avec d'autres utilisateurs et développeurs ;", "contact": "Contact :", - "contact-language": "Preferred language is English, as we have both international contributors and users.", + "contact-language": "L'anglais est à privilégier pour les échanges, car les développeurs et utilisateurs viennent du monde entier.", "data": "Données :", "data-description": "Les données reposent sur OpenStreetMap. La mise à jour est généralement quotidienne, voir les fichiers de données. ", "description": "Service web pour le moteur de routage BRouter. Pour l'appli Android et de plus amples informations, voir brouter.de.", "details": "Respect de la vie privée, \nCrédits,\nChangements et\nplus d'infos sur le client web.", - "support": "Discussions/Questions générales, support ;", + "support": "Discussions et questions générales, support ;", "title": "À propos", - "tooltip": "Show more information about BRouter-Web" + "tooltip": "Afficher plus d'informations à propos de BRouter-Web" }, "credits": { "brouter": "BRouter", @@ -42,7 +42,7 @@ "ascend": "Dénivelé cumulé", "cost": "Coût", "distance": "Distance", - "elevation-chart": "Toggle elevation chart", + "elevation-chart": "Inverser l'affichage du profil altimétrique", "energy-per-100km": "pour 100km", "hours": "heures", "hours-abbrev": "h", @@ -59,10 +59,10 @@ "travel-time": "Temps de trajet" }, "keyboard": { - "backspace": "Backspace", - "escape": "Escape", - "generic-shortcut": "{{action}} ({{key}} key)", - "shift": "Shift" + "backspace": "Retour chariot", + "escape": "Échap", + "generic-shortcut": "{{action}} (touche {{key}})", + "shift": "Maj" }, "layers": { "add-base": "Ajouter un fond de carte ", @@ -94,13 +94,15 @@ "delete-nogo-areas": "Supprimer toutes les zones interdites", "delete-pois": "Supprimer tous les points d'intérêt ", "delete-route": "Supprimer l'itinéraire", - "draw-poi-start": "Draw points of interest", - "draw-poi-stop": "Stop drawing points of interest", - "draw-route-start": "Draw route", - "draw-route-stop": "Stop drawing route", + "draw-circlego-start": "Ajouter une zone limite de {{radius}} km", + "draw-circlego-stop": "Arrêter l'ajout d'une zone limite de {{radius}} km", + "draw-poi-start": "Ajouter des points d'intérêt", + "draw-poi-stop": "Arrêter l'ajout de points d'intérêt", + "draw-route-start": "Dessiner l'itinéraire", + "draw-route-stop": "Arrêter de dessiner l'itinéraire", "enter-poi-name": "Saisir le nom du point d'intérêt", - "geocoder": "Search", - "geocoder-placeholder": "Search…", + "geocoder": "Rechercher", + "geocoder-placeholder": "Rechercher…", "hikebike-hillshading": "Relief avec ombre", "hiking": "Randonnée", "layer": { @@ -124,22 +126,22 @@ "nogo": { "cancel": "Annuler la zone interdite", "click-drag": "Cliquer et faire glisser pour dessiner un cercle", - "draw": "Draw circular no-go area", + "draw": "Dessiner une zone interdite circulaire", "edit": "Cliquer pour éditer", "help": "□ = déplacer / redimensionner, = supprimer,
cliquer sur le cercle pour arrêter l'édition" }, - "opacity-slider": "Set transparency of route track and markers", - "opacity-slider-shortcut": "{{action}}\n(Hold {{key}} key to mute temporarily)", + "opacity-slider": "Définie l'opacité de l'itinéraire et des marqueurs", + "opacity-slider-shortcut": "{{action}}\n(Maintenir la touche {{key}} pour masquer temporairement)", "preview": "Prévisualiser", "privacy": "Vie privée", "reverse-route": "Inverse l'itinéraire", "route-quality-altitude": "Chiffrage de l'altitude", "route-quality-cost": "Chiffrage du coût", "route-quality-incline": "Chiffrage d'inclinaison", - "route-quality-shortcut": "{{action}} ({{key}} key to toggle)", + "route-quality-shortcut": "{{action}} (touche {{key}} pour basculer)", "strava-biking": "Afficher les segments Strava vélo", "strava-running": "Afficher les segments Strava à pied", - "strava-shortcut": "{{action}}\n({{key}} key to toggle layer, click to reload for current area)", + "strava-shortcut": "{{action}}\n(touche {{key}} pour basculer de calque, cliquer pour recharger la zone actuelle)", "zoomInTitle": "Zoomer", "zoomOutTitle": "Dézoomer" }, @@ -155,12 +157,12 @@ "third": "3ème alternative" }, "export": "Exporter", - "export-tooltip": "Export route", + "export-tooltip": "Exporter l'itinéraire", "load": { - "nogos": "Load no-go areas", + "nogos": "Charger des zones interdites", "title": "Charger", - "tooltip": "{{tracksAction}} ({{tracksKey}} key)\n{{nogosAction}} ({{nogosKey}})", - "tracks": "Load tracks" + "tooltip": "{{tracksAction}} (touche {{tracksKey}} )\n{{nogosAction}} ({{nogosKey}})", + "tracks": "Charger des traces" }, "profile": { "car-eco": "Voiture (économique)", @@ -184,36 +186,36 @@ "vm-forum-liegerad-schnell": "Vélo couché (rapide)", "vm-forum-velomobil-schnell": "Vélomobile (rapide)" }, - "profile-tooltip": "\n({{key}} key to switch)" + "profile-tooltip": "\n(touche {{key}} pour échanger)" }, "sidebar": { "analysis": { "header": { - "highway": "Highway", - "smoothness": "Smoothness", - "surface": "Surface" + "highway": "Grande route", + "smoothness": "Qualité de roulage", + "surface": "Revêtement" }, "table": { - "category": "Category", - "length": "Length", - "total_known": "Total Known:", - "unknown": "Unknown" + "category": "Catégorie", + "length": "Longueur", + "total_known": "Total connu :", + "unknown": "Inconnu" }, - "title": "Analysis", - "tooltip": "Analyse route" + "title": "Analyse", + "tooltip": "Analyse de l'itinéraire" }, "customize-profile": { "title": "Personnaliser le profil", - "tooltip": "Customize profile" + "tooltip": "Personnaliser le profil" }, "data": { "sync-map": "Synchroniser la carte", "title": "Données", - "tooltip": "Show detailed route data table" + "tooltip": "Afficher la table des données de l'itinéraire détaillé" }, "itinerary": { "title": "Itinéraire", - "tooltip": "Show itinerary" + "tooltip": "Afficher l'itinéraire" }, "layers": { "category": { @@ -240,7 +242,7 @@ "type": "Type" }, "title": "Calques", - "tooltip": "Select layers" + "tooltip": "Sélection des calques" }, "profile": { "apply": "Appliquer", @@ -251,22 +253,24 @@ "placeholder": "Saisissez votre profil personnalisé ici.", "profile": "Profil" }, - "tab-tooltip": "{{action}}\n({{toggleKey}} key to toggle, {{switchKey}} to switch to next tab)" + "tab-tooltip": "{{action}}\n(touche {{toggleKey}} pour basculer, {{switchKey}} pour passer à l'onglet suivant)" }, "title": "Client web BRouter", "trackasroute": { - "explainpoi": "(show waypoints as POI's)", - "explaintracklayer": "(show Track as separate Layer)", - "file": "Trackfile", - "fuzziness": "fuzzines", - "pleasewait": "Please wait!", - "showpois": "POI's", - "title": "Load Track as Route", - "tracklayer": "Track Layer", - "tuning": "Tuning" + "explainpoi": "(afficher les points de passage comme des PIs)", + "explaintracklayer": "(afficher la piste comme un calque distinct)", + "file": "Fichier de piste", + "fuzziness": "flou", + "pleasewait": "Merci de patienter !", + "showpois": "PIs", + "title": "Charger la trace comme itinéraire", + "tracklayer": "Calque de trace", + "tuning": "Réglages" }, "warning": { "cannot-get-route": "Erreur lors de la réception de l'itinéraire", + "invalid-route-from": "Le départ est trop éloigné d'une route.", + "invalid-route-to": "L'arrivée est trop éloignée d'une route.", "no-response": "aucune réponse du serveur", "no-route-found": "Erreur : impossible de trouver un itinéraire correspondant aux points donnés. Essayez peut-être de rapprocher les points des routes ?", "profile-error": "Erreur de profil : pas de réponse ou réponse invalide du serveur", diff --git a/locales/gl.json b/locales/gl.json index 362d81e..858e5d4 100644 --- a/locales/gl.json +++ b/locales/gl.json @@ -94,6 +94,8 @@ "delete-nogo-areas": "Delete all no-go areas", "delete-pois": "Delete all points of interest", "delete-route": "Delete route", + "draw-circlego-start": "Draw limited {{radius}}km go-to zone", + "draw-circlego-stop": "Stop drawing limited {{radius}}km go-to zone", "draw-poi-start": "Draw points of interest", "draw-poi-stop": "Stop drawing points of interest", "draw-route-start": "Draw route", @@ -258,7 +260,7 @@ "explainpoi": "(show waypoints as POI's)", "explaintracklayer": "(show Track as separate Layer)", "file": "Trackfile", - "fuzziness": "fuzzines", + "fuzziness": "fuzziness", "pleasewait": "Please wait!", "showpois": "POI's", "title": "Load Track as Route", @@ -267,6 +269,8 @@ }, "warning": { "cannot-get-route": "Error getting route URL", + "invalid-route-from": "Start marker is too far from a route.", + "invalid-route-to": "Destination marker is too far from a route.", "no-response": "no response from server", "no-route-found": "Error: cannot find a route for given points. Maybe try to move them closer to roads?", "profile-error": "Profile error: no or empty response from server", diff --git a/locales/hu.json b/locales/hu.json index 22a9385..ebb88a5 100644 --- a/locales/hu.json +++ b/locales/hu.json @@ -94,6 +94,8 @@ "delete-nogo-areas": "Minden elkerülendő terület törlése", "delete-pois": "Minden érdekes pont (POI) törlése", "delete-route": "Útvonal törlése", + "draw-circlego-start": "Draw limited {{radius}}km go-to zone", + "draw-circlego-stop": "Stop drawing limited {{radius}}km go-to zone", "draw-poi-start": "Érdekes pontok (POI-k) rajzolása", "draw-poi-stop": "Érdekes pontok rajzolásának megszakítása", "draw-route-start": "Útvonal rajzolása", @@ -267,6 +269,8 @@ }, "warning": { "cannot-get-route": "Hiba történt az útvonal URL-jének beolvasásakor", + "invalid-route-from": "Start marker is too far from a route.", + "invalid-route-to": "Destination marker is too far from a route.", "no-response": "a kiszolgáló nem válaszol", "no-route-found": "Hiba: az adott pontokhoz nem sikerül útvonalat találni. Esetleg próbálja meg közelebb tenni őket az utakhoz.", "profile-error": "Profilhiba: a kiszolgáló nem válaszol vagy üres választ küld", diff --git a/locales/is.json b/locales/is.json index e8e26ca..e0d235f 100644 --- a/locales/is.json +++ b/locales/is.json @@ -94,6 +94,8 @@ "delete-nogo-areas": "Eyða öllum bannsvæðum", "delete-pois": "Eyða öllum merkisstöðum", "delete-route": "Eyða leið", + "draw-circlego-start": "Draw limited {{radius}}km go-to zone", + "draw-circlego-stop": "Stop drawing limited {{radius}}km go-to zone", "draw-poi-start": "Draw points of interest", "draw-poi-stop": "Stop drawing points of interest", "draw-route-start": "Teikna leið", @@ -258,7 +260,7 @@ "explainpoi": "(show waypoints as POI's)", "explaintracklayer": "(show Track as separate Layer)", "file": "Trackfile", - "fuzziness": "fuzzines", + "fuzziness": "fuzziness", "pleasewait": "Please wait!", "showpois": "POI's", "title": "Load Track as Route", @@ -267,6 +269,8 @@ }, "warning": { "cannot-get-route": "Villa við að ná í URL-slóð leiðar", + "invalid-route-from": "Start marker is too far from a route.", + "invalid-route-to": "Destination marker is too far from a route.", "no-response": "ekkert svar frá netþjóni", "no-route-found": "Villa: fann ekki leið fyrir uppgefna punkta. Kannski ættirðu að prófa að færa þá nær vegum?", "profile-error": "Villa í notkunarsniði: ekkert eða tómt svar frá netþjóni", diff --git a/locales/nb.json b/locales/nb.json index 48eb791..3c1e366 100644 --- a/locales/nb.json +++ b/locales/nb.json @@ -94,6 +94,8 @@ "delete-nogo-areas": "Slett alle no-go områder", "delete-pois": "Slett alle interessepunkter", "delete-route": "Slett rute", + "draw-circlego-start": "Draw limited {{radius}}km go-to zone", + "draw-circlego-stop": "Stop drawing limited {{radius}}km go-to zone", "draw-poi-start": "Draw points of interest", "draw-poi-stop": "Stop drawing points of interest", "draw-route-start": "Draw route", @@ -258,7 +260,7 @@ "explainpoi": "(show waypoints as POI's)", "explaintracklayer": "(show Track as separate Layer)", "file": "Trackfile", - "fuzziness": "fuzzines", + "fuzziness": "fuzziness", "pleasewait": "Please wait!", "showpois": "POI's", "title": "Load Track as Route", @@ -267,6 +269,8 @@ }, "warning": { "cannot-get-route": "Feil under mottak av rute-URL", + "invalid-route-from": "Start marker is too far from a route.", + "invalid-route-to": "Destination marker is too far from a route.", "no-response": "ingen svar fra serveren", "no-route-found": "Error: cannot find a route for given points. Maybe try to move them closer to roads?", "profile-error": "Profile error: no or empty response from server", diff --git a/locales/nl.json b/locales/nl.json index 88a723d..cc36b43 100644 --- a/locales/nl.json +++ b/locales/nl.json @@ -94,6 +94,8 @@ "delete-nogo-areas": "Verwijder alle no-go gebieden", "delete-pois": "Delete all points of interest", "delete-route": "Verwijder route", + "draw-circlego-start": "Draw limited {{radius}}km go-to zone", + "draw-circlego-stop": "Stop drawing limited {{radius}}km go-to zone", "draw-poi-start": "Draw points of interest", "draw-poi-stop": "Stop drawing points of interest", "draw-route-start": "Teken route", @@ -258,7 +260,7 @@ "explainpoi": "(show waypoints as POI's)", "explaintracklayer": "(show Track as separate Layer)", "file": "Trackfile", - "fuzziness": "fuzzines", + "fuzziness": "fuzziness", "pleasewait": "Please wait!", "showpois": "POI's", "title": "Load Track as Route", @@ -267,6 +269,8 @@ }, "warning": { "cannot-get-route": "Fout bij ophalen route URL", + "invalid-route-from": "Start marker is too far from a route.", + "invalid-route-to": "Destination marker is too far from a route.", "no-response": "geen antwoord van server", "no-route-found": "Fout: Kan geen route vinden voor de gegeven punten.\nProbeer de punten dichter bij wegen te plaatsen", "profile-error": "Profielfout: geen of leeg antwoord van server", diff --git a/locales/pl.json b/locales/pl.json index 89c38ea..05b76aa 100644 --- a/locales/pl.json +++ b/locales/pl.json @@ -94,6 +94,8 @@ "delete-nogo-areas": "Usuń wszystkie strefy no-go", "delete-pois": "Usuń wszystkie punkty zainteresowania", "delete-route": "Usunąć trasę?", + "draw-circlego-start": "Draw limited {{radius}}km go-to zone", + "draw-circlego-stop": "Stop drawing limited {{radius}}km go-to zone", "draw-poi-start": "Draw points of interest", "draw-poi-stop": "Stop drawing points of interest", "draw-route-start": "Draw route", @@ -258,7 +260,7 @@ "explainpoi": "(show waypoints as POI's)", "explaintracklayer": "(show Track as separate Layer)", "file": "Trackfile", - "fuzziness": "fuzzines", + "fuzziness": "fuzziness", "pleasewait": "Please wait!", "showpois": "POI's", "title": "Load Track as Route", @@ -267,6 +269,8 @@ }, "warning": { "cannot-get-route": "Błąd pobierania URL trasy", + "invalid-route-from": "Start marker is too far from a route.", + "invalid-route-to": "Destination marker is too far from a route.", "no-response": "brak odpowiedzi z serwera", "no-route-found": "Błąd: nie można znaleźć trasy dla zadanych punktów. Spróbuj przesunąć je bliżej dróg.", "profile-error": "Błąd profilu: brak lub pusta odpowiedź z serwera", diff --git a/locales/pt.json b/locales/pt.json index d64bdd4..2b99c27 100644 --- a/locales/pt.json +++ b/locales/pt.json @@ -94,6 +94,8 @@ "delete-nogo-areas": "Delete all no-go areas", "delete-pois": "Delete all points of interest", "delete-route": "Delete route", + "draw-circlego-start": "Draw limited {{radius}}km go-to zone", + "draw-circlego-stop": "Stop drawing limited {{radius}}km go-to zone", "draw-poi-start": "Draw points of interest", "draw-poi-stop": "Stop drawing points of interest", "draw-route-start": "Draw route", @@ -258,7 +260,7 @@ "explainpoi": "(show waypoints as POI's)", "explaintracklayer": "(show Track as separate Layer)", "file": "Trackfile", - "fuzziness": "fuzzines", + "fuzziness": "fuzziness", "pleasewait": "Please wait!", "showpois": "POI's", "title": "Load Track as Route", @@ -267,6 +269,8 @@ }, "warning": { "cannot-get-route": "Error getting route URL", + "invalid-route-from": "Start marker is too far from a route.", + "invalid-route-to": "Destination marker is too far from a route.", "no-response": "no response from server", "no-route-found": "Error: cannot find a route for given points. Maybe try to move them closer to roads?", "profile-error": "Profile error: no or empty response from server", diff --git a/locales/ru_RU.json b/locales/ru_RU.json index 64ac57e..06dcb66 100644 --- a/locales/ru_RU.json +++ b/locales/ru_RU.json @@ -94,6 +94,8 @@ "delete-nogo-areas": "Удалить все запретные зоны", "delete-pois": "Delete all points of interest", "delete-route": "Удалить маршрут", + "draw-circlego-start": "Draw limited {{radius}}km go-to zone", + "draw-circlego-stop": "Stop drawing limited {{radius}}km go-to zone", "draw-poi-start": "Draw points of interest", "draw-poi-stop": "Stop drawing points of interest", "draw-route-start": "Draw route", @@ -258,7 +260,7 @@ "explainpoi": "(show waypoints as POI's)", "explaintracklayer": "(show Track as separate Layer)", "file": "Trackfile", - "fuzziness": "fuzzines", + "fuzziness": "fuzziness", "pleasewait": "Please wait!", "showpois": "POI's", "title": "Load Track as Route", @@ -267,6 +269,8 @@ }, "warning": { "cannot-get-route": "Ошибка при получении URL маршрута", + "invalid-route-from": "Start marker is too far from a route.", + "invalid-route-to": "Destination marker is too far from a route.", "no-response": "сервер не отвечает", "no-route-found": "Ошибка: не удается найти маршрут для заданных точек. Может быть, попытаться переместить их ближе к дорогам?", "profile-error": "Ошибка профиля: не удалось получить ответ сервера либо получен пустой ответ.", diff --git a/locales/tr.json b/locales/tr.json index 22824ff..6981624 100644 --- a/locales/tr.json +++ b/locales/tr.json @@ -94,6 +94,8 @@ "delete-nogo-areas": "Delete all no-go areas", "delete-pois": "Delete all points of interest", "delete-route": "Delete route", + "draw-circlego-start": "Draw limited {{radius}}km go-to zone", + "draw-circlego-stop": "Stop drawing limited {{radius}}km go-to zone", "draw-poi-start": "Draw points of interest", "draw-poi-stop": "Stop drawing points of interest", "draw-route-start": "Draw route", @@ -258,7 +260,7 @@ "explainpoi": "(show waypoints as POI's)", "explaintracklayer": "(show Track as separate Layer)", "file": "Trackfile", - "fuzziness": "fuzzines", + "fuzziness": "fuzziness", "pleasewait": "Please wait!", "showpois": "POI's", "title": "Load Track as Route", @@ -267,6 +269,8 @@ }, "warning": { "cannot-get-route": "Error getting route URL", + "invalid-route-from": "Start marker is too far from a route.", + "invalid-route-to": "Destination marker is too far from a route.", "no-response": "no response from server", "no-route-found": "Error: cannot find a route for given points. Maybe try to move them closer to roads?", "profile-error": "Profile error: no or empty response from server", diff --git a/locales/zh-TW.json b/locales/zh-TW.json index 9dbfa1c..e82164a 100644 --- a/locales/zh-TW.json +++ b/locales/zh-TW.json @@ -94,6 +94,8 @@ "delete-nogo-areas": "Delete all no-go areas", "delete-pois": "Delete all points of interest", "delete-route": "Delete route", + "draw-circlego-start": "Draw limited {{radius}}km go-to zone", + "draw-circlego-stop": "Stop drawing limited {{radius}}km go-to zone", "draw-poi-start": "Draw points of interest", "draw-poi-stop": "Stop drawing points of interest", "draw-route-start": "Draw route", @@ -258,7 +260,7 @@ "explainpoi": "(show waypoints as POI's)", "explaintracklayer": "(show Track as separate Layer)", "file": "Trackfile", - "fuzziness": "fuzzines", + "fuzziness": "fuzziness", "pleasewait": "Please wait!", "showpois": "POI's", "title": "Load Track as Route", @@ -267,6 +269,8 @@ }, "warning": { "cannot-get-route": "取得路線URL時發生錯誤", + "invalid-route-from": "Start marker is too far from a route.", + "invalid-route-to": "Destination marker is too far from a route.", "no-response": "伺服器沒有回應", "no-route-found": "錯誤: 無法就給予的端點建立路線。或者嘗試將它們移近至道路附近?", "profile-error": "設定檔錯誤: 伺服器回傳空值或沒有回應", diff --git a/package.json b/package.json index 7bad1d8..d372fe5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "brouter-web", - "version": "0.13.0", + "version": "0.14.0", "description": "Web client for BRouter", "main": "js/index.js", "scripts": { @@ -50,9 +50,9 @@ "datatables": "~1.10.18", "font-awesome": "^4.7.0", "geo-data-exchange": "alexcojocaru/geo-data-exchange#v1.1.0", - "i18next": "^15.0.4", - "i18next-browser-languagedetector": "^3.0.1", - "i18next-xhr-backend": "^2.0.1", + "i18next": "^19.8.4", + "i18next-browser-languagedetector": "^6.0.1", + "i18next-xhr-backend": "^3.2.2", "jquery": "3.5.1", "jquery-i18next": "^1.2.1", "jstree": "^3.3.8", @@ -73,47 +73,46 @@ "leaflet.snogylop": "^0.4.0", "leaflet.stravasegments": "2.3.2", "mapbbcode": "MapBBCode/mapbbcode#v1.2.0", - "promise-polyfill": "^8.1.0", - "tether": "1.4.5", + "promise-polyfill": "^8.2.0", "url-search-params": "~0.5.0", - "whatwg-fetch": "^3.0.0" + "whatwg-fetch": "^3.5.0" }, "devDependencies": { "autoprefixer": "^8.1.0", - "browser-sync": "^2.26.7", + "browser-sync": "^2.26.13", "del": "^1.1.1", - "eslint": "^6.6.0", + "eslint": "^7.15.0", "eslint-plugin-compat": "^3.3.0", "gulp": "^4.0.2", - "gulp-bump": "^2.7.0", + "gulp-bump": "^3.2.0", "gulp-cached": "^1.0.4", - "gulp-clean-css": "^4.0.0", + "gulp-clean-css": "^4.3.0", "gulp-concat": "^2.5.2", "gulp-confirm": "^1.0.6", - "gulp-debug": "^2.0.1", - "gulp-git": "^2.2.0", + "gulp-debug": "^4.0.0", + "gulp-git": "^2.10.1", "gulp-github-release": "^1.2.1", - "gulp-if": "^2.0.0", - "gulp-inject": "^1.2.0", + "gulp-if": "^3.0.0", + "gulp-inject": "^5.0.5", "gulp-json-concat": "^0.1.1", "gulp-modify-css-urls": "^2.0.0", - "gulp-postcss": "^7.0.1", - "gulp-remember": "^0.3.0", - "gulp-rename": "^1.4.0", - "gulp-replace": "^0.5.4", - "gulp-sourcemaps": "^1.5.1", - "gulp-uglify": "^1.1.0", + "gulp-postcss": "^9.0.0", + "gulp-remember": "^1.0.1", + "gulp-rename": "^2.0.0", + "gulp-replace": "^1.0.0", + "gulp-sourcemaps": "^3.0.0", + "gulp-uglify": "^3.0.2", "gulp-util": "^3.0.7", - "gulp-zip": "^4.0.0", - "husky": "^2.3.0", - "i18next-scanner": "^2.9.1", + "gulp-zip": "^5.0.2", + "husky": "^4.3.4", + "i18next-scanner": "^3.0.0", "merge-stream": "^2.0.0", "node-fetch": "^2.6.1", - "npmfiles": "^0.1.1", + "npmfiles": "^0.1.3", "patch-package": "~6.2.2", "postinstall-postinstall": "~2.1.0", - "prettier": "^1.17.1", - "pretty-quick": "^1.10.0" + "prettier": "^2.2.1", + "pretty-quick": "^3.1.0" }, "overrides": { "leaflet": { diff --git a/yarn.lock b/yarn.lock index 5d4183b..118aa79 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18,12 +18,12 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/runtime@^7.3.1": - version "7.3.1" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.3.1.tgz#574b03e8e8a9898eaf4a872a92ea20b7846f6f2a" - integrity sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA== +"@babel/runtime@^7.12.0", "@babel/runtime@^7.5.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" + integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== dependencies: - regenerator-runtime "^0.12.0" + regenerator-runtime "^0.13.4" "@babel/runtime@^7.4.5": version "7.6.2" @@ -37,7 +37,34 @@ resolved "https://registry.yarnpkg.com/@bagage/leaflet.restoreview/-/leaflet.restoreview-1.0.1.tgz#29597ad80f6af4c2a4b4d80afe0ca8a6e3d58bb7" integrity sha512-9cdJ7mreceVP8QbE9zUH/AfmYmKAYn9sR2R5bHepUEKpEvZfUevhnHF0qrrDx5tEld8yTrZWURE/xftIQJxzTw== -"@gulp-sourcemaps/map-sources@1.X": +"@eslint/eslintrc@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.2.tgz#d01fc791e2fc33e88a29d6f3dc7e93d0cd784b76" + integrity sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + lodash "^4.17.19" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@gulp-sourcemaps/identity-map@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/identity-map/-/identity-map-2.0.1.tgz#a6e8b1abec8f790ec6be2b8c500e6e68037c0019" + integrity sha512-Tb+nSISZku+eQ4X1lAkevcQa+jknn/OVUgZ3XCxEKIsLsqYuPoJwJOPQeaOk75X3WPftb29GWY1eqE7GLsXb1Q== + dependencies: + acorn "^6.4.1" + normalize-path "^3.0.0" + postcss "^7.0.16" + source-map "^0.6.0" + through2 "^3.0.1" + +"@gulp-sourcemaps/map-sources@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz#890ae7c5d8c877f6d384860215ace9d7ec945bda" integrity sha1-iQrnxdjId/bThIYCFazp1+yUW9o= @@ -1231,10 +1258,15 @@ "@turf/invariant" "^5.1.5" d3-voronoi "1.1.2" -"@types/normalize-package-data@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== +"@types/minimatch@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@yarnpkg/lockfile@^1.1.0": version "1.1.0" @@ -1267,83 +1299,70 @@ accepts@~1.3.4: mime-types "~2.1.24" negotiator "0.6.2" -acorn-bigint@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/acorn-bigint/-/acorn-bigint-0.3.1.tgz#edb40a414dcaf5a09c2933db6bed79454b3ff46a" - integrity sha512-WT9LheDC4/d/sD/jgC6L5UMq4U9X3KNMy0JrXp/MdJL83ZqcuPQuMkj50beOX0dMub8IoZUYycfN7bIVZuU5zg== - -acorn-class-fields@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/acorn-class-fields/-/acorn-class-fields-0.2.1.tgz#748058bceeb0ef25164bbc671993984083f5a085" - integrity sha512-US/kqTe0H8M4LN9izoL+eykVAitE68YMuYZ3sHn3i1fjniqR7oQ3SPvuMK/VT1kjOQHrx5Q88b90TtOKgAv2hQ== +acorn-class-fields@^0.3.7: + version "0.3.7" + resolved "https://registry.yarnpkg.com/acorn-class-fields/-/acorn-class-fields-0.3.7.tgz#a35122f3cc6ad2bb33b1857e79215677fcfdd720" + integrity sha512-jdUWSFce0fuADUljmExz4TWpPkxmRW/ZCPRqeeUzbGf0vFUcpQYbyq52l75qGd0oSwwtAepeL6hgb/naRgvcKQ== + dependencies: + acorn-private-class-elements "^0.2.7" acorn-dynamic-import@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== -acorn-export-ns-from@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/acorn-export-ns-from/-/acorn-export-ns-from-0.1.0.tgz#192687869bba3bcb2ef1a1ba196486ea7e100e5c" - integrity sha512-QDQJBe2DfxNBIMxs+19XY2i/XXilJn+kPgX30HWNYK4IXoNj3ACNSWPU7szL0SzqjFyOG4zoZxG9P7JfNw5g7A== +acorn-jsx@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== -acorn-import-meta@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/acorn-import-meta/-/acorn-import-meta-1.0.0.tgz#6cff1f01db3b60148934823d3d2dd0c08354aead" - integrity sha512-yX652u86bKzuM+mzEHV84T0R+srQwTOmprUiFC3zlhlc02lBQzqxkB/H/7jexX9vlz/TRuQiZs9mKEDK3bbmhw== +acorn-private-class-elements@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/acorn-private-class-elements/-/acorn-private-class-elements-0.2.7.tgz#b14902c705bcff267adede1c9f61c1a317ef95d2" + integrity sha512-+GZH2wOKNZOBI4OOPmzpo4cs6mW297sn6fgIk1dUI08jGjhAaEwvC39mN2gJAg2lmAQJ1rBkFqKWonL3Zz6PVA== -acorn-jsx@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" - integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== - -acorn-jsx@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" - integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== - -acorn-private-methods@^0.2.0: - version "0.2.3" - resolved "https://registry.yarnpkg.com/acorn-private-methods/-/acorn-private-methods-0.2.3.tgz#d951cc16224993d79426a124ca2be39e72c5a38c" - integrity sha512-61BtfmwjB/jQCSCnomKV+IFpVSFviN9wV4P1qWmkz8dZvG97Cf6VwGx6nTvFjw2yqyyA+HlqVueu9cq+n3spJw== - -acorn-stage3@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/acorn-stage3/-/acorn-stage3-1.0.0.tgz#0b3e288d697c43512aee3549b39aa0672e409384" - integrity sha512-7PiPkjroE9sdxMmGDSfyriB8YputoGAyhvM40f/3VRr8Dvb25DJxOtnqvEsKhAvqaKulwKTaueupGJB+8UCpnQ== +acorn-private-methods@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/acorn-private-methods/-/acorn-private-methods-0.3.3.tgz#724414ce5b2fec733089d73a5cbba8f7beff75b1" + integrity sha512-46oeEol3YFvLSah5m9hGMlNpxDBCEkdceJgf01AjqKYTK9r6HexKs2rgSbLK81pYjZZMonhftuUReGMlbbv05w== dependencies: - acorn-bigint "^0.3.1" - acorn-class-fields "^0.2.0" - acorn-dynamic-import "^4.0.0" - acorn-export-ns-from "^0.1.0" - acorn-import-meta "^1.0.0" - acorn-private-methods "^0.2.0" - acorn-static-class-features "^0.1.0" + acorn-private-class-elements "^0.2.7" -acorn-static-class-features@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/acorn-static-class-features/-/acorn-static-class-features-0.1.1.tgz#dc621b0b33b904f750e2f9293aa27535e4a25d38" - integrity sha512-oBHlqP72RdoZNcIr/f1RpwdYRpS0mnYv8lVWS9V7CiXAOkRCJH9CLT9WGGQQ6Jtr0HG5eMyOmT8KLZaqvY2jkg== +acorn-stage3@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/acorn-stage3/-/acorn-stage3-4.0.0.tgz#e8b98ae2a9991be0ba1745b5b626211086b435a8" + integrity sha512-BR+LaADtA6GTB5prkNqWmlmCLYmkyW0whvSxdHhbupTaro2qBJ95fJDEiRLPUmiACGHPaYyeH9xmNJWdGfXRQw== + dependencies: + acorn-class-fields "^0.3.7" + acorn-private-methods "^0.3.3" + acorn-static-class-features "^0.2.4" -acorn-walk@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" - integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw== +acorn-static-class-features@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/acorn-static-class-features/-/acorn-static-class-features-0.2.4.tgz#a0f5261dd483f25196716854f2d7652a1deb39ee" + integrity sha512-5X4mpYq5J3pdndLmIB0+WtFd/mKWnNYpuTlTzj32wUu/PMmEGOiayQ5UrqgwdBNiaZBtDDh5kddpP7Yg2QaQYA== + dependencies: + acorn-private-class-elements "^0.2.7" -acorn@4.X: - version "4.0.13" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" - integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= +acorn-walk@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.0.0.tgz#56ae4c0f434a45fff4a125e7ea95fa9c98f67a16" + integrity sha512-oZRad/3SMOI/pxbbmqyurIx7jHw1wZDcR9G44L8pUVFEomX/0dH89SrM1KaDXuv1NpzAXz6Op/Xu/Qd5XXzdEA== -acorn@^6.0.4: - version "6.1.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.0.tgz#b0a3be31752c97a0f7013c5f4903b71a05db6818" - integrity sha512-MW/FjM+IvU9CgBzjO3UIPCE2pyEwUsoFl+VGdczOPEdxfGFjuKny/gN54mOuX7Qxmb9Rg9MCn2oKiSUeW+pjrw== +acorn@^6.4.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" - integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== +acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.0.4: + version "8.0.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.0.4.tgz#7a3ae4191466a6984eee0fe3407a4f3aa9db8354" + integrity sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ== after@0.8.2: version "0.8.2" @@ -1360,6 +1379,16 @@ ajv@^6.10.0, ajv@^6.10.2: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ajv@^6.5.5: version "6.9.1" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.9.1.tgz#a4d3683d74abc5670e75f0b16520f70a20ea8dc1" @@ -1370,15 +1399,6 @@ ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - ansi-colors@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" @@ -1386,6 +1406,11 @@ ansi-colors@^1.0.1: dependencies: ansi-wrap "^0.1.0" +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + ansi-cyan@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" @@ -1393,13 +1418,6 @@ ansi-cyan@^0.1.1: dependencies: ansi-wrap "0.1.0" -ansi-escapes@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.2.1.tgz#4dccdb846c3eee10f6d64dea66273eab90c37228" - integrity sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q== - dependencies: - type-fest "^0.5.2" - ansi-gray@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" @@ -1434,6 +1452,11 @@ ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -1446,6 +1469,13 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + ansi-styles@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" @@ -1456,6 +1486,11 @@ ansi-wrap@0.1.0, ansi-wrap@^0.1.0: resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= +any-promise@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + any-shell-escape@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/any-shell-escape/-/any-shell-escape-0.1.1.tgz#d55ab972244c71a9a5e1ab0879f30bf110806959" @@ -1469,6 +1504,14 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + append-buffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" @@ -1548,10 +1591,10 @@ array-differ@^1.0.0: resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE= -array-differ@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-2.1.0.tgz#4b9c1c3f14b906757082925769e8ab904f4801b1" - integrity sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w== +array-differ@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" + integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== array-each@^1.0.0, array-each@^1.0.1: version "1.0.1" @@ -1597,13 +1640,18 @@ array-sort@^1.0.0: get-value "^2.0.6" kind-of "^5.0.2" -array-union@^1.0.1, array-union@^1.0.2: +array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= dependencies: array-uniq "^1.0.1" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + array-uniq@^1.0.1, array-uniq@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -1619,10 +1667,10 @@ arraybuffer.slice@~0.0.7: resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== asn1@~0.2.3: version "0.2.4" @@ -1693,17 +1741,12 @@ async@^0.9.0, async@~0.9.2: resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= -async@~0.2.6: - version "0.2.10" - resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" - integrity sha1-trvgsGdLnXGXCMo43owjfLUmw9E= - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -atob@^2.1.1: +atob@^2.1.1, atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== @@ -1832,10 +1875,15 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== -binaryextensions@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-1.0.1.tgz#1e637488b35b58bda5f4774bf96a5212a8c90755" - integrity sha1-HmN0iLNbWL2l9HdL+WpSEqjJB1U= +binary-extensions@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" + integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== + +binaryextensions@2: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.3.0.tgz#1d269cbf7e6243ea886aa41453c3651ccbe13c22" + integrity sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg== bl@~0.9.4: version "0.9.5" @@ -1897,20 +1945,27 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -browser-sync-client@^2.26.6: - version "2.26.6" - resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.26.6.tgz#e5201d3ace8aee88af17656b7b0c0620b6f8e4ab" - integrity sha512-mGrkZdNzttKdf/16I+y+2dTQxoMCIpKbVIMJ/uP8ZpnKu9f9qa/2CYVtLtbjZG8nsM14EwiCrjuFTGBEnT3Gjw== +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-sync-client@^2.26.13: + version "2.26.13" + resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.26.13.tgz#ee5fa3ec36fe2a03f9887553cac6846751c8232d" + integrity sha512-p2VbZoYrpuDhkreq+/Sv1MkToHklh7T1OaIntDwpG6Iy2q/XkBcgwPcWjX+WwRNiZjN8MEehxIjEUh12LweLmQ== dependencies: etag "1.8.1" fresh "0.5.2" mitt "^1.1.3" rxjs "^5.5.6" -browser-sync-ui@^2.26.4: - version "2.26.4" - resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-2.26.4.tgz#3772f13c6b93f2d7d333f4be0ca1ec02aae97dba" - integrity sha512-u20P3EsZoM8Pt+puoi3BU3KlbQAH1lAcV+/O4saF26qokrBqIDotmGonfWwoRbUmdxZkM9MBmA0K39ZTG1h4sA== +browser-sync-ui@^2.26.13: + version "2.26.13" + resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-2.26.13.tgz#7a0622df2c1cc4fb0dd8edd511f90737f84239b4" + integrity sha512-6NJ/pCnhCnBMzaty1opWo7ipDmFAIk8U71JMQGKJxblCUaGfdsbF2shf6XNZSkXYia1yS0vwKu9LIOzpXqQZCA== dependencies: async-each-series "0.1.1" connect-history-api-fallback "^1" @@ -1919,28 +1974,28 @@ browser-sync-ui@^2.26.4: socket.io-client "^2.0.4" stream-throttle "^0.1.3" -browser-sync@^2.26.7: - version "2.26.7" - resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.26.7.tgz#120287716eb405651a76cc74fe851c31350557f9" - integrity sha512-lY3emme0OyvA2ujEMpRmyRy9LY6gHLuTr2/ABxhIm3lADOiRXzP4dgekvnDrQqZ/Ec2Fz19lEjm6kglSG5766w== +browser-sync@^2.26.13: + version "2.26.13" + resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.26.13.tgz#a74541c104aec7eda318a5d8abdb3317ae9eda3d" + integrity sha512-JPYLTngIzI+Dzx+StSSlMtF+Q9yjdh58HW6bMFqkFXuzQkJL8FCvp4lozlS6BbECZcsM2Gmlgp0uhEjvl18X4w== dependencies: - browser-sync-client "^2.26.6" - browser-sync-ui "^2.26.4" + browser-sync-client "^2.26.13" + browser-sync-ui "^2.26.13" bs-recipes "1.3.4" bs-snippet-injector "^2.0.1" - chokidar "^2.0.4" + chokidar "^3.4.1" connect "3.6.6" connect-history-api-fallback "^1" dev-ip "^1.0.1" easy-extender "^2.3.4" - eazy-logger "^3" + eazy-logger "3.1.0" etag "^1.8.1" fresh "^0.5.2" fs-extra "3.0.1" - http-proxy "1.15.2" + http-proxy "^1.18.1" immutable "^3" - localtunnel "1.9.2" - micromatch "^3.1.10" + localtunnel "^2.0.0" + micromatch "^4.0.2" opn "5.3.0" portscanner "2.1.1" qs "6.2.3" @@ -1952,8 +2007,8 @@ browser-sync@^2.26.7: serve-static "1.13.2" server-destroy "1.0.1" socket.io "2.1.1" - ua-parser-js "0.7.17" - yargs "6.4.0" + ua-parser-js "^0.7.18" + yargs "^15.4.1" browserslist@^1.7.6: version "1.7.7" @@ -2005,13 +2060,12 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -bump-regex@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/bump-regex/-/bump-regex-2.9.0.tgz#b1770cfa62d532f523661246877c16bd0dbbd038" - integrity sha512-o4WC1mKw/kM0zScuOxZKi243lc+/h09b41u2A7HlWbxHsEDsTTZtqDZYkQj65l24J8+9Saahn5ep+EyeqpQoCg== +bump-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bump-regex/-/bump-regex-4.1.0.tgz#b9f3619e54d28c9e4cf5e30265503bb20bff3c1d" + integrity sha512-75Kr/Iw6lqnOKF/7YpE0WyOMBaaSpdrXTquIxR0qbTgZxwJos6563zNSn+w/LPJUoL4DXq20QX9AQy4+UJbyhw== dependencies: semver "^5.1.0" - xtend "^4.0.1" bytes@3.1.0: version "3.1.0" @@ -2077,11 +2131,6 @@ camelcase-keys@^2.0.0: camelcase "^2.0.0" map-obj "^1.0.0" -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= - camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" @@ -2092,6 +2141,11 @@ camelcase@^3.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: version "1.0.30001016" resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001016.tgz#2712424b6667fbb5edea8a42fc5f4c9505271631" @@ -2117,14 +2171,6 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -2136,7 +2182,7 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2145,6 +2191,22 @@ chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" @@ -2154,11 +2216,6 @@ chalk@~0.4.0: has-color "~0.1.0" strip-ansi "~0.1.0" -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - chokidar@^2.0.0: version "2.1.6" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" @@ -2178,24 +2235,20 @@ chokidar@^2.0.0: optionalDependencies: fsevents "^1.2.7" -chokidar@^2.0.4: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== +chokidar@^3.4.1: + version "3.4.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" + integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" optionalDependencies: - fsevents "^1.2.7" + fsevents "~2.1.2" chownr@^1.1.1: version "1.1.3" @@ -2217,39 +2270,18 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -clean-css@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" - integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== +clean-css@4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== dependencies: source-map "~0.6.0" -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - cli-width@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-1.1.1.tgz#a4d293ef67ebb7b88d4a4d42c0ccf00c4d1e366d" integrity sha1-pNKT72frt7iNSk1CwMzwDE0eNm0= -cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= - -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" @@ -2259,6 +2291,24 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + clone-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" @@ -2336,11 +2386,23 @@ color-convert@^1.9.0: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" @@ -2353,7 +2415,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@2, commander@^2.15.1: +commander@2: version "2.19.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== @@ -2363,6 +2425,16 @@ commander@^2.2.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.0.tgz#b990bfb8ac030aedc6d11bc04d1488ffef56db75" + integrity sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q== + +compare-versions@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" + integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== + component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" @@ -2445,18 +2517,25 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= -convert-source-map@1.X, convert-source-map@^1.5.0: +convert-source-map@^0.3.3: + version "0.3.5" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" + integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= + +convert-source-map@^1.0.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +convert-source-map@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== dependencies: safe-buffer "~5.1.1" -convert-source-map@^0.3.3: - version "0.3.5" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" - integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= - cookie@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" @@ -2480,20 +2559,7 @@ core-util-is@1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cosmiconfig@^2.1.0, cosmiconfig@^2.1.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892" - integrity sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A== - dependencies: - is-directory "^0.3.1" - js-yaml "^3.4.3" - minimist "^1.2.0" - object-assign "^4.1.0" - os-homedir "^1.0.1" - parse-json "^2.2.0" - require-from-string "^1.1.0" - -cosmiconfig@^5.2.0: +cosmiconfig@^5.0.0: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== @@ -2503,16 +2569,18 @@ cosmiconfig@^5.2.0: js-yaml "^3.13.1" parse-json "^4.0.0" -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= +cosmiconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" -cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -2523,7 +2591,16 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -css@2.X, css@^2.0.0: +cross-spawn@^7.0.0, cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css@^2.0.0: version "2.2.4" resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== @@ -2533,6 +2610,15 @@ css@2.X, css@^2.0.0: source-map-resolve "^0.5.2" urix "^0.1.0" +css@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" + integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== + dependencies: + inherits "^2.0.4" + source-map "^0.6.1" + source-map-resolve "^0.6.0" + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -2557,7 +2643,7 @@ d3-voronoi@1.1.2: resolved "https://registry.yarnpkg.com/d3-voronoi/-/d3-voronoi-1.1.2.tgz#1687667e8f13a2d158c80c1480c5a29cb0d8973c" integrity sha1-Fodmfo8TotFYyAwUgMWinLDYlzw= -d@1: +d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== @@ -2592,27 +2678,29 @@ dateformat@^2.0.0: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" integrity sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI= -deap@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deap/-/deap-1.0.1.tgz#0646e9e1a095ffe8a9e404d68d1f76dcf57e66fb" - integrity sha512-k75KYNZMvwAwes2xIPry/QTffXIchjD8QfABvvfTr80P85jv5ZcKqcoDo+vMe71nNnVnXYe8MA28weyqcf/DKw== - -debug-fabulous@0.0.X: - version "0.0.4" - resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-0.0.4.tgz#fa071c5d87484685424807421ca4b16b0b1a0763" - integrity sha1-+gccXYdIRoVCSAdCHKSxawsaB2M= +debug-fabulous@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-1.1.0.tgz#af8a08632465224ef4174a9f06308c3c2a1ebc8e" + integrity sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg== dependencies: - debug "2.X" - lazy-debug-legacy "0.0.X" - object-assign "4.1.0" + debug "3.X" + memoizee "0.4.X" + object-assign "4.X" -debug@2.6.9, debug@2.X, debug@^2.2.0, debug@^2.3.3: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" +debug@3.X: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + debug@4.1.1, debug@^4.0.1, debug@~4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -2634,7 +2722,14 @@ debug@^3.2.6: dependencies: ms "^2.1.1" -decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: +debug@^4.1.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + +decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -2654,15 +2749,15 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deep-is@~0.1.3: +deep-is@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -deepmerge@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170" - integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== +deepmerge@^4.0.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== default-compare@^1.0.0: version "1.0.0" @@ -2752,7 +2847,7 @@ detect-libc@^1.0.2: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= -detect-newline@2.X: +detect-newline@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= @@ -2762,6 +2857,11 @@ dev-ip@^1.0.1: resolved "https://registry.yarnpkg.com/dev-ip/-/dev-ip-1.0.1.tgz#a76a3ed1855be7a012bb8ac16cb80f3c00dc28f0" integrity sha1-p2o+0YVb56ASu4rBbLgPPADcKPA= +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -2776,12 +2876,7 @@ duplexer2@0.0.2, duplexer2@~0.0.2: dependencies: readable-stream "~1.1.9" -duplexer@^0.1.1, duplexer@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= - -duplexify@^3.5.0, duplexify@^3.6.0: +duplexify@^3.6.0: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== @@ -2791,6 +2886,16 @@ duplexify@^3.5.0, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" +duplexify@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.1.tgz#7027dc374f157b122a8ae08c2d3ea4d2d953aa61" + integrity sha512-DY3xVEmVHTv1wSzKNbwoU6nVjzI369Y6sPoqfYr0/xlx3IdX2n94xIszTcjPO8W8ZIv0Wb0PXNcjuZyT4wiICA== + dependencies: + end-of-stream "^1.4.1" + inherits "^2.0.3" + readable-stream "^3.1.1" + stream-shift "^1.0.0" + each-async@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/each-async/-/each-async-1.1.1.tgz#dee5229bdf0ab6ba2012a395e1b869abf8813473" @@ -2819,12 +2924,12 @@ easy-extender@^2.3.4: dependencies: lodash "^4.17.10" -eazy-logger@^3: - version "3.0.2" - resolved "https://registry.yarnpkg.com/eazy-logger/-/eazy-logger-3.0.2.tgz#a325aa5e53d13a2225889b2ac4113b2b9636f4fc" - integrity sha1-oyWqXlPROiIliJsqxBE7K5Y29Pw= +eazy-logger@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/eazy-logger/-/eazy-logger-3.1.0.tgz#b169eb56df714608fa114f164c8a2956bec9f0f3" + integrity sha512-/snsn2JqBtUSSstEl4R0RKjkisGHAhvYj89i7r3ytNUKW12y178KDZwXLXIgwDqLW6E/VRMT9qfld7wvFae8bQ== dependencies: - tfunk "^3.0.1" + tfunk "^4.0.0" ecc-jsbn@~0.1.1: version "0.1.2" @@ -2834,13 +2939,10 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -editions@^2.1.2, editions@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/editions/-/editions-2.1.3.tgz#727ccf3ec2c7b12dcc652c71000f16c4824d6f7d" - integrity sha512-xDZyVm0A4nLgMNWVVLJvcwMjI80ShiH/27RyLiCnW1L273TcJIA25C4pwJ33AWV01OX6UriP35Xu+lH4S7HWQw== - dependencies: - errlop "^1.1.1" - semver "^5.6.0" +editions@^1.3.3: + version "1.3.4" + resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz#3662cb592347c3168eb8e498a0ff73271d67f50b" + integrity sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg== editor@^1.0.0: version "1.0.0" @@ -2894,6 +2996,13 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" +end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + engine.io-client@~3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" @@ -2962,6 +3071,13 @@ engine.io@~3.2.0: engine.io-parser "~2.1.0" ws "~3.3.1" +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + ensure-array@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ensure-array/-/ensure-array-1.0.0.tgz#317e9fc632c656bb849eb649133528e205b23abc" @@ -2972,13 +3088,6 @@ eol@^0.9.1: resolved "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd" integrity sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg== -errlop@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/errlop/-/errlop-1.1.1.tgz#d9ae4c76c3e64956c5d79e6e035d6343bfd62250" - integrity sha512-WX7QjiPHhsny7/PQvrhS5VMizXXKoKCS3udaBp8gjlARdbn+XmK300eKBAAN0hGyRaTCtRpOaxK+xFVPUJ3zkw== - dependencies: - editions "^2.1.2" - error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -2995,6 +3104,15 @@ es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14: es6-symbol "~3.1.1" next-tick "^1.0.0" +es5-ext@^0.10.45, es5-ext@~0.10.2, es5-ext@~0.10.46: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" @@ -3012,7 +3130,15 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.1: d "1" es5-ext "~0.10.14" -es6-weak-map@^2.0.1: +es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +es6-weak-map@^2.0.1, es6-weak-map@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== @@ -3032,6 +3158,11 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.3, escape-string-regexp@^ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + eslint-plugin-compat@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/eslint-plugin-compat/-/eslint-plugin-compat-3.3.0.tgz#ece063f53793e6859243ce6cb9634865f745b72e" @@ -3045,18 +3176,18 @@ eslint-plugin-compat@^3.3.0: mdn-browser-compat-data "^0.0.84" semver "^6.1.2" -eslint-scope@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" - integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: - esrecurse "^4.1.0" + esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" @@ -3065,82 +3196,97 @@ eslint-visitor-keys@^1.1.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== -eslint@^6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.6.0.tgz#4a01a2fb48d32aacef5530ee9c5a78f11a8afd04" - integrity sha512-PpEBq7b6qY/qrOmpYQ/jTMDYfuQMELR4g4WI1M/NaSDDD/bdcMb+dj4Hgks7p41kW2caXsPsEZAEAyAgjVVC0g== +eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + +eslint@^7.15.0: + version "7.15.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.15.0.tgz#eb155fb8ed0865fcf5d903f76be2e5b6cd7e0bc7" + integrity sha512-Vr64xFDT8w30wFll643e7cGrIkPEU50yIiI36OdSIDoSGguIeaLzBo0vpGvzo9RECUqq7htURfwEtKqwytkqzA== dependencies: "@babel/code-frame" "^7.0.0" + "@eslint/eslintrc" "^0.2.2" ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" + chalk "^4.0.0" + cross-spawn "^7.0.2" debug "^4.0.1" doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" + enquirer "^2.3.5" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.2.0" esutils "^2.0.2" - file-entry-cache "^5.0.1" + file-entry-cache "^6.0.0" functional-red-black-tree "^1.0.1" glob-parent "^5.0.0" - globals "^11.7.0" + globals "^12.1.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^7.0.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.14" + levn "^0.4.1" + lodash "^4.17.19" minimatch "^3.0.4" - mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.2" + optionator "^0.9.1" progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" table "^5.2.3" text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" - integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA== +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== dependencies: - acorn "^7.1.0" - acorn-jsx "^5.1.0" - eslint-visitor-keys "^1.1.0" + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" - integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== +esquery@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== dependencies: - estraverse "^4.0.0" + estraverse "^5.1.0" -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: - estraverse "^4.1.0" + estraverse "^5.2.0" -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: +estraverse@^4.1.1: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -3151,49 +3297,33 @@ etag@1.8.1, etag@^1.8.1, etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -event-stream@^3.1.0: - version "3.3.5" - resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.5.tgz#e5dd8989543630d94c6cf4d657120341fa31636b" - integrity sha512-vyibDcu5JL20Me1fP734QBH/kenBGLZap2n0+XXM7mvuUPzJ20Ydqj1aKcIeMdri1p+PU+4yAKugjN8KCVst+g== +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= dependencies: - duplexer "^0.1.1" - from "^0.1.7" - map-stream "0.0.7" - pause-stream "^0.0.11" - split "^1.0.1" - stream-combiner "^0.2.2" - through "^2.3.8" + d "1" + es5-ext "~0.10.14" -eventemitter3@1.x.x: - version "1.2.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" - integrity sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg= +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -execa@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" - integrity sha1-2NdrvBtVIX7RkP1t1J08d07PyNo= +execa@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" expand-brackets@^2.1.4: version "2.1.4" @@ -3215,6 +3345,13 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + extend-shallow@^1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" @@ -3242,15 +3379,6 @@ extend@3.0.2, extend@^3.0.0, extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^3.0.3: - 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" - tmp "^0.0.33" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -3275,7 +3403,7 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= -fancy-log@^1.0.0, fancy-log@^1.1.0, fancy-log@^1.3.2: +fancy-log@^1.1.0, fancy-log@^1.3.2, fancy-log@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== @@ -3290,12 +3418,17 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= -fast-levenshtein@~2.0.4: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -3308,19 +3441,12 @@ figures@^1.3.5: escape-string-regexp "^1.0.5" object-assign "^4.1.0" -figures@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" - integrity sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg== +file-entry-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a" + integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA== dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" + flat-cache "^3.0.4" fill-range@^4.0.0: version "4.0.0" @@ -3332,6 +3458,13 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + finalhandler@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" @@ -3353,13 +3486,6 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -3367,6 +3493,21 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-versions@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" + integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== + dependencies: + semver-regex "^2.0.0" + find-yarn-workspace-root@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz#40eb8e6e7c2502ddfaa2577c176f221422f860db" @@ -3418,19 +3559,18 @@ flagged-respawn@^1.0.0: resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" + flatted "^3.1.0" + rimraf "^3.0.2" -flatted@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" - integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== +flatted@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.0.tgz#a5d06b4a8b01e3a63771daa5cb7a1903e2e57067" + integrity sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA== flush-write-stream@^1.0.2: version "1.1.1" @@ -3447,6 +3587,11 @@ follow-redirects@1.5.10: dependencies: debug "=3.1.0" +follow-redirects@^1.0.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" + integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA== + font-awesome@4, font-awesome@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133" @@ -3495,11 +3640,6 @@ fresh@0.5.2, fresh@^0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -from@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" - integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= - fs-extra@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" @@ -3555,6 +3695,11 @@ fsevents@^1.2.7: nan "^2.12.1" node-pre-gyp "^0.12.0" +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -3606,30 +3751,30 @@ get-caller-file@^1.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-closest@*: version "0.0.4" resolved "https://registry.yarnpkg.com/get-closest/-/get-closest-0.0.4.tgz#269ac776d1e6022aa0fd586dd708e8a7d32269af" integrity sha1-JprHdtHmAiqg/Vht1wjop9Miaa8= +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= -get-stdin@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" - integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== +get-stream@^5.0.0, get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" @@ -3638,6 +3783,13 @@ get-value@^2.0.3, get-value@^2.0.6: resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= +get-value@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-3.0.1.tgz#5efd2a157f1d6a516d7524e124ac52d0a39ef5a8" + integrity sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA== + dependencies: + isobject "^3.0.1" + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -3678,6 +3830,13 @@ glob-parent@^5.0.0: dependencies: is-glob "^4.0.1" +glob-parent@~5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + glob-stream@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" @@ -3761,10 +3920,12 @@ global-prefix@^1.0.1: is-windows "^1.0.1" which "^1.2.14" -globals@^11.7.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" globby@^2.0.0: version "2.1.0" @@ -3783,7 +3944,7 @@ glogg@^1.0.0: dependencies: sparkles "^1.0.0" -graceful-fs@4.X, graceful-fs@^4.0.0: +graceful-fs@^4.0.0: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== @@ -3793,13 +3954,25 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== -gulp-bump@^2.7.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/gulp-bump/-/gulp-bump-2.9.0.tgz#6222e6e08b45261a5a60140b297fca45c1b41421" - integrity sha512-Cu+QOhwb2Jr2K6yo2u2mh4GWQRpSAMZD/z0v8FStlrOGaqML9u1On7XcyR1pS/PN3HQ9wsd/Ks6AcCQb+j3BgA== +group-array@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/group-array/-/group-array-1.0.0.tgz#e2e8d8890e5b46f72eb49b71e8af675173a9d0f7" + integrity sha512-PJresALe5TUzSIcdWKLdAKcdUDxv8du2EGueShgAL2xknbcTo5Bk1xbNaNhxpWxxAx/SV7N+5S0UyK7XV0+QhA== dependencies: - bump-regex "^2.9.0" - plugin-error "^0.1.2" + arr-flatten "^1.1.0" + for-own "^1.0.0" + get-value "^3.0.1" + kind-of "^6.0.2" + split-string "^6.1.0" + union-value "^2.0.1" + +gulp-bump@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/gulp-bump/-/gulp-bump-3.2.0.tgz#ab771ec7cf5c5bb3a8fae24ba21cef96855a6e15" + integrity sha512-j3Yvi0QQZEN1HsXArQCBMdX5jedQZ1Cul3W1VZrvKal/Z4Slb6Z7UQLQyPaLm0heNdJKCjpKHgkYSR8VhfPlTA== + dependencies: + bump-regex "^4.1.0" + plugin-error "^1.0.1" plugin-log "^0.1.0" semver "^5.3.0" through2 "^2.0.1" @@ -3812,14 +3985,14 @@ gulp-cached@^1.0.4: lodash.defaults "^4.2.0" through2 "^2.0.1" -gulp-clean-css@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-4.0.0.tgz#1b67f1636e2b0da73499a7602396a0d570eb9626" - integrity sha512-/Hs+dmclQfFBSpwrAKd4wTVsahJvrVIg2ga0J7Eo7DKVTVfJrM7wXlfU1mK9iJ9Y7OmkO/YstZVtmhfAKzZ00g== +gulp-clean-css@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-4.3.0.tgz#5b1e73f2fca46703eb636014cdd4553cea65146d" + integrity sha512-mGyeT3qqFXTy61j0zOIciS4MkYziF2U594t2Vs9rUnpkEHqfu6aDITMp8xOvZcvdX61Uz3y1mVERRYmjzQF5fg== dependencies: - clean-css "4.2.1" + clean-css "4.2.3" plugin-error "1.0.1" - through2 "3.0.0" + through2 "3.0.1" vinyl-sourcemaps-apply "0.2.1" gulp-cli@^2.2.0: @@ -3865,23 +4038,22 @@ gulp-confirm@^1.0.6: readline-sync "~1.4.9" through2 "^2.0.3" -gulp-debug@^2.0.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/gulp-debug/-/gulp-debug-2.1.2.tgz#2f5fe5f64bcd1f4cf189c160e080c8ad06543094" - integrity sha1-L1/l9kvNH0zxicFg4IDIrQZUMJQ= +gulp-debug@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/gulp-debug/-/gulp-debug-4.0.0.tgz#036f9539c3fb6af720e01a9ea5c195fc73f29d5b" + integrity sha512-cn/GhMD2nVZCVxAl5vWao4/dcoZ8wUJ8w3oqTvQaGDmC1vT7swNOEbhQTWJp+/otKePT64aENcqAQXDcdj5H1g== dependencies: - chalk "^1.0.0" - gulp-util "^3.0.0" - object-assign "^4.0.1" - plur "^2.0.0" - stringify-object "^2.3.0" + chalk "^2.3.0" + fancy-log "^1.3.2" + plur "^3.0.0" + stringify-object "^3.0.0" through2 "^2.0.0" tildify "^1.1.2" -gulp-git@^2.2.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/gulp-git/-/gulp-git-2.9.0.tgz#f1ea6528d855f5e9cd4d712913131214f5088b58" - integrity sha512-66ZCwlCCf0YXEUedDbx76p0ii6aQ6aUHC4oSytn3UM8J6VWJKYF4PBARMIgR/POGWyYeN7hjd81Elpjn/o4+Tg== +gulp-git@^2.10.1: + version "2.10.1" + resolved "https://registry.yarnpkg.com/gulp-git/-/gulp-git-2.10.1.tgz#218615c94bbf90660c1cb07a37054041d5e4f2eb" + integrity sha512-qiXYYDXchMZU/AWAgtphi4zbJb/0gXgfPw7TlZwu/7qPS3Bdcc3zbVe1B0xY9S8on6RQTmWoi+KaTGACIXQeNg== dependencies: any-shell-escape "^0.1.1" fancy-log "^1.3.2" @@ -3901,22 +4073,28 @@ gulp-github-release@^1.2.1: publish-release "^1.3.2" through2 "^2.0.1" -gulp-if@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/gulp-if/-/gulp-if-2.0.2.tgz#a497b7e7573005041caa2bc8b7dda3c80444d629" - integrity sha1-pJe351cwBQQcqivIt92jyARE1ik= +gulp-if@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/gulp-if/-/gulp-if-3.0.0.tgz#6c3e7edc8bafadc34f2ebecb314bf43324ba1e40" + integrity sha512-fCUEngzNiEZEK2YuPm+sdMpO6ukb8+/qzbGfJBXyNOXz85bCG7yBI+pPSl+N90d7gnLvMsarthsAImx0qy7BAw== dependencies: - gulp-match "^1.0.3" - ternary-stream "^2.0.1" - through2 "^2.0.1" + gulp-match "^1.1.0" + ternary-stream "^3.0.0" + through2 "^3.0.1" -gulp-inject@^1.2.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/gulp-inject/-/gulp-inject-1.5.0.tgz#5dce9a460da36a02112cd713a4ba6d326dfaef4d" - integrity sha1-Xc6aRg2jagIRLNcTpLptMm36700= +gulp-inject@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/gulp-inject/-/gulp-inject-5.0.5.tgz#c23df9cbf331447b6e13a1498cc51b63a7ceef67" + integrity sha512-5bGMjqleXUHPu4CI1pnVzHtwyMy+Zt8EMo1RFwNsOpidPxwjFwyLgmsRZWGMMI8UenJMJRjURqwznfFmqb5wgw== dependencies: - event-stream "^3.1.0" - gulp-util "^3.0.0" + ansi-colors "^4.1.1" + arrify "^2.0.1" + escape-string-regexp "^2.0.0" + fancy-log "^1.3.3" + group-array "^1.0.0" + plugin-error "^1.0.1" + stream-to-array "^2.3.0" + through2 "^3.0.1" gulp-json-concat@^0.1.1: version "0.1.1" @@ -3927,10 +4105,10 @@ gulp-json-concat@^0.1.1: jsonlint "^1.6.2" through "^2.3.8" -gulp-match@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/gulp-match/-/gulp-match-1.0.3.tgz#91c7c0d7f29becd6606d57d80a7f8776a87aba8e" - integrity sha1-kcfA1/Kb7NZgbVfYCn+Hdqh6uo4= +gulp-match@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/gulp-match/-/gulp-match-1.1.0.tgz#552b7080fc006ee752c90563f9fec9d61aafdf4f" + integrity sha512-DlyVxa1Gj24DitY2OjEsS+X6tDpretuxD6wTfhXE/Rw2hweqc1f6D/XtsJmoiCwLWfXgR87W9ozEityPCVzGtQ== dependencies: minimatch "^3.0.3" @@ -3947,36 +4125,36 @@ gulp-modify-css-urls@^2.0.0: vinyl "^2.1.0" vinyl-sourcemaps-apply "^0.2.1" -gulp-postcss@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/gulp-postcss/-/gulp-postcss-7.0.1.tgz#3f1c36db1197140c399c252ddff339129638e395" - integrity sha1-Pxw22xGXFAw5nCUt3/M5EpY445U= +gulp-postcss@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/gulp-postcss/-/gulp-postcss-9.0.0.tgz#2ade18809ab475dae743a88bd6501af0b04ee54e" + integrity sha512-5mSQ9CK8salSagrXgrVyILfEMy6I5rUGPRiR9rVjgJV9m/rwdZYUhekMr+XxDlApfc5ZdEJ8gXNZrU/TsgT5dQ== + dependencies: + fancy-log "^1.3.3" + plugin-error "^1.0.1" + postcss-load-config "^2.1.1" + vinyl-sourcemaps-apply "^0.2.1" + +gulp-remember@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gulp-remember/-/gulp-remember-1.0.1.tgz#cc3aab2a04a623614375571ca464d13e87502bfe" + integrity sha1-zDqrKgSmI2FDdVccpGTRPodQK/4= dependencies: fancy-log "^1.3.2" plugin-error "^0.1.2" - postcss "^6.0.0" - postcss-load-config "^1.2.0" - vinyl-sourcemaps-apply "^0.2.1" - -gulp-remember@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/gulp-remember/-/gulp-remember-0.3.1.tgz#5776b6f64c5a1c5c4d4555406723ec8e2b0407e7" - integrity sha1-V3a29kxaHFxNRVVAZyPsjisEB+c= - dependencies: - gulp-util "^3.0.1" through2 "^0.5.0" -gulp-rename@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.4.0.tgz#de1c718e7c4095ae861f7296ef4f3248648240bd" - integrity sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg== +gulp-rename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-2.0.0.tgz#9bbc3962b0c0f52fc67cd5eaff6c223ec5b9cf6c" + integrity sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ== -gulp-replace@^0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/gulp-replace/-/gulp-replace-0.5.4.tgz#69a67914bbd13c562bff14f504a403796aa0daa9" - integrity sha1-aaZ5FLvRPFYr/xT1BKQDeWqg2qk= +gulp-replace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulp-replace/-/gulp-replace-1.0.0.tgz#b32bd61654d97b8d78430a67b3e8ce067b7c9143" + integrity sha512-lgdmrFSI1SdhNMXZQbrC75MOl1UjYWlOWNbNRnz+F/KHmgxt3l6XstBoAYIdadwETFyG/6i+vWUSCawdC3pqOw== dependencies: - istextorbinary "1.0.2" + istextorbinary "2.2.1" readable-stream "^2.0.1" replacestream "^4.0.0" @@ -3987,38 +4165,40 @@ gulp-sort@^2.0.0: dependencies: through2 "^2.0.1" -gulp-sourcemaps@^1.5.1: - version "1.12.1" - resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.12.1.tgz#b437d1f3d980cf26e81184823718ce15ae6597b6" - integrity sha1-tDfR89mAzyboEYSCNxjOFa5ll7Y= +gulp-sourcemaps@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-3.0.0.tgz#2e154e1a2efed033c0e48013969e6f30337b2743" + integrity sha512-RqvUckJkuYqy4VaIH60RMal4ZtG0IbQ6PXMNkNsshEGJ9cldUPRb/YCgboYae+CLAs1HQNb4ADTKCx65HInquQ== dependencies: - "@gulp-sourcemaps/map-sources" "1.X" - acorn "4.X" - convert-source-map "1.X" - css "2.X" - debug-fabulous "0.0.X" - detect-newline "2.X" - graceful-fs "4.X" - source-map "~0.6.0" - strip-bom "2.X" - through2 "2.X" - vinyl "1.X" - -gulp-uglify@^1.1.0: - version "1.5.4" - resolved "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-1.5.4.tgz#524788d87666d09f9d0c21fb2177f90039a658c9" - integrity sha1-UkeI2HZm0J+dDCH7IXf5ADmmWMk= - dependencies: - deap "^1.0.0" - fancy-log "^1.0.0" - gulp-util "^3.0.0" - isobject "^2.0.0" + "@gulp-sourcemaps/identity-map" "^2.0.1" + "@gulp-sourcemaps/map-sources" "^1.0.0" + acorn "^6.4.1" + convert-source-map "^1.0.0" + css "^3.0.0" + debug-fabulous "^1.0.0" + detect-newline "^2.0.0" + graceful-fs "^4.0.0" + source-map "^0.6.0" + strip-bom-string "^1.0.0" through2 "^2.0.0" - uglify-js "2.6.4" - uglify-save-license "^0.4.1" + +gulp-uglify@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-3.0.2.tgz#5f5b2e8337f879ca9dec971feb1b82a5a87850b0" + integrity sha512-gk1dhB74AkV2kzqPMQBLA3jPoIAPd/nlNzP2XMDSG8XZrqnlCiDGAqC+rZOumzFvB5zOphlFh6yr3lgcAb/OOg== + dependencies: + array-each "^1.0.1" + extend-shallow "^3.0.2" + gulplog "^1.0.0" + has-gulplog "^0.1.0" + isobject "^3.0.1" + make-error-cause "^1.1.1" + safe-buffer "^5.1.2" + through2 "^2.0.0" + uglify-js "^3.0.5" vinyl-sourcemaps-apply "^0.2.0" -gulp-util@^3.0.0, gulp-util@^3.0.1, gulp-util@^3.0.7, gulp-util@^3.0.8: +gulp-util@^3.0.7, gulp-util@^3.0.8: version "3.0.8" resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" integrity sha1-AFTh50RQLifATBh8PsxQXdVLu08= @@ -4042,16 +4222,16 @@ gulp-util@^3.0.0, gulp-util@^3.0.1, gulp-util@^3.0.7, gulp-util@^3.0.8: through2 "^2.0.0" vinyl "^0.5.0" -gulp-zip@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/gulp-zip/-/gulp-zip-4.2.0.tgz#e25e738c41ad0795ad853d1d8aeb1744d2a4ca82" - integrity sha512-I+697f6jf+PncdTrqfuwoauxgnLG1yHRg3vlmvDgmJuEnlEHy4meBktJ/oHgfyg4tp6X25wuZqUOraVeVg97wQ== +gulp-zip@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/gulp-zip/-/gulp-zip-5.0.2.tgz#2edf797ec842e770f4dfde8bef97d139015b1972" + integrity sha512-rZd0Ppuc8Bf7J2/WzcdNaeb+lcEXf1R8mV/PJ9Kdu7PmnInWVeLSmiXIka/2QSe6uhAsGVFAMffWSaMzAPGTBg== dependencies: - get-stream "^3.0.0" - plugin-error "^0.1.2" - through2 "^2.0.1" + get-stream "^5.1.0" + plugin-error "^1.0.1" + through2 "^3.0.1" vinyl "^2.1.0" - yazl "^2.1.0" + yazl "^2.5.1" gulp@^4.0.2: version "4.0.2" @@ -4117,6 +4297,11 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has-gulplog@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" @@ -4198,13 +4383,14 @@ http-errors@~1.6.2: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-proxy@1.15.2: - version "1.15.2" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.15.2.tgz#642fdcaffe52d3448d2bda3b0079e9409064da31" - integrity sha1-ZC/cr/5S00SNK9o7AHnpQJBk2jE= +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== dependencies: - eventemitter3 "1.x.x" - requires-port "1.x.x" + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" http-signature@~1.2.0: version "1.2.0" @@ -4215,21 +4401,26 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -husky@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/husky/-/husky-2.3.0.tgz#8b78ed24d763042df7fd899991985d65a976dd13" - integrity sha512-A/ZQSEILoq+mQM3yC3RIBSaw1bYXdkKnyyKVSUiJl+iBjVZc5LQEXdGY1ZjrDxC4IzfRPiJ0IqzEQGCN5TQa/A== +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +husky@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/husky/-/husky-4.3.4.tgz#676275a10ec5be2e893bd6ff71113bb829cc1f5b" + integrity sha512-wykHsss5kQtmbFrjQv0R7YyW1uFd7fv7gT1sA54potoDYmOTENJtBC/X1/AyoSAi1obp8CiGODOIdOGnPxSmFg== dependencies: - cosmiconfig "^5.2.0" - execa "^1.0.0" - find-up "^3.0.0" - get-stdin "^7.0.0" - is-ci "^2.0.0" - pkg-dir "^4.1.0" - please-upgrade-node "^3.1.1" - read-pkg "^5.1.1" - run-node "^1.0.0" + chalk "^4.0.0" + ci-info "^2.0.0" + compare-versions "^3.6.0" + cosmiconfig "^7.0.0" + find-versions "^3.2.0" + opencollective-postinstall "^2.0.2" + pkg-dir "^4.2.0" + please-upgrade-node "^3.2.0" slash "^3.0.0" + which-pm-runs "^1.0.0" hyperquest@~1.2.0: version "1.2.0" @@ -4239,54 +4430,54 @@ hyperquest@~1.2.0: duplexer2 "~0.0.2" through2 "~0.6.3" -i18next-browser-languagedetector@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-3.0.1.tgz#a47c43176e8412c91e808afb7c6eb5367649aa8e" - integrity sha512-WFjPLNPWl62uu07AHY2g+KsC9qz0tyMq+OZEB/H7N58YKL/JLiCz9U709gaR20Mule/Ppn+uyfVx5REJJjn1HA== - -i18next-scanner@^2.9.1: - version "2.9.1" - resolved "https://registry.yarnpkg.com/i18next-scanner/-/i18next-scanner-2.9.1.tgz#4584694e4da50e59a65589813eb98eddef3afc57" - integrity sha512-zGbIuMGH7gRQ8CiZCTmLXeol5KC4Xvz68rmWNwp9SVgJdXBMTWOKhGJaf4JAge2/nUeUEK2pOvJQs9Ec5xRKUg== +i18next-browser-languagedetector@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.0.1.tgz#83654bc87302be2a6a5a75146ffea97b4ca268cf" + integrity sha512-3H+OsNQn3FciomUU0d4zPFHsvJv4X66lBelXk9hnIDYDsveIgT7dWZ3/VvcSlpKk9lvCK770blRZ/CwHMXZqWw== dependencies: - acorn "^6.0.4" - acorn-jsx "^5.0.1" - acorn-stage3 "^1.0.0" - acorn-walk "^6.1.1" - chalk "^2.4.1" + "@babel/runtime" "^7.5.5" + +i18next-scanner@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/i18next-scanner/-/i18next-scanner-3.0.0.tgz#16024fa7f6dc5fd73d91545bd01566f86a76529a" + integrity sha512-cm4Ch3VqicGZS8y+4xSvXoOsnE/iWhHZi6AZEyAgLLm3EDZ/eY21gDbLfbnwKVY6wCghzAEO9LfRNlxwTo8KMQ== + dependencies: + acorn "^8.0.4" + acorn-dynamic-import "^4.0.0" + acorn-jsx "^5.3.1" + acorn-stage3 "^4.0.0" + acorn-walk "^8.0.0" + chalk "^4.1.0" clone-deep "^4.0.0" - commander "^2.15.1" - deepmerge "^2.1.1" + commander "^6.2.0" + deepmerge "^4.0.0" ensure-array "^1.0.0" eol "^0.9.1" esprima "^4.0.0" gulp-sort "^2.0.0" - i18next "^11.10.1" + i18next "*" lodash "^4.0.0" - parse5 "^5.0.0" - sortobject "^1.1.1" - through2 "^2.0.3" + parse5 "^6.0.0" + sortobject "^4.0.0" + through2 "^4.0.0" vinyl "^2.2.0" vinyl-fs "^3.0.1" -i18next-xhr-backend@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/i18next-xhr-backend/-/i18next-xhr-backend-2.0.1.tgz#7af735ee1b0c6d4ce49fa5756591040a0fba6db7" - integrity sha512-CP0XPjJsTE4hY1rM1KXFYo63Ib61EBLEcTvMDyJwr0vs9p/UTuA3ENCmzSs9+ghZgWSjdOigc0oUERHaxctbsQ== - -i18next@^11.10.1: - version "11.10.2" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-11.10.2.tgz#e5f10346f6320ecf15595419926c25255381a56c" - integrity sha512-1rowdX8PqrvsdFhYb3v0A/LlIHLQL1HTa4ia29IzhvNAg2fesNV7R1jXibWLmLQdz3FfTB8RuqSqDEjIawXruA== - -i18next@^15.0.4: - version "15.0.4" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-15.0.4.tgz#17ee253ff2cc67c5003065fef2f4196b2d6d8b04" - integrity sha512-msRzIP/9Vo6wMbbkFRoosVu5X55vARjfhX3H9Z2avRoDAjIBNsXfpfCVF3hbP/2aMQDNEds3NUuDxE4XhcAMnA== +i18next-xhr-backend@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/i18next-xhr-backend/-/i18next-xhr-backend-3.2.2.tgz#769124441461b085291f539d91864e3691199178" + integrity sha512-OtRf2Vo3IqAxsttQbpjYnmMML12IMB5e0fc5B7qKJFLScitYaXa1OhMX0n0X/3vrfFlpHL9Ro/H+ps4Ej2j7QQ== dependencies: - "@babel/runtime" "^7.3.1" + "@babel/runtime" "^7.5.5" -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +i18next@*, i18next@^19.8.4: + version "19.8.4" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-19.8.4.tgz#447718f2a26319b8debdbcc6fbc1a9761be7316b" + integrity sha512-FfVPNWv+felJObeZ6DSXZkj9QM1Ivvh7NcFCgA8XPtJWHz0iXVa9BUy+QY8EPrCLE+vWgDfV/sc96BgXVo6HAA== + dependencies: + "@babel/runtime" "^7.12.0" + +iconv-lite@0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -4300,21 +4491,28 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^3.3.7: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +ignore@^5.1.4: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + immutable@^3: version "3.8.2" resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" @@ -4331,6 +4529,21 @@ import-fresh@^3.0.0: parent-module "^1.0.0" resolve-from "^4.0.0" +import-fresh@^3.2.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.2.tgz#fc129c160c5d68235507f4331a6baad186bdbc3e" + integrity sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -4356,7 +4569,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -4367,9 +4580,9 @@ inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.1: integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= ini@^1.3.4, ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + version "1.3.7" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" + integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== inquirer@^0.8.2: version "0.8.5" @@ -4385,25 +4598,6 @@ inquirer@^0.8.2: rx "^2.4.3" through "^2.3.6" -inquirer@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.0.tgz#9e2b032dde77da1db5db804758b8fea3a970519a" - integrity sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ== - dependencies: - ansi-escapes "^4.2.1" - chalk "^2.4.2" - cli-cursor "^3.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.15" - mute-stream "0.0.8" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^4.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - interpret@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" @@ -4414,10 +4608,10 @@ invert-kv@^1.0.0: resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= -irregular-plurals@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.4.0.tgz#2ca9b033651111855412f16be5d77c62a458a766" - integrity sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y= +irregular-plurals@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-2.0.0.tgz#39d40f05b00f656d0b7fa471230dd3b714af2872" + integrity sha512-Y75zBYLkh0lJ9qxeHlMjQ7bSbyiSqNW/UOPWDmzC7cXskL1hekSITh1Oc6JV0XCWWZ9DE8VYSB71xocLk3gmGw== is-absolute@^1.0.0: version "1.0.0" @@ -4453,6 +4647,13 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -4560,7 +4761,7 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== @@ -4591,6 +4792,16 @@ is-number@^4.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + is-path-cwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" @@ -4610,11 +4821,6 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -4622,10 +4828,10 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= +is-promise@^2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== is-regexp@^1.0.0: version "1.0.0" @@ -4639,10 +4845,10 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== is-typedarray@~1.0.0: version "1.0.0" @@ -4718,13 +4924,14 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istextorbinary@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-1.0.2.tgz#ace19354d1a9a0173efeb1084ce0f87b0ad7decf" - integrity sha1-rOGTVNGpoBc+/rEITOD4ewrX3s8= +istextorbinary@2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.2.1.tgz#a5231a08ef6dd22b268d0895084cf8d58b5bec53" + integrity sha512-TS+hoFl8Z5FAFMK38nhBkdLt44CclNRgDHWeMgsV8ko3nDlr/9UI2Sf839sW7enijf8oKsZYXRvM8g0it9Zmcw== dependencies: - binaryextensions "~1.0.0" - textextensions "~1.0.0" + binaryextensions "2" + editions "^1.3.3" + textextensions "2" jquery-i18next@^1.2.1: version "1.2.1" @@ -4751,7 +4958,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.1, js-yaml@^3.4.3: +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== @@ -4769,6 +4976,11 @@ json-parse-better-errors@^1.0.1: resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -4882,16 +5094,6 @@ last-run@^1.1.0: default-resolution "^2.0.0" es6-weak-map "^2.0.1" -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= - -lazy-debug-legacy@0.0.X: - version "0.0.1" - resolved "https://registry.yarnpkg.com/lazy-debug-legacy/-/lazy-debug-legacy-0.0.1.tgz#537716c0776e4cf79e3ed1b621f7658c2911b1b1" - integrity sha1-U3cWwHduTPeePtG2IfdljCkRsbE= - lazystream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" @@ -5025,13 +5227,13 @@ leaflet@^1.6.0, leaflet@~1.6.0: resolved "https://registry.yarnpkg.com/leaflet/-/leaflet-1.6.0.tgz#aecbb044b949ec29469eeb31c77a88e2f448f308" integrity sha512-CPkhyqWUKZKFJ6K8umN5/D2wrJ2+/8UIpXppY7QDnUZW5bZL5+SEI2J7GBpwh4LIupOKqbNSQXgqmrEJopHVNQ== -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" + prelude-ls "^1.2.1" + type-check "~0.4.0" liftoff@^3.1.0: version "3.1.0" @@ -5057,6 +5259,11 @@ lineclip@^1.1.5: resolved "https://registry.yarnpkg.com/lineclip/-/lineclip-1.1.5.tgz#2bf26067d94354feabf91e42768236db5616fd13" integrity sha1-K/JgZ9lDVP6r+R5CdoI221YW/RM= +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -5078,23 +5285,15 @@ loader-utils@^0.2.14: json5 "^0.5.0" object-assign "^4.0.1" -localtunnel@1.9.2: - version "1.9.2" - resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-1.9.2.tgz#0012fcabc29cf964c130a01858768aa2bb65b5af" - integrity sha512-NEKF7bDJE9U3xzJu3kbayF0WTvng6Pww7tzqNb/XtEARYwqw7CKEX7BvOMg98FtE9es2CRizl61gkV3hS8dqYg== +localtunnel@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-2.0.0.tgz#2ea71174fa80e34cce91b2a7ce416e6a57d9ff7c" + integrity sha512-g6E0aLgYYDvQDxIjIXkgJo2+pHj3sGg4Wz/XP3h2KtZnRsWPbOQY+hw1H8Z91jep998fkcVE9l+kghO+97vllg== dependencies: axios "0.19.0" debug "4.1.1" openurl "1.1.1" - yargs "6.6.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" + yargs "13.3.0" locate-path@^3.0.0: version "3.0.0" @@ -5104,6 +5303,13 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + lodash._basecopy@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" @@ -5243,15 +5449,15 @@ lodash@^4.0.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== -lodash@^4.17.10, lodash@^4.17.14, lodash@^4.17.15: +lodash@^4.17.10, lodash@^4.17.14: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= +lodash@^4.17.19: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== loud-rejection@^1.0.0: version "1.6.0" @@ -5261,13 +5467,31 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" + yallist "^4.0.0" + +lru-queue@0.1: + version "0.1.0" + resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= + dependencies: + es5-ext "~0.10.2" + +make-error-cause@^1.1.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/make-error-cause/-/make-error-cause-1.2.2.tgz#df0388fcd0b37816dff0a5fb8108939777dcbc9d" + integrity sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0= + dependencies: + make-error "^1.2.0" + +make-error@^1.2.0: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== make-iterator@^1.0.0: version "1.0.1" @@ -5286,11 +5510,6 @@ map-obj@^1.0.0, map-obj@^1.0.1: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= -map-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.0.7.tgz#8a1f07896d82b10926bd3744a2420009f88974a8" - integrity sha1-ih8HiW2CsQkmvTdEokIACfiJdKg= - map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -5319,6 +5538,20 @@ mdn-browser-compat-data@^0.0.84: dependencies: extend "3.0.2" +memoizee@0.4.X: + version "0.4.14" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57" + integrity sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg== + dependencies: + d "1" + es5-ext "^0.10.45" + es6-weak-map "^2.0.2" + event-emitter "^0.3.5" + is-promise "^2.1" + lru-queue "0.1" + next-tick "1" + timers-ext "^0.1.5" + meow@^3.1.0, meow@^3.3.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" @@ -5335,13 +5568,6 @@ meow@^3.1.0, meow@^3.3.0: redent "^1.0.0" trim-newlines "^1.0.0" -merge-stream@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" - integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= - dependencies: - readable-stream "^2.0.1" - merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -5366,6 +5592,14 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + mime-db@1.40.0: version "1.40.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" @@ -5464,29 +5698,30 @@ monotone-convex-hull-2d@^1.0.1: dependencies: robust-orientation "^1.1.3" -mri@^1.1.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" - integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== +mri@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.6.tgz#49952e1044db21dbf90f6cd92bc9c9a777d415a6" + integrity sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ== ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.1.1: +ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -multimatch@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-3.0.0.tgz#0e2534cc6bc238d9ab67e1b9cd5fcd85a6dbf70b" - integrity sha512-22foS/gqQfANZ3o+W7ST2x25ueHDVNWl/b9OlGcLpy/iKxjCpvcNCM51YCenUi7Mt/jAjjqv8JwZRs8YP5sRjA== +multimatch@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" + integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== dependencies: - array-differ "^2.0.3" - array-union "^1.0.2" - arrify "^1.0.1" + "@types/minimatch" "^3.0.3" + array-differ "^3.0.0" + array-union "^2.1.0" + arrify "^2.0.1" minimatch "^3.0.4" multipipe@^0.1.2: @@ -5506,7 +5741,7 @@ mute-stream@0.0.4: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.4.tgz#a9219960a6d5d5d046597aee51252c6655f7177e" integrity sha1-qSGZYKbV1dBGWXruUSUsZlX3F34= -mute-stream@0.0.8, mute-stream@~0.0.4: +mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== @@ -5552,7 +5787,12 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -next-tick@^1.0.0: +next-tick@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +next-tick@^1.0.0, next-tick@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= @@ -5606,7 +5846,7 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -5623,7 +5863,7 @@ normalize-path@^2.0.1, normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0: +normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -5653,17 +5893,17 @@ npm-packlist@^1.1.6: ignore-walk "^3.0.1" npm-bundled "^1.0.1" -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: - path-key "^2.0.0" + path-key "^3.0.0" -npmfiles@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/npmfiles/-/npmfiles-0.1.1.tgz#081f51f98c9a4d488e6e15acc5989870c94db77b" - integrity sha1-CB9R+YyaTUiObhWsxZiYcMlNt3s= +npmfiles@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/npmfiles/-/npmfiles-0.1.3.tgz#9a5b4c42d1c4fef9ae4143dd2ecdeb1623082919" + integrity sha512-HIyhLLFzSATLgqO1axwzcufHgNeu3+mHgRi2t/c118nlAVuNeIHdJBKs/aGdZd3Gd86B9l/7g7z8j4r3B+FO5Q== dependencies: caller-id "^0.1.0" glob "^7.1.1" @@ -5693,16 +5933,11 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@*, object-assign@^4.0.1, object-assign@^4.1.0: +object-assign@*, object-assign@4.X, object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -object-assign@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" - integrity sha1-ejs9DpgGPUP0wD8uiubNUahog6A= - object-assign@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" @@ -5732,11 +5967,6 @@ object-keys@~0.4.0: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= -object-path@^0.9.0: - version "0.9.2" - resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5" - integrity sha1-D9mnT8X60a45aLWGvaXGMr1sBaU= - object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -5818,6 +6048,11 @@ open-location-code@^1.0.0: resolved "https://registry.yarnpkg.com/open-location-code/-/open-location-code-1.0.3.tgz#5ea1a34ee5221c6cafa04392e1bd906fd7488f7e" integrity sha1-XqGjTuUiHGyvoEOS4b2Qb9dIj34= +opencollective-postinstall@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" + integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== + openurl@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/openurl/-/openurl-1.1.1.tgz#3875b4b0ef7a52c156f0db41d4609dbb0f94b387" @@ -5830,17 +6065,17 @@ opn@5.3.0: dependencies: is-wsl "^1.1.0" -optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" ordered-read-streams@^1.0.0: version "1.0.1" @@ -5849,7 +6084,7 @@ ordered-read-streams@^1.0.0: dependencies: readable-stream "^2.0.1" -os-homedir@^1.0.0, os-homedir@^1.0.1: +os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= @@ -5874,18 +6109,6 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - p-limit@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" @@ -5893,12 +6116,12 @@ p-limit@^2.0.0: dependencies: p-try "^2.0.0" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: - p-limit "^1.1.0" + p-try "^2.0.0" p-locate@^3.0.0: version "3.0.0" @@ -5907,10 +6130,12 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" p-try@^2.0.0: version "2.2.0" @@ -5948,6 +6173,16 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" +parse-json@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" + integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + parse-node-version@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" @@ -5958,10 +6193,10 @@ parse-passwd@^1.0.0: resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= -parse5@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" - integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== +parse5@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== parseqs@0.0.5: version "0.0.5" @@ -6022,6 +6257,11 @@ path-exists@^3.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + 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" @@ -6032,11 +6272,16 @@ path-is-inside@^1.0.1: 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.0, path-key@^2.0.1: +path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" @@ -6063,18 +6308,21 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" -pause-stream@^0.0.11: - version "0.0.11" - resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" - integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU= - dependencies: - through "~2.3" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -6092,22 +6340,22 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= -pkg-dir@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.1.0.tgz#aaeb91c0d3b9c4f74a44ad849f4de34781ae01de" - integrity sha512-55k9QN4saZ8q518lE6EFgYiu95u3BWkSajCifhdQjvLvmr8IpnRbhI+UGpWJQfa0KzDguHeeWT1ccO1PmkOi3A== +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: - find-up "^3.0.0" + find-up "^4.0.0" pkginfo@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.3.1.tgz#5b29f6a81f70717142e09e765bbeab97b4f81e21" integrity sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE= -please-upgrade-node@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz#ed320051dfcc5024fae696712c8288993595e8ac" - integrity sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ== +please-upgrade-node@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== dependencies: semver-compare "^1.0.0" @@ -6140,12 +6388,12 @@ plugin-log@^0.1.0: chalk "^1.1.1" dateformat "^1.0.11" -plur@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" - integrity sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo= +plur@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/plur/-/plur-3.1.1.tgz#60267967866a8d811504fe58f2faaba237546a5b" + integrity sha512-t1Ax8KUvV3FFII8ltczPn2tJdjqbd1sIzu6t4JL7nQ3EyeL/lTrj5PWKb06ic5/6XYDr65rQ4uzQEGN70/6X5w== dependencies: - irregular-plurals "^1.0.0" + irregular-plurals "^2.0.0" point-in-polygon@^1.0.1: version "1.0.1" @@ -6170,31 +6418,13 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postcss-load-config@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-1.2.0.tgz#539e9afc9ddc8620121ebf9d8c3673e0ce50d28a" - integrity sha1-U56a/J3chiASHr+djDZz4M5Q0oo= +postcss-load-config@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" + integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== dependencies: - cosmiconfig "^2.1.0" - object-assign "^4.1.0" - postcss-load-options "^1.2.0" - postcss-load-plugins "^2.3.0" - -postcss-load-options@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-load-options/-/postcss-load-options-1.2.0.tgz#b098b1559ddac2df04bc0bb375f99a5cfe2b6d8c" - integrity sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw= - dependencies: - cosmiconfig "^2.1.0" - object-assign "^4.1.0" - -postcss-load-plugins@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz#745768116599aca2f009fad426b00175049d8d92" - integrity sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI= - dependencies: - cosmiconfig "^2.1.1" - object-assign "^4.1.0" + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" postcss-loader@^0.9.1: version "0.9.1" @@ -6219,7 +6449,7 @@ postcss@^5.0.19, postcss@^5.2.16: source-map "^0.5.6" supports-color "^3.2.3" -postcss@^6.0.0, postcss@^6.0.23: +postcss@^6.0.23: version "6.0.23" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== @@ -6228,20 +6458,29 @@ postcss@^6.0.0, postcss@^6.0.23: source-map "^0.6.1" supports-color "^5.4.0" +postcss@^7.0.16: + version "7.0.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" + integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + postinstall-postinstall@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prettier@^1.17.1: - version "1.17.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.17.1.tgz#ed64b4e93e370cb8a25b9ef7fef3e4fd1c0995db" - integrity sha512-TzGRNvuUSmPgwivDqkZ9tM/qTGW9hqDKWOE9YHiyQdixlKbv7kvEqsmDPrcHJTKwthU774TQwZXVtaQ/mMsvjg== +prettier@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" + integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== pretty-bytes@^1.0.4: version "1.0.4" @@ -6256,17 +6495,17 @@ pretty-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= -pretty-quick@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/pretty-quick/-/pretty-quick-1.10.0.tgz#d86cc46fe92ed8cfcfba6a082ec5949c53858198" - integrity sha512-uNvm2N3UWmnZRZrClyQI45hIbV20f5BpSyZY51Spbvn4APp9+XLyX4bCjWRGT3fGyVyQ/2/iw7dbQq1UUaq7SQ== +pretty-quick@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pretty-quick/-/pretty-quick-3.1.0.tgz#cb172e9086deb57455dea7c7e8f136cd0a4aef6c" + integrity sha512-DtxIxksaUWCgPFN7E1ZZk4+Aav3CCuRdhrDSFZENb404sYMtuo9Zka823F+Mgeyt8Zt3bUiCjFzzWYE9LYqkmQ== dependencies: - chalk "^2.3.0" - execa "^0.8.0" - find-up "^2.1.0" - ignore "^3.3.7" - mri "^1.1.0" - multimatch "^3.0.0" + chalk "^3.0.0" + execa "^4.0.0" + find-up "^4.1.0" + ignore "^5.1.4" + mri "^1.1.5" + multimatch "^4.0.0" process-nextick-args@^2.0.0: version "2.0.0" @@ -6296,15 +6535,10 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise-polyfill@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.0.tgz#30059da54d1358ce905ac581f287e184aedf995d" - integrity sha512-OzSf6gcCUQ01byV4BgwyUCswlaQQ6gzXc23aLQWhicvfX9kfsUiUhgt3CCQej8jDnl8/PhGF31JdHX2/MzF3WA== - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= +promise-polyfill@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.2.0.tgz#367394726da7561457aba2133c9ceefbd6267da0" + integrity sha512-k/TC0mIcPVF6yHhUvwAp7cvL6I2fFV7TzF1DuGPI8mBh4QQazf36xCKEHKTZKRysEoTQoQdKyP25J8MPJp7j5g== psl@^1.1.24: version "1.1.31" @@ -6429,16 +6663,6 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -read-pkg@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.1.1.tgz#5cf234dde7a405c90c88a519ab73c467e9cb83f5" - integrity sha512-dFcTLQi6BZ+aFUaICg7er+/usEoqFdQxiEBsEMNGoipenihtxxtdrQuBXvyANCEI8VuUIVYFgeHGx9sLLvim4w== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^4.0.0" - type-fest "^0.4.1" - read@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" @@ -6455,6 +6679,15 @@ read@~1.0.5: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@3, readable-stream@^3.1.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + "readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.17, readable-stream@~1.0.26: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" @@ -6509,6 +6742,13 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + dependencies: + picomatch "^2.2.1" + readline-sync@~1.4.9: version "1.4.9" resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.9.tgz#3eda8e65f23cd2a17e61301b1f0003396af5ecda" @@ -6537,16 +6777,16 @@ redent@^1.0.0: indent-string "^2.1.0" strip-indent "^1.0.1" -regenerator-runtime@^0.12.0: - version "0.12.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" - integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== - regenerator-runtime@^0.13.2: version "0.13.3" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== +regenerator-runtime@^0.13.4: + version "0.13.7" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -6555,10 +6795,10 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== +regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== remove-bom-buffer@^3.0.0: version "3.0.0" @@ -6587,7 +6827,7 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.5.2, repeat-string@^1.6.1: +repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= @@ -6663,17 +6903,17 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-from-string@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" - integrity sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg= - require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= -requires-port@1.x.x: +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= @@ -6737,14 +6977,6 @@ resp-modifier@6.0.2: debug "^2.2.0" minimatch "^3.0.2" -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -6770,14 +7002,7 @@ rework@^1.0.1: convert-source-map "^0.3.3" css "^2.0.0" -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= - dependencies: - align-text "^0.1.1" - -rimraf@2.6.3, rimraf@^2.2.8: +rimraf@^2.2.8: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -6791,6 +7016,13 @@ rimraf@^2.6.1, rimraf@^2.6.3: dependencies: glob "^7.1.3" +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + robust-orientation@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/robust-orientation/-/robust-orientation-1.1.3.tgz#daff5b00d3be4e60722f0e9c0156ef967f1c2049" @@ -6819,18 +7051,6 @@ robust-sum@^1.0.0: resolved "https://registry.yarnpkg.com/robust-sum/-/robust-sum-1.0.0.tgz#16646e525292b4d25d82757a286955e0bbfa53d9" integrity sha1-FmRuUlKStNJdgnV6KGlV4Lv6U9k= -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= - dependencies: - is-promise "^2.1.0" - -run-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e" - integrity sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A== - rx@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" @@ -6848,13 +7068,6 @@ rxjs@^5.5.6: dependencies: symbol-observable "1.0.1" -rxjs@^6.4.0: - version "6.5.3" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.3.tgz#510e26317f4db91a7eb1de77d9dd9ba0a4899a3a" - integrity sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA== - dependencies: - tslib "^1.9.0" - safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -6894,26 +7107,33 @@ semver-greatest-satisfied-range@^1.1.0: dependencies: sver-compat "^1.5.0" -"semver@2 || 3 || 4 || 5", semver@^5.3.0: +semver-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" + integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== + +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^5.1.0, semver@^5.6.0: +semver@^5.1.0: version "5.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== -semver@^5.5.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== - semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.2.1: + version "7.3.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== + dependencies: + lru-cache "^6.0.0" + send@0.16.2: version "0.16.2" resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" @@ -6981,6 +7201,13 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" +set-value@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-3.0.2.tgz#74e8ecd023c33d0f77199d415409a40f21e61b90" + integrity sha512-npjkVoz+ank0zjlV9F47Fdbjfj/PfXyVhZvGALWsyIYU/qrMzpi6avjKW3/7KeSU2Df3I46BrN1xOI1+6vW0hA== + dependencies: + is-plain-object "^2.0.4" + setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -7005,11 +7232,23 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -7149,12 +7388,10 @@ socket.io@2.1.1: socket.io-client "2.1.1" socket.io-parser "~3.2.0" -sortobject@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/sortobject/-/sortobject-1.2.0.tgz#f24dbd1c1eb53013823f4045c5cae75e0aea273a" - integrity sha512-b/UBYCIXcloH6NO0CSG+/8dYsDA+egku07g0oeYPBmmt8CS64pORXPYmQ/W65UBGxYz7dTacjWgBVlq/TzxmQQ== - dependencies: - editions "^2.1.3" +sortobject@^4.0.0: + version "4.14.0" + resolved "https://registry.yarnpkg.com/sortobject/-/sortobject-4.14.0.tgz#1c1b09862033c93731198a4f7d25eb5140328123" + integrity sha512-CpH+1tXhO2IOZU7rlpuoBAil/1oxcd5kYIvwKcNd03/3Y9ls9YYe7jbJ6kNW70A/sKJbMBBHTzy68IO7KIM58g== source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.2" @@ -7167,17 +7404,25 @@ source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: source-map-url "^0.4.0" urix "^0.1.0" +source-map-resolve@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" + integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@^0.5.1, source-map@^0.5.6, source-map@~0.5.1: +source-map@^0.5.1, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.6.1, source-map@~0.6.0: +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -7225,12 +7470,10 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" -split@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" - integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== - dependencies: - through "2" +split-string@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-6.1.0.tgz#e9cedcf94cdab077d9b5528927894dec4b0f42ab" + integrity sha512-9UBdnmnvx2NLLd4bMs7CEKK+wSzbujVv3ONyorkP1o8M3pVJQtXDO1cN19xD1JJs6ltOrtPrkUND0HzLSinUcA== sprintf-js@~1.0.2: version "1.0.3" @@ -7280,14 +7523,6 @@ statuses@~1.4.0: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== -stream-combiner@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.2.2.tgz#aec8cbac177b56b6f4fa479ced8c1912cee52858" - integrity sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg= - dependencies: - duplexer "~0.1.1" - through "~2.3.4" - stream-exhaust@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" @@ -7306,6 +7541,13 @@ stream-throttle@^0.1.3: commander "^2.2.0" limiter "^1.0.5" +stream-to-array@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/stream-to-array/-/stream-to-array-2.3.0.tgz#bbf6b39f5f43ec30bc71babcb37557acecf34353" + integrity sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M= + dependencies: + any-promise "^1.1.0" + string-editor@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/string-editor/-/string-editor-0.1.2.tgz#f5ff1b5ac4aed7ac6c2fb8de236d1551b20f61d0" @@ -7330,7 +7572,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0: +string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== @@ -7348,6 +7590,15 @@ string-width@^4.1.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^5.2.0" +string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + string_decoder@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" @@ -7367,12 +7618,13 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-object@^2.3.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-2.4.0.tgz#c62d11023eb21fe2d9b087be039a26df3b22a09d" - integrity sha1-xi0RAj6yH+LZsIe+A5om3zsioJ0= +stringify-object@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== dependencies: - is-plain-obj "^1.0.0" + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" is-regexp "^1.0.0" strip-ansi@^2.0.1: @@ -7396,13 +7648,20 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^5.1.0, strip-ansi@^5.2.0: +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + strip-ansi@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" @@ -7423,17 +7682,22 @@ strip-bom-stream@^3.0.0: first-chunk-stream "^2.0.0" strip-bom-buf "^1.0.0" -strip-bom@2.X, strip-bom@^2.0.0: +strip-bom-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI= + +strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= dependencies: is-utf8 "^0.2.0" -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== strip-indent@^1.0.1: version "1.0.1" @@ -7442,10 +7706,10 @@ strip-indent@^1.0.1: dependencies: get-stdin "^4.0.1" -strip-json-comments@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" - integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== strip-json-comments@~2.0.1: version "2.0.1" @@ -7471,6 +7735,20 @@ supports-color@^5.3.0, supports-color@^5.4.0: dependencies: has-flag "^3.0.0" +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + sver-compat@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" @@ -7507,38 +7785,33 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.3" -ternary-stream@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ternary-stream/-/ternary-stream-2.0.1.tgz#064e489b4b5bf60ba6a6b7bc7f2f5c274ecf8269" - integrity sha1-Bk5Im0tb9gumpre8fy9cJ07Pgmk= +ternary-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ternary-stream/-/ternary-stream-3.0.0.tgz#7951930ea9e823924d956f03d516151a2d516253" + integrity sha512-oIzdi+UL/JdktkT+7KU5tSIQjj8pbShj3OASuvDEhm0NT5lppsm7aXWAmAq4/QMaBIyfuEcNLbAQA+HpaISobQ== dependencies: - duplexify "^3.5.0" + duplexify "^4.1.1" fork-stream "^0.0.4" - merge-stream "^1.0.0" - through2 "^2.0.1" - -tether@1.4.5: - version "1.4.5" - resolved "https://registry.yarnpkg.com/tether/-/tether-1.4.5.tgz#8efd7b35572767ba502259ba9b1cc167fcf6f2c1" - integrity sha512-fysT1Gug2wbRi7a6waeu39yVDwiNtvwj5m9eRD+qZDSHKNghLo6KqP/U3yM2ap6TNUL2skjXGJaJJTJqoC31vw== + merge-stream "^2.0.0" + through2 "^3.0.1" text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -textextensions@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-1.0.2.tgz#65486393ee1f2bb039a60cbba05b0b68bd9501d2" - integrity sha1-ZUhjk+4fK7A5pgy7oFsLaL2VAdI= +textextensions@2: + version "2.6.0" + resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.6.0.tgz#d7e4ab13fe54e32e08873be40d51b74229b00fc4" + integrity sha512-49WtAWS+tcsy93dRt6P0P3AMD2m5PvXRhuEA0kaXos5ZLlujtYmpmFsB+QvWUSxE1ZsstmYXfQ7L40+EcQgpAQ== -tfunk@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/tfunk/-/tfunk-3.1.0.tgz#38e4414fc64977d87afdaa72facb6d29f82f7b5b" - integrity sha1-OORBT8ZJd9h6/apy+sttKfgve1s= +tfunk@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tfunk/-/tfunk-4.0.0.tgz#de9399feaf2060901d590b7faad80fcd5443077e" + integrity sha512-eJQ0dGfDIzWNiFNYFVjJ+Ezl/GmwHaFTBTjrtqNPW0S7cuVDBrZrmzUz6VkMeCR4DZFqhd4YtLwsw3i2wYHswQ== dependencies: - chalk "^1.1.1" - object-path "^0.9.0" + chalk "^1.1.3" + dlv "^1.1.3" through2-filter@^3.0.0: version "3.0.0" @@ -7548,21 +7821,12 @@ through2-filter@^3.0.0: through2 "~2.0.0" xtend "~4.0.0" -through2@2.X, through2@^2.0.0, through2@^2.0.1, through2@^2.0.3, through2@~2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through2@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.0.tgz#468b461df9cd9fcc170f22ebf6852e467e578ff2" - integrity sha512-8B+sevlqP4OiCjonI1Zw03Sf8PuV1eRsYQgLad5eonILOdyeRsY27A/2Ze8IlvlMvq31OH+3fz/styI7Ya62yQ== +through2@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" + integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== dependencies: readable-stream "2 || 3" - xtend "~4.0.1" through2@^0.5.0: version "0.5.1" @@ -7572,6 +7836,29 @@ through2@^0.5.0: readable-stream "~1.0.17" xtend "~3.0.0" +through2@^2.0.0, through2@^2.0.1, through2@^2.0.3, through2@~2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through2@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" + integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ== + dependencies: + inherits "^2.0.4" + readable-stream "2 || 3" + +through2@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" + integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== + dependencies: + readable-stream "3" + through2@~0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/through2/-/through2-0.2.3.tgz#eb3284da4ea311b6cc8ace3653748a52abf25a3f" @@ -7588,7 +7875,7 @@ through2@~0.6.3: readable-stream ">=1.0.33-1 <1.1.0-0" xtend ">=4.0.0 <4.1.0-0" -through@2, through@^2.3.6, through@^2.3.8, through@~2.3, through@~2.3.4: +through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -7605,6 +7892,14 @@ time-stamp@^1.0.0: resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= +timers-ext@^0.1.5: + version "0.1.7" + resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" + integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== + dependencies: + es5-ext "~0.10.46" + next-tick "1" + tinyqueue@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-1.2.3.tgz#b6a61de23060584da29f82362e45df1ec7353f3d" @@ -7645,6 +7940,13 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -7694,11 +7996,6 @@ trim-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= -tslib@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" - integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -7726,57 +8023,42 @@ two-sum@^1.0.0: resolved "https://registry.yarnpkg.com/two-sum/-/two-sum-1.0.0.tgz#31d3f32239e4f731eca9df9155e2b297f008ab64" integrity sha1-MdPzIjnk9zHsqd+RVeKyl/AIq2Q= -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: - prelude-ls "~1.1.2" + prelude-ls "^1.2.1" -type-fest@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" - integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== - -type-fest@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.5.2.tgz#d6ef42a0356c6cd45f49485c3b6281fc148e48a2" - integrity sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw== +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== type@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/type/-/type-1.0.1.tgz#084c9a17fcc9151a2cdb1459905c2e45e4bb7d61" integrity sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw== +type@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.1.0.tgz#9bdc22c648cf8cf86dd23d32336a41cfb6475e3f" + integrity sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA== + typedarray@^0.0.6, typedarray@~0.0.5: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -ua-parser-js@0.7.17: - version "0.7.17" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" - integrity sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g== +ua-parser-js@^0.7.18: + version "0.7.22" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.22.tgz#960df60a5f911ea8f1c818f3747b99c6e177eae3" + integrity sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q== -uglify-js@2.6.4: - version "2.6.4" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.6.4.tgz#65ea2fb3059c9394692f15fed87c2b36c16b9adf" - integrity sha1-ZeovswWck5RpLxX+2HwrNsFrmt8= - dependencies: - async "~0.2.6" - source-map "~0.5.1" - uglify-to-browserify "~1.0.0" - yargs "~3.10.0" - -uglify-save-license@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/uglify-save-license/-/uglify-save-license-0.4.1.tgz#95726c17cc6fd171c3617e3bf4d8d82aa8c4cce1" - integrity sha1-lXJsF8xv0XHDYX479NjYKqjEzOE= - -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= +uglify-js@^3.0.5: + version "3.12.1" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.12.1.tgz#78307f539f7b9ca5557babb186ea78ad30cc0375" + integrity sha512-o8lHP20KjIiQe5b/67Rh68xEGRrc2SRsCuuoYclXXoC74AfSRGblU1HKzJWH3HxPZ+Ort85fWHpSX7KwBUC9CQ== ultron@~1.1.0: version "1.1.1" @@ -7823,6 +8105,14 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" +union-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-2.0.1.tgz#4e1ab0f99ab52c52a53e14d8039b5130fef682b8" + integrity sha512-NmcRHHhUy1qWmp6yYWsaURV2qwfS24TmTtO9S9x0L41wCNNVBQFD3toOzO0cd8SsNrFhbw/O0iYO5uffXGYocw== + dependencies: + get-value "^3.0.1" + set-value "^3.0.0" + unique-stream@^2.0.2: version "2.3.1" resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" @@ -7968,15 +8258,6 @@ vinyl-sourcemaps-apply@0.2.1, vinyl-sourcemaps-apply@^0.2.0, vinyl-sourcemaps-ap dependencies: source-map "^0.5.1" -vinyl@1.X: - version "1.2.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" - integrity sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ= - dependencies: - clone "^1.0.0" - clone-stats "^0.0.1" - replace-ext "0.0.1" - vinyl@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" @@ -7998,16 +8279,26 @@ vinyl@^2.0.0, vinyl@^2.0.1, vinyl@^2.1.0, vinyl@^2.2.0: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" -whatwg-fetch@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" - integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== +whatwg-fetch@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz#605a2cd0a7146e5db141e29d1c62ab84c0c4c868" + integrity sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A== which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which-pm-runs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" + integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= + which@^1.2.14, which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -8015,6 +8306,13 @@ which@^1.2.14, which@^1.2.9: dependencies: isexe "^2.0.0" +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" @@ -8022,25 +8320,10 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= - -window-size@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" - integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU= - -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= - -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== wrap-ansi@^2.0.0: version "2.1.0" @@ -8050,18 +8333,29 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - ws@~3.3.1: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" @@ -8088,7 +8382,7 @@ xmlhttprequest-ssl@~1.5.4: resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= -"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: +"xtend@>=4.0.0 <4.1.0-0", xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= @@ -8110,22 +8404,41 @@ y18n@^3.2.1: resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= +y18n@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" + integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== yallist@^3.0.0, yallist@^3.0.3: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yargs-parser@^4.1.0, yargs-parser@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" - integrity sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw= +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== + +yargs-parser@^13.1.1: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== dependencies: - camelcase "^3.0.0" + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" yargs-parser@^5.0.0: version "5.0.0" @@ -8134,44 +8447,38 @@ yargs-parser@^5.0.0: dependencies: camelcase "^3.0.0" -yargs@6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.4.0.tgz#816e1a866d5598ccf34e5596ddce22d92da490d4" - integrity sha1-gW4ahm1VmMzzTlWW3c4i2S2kkNQ= +yargs@13.3.0: + version "13.3.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" + integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" require-directory "^2.1.1" - require-main-filename "^1.0.1" + require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - window-size "^0.2.0" - y18n "^3.2.1" - yargs-parser "^4.1.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.1" -yargs@6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" - integrity sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg= +yargs@^15.4.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" require-directory "^2.1.1" - require-main-filename "^1.0.1" + require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^4.2.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" yargs@^7.1.0: version "7.1.0" @@ -8192,17 +8499,7 @@ yargs@^7.1.0: y18n "^3.2.1" yargs-parser "^5.0.0" -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" - -yazl@^2.1.0: +yazl@^2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/yazl/-/yazl-2.5.1.tgz#a3d65d3dd659a5b0937850e8609f22fffa2b5c35" integrity sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==