start-up visualizer: product and project in query

GitOrigin-RevId: 998e44b0a7b64139c87df2a59f4f337e3bee4623
This commit is contained in:
Vladimir Krivosheev
2020-03-22 12:11:32 +00:00
committed by intellij-monorepo-bot
parent 022075be4b
commit 0e75904d61
5 changed files with 141 additions and 76 deletions
@@ -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"
@@ -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<string, string>()
@@ -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> | string, _oldV: Array<string>): void {
selectedMachineChanged(machine: Array<string> | string, oldMachine: Array<string>): 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<string>): void {
console.log("project changed", project, _oldV)
selectedProjectChanged(project: string, oldProject: Array<string>): 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 {
@@ -12,7 +12,7 @@
</el-form-item>
<el-form-item label="Product">
<el-select v-model="chartSettings.selectedProduct" filterable>
<el-select v-model="chartSettings.selectedProduct" filterable data-lpignore="true">
<el-option v-for="productId in products" :key="productId" :label="productId" :value="productId"/>
</el-select>
</el-form-item>
@@ -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"
@@ -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"