diff --git a/api/config/packages/nelmio_api_doc.yaml b/api/config/packages/nelmio_api_doc.yaml index c449eee..edbcb92 100644 --- a/api/config/packages/nelmio_api_doc.yaml +++ b/api/config/packages/nelmio_api_doc.yaml @@ -13,7 +13,7 @@ nelmio_api_doc: areas: path_patterns: - - ^/[^\/]+/api(?!/doc$) # Accepts routes under /api except /api/doc + - /api(?!/doc$) # Accepts routes under /api except /api/doc diff --git a/api/config/routes.yaml b/api/config/routes.yaml index d5f74b8..0c54567 100644 --- a/api/config/routes.yaml +++ b/api/config/routes.yaml @@ -1,9 +1,16 @@ api_v1: resource: ../src/Controller/Api/v1 type: annotation - prefix: /{provider}/api/v1 + prefix: /api/v1/{provider} api_v1_providers: path: /api/v1/providers + methods: ["GET"] defaults: _controller: '\App\Controller\Api\v1\ProviderController::index' + +api_v1_providers_one: + path: /api/v1/providers/{id} + methods: ["GET"] + defaults: + _controller: '\App\Controller\Api\v1\ProviderController::one' diff --git a/api/src/Controller/Api/v1/ProviderController.php b/api/src/Controller/Api/v1/ProviderController.php index 67b0dcc..8516fe9 100644 --- a/api/src/Controller/Api/v1/ProviderController.php +++ b/api/src/Controller/Api/v1/ProviderController.php @@ -5,19 +5,10 @@ namespace App\Controller\Api\v1; use App\Controller\Controller; use App\Service\Converter; use App\Service\ProviderResolver; -use Swagger\Annotations as SWG; -use Symfony\Component\Routing\Annotation\Route; use function Kadet\Functional\ref; -/** - * @Route("/providers") - * @SWG\Tag(name="Providers") - */ class ProviderController extends Controller { - /** - * @Route("/", methods={"GET"}) - */ public function index(ProviderResolver $resolver, Converter $converter) { $providers = $resolver @@ -28,4 +19,11 @@ class ProviderController extends Controller ; return $this->json($providers); } + + public function one(ProviderResolver $resolver, Converter $converter, $id) + { + $provider = $resolver->resolve($id); + + return $this->json($converter->convert($provider)); + } } diff --git a/api/src/Controller/Api/v1/TracksController.php b/api/src/Controller/Api/v1/TracksController.php index 54cece5..9dc7c4e 100644 --- a/api/src/Controller/Api/v1/TracksController.php +++ b/api/src/Controller/Api/v1/TracksController.php @@ -9,11 +9,8 @@ use App\Model\Track; use App\Modifier\IdFilter; use App\Modifier\RelatedFilter; use App\Provider\TrackRepository; -use App\Service\IterableUtils; -use Nelmio\ApiDocBundle\Annotation\Model; use Swagger\Annotations as SWG; use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Component\Routing\Annotation\Route; use function App\Functions\encapsulate; use function Kadet\Functional\ref; @@ -41,6 +38,10 @@ class TracksController extends Controller /** * @Route("/stops", methods={"GET"}) * @Route("/{track}/stops", methods={"GET"}) + * + * @SWG\Tag(name="Tracks") + * + * @SWG\Response(response=200, description="Stops related to specified query.") */ public function stops(Request $request, TrackRepository $repository) { diff --git a/api/templates/app.html.twig b/api/templates/app.html.twig index c6cc468..fc3d4d8 100644 --- a/api/templates/app.html.twig +++ b/api/templates/app.html.twig @@ -4,145 +4,6 @@ {% block body %}
-
-
-
-
-

- - Komunikaty {{ '{{ messages.count }}' }} -

- - - - - - - - - -
- - - -
-
-
-

- - Odjazdy -

- - - - - - - - -
- -
- - Wybierz przystanki korzystając z wyszukiwarki poniżej, aby zobaczyć listę odjazdów. -
- {% if provider.attribution %} -
- - Pochodzenie danych: {{ provider.attribution|raw }} -
- {% endif %} -
-
-
-
-
-

- - Przystanki -

- -
- -
    -
  • - - - -
  • -
- -
- -
- - - - -
-
-
- - -
-
- - - - -
-
-
-
- -
{% endblock %} diff --git a/api/templates/bundles/NelmioApiDocBundle/SwaggerUi/index.html.twig b/api/templates/bundles/NelmioApiDocBundle/SwaggerUi/index.html.twig index ceb859e..d156f6d 100644 --- a/api/templates/bundles/NelmioApiDocBundle/SwaggerUi/index.html.twig +++ b/api/templates/bundles/NelmioApiDocBundle/SwaggerUi/index.html.twig @@ -5,5 +5,5 @@ {% block stylesheets %} {{ parent() }} - + {% endblock stylesheets %} diff --git a/docker/nginx/czydojade b/docker/nginx/czydojade index 5b9ea65..54294a0 100644 --- a/docker/nginx/czydojade +++ b/docker/nginx/czydojade @@ -2,18 +2,20 @@ server { root /var/www/front/public/; server_name cojedzie.localhost; - index index.php; + index dist/index.html; - location ~ \.(js|css)$ { - expires 1y; + location /api/ { + root /var/www/api/public/; + try_files $uri $uri/ index.php$is_args$args; + } + + location /bundles/ { + root /var/www/api/public/; + try_files $uri $uri/; } location / { - try_files $uri $uri/ /index.php?$args; - } - - location = / { - root /var/www/api/public/; + try_files $uri $uri/ /dist/index.html =404; } location ~ (.+).php(/|$) { diff --git a/front/package.json b/front/package.json index c938999..b995721 100644 --- a/front/package.json +++ b/front/package.json @@ -40,6 +40,7 @@ "@types/workbox-window": "^4.3.3", "clean-webpack-plugin": "^3.0.0", "copy-webpack-plugin": "^4.5.2", + "html-webpack-plugin": "^4.5.0", "imagemin-webpack-plugin": "^2.3.0", "mapbox-gl": "^1.6.1", "mapbox-gl-leaflet": "^0.0.11", @@ -49,6 +50,7 @@ "vue-fragment": "^1.5.1", "vue-moment": "^4.1.0", "vue-removed-hook-mixin": "^0.1.1", + "vue-router": "^3.4.8", "vue2-leaflet": "^1.0.2", "vuex": "^3.0.1", "vuex-class": "^0.3.1", diff --git a/front/resources/index.html b/front/resources/index.html new file mode 100644 index 0000000..1cab4f8 --- /dev/null +++ b/front/resources/index.html @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + Co Jedzie? + + + +
+
+ + + diff --git a/front/src/app.ts b/front/src/app.ts index a201127..eeec40a 100644 --- a/front/src/app.ts +++ b/front/src/app.ts @@ -18,6 +18,7 @@ import { Component } from "vue-property-decorator"; import * as VueMoment from "vue-moment"; import * as moment from 'moment'; import 'moment/locale/pl' +import VueRouter from "vue-router"; window['$'] = window['jQuery'] = $; window['Popper'] = Popper; @@ -27,6 +28,7 @@ Vue.use(PortalVue); Vue.use(VueDragscroll); Vue.use(VueFragment); Vue.use(VueMoment, { moment }); +Vue.use(VueRouter); declare module 'vue/types/vue' { interface Vue { @@ -55,20 +57,7 @@ Component.registerHooks(['removed']); import('bootstrap'), ] as const); - const appRoot = document.getElementById('app'); - - store.replaceState({ - ...store.state, - provider: window['data']?.provider, - }); - - // here goes "public" API - window['app'] = Object.assign({ - state: {} - }, window['app'], { - components, - application: appRoot ? new components.Application({ el: '#app' }) : new components.PageProviderList({ el: '#provider-picker' }), - }); + const application = new components.Application().$mount("#root") if ('serviceWorker' in navigator) { const wb = new Workbox("/service-worker.js"); diff --git a/front/src/components/application.ts b/front/src/components/application.ts new file mode 100644 index 0000000..44a71c9 --- /dev/null +++ b/front/src/components/application.ts @@ -0,0 +1,20 @@ +import Vue from "vue"; +import Component from "vue-class-component"; +import VueRouter, { RouteConfig } from "vue-router"; +import { Main, ProviderChooser } from "@/components"; +import store from "@/store"; + +const routes: RouteConfig[] = [ + { path: "/:provider", component: Main }, + { path: "/", component: ProviderChooser }, +] + +export const router = new VueRouter({ + routes, + mode: 'history', +}); + +@Component({ template: require("@templates/app.html"), router, store }) +export class Application extends Vue { + +} diff --git a/front/src/components/index.ts b/front/src/components/index.ts index 460380e..bb642b7 100644 --- a/front/src/components/index.ts +++ b/front/src/components/index.ts @@ -6,12 +6,13 @@ export * from './departures' export * from './stop' export * from './messages' export * from './map' -export * from './app' +export * from './main' export * from './favourites' export * from './trip' export * from './ui' export * from './settings' -export * from "./page" +export * from "./provider-chooser" +export * from "./application" export { Departures } from "../store"; export { Messages } from "../store"; diff --git a/front/src/components/app.ts b/front/src/components/main.ts similarity index 88% rename from front/src/components/app.ts rename to front/src/components/main.ts index 5c28266..b5122e3 100644 --- a/front/src/components/app.ts +++ b/front/src/components/main.ts @@ -1,13 +1,12 @@ import Vue from 'vue' -import store from '../store' import { Component, Watch } from "vue-property-decorator"; -import { Action, Mutation } from 'vuex-class' -import { Stop } from "@/model"; +import { Action, Mutation, State } from 'vuex-class' +import { Provider, Stop } from "@/model"; import { DeparturesSettingsState } from "@/store/settings/departures"; import { MessagesSettingsState } from "@/store/settings/messages"; -@Component({ store }) -export class Application extends Vue { +@Component({ template: require("@templates/main.html") }) +export class Main extends Vue { private sections = { messages: true }; @@ -21,6 +20,8 @@ export class Application extends Vue { private intervals = { messages: null, departures: null }; + @State private provider: Provider; + get messages() { return { count: this.$store.getters['messages/count'], @@ -47,9 +48,10 @@ export class Application extends Vue { this.$el.classList.remove('not-ready'); } - created() { + async created() { + await this.$store.dispatch('loadProvider', { provider: this.$route.params.provider }); this.$store.dispatch('messages/update'); - this.$store.dispatch('load', window['app'].state); + this.$store.dispatch('load', { }); this.initDeparturesRefreshInterval(); this.initMessagesRefreshInterval(); diff --git a/front/src/components/page/index.ts b/front/src/components/page/index.ts deleted file mode 100644 index 96bcb99..0000000 --- a/front/src/components/page/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./providers" diff --git a/front/src/components/page/providers.ts b/front/src/components/provider-chooser.ts similarity index 87% rename from front/src/components/page/providers.ts rename to front/src/components/provider-chooser.ts index 35746b9..f8a37cb 100644 --- a/front/src/components/page/providers.ts +++ b/front/src/components/provider-chooser.ts @@ -7,7 +7,7 @@ import * as moment from 'moment'; @Component({ template: require('@templates/page/providers.html'), }) -export class PageProviderList extends Vue { +export class ProviderChooser extends Vue { private providers: Provider[] = []; async created() { @@ -23,4 +23,4 @@ export class PageProviderList extends Vue { } } -Vue.component('PageProviderList', PageProviderList); +Vue.component('ProviderChooser', ProviderChooser); diff --git a/front/src/components/tooltip.ts b/front/src/components/tooltip.ts index 5a0f826..7639aaa 100644 --- a/front/src/components/tooltip.ts +++ b/front/src/components/tooltip.ts @@ -3,7 +3,7 @@ import Component from "vue-class-component"; import { Prop, Watch } from "vue-property-decorator"; type Events = { - [evnet: string]: (...any) => void, + [event: string]: (...any) => void, } type Trigger = "hover" | "focus" | "long-press"; diff --git a/front/src/store/root.ts b/front/src/store/root.ts index 359f2c8..c0ced46 100644 --- a/front/src/store/root.ts +++ b/front/src/store/root.ts @@ -13,6 +13,10 @@ export interface SavedState { stops: string[], } +export interface LoadProviderActionPayload { + provider: string; +} + export const state: RootState = { stops: [], provider: null, @@ -23,9 +27,17 @@ export const mutations: MutationTree = { replace: (state, stops) => state.stops = stops, remove: (state, stop) => state.stops = state.stops.filter(s => s != stop), clear: (state) => state.stops = [], + setProvider: (state, provider) => state.provider = provider, }; export const actions: ActionTree = { + async loadProvider({ commit }, { provider }) { + const response = await fetch(urls.prepare(urls.providers.get, { provider })); + + if (response.ok) { + commit('setProvider', await response.json()); + } + }, async load({ commit }, { stops }: SavedState) { if (stops.length > 0) { const response = await fetch(urls.prepare(urls.stops.all, { id: stops })); diff --git a/front/src/urls.ts b/front/src/urls.ts index f371a2c..a9fc14c 100644 --- a/front/src/urls.ts +++ b/front/src/urls.ts @@ -51,7 +51,7 @@ export function prepare(url: string, params: UrlParams = { }) { return Object.keys(params).length > 0 ? `${url}?${query(params)}` : url; } -const base = '/{provider}/api/v1'; +const base = '/api/v1/{provider}'; export default { departures: `${base}/departures`, @@ -62,6 +62,9 @@ export default { get: `${base}/stops/{id}`, tracks: `${base}/stops/{id}/tracks` }, + providers: { + get: `/api/v1/providers/{provider}`, + }, trip: `${base}/trips/{id}`, - prepare: (url: string, params: UrlParams = { }) => prepare(url, Object.assign({}, { provider: store.state.provider }, params)) + prepare: (url: string, params: UrlParams = { }) => prepare(url, Object.assign({}, { provider: store.state.provider?.id }, params)) } diff --git a/front/templates/app.html b/front/templates/app.html new file mode 100644 index 0000000..4809ece --- /dev/null +++ b/front/templates/app.html @@ -0,0 +1,5 @@ +
+ + + +
diff --git a/front/templates/main.html b/front/templates/main.html new file mode 100644 index 0000000..141a79c --- /dev/null +++ b/front/templates/main.html @@ -0,0 +1,142 @@ +
+
+
+
+
+

+ + Komunikaty {{ messages.count }} +

+ + + + + + + + + +
+ + + +
+
+
+

+ + Odjazdy +

+ + + + + + + + +
+ +
+ + Wybierz przystanki korzystając z wyszukiwarki poniżej, aby zobaczyć listę odjazdów. +
+
+ + Pochodzenie danych: +
+
+
+
+
+
+

+ + Przystanki +

+ +
+ +
    +
  • + + + +
  • +
+ +
+ +
+ + + + +
+
+
+ + +
+
+ + + + +
+
+
+
+
diff --git a/front/templates/page/providers.html b/front/templates/page/providers.html index d6fb7ec..77099ed 100644 --- a/front/templates/page/providers.html +++ b/front/templates/page/providers.html @@ -1,42 +1,38 @@ -
-
- - + - - -
+ + + + + + + diff --git a/front/webpack.config.js b/front/webpack.config.js index c1aa148..6fb9c8a 100644 --- a/front/webpack.config.js +++ b/front/webpack.config.js @@ -4,6 +4,7 @@ const CopyWebpackPlugin = require('copy-webpack-plugin'); const { CleanWebpackPlugin } = require('clean-webpack-plugin'); const ImageminPlugin = require('imagemin-webpack-plugin').default; const { GenerateSW } = require('workbox-webpack-plugin'); +const HtmlWebpackPlugin = require('html-webpack-plugin'); const config = { entry: { @@ -59,11 +60,13 @@ const config = { use: 'file-loader' }, { test: /\.html?$/, - use: 'raw-loader' + use: 'raw-loader', + exclude: [ + path.resolve('./resources/index.html') + ] }] }, plugins: [ - new CleanWebpackPlugin(), new MiniCssExtractPlugin({ filename: '[name].css' }), new CopyWebpackPlugin([{ from: './resources/images/', to: '../images/', ignore: ['*.ai'] }]), new ImageminPlugin({ test: /\.(jpe?g|png|gif|svg)$/i }), @@ -77,7 +80,7 @@ const config = { handler: 'CacheFirst', }], swDest: '../service-worker.js' - }) + }), ] }; @@ -86,5 +89,14 @@ module.exports = (env, argv) => { config.devtool = 'inline-source-map'; } + config.plugins.push( + new HtmlWebpackPlugin({ + template: path.resolve(__dirname, "./resources/index.html"), + chunks: ['main'], + year: new Date().getFullYear(), + version: process.env.CZYDOJADE_VERSION || (argv.mode === 'development' ? '2020.11-dev' : '2020.11'), + }) + ) + return config; }; diff --git a/front/yarn.lock b/front/yarn.lock index b1ba8fa..4d5f6a7 100644 --- a/front/yarn.lock +++ b/front/yarn.lock @@ -188,6 +188,11 @@ "@types/minimatch" "*" "@types/node" "*" +"@types/html-minifier-terser@^5.0.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50" + integrity sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA== + "@types/imagemin-gifsicle@^5.2.0": version "5.2.0" resolved "https://registry.yarnpkg.com/@types/imagemin-gifsicle/-/imagemin-gifsicle-5.2.0.tgz#349160f17412e26de8d5794e70aad504781ea7d8" @@ -294,6 +299,11 @@ resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.5.tgz#9adbc12950582aa65ead76bffdf39fe0c27a3c02" integrity sha512-/gG2M/Imw7cQFp8PGvz/SwocNrmKFjFsm5Pb8HdbHkZ1K8pmuPzOX4VeVoiEecFCVf4CsN1r3/BRvx+6sNqwtQ== +"@types/tapable@^1.0.5": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.6.tgz#a9ca4b70a18b270ccb2bc0aaafefd1d486b7ea74" + integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA== + "@types/uglify-js@*": version "3.0.4" resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.0.4.tgz#96beae23df6f561862a830b4288a49e86baac082" @@ -335,6 +345,18 @@ "@types/webpack-sources" "*" source-map "^0.6.0" +"@types/webpack@^4.41.8": + version "4.41.24" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.24.tgz#75b664abe3d5bcfe54e64313ca3b43e498550422" + integrity sha512-1A0MXPwZiMOD3DPMuOKUKcpkdPo8Lq33UGggZ7xio6wJ/jV1dAu5cXDrOfGDnldUroPIRLsr/DT43/GqOA4RFQ== + dependencies: + "@types/anymatch" "*" + "@types/node" "*" + "@types/tapable" "*" + "@types/uglify-js" "*" + "@types/webpack-sources" "*" + source-map "^0.6.0" + "@types/workbox-window@^4.3.3": version "4.3.3" resolved "https://registry.yarnpkg.com/@types/workbox-window/-/workbox-window-4.3.3.tgz#47f91df7ce7eea5c151a6beb3e8398c7db8ee538" @@ -1102,6 +1124,14 @@ call-me-maybe@^1.0.1: resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= +camel-case@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" + integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q== + dependencies: + pascal-case "^3.1.1" + tslib "^1.10.0" + camelcase-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" @@ -1217,6 +1247,13 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +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" + clean-webpack-plugin@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz#a99d8ec34c1c628a4541567aa7b457446460c62b" @@ -1305,6 +1342,11 @@ commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + commander@~2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" @@ -1517,6 +1559,16 @@ css-select-base-adapter@^0.1.1: resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + css-select@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" @@ -1544,6 +1596,11 @@ css-tree@1.0.0-alpha.37: mdn-data "2.0.4" source-map "^0.6.1" +css-what@2.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" + integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + css-what@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" @@ -1751,6 +1808,13 @@ dir-glob@^2.0.0: dependencies: path-type "^3.0.0" +dom-converter@^0.2: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + dom-serializer@0: version "0.2.2" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" @@ -1764,7 +1828,7 @@ domain-browser@^1.1.1: resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -domelementtype@1: +domelementtype@1, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== @@ -1774,7 +1838,22 @@ domelementtype@^2.0.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== -domutils@^1.7.0: +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.5.1, domutils@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== @@ -1782,6 +1861,14 @@ domutils@^1.7.0: dom-serializer "0" domelementtype "1" +dot-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.3.tgz#21d3b52efaaba2ea5fda875bb1aa8124521cf4aa" + integrity sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA== + dependencies: + no-case "^3.0.3" + tslib "^1.10.0" + download@^6.2.2: version "6.2.5" resolved "https://registry.yarnpkg.com/download/-/download-6.2.5.tgz#acd6a542e4cd0bb42ca70cfc98c9e43b07039714" @@ -1893,6 +1980,11 @@ enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: memory-fs "^0.5.0" tapable "^1.0.0" +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + entities@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" @@ -2762,6 +2854,11 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -2788,6 +2885,46 @@ html-comment-regex@^1.1.0: resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== +html-minifier-terser@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" + integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== + dependencies: + camel-case "^4.1.1" + clean-css "^4.2.3" + commander "^4.1.1" + he "^1.2.0" + param-case "^3.0.3" + relateurl "^0.2.7" + terser "^4.6.3" + +html-webpack-plugin@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz#625097650886b97ea5dae331c320e3238f6c121c" + integrity sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw== + dependencies: + "@types/html-minifier-terser" "^5.0.0" + "@types/tapable" "^1.0.5" + "@types/webpack" "^4.41.8" + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.15" + pretty-error "^2.1.1" + tapable "^1.1.3" + util.promisify "1.0.0" + +htmlparser2@^3.3.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + http-cache-semantics@3.8.1: version "3.8.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" @@ -3517,6 +3654,11 @@ lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.15, lodash@~4.17.10: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +lodash@^4.17.20: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + logalot@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/logalot/-/logalot-2.1.0.tgz#5f8e8c90d304edf12530951a5554abb8c5e3f552" @@ -3538,6 +3680,13 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" +lower-case@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" + integrity sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ== + dependencies: + tslib "^1.10.0" + lowercase-keys@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" @@ -3907,6 +4056,14 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +no-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8" + integrity sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw== + dependencies: + lower-case "^2.0.1" + tslib "^1.10.0" + node-gyp@^3.8.0: version "3.8.0" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" @@ -4040,7 +4197,7 @@ npm-run-path@^2.0.0: gauge "~2.7.3" set-blocking "~2.0.0" -nth-check@^1.0.2: +nth-check@^1.0.2, nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== @@ -4098,7 +4255,7 @@ object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.getownpropertydescriptors@^2.1.0: +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== @@ -4317,6 +4474,14 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" +param-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.3.tgz#4be41f8399eff621c56eebb829a5e451d9801238" + integrity sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA== + dependencies: + dot-case "^3.0.3" + tslib "^1.10.0" + parse-asn1@^5.0.0: version "5.1.5" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" @@ -4341,6 +4506,14 @@ parse-passwd@^1.0.0: resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= +pascal-case@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f" + integrity sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA== + dependencies: + no-case "^3.0.3" + tslib "^1.10.0" + pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -4564,6 +4737,14 @@ pretty-bytes@^5.1.0: resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2" integrity sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg== +pretty-error@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" + integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== + dependencies: + lodash "^4.17.20" + renderkid "^2.0.4" + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -4740,6 +4921,15 @@ read-pkg@^1.0.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" +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" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -4808,11 +4998,27 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= +renderkid@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.4.tgz#d325e532afb28d3f8796ffee306be8ffd6fc864c" + integrity sha512-K2eXrSOJdq+HuKzlcjOlGoOarUu5SDguDEhE7+Ah4zuOWL40j8A/oHvLlLob9PSTNvVnBd+/q0Er1QfpEuem5g== + dependencies: + css-select "^1.1.0" + dom-converter "^0.2" + htmlparser2 "^3.3.0" + lodash "^4.17.20" + strip-ansi "^3.0.0" + repeat-element@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" @@ -5229,7 +5435,7 @@ source-map@^0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -5416,7 +5622,7 @@ string.prototype.trimright@^2.1.1: define-properties "^1.1.3" function-bind "^1.1.1" -string_decoder@^1.0.0: +string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -5618,6 +5824,15 @@ terser@^4.1.2: source-map "~0.6.1" source-map-support "~0.5.12" +terser@^4.6.3: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + through2@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -5721,6 +5936,11 @@ ts-loader@^4.5.0: micromatch "^3.1.4" semver "^5.0.1" +tslib@^1.10.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + tslib@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" @@ -5852,11 +6072,19 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + util.promisify@^1.0.0, util.promisify@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" @@ -5881,6 +6109,11 @@ util@^0.11.0: dependencies: inherits "2.0.3" +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + uuid@^3.0.1, uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" @@ -5956,6 +6189,11 @@ vue-removed-hook-mixin@^0.1.1: resolved "https://registry.yarnpkg.com/vue-removed-hook-mixin/-/vue-removed-hook-mixin-0.1.1.tgz#df2e939c87d8ecf1707f0b3b3a21def81dedbaf5" integrity sha512-ElO0fn1QT25S7WVHUS7rSug7qBHwR/OPxBTdaH2+DdMz0A/lyw3H40c/Q08k2xvndmx7tAglsevcTk2DgKPsvw== +vue-router@^3.4.8: + version "3.4.8" + resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.4.8.tgz#2c06261d35d8075893470352d42d70b6287b8194" + integrity sha512-3BsR84AqarcmweXjItxw3jwQsiYNssYg090yi4rlzTnCJxmHtkyCvhNz9Z7qRSOkmiV485KkUCReTp5AjNY4wg== + vue2-leaflet@^1.0.2: version "1.2.3" resolved "https://registry.yarnpkg.com/vue2-leaflet/-/vue2-leaflet-1.2.3.tgz#00ddeb9db4fb9a5e3b8f9c09cd97a4734366415e"