feat: integrate vue-devtools valaxy devtools, and e2e for statistics

This commit is contained in:
YunYouJun 2024-01-14 22:33:14 +08:00
parent 9a00a55dc8
commit 9e29b6fcf8
13 changed files with 188 additions and 77 deletions

View File

@ -17,4 +17,24 @@ context('Frontmatter', {
cy.get('.yun-time-warning')
.should('exist')
})
it('word count & reading time', () => {
cy.visit('/posts/hello-valaxy')
const counterContainer = cy.get('.post-counter')
counterContainer
.get('.word-count span')
.invoke('text')
.should('match', /\d+/)
counterContainer
.get('.reading-time time')
.invoke('text')
.then((text) => {
text = text.trim()
const endsWith = ['m', 'h'].some(i => text.endsWith(i))
expect(endsWith).to.be.true
})
})
})

View File

@ -51,15 +51,16 @@ const siteConfig = useSiteConfig()
>
<span
v-if="frontmatter.wordCount"
class="inline-flex-center" :title="t('statistics.word')"
class="word-count inline-flex-center" :title="t('statistics.word')"
>
<div class="inline-block" i-ri-file-word-line />
<time m="l-1">{{ frontmatter.wordCount }}</time>
<span m="l-1">{{ frontmatter.wordCount }}</span>
</span>
<span
v-if="frontmatter.readingTime"
class="inline-flex-center" :title="t('statistics.time')"
class="reading-time inline-flex-center"
:title="t('statistics.time')"
>
<span m="x-2">-</span>
<div i-ri-timer-line />

View File

@ -0,0 +1,64 @@
import { addCustomCommand, addCustomTab } from '@vue/devtools-api'
import type { UserModule } from '../types'
import valaxyLogo from '../assets/images/valaxy-logo.png'
import pkg from '../../package.json'
/**
* add when enable vue devtools
* https://devtools-next.vuejs.org/plugins/api
*/
export function addValaxyTab() {
addCustomTab({
// unique identifier
name: 'valaxy',
// title to display in the tab
title: 'Valaxy',
// any icon from Iconify, or a URL to an image
icon: valaxyLogo,
// iframe view
view: {
type: 'iframe',
src: 'https://valaxy.site',
},
// category: 'pinned',
category: 'app',
})
}
function addValaxyCommand() {
addCustomCommand({
id: 'valaxy',
title: 'Valaxy',
icon: valaxyLogo,
children: [
{
id: 'valaxy:github',
title: 'Github',
icon: 'i-ri-github-fill',
action: {
type: 'url',
src: pkg.repository.url,
},
},
{
id: 'valaxy:website',
title: 'Website',
icon: valaxyLogo,
action: {
type: 'url',
src: 'https://valaxy.site/',
},
order: 2,
},
],
})
}
export const install: UserModule = ({ isClient }) => {
const enableDevtools = import.meta.env.DEV && isClient
if (enableDevtools) {
addValaxyTab()
addValaxyCommand()
}
}

View File

@ -18,6 +18,7 @@ import { install as installValaxy } from '../modules/valaxy'
import { install as installPinia } from '../modules/pinia'
import { install as installNprogress } from '../modules/nprogress'
import { install as installSchema } from '../modules/schemaOrg'
import { install as installDevtools } from '../modules/devtools'
export default function setupMain(ctx: ViteSSGContext, config: ComputedRef<ValaxyConfig<DefaultTheme.Config>>) {
// @ts-expect-error inject in runtime
@ -25,6 +26,7 @@ export default function setupMain(ctx: ViteSSGContext, config: ComputedRef<Valax
const injection_arg = ctx
installValaxy(ctx, config)
installDevtools(ctx)
installSchema(ctx)

View File

@ -7,7 +7,6 @@
</head>
<body>
<div id="app"></div>
<script type="module" src="__ENTRY__"></script>
<!-- body -->
</body>
</html>

View File

@ -4,7 +4,6 @@ import type { ConfigEnv, InlineConfig } from 'vite'
import { uniq } from '@antfu/utils'
import { loadConfigFromFile, mergeConfig } from 'vite'
import type { ResolvedValaxyOptions } from './options'
import { toAtFS } from './utils'
/**
* merge vite.config.ts (user & theme)
@ -83,7 +82,6 @@ export async function getIndexHtml({ clientRoot, themeRoot, userRoot, config }:
}
main = main
.replace('__ENTRY__', toAtFS(join(clientRoot, 'main.ts')))
.replace('<!-- head -->', head)
.replace('<!-- body -->', body)

View File

@ -150,6 +150,8 @@ export const defaultValaxyConfig: ValaxyNodeConfig = {
},
},
},
devtools: true,
}
export type UnoSetup = () => Awaitable<Partial<UnoCssConfig> | undefined>

View File

@ -2,11 +2,9 @@ import { dirname, join, resolve } from 'node:path'
import type { Alias, AliasOptions, InlineConfig, Plugin } from 'vite'
import { mergeConfig, searchForWorkspaceRoot } from 'vite'
import isInstalledGlobally from 'is-installed-globally'
import fs from 'fs-extra'
import { uniq } from '@antfu/utils'
import type { ResolvedValaxyOptions } from '../options'
import { resolveImportPath, toAtFS } from '../utils'
import { getIndexHtml } from '../common'
/**
* dependencies used by client
@ -72,7 +70,8 @@ export function createConfigPlugin(options: ResolvedValaxyOptions): Plugin {
return {
name: 'valaxy:site',
// before devtools
enforce: 'pre',
config(config) {
const injection: InlineConfig = {
// root: options.userRoot,
@ -123,25 +122,42 @@ export function createConfigPlugin(options: ResolvedValaxyOptions): Plugin {
return mergeConfig(config, injection)
},
configureServer(server) {
// serve our index.html after vite history fallback
return () => {
server.middlewares.use(async (req, res, next) => {
if (req.url!.endsWith('.html')) {
res.setHeader('Content-Type', 'text/html')
res.statusCode = 200
res.end(await getIndexHtml(options))
return
}
// patch rss
if (req.url! === '/atom.xml') {
res.setHeader('Content-Type', 'application/xml')
res.statusCode = 200
res.end(await fs.readFile(resolve(options.userRoot, 'dist/atom.xml'), 'utf-8'))
return
}
next()
})
// configureServer(server) {
// // serve our index.html after vite history fallback
// return () => {
// server.middlewares.use(async (req, res, next) => {
// if (req.url!.endsWith('.html')) {
// res.setHeader('Content-Type', 'text/html')
// res.statusCode = 200
// res.end(await getIndexHtml(options))
// return
// }
// // patch rss
// if (req.url! === '/atom.xml') {
// res.setHeader('Content-Type', 'application/xml')
// res.statusCode = 200
// res.end(await fs.readFile(resolve(options.userRoot, 'dist/atom.xml'), 'utf-8'))
// return
// }
// next()
// })
// }
// },
transformIndexHtml(html) {
// todo: adapt user/theme index.html by transformIndexHtml
return {
html,
tags: [
{
tag: 'script',
attrs: {
type: 'module',
src: `${toAtFS(options.clientRoot)}/main.ts`,
},
injectTo: 'head-prepend',
},
],
}
},
}

View File

@ -133,6 +133,6 @@ export async function ViteValaxyPlugins(
splitVendorChunkPlugin(),
createFixPlugins(options),
VueDevTools(),
valaxyConfig.devtools && VueDevTools(),
]
}

View File

@ -56,8 +56,9 @@ export function presetStatistics({
route: Parameters<Required<ValaxyExtendConfig>['extendMd']>[0]['route']
options: SiteConfig['statistics']
}) {
if (existsSync(route.component)) {
const file = readFileSync(route.component, 'utf-8')
const absolutePath = route.components.get('default') || ''
if (existsSync(absolutePath)) {
const file = readFileSync(absolutePath, 'utf-8')
const { wordCount, readingTime } = statistics(file, {
readTime: Object.assign({
speed: {

View File

@ -73,6 +73,11 @@ export interface ValaxyExtendConfig {
typography?: Parameters<typeof presetTypography>[0]
}
vueRouter?: Parameters<typeof VueRouter>[0]
/**
* @experimental
* Enable Vue Devtools & Valaxy Devtools
*/
devtools?: boolean
/**
* for markdown
*/

View File

@ -142,6 +142,7 @@
"@types/pascalcase": "^1.0.3",
"@types/qrcode": "^1.5.5",
"@types/yargs": "^17.0.32",
"@vue/devtools-api": "^7.0.10",
"debug": "^4.3.4",
"diacritics": "^1.3.0",
"https-localhost": "^4.7.1",

View File

@ -455,9 +455,12 @@ importers:
'@types/yargs':
specifier: ^17.0.32
version: 17.0.32
'@vue/devtools-api':
specifier: ^7.0.10
version: 7.0.10
debug:
specifier: ^4.3.4
version: 4.3.4(supports-color@8.1.1)
version: 4.3.4(supports-color@5.5.0)
diacritics:
specifier: ^1.3.0
version: 1.3.0
@ -826,7 +829,7 @@ packages:
'@babel/traverse': 7.23.6
'@babel/types': 7.23.6
convert-source-map: 2.0.0
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@ -920,7 +923,7 @@ packages:
'@babel/core': 7.23.6
'@babel/helper-compilation-targets': 7.23.6
'@babel/helper-plugin-utils': 7.22.5
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
lodash.debounce: 4.0.8
resolve: 1.22.8
transitivePeerDependencies:
@ -2014,7 +2017,7 @@ packages:
'@babel/helper-split-export-declaration': 7.22.6
'@babel/parser': 7.23.6
'@babel/types': 7.23.6
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@ -2031,7 +2034,7 @@ packages:
'@babel/helper-split-export-declaration': 7.22.6
'@babel/parser': 7.23.6
'@babel/types': 7.23.6
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@ -2587,7 +2590,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
ajv: 6.12.6
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
espree: 9.6.1
globals: 13.24.0
ignore: 5.3.0
@ -2613,7 +2616,7 @@ packages:
engines: {node: '>=10.10.0'}
dependencies:
'@humanwhocodes/object-schema': 2.0.1
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@ -2672,7 +2675,7 @@ packages:
'@antfu/install-pkg': 0.1.1
'@antfu/utils': 0.7.7
'@iconify/types': 2.0.0
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
kolorist: 1.8.0
local-pkg: 0.4.3
transitivePeerDependencies:
@ -2757,7 +2760,7 @@ packages:
'@intlify/shared': 9.8.0
'@rollup/pluginutils': 5.1.0(rollup@3.29.4)
'@vue/compiler-sfc': 3.3.12
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
fast-glob: 3.3.2
js-yaml: 4.1.0
json5: 2.2.3
@ -3557,7 +3560,7 @@ packages:
'@typescript-eslint/type-utils': 6.18.1(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/utils': 6.18.1(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/visitor-keys': 6.18.1
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
eslint: 8.56.0
graphemer: 1.4.0
ignore: 5.3.0
@ -3583,7 +3586,7 @@ packages:
'@typescript-eslint/types': 6.18.1
'@typescript-eslint/typescript-estree': 6.18.1(typescript@5.3.3)
'@typescript-eslint/visitor-keys': 6.18.1
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
eslint: 8.56.0
typescript: 5.3.3
transitivePeerDependencies:
@ -3618,7 +3621,7 @@ packages:
dependencies:
'@typescript-eslint/typescript-estree': 6.18.1(typescript@5.3.3)
'@typescript-eslint/utils': 6.18.1(eslint@8.56.0)(typescript@5.3.3)
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
eslint: 8.56.0
ts-api-utils: 1.0.3(typescript@5.3.3)
typescript: 5.3.3
@ -3647,7 +3650,7 @@ packages:
dependencies:
'@typescript-eslint/types': 6.16.0
'@typescript-eslint/visitor-keys': 6.16.0
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.3
@ -3669,7 +3672,7 @@ packages:
dependencies:
'@typescript-eslint/types': 6.18.1
'@typescript-eslint/visitor-keys': 6.18.1
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.3
@ -4216,6 +4219,12 @@ packages:
/@vue/devtools-api@6.5.1:
resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==}
/@vue/devtools-api@7.0.10:
resolution: {integrity: sha512-ahyPg7WfNChvFBBoXuksPWYetbfKQq+9s+1HFFtAW3ZT/KrHw+12K30OARscUVd5waOd8wSf8COdLUZMdV/3rw==}
dependencies:
'@vue/devtools-kit': 7.0.10
dev: true
/@vue/devtools-core@7.0.10(rollup@3.29.4)(vite@5.0.11):
resolution: {integrity: sha512-HBKK2Lh6byAxSDg9yCaUPpDJJxLRrwdbQYPUvd5pDZspHGDwj9XLPPzesGwTCQzN5gCxFDaTx1p76mTy+kYCJg==}
dependencies:
@ -4246,17 +4255,14 @@ packages:
mitt: 3.0.1
perfect-debounce: 1.0.0
speakingurl: 14.0.1
dev: false
/@vue/devtools-schema@7.0.10:
resolution: {integrity: sha512-0HSXzvxsW3M1MZVpUzoHD/jr+LGB4rtfpcBA5slalbUMy0bohDZ1xKUcGMNDcn/lE8HdzHDwrnByW8DgqG/EpA==}
dev: false
/@vue/devtools-shared@7.0.10:
resolution: {integrity: sha512-aZhyQLtmX5IQIHvCLk9fYaRY2PLDfIT1k4JjOM4/NGB45eZ0ebjyDhqZgkxmXEkVFLxKg4HtwYKLesxKmF/j5g==}
dependencies:
rfdc: 1.3.0
dev: false
/@vue/language-core@1.8.27(typescript@5.3.3):
resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==}
@ -4530,7 +4536,7 @@ packages:
resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==}
engines: {node: '>= 14'}
dependencies:
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
dev: false
@ -5682,7 +5688,6 @@ packages:
dependencies:
ms: 2.1.2
supports-color: 5.5.0
dev: true
/debug@4.3.4(supports-color@8.1.1):
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
@ -5695,6 +5700,7 @@ packages:
dependencies:
ms: 2.1.2
supports-color: 8.1.1
dev: true
/decamelize@1.2.0:
resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
@ -6184,7 +6190,7 @@ packages:
peerDependencies:
eslint: ^7.2.0 || ^8
dependencies:
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
doctrine: 3.0.0
eslint: 8.56.0
eslint-import-resolver-node: 0.3.9
@ -6209,7 +6215,7 @@ packages:
'@es-joy/jsdoccomment': 0.41.0
are-docs-informative: 0.0.2
comment-parser: 1.4.1
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
escape-string-regexp: 4.0.0
eslint: 8.56.0
esquery: 1.5.0
@ -6306,7 +6312,7 @@ packages:
peerDependencies:
eslint: '>=6.0.0'
dependencies:
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
eslint: 8.56.0
eslint-compat-utils: 0.1.2(eslint@8.56.0)
lodash: 4.17.21
@ -6403,7 +6409,7 @@ packages:
peerDependencies:
eslint: '>=6.0.0'
dependencies:
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
eslint: 8.56.0
eslint-compat-utils: 0.1.2(eslint@8.56.0)
lodash: 4.17.21
@ -6456,7 +6462,7 @@ packages:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.2.2
@ -7337,7 +7343,7 @@ packages:
engines: {node: '>= 14'}
dependencies:
agent-base: 7.1.0
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
dev: false
@ -7370,7 +7376,7 @@ packages:
engines: {node: '>= 14'}
dependencies:
agent-base: 7.1.0
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
dev: false
@ -8071,7 +8077,7 @@ packages:
dependencies:
chalk: 5.3.0
commander: 11.1.0
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
execa: 8.0.1
lilconfig: 3.0.0
listr2: 8.0.0
@ -8407,7 +8413,7 @@ packages:
/micromark@2.11.4:
resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==}
dependencies:
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
parse-entities: 2.0.0
transitivePeerDependencies:
- supports-color
@ -8484,7 +8490,6 @@ packages:
/mitt@3.0.1:
resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==}
dev: false
/mkdist@1.4.0(typescript@5.3.3):
resolution: {integrity: sha512-LzzdzWDx6cWWPd8saIoO+kT5jnbijfeDaE6jZfmCYEi3YL2aJSyF23/tCFee/mDuh/ek1UQeSYdLeSa6oesdiw==}
@ -8530,7 +8535,6 @@ packages:
/mrmime@1.0.1:
resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==}
engines: {node: '>=10'}
dev: true
/mrmime@2.0.0:
resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==}
@ -8958,7 +8962,6 @@ packages:
/perfect-debounce@1.0.0:
resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
dev: false
/performance-now@2.1.0:
resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==}
@ -10063,7 +10066,6 @@ packages:
'@polka/url': 1.0.0-next.24
mrmime: 1.0.1
totalist: 3.0.1
dev: true
/sirv@2.0.4:
resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==}
@ -10180,7 +10182,7 @@ packages:
/spdy-transport@3.0.0:
resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==}
dependencies:
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
detect-node: 2.1.0
hpack.js: 2.1.6
obuf: 1.1.2
@ -10194,7 +10196,7 @@ packages:
resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==}
engines: {node: '>=6.0.0'}
dependencies:
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
handle-thing: 2.0.1
http-deceiver: 1.2.7
select-hose: 2.0.0
@ -10206,7 +10208,6 @@ packages:
/speakingurl@14.0.1:
resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==}
engines: {node: '>=0.10.0'}
dev: false
/split@0.3.3:
resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==}
@ -10514,7 +10515,7 @@ packages:
cosmiconfig: 9.0.0(typescript@5.3.3)
css-functions-list: 3.2.1
css-tree: 2.3.1
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
fast-glob: 3.3.2
fastest-levenshtein: 1.0.16
file-entry-cache: 8.0.0
@ -10579,6 +10580,7 @@ packages:
engines: {node: '>=10'}
dependencies:
has-flag: 4.0.0
dev: true
/supports-hyperlinks@3.0.0:
resolution: {integrity: sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==}
@ -10803,7 +10805,7 @@ packages:
bundle-require: 4.0.2(esbuild@0.19.9)
cac: 6.7.14
chokidar: 3.5.3
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
esbuild: 0.19.9
execa: 5.1.1
globby: 11.1.0
@ -11143,7 +11145,7 @@ packages:
'@antfu/utils': 0.7.7
'@rollup/pluginutils': 5.1.0(rollup@3.29.4)
chokidar: 3.5.3
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
fast-glob: 3.3.2
local-pkg: 0.4.3
magic-string: 0.30.5
@ -11310,7 +11312,7 @@ packages:
hasBin: true
dependencies:
cac: 6.7.14
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
pathe: 1.1.1
picocolors: 1.0.0
vite: 5.0.11(@types/node@20.11.0)(sass@1.69.7)
@ -11337,7 +11339,7 @@ packages:
dependencies:
'@antfu/utils': 0.7.7
'@rollup/pluginutils': 5.1.0(rollup@2.79.1)
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
error-stack-parser-es: 0.1.1
fs-extra: 11.2.0
open: 9.1.0
@ -11361,12 +11363,12 @@ packages:
dependencies:
'@antfu/utils': 0.7.7
'@rollup/pluginutils': 5.1.0(rollup@3.29.4)
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
error-stack-parser-es: 0.1.1
fs-extra: 11.2.0
open: 9.1.0
picocolors: 1.0.0
sirv: 2.0.4
sirv: 2.0.3
vite: 5.0.11(@types/node@20.11.0)(sass@1.69.7)
transitivePeerDependencies:
- rollup
@ -11381,7 +11383,7 @@ packages:
workbox-build: ^7.0.0
workbox-window: ^7.0.0
dependencies:
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
fast-glob: 3.3.2
pretty-bytes: 6.1.1
vite: 5.0.11(@types/node@20.11.0)(sass@1.69.7)
@ -11438,7 +11440,7 @@ packages:
vue: ^3.2.4
vue-router: ^4.0.11
dependencies:
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
fast-glob: 3.3.2
vite: 5.0.11(@types/node@20.11.0)(sass@1.69.7)
vue: 3.4.13(typescript@5.3.3)
@ -11612,7 +11614,7 @@ packages:
acorn-walk: 8.3.1
cac: 6.7.14
chai: 4.3.10
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
execa: 8.0.1
local-pkg: 0.5.0
magic-string: 0.30.5
@ -11661,7 +11663,7 @@ packages:
peerDependencies:
eslint: '>=6.0.0'
dependencies:
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
eslint: 8.56.0
eslint-scope: 7.2.2
eslint-visitor-keys: 3.4.3