diff --git a/console/frontend/index.html b/console/frontend/index.html index d0be7db3..b2a83f25 100644 --- a/console/frontend/index.html +++ b/console/frontend/index.html @@ -1,4 +1,4 @@ - + diff --git a/console/frontend/package-lock.json b/console/frontend/package-lock.json index 87d1b5c6..4a1f4166 100644 --- a/console/frontend/package-lock.json +++ b/console/frontend/package-lock.json @@ -46,12 +46,13 @@ "@vue/tsconfig": "^0.1.3", "autoprefixer": "^10.4.7", "eslint": "^8.19.0", + "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-vue": "^9.2.0", "license-compliance": "^2.0.0", "npm-run-all": "^4.1.5", "patch-package": "^7.0.0", "postcss": "^8.4.14", - "prettier": "^2.7.0", + "prettier": "^3.0.0", "prettier-plugin-tailwindcss": "^0.3.0", "tailwindcss": "^3.1.2", "typescript": "~4.9.3", @@ -606,6 +607,50 @@ "node": ">= 8" } }, + "node_modules/@pkgr/utils": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", + "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.0", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@pkgr/utils/node_modules/open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "dev": true, + "dependencies": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@pkgr/utils/node_modules/tslib": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", + "dev": true + }, "node_modules/@sideway/address": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", @@ -1784,6 +1829,27 @@ "prettier": ">= 2.0.0" } }, + "node_modules/@vue/eslint-config-prettier/node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, "node_modules/@vue/eslint-config-typescript": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.3.tgz", @@ -2174,6 +2240,15 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -2195,6 +2270,18 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, + "node_modules/bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "dependencies": { + "big-integer": "^1.6.44" + }, + "engines": { + "node": ">= 5.10.0" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -2245,6 +2332,21 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "dev": true, + "dependencies": { + "run-applescript": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/c8": { "version": "7.13.0", "resolved": "https://registry.npmjs.org/c8/-/c8-7.13.0.tgz", @@ -2609,6 +2711,52 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "dev": true, + "dependencies": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dev": true, + "dependencies": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/define-properties": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", @@ -3222,21 +3370,29 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", + "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", "dev": true, "dependencies": { - "prettier-linter-helpers": "^1.0.0" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" }, "engines": { - "node": ">=12.0.0" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/prettier" }, "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "prettier": ">=3.0.0" }, "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, "eslint-config-prettier": { "optional": true } @@ -3355,6 +3511,29 @@ "node": ">=0.10.0" } }, + "node_modules/execa": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", + "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3368,9 +3547,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", + "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -3595,6 +3774,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-symbol-description": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", @@ -3786,6 +3977,15 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, + "node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "engines": { + "node": ">=14.18.0" + } + }, "node_modules/ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -4002,6 +4202,39 @@ "node": ">=0.10.0" } }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -4075,6 +4308,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", @@ -4503,6 +4748,12 @@ "node": ">= 0.10.0" } }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -4525,6 +4776,18 @@ "node": ">=8.6" } }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -4821,6 +5084,33 @@ "which": "bin/which" } }, + "node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -4896,6 +5186,21 @@ "wrappy": "1" } }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/open": { "version": "7.4.2", "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", @@ -5370,15 +5675,15 @@ } }, "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz", + "integrity": "sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==", "dev": true, "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" @@ -5717,6 +6022,110 @@ "fsevents": "~2.3.2" } }, + "node_modules/run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/run-applescript/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/run-applescript/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/run-applescript/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/run-applescript/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -6013,6 +6422,18 @@ "node": ">=4" } }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -6136,6 +6557,28 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "dev": true, + "dependencies": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/synckit/node_modules/tslib": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", + "dev": true + }, "node_modules/tailwindcss": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.2.tgz", @@ -6261,6 +6704,18 @@ "node": ">=14.0.0" } }, + "node_modules/titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -6426,6 +6881,15 @@ "node": ">= 10.0.0" } }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/update-browserslist-db": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", @@ -7653,6 +8117,40 @@ "fastq": "^1.6.0" } }, + "@pkgr/utils": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", + "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.0", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" + }, + "dependencies": { + "open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "dev": true, + "requires": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + } + }, + "tslib": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", + "dev": true + } + } + }, "@sideway/address": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", @@ -8606,6 +9104,17 @@ "requires": { "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^4.0.0" + }, + "dependencies": { + "eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + } } }, "@vue/eslint-config-typescript": { @@ -8854,6 +9363,12 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true + }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -8872,6 +9387,15 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, + "bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "requires": { + "big-integer": "^1.6.44" + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -8903,6 +9427,15 @@ "update-browserslist-db": "^1.0.10" } }, + "bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "dev": true, + "requires": { + "run-applescript": "^5.0.0" + } + }, "c8": { "version": "7.13.0", "resolved": "https://registry.npmjs.org/c8/-/c8-7.13.0.tgz", @@ -9168,6 +9701,34 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "dev": true, + "requires": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + } + }, + "default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dev": true, + "requires": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + } + }, + "define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true + }, "define-properties": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", @@ -9538,12 +10099,13 @@ "requires": {} }, "eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", + "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", "dev": true, "requires": { - "prettier-linter-helpers": "^1.0.0" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" } }, "eslint-plugin-vue": { @@ -9623,6 +10185,23 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "execa": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", + "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + } + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -9636,9 +10215,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", + "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -9809,6 +10388,12 @@ "has-symbols": "^1.0.3" } }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, "get-symbol-description": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", @@ -9946,6 +10531,12 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, + "human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true + }, "ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -10098,6 +10689,23 @@ "is-extglob": "^2.1.1" } }, + "is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "requires": { + "is-docker": "^3.0.0" + }, + "dependencies": { + "is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true + } + } + }, "is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -10144,6 +10752,12 @@ "call-bind": "^1.0.2" } }, + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true + }, "is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", @@ -10486,6 +11100,12 @@ "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", "dev": true }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -10502,6 +11122,12 @@ "picomatch": "^2.3.1" } }, + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -10737,6 +11363,23 @@ } } }, + "npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "requires": { + "path-key": "^4.0.0" + }, + "dependencies": { + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true + } + } + }, "nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -10791,6 +11434,15 @@ "wrappy": "1" } }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + }, "open": { "version": "7.4.2", "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", @@ -11106,9 +11758,9 @@ "dev": true }, "prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz", + "integrity": "sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==", "dev": true }, "prettier-linter-helpers": { @@ -11306,6 +11958,76 @@ "fsevents": "~2.3.2" } }, + "run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + }, + "dependencies": { + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + } + } + }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -11536,6 +12258,12 @@ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -11621,6 +12349,24 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "dev": true, + "requires": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" + }, + "dependencies": { + "tslib": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", + "dev": true + } + } + }, "tailwindcss": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.2.tgz", @@ -11723,6 +12469,12 @@ "integrity": "sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==", "dev": true }, + "titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "dev": true + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -11847,6 +12599,12 @@ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true }, + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true + }, "update-browserslist-db": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", diff --git a/console/frontend/package.json b/console/frontend/package.json index 09cab9fc..0c624ac2 100644 --- a/console/frontend/package.json +++ b/console/frontend/package.json @@ -9,7 +9,7 @@ "preview": "vite preview", "type-check": "vue-tsc --noEmit -p tsconfig.vitest.json --composite false", "lint": "eslint '{src/**/,}*.{js,ts,vue}'", - "format": "prettier --loglevel warn --write '{src/**/,}*.{ts,js,vue,html}'", + "format": "prettier --log-level warn --write '{src/**/,}*.{ts,js,vue,html}'", "test": "vitest run", "postinstall": "patch-package" }, @@ -51,12 +51,13 @@ "@vue/tsconfig": "^0.1.3", "autoprefixer": "^10.4.7", "eslint": "^8.19.0", + "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-vue": "^9.2.0", "license-compliance": "^2.0.0", "npm-run-all": "^4.1.5", "patch-package": "^7.0.0", "postcss": "^8.4.14", - "prettier": "^2.7.0", + "prettier": "^3.0.0", "prettier-plugin-tailwindcss": "^0.3.0", "tailwindcss": "^3.1.2", "typescript": "~4.9.3", diff --git a/console/frontend/src/codemirror/lang-filter/complete.test.ts b/console/frontend/src/codemirror/lang-filter/complete.test.ts index b6c43500..91b81708 100644 --- a/console/frontend/src/codemirror/lang-filter/complete.test.ts +++ b/console/frontend/src/codemirror/lang-filter/complete.test.ts @@ -16,7 +16,7 @@ async function get(doc: string) { extensions: [filterLanguage(), filterCompletion(), autocompletion()], }); return await state.languageDataAt("autocomplete", cur)[0]( - new CompletionContext(state, cur, true) + new CompletionContext(state, cur, true), ); } @@ -68,7 +68,7 @@ describe("filter completion", () => { { label: "!=", detail: "operator", quoted: false }, { label: "IN", detail: "operator", quoted: false }, ].filter(({ label }) => - label.startsWith(body.prefix ?? "") + label.startsWith(body.prefix ?? ""), ), }; default: @@ -90,7 +90,7 @@ describe("filter completion", () => { quoted: "true", }, ].filter(({ label }) => - label.startsWith(body.prefix ?? "") + label.startsWith(body.prefix ?? ""), ), }; @@ -122,7 +122,7 @@ describe("filter completion", () => { } }, }; - }) + }), ); }); diff --git a/console/frontend/src/codemirror/lang-filter/complete.ts b/console/frontend/src/codemirror/lang-filter/complete.ts index f279f340..3af8e244 100644 --- a/console/frontend/src/codemirror/lang-filter/complete.ts +++ b/console/frontend/src/codemirror/lang-filter/complete.ts @@ -24,7 +24,7 @@ export const complete = async (ctx: CompletionContext) => { // Remote completion const remote = async ( payload: { what: string; column?: string; prefix?: string }, - transform = (x: { label: string; detail?: string }) => x + transform = (x: { label: string; detail?: string }) => x, ) => { const response = await fetch("/api/v0/console/filter/complete", { method: "POST", @@ -39,7 +39,7 @@ export const complete = async (ctx: CompletionContext) => { transform({ label: quoted ? `"${label}"` : label, detail, - }) + }), ), ]; }; @@ -107,7 +107,7 @@ export const complete = async (ctx: CompletionContext) => { if (c?.name === "Column") { let prefix: string | undefined = ctx.state.sliceDoc( nodeBefore.from, - nodeBefore.to + nodeBefore.to, ); completion.from = nodeBefore.from; completion.to = nodeBefore.to; @@ -130,7 +130,7 @@ export const complete = async (ctx: CompletionContext) => { (o) => nodeAncestor(nodeBefore, ["ListOfValues", "ValueLParen"]) ? { ...o, apply: `${o.label},` } - : o + : o, ); } } else if (nodeBefore.name === "Filter" || nodeBefore.name === "⚠") { diff --git a/console/frontend/src/codemirror/lang-filter/grammar.test.ts b/console/frontend/src/codemirror/lang-filter/grammar.test.ts index 67866c66..dabb023e 100644 --- a/console/frontend/src/codemirror/lang-filter/grammar.test.ts +++ b/console/frontend/src/codemirror/lang-filter/grammar.test.ts @@ -10,13 +10,13 @@ import * as path from "path"; import { fileURLToPath } from "url"; const caseFile = path.join( path.dirname(fileURLToPath(import.meta.url)), - "grammar.test.txt" + "grammar.test.txt", ); describe("filter parsing", () => { for (const { name, run } of fileTests( fs.readFileSync(caseFile, "utf8"), - "grammar.test.txt" + "grammar.test.txt", )) it(name, () => run(parser)); }); diff --git a/console/frontend/src/codemirror/lang-filter/linter.ts b/console/frontend/src/codemirror/lang-filter/linter.ts index ee1e4533..b9459f5f 100644 --- a/console/frontend/src/codemirror/lang-filter/linter.ts +++ b/console/frontend/src/codemirror/lang-filter/linter.ts @@ -34,7 +34,7 @@ export const linterSource = async (view: EditorView) => { severity: "error", message: message, }; - } + }, ) || []; return diagnostic; }; diff --git a/console/frontend/src/components/InfoBox.vue b/console/frontend/src/components/InfoBox.vue index 16eb19cc..61570b7c 100644 --- a/console/frontend/src/components/InfoBox.vue +++ b/console/frontend/src/components/InfoBox.vue @@ -18,7 +18,7 @@ const props = withDefaults( }>(), { kind: "error", - } + }, ); const classes = computed(() => { diff --git a/console/frontend/src/components/InputBase.vue b/console/frontend/src/components/InputBase.vue index 9048a3f4..1c01e063 100644 --- a/console/frontend/src/components/InputBase.vue +++ b/console/frontend/src/components/InputBase.vue @@ -44,7 +44,7 @@ withDefaults( { label: "", error: "", - } + }, ); const id = uuidv4(); diff --git a/console/frontend/src/components/InputButton.vue b/console/frontend/src/components/InputButton.vue index 30dea1a5..3480ae04 100644 --- a/console/frontend/src/components/InputButton.vue +++ b/console/frontend/src/components/InputButton.vue @@ -55,6 +55,6 @@ withDefaults( size: "normal", disabled: false, floading: false, - } + }, ); diff --git a/console/frontend/src/components/InputCheckbox.vue b/console/frontend/src/components/InputCheckbox.vue index df0ce8f3..c1995891 100644 --- a/console/frontend/src/components/InputCheckbox.vue +++ b/console/frontend/src/components/InputCheckbox.vue @@ -12,7 +12,7 @@ @change=" $emit( 'update:modelValue', - ($event.target as HTMLInputElement).checked + ($event.target as HTMLInputElement).checked, ) " /> diff --git a/console/frontend/src/components/InputDimensions.vue b/console/frontend/src/components/InputDimensions.vue index db847e8d..6bf0175d 100644 --- a/console/frontend/src/components/InputDimensions.vue +++ b/console/frontend/src/components/InputDimensions.vue @@ -88,7 +88,7 @@ const props = withDefaults( }>(), { minDimensions: 0, - } + }, ); const emit = defineEmits<{ (e: "update:modelValue", value: typeof props.modelValue): void; @@ -121,8 +121,8 @@ const canAggregate = computed( () => intersection( selectedDimensions.value.map((dim) => dim.name), - serverConfiguration.value?.truncatable || [] - ).length > 0 + serverConfiguration.value?.truncatable || [], + ).length > 0, ); const truncate4 = ref("32"); const truncate4Error = computed(() => { @@ -145,24 +145,25 @@ const hasErrors = computed( !!limitError.value || !!dimensionsError.value || !!truncate4Error.value || - !!truncate6Error.value + !!truncate6Error.value, ); -const dimensions = computed(() => - serverConfiguration.value?.dimensions.map((v, idx) => ({ - id: idx + 1, - name: v, - color: dataColor( - ["Exporter", "Src", "Dst", "In", "Out", ""] - .map((p) => v.startsWith(p)) - .indexOf(true) - ), - })) +const dimensions = computed( + () => + serverConfiguration.value?.dimensions.map((v, idx) => ({ + id: idx + 1, + name: v, + color: dataColor( + ["Exporter", "Src", "Dst", "In", "Out", ""] + .map((p) => v.startsWith(p)) + .indexOf(true), + ), + })), ); const removeDimension = (dimension: (typeof dimensions.value)[0]) => { selectedDimensions.value = selectedDimensions.value.filter( - (d) => d !== dimension + (d) => d !== dimension, ); }; @@ -179,7 +180,7 @@ watch( .map((name) => dimensions.find((d) => d.name === name)) .filter((d): d is (typeof dimensions)[0] => !!d); }, - { immediate: true, deep: true } + { immediate: true, deep: true }, ); watch( [selectedDimensions, limit, truncate4, truncate6, hasErrors] as const, @@ -199,7 +200,7 @@ watch( ) { emit("update:modelValue", updated); } - } + }, ); diff --git a/console/frontend/src/components/InputFilter.vue b/console/frontend/src/components/InputFilter.vue index f34c64eb..9ba36bd8 100644 --- a/console/frontend/src/components/InputFilter.vue +++ b/console/frontend/src/components/InputFilter.vue @@ -114,7 +114,7 @@ type SavedFilter = { const selectedSavedFilter = ref(null); const { data: rawSavedFilters, execute: refreshSavedFilters } = useFetch( - `/api/v0/console/filter/saved` + `/api/v0/console/filter/saved`, ).json<{ filters: Array; }>(); @@ -161,7 +161,7 @@ watch( (model) => { if (model) expression.value = model.expression; }, - { immediate: true } + { immediate: true }, ); watch( () => ({ expression: expression.value, errors: !!error.value }), @@ -170,7 +170,7 @@ watch( emit("update:modelValue", value); } }, - { immediate: true } + { immediate: true }, ); // https://github.com/surmon-china/vue-codemirror/blob/59598ff72327ab6c5ee70a640edc9e2eb2518775/src/codemirror.ts#L52 @@ -198,7 +198,7 @@ const filterTheme = computed(() => [ { tag: t.string, color: isDark.value ? "#ff0086" : "#880000" }, { tag: t.comment, color: isDark.value ? "#7d8799" : "#4f4f4f" }, { tag: t.operator, color: isDark.value ? "#00a3ff" : "#333399" }, - ]) + ]), ), /* Theme is in tailwind.css */ EditorView.theme({}, { dark: isDark.value }), @@ -274,7 +274,7 @@ onMounted(() => { }); } }, - { immediate: true } + { immediate: true }, ); // Dynamic extensions @@ -286,7 +286,7 @@ onMounted(() => { const exts = extensions.filter((e) => !!e); if (component.view !== null) dynamicExtensions(component.view, exts); }, - { immediate: true } + { immediate: true }, ); }); onBeforeUnmount(() => component.view?.destroy()); diff --git a/console/frontend/src/components/InputListBox.vue b/console/frontend/src/components/InputListBox.vue index 1954b4fd..85978a71 100644 --- a/console/frontend/src/components/InputListBox.vue +++ b/console/frontend/src/components/InputListBox.vue @@ -7,7 +7,9 @@ :class="$attrs['class']" :multiple="multiple" :model-value="modelValue" - @update:model-value="(selected: any) => $emit('update:modelValue', selected)" + @update:model-value=" + (selected: any) => $emit('update:modelValue', selected) + " >
@@ -118,7 +120,7 @@ const props = withDefaults( filter: null, error: "", multiple: false, - } + }, ); defineEmits<{ (e: "update:modelValue", value: typeof props.modelValue): void; @@ -142,7 +144,7 @@ const component = computed(() => Options: ComboboxOptions, Option: ComboboxOption, Input: ComboboxInput, - } + }, ); const filteredItems = computed(() => { if (props.filter === null) return props.items; @@ -150,7 +152,7 @@ const filteredItems = computed(() => { query.value .toLowerCase() .split(/\W+/) - .every((w) => `${it[props.filter!]}`.toLowerCase().includes(w)) + .every((w) => `${it[props.filter!]}`.toLowerCase().includes(w)), ); }); const otherAttrs = computed(() => { diff --git a/console/frontend/src/components/InputTimeRange.vue b/console/frontend/src/components/InputTimeRange.vue index 68af1814..7cb2cfbc 100644 --- a/console/frontend/src/components/InputTimeRange.vue +++ b/console/frontend/src/components/InputTimeRange.vue @@ -39,7 +39,7 @@ const parsedTimes = computed(() => ({ end: SugarDate.create(endTime.value), })); const startTimeError = computed(() => - isNaN(parsedTimes.value.start.valueOf()) ? "Invalid date" : "" + isNaN(parsedTimes.value.start.valueOf()) ? "Invalid date" : "", ); const endTimeError = computed( () => @@ -47,10 +47,10 @@ const endTimeError = computed( (!isNaN(parsedTimes.value.start.valueOf()) && parsedTimes.value.start > parsedTimes.value.end && "End date should be before start date") || - "" + "", ); const hasErrors = computed( - () => !!(startTimeError.value || endTimeError.value) + () => !!(startTimeError.value || endTimeError.value), ); const presets = [ @@ -127,7 +127,7 @@ watch( endTime.value = m.end; } }, - { immediate: true, deep: true } + { immediate: true, deep: true }, ); watch( [startTime, endTime, hasErrors] as const, @@ -149,7 +149,7 @@ watch( emit("update:modelValue", newModel); } }, - { immediate: true } + { immediate: true }, ); diff --git a/console/frontend/src/components/TitleProvider.vue b/console/frontend/src/components/TitleProvider.vue index 4ad7f066..2ee280e3 100644 --- a/console/frontend/src/components/TitleProvider.vue +++ b/console/frontend/src/components/TitleProvider.vue @@ -21,7 +21,7 @@ const documentTitle = ref(null); const title = computed(() => [applicationName, viewName.value, documentTitle.value] .filter((k) => !!k) - .join(" | ") + .join(" | "), ); useTitle(title); useRouter().beforeEach((to, from) => { diff --git a/console/frontend/src/components/UserProvider.vue b/console/frontend/src/components/UserProvider.vue index c17b5c8b..f9e52980 100644 --- a/console/frontend/src/components/UserProvider.vue +++ b/console/frontend/src/components/UserProvider.vue @@ -33,7 +33,7 @@ watch( execute(false); } }, - { immediate: true } + { immediate: true }, ); provide(UserKey, { diff --git a/console/frontend/src/utils/palette.ts b/console/frontend/src/utils/palette.ts index 07d7e5a3..df1b2ad1 100644 --- a/console/frontend/src/utils/palette.ts +++ b/console/frontend/src/utils/palette.ts @@ -75,8 +75,8 @@ const orderedColors = ["blue", "orange", "aqua", "green", "magenta"] as const; const darkPalette = [5, 6, 7, 8, 9, 10] .map((idx) => orderedColors.map( - (colorName: keyof typeof colors) => colors[colorName][idx] - ) + (colorName: keyof typeof colors) => colors[colorName][idx], + ), ) .flat(); const lightPalette = [5, 4, 3, 2, 1, 0] @@ -90,13 +90,13 @@ const lightenColor = (color: string, amount: number) => ( "0" + Math.min(255, Math.max(0, parseInt(color, 16) + amount)).toString(16) - ).slice(-2) + ).slice(-2), ); export function dataColor( index: number, alternate = false, - theme: "light" | "dark" = "light" + theme: "light" | "dark" = "light", ) { const palette = theme === "light" ? lightPalette : darkPalette; const correctedIndex = index % 2 === 0 ? index : index + orderedColors.length; @@ -110,7 +110,7 @@ export function dataColor( export function dataColorGrey( index: number, alternate = false, - theme: "light" | "dark" = "light" + theme: "light" | "dark" = "light", ) { const palette = theme === "light" diff --git a/console/frontend/src/views/DocumentationPage.vue b/console/frontend/src/views/DocumentationPage.vue index de2d47ff..12a79fda 100644 --- a/console/frontend/src/views/DocumentationPage.vue +++ b/console/frontend/src/views/DocumentationPage.vue @@ -100,7 +100,7 @@ const errorMessage = computed( data.value && "message" in data.value && (data.value.message || `Server returned an error: ${error.value}`)) || - "" + "", ); const markdown = computed( () => @@ -108,11 +108,11 @@ const markdown = computed( data.value && "markdown" in data.value && data.value.markdown) || - "" + "", ); const toc = computed( () => - (!error.value && data.value && "toc" in data.value && data.value.toc) || [] + (!error.value && data.value && "toc" in data.value && data.value.toc) || [], ); const activeDocument = computed(() => props.id || null); const activeSlug = useRouteHash(); @@ -133,7 +133,7 @@ watch([markdown, activeSlug] as const, async () => { (activeSlug.value && ( document.querySelector( - `#${CSS.escape(activeSlug.value.slice(1))}` + `#${CSS.escape(activeSlug.value.slice(1))}`, ) as HTMLElement | null )?.offsetTop) || 0; diff --git a/console/frontend/src/views/HomePage.vue b/console/frontend/src/views/HomePage.vue index d4aefd84..e52d1296 100644 --- a/console/frontend/src/views/HomePage.vue +++ b/console/frontend/src/views/HomePage.vue @@ -58,7 +58,7 @@ import { ServerConfigKey } from "@/components/ServerConfigProvider.vue"; const serverConfiguration = inject(ServerConfigKey)!; const topWidgets = computed( - () => serverConfiguration.value?.homepageTopWidgets ?? [] + () => serverConfiguration.value?.homepageTopWidgets ?? [], ); const widgetTitle = (name: string) => ({ @@ -71,7 +71,7 @@ const widgetTitle = (name: string) => etype: "IPv4/IPv6", "src-port": "Top source ports", "dst-port": "Top destination ports", - }[name] ?? "???"); + })[name] ?? "???"; const refreshOften = useInterval(10_000); const refreshOccasionally = useInterval(60_000); diff --git a/console/frontend/src/views/HomePage/WidgetFlowRate.vue b/console/frontend/src/views/HomePage/WidgetFlowRate.vue index ad6b83d8..ba901826 100644 --- a/console/frontend/src/views/HomePage/WidgetFlowRate.vue +++ b/console/frontend/src/views/HomePage/WidgetFlowRate.vue @@ -22,7 +22,7 @@ const props = withDefaults( }>(), { refresh: 0, - } + }, ); const url = computed(() => `/api/v0/console/widget/flow-rate?${props.refresh}`); diff --git a/console/frontend/src/views/HomePage/WidgetGraph.vue b/console/frontend/src/views/HomePage/WidgetGraph.vue index 7bcbd000..0d501300 100644 --- a/console/frontend/src/views/HomePage/WidgetGraph.vue +++ b/console/frontend/src/views/HomePage/WidgetGraph.vue @@ -36,7 +36,7 @@ const props = withDefaults( }>(), { refresh: 0, - } + }, ); type ECOption = ComposeOption< @@ -95,6 +95,6 @@ const option = computed( : data.value.data.map(({ t, gbps }) => [t, gbps]).slice(0, -1), }, ], - }) + }), ); diff --git a/console/frontend/src/views/HomePage/WidgetLastFlow.vue b/console/frontend/src/views/HomePage/WidgetLastFlow.vue index c2128b9c..c67066e2 100644 --- a/console/frontend/src/views/HomePage/WidgetLastFlow.vue +++ b/console/frontend/src/views/HomePage/WidgetLastFlow.vue @@ -28,7 +28,7 @@ const props = withDefaults( defineProps<{ refresh?: number; }>(), - { refresh: 0 } + { refresh: 0 }, ); const url = computed(() => `/api/v0/console/widget/flow-last?${props.refresh}`); @@ -37,7 +37,7 @@ const { data } = useFetch(url, { refetch: true }) .json>(); const lastFlow = computed((): [string, string | number][] => ({ ...Object.entries(data.value || {}).sort(([f1], [f2]) => - compareFields(f1, f2) + compareFields(f1, f2), ), })); diff --git a/console/frontend/src/views/HomePage/WidgetTop.vue b/console/frontend/src/views/HomePage/WidgetTop.vue index 586986ba..7aa5a489 100644 --- a/console/frontend/src/views/HomePage/WidgetTop.vue +++ b/console/frontend/src/views/HomePage/WidgetTop.vue @@ -44,7 +44,7 @@ type ECOption = ComposeOption< >; const url = computed( - () => `/api/v0/console/widget/top/${props.what}?${props.refresh}` + () => `/api/v0/console/widget/top/${props.what}?${props.refresh}`, ); const { data } = useFetch(url, { refetch: true }) .get() @@ -98,9 +98,9 @@ const options = computed( 100 - (data.value?.top || []).reduce( (c, n) => c + n.percent, - 0 + 0, ), - 0 + 0, ), }, ].filter(({ value }) => value > 0.05), @@ -115,6 +115,6 @@ const options = computed( }, }, ], - }) + }), ); diff --git a/console/frontend/src/views/VisualizePage.vue b/console/frontend/src/views/VisualizePage.vue index b29c23b7..603a6bbd 100644 --- a/console/frontend/src/views/VisualizePage.vue +++ b/console/frontend/src/views/VisualizePage.vue @@ -109,7 +109,7 @@ const decodeState = (serialized: string | undefined): ModelType => { const encodeState = (state: ModelType) => { if (state === null) return ""; return LZString.compressToBase64( - JSON.stringify(state, Object.keys(state).sort()) + JSON.stringify(state, Object.keys(state).sort()), ); }; watch( @@ -120,7 +120,7 @@ watch( state.value = newState; } }, - { immediate: true } + { immediate: true }, ); const encodedState = computed(() => encodeState(state.value)); @@ -133,7 +133,7 @@ const orderedJSONPayload = >(input: T): T => { .sort() .reduce( (o, k) => ((o[k] = input[k]), o), - {} as { [key: string]: any } + {} as { [key: string]: any }, ) as T; }; const jsonPayload = computed( @@ -163,7 +163,7 @@ const jsonPayload = computed( }; return orderedJSONPayload(input); } - } + }, ); const request = ref(null); // Same as state, but once request is successful const { data, execute, isFetching, aborted, abort, canAbort, error } = useFetch( @@ -191,7 +191,7 @@ const { data, execute, isFetching, aborted, abort, canAbort, error } = useFetch( }; }, async afterFetch( - ctx: AfterFetchContext + ctx: AfterFetchContext, ) { // Update data. Not done in a computed value as we want to keep the // previous data in case of errors. @@ -199,7 +199,7 @@ const { data, execute, isFetching, aborted, abort, canAbort, error } = useFetch( if (data === null || !state.value) return ctx; console.groupCollapsed("SQL query"); console.info( - response.headers.get("x-sql-query")?.replace(/ {2}( )*/g, "\n$1") + response.headers.get("x-sql-query")?.replace(/ {2}( )*/g, "\n$1"), ); console.groupEnd(); if (state.value.graphType === "sankey") { @@ -239,7 +239,7 @@ const { data, execute, isFetching, aborted, abort, canAbort, error } = useFetch( return ctx; }, immediate: false, - } + }, ) .post(jsonPayload, "json") .json< diff --git a/console/frontend/src/views/VisualizePage/DataGraphLine.vue b/console/frontend/src/views/VisualizePage/DataGraphLine.vue index dc5c33da..cb2c44b6 100644 --- a/console/frontend/src/views/VisualizePage/DataGraphLine.vue +++ b/console/frontend/src/views/VisualizePage/DataGraphLine.vue @@ -93,7 +93,7 @@ const graph = computed((): ECOption => { // Unfortunately, eCharts does not seem to make it easy // to inverse an axis and put the result below. Therefore, // we use negative values for the second axis. - (row, rowIdx) => row[timeIdx] * (data.axis[rowIdx] % 2 ? 1 : -1) + (row, rowIdx) => row[timeIdx] * (data.axis[rowIdx] % 2 ? 1 : -1), ), ]; if (data.graphType === "stacked100") { @@ -101,11 +101,11 @@ const graph = computed((): ECOption => { const [, ...values] = result; const positiveSum = values.reduce( (prev, cur) => (cur > 0 ? prev + cur : prev), - 0 + 0, ); const negativeSum = values.reduce( (prev, cur) => (cur < 0 ? prev + cur : prev), - 0 + 0, ); result = [ t, @@ -114,7 +114,7 @@ const graph = computed((): ECOption => { ? v / positiveSum : v < 0 && negativeSum < 0 ? -v / negativeSum - : v + : v, ), ]; } @@ -210,13 +210,13 @@ const graph = computed((): ECOption => { ``, `${row.marker} ${row.seriesName}`, `${data.bidirectional ? "↑" : ""}${formatXps( - row.up + row.up, )}`, data.bidirectional ? `↓${formatXps(row.down)}` : "", ``, - ].join("") + ].join(""), ) .join(""); return `${ @@ -324,7 +324,7 @@ const graph = computed((): ECOption => { } if (data.graphType === "grid") { const uniqRows = uniqWith(data.rows, isEqual).filter((row) => - row.some((name) => name !== "Other") + row.some((name) => name !== "Other"), ), uniqRowIndex = (row: string[]) => findIndex(uniqRows, (orow) => isEqual(row, orow)), @@ -338,9 +338,9 @@ const graph = computed((): ECOption => { const [, ...cdr] = row; return fn.apply( null, - cdr.filter((_, idx) => !otherIndexes.includes(idx + 1)) + cdr.filter((_, idx) => !otherIndexes.includes(idx + 1)), ); - }) + }), ), maxY = somethingY(Math.max), minY = somethingY(Math.min); @@ -454,7 +454,7 @@ const updateTimeRange = (evt: BrushModel) => { return; } const [start, end] = evt.areas[0].coordRange.map( - (t) => new Date(t as number) + (t) => new Date(t as number), ); chartComponent.value.dispatchAction({ type: "brush", @@ -472,6 +472,6 @@ watch( type: "highlight", seriesIndex: index, }); - } + }, ); diff --git a/console/frontend/src/views/VisualizePage/DataGraphSankey.vue b/console/frontend/src/views/VisualizePage/DataGraphSankey.vue index 45603efe..3d3e076e 100644 --- a/console/frontend/src/views/VisualizePage/DataGraphSankey.vue +++ b/console/frontend/src/views/VisualizePage/DataGraphSankey.vue @@ -54,7 +54,7 @@ const option = computed((): ECOption => { marker, `${nodeData.name}`, `${formatXps( - value.valueOf() as number + value.valueOf() as number, )}`, ].join(""); } else if (dataType === "edge") { @@ -69,7 +69,7 @@ const option = computed((): ECOption => { ? [ `${source} → ${target}`, `${formatXps( - value.valueOf() as number + value.valueOf() as number, )}`, ].join("") : ""; diff --git a/console/frontend/src/views/VisualizePage/DataTable.vue b/console/frontend/src/views/VisualizePage/DataTable.vue index ff22237f..ced53c9a 100644 --- a/console/frontend/src/views/VisualizePage/DataTable.vue +++ b/console/frontend/src/views/VisualizePage/DataTable.vue @@ -116,7 +116,7 @@ const highlight = (index: number | null) => { (() => { let count = 0; return (_, idx) => axis[idx] != displayedAxis.value || count++ < index; - })() + })(), ).length; emit("highlighted", originalIndex); }; @@ -221,6 +221,6 @@ const table = computed( }; } return null; - } + }, ); diff --git a/console/frontend/src/views/VisualizePage/OptionsPanel.vue b/console/frontend/src/views/VisualizePage/OptionsPanel.vue index 8ecd4f58..8ab492d8 100644 --- a/console/frontend/src/views/VisualizePage/OptionsPanel.vue +++ b/console/frontend/src/views/VisualizePage/OptionsPanel.vue @@ -146,7 +146,7 @@ const props = withDefaults( }>(), { loading: false, - } + }, ); const emit = defineEmits<{ (e: "update:modelValue", value: typeof props.modelValue): void; @@ -217,7 +217,7 @@ const options = computed((): InternalModelType => { const applyLabel = computed(() => isEqual(options.value, omit(props.modelValue, ["start", "end"])) ? "Refresh" - : "Apply" + : "Apply", ); const hasErrors = computed( () => @@ -225,7 +225,7 @@ const hasErrors = computed( timeRange.value?.errors || dimensions.value?.errors || filter.value?.errors - ) + ), ); const serverConfiguration = inject(ServerConfigKey)!; @@ -281,7 +281,7 @@ watch( submitOptions(true); } }, - { immediate: true, deep: true } + { immediate: true, deep: true }, ); diff --git a/console/frontend/src/views/VisualizePage/RequestSummary.vue b/console/frontend/src/views/VisualizePage/RequestSummary.vue index d06b4a70..7893faa2 100644 --- a/console/frontend/src/views/VisualizePage/RequestSummary.vue +++ b/console/frontend/src/views/VisualizePage/RequestSummary.vue @@ -67,7 +67,7 @@ import { TitleKey } from "@/components/TitleProvider.vue"; const props = defineProps<{ request: ModelType }>(); const start = computed(() => - props.request ? SugarDate(props.request.start).long() : null + props.request ? SugarDate(props.request.start).long() : null, ); const end = computed(() => { if (props.request === null) return null; @@ -75,7 +75,7 @@ const end = computed(() => { SugarDate(props.request.start).toDateString().raw === SugarDate(props.request.end).toDateString().raw ? "%X" - : "{long}" + : "{long}", ); }); @@ -90,7 +90,7 @@ const computedTitle = computed(() => end.value, ] .filter((e) => !!e) - .join(" · ") + .join(" · "), ); watch(computedTitle, (t) => title.set(t));