From 21fc2ce2fdf29a8b7ea47386c45fac5d40051fd9 Mon Sep 17 00:00:00 2001 From: Amir Raminfar Date: Tue, 18 Oct 2022 15:29:19 -0700 Subject: [PATCH] Adds on mouse over effect for stats (#1914) --- assets/auto-imports.d.ts | 2 + assets/components.d.ts | 2 + assets/components/LogViewer/ContainerStat.vue | 51 ++-- assets/components/LogViewer/StatMonitor.vue | 56 +++++ assets/components/LogViewer/StatSparkline.vue | 35 ++- assets/composables/eventsource.ts | 2 +- assets/types/Point.d.ts | 2 +- package.json | 14 +- pnpm-lock.yaml | 223 +++++++----------- 9 files changed, 212 insertions(+), 175 deletions(-) create mode 100644 assets/components/LogViewer/StatMonitor.vue diff --git a/assets/auto-imports.d.ts b/assets/auto-imports.d.ts index 5974314d..c9acae4f 100644 --- a/assets/auto-imports.d.ts +++ b/assets/auto-imports.d.ts @@ -250,6 +250,7 @@ declare global { const useSessionStorage: typeof import('@vueuse/core')['useSessionStorage'] const useShare: typeof import('@vueuse/core')['useShare'] const useSlots: typeof import('vue')['useSlots'] + const useSorted: typeof import('@vueuse/core')['useSorted'] const useSpeechRecognition: typeof import('@vueuse/core')['useSpeechRecognition'] const useSpeechSynthesis: typeof import('@vueuse/core')['useSpeechSynthesis'] const useStepper: typeof import('@vueuse/core')['useStepper'] @@ -558,6 +559,7 @@ declare module '@vue/runtime-core' { readonly useSessionStorage: UnwrapRef readonly useShare: UnwrapRef readonly useSlots: UnwrapRef + readonly useSorted: UnwrapRef readonly useSpeechRecognition: UnwrapRef readonly useSpeechSynthesis: UnwrapRef readonly useStepper: UnwrapRef diff --git a/assets/components.d.ts b/assets/components.d.ts index 8edd16d3..ae80bba5 100644 --- a/assets/components.d.ts +++ b/assets/components.d.ts @@ -13,6 +13,7 @@ declare module '@vue/runtime-core' { ComplexLogItem: typeof import('./components/LogViewer/ComplexLogItem.vue')['default'] ContainerStat: typeof import('./components/LogViewer/ContainerStat.vue')['default'] ContainerTitle: typeof import('./components/LogViewer/ContainerTitle.vue')['default'] + copy: typeof import('./components/LogViewer/ContainerStat copy.vue')['default'] CpuSparkline: typeof import('./components/StatSparkline.vue')['default'] DockerEventLogItem: typeof import('./components/LogViewer/DockerEventLogItem.vue')['default'] DropdownMenu: typeof import('./components/DropdownMenu.vue')['default'] @@ -45,6 +46,7 @@ declare module '@vue/runtime-core' { SideMenu: typeof import('./components/SideMenu.vue')['default'] SimpleLogItem: typeof import('./components/LogViewer/SimpleLogItem.vue')['default'] SkippedEntriesLogItem: typeof import('./components/LogViewer/SkippedEntriesLogItem.vue')['default'] + StatMonitor: typeof import('./components/LogViewer/StatMonitor.vue')['default'] StatSparkline: typeof import('./components/LogViewer/StatSparkline.vue')['default'] ZigZag: typeof import('./components/LogViewer/ZigZag.vue')['default'] } diff --git a/assets/components/LogViewer/ContainerStat.vue b/assets/components/LogViewer/ContainerStat.vue index 1aaeea43..3675259b 100644 --- a/assets/components/LogViewer/ContainerStat.vue +++ b/assets/components/LogViewer/ContainerStat.vue @@ -1,30 +1,17 @@ @@ -38,7 +25,12 @@ const cpuData = computedWithControl( () => container.value.getLastStat(), () => { const history = container.value.getStatHistory(); - return history.map((stat, i) => ({ x: history.length - i, y: stat.snapshot.cpu })); + const points: Point[] = history.map((stat, i) => ({ + x: i, + y: stat.snapshot.cpu, + value: stat.snapshot.cpu + "%", + })); + return points; } ); @@ -46,7 +38,12 @@ const memoryData = computedWithControl( () => container.value.getLastStat(), () => { const history = container.value.getStatHistory(); - return history.map((stat, i) => ({ x: history.length - i, y: stat.snapshot.memory })); + const points: Point[] = history.map((stat, i) => ({ + x: i, + y: stat.snapshot.memory, + value: formatBytes(stat.snapshot.memoryUsage), + })); + return points; } ); diff --git a/assets/components/LogViewer/StatMonitor.vue b/assets/components/LogViewer/StatMonitor.vue new file mode 100644 index 00000000..696834e3 --- /dev/null +++ b/assets/components/LogViewer/StatMonitor.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/assets/components/LogViewer/StatSparkline.vue b/assets/components/LogViewer/StatSparkline.vue index ba8e5acc..e8e4fd15 100644 --- a/assets/components/LogViewer/StatSparkline.vue +++ b/assets/components/LogViewer/StatSparkline.vue @@ -1,6 +1,7 @@ @@ -10,12 +11,16 @@ import { scaleLinear } from "d3-scale"; import { area, curveStep } from "d3-shape"; const d3 = { extent, scaleLinear, area, curveStep }; -const { data, width = 150, height = 30 } = defineProps<{ data: Point[]; width?: number; height?: number }>(); -const x = d3.scaleLinear().range([0, width]); +const { data, width = 150, height = 30 } = defineProps<{ data: Point[]; width?: number; height?: number }>(); +const x = d3.scaleLinear().range([width, 0]); const y = d3.scaleLinear().range([height, 0]); +const emit = defineEmits<{ + (event: "selected-point", value: Point): void; +}>(); + const shape = d3 - .area() + .area>() .curve(d3.curveStep) .x((d) => x(d.x)) .y0(height) @@ -24,12 +29,34 @@ const shape = d3 const path = computed(() => { x.domain(d3.extent(data, (d) => d.x) as [number, number]); y.domain(d3.extent(data, (d) => d.y) as [number, number]); + return shape(data) ?? ""; }); + +let lineX = $ref(0); + +function onMove(e: MouseEvent) { + const { offsetX } = e; + const xValue = x.invert(offsetX); + const index = Math.round(xValue); + lineX = x(index); + const point = data[index]; + emit("selected-point", point); +} diff --git a/assets/composables/eventsource.ts b/assets/composables/eventsource.ts index efbd241d..bfba7d67 100644 --- a/assets/composables/eventsource.ts +++ b/assets/composables/eventsource.ts @@ -37,7 +37,7 @@ export function useLogStream(container: ComputedRef) { } else { messages.push(...buffer); buffer = []; - messages.splice(0, messages.length - config.maxLogs); + messages = messages.slice(-config.maxLogs); } } else { messages.push(...buffer); diff --git a/assets/types/Point.d.ts b/assets/types/Point.d.ts index 4e7e0738..065007ac 100644 --- a/assets/types/Point.d.ts +++ b/assets/types/Point.d.ts @@ -1 +1 @@ -type Point = { x: number; y: number }; +type Point = { x: number; y: number; value?: T }; diff --git a/package.json b/package.json index 80819cdd..a2f5855e 100644 --- a/package.json +++ b/package.json @@ -22,16 +22,16 @@ "postinstall": "husky install" }, "dependencies": { - "@iconify-json/carbon": "^1.1.8", + "@iconify-json/carbon": "^1.1.9", "@iconify-json/cil": "^1.1.2", "@iconify-json/mdi": "^1.1.34", "@iconify-json/mdi-light": "^1.1.2", "@iconify-json/octicon": "^1.1.20", "@oruga-ui/oruga-next": "^0.5.6", "@oruga-ui/theme-bulma": "^0.2.7", - "@vueuse/core": "^9.3.0", - "@vueuse/integrations": "^9.3.0", - "@vueuse/router": "^9.3.0", + "@vueuse/core": "^9.3.1", + "@vueuse/integrations": "^9.3.1", + "@vueuse/router": "^9.3.1", "ansi-to-html": "^0.7.2", "bulma": "^0.9.4", "d3-array": "^3.2.0", @@ -78,13 +78,13 @@ "ts-node": "^10.9.1", "typescript": "^4.8.4", "unplugin-auto-import": "^0.11.2", - "unplugin-icons": "^0.14.11", + "unplugin-icons": "^0.14.12", "unplugin-vue-components": "^0.22.8", "vite": "3.1.8", - "vite-plugin-pages": "^0.26.0", + "vite-plugin-pages": "^0.27.0", "vite-plugin-vue-layouts": "^0.7.0", "vitest": "^0.24.3", - "vue-tsc": "^1.0.7" + "vue-tsc": "^1.0.8" }, "lint-staged": { "*.{js,vue,css}": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 32951fdf..fe3352e3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,7 +1,7 @@ lockfileVersion: 5.4 specifiers: - '@iconify-json/carbon': ^1.1.8 + '@iconify-json/carbon': ^1.1.9 '@iconify-json/cil': ^1.1.2 '@iconify-json/mdi': ^1.1.34 '@iconify-json/mdi-light': ^1.1.2 @@ -22,9 +22,9 @@ specifiers: '@vitejs/plugin-vue': 3.1.2 '@vue/compiler-sfc': ^3.2.41 '@vue/test-utils': ^2.1.0 - '@vueuse/core': ^9.3.0 - '@vueuse/integrations': ^9.3.0 - '@vueuse/router': ^9.3.0 + '@vueuse/core': ^9.3.1 + '@vueuse/integrations': ^9.3.1 + '@vueuse/router': ^9.3.1 ansi-to-html: ^0.7.2 bulma: ^0.9.4 c8: ^7.12.0 @@ -52,28 +52,28 @@ specifiers: ts-node: ^10.9.1 typescript: ^4.8.4 unplugin-auto-import: ^0.11.2 - unplugin-icons: ^0.14.11 + unplugin-icons: ^0.14.12 unplugin-vue-components: ^0.22.8 vite: 3.1.8 - vite-plugin-pages: ^0.26.0 + vite-plugin-pages: ^0.27.0 vite-plugin-vue-layouts: ^0.7.0 vitest: ^0.24.3 vue: ^3.2.41 vue-i18n: ^9.2.2 vue-router: ^4.1.5 - vue-tsc: ^1.0.7 + vue-tsc: ^1.0.8 dependencies: - '@iconify-json/carbon': 1.1.8 + '@iconify-json/carbon': 1.1.9 '@iconify-json/cil': 1.1.2 '@iconify-json/mdi': 1.1.34 '@iconify-json/mdi-light': 1.1.2 '@iconify-json/octicon': 1.1.20 '@oruga-ui/oruga-next': 0.5.6_vue@3.2.41 '@oruga-ui/theme-bulma': 0.2.7 - '@vueuse/core': 9.3.0_vue@3.2.41 - '@vueuse/integrations': 9.3.0_fuse.js@6.6.2+vue@3.2.41 - '@vueuse/router': 9.3.0_4g567gsol3fv3jos66rjdswwp4 + '@vueuse/core': 9.3.1_vue@3.2.41 + '@vueuse/integrations': 9.3.1_fuse.js@6.6.2+vue@3.2.41 + '@vueuse/router': 9.3.1_4g567gsol3fv3jos66rjdswwp4 ansi-to-html: 0.7.2 bulma: 0.9.4 d3-array: 3.2.0 @@ -119,14 +119,14 @@ devDependencies: sass: 1.55.0 ts-node: 10.9.1_o6ib7qqltxpe7qrskddglns2ga typescript: 4.8.4 - unplugin-auto-import: 0.11.2_xprgaq42dappzfhggpxgvdf43y - unplugin-icons: 0.14.11_@vue+compiler-sfc@3.2.41 + unplugin-auto-import: 0.11.2_zqi2xhr3ahaiw6pxzygjgkwf7q + unplugin-icons: 0.14.12_@vue+compiler-sfc@3.2.41 unplugin-vue-components: 0.22.8_vue@3.2.41 vite: 3.1.8_sass@1.55.0 - vite-plugin-pages: 0.26.0_y7chuddh2i4swuczuywc2tye34 + vite-plugin-pages: 0.27.0_y7chuddh2i4swuczuywc2tye34 vite-plugin-vue-layouts: 0.7.0_nknaiyoma7qglenj4mb2pj2auq vitest: 0.24.3_jsdom@20.0.1+sass@1.55.0 - vue-tsc: 1.0.7_typescript@4.8.4 + vue-tsc: 1.0.8_typescript@4.8.4 packages: @@ -213,8 +213,8 @@ packages: resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} dev: true - /@iconify-json/carbon/1.1.8: - resolution: {integrity: sha512-aSoMgvZyvIXadLbMXcfS+qy8CVxSExvvp8Vd/nCrupLFc0KLKSukRInnVNc63zaHqoe1NBf5xUrgfyRYYfaKWQ==} + /@iconify-json/carbon/1.1.9: + resolution: {integrity: sha512-O3geRhhnE9dDDC4oT6qwBs7sdc37R9UqftiG7BP8YVDw8OcXv8i95J0ZEkIfdOXFj1Wb6kC/Uu/6VTlAqotVXg==} dependencies: '@iconify/types': 2.0.0 dev: false @@ -696,8 +696,8 @@ packages: resolution: {integrity: sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==} dev: true - /@types/web-bluetooth/0.0.15: - resolution: {integrity: sha512-w7hEHXnPMEZ+4nGKl/KDRVpxkwYxYExuHOYXyzIzCDzEZ9ZCGMAewulr9IqJu2LR4N37fcnb1XVeuZ09qgOxhA==} + /@types/web-bluetooth/0.0.16: + resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} /@vitejs/plugin-vue/3.1.2_vite@3.1.8+vue@3.2.41: resolution: {integrity: sha512-3zxKNlvA3oNaKDYX0NBclgxTQ1xaFdL7PzwF6zj9tGFziKwmBa3Q/6XcJQxudlT81WxDjEhHmevvIC4Orc1LhQ==} @@ -710,44 +710,44 @@ packages: vue: 3.2.41 dev: true - /@volar/language-core/1.0.7: - resolution: {integrity: sha512-T3iJ7Ej5Ywrsn1nEfvOQ98LdFZu3TtoXD8UELHto/u5QyQk4U2GfPl+0ZjuS39ZPocU9l/5CMhrxHsgv/hFWVA==} + /@volar/language-core/1.0.8: + resolution: {integrity: sha512-uxYSOqBk8ZFSzGjUIPOBEFPOg8F3CE6cLO5meK95DODGIlUlPytGiy9sy8QZ9w7RpUH4XMOX3MH/G48SLgP07A==} dependencies: - '@volar/source-map': 1.0.7 - '@vue/reactivity': 3.2.40 + '@volar/source-map': 1.0.8 + '@vue/reactivity': 3.2.41 muggle-string: 0.1.0 dev: true - /@volar/source-map/1.0.7: - resolution: {integrity: sha512-58xtTXbriaBoGHl5epE5kYI0Pk81yGmM3Mb/5TEUEzA16dGovXiwtEGce2xCgo0ps42OInFvFuaRv3SvM0k6mg==} + /@volar/source-map/1.0.8: + resolution: {integrity: sha512-uKMe+alyfl1Abs5SviKejFoe7x9g6jDPVpVt63Tet4qn1Ziy7tFsvtCpM2Y1Ko5qw2nLIeloLslPqm9/gmbBLQ==} dependencies: muggle-string: 0.1.0 dev: true - /@volar/typescript/1.0.7: - resolution: {integrity: sha512-VH3dMxTqkdUqjmdVwIytBjppH5iy18qK9peb3E9CNbvzf/+b3TpdX0zoyglaKmC5IeHG68KHXK2yps734yZ4nQ==} + /@volar/typescript/1.0.8: + resolution: {integrity: sha512-2oY1Apvzcs/5tAn7p1tRlDxNgal5ezaK0h9cutcWALeimsaQBAEE2NAirCrLMHl8DneuDce0tzJqHaQeHw9RmQ==} dependencies: - '@volar/language-core': 1.0.7 + '@volar/language-core': 1.0.8 dev: true - /@volar/vue-language-core/1.0.7: - resolution: {integrity: sha512-5InGpRLu5FGeUkVNr1LvQfvThdSsyzIwvsYqYSGLj6VNmS7rzLacoKjZlTwz68/976aU3zjdgx94PoNl5n/SqA==} + /@volar/vue-language-core/1.0.8: + resolution: {integrity: sha512-cXb7oTybxcm1vpz003agdYQHyxij7UAaSub60d7W1aMWpqb2iaCbVaq9izgQFlrpC4/JnVs+cJPb/Q6fAUVxBg==} dependencies: - '@volar/language-core': 1.0.7 - '@volar/source-map': 1.0.7 + '@volar/language-core': 1.0.8 + '@volar/source-map': 1.0.8 '@vue/compiler-dom': 3.2.41 '@vue/compiler-sfc': 3.2.41 - '@vue/reactivity': 3.2.40 + '@vue/reactivity': 3.2.41 '@vue/shared': 3.2.41 minimatch: 5.1.0 - vue-template-compiler: 2.7.12 + vue-template-compiler: 2.7.13 dev: true - /@volar/vue-typescript/1.0.7: - resolution: {integrity: sha512-SZlUJfMh/9NOIfpYtSVcIAbJVEzEiH2qWBIYHPooMXC02qey56Tg6J2eMhIoKWIuZH0VRRbX8IgFHevSQzzGOw==} + /@volar/vue-typescript/1.0.8: + resolution: {integrity: sha512-6jBvA7iwBkRqS2VQx2gLJgfLcF3hcODyJ6Lmiw2tN8D/LVfFCovvzJgPvIQb9Y4i+rha1Y0cpsYOUt9XW2Z7ZA==} dependencies: - '@volar/typescript': 1.0.7 - '@volar/vue-language-core': 1.0.7 + '@volar/typescript': 1.0.8 + '@volar/vue-language-core': 1.0.8 dev: true /@vue/compiler-core/3.2.41: @@ -799,12 +799,6 @@ packages: estree-walker: 2.0.2 magic-string: 0.25.9 - /@vue/reactivity/3.2.40: - resolution: {integrity: sha512-N9qgGLlZmtUBMHF9xDT4EkD9RdXde1Xbveb+niWMXuHVWQP5BzgRmE3SFyUBBcyayG4y1lhoz+lphGRRxxK4RA==} - dependencies: - '@vue/shared': 3.2.40 - dev: true - /@vue/reactivity/3.2.41: resolution: {integrity: sha512-9JvCnlj8uc5xRiQGZ28MKGjuCoPhhTwcoAdv3o31+cfGgonwdPNuvqAXLhlzu4zwqavFEG5tvaoINQEfxz+l6g==} dependencies: @@ -832,10 +826,6 @@ packages: '@vue/shared': 3.2.41 vue: 3.2.41 - /@vue/shared/3.2.40: - resolution: {integrity: sha512-0PLQ6RUtZM0vO3teRfzGi4ltLUO5aO+kLgwh4Um3THSR03rpQWLTuRCkuO5A41ITzwdWeKdPHtSARuPkoo5pCQ==} - dev: true - /@vue/shared/3.2.41: resolution: {integrity: sha512-W9mfWLHmJhkfAmV+7gDjcHeAWALQtgGT3JErxULl0oz6R6+3ug91I7IErs93eCFhPCZPHBs4QJS7YWEV7A3sxw==} @@ -847,19 +837,19 @@ packages: vue: 3.2.41 dev: true - /@vueuse/core/9.3.0_vue@3.2.41: - resolution: {integrity: sha512-64Rna8IQDWpdrJxgitDg7yv1yTp41ZmvV8zlLEylK4QQLWAhz1OFGZDPZ8bU4lwcGgbEJ2sGi2jrdNh4LttUSQ==} + /@vueuse/core/9.3.1_vue@3.2.41: + resolution: {integrity: sha512-xriyD+v3D2ObH/UtnkEl+1sbcLBVHNaZaLi/rqoNEe/B92hggDEFQIGXoQUjdRzYOjASHSezf9uCDtmd7LeWyA==} dependencies: - '@types/web-bluetooth': 0.0.15 - '@vueuse/metadata': 9.3.0 - '@vueuse/shared': 9.3.0_vue@3.2.41 + '@types/web-bluetooth': 0.0.16 + '@vueuse/metadata': 9.3.1 + '@vueuse/shared': 9.3.1_vue@3.2.41 vue-demi: 0.13.11_vue@3.2.41 transitivePeerDependencies: - '@vue/composition-api' - vue - /@vueuse/integrations/9.3.0_fuse.js@6.6.2+vue@3.2.41: - resolution: {integrity: sha512-KkJpC97VioZUpSw7rvgnqoLgTztLlLLGdYp6WQKn69cJiItsJVSRZrmI+X9YVxPBzuLvRymYZfp0RMyISVFHTw==} + /@vueuse/integrations/9.3.1_fuse.js@6.6.2+vue@3.2.41: + resolution: {integrity: sha512-ydVHxJpLZrO9WbRXs1mNBbgEby8ERkiQumR2LebYVtY/1AFEn+mQ8MkL9pvcXwd9mrQSms+wzssu760n7DaDAw==} peerDependencies: async-validator: '*' axios: '*' @@ -893,8 +883,8 @@ packages: universal-cookie: optional: true dependencies: - '@vueuse/core': 9.3.0_vue@3.2.41 - '@vueuse/shared': 9.3.0_vue@3.2.41 + '@vueuse/core': 9.3.1_vue@3.2.41 + '@vueuse/shared': 9.3.1_vue@3.2.41 fuse.js: 6.6.2 vue-demi: 0.13.11_vue@3.2.41 transitivePeerDependencies: @@ -902,15 +892,15 @@ packages: - vue dev: false - /@vueuse/metadata/9.3.0: - resolution: {integrity: sha512-GnnfjbzIPJIh9ngL9s9oGU1+Hx/h5/KFqTfJykzh/1xjaHkedV9g0MASpdmPZIP+ynNhKAcEfA6g5i8KXwtoMA==} + /@vueuse/metadata/9.3.1: + resolution: {integrity: sha512-G1BPhtx3OHaL/y4OZBofh6Xt02G1VA9PuOO8nac9sTKMkMqfyez5VfkF3D9GUjSRNO7cVWyH4rceeGXfr2wdMg==} - /@vueuse/router/9.3.0_4g567gsol3fv3jos66rjdswwp4: - resolution: {integrity: sha512-UFN2MFciprH21oYsAgNHeDJ4Bd86HpRm9gximSN8j6h4fc2aa62fvfhprfHqdTxYAcgcGkMwcc9TO75jOvr8gg==} + /@vueuse/router/9.3.1_4g567gsol3fv3jos66rjdswwp4: + resolution: {integrity: sha512-iyxyGNAeK8y4xaKjidnTI2H6eFiCiHypjoKPDEE8kdfESoxjegigp/DYfrbFt3IIeAHXPvBMq11m9IFuZ+LyLw==} peerDependencies: vue-router: '>=4.0.0-rc.1' dependencies: - '@vueuse/shared': 9.3.0_vue@3.2.41 + '@vueuse/shared': 9.3.1_vue@3.2.41 vue-demi: 0.13.11_vue@3.2.41 vue-router: 4.1.5_vue@3.2.41 transitivePeerDependencies: @@ -918,8 +908,8 @@ packages: - vue dev: false - /@vueuse/shared/9.3.0_vue@3.2.41: - resolution: {integrity: sha512-caGUWLY0DpPC6l31KxeUy6vPVNA0yKxx81jFYLoMpyP6cF84FG5Dkf69DfSUqL57wX8JcUkJDMnQaQIZPWFEQQ==} + /@vueuse/shared/9.3.1_vue@3.2.41: + resolution: {integrity: sha512-YFu3qcnVeu0S2L4XdQJtBpDcjz6xwqHZtTv/XRhu66/yge1XVhxskUcc7VZbX52xF9A34V6KCfwncP9YDqYFiw==} dependencies: vue-demi: 0.13.11_vue@3.2.41 transitivePeerDependencies: @@ -1221,7 +1211,7 @@ packages: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 - get-intrinsic: 1.1.2 + get-intrinsic: 1.1.3 dev: true /callsites/3.1.0: @@ -1651,7 +1641,7 @@ packages: dependencies: call-bind: 1.0.2 es-get-iterator: 1.1.2 - get-intrinsic: 1.1.2 + get-intrinsic: 1.1.3 is-arguments: 1.1.1 is-date-object: 1.0.5 is-regex: 1.1.4 @@ -1800,7 +1790,7 @@ packages: call-bind: 1.0.2 es-to-primitive: 1.2.1 function-bind: 1.1.1 - get-intrinsic: 1.1.2 + get-intrinsic: 1.1.3 get-symbol-description: 1.0.0 has: 1.0.3 has-symbols: 1.0.3 @@ -1819,35 +1809,6 @@ packages: unbox-primitive: 1.0.2 dev: true - /es-abstract/1.20.2: - resolution: {integrity: sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - es-to-primitive: 1.2.1 - function-bind: 1.1.1 - function.prototype.name: 1.1.5 - get-intrinsic: 1.1.3 - get-symbol-description: 1.0.0 - has: 1.0.3 - has-property-descriptors: 1.0.0 - has-symbols: 1.0.3 - internal-slot: 1.0.3 - is-callable: 1.2.6 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-weakref: 1.0.2 - object-inspect: 1.12.2 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.4.3 - string.prototype.trimend: 1.0.5 - string.prototype.trimstart: 1.0.5 - unbox-primitive: 1.0.2 - dev: true - /es-abstract/1.20.4: resolution: {integrity: sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==} engines: {node: '>= 0.4'} @@ -1886,7 +1847,7 @@ packages: resolution: {integrity: sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.2 + get-intrinsic: 1.1.3 has-symbols: 1.0.3 is-arguments: 1.1.1 is-map: 2.0.2 @@ -2341,7 +2302,7 @@ packages: /for-each/0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: - is-callable: 1.2.4 + is-callable: 1.2.7 dev: true /foreground-child/2.0.0: @@ -2412,7 +2373,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.2 + es-abstract: 1.20.4 functions-have-names: 1.2.3 dev: true @@ -2434,14 +2395,6 @@ packages: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} dev: true - /get-intrinsic/1.1.2: - resolution: {integrity: sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==} - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-symbols: 1.0.3 - dev: true - /get-intrinsic/1.1.3: resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} dependencies: @@ -2460,7 +2413,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.2 + get-intrinsic: 1.1.3 dev: true /get-uri/3.0.2: @@ -2781,7 +2734,7 @@ packages: resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.1.2 + get-intrinsic: 1.1.3 has: 1.0.3 side-channel: 1.0.4 dev: true @@ -2846,11 +2799,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-callable/1.2.6: - resolution: {integrity: sha512-krO72EO2NptOGAX2KYyqbP9vYMlNAXdB53rq6f8LXY6RY7JdSR/3BD6wLUlPHSAesmY9vstNrjvqGaCiRK/91Q==} - engines: {node: '>= 0.4'} - dev: true - /is-callable/1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -3021,7 +2969,7 @@ packages: dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.2 - es-abstract: 1.20.2 + es-abstract: 1.20.4 for-each: 0.3.3 has-tostringtag: 1.0.0 dev: true @@ -3049,7 +2997,7 @@ packages: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.2 + get-intrinsic: 1.1.3 dev: true /is-whitespace/0.3.0: @@ -3070,7 +3018,7 @@ packages: dev: true /isarray/0.0.1: - resolution: {integrity: sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=} + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} dev: true /isarray/2.0.5: @@ -4365,7 +4313,7 @@ packages: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.2 + get-intrinsic: 1.1.3 object-inspect: 1.12.2 dev: true @@ -4511,7 +4459,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.2 + es-abstract: 1.20.4 dev: true /string.prototype.trimstart/1.0.5: @@ -4519,7 +4467,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.2 + es-abstract: 1.20.4 dev: true /string_decoder/0.10.31: @@ -4798,7 +4746,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /unplugin-auto-import/0.11.2_xprgaq42dappzfhggpxgvdf43y: + /unplugin-auto-import/0.11.2_zqi2xhr3ahaiw6pxzygjgkwf7q: resolution: {integrity: sha512-1+VwBfn9dtiYv9SQLKP1AvZolUbK9xTVeAT+iOcEk4EHSFUlmIqBVLEKI76cifSQTLOJ3rZyPrEgptf3SZNLlQ==} engines: {node: '>=14'} peerDependencies: @@ -4809,7 +4757,7 @@ packages: dependencies: '@antfu/utils': 0.5.2 '@rollup/pluginutils': 4.2.1 - '@vueuse/core': 9.3.0_vue@3.2.41 + '@vueuse/core': 9.3.1_vue@3.2.41 local-pkg: 0.4.2 magic-string: 0.26.2 unimport: 0.6.7_vite@3.1.8 @@ -4821,8 +4769,8 @@ packages: - webpack dev: true - /unplugin-icons/0.14.11_@vue+compiler-sfc@3.2.41: - resolution: {integrity: sha512-szr6QA1ILT4RrJCmtvW41m2KPwUCCIx8QNgwEmTehvzEkSLDrdEaBhKGMWb/qTe5/zwnfwrDGcFT/6pGOSHJcA==} + /unplugin-icons/0.14.12_@vue+compiler-sfc@3.2.41: + resolution: {integrity: sha512-FdkjDnUnc8/75OT8Ywwm8iDyG6kO8w1uHfFbnO2Jh7JhpE0odKhCqaAOmEE/UlvYDYSm5D4X1DKdWMwpAxj07Q==} peerDependencies: '@svgr/core': '>=5.5.0' '@vue/compiler-sfc': ^3.0.2 @@ -4964,8 +4912,8 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-plugin-pages/0.26.0_y7chuddh2i4swuczuywc2tye34: - resolution: {integrity: sha512-yJZvwHEt7puYIf19S89IvkDsWPjWleSied4H8hmdW6i8buCA93z1UAU1ipW1d8fNKrC4FzXsUHHbPm6+kl1p9w==} + /vite-plugin-pages/0.27.0_y7chuddh2i4swuczuywc2tye34: + resolution: {integrity: sha512-fLuBd8U9jcfB+MXj9yEsq6AHa0AHCP4Fhi7LCcCWJeL28Lx3o5B0uoBUhCZ+xwsnNs4GZwPOfgBG3yHKMsMNnA==} peerDependencies: '@vue/compiler-sfc': ^2.7.0 || ^3.0.0 vite: ^2.0.0 || ^3.0.0-0 @@ -4978,12 +4926,12 @@ packages: debug: 4.3.4 deep-equal: 2.0.5 extract-comments: 1.1.0 - fast-glob: 3.2.11 + fast-glob: 3.2.12 json5: 2.2.1 local-pkg: 0.4.2 picocolors: 1.0.0 vite: 3.1.8_sass@1.55.0 - yaml: 2.1.1 + yaml: 2.1.3 transitivePeerDependencies: - supports-color dev: true @@ -5133,21 +5081,21 @@ packages: '@vue/devtools-api': 6.2.1 vue: 3.2.41 - /vue-template-compiler/2.7.12: - resolution: {integrity: sha512-6rhJAuo2vRzJMs8X/pd9yqtsJmnPEnv4E0cb9KCu0sfGhoDt8roCCa/6qbrvpc1b38zYgdmY/xrk4qfNWZIjwA==} + /vue-template-compiler/2.7.13: + resolution: {integrity: sha512-jYM6TClwDS9YqP48gYrtAtaOhRKkbYmbzE+Q51gX5YDr777n7tNI/IZk4QV4l/PjQPNh/FVa/E92sh/RqKMrog==} dependencies: de-indent: 1.0.2 he: 1.2.0 dev: true - /vue-tsc/1.0.7_typescript@4.8.4: - resolution: {integrity: sha512-PaeWgISdXsPnV3a1NKfiAZb0iyvgLroxKzjPj1itoR5ZH0UOeVZBbDxpH7VPxAt6tCxiAoAIIisDs1QQrsSu3w==} + /vue-tsc/1.0.8_typescript@4.8.4: + resolution: {integrity: sha512-+0sJ+QVH7SHLt8mV/uIw4xlHDk1mWigZkMFugfZTv8rlHpM3S2tCVZ0BWEGclT/0rKdO8j+St+mljpvhWPN/eQ==} hasBin: true peerDependencies: typescript: '*' dependencies: - '@volar/vue-language-core': 1.0.7 - '@volar/vue-typescript': 1.0.7 + '@volar/vue-language-core': 1.0.8 + '@volar/vue-typescript': 1.0.8 typescript: 4.8.4 dev: true @@ -5252,7 +5200,7 @@ packages: dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.2 - es-abstract: 1.20.2 + es-abstract: 1.20.4 for-each: 0.3.3 has-tostringtag: 1.0.0 is-typed-array: 1.1.9 @@ -5401,6 +5349,11 @@ packages: engines: {node: '>= 14'} dev: true + /yaml/2.1.3: + resolution: {integrity: sha512-AacA8nRULjKMX2DvWvOAdBZMOfQlypSFkjcOcu9FalllIDJ1kvlREzcdIZmidQUqqeMv7jorHjq2HlLv/+c2lg==} + engines: {node: '>= 14'} + dev: true + /yargs-parser/20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'}