chore(lite): bundling, dynamic import, optimizations (#6910)
Added dynamic imports for views and components. Extracted to their own bundle: - Vue related libs (vue, vue-router, pinia etc.) - Lodash - Charts Removed `vite-plugin-pages` package. Optimize highlight/markdown loading.
This commit is contained in:
parent
c705051a89
commit
5e23e356ce
@ -57,7 +57,6 @@
|
||||
"postcss-nested": "^6.0.0",
|
||||
"typescript": "^4.9.3",
|
||||
"vite": "^4.3.8",
|
||||
"vite-plugin-pages": "^0.29.1",
|
||||
"vue-tsc": "^1.6.5"
|
||||
},
|
||||
"private": true,
|
||||
|
@ -5,7 +5,6 @@
|
||||
<script lang="ts" setup>
|
||||
import markdown from "@/libs/markdown";
|
||||
import { useEventListener } from "@vueuse/core";
|
||||
import "highlight.js/styles/github-dark.css";
|
||||
import { computed, type Ref, ref } from "vue";
|
||||
|
||||
const rootElement = ref() as Ref<HTMLElement>;
|
||||
|
@ -3,14 +3,13 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import HLJS from "highlight.js";
|
||||
import { type AcceptedLanguage, highlight } from "@/libs/highlight";
|
||||
import { computed } from "vue";
|
||||
import "highlight.js/styles/github-dark.css";
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
code?: any;
|
||||
lang?: string;
|
||||
lang?: AcceptedLanguage;
|
||||
}>(),
|
||||
{ lang: "typescript" }
|
||||
);
|
||||
@ -27,7 +26,7 @@ const codeAsText = computed(() => {
|
||||
});
|
||||
|
||||
const codeAsHtml = computed(
|
||||
() => HLJS.highlight(codeAsText.value, { language: props.lang }).value
|
||||
() => highlight(codeAsText.value, { language: props.lang }).value
|
||||
);
|
||||
</script>
|
||||
|
||||
|
@ -31,7 +31,7 @@ import { faServer } from "@fortawesome/free-solid-svg-icons";
|
||||
import UiModal from "@/components/ui/UiModal.vue";
|
||||
import UiButton from "@/components/ui/UiButton.vue";
|
||||
import { computed, ref, watch } from "vue";
|
||||
import { difference } from "lodash";
|
||||
import { difference } from "lodash-es";
|
||||
import { useHostStore } from "@/stores/host.store";
|
||||
|
||||
const { records: hosts } = useHostStore().subscribe();
|
||||
|
@ -1,63 +0,0 @@
|
||||
<template>
|
||||
<div class="chart-summary">
|
||||
<div>
|
||||
<div class="label">{{ $t("total-used") }}</div>
|
||||
<div>
|
||||
{{ usedPercent }}%
|
||||
<br />
|
||||
{{ valueFormatter(used) }}
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="label">{{ $t("total-free") }}</div>
|
||||
<div>
|
||||
{{ freePercent }}%
|
||||
<br />
|
||||
{{ valueFormatter(total - used) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { percent } from "@/libs/utils";
|
||||
import { IK_CHART_VALUE_FORMATTER } from "@/types/injection-keys";
|
||||
import { computed, inject } from "vue";
|
||||
|
||||
const props = defineProps<{
|
||||
total: number;
|
||||
used: number;
|
||||
}>();
|
||||
|
||||
const usedPercent = computed(() => percent(props.used, props.total));
|
||||
|
||||
const freePercent = computed(() =>
|
||||
percent(props.total - props.used, props.total)
|
||||
);
|
||||
|
||||
const valueFormatter = inject(
|
||||
IK_CHART_VALUE_FORMATTER,
|
||||
computed(() => (value) => value.toString())
|
||||
);
|
||||
</script>
|
||||
|
||||
<style lang="postcss" scoped>
|
||||
.chart-summary {
|
||||
font-size: 1.4rem;
|
||||
font-weight: 700;
|
||||
display: flex;
|
||||
margin-top: 2rem;
|
||||
color: var(--color-blue-scale-200);
|
||||
gap: 4rem;
|
||||
|
||||
& > div {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
|
||||
.label {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
</style>
|
@ -273,13 +273,9 @@ const documentation = ref();
|
||||
|
||||
const route = useRoute();
|
||||
|
||||
const mdPaths = import.meta.glob("../../stories/*.md", { as: "raw" });
|
||||
|
||||
if (route.meta.storyMdPath !== undefined && route.meta.storyMdPath in mdPaths) {
|
||||
mdPaths[route.meta.storyMdPath]().then((md) => {
|
||||
route.meta.storyMdLoader?.().then((md) => {
|
||||
documentation.value = md;
|
||||
});
|
||||
}
|
||||
|
||||
const applyPreset = (preset: {
|
||||
props?: Record<string, any>;
|
||||
|
@ -12,15 +12,18 @@
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { IK_HOST_LAST_WEEK_STATS } from "@/types/injection-keys";
|
||||
import { computed, inject } from "vue";
|
||||
import { computed, defineAsyncComponent, inject } from "vue";
|
||||
import { map } from "lodash-es";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import LinearChart from "@/components/charts/LinearChart.vue";
|
||||
import { formatSize } from "@/libs/utils";
|
||||
import type { HostStats } from "@/libs/xapi-stats";
|
||||
import type { LinearChartData } from "@/types/chart";
|
||||
import { RRD_STEP_FROM_STRING } from "@/libs/xapi-stats";
|
||||
|
||||
const LinearChart = defineAsyncComponent(
|
||||
() => import("@/components/charts/LinearChart.vue")
|
||||
);
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const hostLastWeekStats = inject(IK_HOST_LAST_WEEK_STATS);
|
||||
|
@ -11,16 +11,19 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import LinearChart from "@/components/charts/LinearChart.vue";
|
||||
import type { HostStats } from "@/libs/xapi-stats";
|
||||
import { RRD_STEP_FROM_STRING } from "@/libs/xapi-stats";
|
||||
import { useHostStore } from "@/stores/host.store";
|
||||
import type { LinearChartData, ValueFormatter } from "@/types/chart";
|
||||
import { IK_HOST_LAST_WEEK_STATS } from "@/types/injection-keys";
|
||||
import { sumBy } from "lodash-es";
|
||||
import { computed, inject } from "vue";
|
||||
import { computed, defineAsyncComponent, inject } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
|
||||
const LinearChart = defineAsyncComponent(
|
||||
() => import("@/components/charts/LinearChart.vue")
|
||||
);
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const hostLastWeekStats = inject(IK_HOST_LAST_WEEK_STATS);
|
||||
|
@ -15,7 +15,6 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import LinearChart from "@/components/charts/LinearChart.vue";
|
||||
import SizeStatsSummary from "@/components/ui/SizeStatsSummary.vue";
|
||||
import { formatSize, getHostMemory } from "@/libs/utils";
|
||||
import { RRD_STEP_FROM_STRING } from "@/libs/xapi-stats";
|
||||
@ -24,9 +23,13 @@ import { useHostStore } from "@/stores/host.store";
|
||||
import type { LinearChartData, ValueFormatter } from "@/types/chart";
|
||||
import { IK_HOST_LAST_WEEK_STATS } from "@/types/injection-keys";
|
||||
import { sumBy } from "lodash-es";
|
||||
import { computed, inject } from "vue";
|
||||
import { computed, defineAsyncComponent, inject } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
|
||||
const LinearChart = defineAsyncComponent(
|
||||
() => import("@/components/charts/LinearChart.vue")
|
||||
);
|
||||
|
||||
const hostMetricsSubscription = useHostMetricsStore().subscribe();
|
||||
|
||||
const hostStore = useHostStore();
|
||||
|
31
@xen-orchestra/lite/src/libs/highlight.ts
Normal file
31
@xen-orchestra/lite/src/libs/highlight.ts
Normal file
@ -0,0 +1,31 @@
|
||||
import type { HighlightResult, Language } from "highlight.js";
|
||||
import HLJS from "highlight.js/lib/core";
|
||||
import cssLang from "highlight.js/lib/languages/css";
|
||||
import jsonLang from "highlight.js/lib/languages/json";
|
||||
import textLang from "highlight.js/lib/languages/plaintext";
|
||||
import tsLang from "highlight.js/lib/languages/typescript";
|
||||
import xmlLang from "highlight.js/lib/languages/xml";
|
||||
import "highlight.js/styles/github-dark.css";
|
||||
|
||||
HLJS.registerLanguage("xml", xmlLang);
|
||||
HLJS.registerLanguage("css", cssLang);
|
||||
HLJS.registerLanguage("typescript", tsLang);
|
||||
HLJS.registerLanguage("json", jsonLang);
|
||||
HLJS.registerLanguage("plaintext", textLang);
|
||||
|
||||
export const highlight: (
|
||||
code: string,
|
||||
options: { language: AcceptedLanguage },
|
||||
ignoreIllegals?: boolean
|
||||
) => HighlightResult = HLJS.highlight;
|
||||
|
||||
export const getLanguage: (
|
||||
languageName: AcceptedLanguage
|
||||
) => Language | undefined = HLJS.getLanguage;
|
||||
|
||||
export type AcceptedLanguage =
|
||||
| "xml"
|
||||
| "css"
|
||||
| "typescript"
|
||||
| "json"
|
||||
| "plaintext";
|
@ -1,4 +1,8 @@
|
||||
import HLJS from "highlight.js";
|
||||
import {
|
||||
type AcceptedLanguage,
|
||||
getLanguage,
|
||||
highlight,
|
||||
} from "@/libs/highlight";
|
||||
import { marked } from "marked";
|
||||
|
||||
enum VUE_TAG {
|
||||
@ -9,11 +13,10 @@ enum VUE_TAG {
|
||||
|
||||
marked.use({
|
||||
renderer: {
|
||||
code(str: string, lang: string) {
|
||||
const code = highlight(
|
||||
code(str: string, lang: AcceptedLanguage) {
|
||||
const code = customHighlight(
|
||||
str,
|
||||
Object.values(VUE_TAG).includes(lang as VUE_TAG) ||
|
||||
HLJS.getLanguage(lang)
|
||||
Object.values(VUE_TAG).includes(lang as VUE_TAG) || getLanguage(lang)
|
||||
? lang
|
||||
: "plaintext"
|
||||
);
|
||||
@ -22,7 +25,7 @@ marked.use({
|
||||
},
|
||||
});
|
||||
|
||||
function highlight(str: string, lang: string) {
|
||||
function customHighlight(str: string, lang: AcceptedLanguage | VUE_TAG) {
|
||||
switch (lang) {
|
||||
case VUE_TAG.TEMPLATE: {
|
||||
const indented = str
|
||||
@ -36,7 +39,7 @@ function highlight(str: string, lang: string) {
|
||||
case VUE_TAG.STYLE:
|
||||
return wrap(str.trim(), lang);
|
||||
default: {
|
||||
return copyable(HLJS.highlight(str, { language: lang }).value);
|
||||
return copyable(highlight(str, { language: lang }).value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -50,22 +53,22 @@ function wrap(str: string, lang: VUE_TAG) {
|
||||
case VUE_TAG.TEMPLATE:
|
||||
openTag = "<template>";
|
||||
closeTag = "</template>";
|
||||
code = HLJS.highlight(str, { language: "xml" }).value;
|
||||
code = highlight(str, { language: "xml" }).value;
|
||||
break;
|
||||
case VUE_TAG.SCRIPT:
|
||||
openTag = '<script lang="ts" setup>';
|
||||
closeTag = "</script>";
|
||||
code = HLJS.highlight(str, { language: "typescript" }).value;
|
||||
code = highlight(str, { language: "typescript" }).value;
|
||||
break;
|
||||
case VUE_TAG.STYLE:
|
||||
openTag = '<style lang="postcss" scoped>';
|
||||
closeTag = "</style>";
|
||||
code = HLJS.highlight(str, { language: "scss" }).value;
|
||||
code = highlight(str, { language: "css" }).value;
|
||||
break;
|
||||
}
|
||||
|
||||
const openTagHtml = HLJS.highlight(openTag, { language: "xml" }).value;
|
||||
const closeTagHtml = HLJS.highlight(closeTag, { language: "xml" }).value;
|
||||
const openTagHtml = highlight(openTag, { language: "xml" }).value;
|
||||
const closeTagHtml = highlight(closeTag, { language: "xml" }).value;
|
||||
|
||||
return `${openTagHtml}${copyable(code)}${closeTagHtml}`;
|
||||
}
|
||||
|
@ -1,24 +1,12 @@
|
||||
import pool from "@/router/pool";
|
||||
import story from "@/router/story";
|
||||
import vm from "@/router/vm";
|
||||
import HomeView from "@/views/HomeView.vue";
|
||||
import HostDashboardView from "@/views/host/HostDashboardView.vue";
|
||||
import HostRootView from "@/views/host/HostRootView.vue";
|
||||
import PageNotFoundView from "@/views/PageNotFoundView.vue";
|
||||
import SettingsView from "@/views/settings/SettingsView.vue";
|
||||
import StoryView from "@/views/StoryView.vue";
|
||||
import storiesRoutes from "virtual:stories";
|
||||
import { createRouter, createWebHashHistory } from "vue-router";
|
||||
|
||||
const router = createRouter({
|
||||
history: createWebHashHistory(),
|
||||
routes: [
|
||||
{
|
||||
path: "/story",
|
||||
name: "story",
|
||||
component: StoryView,
|
||||
children: storiesRoutes,
|
||||
meta: { hasStoryNav: true },
|
||||
},
|
||||
{
|
||||
path: "/",
|
||||
name: "home",
|
||||
@ -27,35 +15,28 @@ const router = createRouter({
|
||||
{
|
||||
path: "/settings",
|
||||
name: "settings",
|
||||
component: SettingsView,
|
||||
component: () => import("@/views/settings/SettingsView.vue"),
|
||||
},
|
||||
story,
|
||||
pool,
|
||||
vm,
|
||||
{
|
||||
path: "/host/:uuid",
|
||||
component: HostRootView,
|
||||
component: () => import("@/views/host/HostRootView.vue"),
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
name: "host.dashboard",
|
||||
component: HostDashboardView,
|
||||
component: () => import("@/views/host/HostDashboardView.vue"),
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/:pathMatch(.*)*",
|
||||
name: "notFound",
|
||||
component: PageNotFoundView,
|
||||
component: () => import("@/views/PageNotFoundView.vue"),
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
if (import.meta.env.DEV) {
|
||||
router.addRoute("story", {
|
||||
path: "",
|
||||
name: "story-home",
|
||||
component: () => import("@/views/story/HomeView.vue"),
|
||||
});
|
||||
}
|
||||
|
||||
export default router;
|
||||
|
@ -1,13 +1,5 @@
|
||||
import PoolAlarmsView from "@/views/pool/PoolAlarmsView.vue";
|
||||
import PoolDashboardView from "@/views/pool/PoolDashboardView.vue";
|
||||
import PoolHostsView from "@/views/pool/PoolHostsView.vue";
|
||||
import PoolNetworkView from "@/views/pool/PoolNetworkView.vue";
|
||||
import PoolRootView from "@/views/pool/PoolRootView.vue";
|
||||
import PoolStatsView from "@/views/pool/PoolStatsView.vue";
|
||||
import PoolStorageView from "@/views/pool/PoolStorageView.vue";
|
||||
import PoolSystemView from "@/views/pool/PoolSystemView.vue";
|
||||
import PoolTasksView from "@/views/pool/PoolTasksView.vue";
|
||||
import PoolVmsView from "@/views/pool/PoolVmsView.vue";
|
||||
|
||||
export default {
|
||||
path: "/pool/:uuid",
|
||||
@ -22,42 +14,42 @@ export default {
|
||||
{
|
||||
path: "alarms",
|
||||
name: "pool.alarms",
|
||||
component: PoolAlarmsView,
|
||||
component: () => import("@/views/pool/PoolAlarmsView.vue"),
|
||||
},
|
||||
{
|
||||
path: "stats",
|
||||
name: "pool.stats",
|
||||
component: PoolStatsView,
|
||||
component: () => import("@/views/pool/PoolStatsView.vue"),
|
||||
},
|
||||
{
|
||||
path: "system",
|
||||
name: "pool.system",
|
||||
component: PoolSystemView,
|
||||
component: () => import("@/views/pool/PoolSystemView.vue"),
|
||||
},
|
||||
{
|
||||
path: "network",
|
||||
name: "pool.network",
|
||||
component: PoolNetworkView,
|
||||
component: () => import("@/views/pool/PoolNetworkView.vue"),
|
||||
},
|
||||
{
|
||||
path: "storage",
|
||||
name: "pool.storage",
|
||||
component: PoolStorageView,
|
||||
component: () => import("@/views/pool/PoolStorageView.vue"),
|
||||
},
|
||||
{
|
||||
path: "tasks",
|
||||
name: "pool.tasks",
|
||||
component: PoolTasksView,
|
||||
component: () => import("@/views/pool/PoolTasksView.vue"),
|
||||
},
|
||||
{
|
||||
path: "hosts",
|
||||
name: "pool.hosts",
|
||||
component: PoolHostsView,
|
||||
component: () => import("@/views/pool/PoolHostsView.vue"),
|
||||
},
|
||||
{
|
||||
path: "vms",
|
||||
name: "pool.vms",
|
||||
component: PoolVmsView,
|
||||
component: () => import("@/views/pool/PoolVmsView.vue"),
|
||||
},
|
||||
],
|
||||
};
|
||||
|
54
@xen-orchestra/lite/src/router/story.ts
Normal file
54
@xen-orchestra/lite/src/router/story.ts
Normal file
@ -0,0 +1,54 @@
|
||||
import type { RouteRecordRaw } from "vue-router";
|
||||
|
||||
const componentLoaders = import.meta.glob("@/stories/*.story.vue");
|
||||
const docLoaders = import.meta.glob("@/stories/*.story.md", { as: "raw" });
|
||||
|
||||
const children: RouteRecordRaw[] = Object.entries(componentLoaders).map(
|
||||
([path, componentLoader]) => {
|
||||
const basename = path.replace(/^\/src\/stories\/(.*)\.story.vue$/, "$1");
|
||||
const docPath = path.replace(/\.vue$/, ".md");
|
||||
const routeName = `story-${basename}`;
|
||||
|
||||
return {
|
||||
name: routeName,
|
||||
path: basename,
|
||||
component: componentLoader,
|
||||
meta: {
|
||||
isStory: true,
|
||||
storyTitle: basenameToStoryTitle(basename),
|
||||
storyMdLoader: docLoaders[docPath],
|
||||
},
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
if (import.meta.env.DEV) {
|
||||
children.push({
|
||||
path: "",
|
||||
name: "story-home",
|
||||
component: () => import("@/views/story/HomeView.vue"),
|
||||
});
|
||||
}
|
||||
|
||||
export default {
|
||||
path: "/story",
|
||||
name: "story",
|
||||
component: () => import("@/views/StoryView.vue"),
|
||||
children,
|
||||
meta: { hasStoryNav: true },
|
||||
};
|
||||
|
||||
/**
|
||||
* Transform the route basename to a page title.
|
||||
*
|
||||
* Example:
|
||||
* Filename: `my-component.story.vue`
|
||||
* Basename: `my-component`
|
||||
* Page title: `My Component`
|
||||
*/
|
||||
function basenameToStoryTitle(basename: string) {
|
||||
return basename
|
||||
.split("-")
|
||||
.map((s) => `${s.charAt(0).toUpperCase()}${s.substring(1)}`)
|
||||
.join(" ");
|
||||
}
|
2
@xen-orchestra/lite/src/types/router.d.ts
vendored
2
@xen-orchestra/lite/src/types/router.d.ts
vendored
@ -3,7 +3,7 @@ declare module "vue-router" {
|
||||
hasStoryNav?: boolean;
|
||||
isStory?: boolean;
|
||||
storyTitle?: string;
|
||||
storyMdPath?: string;
|
||||
storyMdLoader?: () => Promise<string>;
|
||||
}
|
||||
}
|
||||
export {};
|
||||
|
@ -1,9 +1,8 @@
|
||||
import vueI18n from "@intlify/unplugin-vue-i18n/vite";
|
||||
import vue from "@vitejs/plugin-vue";
|
||||
import { basename, resolve } from "path";
|
||||
import { resolve } from "path";
|
||||
import { fileURLToPath, URL } from "url";
|
||||
import { defineConfig } from "vite";
|
||||
import pages from "vite-plugin-pages";
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig({
|
||||
@ -16,23 +15,6 @@ export default defineConfig({
|
||||
vueI18n({
|
||||
include: resolve(__dirname, "src/locales/**"),
|
||||
}),
|
||||
pages({
|
||||
moduleId: "virtual:stories",
|
||||
dirs: [{ dir: "src/stories", baseRoute: "story" }],
|
||||
extensions: ["story.vue"],
|
||||
extendRoute: (route) => {
|
||||
const storyBaseName = basename(route.component as string, ".vue");
|
||||
return {
|
||||
...route,
|
||||
path: route.path.replace(".story", ""),
|
||||
meta: {
|
||||
isStory: true,
|
||||
storyTitle: routeNameToStoryTitle(route.name),
|
||||
storyMdPath: `../../stories/${storyBaseName}.md`,
|
||||
},
|
||||
};
|
||||
},
|
||||
}),
|
||||
],
|
||||
define: {
|
||||
XO_LITE_VERSION: JSON.stringify(process.env.npm_package_version),
|
||||
@ -46,6 +28,25 @@ export default defineConfig({
|
||||
|
||||
// https://vitejs.dev/guide/dep-pre-bundling.html#monorepos-and-linked-dependencies
|
||||
build: {
|
||||
rollupOptions: {
|
||||
output: {
|
||||
manualChunks: (id) => {
|
||||
if (id.includes("node_modules")) {
|
||||
if (id.includes("vue") || id.includes("pinia")) {
|
||||
return "vue";
|
||||
}
|
||||
|
||||
if (id.includes("lodash-es")) {
|
||||
return "lodash-es";
|
||||
}
|
||||
|
||||
if (id.includes("echarts")) {
|
||||
return "charts";
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
commonjsOptions: {
|
||||
include: [/complex-matcher/, /node_modules/],
|
||||
},
|
||||
@ -58,19 +59,3 @@ export default defineConfig({
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
/**
|
||||
* Transform the route name generated by Vite Plugin Pages to a page title.
|
||||
*
|
||||
* Example:
|
||||
* Filename: `my-component.story.vue`
|
||||
* Route name: `story-my-component.story`
|
||||
* Page title: `My Component`
|
||||
*/
|
||||
function routeNameToStoryTitle(routeName: string) {
|
||||
return routeName
|
||||
.replace(/^story-(.*)\.story$/, "$1")
|
||||
.split("-")
|
||||
.map((s) => `${s.charAt(0).toUpperCase()}${s.substring(1)}`)
|
||||
.join(" ");
|
||||
}
|
||||
|
139
yarn.lock
139
yarn.lock
@ -3262,13 +3262,6 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/d3-time-format/-/d3-time-format-4.0.0.tgz#ee7b6e798f8deb2d9640675f8811d0253aaa1946"
|
||||
integrity sha512-yjfBUe6DJBsDin2BMIulhSHmr5qNR5Pxs17+oW4DoVPyVIXZ+m6bs7j1UVKP08Emv6jRmYrYqxYzO63mQxy1rw==
|
||||
|
||||
"@types/debug@^4.1.7":
|
||||
version "4.1.8"
|
||||
resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.8.tgz#cef723a5d0a90990313faec2d1e22aee5eecb317"
|
||||
integrity sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==
|
||||
dependencies:
|
||||
"@types/ms" "*"
|
||||
|
||||
"@types/estree@^1.0.0":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194"
|
||||
@ -3407,11 +3400,6 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c"
|
||||
integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==
|
||||
|
||||
"@types/ms@*":
|
||||
version "0.7.31"
|
||||
resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197"
|
||||
integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==
|
||||
|
||||
"@types/node@*", "@types/node@>=14", "@types/node@^20.2.3":
|
||||
version "20.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.3.1.tgz#e8a83f1aa8b649377bb1fb5d7bac5cb90e784dfe"
|
||||
@ -7859,30 +7847,6 @@ deep-equal@^1.0.1:
|
||||
object-keys "^1.1.1"
|
||||
regexp.prototype.flags "^1.2.0"
|
||||
|
||||
deep-equal@^2.2.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.1.tgz#c72ab22f3a7d3503a4ca87dde976fe9978816739"
|
||||
integrity sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==
|
||||
dependencies:
|
||||
array-buffer-byte-length "^1.0.0"
|
||||
call-bind "^1.0.2"
|
||||
es-get-iterator "^1.1.3"
|
||||
get-intrinsic "^1.2.0"
|
||||
is-arguments "^1.1.1"
|
||||
is-array-buffer "^3.0.2"
|
||||
is-date-object "^1.0.5"
|
||||
is-regex "^1.1.4"
|
||||
is-shared-array-buffer "^1.0.2"
|
||||
isarray "^2.0.5"
|
||||
object-is "^1.1.5"
|
||||
object-keys "^1.1.1"
|
||||
object.assign "^4.1.4"
|
||||
regexp.prototype.flags "^1.5.0"
|
||||
side-channel "^1.0.4"
|
||||
which-boxed-primitive "^1.0.2"
|
||||
which-collection "^1.0.1"
|
||||
which-typed-array "^1.1.9"
|
||||
|
||||
deep-equal@~1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
|
||||
@ -8698,21 +8662,6 @@ es-array-method-boxes-properly@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e"
|
||||
integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==
|
||||
|
||||
es-get-iterator@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6"
|
||||
integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==
|
||||
dependencies:
|
||||
call-bind "^1.0.2"
|
||||
get-intrinsic "^1.1.3"
|
||||
has-symbols "^1.0.3"
|
||||
is-arguments "^1.1.1"
|
||||
is-map "^2.0.2"
|
||||
is-set "^2.0.2"
|
||||
is-string "^1.0.7"
|
||||
isarray "^2.0.5"
|
||||
stop-iteration-iterator "^1.0.0"
|
||||
|
||||
es-set-tostringtag@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8"
|
||||
@ -9211,13 +9160,6 @@ espree@^9.3.1, espree@^9.5.2:
|
||||
acorn-jsx "^5.3.2"
|
||||
eslint-visitor-keys "^3.4.1"
|
||||
|
||||
esprima-extract-comments@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/esprima-extract-comments/-/esprima-extract-comments-1.1.0.tgz#0dacab567a5900240de6d344cf18c33617becbc9"
|
||||
integrity sha512-sBQUnvJwpeE9QnPrxh7dpI/dp67erYG4WXEAreAMoelPRpMR7NWb4YtwRPn9b+H1uLQKl/qS8WYmyaljTpjIsw==
|
||||
dependencies:
|
||||
esprima "^4.0.0"
|
||||
|
||||
esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
|
||||
@ -9589,14 +9531,6 @@ extglob@^2.0.4:
|
||||
snapdragon "^0.8.1"
|
||||
to-regex "^3.0.1"
|
||||
|
||||
extract-comments@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/extract-comments/-/extract-comments-1.1.0.tgz#b90bca033a056bd69b8ba1c6b6b120fc2ee95c18"
|
||||
integrity sha512-dzbZV2AdSSVW/4E7Ti5hZdHWbA+Z80RJsJhr5uiL10oyjl/gy7/o+HI1HwK4/WSZhlq4SNKU3oUzXlM13Qx02Q==
|
||||
dependencies:
|
||||
esprima-extract-comments "^1.1.0"
|
||||
parse-code-context "^1.0.0"
|
||||
|
||||
extsprintf@1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
|
||||
@ -11731,7 +11665,7 @@ internal-ip@^4.3.0:
|
||||
default-gateway "^4.2.0"
|
||||
ipaddr.js "^1.9.0"
|
||||
|
||||
internal-slot@^1.0.3, internal-slot@^1.0.4, internal-slot@^1.0.5:
|
||||
internal-slot@^1.0.3, internal-slot@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986"
|
||||
integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==
|
||||
@ -11853,7 +11787,7 @@ is-accessor-descriptor@^1.0.0:
|
||||
dependencies:
|
||||
kind-of "^6.0.0"
|
||||
|
||||
is-arguments@^1.0.4, is-arguments@^1.1.1:
|
||||
is-arguments@^1.0.4:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b"
|
||||
integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
|
||||
@ -11964,7 +11898,7 @@ is-data-descriptor@^1.0.0:
|
||||
dependencies:
|
||||
kind-of "^6.0.0"
|
||||
|
||||
is-date-object@^1.0.1, is-date-object@^1.0.5:
|
||||
is-date-object@^1.0.1:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
|
||||
integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
|
||||
@ -12119,11 +12053,6 @@ is-ip@^3.1.0:
|
||||
dependencies:
|
||||
ip-regex "^4.0.0"
|
||||
|
||||
is-map@^2.0.1, is-map@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127"
|
||||
integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==
|
||||
|
||||
is-negated-glob@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2"
|
||||
@ -12256,11 +12185,6 @@ is-resolvable@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
|
||||
integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
|
||||
|
||||
is-set@^2.0.1, is-set@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec"
|
||||
integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==
|
||||
|
||||
is-shared-array-buffer@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79"
|
||||
@ -12347,11 +12271,6 @@ is-valid-glob@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa"
|
||||
integrity sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==
|
||||
|
||||
is-weakmap@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2"
|
||||
integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==
|
||||
|
||||
is-weakref@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
|
||||
@ -12359,14 +12278,6 @@ is-weakref@^1.0.2:
|
||||
dependencies:
|
||||
call-bind "^1.0.2"
|
||||
|
||||
is-weakset@^2.0.1:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d"
|
||||
integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==
|
||||
dependencies:
|
||||
call-bind "^1.0.2"
|
||||
get-intrinsic "^1.1.1"
|
||||
|
||||
is-windows@^1.0.1, is-windows@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
|
||||
@ -13623,11 +13534,6 @@ loader-utils@^2.0.0:
|
||||
emojis-list "^3.0.0"
|
||||
json5 "^2.1.2"
|
||||
|
||||
local-pkg@^0.4.3:
|
||||
version "0.4.3"
|
||||
resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.4.3.tgz#0ff361ab3ae7f1c19113d9bb97b98b905dbc4963"
|
||||
integrity sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==
|
||||
|
||||
locate-path@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
|
||||
@ -15671,11 +15577,6 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5:
|
||||
pbkdf2 "^3.0.3"
|
||||
safe-buffer "^5.1.1"
|
||||
|
||||
parse-code-context@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/parse-code-context/-/parse-code-context-1.0.0.tgz#718c295c593d0d19a37f898473268cc75e98de1e"
|
||||
integrity sha512-OZQaqKaQnR21iqhlnPfVisFjBWjhnMl5J9MgbP8xC+EwoVqbXrq78lp+9Zb3ahmLzrIX5Us/qbvBnaS3hkH6OA==
|
||||
|
||||
parse-filepath@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891"
|
||||
@ -17769,7 +17670,7 @@ regex-not@^1.0.0, regex-not@^1.0.2:
|
||||
extend-shallow "^3.0.2"
|
||||
safe-regex "^1.1.0"
|
||||
|
||||
regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.3, regexp.prototype.flags@^1.5.0:
|
||||
regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.3:
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb"
|
||||
integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==
|
||||
@ -18944,13 +18845,6 @@ std-env@^2.2.1:
|
||||
dependencies:
|
||||
ci-info "^3.1.1"
|
||||
|
||||
stop-iteration-iterator@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4"
|
||||
integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==
|
||||
dependencies:
|
||||
internal-slot "^1.0.4"
|
||||
|
||||
stoppable@^1.0.5, stoppable@^1.0.6:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b"
|
||||
@ -20674,21 +20568,6 @@ vinyl@^2.0.0, vinyl@^2.1.0:
|
||||
remove-trailing-separator "^1.0.1"
|
||||
replace-ext "^1.0.0"
|
||||
|
||||
vite-plugin-pages@^0.29.1:
|
||||
version "0.29.1"
|
||||
resolved "https://registry.yarnpkg.com/vite-plugin-pages/-/vite-plugin-pages-0.29.1.tgz#dc1eeff6975ec3a791f18637b90ffa02068fce5e"
|
||||
integrity sha512-zPf4YIBuv2nOwvtEFeS+Ac4O7Ngoz5x9P0zaj0xPfCObTGEIvo/30//D2FG24UB6YedrFOaJjLq/BS/M/JDKEA==
|
||||
dependencies:
|
||||
"@types/debug" "^4.1.7"
|
||||
debug "^4.3.4"
|
||||
deep-equal "^2.2.1"
|
||||
extract-comments "^1.1.0"
|
||||
fast-glob "^3.2.12"
|
||||
json5 "^2.2.3"
|
||||
local-pkg "^0.4.3"
|
||||
picocolors "^1.0.0"
|
||||
yaml "^2.2.2"
|
||||
|
||||
vite@^4.3.8:
|
||||
version "4.3.9"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-4.3.9.tgz#db896200c0b1aa13b37cdc35c9e99ee2fdd5f96d"
|
||||
@ -21174,16 +21053,6 @@ which-boxed-primitive@^1.0.2:
|
||||
is-string "^1.0.5"
|
||||
is-symbol "^1.0.3"
|
||||
|
||||
which-collection@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906"
|
||||
integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==
|
||||
dependencies:
|
||||
is-map "^2.0.1"
|
||||
is-set "^2.0.1"
|
||||
is-weakmap "^2.0.1"
|
||||
is-weakset "^2.0.1"
|
||||
|
||||
which-module@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
|
||||
|
Loading…
Reference in New Issue
Block a user