nakarte

Source code of https://map.sikmir.ru (fork)
git clone git://git.sikmir.ru/nakarte
Log | Files | Refs | LICENSE

commit c9376f49cf2060cfc38c84b2a6ffcc58d0724cf4
parent 23ed476722b1795e2e4c6806cbc3df9af1c451c7
Author: Sergey Orlov <wladimirych@gmail.com>
Date:   Fri, 18 Sep 2020 09:06:27 +0200

eslint: add check for import/export errors and fix issues

Diffstat:
M.eslintrc.js | 28+++++++++++++++++++---------
Aeslint_rules/imports.js | 65+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aeslint_rules/imports_configs.js | 17+++++++++++++++++
Aeslint_rules/imports_relax_legacy.js | 61+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aeslint_rules/imports_relax_protobuf.js | 9+++++++++
Aeslint_rules/imports_relax_vendored.js | 9+++++++++
Aeslint_rules/imports_tests.js | 7+++++++
Aeslint_rules/imports_webapp.js | 11+++++++++++
Mpackage.json | 5++++-
Msrc/App.js | 6+++---
Msrc/config.js | 4+++-
Msrc/index.js | 2+-
Msrc/lib/clipboardCopy/index.js | 2+-
Msrc/lib/file-read/index.js | 2+-
Msrc/lib/leaflet.control.azimuth/index.js | 2+-
Msrc/lib/leaflet.control.coordinates/formats.js | 2+-
Msrc/lib/leaflet.control.coordinates/index.js | 2+-
Msrc/lib/leaflet.control.elevation-profile/index.js | 2+-
Msrc/lib/leaflet.control.external-maps/index.js | 2+-
Msrc/lib/leaflet.control.jnx/hash-state.js | 1-
Msrc/lib/leaflet.control.jnx/index.js | 2+-
Msrc/lib/leaflet.control.layers.configure/index.js | 2+-
Msrc/lib/leaflet.control.panoramas/lib/google/index.js | 3++-
Msrc/lib/leaflet.control.panoramas/lib/mapillary/index.js | 3++-
Msrc/lib/leaflet.control.panoramas/lib/mapycz/index.js | 3++-
Msrc/lib/leaflet.control.panoramas/lib/wikimedia/index.js | 7++-----
Msrc/lib/leaflet.control.printPages/control.js | 2+-
Msrc/lib/leaflet.control.search/index.js | 6+++---
Msrc/lib/leaflet.control.search/providers/mapycz/index.js | 2+-
Msrc/lib/leaflet.control.search/providers/photon.js | 2+-
Msrc/lib/leaflet.control.track-list/lib/geo_file_exporters.js | 2+-
Msrc/lib/leaflet.control.track-list/lib/parsers/index.js | 4+++-
Msrc/lib/leaflet.control.track-list/lib/parsers/nktk.js | 2+-
Msrc/lib/leaflet.control.track-list/lib/parsers/urlSafeBase64.js | 2+-
Msrc/lib/leaflet.control.track-list/lib/services/index.js | 4+++-
Msrc/lib/leaflet.control.track-list/lib/services/nakarte/loadTracksFromJson.js | 2+-
Msrc/lib/leaflet.control.track-list/track-list.js | 4++--
Msrc/lib/leaflet.control.track-list/track-list.localstorage.js | 2+-
Msrc/lib/leaflet.hashState/leaflet.hashState.js | 2+-
Msrc/lib/leaflet.layer.bing/dates.js | 2+-
Msrc/lib/leaflet.layer.geocaching-su/index.js | 2+-
Msrc/lib/leaflet.layer.geojson-ajax/index.js | 2+-
Msrc/lib/leaflet.layer.westraPasses/westraPassesMarkers.js | 2+-
Msrc/lib/leaflet.layer.wikimapia/wikimapia-loader.js | 2+-
Msrc/lib/leaflet.layer.wikimapia/wm-utils.js | 2+-
Msrc/lib/logging/index.js | 2+-
Msrc/lib/safe-localstorage/index.js | 2+-
Msrc/secrets.js.template | 4+++-
Mtest/test_track_load.js | 3++-
Mtest/test_track_load_from_nakarte_urls.js | 3++-
Myarn.lock | 295+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
51 files changed, 549 insertions(+), 67 deletions(-)

diff --git a/.eslintrc.js b/.eslintrc.js @@ -1,22 +1,25 @@ 'use strict'; const legacyFiles = require('./eslint_rules/legacy_files_list'); + const vendoredFiles = './src/vendored/**/*.js'; const protobufFiles = './src/**/*_pb.js'; module.exports = { root: true, ignorePatterns: ['node_modules', 'build', 'deploy'], - extends: ['./eslint_rules/base.js'], + extends: ['./eslint_rules/base.js', './eslint_rules/imports.js'], overrides: [ + /* all new js code */ { files: './**/*.js', excludedFiles: [...legacyFiles, vendoredFiles, protobufFiles], extends: ['./eslint_rules/prettier.js'], }, + /* web application */ { - files: './src/**/*.js', // web application - extends: ['./eslint_rules/relax_webapp_js.js'], + files: './src/**/*.js', + extends: ['./eslint_rules/relax_webapp_js.js', './eslint_rules/imports_webapp.js'], env: { browser: true, es2020: true, @@ -31,23 +34,27 @@ module.exports = { RELEASE_VER: true, }, }, + /* web application legacy code*/ { - files: legacyFiles, // for legacy code - extends: ['./eslint_rules/relax_legacy.js'], + files: legacyFiles, + extends: ['./eslint_rules/relax_legacy.js', './eslint_rules/imports_relax_legacy.js'], }, + /* vendored files*/ { files: vendoredFiles, - extends: ['./eslint_rules/relax_vendored.js'], + extends: ['./eslint_rules/relax_vendored.js', './eslint_rules/imports_relax_vendored.js'], }, + /* auto-generated files */ { - files: protobufFiles, // auto-generated files - extends: ['./eslint_rules/relax_protobuf.js'], + files: protobufFiles, + extends: ['./eslint_rules/relax_protobuf.js', './eslint_rules/imports_relax_protobuf.js'], }, + /* tests code */ { files: './test/**/*.js', excludedFiles: './test/karma.conf.js', parser: 'babel-eslint', - extends: ['./eslint_rules/relax_tests.js'], + extends: ['./eslint_rules/relax_tests.js', './eslint_rules/imports_tests.js'], env: { browser: true, mocha: true, @@ -61,6 +68,7 @@ module.exports = { assert: true, }, }, + /* config code */ { files: [ './webpack/**/*.js', @@ -73,7 +81,9 @@ module.exports = { node: true, es2017: true, }, + extends: ['./eslint_rules/imports_configs.js'], }, + /* command line scripts */ { files: ['./scripts/build.js', './webpack/webpack.config.js'], rules: { diff --git a/eslint_rules/imports.js b/eslint_rules/imports.js @@ -0,0 +1,65 @@ +'use strict'; + +module.exports = { + plugins: ['import'], + rules: { + 'import/no-unresolved': ['error', {commonjs: true, amd: true}], + 'import/named': 'error', + 'import/default': 'error', + 'import/namespace': 'error', + // 'import/no-restricted-paths)', // may be add sometime + 'import/no-absolute-path': 'error', + 'import/no-dynamic-require': 'error', + // 'import/no-internal-modules': 'error', // checked, declined + 'import/no-webpack-loader-syntax': 'error', + 'import/no-self-import': 'error', + 'import/no-cycle': 'error', + 'import/no-useless-path-segments': ['error', {noUselessIndex: true}], + // 'import/no-relative-parent-imports': 'error', // checked, declined + 'import/export': 'error', + 'import/no-named-as-default': 'error', + 'import/no-named-as-default-member': 'error', + 'import/no-deprecated': 'error', + 'import/no-extraneous-dependencies': [ + 'error', + { + devDependencies: false, + optionalDependencies: false, + peerDependencies: false, + bundledDependencies: false, + }, + ], + 'import/no-mutable-exports': 'error', + 'import/no-unused-modules': ['error', {missingExports: true, unusedExports: true}], + 'import/unambiguous': 'error', + 'import/no-commonjs': 'error', + 'import/no-amd': 'error', + 'import/first': 'error', + 'import/exports-last': 'error', + 'import/no-duplicates': 'error', + // 'import/no-namespace': 'error', // checked, declined + 'import/extensions': ['error', 'always', {js: 'never'}], + // 'import/order': 'error' // to be done + 'import/newline-after-import': 'error', + // 'import/prefer-default-export': 'error', // checked, declined + // 'import/max-dependencies': 'error', // checked, declined + 'import/no-unassigned-import': 'error', + 'import/no-named-default': 'error', + // 'import/no-default-export': 'error', // checked, declined + // 'import/no-named-export': 'error', // checked, declined + 'import/no-anonymous-default-export': 'error', + 'import/group-exports': 'error', + // 'import/dynamic-import-chunkname': 'error', // checked, no idea why to use + }, + settings: { + 'import/resolver': { + node: {}, // workaround for https://github.com/benmosher/eslint-plugin-import/issues/1861 + webpack: { + config: './webpack/webpack.config.js', + env: { + NODE_ENV: 'production', + }, + }, + }, + }, +}; diff --git a/eslint_rules/imports_configs.js b/eslint_rules/imports_configs.js @@ -0,0 +1,17 @@ +'use strict'; + +module.exports = { + rules: { + 'import/no-extraneous-dependencies': [ + 'error', + { + devDependencies: true, + optionalDependencies: false, + peerDependencies: false, + bundledDependencies: false, + }, + ], + 'import/no-unused-modules': 'off', + 'import/no-commonjs': 'off', + }, +}; diff --git a/eslint_rules/imports_relax_legacy.js b/eslint_rules/imports_relax_legacy.js @@ -0,0 +1,61 @@ +'use strict'; + +const topLevelFiles = ['src/index.js']; +const filesMissingExport = [ + 'src/lib/knockout.component.progress/progress.js', + 'src/lib/leaflet.control.azimuth/index.js', + 'src/lib/leaflet.control.caption/index.js', + 'src/lib/leaflet.control.coordinates/index.js', + 'src/lib/leaflet.control.jnx/hash-state.js', + 'src/lib/leaflet.control.jnx/index.js', + 'src/lib/leaflet.control.layers.configure/customLayer.js', + 'src/lib/leaflet.control.layers.events/index.js', + 'src/lib/leaflet.control.panoramas/index.js', + 'src/lib/leaflet.control.printPages/control.js', + 'src/lib/leaflet.control.track-list/control-ruler.js', + 'src/lib/leaflet.control.track-list/track-list.hash-state.js', + 'src/lib/leaflet.control.track-list/track-list.localstorage.js', + 'src/lib/leaflet.hashState/Leaflet.Control.Layers.js', + 'src/lib/leaflet.hashState/Leaflet.Map.js', + 'src/lib/leaflet.hashState/leaflet.hashState.js', + 'src/lib/leaflet.layer.canvasMarkers/index.js', + 'src/lib/leaflet.layer.geojson-ajax/index.js', + 'src/lib/leaflet.layer.google/index.js', + 'src/lib/leaflet.layer.rasterize/Bing.js', + 'src/lib/leaflet.layer.rasterize/CanvasMarkers.js', + 'src/lib/leaflet.layer.rasterize/Google.js', + 'src/lib/leaflet.layer.rasterize/MeasuredLine.js', + 'src/lib/leaflet.layer.rasterize/TileLayer.js', + 'src/lib/leaflet.layer.rasterize/WestraPasses.js', + 'src/lib/leaflet.layer.rasterize/Yandex.js', + 'src/lib/leaflet.layer.soviet-topomaps-grid/index.js', + 'src/lib/leaflet.layer.westraPasses/index.js', + 'src/lib/leaflet.layer.wikimapia/index.js', + 'src/lib/leaflet.layer.yandex/index.js', + 'src/lib/leaflet.lineutil.simplifyLatLngs/index.js', + 'src/lib/leaflet.placemark/index.js', + 'src/lib/leaflet.polyline-edit/index.js', + 'src/lib/leaflet.polyline-measure/index.js', +]; + +const filesWithExportAndSideEffects = [ + 'src/lib/leaflet.control.track-list/track-list', + 'src/lib/leaflet.control.commons', +]; + +const filesMissingExportForUnassigned = [ + ...filesMissingExport.map((s) => s.replace(/(\/index)?\.js$/u, '').replace(/^src\//u, '~/')), + ...filesMissingExport.map((s) => s.replace(/(\/index)?\.js$/u, '')), + ...filesWithExportAndSideEffects, + ...filesWithExportAndSideEffects.map((s) => s.replace(/^src\//u, '~/')), +]; +module.exports = { + rules: { + 'import/no-cycle': 'off', + 'import/no-unused-modules': [ + 'error', + {missingExports: true, unusedExports: true, ignoreExports: [...topLevelFiles, ...filesMissingExport]}, + ], + 'import/no-unassigned-import': ['error', {allow: ['**/*.css', ...filesMissingExportForUnassigned]}], + }, +}; diff --git a/eslint_rules/imports_relax_protobuf.js b/eslint_rules/imports_relax_protobuf.js @@ -0,0 +1,9 @@ +'use strict'; + +module.exports = { + rules: { + 'import/no-unused-modules': ['error', {missingExports: false, unusedExports: true}], + 'import/unambiguous': 'off', + 'import/no-commonjs': 'off', + }, +}; diff --git a/eslint_rules/imports_relax_vendored.js b/eslint_rules/imports_relax_vendored.js @@ -0,0 +1,9 @@ +'use strict'; + +module.exports = { + rules: { + 'import/no-mutable-exports': 'off', + 'import/no-unused-modules': ['error', {missingExports: false, unusedExports: true}], + 'import/unambiguous': 'off', + }, +}; diff --git a/eslint_rules/imports_tests.js b/eslint_rules/imports_tests.js @@ -0,0 +1,7 @@ +'use strict'; + +module.exports = { + rules: { + 'import/no-unused-modules': ['error', {missingExports: false, unusedExports: true}], + }, +}; diff --git a/eslint_rules/imports_webapp.js b/eslint_rules/imports_webapp.js @@ -0,0 +1,11 @@ +'use strict'; + +module.exports = { + rules: { + 'import/no-unused-modules': [ + 'error', + {missingExports: true, unusedExports: true, ignoreExports: ['src/index.js']}, + ], + 'import/no-unassigned-import': ['error', {allow: ['**/*.css']}], + }, +}; diff --git a/package.json b/package.json @@ -4,7 +4,7 @@ "scripts": { "build": "node scripts/build.js", "start": "cross-env NODE_ENV=development webpack-dev-server --open --config webpack/webpack.config.js --hot", - "lint:code": "eslint --ext js .", + "lint:code": "cross-env NODE_ENV=production eslint --ext js .", "lint:style": "stylelint '**/*.css'", "lint": "npm run lint:code && npm run lint:style", "test": "cross-env NODE_ENV=testing karma start --single-run --browsers ChromeHeadless test/karma.conf.js", @@ -38,7 +38,9 @@ "csv-loader": "^3.0.3", "eslint": "^7.8.0", "eslint-config-prettier": "^6.11.0", + "eslint-import-resolver-webpack": "^0.12.2", "eslint-loader": "^4.0.2", + "eslint-plugin-import": "^2.22.0", "eslint-plugin-prettier": "^3.1.4", "file-loader": "^6.1.0", "filesize": "^6.1.0", @@ -63,6 +65,7 @@ "stylelint": "^13.7.0", "stylelint-config-recommended": "^3.0.0", "stylelint-webpack-plugin": "^2.1.0", + "terser-webpack-plugin": "^4.2.1", "url-loader": "^4.1.0", "webpack": "^4.44.1", "webpack-cli": "^3.3.12", diff --git a/src/App.js b/src/App.js @@ -30,9 +30,9 @@ import {hashState, bindHashStateReadOnly} from '~/lib/leaflet.hashState/hashStat import {LocateControl} from '~/lib/leaflet.control.locate'; import {notify} from '~/lib/notifications'; import ZoomDisplay from '~/lib/leaflet.control.zoom-display'; -import logging from '~/lib/logging'; +import * as logging from '~/lib/logging'; import safeLocalStorage from '~/lib/safe-localstorage'; -import {ExternalMaps} from '~/lib/leaflet.control.external-maps/index.js'; +import {ExternalMaps} from '~/lib/leaflet.control.external-maps'; import {SearchControl} from '~/lib/leaflet.control.search'; import '~/lib/leaflet.placemark'; @@ -326,4 +326,4 @@ function setUp() { logUsedMaps(); } -export default {setUp}; +export {setUp}; diff --git a/src/config.js b/src/config.js @@ -1,6 +1,6 @@ import secrets from './secrets'; -export default { +const config = { caption: ` <a href="https://docs.nakarte.me">Documentation</a> | <a href="https://about.nakarte.me">News</a> | @@ -17,3 +17,5 @@ export default { tracksStorageServer: 'https://tracks.nakarte.me', ...secrets }; + +export default config; diff --git a/src/index.js b/src/index.js @@ -1,6 +1,6 @@ import * as Sentry from '@sentry/browser'; import './index.css'; -import App from './App'; +import * as App from './App'; import config from './config'; function getUid() { diff --git a/src/lib/clipboardCopy/index.js b/src/lib/clipboardCopy/index.js @@ -1,5 +1,5 @@ import './style.css'; -import logging from '~/lib/logging'; +import * as logging from '~/lib/logging'; import {query} from '~/lib/notifications'; function showNotification(message, mouseEvent) { diff --git a/src/lib/file-read/index.js b/src/lib/file-read/index.js @@ -44,4 +44,4 @@ function readFiles(files) { return Promise.all(files.map(readFile)); } -export {selectFiles, readFile, readFiles}; +export {selectFiles, readFiles}; diff --git a/src/lib/leaflet.control.azimuth/index.js b/src/lib/leaflet.control.azimuth/index.js @@ -5,7 +5,7 @@ import layout from './control.html'; import '~/lib/controls-styles/controls-styles.css'; import './style.css'; import {getDeclination} from '~/lib/magnetic-declination'; -import 'leaflet-rotatedmarker'; +import 'leaflet-rotatedmarker'; // eslint-disable-line import/no-unassigned-import import iconPointer from './pointer.svg'; import iconPointerStart from './pointer-start.svg'; import iconPointerEnd from './pointer-end.svg'; diff --git a/src/lib/leaflet.control.coordinates/formats.js b/src/lib/leaflet.control.coordinates/formats.js @@ -70,7 +70,7 @@ const DEGREES_AND_MINUTES_AND_SECONDS = { formatter: ({intDegrees, intMinutes, seconds, direction}) => `${direction} ${intDegrees}°${intMinutes}′${seconds}″` }; -export default { +export { SIGNED_DEGREES, DEGREES, DEGREES_AND_MINUTES, diff --git a/src/lib/leaflet.control.coordinates/index.js b/src/lib/leaflet.control.coordinates/index.js @@ -6,7 +6,7 @@ import Contextmenu from '~/lib/contextmenu'; import {makeButtonWithBar} from '~/lib/leaflet.control.commons'; import safeLocalStorage from '~/lib/safe-localstorage'; import '~/lib/controls-styles/controls-styles.css'; -import formats from './formats'; +import * as formats from './formats'; const DEFAULT_FORMAT = formats.DEGREES; const UNKNOWN_COORDINATES = { diff --git a/src/lib/leaflet.control.elevation-profile/index.js b/src/lib/leaflet.control.elevation-profile/index.js @@ -3,7 +3,7 @@ import './elevation-profile.css'; import {ElevationProvider} from '~/lib/elevations'; import '~/lib/leaflet.control.commons'; import {notify} from '~/lib/notifications'; -import logging from '~/lib/logging'; +import * as logging from '~/lib/logging'; import {DragEvents} from '~/lib/leaflet.events.drag'; function calcSamplingInterval(length) { diff --git a/src/lib/leaflet.control.external-maps/index.js b/src/lib/leaflet.control.external-maps/index.js @@ -2,7 +2,7 @@ import L from 'leaflet'; import {makeButton} from '~/lib/leaflet.control.commons'; import Contextmenu from '~/lib/contextmenu'; import {ElevationProvider} from '~/lib/elevations'; -import logging from '~/lib/logging'; +import * as logging from '~/lib/logging'; import './style.css'; diff --git a/src/lib/leaflet.control.jnx/hash-state.js b/src/lib/leaflet.control.jnx/hash-state.js @@ -1,5 +1,4 @@ import L from 'leaflet'; -import '../leaflet.control.layers.hotkeys/index'; import '~/lib/leaflet.hashState/leaflet.hashState'; L.Control.JNX.include(L.Mixin.HashState); diff --git a/src/lib/leaflet.control.jnx/index.js b/src/lib/leaflet.control.jnx/index.js @@ -7,7 +7,7 @@ import Contextmenu from '~/lib/contextmenu'; import {makeJnxFromLayer, minZoom} from './jnx-maker'; import {saveAs} from '~/vendored/github.com/eligrey/FileSaver'; import {notify} from '~/lib/notifications'; -import logging from '~/lib/logging'; +import * as logging from '~/lib/logging'; L.Control.JNX = L.Control.extend({ includes: L.Mixin.Events, diff --git a/src/lib/leaflet.control.layers.configure/index.js b/src/lib/leaflet.control.layers.configure/index.js @@ -3,7 +3,7 @@ import './style.css'; import enableTopRow from '~/lib/leaflet.control.layers.top-row'; import ko from 'knockout'; import {notify} from '~/lib/notifications'; -import logging from '~/lib/logging'; +import * as logging from '~/lib/logging'; import safeLocalStorage from '~/lib/safe-localstorage'; import './customLayer'; diff --git a/src/lib/leaflet.control.panoramas/lib/google/index.js b/src/lib/leaflet.control.panoramas/lib/google/index.js @@ -116,4 +116,5 @@ async function getViewer(container) { return new Viewer(google, container); } -export default {getCoverageLayer, getPanoramaAtPos, getViewer}; +const googleProvider = {getCoverageLayer, getPanoramaAtPos, getViewer}; +export default googleProvider; diff --git a/src/lib/leaflet.control.panoramas/lib/mapillary/index.js b/src/lib/leaflet.control.panoramas/lib/mapillary/index.js @@ -166,4 +166,5 @@ async function getViewer(container) { return new Viewer(mapillary, container); } -export default {getCoverageLayer, getPanoramaAtPos, getViewer}; +const mapillaryProvider = {getCoverageLayer, getPanoramaAtPos, getViewer}; +export default mapillaryProvider; diff --git a/src/lib/leaflet.control.panoramas/lib/mapycz/index.js b/src/lib/leaflet.control.panoramas/lib/mapycz/index.js @@ -140,4 +140,5 @@ async function getViewer(container) { return new Viewer(smap, container); } -export default {getCoverageLayer, getPanoramaAtPos, getViewer}; +const mapyczProvider = {getCoverageLayer, getPanoramaAtPos, getViewer}; +export default mapyczProvider; diff --git a/src/lib/leaflet.control.panoramas/lib/wikimedia/index.js b/src/lib/leaflet.control.panoramas/lib/wikimedia/index.js @@ -344,8 +344,5 @@ function getViewer(container) { return new Viewer(container); } -export default { - getCoverageLayer, - getPanoramaAtPos, - getViewer -}; +const wikimediaProvider = {getCoverageLayer, getPanoramaAtPos, getViewer}; +export default wikimediaProvider; diff --git a/src/lib/leaflet.control.printPages/control.js b/src/lib/leaflet.control.printPages/control.js @@ -13,7 +13,7 @@ import {saveAs} from '~/vendored/github.com/eligrey/FileSaver'; import {blobFromString} from '~/lib/binary-strings'; import '~/lib/leaflet.hashState/leaflet.hashState'; import '~/lib/leaflet.control.commons'; -import logging from '~/lib/logging'; +import * as logging from '~/lib/logging'; import {MagneticMeridians} from './decoration.magnetic-meridians'; import {OverlayScale} from './decoration.scale'; import {Grid} from './decoration.grid'; diff --git a/src/lib/leaflet.control.search/index.js b/src/lib/leaflet.control.search/index.js @@ -1,11 +1,11 @@ import L from 'leaflet'; import ko from 'knockout'; -import '~/lib/leaflet.placemark'; +import '~/lib/leaflet.placemark'; // eslint-disable-line import/no-unassigned-import import {stopContainerEvents} from '~/lib/leaflet.control.commons'; -import '~/lib/leaflet.hashState/leaflet.hashState'; +import '~/lib/leaflet.hashState/leaflet.hashState'; // eslint-disable-line import/no-unassigned-import -import {providers, magicProviders} from './providers/index'; +import {providers, magicProviders} from './providers'; import './style.css'; import controlTemplate from './control.html'; diff --git a/src/lib/leaflet.control.search/providers/mapycz/index.js b/src/lib/leaflet.control.search/providers/mapycz/index.js @@ -1,6 +1,6 @@ import L from 'leaflet'; import {fetch} from '~/lib/xhr-promise'; -import logging from '~/lib/logging'; +import * as logging from '~/lib/logging'; import {BaseProvider} from '../remoteBase'; diff --git a/src/lib/leaflet.control.search/providers/photon.js b/src/lib/leaflet.control.search/providers/photon.js @@ -1,6 +1,6 @@ import L from 'leaflet'; import {fetch} from '~/lib/xhr-promise'; -import logging from '~/lib/logging'; +import * as logging from '~/lib/logging'; import {BaseProvider} from './remoteBase'; diff --git a/src/lib/leaflet.control.track-list/lib/geo_file_exporters.js b/src/lib/leaflet.control.track-list/lib/geo_file_exporters.js @@ -104,5 +104,5 @@ function saveKml(segments, name, points) { return kml.join('\n'); } -export default {saveGpx, saveGpxWithElevations, saveKml, saveToString: saveNktk}; +export {saveGpx, saveGpxWithElevations, saveKml, saveNktk as saveToString}; diff --git a/src/lib/leaflet.control.track-list/lib/parsers/index.js b/src/lib/leaflet.control.track-list/lib/parsers/index.js @@ -3,7 +3,7 @@ import parseZip from './zip'; import {parseKmz, parseKml} from './kml'; import {parseOziPlt, parseOziRte, parseOziWpt} from './ozi'; -export default [ +const parsers = [ parseKmz, parseZip, parseGpx, @@ -12,3 +12,5 @@ export default [ parseOziWpt, parseKml, ]; + +export default parsers; diff --git a/src/lib/leaflet.control.track-list/lib/parsers/nktk.js b/src/lib/leaflet.control.track-list/lib/parsers/nktk.js @@ -2,7 +2,7 @@ import Pbf from 'pbf'; import {TrackView} from './nktk_pb'; import {arrayBufferToString, stringToArrayBuffer} from '~/lib/binary-strings'; import utf8 from 'utf8'; -import urlSafeBase64 from './urlSafeBase64'; +import * as urlSafeBase64 from './urlSafeBase64'; const arcUnit = ((1 << 24) - 1) / 360; diff --git a/src/lib/leaflet.control.track-list/lib/parsers/urlSafeBase64.js b/src/lib/leaflet.control.track-list/lib/parsers/urlSafeBase64.js @@ -23,4 +23,4 @@ function decode(s) { return null; } -export default {encode, decode}; +export {encode, decode}; diff --git a/src/lib/leaflet.control.track-list/lib/services/index.js b/src/lib/leaflet.control.track-list/lib/services/index.js @@ -13,7 +13,7 @@ import {GarminActivity, GarminRoute} from './garmin'; import {SportsTrackerActivity} from './sportstracker'; import OpenStreetMapRu from './openstreetmapRu'; -export default [ +const services = [ YandexRuler, NakarteTrack, NakarteUrl, @@ -32,3 +32,5 @@ export default [ OpenStreetMapRu, SimpleService ]; + +export default services; diff --git a/src/lib/leaflet.control.track-list/lib/services/nakarte/loadTracksFromJson.js b/src/lib/leaflet.control.track-list/lib/services/nakarte/loadTracksFromJson.js @@ -1,4 +1,4 @@ -import urlSafeBase64 from '../../parsers/urlSafeBase64'; +import * as urlSafeBase64 from '../../parsers/urlSafeBase64'; import {TRACKLIST_TRACK_COLORS} from '../../../track-list'; import loadFromUrl from '../../loadFromUrl'; diff --git a/src/lib/leaflet.control.track-list/track-list.js b/src/lib/leaflet.control.track-list/track-list.js @@ -6,7 +6,7 @@ import './track-list.css'; import {selectFiles, readFiles} from '~/lib/file-read'; import parseGeoFile from './lib/parseGeoFile'; import loadFromUrl from './lib/loadFromUrl'; -import geoExporters from './lib/geo_file_exporters'; +import * as geoExporters from './lib/geo_file_exporters'; import copyToClipboard from '~/lib/clipboardCopy'; import {saveAs} from '~/vendored/github.com/eligrey/FileSaver'; import '~/lib/leaflet.layer.canvasMarkers'; @@ -18,7 +18,7 @@ import '~/lib/leaflet.control.commons'; import {blobFromString} from '~/lib/binary-strings'; import '~/lib/leaflet.polyline-edit'; import '~/lib/leaflet.polyline-measure'; -import logging from '~/lib/logging'; +import * as logging from '~/lib/logging'; import {notify, query} from '~/lib/notifications'; import {fetch} from '~/lib/xhr-promise'; import config from '~/config'; diff --git a/src/lib/leaflet.control.track-list/track-list.localstorage.js b/src/lib/leaflet.control.track-list/track-list.localstorage.js @@ -2,7 +2,7 @@ import './track-list'; import L from 'leaflet'; import {parseNktkSequence} from './lib/parsers/nktk'; import safeLocalStorage from '~/lib/safe-localstorage'; -import logging from '~/lib/logging'; +import * as logging from '~/lib/logging'; L.Control.TrackList.include({ maxLocalStorageSessions: 5, diff --git a/src/lib/leaflet.hashState/leaflet.hashState.js b/src/lib/leaflet.hashState/leaflet.hashState.js @@ -1,6 +1,6 @@ import L from 'leaflet'; import {hashState} from './hashState'; -import logging from '~/lib/logging'; +import * as logging from '~/lib/logging'; L.Mixin.HashState = { enableHashState: function(key, defaultInitialState = null) { diff --git a/src/lib/leaflet.layer.bing/dates.js b/src/lib/leaflet.layer.bing/dates.js @@ -1,5 +1,5 @@ import L from 'leaflet'; -import {tile2quad} from './index'; +import {tile2quad} from '.'; const BingDates = L.TileLayer.extend({ _url: 'https://mvexel.dev.openstreetmap.org/bingimageanalyzer/tile.php?t={quad}&nodepth=1', diff --git a/src/lib/leaflet.layer.geocaching-su/index.js b/src/lib/leaflet.layer.geocaching-su/index.js @@ -1,7 +1,7 @@ import L from 'leaflet'; import {fetch} from '~/lib/xhr-promise'; import '~/lib/leaflet.layer.canvasMarkers'; -import logging from '~/lib/logging'; +import * as logging from '~/lib/logging'; import {notify} from '~/lib/notifications'; import './style.css'; import iconFromBackgroundImage from '~/lib/iconFromBackgroundImage'; diff --git a/src/lib/leaflet.layer.geojson-ajax/index.js b/src/lib/leaflet.layer.geojson-ajax/index.js @@ -1,7 +1,7 @@ import L from 'leaflet'; import {fetch} from '~/lib/xhr-promise'; import {notify} from '~/lib/notifications'; -import logging from '~/lib/logging'; +import * as logging from '~/lib/logging'; L.Layer.GeoJSONAjax = L.GeoJSON.extend({ options: { diff --git a/src/lib/leaflet.layer.westraPasses/westraPassesMarkers.js b/src/lib/leaflet.layer.westraPasses/westraPassesMarkers.js @@ -6,7 +6,7 @@ import {saveAs} from '~/vendored/github.com/eligrey/FileSaver'; import iconFromBackgroundImage from '~/lib/iconFromBackgroundImage'; import {fetch} from '~/lib/xhr-promise'; import {notify} from '~/lib/notifications'; -import logging from '~/lib/logging'; +import * as logging from '~/lib/logging'; const WestraPassesMarkers = L.Layer.CanvasMarkers.extend({ options: { diff --git a/src/lib/leaflet.layer.wikimapia/wikimapia-loader.js b/src/lib/leaflet.layer.wikimapia/wikimapia-loader.js @@ -1,5 +1,5 @@ import {TiledDataLoader} from '~/lib/tiled-data-loader'; -import wmUtils from './wm-utils'; +import * as wmUtils from './wm-utils'; import urlViaCorsProxy from '~/lib/CORSProxy'; class WikimapiaLoader extends TiledDataLoader { diff --git a/src/lib/leaflet.layer.wikimapia/wm-utils.js b/src/lib/leaflet.layer.wikimapia/wm-utils.js @@ -262,4 +262,4 @@ async function parseTile(s, projectObj) { // } // }, -export default {getTileId, getWikimapiaTileCoords, parseTile, makeTileUrl}; +export {getTileId, getWikimapiaTileCoords, parseTile, makeTileUrl}; diff --git a/src/lib/logging/index.js b/src/lib/logging/index.js @@ -54,4 +54,4 @@ function logEvent(eventName, extra) { } } -export default {captureMessage, captureException, captureBreadcrumb, logEvent, randId}; +export {captureMessage, captureException, captureBreadcrumb, logEvent, randId}; diff --git a/src/lib/safe-localstorage/index.js b/src/lib/safe-localstorage/index.js @@ -7,7 +7,7 @@ function localStorageWorks() { } } -let storage; +let storage; // eslint-disable-line import/no-mutable-exports if (localStorageWorks()) { storage = window.localStorage; diff --git a/src/secrets.js.template b/src/secrets.js.template @@ -1,4 +1,4 @@ -export default { +secrets = { bingKey: '0000000000000000000000000000000000000000000000000000000000000000', thunderforestKey: '00000000000000000000000000000000', sentryDSN: 'https://00000000000000000000000000000000@sentry.io/111111', @@ -6,3 +6,5 @@ export default { flickr: '00000000000000000000000000000000', google: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX' }; + +export default secrets; diff --git a/test/test_track_load.js b/test/test_track_load.js @@ -1,6 +1,6 @@ import L from 'leaflet'; -import loadFromUrl from '~/lib/leaflet.control.track-list/lib/loadFromUrl.js'; +import loadFromUrl from '~/lib/leaflet.control.track-list/lib/loadFromUrl'; function calcLineLength(points) { let lineLength = 0; @@ -80,6 +80,7 @@ suite('Load tracks from services'); 'openstreetmapRuGpx', 'openstreetmapRu_not_exists', ].forEach(function (testcase) { + // eslint-disable-next-line import/no-dynamic-require const testData = require('./track_load_data/testcases/' + testcase + '.json'); for (const track of testData.geodata) { if (track.tracks) { diff --git a/test/test_track_load_from_nakarte_urls.js b/test/test_track_load_from_nakarte_urls.js @@ -1,4 +1,5 @@ -import serviceNakarte from '~/lib/leaflet.control.track-list/lib/services/nakarte/index.js'; +// eslint-disable-next-line import/default +import serviceNakarte from '~/lib/leaflet.control.track-list/lib/services/nakarte'; suite('flattenArray'); diff --git a/yarn.lock b/yarn.lock @@ -1083,6 +1083,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" @@ -1557,6 +1562,11 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-find@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-find/-/array-find-1.0.0.tgz#6c8e286d11ed768327f8e62ecee87353ca3e78b8" + integrity sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg= + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -1567,6 +1577,15 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== +array-includes@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" + array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -1589,6 +1608,14 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +array.prototype.flat@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + array.prototype.map@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.2.tgz#9a4159f416458a23e9483078de1106b2ef68f8ec" @@ -2635,6 +2662,11 @@ constants-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + content-disposition@0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" @@ -3062,7 +3094,7 @@ date-format@^3.0.0: resolved "https://registry.yarnpkg.com/date-format/-/date-format-3.0.0.tgz#eb8780365c7d2b1511078fb491e6479780f3ad95" integrity sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w== -debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3: +debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -3287,6 +3319,14 @@ dockerfile-ast@0.0.16: dependencies: vscode-languageserver-types "^3.5.0" +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -3508,6 +3548,15 @@ engine.io@~3.4.0: engine.io-parser "~2.2.0" ws "^7.1.2" +enhanced-resolve@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" + integrity sha1-TW5omzcl+GCQknzMhs2fFjW4ni4= + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.2.0" + tapable "^0.1.8" + enhanced-resolve@^4.1.1, enhanced-resolve@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" @@ -3546,7 +3595,7 @@ errno@^0.1.3, errno@~0.1.7: dependencies: prr "~1.0.1" -error-ex@^1.3.1: +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" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== @@ -3578,7 +3627,7 @@ es-abstract@^1.12.0, es-abstract@^1.5.1: string.prototype.trimleft "^2.1.0" string.prototype.trimright "^2.1.0" -es-abstract@^1.17.0-next.1, es-abstract@^1.17.4, es-abstract@^1.17.5: +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.4, es-abstract@^1.17.5: version "1.17.6" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== @@ -3673,6 +3722,30 @@ eslint-config-prettier@^6.11.0: dependencies: get-stdin "^6.0.0" +eslint-import-resolver-node@^0.3.3: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-import-resolver-webpack@^0.12.2: + version "0.12.2" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.12.2.tgz#769e86cd0c752a1536c19855ebd90aa14ce384ee" + integrity sha512-7Jnm4YAoNNkvqPaZkKdIHsKGmv8/uNnYC5QsXkiSodvX4XEEfH2AKOna98FK52fCDXm3q4HzuX+7pRMKkJ64EQ== + dependencies: + array-find "^1.0.0" + debug "^2.6.9" + enhanced-resolve "^0.9.1" + find-root "^1.1.0" + has "^1.0.3" + interpret "^1.2.0" + lodash "^4.17.15" + node-libs-browser "^1.0.0 || ^2.0.0" + resolve "^1.13.1" + semver "^5.7.1" + eslint-loader@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-4.0.2.tgz#386a1e21bcb613b3cf2d252a3b708023ccfb41ec" @@ -3684,6 +3757,33 @@ eslint-loader@^4.0.2: object-hash "^2.0.3" schema-utils "^2.6.5" +eslint-module-utils@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-import@^2.22.0: + version "2.22.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz#92f7736fe1fde3e2de77623c838dd992ff5ffb7e" + integrity sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg== + dependencies: + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.3" + eslint-module-utils "^2.6.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.1" + read-pkg-up "^2.0.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" + eslint-plugin-prettier@^3.1.4: version "3.1.4" resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz#168ab43154e2ea57db992a2cd097c828171f75c2" @@ -4158,6 +4258,11 @@ find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + find-up@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -4166,6 +4271,13 @@ find-up@5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" +find-up@^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" @@ -5076,7 +5188,7 @@ internal-ip@^4.3.0: default-gateway "^4.2.0" ipaddr.js "^1.9.0" -interpret@^1.4.0: +interpret@^1.2.0, interpret@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== @@ -5561,6 +5673,15 @@ iterate-value@^1.0.0: es-get-iterator "^1.0.2" iterate-iterator "^1.0.1" +jest-worker@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.3.0.tgz#7c8a97e4f4364b4f05ed8bca8ca0c24de091871f" + integrity sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -5838,6 +5959,16 @@ lines-and-columns@^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@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + load-script@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/load-script/-/load-script-1.0.0.tgz#0491939e0bee5643ee494a7e3da3d2bac70c6ca4" @@ -5866,6 +5997,14 @@ loader-utils@^2.0.0: emojis-list "^3.0.0" json5 "^2.1.2" +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" + locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -6152,6 +6291,11 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= +memory-fs@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290" + integrity sha1-8rslNovBIeORwlIN6Slpyu4KApA= + memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -6190,6 +6334,11 @@ merge-descriptors@1.0.1: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + merge2@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" @@ -6584,7 +6733,7 @@ node-forge@0.9.0: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== -node-libs-browser@^2.2.1: +"node-libs-browser@^1.0.0 || ^2.0.0", node-libs-browser@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== @@ -6642,7 +6791,7 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.5.0: +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: 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== @@ -6822,6 +6971,16 @@ object.values@^1.1.0: function-bind "^1.1.1" has "^1.0.3" +object.values@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" @@ -6934,6 +7093,13 @@ p-finally@^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, p-limit@^2.2.0: version "2.2.2" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" @@ -6948,6 +7114,13 @@ p-limit@^3.0.2: 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= + dependencies: + p-limit "^1.1.0" + p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -6988,6 +7161,11 @@ p-retry@^3.0.1: dependencies: retry "^0.12.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-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -7086,6 +7264,13 @@ parse-entities@^2.0.0: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -7209,6 +7394,13 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -7275,6 +7467,13 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -8296,6 +8495,14 @@ read-cache@^1.0.0: dependencies: pify "^2.3.0" +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + read-pkg-up@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" @@ -8305,6 +8512,15 @@ read-pkg-up@^7.0.1: read-pkg "^5.2.0" type-fest "^0.8.1" +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + read-pkg@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" @@ -8612,6 +8828,13 @@ resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.3.2: dependencies: path-parse "^1.0.6" +resolve@^1.13.1, resolve@^1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -8779,7 +9002,7 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -8830,6 +9053,13 @@ serialize-javascript@^2.1.2: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== +serialize-javascript@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" @@ -9680,6 +9910,11 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -9825,6 +10060,13 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" +supports-color@^7.0.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" + svg-tags@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" @@ -9869,6 +10111,11 @@ table@^6.0.1: slice-ansi "^4.0.0" string-width "^4.2.0" +tapable@^0.1.8: + version "0.1.10" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4" + integrity sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q= + tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" @@ -9945,6 +10192,21 @@ terser-webpack-plugin@^1.4.3: webpack-sources "^1.4.0" worker-farm "^1.7.0" +terser-webpack-plugin@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.1.tgz#44b88ef4d7443129fb136a68b5ec3e80d63ec471" + integrity sha512-D0IZQNl1ZN/JivFNDFzOeU2Bk2LdQQESHJhKTHsodpUmISkaeRwVFk7gzHzX4OuQwanDGelOxIEsBt1SZ+s6nA== + dependencies: + cacache "^15.0.5" + find-cache-dir "^3.3.1" + jest-worker "^26.3.0" + p-limit "^3.0.2" + schema-utils "^2.7.1" + serialize-javascript "^5.0.1" + source-map "^0.6.1" + terser "^5.3.1" + webpack-sources "^1.4.3" + terser@^4.1.2: version "4.4.2" resolved "https://registry.yarnpkg.com/terser/-/terser-4.4.2.tgz#448fffad0245f4c8a277ce89788b458bfd7706e8" @@ -9963,6 +10225,15 @@ terser@^4.6.3: source-map "~0.6.1" source-map-support "~0.5.12" +terser@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.2.tgz#f4bea90eb92945b2a028ceef79181b9bb586e7af" + integrity sha512-H67sydwBz5jCUA32ZRL319ULu+Su1cAoZnnc+lXnenGRYWyLE3Scgkt8mNoAsMx0h5kdo758zdoS0LG9rYZXDQ== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -10133,6 +10404,16 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.4.tgz#3b52b1f13924f460c3fbfd0df69b587dbcbc762e" integrity sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q== +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + tslib@1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"