From 0e75904d61c4f9db2c9dcf0ea8ef747083724d18 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Sun, 22 Mar 2020 12:26:43 +0100 Subject: [PATCH] start-up visualizer: product and project in query GitOrigin-RevId: 998e44b0a7b64139c87df2a59f4f337e3bee4623 --- .../start-up-visualizer/package.json | 4 +- .../aggregatedStats/AggregatedStatsPage.ts | 71 ++++++++-- .../aggregatedStats/AggregatedStatsPage.vue | 2 +- .../aggregatedStats/ClusteredChartManager.ts | 16 ++- .../start-up-visualizer/yarn.lock | 124 ++++++++++-------- 5 files changed, 141 insertions(+), 76 deletions(-) diff --git a/platform/built-in-server/start-up-visualizer/package.json b/platform/built-in-server/start-up-visualizer/package.json index 90894a645b2b..e6f8e8eef9e2 100644 --- a/platform/built-in-server/start-up-visualizer/package.json +++ b/platform/built-in-server/start-up-visualizer/package.json @@ -7,7 +7,7 @@ "build": "vue-cli-service build" }, "dependencies": { - "@amcharts/amcharts4": "4.9.9", + "@amcharts/amcharts4": "4.9.10", "chokidar": "^3.3.1", "compare-versions": "^3.6.0", "debounce": "^1.2.0", @@ -16,7 +16,7 @@ "rison-node": "^2.1.0", "vue": "^2.6.11", "vue-class-component": "^7.2.3", - "vue-property-decorator": "^8.4.0", + "vue-property-decorator": "^8.4.1", "vue-router": "^3.1.6", "vuex": "^3.1.3", "vuex-persist": "^2.2.0" diff --git a/platform/built-in-server/start-up-visualizer/src/aggregatedStats/AggregatedStatsPage.ts b/platform/built-in-server/start-up-visualizer/src/aggregatedStats/AggregatedStatsPage.ts index 78123c024d1c..254a0e795ead 100644 --- a/platform/built-in-server/start-up-visualizer/src/aggregatedStats/AggregatedStatsPage.ts +++ b/platform/built-in-server/start-up-visualizer/src/aggregatedStats/AggregatedStatsPage.ts @@ -7,6 +7,8 @@ import {DataRequest, InfoResponse, MachineGroup} from "@/aggregatedStats/model" import {debounce} from "debounce" import LineChartComponent from "@/aggregatedStats/LineChartComponent.vue" import ClusteredChartComponent from "@/aggregatedStats/ClusteredChartComponent.vue" +import {Location} from "vue-router" +import {Notification} from "element-ui" export const projectNameToTitle = new Map() @@ -81,22 +83,41 @@ export default class AggregatedStatsPage extends Vue { }) } + @Watch("$route") + onRouteChanged(location: Location, _oldLocation: Location): void { + this.setProductFromQuery(location.query?.product) + this.setProjectFromQuery(location.query?.project) + } + @Watch("chartSettings.selectedProduct") - selectedProductChanged(product: string | null, _oldV: string): void { - console.log("product changed", product, _oldV) + selectedProductChanged(product: string | null, oldProduct: string | undefined): void { + console.info(`product changed (${oldProduct} => ${product})`) const infoResponse = this.lastInfoResponse if (infoResponse != null) { this.applyChangedProduct(product, infoResponse) } - this.dataModule.updateChartSettings(this.chartSettings) + const currentQuery = this.$route.query + if (currentQuery.product !== product && product != null && product.length > 0) { + // noinspection JSIgnoredPromiseFromCall + this.$router.push({ + query: { + ...currentQuery, + product, + }, + }) + } } private applyChangedProduct(product: string | null, info: InfoResponse) { if (product != null && product.length > 0) { // later maybe will be more info for machine, so, do not use string instead of Machine this.machines = info.productToMachine[product] || [] + if (this.machines.length === 0) { + Notification.error(`No machines for product ${product}. Please check that product code is valid.`) + } + const projects = info.productToProjects[product] || [] projects.sort((a, b) => { const t1 = projectNameToTitle.get(a) || a @@ -112,6 +133,7 @@ export default class AggregatedStatsPage extends Vue { this.projects = projects } else { + console.error(`set machines to empty list because no product (${product})`) this.machines = [] this.projects = [] } @@ -148,7 +170,7 @@ export default class AggregatedStatsPage extends Vue { if (isArrayContentTheSame(this.chartSettings.selectedMachine, selectedMachine)) { // data will be reloaded on machine change, but if product changed but machine remain the same, data reloading must be triggered here - if (product != null && selectedMachine != null && selectedMachine.length > 0 && this.chartSettings.selectedProject !== selectedProject) { + if (product != null && selectedMachine.length > 0 && this.chartSettings.selectedProject !== selectedProject) { this.requestDataReloading(product, selectedMachine, selectedProject) } } @@ -162,13 +184,17 @@ export default class AggregatedStatsPage extends Vue { } @Watch("chartSettings.selectedMachine") - selectedMachineChanged(machine: Array | string, _oldV: Array): void { + selectedMachineChanged(machine: Array | string, oldMachine: Array): void { if (typeof machine === "string") { machine = [machine] this.chartSettings.selectedMachine = machine } - console.log("machine changed", machine, _oldV) + if (oldMachine === machine) { + return + } + + console.log(`machine changed (${oldMachine?.join()} => ${machine?.join()})`) if (machine == null) { return } @@ -183,8 +209,8 @@ export default class AggregatedStatsPage extends Vue { } @Watch("chartSettings.selectedProject") - selectedProjectChanged(project: string, _oldV: Array): void { - console.log("project changed", project, _oldV) + selectedProjectChanged(project: string, oldProject: Array): void { + console.log(`project changed (${oldProject} => ${project})`) if (project == null) { return } @@ -196,6 +222,17 @@ export default class AggregatedStatsPage extends Vue { } this.requestDataReloading(product, machine, this.chartSettings.selectedProject) + + const currentQuery = this.$route.query + if (currentQuery.project !== project && project != null && project.length > 0) { + // noinspection JSIgnoredPromiseFromCall + this.$router.push({ + query: { + ...currentQuery, + project, + }, + }) + } } @Watch("chartSettings.serverUrl") @@ -207,15 +244,33 @@ export default class AggregatedStatsPage extends Vue { @Watch("chartSettings", {deep: true}) chartSettingsChanged(_newV: string | null, _oldV: string) { + console.log("chartSettings changed (deep watcher)") this.dataModule.updateChartSettings(this.chartSettings) } mounted() { const serverUrl = this.chartSettings.serverUrl if (!isEmpty(serverUrl)) { + const query = this.$route.query + this.setProductFromQuery(query.product) + this.setProjectFromQuery(query.project) this.loadData() } } + + private setProductFromQuery(product: string | undefined | null | (string | undefined | null)[]) { + if (product != null && product.length == 2) { + console.log(`product specified in query: ${product}`) + this.chartSettings.selectedProduct = (product as string).toUpperCase() + } + } + + private setProjectFromQuery(project: string | undefined | null | (string | undefined | null)[]) { + if (project != null && project.length > 0) { + console.log(`project specified in query: ${project}`) + this.chartSettings.selectedProject = project as string + } + } } function isEmpty(v: string | null): boolean { diff --git a/platform/built-in-server/start-up-visualizer/src/aggregatedStats/AggregatedStatsPage.vue b/platform/built-in-server/start-up-visualizer/src/aggregatedStats/AggregatedStatsPage.vue index 8f2127235848..ba8f78f50576 100644 --- a/platform/built-in-server/start-up-visualizer/src/aggregatedStats/AggregatedStatsPage.vue +++ b/platform/built-in-server/start-up-visualizer/src/aggregatedStats/AggregatedStatsPage.vue @@ -12,7 +12,7 @@ - + diff --git a/platform/built-in-server/start-up-visualizer/src/aggregatedStats/ClusteredChartManager.ts b/platform/built-in-server/start-up-visualizer/src/aggregatedStats/ClusteredChartManager.ts index bb576340038b..c88e2ed533b9 100644 --- a/platform/built-in-server/start-up-visualizer/src/aggregatedStats/ClusteredChartManager.ts +++ b/platform/built-in-server/start-up-visualizer/src/aggregatedStats/ClusteredChartManager.ts @@ -68,7 +68,7 @@ export class ClusteredChartManager implements StatChartManager { let series = oldSeries.get(groupName) if (series == null) { series = new am4charts.ColumnSeries() - this.configureSeries(groupName, series) + ClusteredChartManager.configureSeries(groupName, series) chart.series.push(series) } else { @@ -78,16 +78,18 @@ export class ClusteredChartManager implements StatChartManager { chart.xAxes.getIndex(0)!!.renderer.labels.template.maxWidth = data.groupNames.length > 4 ? 120 : 180 - oldSeries.forEach(value => { - console.log("dispose series", value.name) - chart.series.removeIndex(chart.series.indexOf(value)) - value.dispose() - }) + if (oldSeries.size > 0) { + console.info("dispose series", Array.from(oldSeries.keys())) + for (const series of oldSeries.values()) { + chart.series.removeIndex(chart.series.indexOf(series)) + series.dispose() + } + } chart.data = data.data } - private configureSeries(groupName: string, series: am4charts.ColumnSeries) { + private static configureSeries(groupName: string, series: am4charts.ColumnSeries) { series.name = groupName series.dataFields.valueY = groupName series.dataFields.categoryX = "metric" diff --git a/platform/built-in-server/start-up-visualizer/yarn.lock b/platform/built-in-server/start-up-visualizer/yarn.lock index 8a70d3a1c9ea..aa2ea5650a14 100644 --- a/platform/built-in-server/start-up-visualizer/yarn.lock +++ b/platform/built-in-server/start-up-visualizer/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@amcharts/amcharts4@4.9.9": - version "4.9.9" - resolved "https://registry.yarnpkg.com/@amcharts/amcharts4/-/amcharts4-4.9.9.tgz#a491529a5c65f745d412ad5543b7de532031945b" - integrity sha512-bLUwCNw5EgsQ/8IGqjo5wJ1wC0jc/4HotuKQrpR73a68wmGtixcXkg0OOe7zC6gd7y12Dsqsj0Vybq5myjG0Nw== +"@amcharts/amcharts4@4.9.10": + version "4.9.10" + resolved "https://registry.yarnpkg.com/@amcharts/amcharts4/-/amcharts4-4.9.10.tgz#997bc63496aaef10b4a72fdfd460b5e2581b5782" + integrity sha512-nQTJHaMFXKHd/VzaaaVVgbZEbUeDtutCh5mxyJj3u9v8q/f6tfCTNGGcLyEIW8UmldEf6dOrxFDHemuqlCtsIQ== dependencies: "@types/regression" "^2.0.0" canvg "^2.0.0" @@ -27,13 +27,18 @@ dependencies: "@babel/highlight" "^7.8.3" +"@babel/helper-validator-identifier@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz#ad53562a7fc29b3b9a91bbf7d10397fd146346ed" + integrity sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw== + "@babel/highlight@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" - integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" + integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== dependencies: + "@babel/helper-validator-identifier" "^7.9.0" chalk "^2.0.0" - esutils "^2.0.2" js-tokens "^4.0.0" "@hapi/address@2.x.x": @@ -129,9 +134,9 @@ integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/node@*": - version "13.9.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.1.tgz#96f606f8cd67fb018847d9b61e93997dabdefc72" - integrity sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ== + version "13.9.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.2.tgz#ace1880c03594cc3e80206d96847157d8e7fa349" + integrity sha512-bnoqK579sAYrQbp73wwglccjJ4sfRdKU7WNEZ5FW4K2U6Kc0/eZ5kvXG0JKsEKFB50zrFmfFt52/cvBbZa7eXg== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -1032,13 +1037,14 @@ browserify-zlib@^0.2.0: pako "~1.0.5" browserslist@^4.0.0, browserslist@^4.8.3, browserslist@^4.8.6: - version "4.9.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.9.1.tgz#01ffb9ca31a1aef7678128fc6a2253316aa7287c" - integrity sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw== + version "4.10.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" + integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA== dependencies: - caniuse-lite "^1.0.30001030" - electron-to-chromium "^1.3.363" - node-releases "^1.1.50" + caniuse-lite "^1.0.30001035" + electron-to-chromium "^1.3.378" + node-releases "^1.1.52" + pkg-up "^3.1.0" buffer-equal@0.0.1: version "0.0.1" @@ -1218,7 +1224,7 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001030: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001035: version "1.0.30001035" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz#2bb53b8aa4716b2ed08e088d4dc816a5fe089a1e" integrity sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ== @@ -1379,9 +1385,9 @@ cli-spinners@^2.0.0: integrity sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ== clipboardy@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-2.2.0.tgz#681e2af495924bcaeed159db3287ef5a5f4d2ee1" - integrity sha512-9ry9nC3VFULNmoEIqvuRwCIQ9M7wjnm4O+yvk7xkmhR+7FAUWaeX751oeYJbORg0h0zmqW1EVDoZK8f7yapwbg== + version "2.3.0" + resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-2.3.0.tgz#3c2903650c68e46a91b388985bc2774287dba290" + integrity sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ== dependencies: arch "^2.1.1" execa "^1.0.0" @@ -2364,10 +2370,10 @@ ejs@^2.6.1: resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== -electron-to-chromium@^1.3.363: - version "1.3.376" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.376.tgz#7cb7b5205564a06c8f8ecfbe832cbd47a1224bb1" - integrity sha512-cv/PYVz5szeMz192ngilmezyPNFkUjuynuL2vNdiqIrio440nfTDdc0JJU0TS2KHLSVCs9gBbt4CFqM+HcBnjw== +electron-to-chromium@^1.3.378: + version "1.3.380" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.380.tgz#1e1f07091b42b54bccd0ad6d3a14f2b73b60dc9d" + integrity sha512-2jhQxJKcjcSpVOQm0NAfuLq8o+130blrcawoumdXT6411xG/xIAOyZodO/y7WTaYlz/NHe3sCCAe/cJLnDsqTw== element-ui@^2.13.0: version "2.13.0" @@ -3185,9 +3191,9 @@ glob-parent@^3.1.0: path-dirname "^1.0.0" glob-parent@~5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" - integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== + 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" @@ -4508,12 +4514,7 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@^1.1.3, minimist@^1.2.0, minimist@~1.2.0: +minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.0: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -4571,11 +4572,11 @@ mixin-deep@^1.2.0: is-extendable "^1.0.1" mkdirp@^0.5.1, mkdirp@~0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" + integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== dependencies: - minimist "0.0.8" + minimist "^1.2.5" move-concurrently@^1.0.1: version "1.0.1" @@ -4713,7 +4714,7 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" -node-releases@^1.1.50: +node-releases@^1.1.52: version "1.1.52" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9" integrity sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ== @@ -5231,9 +5232,9 @@ performance-now@^2.1.0: integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.0.7: - version "2.2.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" - integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== + 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" @@ -5276,6 +5277,13 @@ pkg-dir@^4.1.0: dependencies: find-up "^4.0.0" +pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + png-js@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/png-js/-/png-js-1.0.0.tgz#e5484f1e8156996e383aceebb3789fd75df1874d" @@ -5463,9 +5471,9 @@ postcss-modules-local-by-default@^3.0.2: postcss-value-parser "^4.0.0" postcss-modules-scope@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz#33d4fc946602eb5e9355c4165d68a10727689dba" - integrity sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ== + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== dependencies: postcss "^7.0.6" postcss-selector-parser "^6.0.0" @@ -6899,9 +6907,9 @@ terser-webpack-plugin@^2.3.4: webpack-sources "^1.4.3" terser@^4.1.2, terser@^4.4.3: - version "4.6.6" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.6.tgz#da2382e6cafbdf86205e82fb9a115bd664d54863" - integrity sha512-4lYPyeNmstjIIESr/ysHg2vUPRGf2tzF9z2yYwnowXVuVzLEamPN1Gfrz7f8I9uEPuHcbFlW4PLIAsJoxXyJ1g== + version "4.6.7" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.7.tgz#478d7f9394ec1907f0e488c5f6a6a9a2bad55e72" + integrity sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -7407,9 +7415,9 @@ vue-hot-reload-api@^2.3.0: integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== vue-loader@^15.8.3: - version "15.9.0" - resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.0.tgz#5d4b0378a4606188fc83e587ed23c94bc3a10998" - integrity sha512-FeDHvTSpwyLeF7LIV1PYkvqUQgTJ8UmOxhSlCyRSxaXCKk+M6NF4tDQsLsPPNeDPyR7TfRQ8MLg6v+8PsDV9xQ== + version "15.9.1" + resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.1.tgz#bd2ab8f3d281e51d7b81d15390a58424d142243e" + integrity sha512-IaPU2KOPjs/QjMlxFs/TiTtQUSbftQ7lsAvoxe21rtcQohsMhx+1AltXCNhZIpIn46PtODiAgz+o8RbMpKtmJw== dependencies: "@vue/component-compiler-utils" "^3.1.0" hash-sum "^1.0.2" @@ -7417,10 +7425,10 @@ vue-loader@^15.8.3: vue-hot-reload-api "^2.3.0" vue-style-loader "^4.1.0" -vue-property-decorator@^8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/vue-property-decorator/-/vue-property-decorator-8.4.0.tgz#f4e641f84ca51a7b4721e236392a1efbb6eac00b" - integrity sha512-0o85LJSTLZvDaB7IXfmpONfAQZ7NgScFvptFSrlFFSsScR716muJb3mMFojNnKC3Vpm7CM4PsmHNdk30uuNpag== +vue-property-decorator@^8.4.1: + version "8.4.1" + resolved "https://registry.yarnpkg.com/vue-property-decorator/-/vue-property-decorator-8.4.1.tgz#fd8045b8678e1348fed57f9149279e00e404ed38" + integrity sha512-8R4Us7DxFO0rwAL/2fv6vaZL8Oa4n/HGanHODYGTcvQHwT0FYJr9UuuFm2GoWAIXQu1mDO03HNeHswFp9vmTVA== dependencies: vue-class-component "^7.1.0" @@ -7664,9 +7672,9 @@ window-size@0.1.0: integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= wmf@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wmf/-/wmf-1.0.1.tgz#f8690f185651bf88d39f0a21ae3e51bb1ec9fae9" - integrity sha512-Mgopbef6qEsZvGss8ke/hMLg2XCCkt6emB/bZlCez9Zve9hrOj0lsrh0ncrN6Tnv6h/UCNn5nOd1UjjssezrtA== + version "1.0.2" + resolved "https://registry.yarnpkg.com/wmf/-/wmf-1.0.2.tgz#7d19d621071a08c2bdc6b7e688a9c435298cc2da" + integrity sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw== word-wrap@~1.2.3: version "1.2.3"