docs: add @shikiji/vitepress-twoslash (#16168)

This commit is contained in:
翠 / green 2024-03-15 17:24:38 +09:00 committed by GitHub
parent 20bf97d6a9
commit 6f8a320665
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
24 changed files with 997 additions and 152 deletions

View File

@ -1,4 +1,5 @@
import { defineConfig, DefaultTheme } from 'vitepress' import { defineConfig, DefaultTheme } from 'vitepress'
import { transformerTwoslash } from '@shikijs/vitepress-twoslash'
import { buildEnd } from './buildEnd.config' import { buildEnd } from './buildEnd.config'
const ogDescription = 'Next Generation Frontend Tooling' const ogDescription = 'Next Generation Frontend Tooling'
@ -342,5 +343,8 @@ export default defineConfig({
]) ])
return pageData return pageData
}, },
markdown: {
codeTransformers: [transformerTwoslash()],
},
buildEnd, buildEnd,
}) })

View File

@ -1,6 +1,8 @@
import { h } from 'vue' import { h } from 'vue'
import type { Theme } from 'vitepress' import type { Theme } from 'vitepress'
import DefaultTheme from 'vitepress/theme' import DefaultTheme from 'vitepress/theme'
import TwoslashFloatingVue from '@shikijs/vitepress-twoslash/client'
import '@shikijs/vitepress-twoslash/style.css'
import './styles/vars.css' import './styles/vars.css'
import HomeSponsors from './components/HomeSponsors.vue' import HomeSponsors from './components/HomeSponsors.vue'
import AsideSponsors from './components/AsideSponsors.vue' import AsideSponsors from './components/AsideSponsors.vue'
@ -16,5 +18,6 @@ export default {
}, },
enhanceApp({ app }) { enhanceApp({ app }) {
app.component('SvgImage', SvgImage) app.component('SvgImage', SvgImage)
app.use(TwoslashFloatingVue)
}, },
} satisfies Theme } satisfies Theme

View File

@ -0,0 +1,13 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "ESNext",
"moduleResolution": "Bundler",
"strict": true,
"noImplicitOverride": true,
"noUnusedLocals": true,
"esModuleInterop": true,
"noEmit": true
},
"exclude": ["cache", "dist"]
}

View File

@ -48,13 +48,22 @@ type ResolveModulePreloadDependenciesFn = (
The `resolveDependencies` function will be called for each dynamic import with a list of the chunks it depends on, and it will also be called for each chunk imported in entry HTML files. A new dependencies array can be returned with these filtered or more dependencies injected, and their paths modified. The `deps` paths are relative to the `build.outDir`. Returning a relative path to the `hostId` for `hostType === 'js'` is allowed, in which case `new URL(dep, import.meta.url)` is used to get an absolute path when injecting this module preload in the HTML head. The `resolveDependencies` function will be called for each dynamic import with a list of the chunks it depends on, and it will also be called for each chunk imported in entry HTML files. A new dependencies array can be returned with these filtered or more dependencies injected, and their paths modified. The `deps` paths are relative to the `build.outDir`. Returning a relative path to the `hostId` for `hostType === 'js'` is allowed, in which case `new URL(dep, import.meta.url)` is used to get an absolute path when injecting this module preload in the HTML head.
```js <!-- prettier-ignore-start -->
```js twoslash
/** @type {import('vite').UserConfig} */
const config = {
build: {
// ---cut-before---
modulePreload: { modulePreload: {
resolveDependencies: (filename, deps, { hostId, hostType }) => { resolveDependencies: (filename, deps, { hostId, hostType }) => {
return deps.filter(condition) return deps.filter(condition)
} },
},
// ---cut-after---
},
} }
``` ```
<!-- prettier-ignore-end -->
The resolved dependency paths can be further modified using [`experimental.renderBuiltUrl`](../guide/build.md#advanced-base-options). The resolved dependency paths can be further modified using [`experimental.renderBuiltUrl`](../guide/build.md#advanced-base-options).

View File

@ -19,7 +19,9 @@ Dependencies to exclude from pre-bundling.
:::warning CommonJS :::warning CommonJS
CommonJS dependencies should not be excluded from optimization. If an ESM dependency is excluded from optimization, but has a nested CommonJS dependency, the CommonJS dependency should be added to `optimizeDeps.include`. Example: CommonJS dependencies should not be excluded from optimization. If an ESM dependency is excluded from optimization, but has a nested CommonJS dependency, the CommonJS dependency should be added to `optimizeDeps.include`. Example:
```js ```js twoslash
import { defineConfig } from 'vite'
// ---cut---
export default defineConfig({ export default defineConfig({
optimizeDeps: { optimizeDeps: {
include: ['esm-dep > cjs-dep'], include: ['esm-dep > cjs-dep'],
@ -37,7 +39,9 @@ By default, linked packages not inside `node_modules` are not pre-bundled. Use t
**Experimental:** If you're using a library with many deep imports, you can also specify a trailing glob pattern to pre-bundle all deep imports at once. This will avoid constantly pre-bundling whenever a new deep import is used. [Give Feedback](https://github.com/vitejs/vite/discussions/15833). For example: **Experimental:** If you're using a library with many deep imports, you can also specify a trailing glob pattern to pre-bundle all deep imports at once. This will avoid constantly pre-bundling whenever a new deep import is used. [Give Feedback](https://github.com/vitejs/vite/discussions/15833). For example:
```js ```js twoslash
import { defineConfig } from 'vite'
// ---cut---
export default defineConfig({ export default defineConfig({
optimizeDeps: { optimizeDeps: {
include: ['my-lib/components/**/*.vue'], include: ['my-lib/components/**/*.vue'],

View File

@ -50,7 +50,9 @@ Vite also directly supports TS config files. You can use `vite.config.ts` with t
If the config needs to conditionally determine options based on the command (`serve` or `build`), the [mode](/guide/env-and-mode) being used, if it's an SSR build (`isSsrBuild`), or is previewing the build (`isPreview`), it can export a function instead: If the config needs to conditionally determine options based on the command (`serve` or `build`), the [mode](/guide/env-and-mode) being used, if it's an SSR build (`isSsrBuild`), or is previewing the build (`isPreview`), it can export a function instead:
```js ```js twoslash
import { defineConfig } from 'vite'
// ---cut---
export default defineConfig(({ command, mode, isSsrBuild, isPreview }) => { export default defineConfig(({ command, mode, isSsrBuild, isPreview }) => {
if (command === 'serve') { if (command === 'serve') {
return { return {
@ -73,7 +75,9 @@ It is important to note that in Vite's API the `command` value is `serve` during
If the config needs to call async functions, it can export an async function instead. And this async function can also be passed through `defineConfig` for improved intellisense support: If the config needs to call async functions, it can export an async function instead. And this async function can also be passed through `defineConfig` for improved intellisense support:
```js ```js twoslash
import { defineConfig } from 'vite'
// ---cut---
export default defineConfig(async ({ command, mode }) => { export default defineConfig(async ({ command, mode }) => {
const data = await asyncFunction() const data = await asyncFunction()
return { return {
@ -88,7 +92,7 @@ Environmental Variables can be obtained from `process.env` as usual.
Note that Vite doesn't load `.env` files by default as the files to load can only be determined after evaluating the Vite config, for example, the `root` and `envDir` options affect the loading behaviour. However, you can use the exported `loadEnv` helper to load the specific `.env` file if needed. Note that Vite doesn't load `.env` files by default as the files to load can only be determined after evaluating the Vite config, for example, the `root` and `envDir` options affect the loading behaviour. However, you can use the exported `loadEnv` helper to load the specific `.env` file if needed.
```js ```js twoslash
import { defineConfig, loadEnv } from 'vite' import { defineConfig, loadEnv } from 'vite'
export default defineConfig(({ command, mode }) => { export default defineConfig(({ command, mode }) => {

View File

@ -18,10 +18,10 @@ The first case is when `localhost` is used. Node.js under v17 reorders the resul
You can set [`dns.setDefaultResultOrder('verbatim')`](https://nodejs.org/api/dns.html#dns_dns_setdefaultresultorder_order) to disable the reordering behavior. Vite will then print the address as `localhost`. You can set [`dns.setDefaultResultOrder('verbatim')`](https://nodejs.org/api/dns.html#dns_dns_setdefaultresultorder_order) to disable the reordering behavior. Vite will then print the address as `localhost`.
```js ```js twoslash
// vite.config.js // vite.config.js
import { defineConfig } from 'vite' import { defineConfig } from 'vite'
import dns from 'dns' import dns from 'node:dns'
dns.setDefaultResultOrder('verbatim') dns.setDefaultResultOrder('verbatim')
@ -238,7 +238,7 @@ Create Vite server in middleware mode.
- **Example:** - **Example:**
```js ```js twoslash
import express from 'express' import express from 'express'
import { createServer as createViteServer } from 'vite' import { createServer as createViteServer } from 'vite'
@ -358,9 +358,9 @@ export default defineConfig({
// in their paths to the ignore list. // in their paths to the ignore list.
sourcemapIgnoreList(sourcePath, sourcemapPath) { sourcemapIgnoreList(sourcePath, sourcemapPath) {
return sourcePath.includes('node_modules') return sourcePath.includes('node_modules')
} },
} },
}; })
``` ```
::: tip Note ::: tip Note

View File

@ -415,7 +415,7 @@ Adjust console output verbosity. Default is `'info'`.
Use a custom logger to log messages. You can use Vite's `createLogger` API to get the default logger and customize it to, for example, change the message or filter out certain warnings. Use a custom logger to log messages. You can use Vite's `createLogger` API to get the default logger and customize it to, for example, change the message or filter out certain warnings.
```js ```ts twoslash
import { createLogger, defineConfig } from 'vite' import { createLogger, defineConfig } from 'vite'
const logger = createLogger() const logger = createLogger()

View File

@ -8,15 +8,15 @@ The manual HMR API is primarily intended for framework and tooling authors. As a
Vite exposes its manual HMR API via the special `import.meta.hot` object: Vite exposes its manual HMR API via the special `import.meta.hot` object:
```ts ```ts twoslash
import type { ModuleNamespace } from 'vite/types/hot.d.ts'
import type { InferCustomEventPayload } from 'vite/types/customEvent.d.ts'
// ---cut---
interface ImportMeta { interface ImportMeta {
readonly hot?: ViteHotContext readonly hot?: ViteHotContext
} }
type ModuleNamespace = Record<string, any> & {
[Symbol.toStringTag]: 'Module'
}
interface ViteHotContext { interface ViteHotContext {
readonly data: any readonly data: any
@ -32,7 +32,6 @@ interface ViteHotContext {
prune(cb: (data: any) => void): void prune(cb: (data: any) => void): void
invalidate(message?: string): void invalidate(message?: string): void
// `InferCustomEventPayload` provides types for built-in Vite events
on<T extends string>( on<T extends string>(
event: T, event: T,
cb: (payload: InferCustomEventPayload<T>) => void, cb: (payload: InferCustomEventPayload<T>) => void,
@ -67,7 +66,9 @@ Vite provides type definitions for `import.meta.hot` in [`vite/client.d.ts`](htt
For a module to self-accept, use `import.meta.hot.accept` with a callback which receives the updated module: For a module to self-accept, use `import.meta.hot.accept` with a callback which receives the updated module:
```js ```js twoslash
import 'vite/client'
// ---cut---
export const count = 1 export const count = 1
if (import.meta.hot) { if (import.meta.hot) {
@ -90,7 +91,13 @@ Vite requires that the call to this function appears as `import.meta.hot.accept(
A module can also accept updates from direct dependencies without reloading itself: A module can also accept updates from direct dependencies without reloading itself:
```js ```js twoslash
// @filename: /foo.d.ts
export declare const foo: () => void
// @filename: /example.js
import 'vite/client'
// ---cut---
import { foo } from './foo.js' import { foo } from './foo.js'
foo() foo()
@ -117,7 +124,9 @@ if (import.meta.hot) {
A self-accepting module or a module that expects to be accepted by others can use `hot.dispose` to clean-up any persistent side effects created by its updated copy: A self-accepting module or a module that expects to be accepted by others can use `hot.dispose` to clean-up any persistent side effects created by its updated copy:
```js ```js twoslash
import 'vite/client'
// ---cut---
function setupSideEffect() {} function setupSideEffect() {}
setupSideEffect() setupSideEffect()
@ -133,7 +142,9 @@ if (import.meta.hot) {
Register a callback that will call when the module is no longer imported on the page. Compared to `hot.dispose`, this can be used if the source code cleans up side-effects by itself on updates and you only need to clean-up when it's removed from the page. Vite currently uses this for `.css` imports. Register a callback that will call when the module is no longer imported on the page. Compared to `hot.dispose`, this can be used if the source code cleans up side-effects by itself on updates and you only need to clean-up when it's removed from the page. Vite currently uses this for `.css` imports.
```js ```js twoslash
import 'vite/client'
// ---cut---
function setupOrReuseSideEffect() {} function setupOrReuseSideEffect() {}
setupOrReuseSideEffect() setupOrReuseSideEffect()
@ -151,7 +162,9 @@ The `import.meta.hot.data` object is persisted across different instances of the
Note that re-assignment of `data` itself is not supported. Instead, you should mutate properties of the `data` object so information added from other handlers are preserved. Note that re-assignment of `data` itself is not supported. Instead, you should mutate properties of the `data` object so information added from other handlers are preserved.
```js ```js twoslash
import 'vite/client'
// ---cut---
// ok // ok
import.meta.hot.data.someValue = 'hello' import.meta.hot.data.someValue = 'hello'
@ -169,7 +182,9 @@ A self-accepting module may realize during runtime that it can't handle a HMR up
Note that you should always call `import.meta.hot.accept` even if you plan to call `invalidate` immediately afterwards, or else the HMR client won't listen for future changes to the self-accepting module. To communicate your intent clearly, we recommend calling `invalidate` within the `accept` callback like so: Note that you should always call `import.meta.hot.accept` even if you plan to call `invalidate` immediately afterwards, or else the HMR client won't listen for future changes to the self-accepting module. To communicate your intent clearly, we recommend calling `invalidate` within the `accept` callback like so:
```js ```js twoslash
import 'vite/client'
// ---cut---
import.meta.hot.accept((module) => { import.meta.hot.accept((module) => {
// You may use the new module instance to decide whether to invalidate. // You may use the new module instance to decide whether to invalidate.
if (cannotHandleUpdate(module)) { if (cannotHandleUpdate(module)) {

View File

@ -12,13 +12,12 @@ async function createServer(inlineConfig?: InlineConfig): Promise<ViteDevServer>
**Example Usage:** **Example Usage:**
```js ```ts twoslash
import { fileURLToPath } from 'url' import { fileURLToPath } from 'node:url'
import { createServer } from 'vite' import { createServer } from 'vite'
const __dirname = fileURLToPath(new URL('.', import.meta.url)) const __dirname = fileURLToPath(new URL('.', import.meta.url))
;(async () => {
const server = await createServer({ const server = await createServer({
// any valid user config options, plus `mode` and `configFile` // any valid user config options, plus `mode` and `configFile`
configFile: false, configFile: false,
@ -31,7 +30,6 @@ const __dirname = fileURLToPath(new URL('.', import.meta.url))
server.printUrls() server.printUrls()
server.bindCLIShortcuts({ print: true }) server.bindCLIShortcuts({ print: true })
})()
``` ```
::: tip NOTE ::: tip NOTE
@ -44,7 +42,7 @@ When using [middleware mode](/config/server-options.html#server-middlewaremode)
<details> <details>
<summary>Example</summary> <summary>Example</summary>
```ts ```ts twoslash
import http from 'http' import http from 'http'
import { createServer } from 'vite' import { createServer } from 'vite'
@ -57,7 +55,6 @@ const vite = await createServer({
// Provide the parent http server for proxy WebSocket // Provide the parent http server for proxy WebSocket
server: parentServer, server: parentServer,
}, },
},
proxy: { proxy: {
'/ws': { '/ws': {
target: 'ws://localhost:3000', target: 'ws://localhost:3000',
@ -65,8 +62,10 @@ const vite = await createServer({
ws: true, ws: true,
}, },
}, },
},
}) })
// @noErrors: 2339
parentServer.use(vite.middlewares) parentServer.use(vite.middlewares)
``` ```
@ -210,14 +209,13 @@ async function build(
**Example Usage:** **Example Usage:**
```js ```ts twoslash
import path from 'path' import path from 'node:path'
import { fileURLToPath } from 'url' import { fileURLToPath } from 'node:url'
import { build } from 'vite' import { build } from 'vite'
const __dirname = fileURLToPath(new URL('.', import.meta.url)) const __dirname = fileURLToPath(new URL('.', import.meta.url))
;(async () => {
await build({ await build({
root: path.resolve(__dirname, './project'), root: path.resolve(__dirname, './project'),
base: '/foo/', base: '/foo/',
@ -227,7 +225,6 @@ const __dirname = fileURLToPath(new URL('.', import.meta.url))
}, },
}, },
}) })
})()
``` ```
## `preview` ## `preview`
@ -240,9 +237,9 @@ async function preview(inlineConfig?: InlineConfig): Promise<PreviewServer>
**Example Usage:** **Example Usage:**
```js ```ts twoslash
import { preview } from 'vite' import { preview } from 'vite'
;(async () => {
const previewServer = await preview({ const previewServer = await preview({
// any valid user config options, plus `mode` and `configFile` // any valid user config options, plus `mode` and `configFile`
preview: { preview: {
@ -253,7 +250,6 @@ import { preview } from 'vite'
previewServer.printUrls() previewServer.printUrls()
previewServer.bindCLIShortcuts({ print: true }) previewServer.bindCLIShortcuts({ print: true })
})()
``` ```
## `PreviewServer` ## `PreviewServer`
@ -328,7 +324,17 @@ Deeply merge two Vite configs. `isRoot` represents the level within the Vite con
You can use the `defineConfig` helper to merge a config in callback form with another config: You can use the `defineConfig` helper to merge a config in callback form with another config:
```ts ```ts twoslash
import {
defineConfig,
mergeConfig,
type UserConfigFnObject,
type UserConfig,
} from 'vite'
declare const configAsCallback: UserConfigFnObject
declare const configAsObject: UserConfig
// ---cut---
export default defineConfig((configEnv) => export default defineConfig((configEnv) =>
mergeConfig(configAsCallback(configEnv), configAsObject), mergeConfig(configAsCallback(configEnv), configAsObject),
) )

View File

@ -579,7 +579,9 @@ We recommend **always prefixing** your event names to avoid collisions with othe
On the client side, use [`hot.on`](/guide/api-hmr.html#hot-on-event-cb) to listen to the events: On the client side, use [`hot.on`](/guide/api-hmr.html#hot-on-event-cb) to listen to the events:
```ts ```ts twoslash
import 'vite/client'
// ---cut---
// client side // client side
if (import.meta.hot) { if (import.meta.hot) {
import.meta.hot.on('my:greetings', (data) => { import.meta.hot.on('my:greetings', (data) => {

View File

@ -7,7 +7,9 @@
Importing a static asset will return the resolved public URL when it is served: Importing a static asset will return the resolved public URL when it is served:
```js ```js twoslash
import 'vite/client'
// ---cut---
import imgUrl from './img.png' import imgUrl from './img.png'
document.getElementById('hero-img').src = imgUrl document.getElementById('hero-img').src = imgUrl
``` ```
@ -33,7 +35,9 @@ The behavior is similar to webpack's `file-loader`. The difference is that the i
::: tip Inlining SVGs through `url()` ::: tip Inlining SVGs through `url()`
When passing a URL of SVG to a manually constructed `url()` by JS, the variable should be wrapped within double quotes. When passing a URL of SVG to a manually constructed `url()` by JS, the variable should be wrapped within double quotes.
```js ```js twoslash
import 'vite/client'
// ---cut---
import imgUrl from './img.svg' import imgUrl from './img.svg'
document.getElementById('hero-img').style.background = `url("${imgUrl}")` document.getElementById('hero-img').style.background = `url("${imgUrl}")`
``` ```
@ -44,7 +48,9 @@ document.getElementById('hero-img').style.background = `url("${imgUrl}")`
Assets that are not included in the internal list or in `assetsInclude`, can be explicitly imported as a URL using the `?url` suffix. This is useful, for example, to import [Houdini Paint Worklets](https://houdini.how/usage). Assets that are not included in the internal list or in `assetsInclude`, can be explicitly imported as a URL using the `?url` suffix. This is useful, for example, to import [Houdini Paint Worklets](https://houdini.how/usage).
```js ```js twoslash
import 'vite/client'
// ---cut---
import workletURL from 'extra-scalloped-border/worklet.js?url' import workletURL from 'extra-scalloped-border/worklet.js?url'
CSS.paintWorklet.addModule(workletURL) CSS.paintWorklet.addModule(workletURL)
``` ```
@ -53,7 +59,9 @@ CSS.paintWorklet.addModule(workletURL)
Assets can be imported as strings using the `?raw` suffix. Assets can be imported as strings using the `?raw` suffix.
```js ```js twoslash
import 'vite/client'
// ---cut---
import shaderString from './shader.glsl?raw' import shaderString from './shader.glsl?raw'
``` ```
@ -61,19 +69,25 @@ import shaderString from './shader.glsl?raw'
Scripts can be imported as web workers with the `?worker` or `?sharedworker` suffix. Scripts can be imported as web workers with the `?worker` or `?sharedworker` suffix.
```js ```js twoslash
import 'vite/client'
// ---cut---
// Separate chunk in the production build // Separate chunk in the production build
import Worker from './shader.js?worker' import Worker from './shader.js?worker'
const worker = new Worker() const worker = new Worker()
``` ```
```js ```js twoslash
import 'vite/client'
// ---cut---
// sharedworker // sharedworker
import SharedWorker from './shader.js?sharedworker' import SharedWorker from './shader.js?sharedworker'
const sharedWorker = new SharedWorker() const sharedWorker = new SharedWorker()
``` ```
```js ```js twoslash
import 'vite/client'
// ---cut---
// Inlined as base64 strings // Inlined as base64 strings
import InlineWorker from './shader.js?worker&inline' import InlineWorker from './shader.js?worker&inline'
``` ```

View File

@ -8,7 +8,9 @@ If you need a custom integration, you can follow the steps in this guide to conf
1. In your Vite config, configure the entry and enable build manifest: 1. In your Vite config, configure the entry and enable build manifest:
```js ```js twoslash
import { defineConfig } from 'vite'
// ---cut---
// vite.config.js // vite.config.js
export default defineConfig({ export default defineConfig({
build: { build: {

View File

@ -34,7 +34,6 @@ For advanced base path control, check out [Advanced Base Options](#advanced-base
The build can be customized via various [build config options](/config/build-options.md). Specifically, you can directly adjust the underlying [Rollup options](https://rollupjs.org/configuration-options/) via `build.rollupOptions`: The build can be customized via various [build config options](/config/build-options.md). Specifically, you can directly adjust the underlying [Rollup options](https://rollupjs.org/configuration-options/) via `build.rollupOptions`:
```js ```js
// vite.config.js
export default defineConfig({ export default defineConfig({
build: { build: {
rollupOptions: { rollupOptions: {
@ -68,7 +67,7 @@ You should use `build.rollupOptions.output.manualChunks` function form when usin
Vite emits `vite:preloadError` event when it fails to load dynamic imports. `event.payload` contains the original import error. If you call `event.preventDefault()`, the error will not be thrown. Vite emits `vite:preloadError` event when it fails to load dynamic imports. `event.payload` contains the original import error. If you call `event.preventDefault()`, the error will not be thrown.
```js ```js twoslash
window.addEventListener('vite:preloadError', (event) => { window.addEventListener('vite:preloadError', (event) => {
window.location.reload() // for example, refresh the page window.location.reload() // for example, refresh the page
}) })
@ -111,7 +110,7 @@ During dev, simply navigate or link to `/nested/` - it works as expected, just l
During build, all you need to do is to specify multiple `.html` files as entry points: During build, all you need to do is to specify multiple `.html` files as entry points:
```js ```js twoslash
// vite.config.js // vite.config.js
import { resolve } from 'path' import { resolve } from 'path'
import { defineConfig } from 'vite' import { defineConfig } from 'vite'
@ -138,7 +137,7 @@ When you are developing a browser-oriented library, you are likely spending most
When it is time to bundle your library for distribution, use the [`build.lib` config option](/config/build-options.md#build-lib). Make sure to also externalize any dependencies that you do not want to bundle into your library, e.g. `vue` or `react`: When it is time to bundle your library for distribution, use the [`build.lib` config option](/config/build-options.md#build-lib). Make sure to also externalize any dependencies that you do not want to bundle into your library, e.g. `vue` or `react`:
```js ```js twoslash
// vite.config.js // vite.config.js
import { resolve } from 'path' import { resolve } from 'path'
import { defineConfig } from 'vite' import { defineConfig } from 'vite'
@ -253,33 +252,44 @@ A user may choose to deploy in three different paths:
A single static [base](#public-base-path) isn't enough in these scenarios. Vite provides experimental support for advanced base options during build, using `experimental.renderBuiltUrl`. A single static [base](#public-base-path) isn't enough in these scenarios. Vite provides experimental support for advanced base options during build, using `experimental.renderBuiltUrl`.
```ts <!-- prettier-ignore-start -->
```ts twoslash
import type { UserConfig } from 'vite'
const config: UserConfig = {
// ---cut-before---
experimental: { experimental: {
renderBuiltUrl(filename: string, { hostType }: { hostType: 'js' | 'css' | 'html' }) { renderBuiltUrl(filename, { hostType }) {
if (hostType === 'js') { if (hostType === 'js') {
return { runtime: `window.__toCdnUrl(${JSON.stringify(filename)})` } return { runtime: `window.__toCdnUrl(${JSON.stringify(filename)})` }
} else { } else {
return { relative: true } return { relative: true }
} }
} },
},
// ---cut-after---
} }
``` ```
<!-- prettier-ignore-end -->
If the hashed assets and public files aren't deployed together, options for each group can be defined independently using asset `type` included in the second `context` param given to the function. If the hashed assets and public files aren't deployed together, options for each group can be defined independently using asset `type` included in the second `context` param given to the function.
```ts ```ts twoslash
import type { UserConfig } from 'vite'
import path from 'node:path'
const config: UserConfig = {
// ---cut-before---
experimental: { experimental: {
renderBuiltUrl(filename: string, { hostId, hostType, type }: { hostId: string, hostType: 'js' | 'css' | 'html', type: 'public' | 'asset' }) { renderBuiltUrl(filename, { hostId, hostType, type }) {
if (type === 'public') { if (type === 'public') {
return 'https://www.domain.com/' + filename return 'https://www.domain.com/' + filename
} } else if (path.extname(hostId) === '.js') {
else if (path.extname(hostId) === '.js') {
return { runtime: `window.__assetsPath(${JSON.stringify(filename)})` } return { runtime: `window.__assetsPath(${JSON.stringify(filename)})` }
} } else {
else {
return 'https://cdn.domain.com/assets/' + filename return 'https://cdn.domain.com/assets/' + filename
} }
} },
},
// ---cut-after---
} }
``` ```

View File

@ -37,7 +37,9 @@ In a monorepo setup, a dependency may be a linked package from the same repo. Vi
However, this requires the linked dep to be exported as ESM. If not, you can add the dependency to [`optimizeDeps.include`](/config/dep-optimization-options.md#optimizedeps-include) and [`build.commonjsOptions.include`](/config/build-options.md#build-commonjsoptions) in your config. However, this requires the linked dep to be exported as ESM. If not, you can add the dependency to [`optimizeDeps.include`](/config/dep-optimization-options.md#optimizedeps-include) and [`build.commonjsOptions.include`](/config/build-options.md#build-commonjsoptions) in your config.
```js ```js twoslash
import { defineConfig } from 'vite'
// ---cut---
export default defineConfig({ export default defineConfig({
optimizeDeps: { optimizeDeps: {
include: ['linked-dep'], include: ['linked-dep'],

View File

@ -176,7 +176,7 @@ Vue users should use the official [@vitejs/plugin-vue-jsx](https://github.com/vi
If using JSX without React or Vue, custom `jsxFactory` and `jsxFragment` can be configured using the [`esbuild` option](/config/shared-options.md#esbuild). For example for Preact: If using JSX without React or Vue, custom `jsxFactory` and `jsxFragment` can be configured using the [`esbuild` option](/config/shared-options.md#esbuild). For example for Preact:
```js ```js twoslash
// vite.config.js // vite.config.js
import { defineConfig } from 'vite' import { defineConfig } from 'vite'
@ -192,7 +192,7 @@ More details in [esbuild docs](https://esbuild.github.io/content-types/#jsx).
You can inject the JSX helpers using `jsxInject` (which is a Vite-only option) to avoid manual imports: You can inject the JSX helpers using `jsxInject` (which is a Vite-only option) to avoid manual imports:
```js ```js twoslash
// vite.config.js // vite.config.js
import { defineConfig } from 'vite' import { defineConfig } from 'vite'
@ -230,7 +230,9 @@ Any CSS file ending with `.module.css` is considered a [CSS modules file](https:
} }
``` ```
```js ```js twoslash
import 'vite/client'
// ---cut---
import classes from './example.module.css' import classes from './example.module.css'
document.getElementById('foo').className = classes.red document.getElementById('foo').className = classes.red
``` ```
@ -239,7 +241,9 @@ CSS modules behavior can be configured via the [`css.modules` option](/config/sh
If `css.modules.localsConvention` is set to enable camelCase locals (e.g. `localsConvention: 'camelCaseOnly'`), you can also use named imports: If `css.modules.localsConvention` is set to enable camelCase locals (e.g. `localsConvention: 'camelCaseOnly'`), you can also use named imports:
```js ```js twoslash
import 'vite/client'
// ---cut---
// .apply-color -> applyColor // .apply-color -> applyColor
import { applyColor } from './example.module.css' import { applyColor } from './example.module.css'
document.getElementById('foo').className = applyColor document.getElementById('foo').className = applyColor
@ -274,7 +278,9 @@ You can also use CSS modules combined with pre-processors by prepending `.module
The automatic injection of CSS contents can be turned off via the `?inline` query parameter. In this case, the processed CSS string is returned as the module's default export as usual, but the styles aren't injected to the page. The automatic injection of CSS contents can be turned off via the `?inline` query parameter. In this case, the processed CSS string is returned as the module's default export as usual, but the styles aren't injected to the page.
```js ```js twoslash
import 'vite/client'
// ---cut---
import './foo.css' // will be injected into the page import './foo.css' // will be injected into the page
import otherStyles from './bar.css?inline' // will not be injected import otherStyles from './bar.css?inline' // will not be injected
``` ```
@ -305,29 +311,39 @@ By default, Vite uses esbuild to minify CSS. Lightning CSS can also be used as t
Importing a static asset will return the resolved public URL when it is served: Importing a static asset will return the resolved public URL when it is served:
```js ```js twoslash
import 'vite/client'
// ---cut---
import imgUrl from './img.png' import imgUrl from './img.png'
document.getElementById('hero-img').src = imgUrl document.getElementById('hero-img').src = imgUrl
``` ```
Special queries can modify how assets are loaded: Special queries can modify how assets are loaded:
```js ```js twoslash
import 'vite/client'
// ---cut---
// Explicitly load assets as URL // Explicitly load assets as URL
import assetAsURL from './asset.js?url' import assetAsURL from './asset.js?url'
``` ```
```js ```js twoslash
import 'vite/client'
// ---cut---
// Load assets as strings // Load assets as strings
import assetAsString from './shader.glsl?raw' import assetAsString from './shader.glsl?raw'
``` ```
```js ```js twoslash
import 'vite/client'
// ---cut---
// Load Web Workers // Load Web Workers
import Worker from './worker.js?worker' import Worker from './worker.js?worker'
``` ```
```js ```js twoslash
import 'vite/client'
// ---cut---
// Web Workers inlined as base64 strings at build time // Web Workers inlined as base64 strings at build time
import InlineWorker from './worker.js?worker&inline' import InlineWorker from './worker.js?worker&inline'
``` ```
@ -338,7 +354,9 @@ More details in [Static Asset Handling](./assets).
JSON files can be directly imported - named imports are also supported: JSON files can be directly imported - named imports are also supported:
```js ```js twoslash
import 'vite/client'
// ---cut---
// import the entire object // import the entire object
import json from './example.json' import json from './example.json'
// import a root field as named exports - helps with tree-shaking! // import a root field as named exports - helps with tree-shaking!
@ -349,7 +367,9 @@ import { field } from './example.json'
Vite supports importing multiple modules from the file system via the special `import.meta.glob` function: Vite supports importing multiple modules from the file system via the special `import.meta.glob` function:
```js ```js twoslash
import 'vite/client'
// ---cut---
const modules = import.meta.glob('./dir/*.js') const modules = import.meta.glob('./dir/*.js')
``` ```
@ -375,7 +395,9 @@ for (const path in modules) {
Matched files are by default lazy-loaded via dynamic import and will be split into separate chunks during build. If you'd rather import all the modules directly (e.g. relying on side-effects in these modules to be applied first), you can pass `{ eager: true }` as the second argument: Matched files are by default lazy-loaded via dynamic import and will be split into separate chunks during build. If you'd rather import all the modules directly (e.g. relying on side-effects in these modules to be applied first), you can pass `{ eager: true }` as the second argument:
```js ```js twoslash
import 'vite/client'
// ---cut---
const modules = import.meta.glob('./dir/*.js', { eager: true }) const modules = import.meta.glob('./dir/*.js', { eager: true })
``` ```
@ -395,7 +417,9 @@ const modules = {
The first argument can be an array of globs, for example The first argument can be an array of globs, for example
```js ```js twoslash
import 'vite/client'
// ---cut---
const modules = import.meta.glob(['./dir/*.js', './another/*.js']) const modules = import.meta.glob(['./dir/*.js', './another/*.js'])
``` ```
@ -403,7 +427,9 @@ const modules = import.meta.glob(['./dir/*.js', './another/*.js'])
Negative glob patterns are also supported (prefixed with `!`). To ignore some files from the result, you can add exclude glob patterns to the first argument: Negative glob patterns are also supported (prefixed with `!`). To ignore some files from the result, you can add exclude glob patterns to the first argument:
```js ```js twoslash
import 'vite/client'
// ---cut---
const modules = import.meta.glob(['./dir/*.js', '!**/bar.js']) const modules = import.meta.glob(['./dir/*.js', '!**/bar.js'])
``` ```
@ -418,7 +444,9 @@ const modules = {
It's possible to only import parts of the modules with the `import` options. It's possible to only import parts of the modules with the `import` options.
```ts ```ts twoslash
import 'vite/client'
// ---cut---
const modules = import.meta.glob('./dir/*.js', { import: 'setup' }) const modules = import.meta.glob('./dir/*.js', { import: 'setup' })
``` ```
@ -432,7 +460,9 @@ const modules = {
When combined with `eager` it's even possible to have tree-shaking enabled for those modules. When combined with `eager` it's even possible to have tree-shaking enabled for those modules.
```ts ```ts twoslash
import 'vite/client'
// ---cut---
const modules = import.meta.glob('./dir/*.js', { const modules = import.meta.glob('./dir/*.js', {
import: 'setup', import: 'setup',
eager: true, eager: true,
@ -451,7 +481,9 @@ const modules = {
Set `import` to `default` to import the default export. Set `import` to `default` to import the default export.
```ts ```ts twoslash
import 'vite/client'
// ---cut---
const modules = import.meta.glob('./dir/*.js', { const modules = import.meta.glob('./dir/*.js', {
import: 'default', import: 'default',
eager: true, eager: true,
@ -472,7 +504,9 @@ const modules = {
You can also use the `query` option to provide queries to imports, for example, to import assets [as a string](https://vitejs.dev/guide/assets.html#importing-asset-as-string) or [as a url](https://vitejs.dev/guide/assets.html#importing-asset-as-url): You can also use the `query` option to provide queries to imports, for example, to import assets [as a string](https://vitejs.dev/guide/assets.html#importing-asset-as-string) or [as a url](https://vitejs.dev/guide/assets.html#importing-asset-as-url):
```ts ```ts twoslash
import 'vite/client'
// ---cut---
const moduleStrings = import.meta.glob('./dir/*.svg', { const moduleStrings = import.meta.glob('./dir/*.svg', {
query: '?raw', query: '?raw',
import: 'default', import: 'default',
@ -497,7 +531,9 @@ const moduleUrls = {
You can also provide custom queries for other plugins to consume: You can also provide custom queries for other plugins to consume:
```ts ```ts twoslash
import 'vite/client'
// ---cut---
const modules = import.meta.glob('./dir/*.js', { const modules = import.meta.glob('./dir/*.js', {
query: { foo: 'bar', bar: true }, query: { foo: 'bar', bar: true },
}) })
@ -527,7 +563,9 @@ Note that variables only represent file names one level deep. If `file` is `'foo
Pre-compiled `.wasm` files can be imported with `?init`. Pre-compiled `.wasm` files can be imported with `?init`.
The default export will be an initialization function that returns a Promise of the [`WebAssembly.Instance`](https://developer.mozilla.org/en-US/docs/WebAssembly/JavaScript_interface/Instance): The default export will be an initialization function that returns a Promise of the [`WebAssembly.Instance`](https://developer.mozilla.org/en-US/docs/WebAssembly/JavaScript_interface/Instance):
```js ```js twoslash
import 'vite/client'
// ---cut---
import init from './example.wasm?init' import init from './example.wasm?init'
init().then((instance) => { init().then((instance) => {
@ -537,7 +575,10 @@ init().then((instance) => {
The init function can also take an importObject which is passed along to [`WebAssembly.instantiate`](https://developer.mozilla.org/en-US/docs/WebAssembly/JavaScript_interface/instantiate) as its second argument: The init function can also take an importObject which is passed along to [`WebAssembly.instantiate`](https://developer.mozilla.org/en-US/docs/WebAssembly/JavaScript_interface/instantiate) as its second argument:
```js ```js twoslash
import 'vite/client'
import init from './example.wasm?init'
// ---cut---
init({ init({
imports: { imports: {
someFunc: () => { someFunc: () => {
@ -560,7 +601,9 @@ Use [`vite-plugin-wasm`](https://github.com/Menci/vite-plugin-wasm) or other com
If you need access to the `Module` object, e.g. to instantiate it multiple times, use an [explicit URL import](./assets#explicit-url-imports) to resolve the asset, and then perform the instantiation: If you need access to the `Module` object, e.g. to instantiate it multiple times, use an [explicit URL import](./assets#explicit-url-imports) to resolve the asset, and then perform the instantiation:
```js ```js twoslash
import 'vite/client'
// ---cut---
import wasmUrl from 'foo.wasm?url' import wasmUrl from 'foo.wasm?url'
const main = async () => { const main = async () => {
@ -580,7 +623,9 @@ See the issue [Support wasm in SSR](https://github.com/vitejs/vite/issues/8882).
Here is an alternative, assuming the project base is the current directory: Here is an alternative, assuming the project base is the current directory:
```js ```js twoslash
import 'vite/client'
// ---cut---
import wasmUrl from 'foo.wasm?url' import wasmUrl from 'foo.wasm?url'
import { readFile } from 'node:fs/promises' import { readFile } from 'node:fs/promises'
@ -620,7 +665,9 @@ The worker detection will only work if the `new URL()` constructor is used direc
A web worker script can be directly imported by appending `?worker` or `?sharedworker` to the import request. The default export will be a custom worker constructor: A web worker script can be directly imported by appending `?worker` or `?sharedworker` to the import request. The default export will be a custom worker constructor:
```js ```js twoslash
import 'vite/client'
// ---cut---
import MyWorker from './worker?worker' import MyWorker from './worker?worker'
const worker = new MyWorker() const worker = new MyWorker()
@ -630,13 +677,17 @@ The worker script can also use ESM `import` statements instead of `importScripts
By default, the worker script will be emitted as a separate chunk in the production build. If you wish to inline the worker as base64 strings, add the `inline` query: By default, the worker script will be emitted as a separate chunk in the production build. If you wish to inline the worker as base64 strings, add the `inline` query:
```js ```js twoslash
import 'vite/client'
// ---cut---
import MyWorker from './worker?worker&inline' import MyWorker from './worker?worker&inline'
``` ```
If you wish to retrieve the worker as a URL, add the `url` query: If you wish to retrieve the worker as a URL, add the `url` query:
```js ```js twoslash
import 'vite/client'
// ---cut---
import MyWorker from './worker?worker&url' import MyWorker from './worker?worker&url'
``` ```

View File

@ -53,7 +53,9 @@ You can use any placeholder you prefer instead of `<!--ssr-outlet-->`, as long a
If you need to perform conditional logic based on SSR vs. client, you can use If you need to perform conditional logic based on SSR vs. client, you can use
```js ```js twoslash
import 'vite/client'
// ---cut---
if (import.meta.env.SSR) { if (import.meta.env.SSR) {
// ... server only logic // ... server only logic
} }
@ -67,10 +69,10 @@ When building an SSR app, you likely want to have full control over your main se
**server.js** **server.js**
```js{15-18} ```js{15-18} twoslash
import fs from 'fs' import fs from 'node:fs'
import path from 'path' import path from 'node:path'
import { fileURLToPath } from 'url' import { fileURLToPath } from 'node:url'
import express from 'express' import express from 'express'
import { createServer as createViteServer } from 'vite' import { createServer as createViteServer } from 'vite'
@ -109,7 +111,18 @@ Here `vite` is an instance of [ViteDevServer](./api-javascript#vitedevserver). `
The next step is implementing the `*` handler to serve server-rendered HTML: The next step is implementing the `*` handler to serve server-rendered HTML:
```js ```js twoslash
// @noErrors
import fs from 'node:fs'
import path from 'node:path'
import { fileURLToPath } from 'node:url'
/** @type {import('express').Express} */
var app
/** @type {import('vite').ViteDevServer} */
var vite
// ---cut---
app.use('*', async (req, res, next) => { app.use('*', async (req, res, next) => {
const url = req.originalUrl const url = req.originalUrl
@ -246,7 +259,9 @@ Some frameworks such as Vue or Svelte compile components into different formats
**Example:** **Example:**
```js ```js twoslash
/** @type {() => import('vite').Plugin} */
// ---cut---
export function mySSRPlugin() { export function mySSRPlugin() {
return { return {
name: 'my-ssr', name: 'my-ssr',

View File

@ -10,7 +10,7 @@ To use a plugin, it needs to be added to the `devDependencies` of the project an
$ npm add -D @vitejs/plugin-legacy $ npm add -D @vitejs/plugin-legacy
``` ```
```js ```js twoslash
// vite.config.js // vite.config.js
import legacy from '@vitejs/plugin-legacy' import legacy from '@vitejs/plugin-legacy'
import { defineConfig } from 'vite' import { defineConfig } from 'vite'
@ -46,7 +46,7 @@ For compatibility with some Rollup plugins, it may be needed to enforce the orde
- default: invoke plugin after Vite core plugins - default: invoke plugin after Vite core plugins
- `post`: invoke plugin after Vite build plugins - `post`: invoke plugin after Vite build plugins
```js ```js twoslash
// vite.config.js // vite.config.js
import image from '@rollup/plugin-image' import image from '@rollup/plugin-image'
import { defineConfig } from 'vite' import { defineConfig } from 'vite'
@ -67,7 +67,7 @@ Check out [Plugins API Guide](./api-plugin.md#plugin-ordering) for detailed info
By default, plugins are invoked for both serve and build. In cases where a plugin needs to be conditionally applied only during serve or build, use the `apply` property to only invoke them during `'build'` or `'serve'`: By default, plugins are invoked for both serve and build. In cases where a plugin needs to be conditionally applied only during serve or build, use the `apply` property to only invoke them during `'build'` or `'serve'`:
```js ```js twoslash
// vite.config.js // vite.config.js
import typescript2 from 'rollup-plugin-typescript2' import typescript2 from 'rollup-plugin-typescript2'
import { defineConfig } from 'vite' import { defineConfig } from 'vite'

16
docs/package.json Normal file
View File

@ -0,0 +1,16 @@
{
"name": "docs",
"private": true,
"type": "module",
"scripts": {
"docs": "vitepress dev",
"docs-build": "vitepress build",
"docs-serve": "vitepress serve"
},
"devDependencies": {
"@shikijs/vitepress-twoslash": "^1.1.7",
"@types/express": "^4.17.21",
"vitepress": "1.0.0-rc.45",
"vue": "^3.4.21"
}
}

View File

@ -30,9 +30,9 @@
"test-docs": "pnpm run docs-build", "test-docs": "pnpm run docs-build",
"debug-serve": "VITE_DEBUG_SERVE=1 vitest run -c vitest.config.e2e.ts", "debug-serve": "VITE_DEBUG_SERVE=1 vitest run -c vitest.config.e2e.ts",
"debug-build": "VITE_TEST_BUILD=1 VITE_PRESERVE_BUILD_ARTIFACTS=1 vitest run -c vitest.config.e2e.ts", "debug-build": "VITE_TEST_BUILD=1 VITE_PRESERVE_BUILD_ARTIFACTS=1 vitest run -c vitest.config.e2e.ts",
"docs": "vitepress dev docs", "docs": "pnpm --filter=docs run docs",
"docs-build": "vitepress build docs", "docs-build": "pnpm --filter=docs run docs-build",
"docs-serve": "vitepress serve docs", "docs-serve": "pnpm --filter=docs run docs-serve",
"build": "pnpm -r --filter='./packages/*' run build", "build": "pnpm -r --filter='./packages/*' run build",
"dev": "pnpm -r --parallel --filter='./packages/*' run dev", "dev": "pnpm -r --parallel --filter='./packages/*' run dev",
"release": "tsx scripts/release.ts", "release": "tsx scripts/release.ts",
@ -85,9 +85,7 @@
"typescript": "^5.2.2", "typescript": "^5.2.2",
"unbuild": "^2.0.0", "unbuild": "^2.0.0",
"vite": "workspace:*", "vite": "workspace:*",
"vitepress": "1.0.0-rc.45", "vitest": "^1.3.1"
"vitest": "^1.3.1",
"vue": "^3.4.21"
}, },
"simple-git-hooks": { "simple-git-hooks": {
"pre-commit": "pnpm exec lint-staged --concurrent false" "pre-commit": "pnpm exec lint-staged --concurrent false"

View File

@ -76,6 +76,10 @@ const debug = createDebugger('vite:config')
const promisifiedRealpath = promisify(fs.realpath) const promisifiedRealpath = promisify(fs.realpath)
export interface ConfigEnv { export interface ConfigEnv {
/**
* 'serve': during dev (`vite` command)
* 'build': when building for production (`vite build` command)
*/
command: 'build' | 'serve' command: 'build' | 'serve'
mode: string mode: string
isSsrBuild?: boolean isSsrBuild?: boolean
@ -105,8 +109,7 @@ export type UserConfigExport =
/** /**
* Type helper to make it easier to use vite.config.ts * Type helper to make it easier to use vite.config.ts
* accepts a direct {@link UserConfig} object, or a function that returns it. * accepts a direct {@link UserConfig} object, or a function that returns it.
* The function receives a {@link ConfigEnv} object that exposes two properties: * The function receives a {@link ConfigEnv} object.
* `command` (either `'build'` or `'serve'`), and `mode`.
*/ */
export function defineConfig(config: UserConfig): UserConfig export function defineConfig(config: UserConfig): UserConfig
export function defineConfig(config: Promise<UserConfig>): Promise<UserConfig> export function defineConfig(config: Promise<UserConfig>): Promise<UserConfig>

View File

@ -31,5 +31,8 @@ export interface InvalidatePayload {
message: string | undefined message: string | undefined
} }
/**
* provides types for built-in Vite events
*/
export type InferCustomEventPayload<T extends string> = export type InferCustomEventPayload<T extends string> =
T extends keyof CustomEventMap ? CustomEventMap[T] : any T extends keyof CustomEventMap ? CustomEventMap[T] : any

View File

@ -159,12 +159,21 @@ importers:
vite: vite:
specifier: workspace:* specifier: workspace:*
version: link:packages/vite version: link:packages/vite
vitepress:
specifier: 1.0.0-rc.45
version: 1.0.0-rc.45(typescript@5.2.2)
vitest: vitest:
specifier: ^1.3.1 specifier: ^1.3.1
version: 1.3.1(@types/node@20.11.25) version: 1.3.1(@types/node@20.11.25)
docs:
devDependencies:
'@shikijs/vitepress-twoslash':
specifier: ^1.1.7
version: 1.1.7(typescript@5.2.2)
'@types/express':
specifier: ^4.17.21
version: 4.17.21
vitepress:
specifier: 1.0.0-rc.45
version: 1.0.0-rc.45(typescript@5.2.2)
vue: vue:
specifier: ^3.4.21 specifier: ^3.4.21
version: 3.4.21(typescript@5.2.2) version: 3.4.21(typescript@5.2.2)
@ -3607,6 +3616,22 @@ packages:
engines: {node: '>=14'} engines: {node: '>=14'}
dev: true dev: true
/@floating-ui/core@1.6.0:
resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==}
dependencies:
'@floating-ui/utils': 0.2.1
dev: true
/@floating-ui/dom@1.1.1:
resolution: {integrity: sha512-TpIO93+DIujg3g7SykEAGZMDtbJRrmnYRCNYSjJlvIbGhBjRSNTLVbNeDQBrzy9qDgUbiWdc7KA0uZHZ2tJmiw==}
dependencies:
'@floating-ui/core': 1.6.0
dev: true
/@floating-ui/utils@0.2.1:
resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==}
dev: true
/@humanwhocodes/config-array@0.11.14: /@humanwhocodes/config-array@0.11.14:
resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
engines: {node: '>=10.10.0'} engines: {node: '>=10.10.0'}
@ -4068,12 +4093,44 @@ packages:
resolution: {integrity: sha512-cKc5vGQ4p/4sjx48BHIO7CvLaN32vqpz5Wh7v2n+U1EezGdfX4Wms7khBctKz3iCg9yYq4sfGUc2t+JWj6EUsw==} resolution: {integrity: sha512-cKc5vGQ4p/4sjx48BHIO7CvLaN32vqpz5Wh7v2n+U1EezGdfX4Wms7khBctKz3iCg9yYq4sfGUc2t+JWj6EUsw==}
dev: true dev: true
/@shikijs/core@1.1.7:
resolution: {integrity: sha512-gTYLUIuD1UbZp/11qozD3fWpUTuMqPSf3svDMMrL0UmlGU7D9dPw/V1FonwAorCUJBltaaESxq90jrSjQyGixg==}
dev: true
/@shikijs/transformers@1.1.5: /@shikijs/transformers@1.1.5:
resolution: {integrity: sha512-ot6KWPmLuSN9nA9FAhttOXZIjKIy7cnwpNtI9aWmYN72RUaDz8eojRfMGUXsXXUxW/buvcvdZQAQldk7/pFpdw==} resolution: {integrity: sha512-ot6KWPmLuSN9nA9FAhttOXZIjKIy7cnwpNtI9aWmYN72RUaDz8eojRfMGUXsXXUxW/buvcvdZQAQldk7/pFpdw==}
dependencies: dependencies:
shiki: 1.1.5 shiki: 1.1.5
dev: true dev: true
/@shikijs/twoslash@1.1.7(typescript@5.2.2):
resolution: {integrity: sha512-WH/Ee67eixqDWjsAUXIJQUgRzPDApsz7Bci65Yobc7SWHNc8T2sY1UBa+MCV2mAj0D6VCYBwWlNxMDTfhN7K0Q==}
dependencies:
'@shikijs/core': 1.1.7
twoslash: 0.2.4(typescript@5.2.2)
transitivePeerDependencies:
- supports-color
- typescript
dev: true
/@shikijs/vitepress-twoslash@1.1.7(typescript@5.2.2):
resolution: {integrity: sha512-rjPJlG1QvNDib5tQlQJKCZSN34lpqNwFRGO6hR50MkULmZRCMENRx22q1TZGJ4WJUeZYORIW7sxv5Y2s+TvLOQ==}
dependencies:
'@shikijs/twoslash': 1.1.7(typescript@5.2.2)
floating-vue: 5.2.2(vue@3.4.21)
mdast-util-from-markdown: 2.0.0
mdast-util-gfm: 3.0.0
mdast-util-to-hast: 13.1.0
shiki: 1.1.7
twoslash: 0.2.4(typescript@5.2.2)
twoslash-vue: 0.2.4(typescript@5.2.2)
vue: 3.4.21(typescript@5.2.2)
transitivePeerDependencies:
- '@nuxt/kit'
- supports-color
- typescript
dev: true
/@sinclair/typebox@0.27.8: /@sinclair/typebox@0.27.8:
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
dev: true dev: true
@ -4123,10 +4180,23 @@ packages:
'@babel/types': 7.24.0 '@babel/types': 7.24.0
dev: true dev: true
/@types/body-parser@1.19.5:
resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==}
dependencies:
'@types/connect': 3.4.38
'@types/node': 20.11.25
dev: true
/@types/braces@3.0.1: /@types/braces@3.0.1:
resolution: {integrity: sha512-+euflG6ygo4bn0JHtn4pYqcXwRtLvElQ7/nnjDu7iYG56H0+OhCd7d6Ug0IE3WcFpZozBKW2+80FUbv5QGk5AQ==} resolution: {integrity: sha512-+euflG6ygo4bn0JHtn4pYqcXwRtLvElQ7/nnjDu7iYG56H0+OhCd7d6Ug0IE3WcFpZozBKW2+80FUbv5QGk5AQ==}
dev: true dev: true
/@types/connect@3.4.38:
resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==}
dependencies:
'@types/node': 20.11.25
dev: true
/@types/convert-source-map@2.0.3: /@types/convert-source-map@2.0.3:
resolution: {integrity: sha512-ag0BfJLZf6CQz8VIuRIEYQ5Ggwk/82uvTQf27RcpyDNbY0Vw49LIPqAxk5tqYfrCs9xDaIMvl4aj7ZopnYL8bA==} resolution: {integrity: sha512-ag0BfJLZf6CQz8VIuRIEYQ5Ggwk/82uvTQf27RcpyDNbY0Vw49LIPqAxk5tqYfrCs9xDaIMvl4aj7ZopnYL8bA==}
dev: true dev: true
@ -4164,6 +4234,24 @@ packages:
'@types/node': 20.11.25 '@types/node': 20.11.25
dev: true dev: true
/@types/express-serve-static-core@4.17.43:
resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==}
dependencies:
'@types/node': 20.11.25
'@types/qs': 6.9.12
'@types/range-parser': 1.2.7
'@types/send': 0.17.4
dev: true
/@types/express@4.17.21:
resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==}
dependencies:
'@types/body-parser': 1.19.5
'@types/express-serve-static-core': 4.17.43
'@types/qs': 6.9.12
'@types/serve-static': 1.15.5
dev: true
/@types/fs-extra@11.0.4: /@types/fs-extra@11.0.4:
resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==}
dependencies: dependencies:
@ -4171,6 +4259,16 @@ packages:
'@types/node': 20.11.25 '@types/node': 20.11.25
dev: true dev: true
/@types/hast@3.0.4:
resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
dependencies:
'@types/unist': 3.0.2
dev: true
/@types/http-errors@2.0.4:
resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==}
dev: true
/@types/json-schema@7.0.12: /@types/json-schema@7.0.12:
resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==}
dev: true dev: true
@ -4200,6 +4298,12 @@ packages:
'@types/mdurl': 1.0.2 '@types/mdurl': 1.0.2
dev: true dev: true
/@types/mdast@4.0.3:
resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==}
dependencies:
'@types/unist': 3.0.2
dev: true
/@types/mdurl@1.0.2: /@types/mdurl@1.0.2:
resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==}
dev: true dev: true
@ -4210,6 +4314,14 @@ packages:
'@types/braces': 3.0.1 '@types/braces': 3.0.1
dev: true dev: true
/@types/mime@1.3.5:
resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==}
dev: true
/@types/mime@3.0.4:
resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==}
dev: true
/@types/minimist@1.2.5: /@types/minimist@1.2.5:
resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==}
dev: true dev: true
@ -4248,6 +4360,14 @@ packages:
kleur: 3.0.3 kleur: 3.0.3
dev: true dev: true
/@types/qs@6.9.12:
resolution: {integrity: sha512-bZcOkJ6uWrL0Qb2NAWKa7TBU+mJHPzhx9jjLL1KHF+XpzEcR7EXHvjbHlGtR/IsP1vyPrehuS6XqkmaePy//mg==}
dev: true
/@types/range-parser@1.2.7:
resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==}
dev: true
/@types/resolve@1.20.2: /@types/resolve@1.20.2:
resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
dev: true dev: true
@ -4262,12 +4382,31 @@ packages:
resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
dev: true dev: true
/@types/send@0.17.4:
resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==}
dependencies:
'@types/mime': 1.3.5
'@types/node': 20.11.25
dev: true
/@types/serve-static@1.15.5:
resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==}
dependencies:
'@types/http-errors': 2.0.4
'@types/mime': 3.0.4
'@types/node': 20.11.25
dev: true
/@types/stylus@0.48.42: /@types/stylus@0.48.42:
resolution: {integrity: sha512-CPGlr5teL4sqdap+EOowMifLuNGeIoLwc0VQ7u/BPxo+ocqiNa5jeVt0H0IVBblEh6ZwX1sGpIQIFnSSr8NBQA==} resolution: {integrity: sha512-CPGlr5teL4sqdap+EOowMifLuNGeIoLwc0VQ7u/BPxo+ocqiNa5jeVt0H0IVBblEh6ZwX1sGpIQIFnSSr8NBQA==}
dependencies: dependencies:
'@types/node': 20.11.25 '@types/node': 20.11.25
dev: true dev: true
/@types/unist@3.0.2:
resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==}
dev: true
/@types/web-bluetooth@0.0.20: /@types/web-bluetooth@0.0.20:
resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
dev: true dev: true
@ -4410,6 +4549,14 @@ packages:
eslint-visitor-keys: 3.4.3 eslint-visitor-keys: 3.4.3
dev: true dev: true
/@typescript/vfs@1.5.0:
resolution: {integrity: sha512-AJS307bPgbsZZ9ggCT3wwpg3VbTKMFNHfaY/uF0ahSkYYrPF2dSSKDNIDIQAHm9qJqbLvCsSJH7yN4Vs/CsMMg==}
dependencies:
debug: 4.3.4
transitivePeerDependencies:
- supports-color
dev: true
/@ungap/structured-clone@1.2.0: /@ungap/structured-clone@1.2.0:
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
dev: true dev: true
@ -4475,6 +4622,18 @@ packages:
pretty-format: 29.7.0 pretty-format: 29.7.0
dev: true dev: true
/@volar/language-core@1.11.1:
resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==}
dependencies:
'@volar/source-map': 1.11.1
dev: true
/@volar/source-map@1.11.1:
resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==}
dependencies:
muggle-string: 0.3.1
dev: true
/@vue/compiler-core@3.2.0: /@vue/compiler-core@3.2.0:
resolution: {integrity: sha512-+kfA4pisto26tcEh9Naf/qrizplYWnkBLHu3fX5Yu0c47RVBteVG3dHENFczl3Egwra+5NP5f3YuOgxK1ZMbNQ==} resolution: {integrity: sha512-+kfA4pisto26tcEh9Naf/qrizplYWnkBLHu3fX5Yu0c47RVBteVG3dHENFczl3Egwra+5NP5f3YuOgxK1ZMbNQ==}
dependencies: dependencies:
@ -4561,6 +4720,26 @@ packages:
rfdc: 1.3.1 rfdc: 1.3.1
dev: true dev: true
/@vue/language-core@1.8.27(typescript@5.2.2):
resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@volar/language-core': 1.11.1
'@volar/source-map': 1.11.1
'@vue/compiler-dom': 3.4.21
'@vue/shared': 3.4.21
computeds: 0.0.1
minimatch: 9.0.3
muggle-string: 0.3.1
path-browserify: 1.0.1
typescript: 5.2.2
vue-template-compiler: 2.7.16
dev: true
/@vue/reactivity@3.2.0: /@vue/reactivity@3.2.0:
resolution: {integrity: sha512-39L3UJe8+jYeCTM/QrDglDM05O11UrmyhazUOHOOj7+a9pPVu95HGInh5CkKQf98mx2gq6t3PPN8bCN5wK8Wwg==} resolution: {integrity: sha512-39L3UJe8+jYeCTM/QrDglDM05O11UrmyhazUOHOOj7+a9pPVu95HGInh5CkKQf98mx2gq6t3PPN8bCN5wK8Wwg==}
dependencies: dependencies:
@ -5109,6 +5288,10 @@ packages:
- supports-color - supports-color
dev: true dev: true
/ccount@2.0.1:
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
dev: true
/chai@4.3.10: /chai@4.3.10:
resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==}
engines: {node: '>=4'} engines: {node: '>=4'}
@ -5144,6 +5327,10 @@ packages:
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
dev: true dev: true
/character-entities@2.0.2:
resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
dev: true
/character-parser@2.2.0: /character-parser@2.2.0:
resolution: {integrity: sha1-x84o821LzZdE5f/CxfzeHHMmH8A=} resolution: {integrity: sha1-x84o821LzZdE5f/CxfzeHHMmH8A=}
dependencies: dependencies:
@ -5276,6 +5463,10 @@ packages:
dot-prop: 5.3.0 dot-prop: 5.3.0
dev: true dev: true
/computeds@0.0.1:
resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==}
dev: true
/concat-map@0.0.1: /concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
@ -5534,6 +5725,10 @@ packages:
engines: {node: '>= 12'} engines: {node: '>= 12'}
dev: true dev: true
/de-indent@1.0.2:
resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
dev: true
/debug@2.6.9: /debug@2.6.9:
resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
peerDependencies: peerDependencies:
@ -5566,6 +5761,12 @@ packages:
dependencies: dependencies:
ms: 2.1.2 ms: 2.1.2
/decode-named-character-reference@1.0.2:
resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==}
dependencies:
character-entities: 2.0.2
dev: true
/deep-eql@4.1.3: /deep-eql@4.1.3:
resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==}
engines: {node: '>=6'} engines: {node: '>=6'}
@ -5608,6 +5809,11 @@ packages:
resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
engines: {node: '>= 0.8'} engines: {node: '>= 0.8'}
/dequal@2.0.3:
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
engines: {node: '>=6'}
dev: true
/destroy@1.2.0: /destroy@1.2.0:
resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
@ -5623,6 +5829,12 @@ packages:
engines: {node: '>=8'} engines: {node: '>=8'}
dev: false dev: false
/devlop@1.1.0:
resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
dependencies:
dequal: 2.0.3
dev: true
/didyoumean@1.2.2: /didyoumean@1.2.2:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
@ -5862,6 +6074,11 @@ packages:
engines: {node: '>=10'} engines: {node: '>=10'}
dev: true dev: true
/escape-string-regexp@5.0.0:
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
engines: {node: '>=12'}
dev: true
/eslint-compat-utils@0.1.2(eslint@8.57.0): /eslint-compat-utils@0.1.2(eslint@8.57.0):
resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==}
engines: {node: '>=12'} engines: {node: '>=12'}
@ -6291,6 +6508,20 @@ packages:
resolution: {integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==} resolution: {integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==}
dev: true dev: true
/floating-vue@5.2.2(vue@3.4.21):
resolution: {integrity: sha512-afW+h2CFafo+7Y9Lvw/xsqjaQlKLdJV7h1fCHfcYQ1C4SVMlu7OAekqWgu5d4SgvkBVU0pVpLlVsrSTBURFRkg==}
peerDependencies:
'@nuxt/kit': ^3.2.0
vue: ^3.2.0
peerDependenciesMeta:
'@nuxt/kit':
optional: true
dependencies:
'@floating-ui/dom': 1.1.1
vue: 3.4.21(typescript@5.2.2)
vue-resize: 2.0.0-alpha.1(vue@3.4.21)
dev: true
/focus-trap@7.5.4: /focus-trap@7.5.4:
resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==} resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==}
dependencies: dependencies:
@ -6632,6 +6863,11 @@ packages:
dependencies: dependencies:
function-bind: 1.1.2 function-bind: 1.1.2
/he@1.2.0:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
dev: true
/hookable@5.5.3: /hookable@5.5.3:
resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
dev: true dev: true
@ -7240,6 +7476,10 @@ packages:
wrap-ansi: 9.0.0 wrap-ansi: 9.0.0
dev: true dev: true
/longest-streak@3.1.0:
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
dev: true
/loose-envify@1.4.0: /loose-envify@1.4.0:
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true hasBin: true
@ -7313,6 +7553,147 @@ packages:
resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==}
dev: true dev: true
/markdown-table@3.0.3:
resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==}
dev: true
/mdast-util-find-and-replace@3.0.1:
resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==}
dependencies:
'@types/mdast': 4.0.3
escape-string-regexp: 5.0.0
unist-util-is: 6.0.0
unist-util-visit-parents: 6.0.1
dev: true
/mdast-util-from-markdown@2.0.0:
resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==}
dependencies:
'@types/mdast': 4.0.3
'@types/unist': 3.0.2
decode-named-character-reference: 1.0.2
devlop: 1.1.0
mdast-util-to-string: 4.0.0
micromark: 4.0.0
micromark-util-decode-numeric-character-reference: 2.0.1
micromark-util-decode-string: 2.0.0
micromark-util-normalize-identifier: 2.0.0
micromark-util-symbol: 2.0.0
micromark-util-types: 2.0.0
unist-util-stringify-position: 4.0.0
transitivePeerDependencies:
- supports-color
dev: true
/mdast-util-gfm-autolink-literal@2.0.0:
resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==}
dependencies:
'@types/mdast': 4.0.3
ccount: 2.0.1
devlop: 1.1.0
mdast-util-find-and-replace: 3.0.1
micromark-util-character: 2.1.0
dev: true
/mdast-util-gfm-footnote@2.0.0:
resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==}
dependencies:
'@types/mdast': 4.0.3
devlop: 1.1.0
mdast-util-from-markdown: 2.0.0
mdast-util-to-markdown: 2.1.0
micromark-util-normalize-identifier: 2.0.0
transitivePeerDependencies:
- supports-color
dev: true
/mdast-util-gfm-strikethrough@2.0.0:
resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==}
dependencies:
'@types/mdast': 4.0.3
mdast-util-from-markdown: 2.0.0
mdast-util-to-markdown: 2.1.0
transitivePeerDependencies:
- supports-color
dev: true
/mdast-util-gfm-table@2.0.0:
resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==}
dependencies:
'@types/mdast': 4.0.3
devlop: 1.1.0
markdown-table: 3.0.3
mdast-util-from-markdown: 2.0.0
mdast-util-to-markdown: 2.1.0
transitivePeerDependencies:
- supports-color
dev: true
/mdast-util-gfm-task-list-item@2.0.0:
resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==}
dependencies:
'@types/mdast': 4.0.3
devlop: 1.1.0
mdast-util-from-markdown: 2.0.0
mdast-util-to-markdown: 2.1.0
transitivePeerDependencies:
- supports-color
dev: true
/mdast-util-gfm@3.0.0:
resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==}
dependencies:
mdast-util-from-markdown: 2.0.0
mdast-util-gfm-autolink-literal: 2.0.0
mdast-util-gfm-footnote: 2.0.0
mdast-util-gfm-strikethrough: 2.0.0
mdast-util-gfm-table: 2.0.0
mdast-util-gfm-task-list-item: 2.0.0
mdast-util-to-markdown: 2.1.0
transitivePeerDependencies:
- supports-color
dev: true
/mdast-util-phrasing@4.1.0:
resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==}
dependencies:
'@types/mdast': 4.0.3
unist-util-is: 6.0.0
dev: true
/mdast-util-to-hast@13.1.0:
resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==}
dependencies:
'@types/hast': 3.0.4
'@types/mdast': 4.0.3
'@ungap/structured-clone': 1.2.0
devlop: 1.1.0
micromark-util-sanitize-uri: 2.0.0
trim-lines: 3.0.1
unist-util-position: 5.0.0
unist-util-visit: 5.0.0
vfile: 6.0.1
dev: true
/mdast-util-to-markdown@2.1.0:
resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==}
dependencies:
'@types/mdast': 4.0.3
'@types/unist': 3.0.2
longest-streak: 3.1.0
mdast-util-phrasing: 4.1.0
mdast-util-to-string: 4.0.0
micromark-util-decode-string: 2.0.0
unist-util-visit: 5.0.0
zwitch: 2.0.4
dev: true
/mdast-util-to-string@4.0.0:
resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
dependencies:
'@types/mdast': 4.0.3
dev: true
/media-typer@0.3.0: /media-typer@0.3.0:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
engines: {node: '>= 0.6'} engines: {node: '>= 0.6'}
@ -7347,6 +7728,181 @@ packages:
resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
engines: {node: '>= 0.6'} engines: {node: '>= 0.6'}
/micromark-core-commonmark@2.0.0:
resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==}
dependencies:
decode-named-character-reference: 1.0.2
devlop: 1.1.0
micromark-factory-destination: 2.0.0
micromark-factory-label: 2.0.0
micromark-factory-space: 2.0.0
micromark-factory-title: 2.0.0
micromark-factory-whitespace: 2.0.0
micromark-util-character: 2.1.0
micromark-util-chunked: 2.0.0
micromark-util-classify-character: 2.0.0
micromark-util-html-tag-name: 2.0.0
micromark-util-normalize-identifier: 2.0.0
micromark-util-resolve-all: 2.0.0
micromark-util-subtokenize: 2.0.0
micromark-util-symbol: 2.0.0
micromark-util-types: 2.0.0
dev: true
/micromark-factory-destination@2.0.0:
resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==}
dependencies:
micromark-util-character: 2.1.0
micromark-util-symbol: 2.0.0
micromark-util-types: 2.0.0
dev: true
/micromark-factory-label@2.0.0:
resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==}
dependencies:
devlop: 1.1.0
micromark-util-character: 2.1.0
micromark-util-symbol: 2.0.0
micromark-util-types: 2.0.0
dev: true
/micromark-factory-space@2.0.0:
resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==}
dependencies:
micromark-util-character: 2.1.0
micromark-util-types: 2.0.0
dev: true
/micromark-factory-title@2.0.0:
resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==}
dependencies:
micromark-factory-space: 2.0.0
micromark-util-character: 2.1.0
micromark-util-symbol: 2.0.0
micromark-util-types: 2.0.0
dev: true
/micromark-factory-whitespace@2.0.0:
resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==}
dependencies:
micromark-factory-space: 2.0.0
micromark-util-character: 2.1.0
micromark-util-symbol: 2.0.0
micromark-util-types: 2.0.0
dev: true
/micromark-util-character@2.1.0:
resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==}
dependencies:
micromark-util-symbol: 2.0.0
micromark-util-types: 2.0.0
dev: true
/micromark-util-chunked@2.0.0:
resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==}
dependencies:
micromark-util-symbol: 2.0.0
dev: true
/micromark-util-classify-character@2.0.0:
resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==}
dependencies:
micromark-util-character: 2.1.0
micromark-util-symbol: 2.0.0
micromark-util-types: 2.0.0
dev: true
/micromark-util-combine-extensions@2.0.0:
resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==}
dependencies:
micromark-util-chunked: 2.0.0
micromark-util-types: 2.0.0
dev: true
/micromark-util-decode-numeric-character-reference@2.0.1:
resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==}
dependencies:
micromark-util-symbol: 2.0.0
dev: true
/micromark-util-decode-string@2.0.0:
resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==}
dependencies:
decode-named-character-reference: 1.0.2
micromark-util-character: 2.1.0
micromark-util-decode-numeric-character-reference: 2.0.1
micromark-util-symbol: 2.0.0
dev: true
/micromark-util-encode@2.0.0:
resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==}
dev: true
/micromark-util-html-tag-name@2.0.0:
resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==}
dev: true
/micromark-util-normalize-identifier@2.0.0:
resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==}
dependencies:
micromark-util-symbol: 2.0.0
dev: true
/micromark-util-resolve-all@2.0.0:
resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==}
dependencies:
micromark-util-types: 2.0.0
dev: true
/micromark-util-sanitize-uri@2.0.0:
resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==}
dependencies:
micromark-util-character: 2.1.0
micromark-util-encode: 2.0.0
micromark-util-symbol: 2.0.0
dev: true
/micromark-util-subtokenize@2.0.0:
resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==}
dependencies:
devlop: 1.1.0
micromark-util-chunked: 2.0.0
micromark-util-symbol: 2.0.0
micromark-util-types: 2.0.0
dev: true
/micromark-util-symbol@2.0.0:
resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==}
dev: true
/micromark-util-types@2.0.0:
resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==}
dev: true
/micromark@4.0.0:
resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==}
dependencies:
'@types/debug': 4.1.12
debug: 4.3.4
decode-named-character-reference: 1.0.2
devlop: 1.1.0
micromark-core-commonmark: 2.0.0
micromark-factory-space: 2.0.0
micromark-util-character: 2.1.0
micromark-util-chunked: 2.0.0
micromark-util-combine-extensions: 2.0.0
micromark-util-decode-numeric-character-reference: 2.0.1
micromark-util-encode: 2.0.0
micromark-util-normalize-identifier: 2.0.0
micromark-util-resolve-all: 2.0.0
micromark-util-sanitize-uri: 2.0.0
micromark-util-subtokenize: 2.0.0
micromark-util-symbol: 2.0.0
micromark-util-types: 2.0.0
transitivePeerDependencies:
- supports-color
dev: true
/micromatch@4.0.5: /micromatch@4.0.5:
resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
engines: {node: '>=8.6'} engines: {node: '>=8.6'}
@ -7537,6 +8093,10 @@ packages:
/ms@2.1.3: /ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
/muggle-string@0.3.1:
resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==}
dev: true
/mustache@4.2.0: /mustache@4.2.0:
resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==}
hasBin: true hasBin: true
@ -7840,6 +8400,10 @@ packages:
resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
engines: {node: '>= 0.8'} engines: {node: '>= 0.8'}
/path-browserify@1.0.1:
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
dev: true
/path-exists@4.0.0: /path-exists@4.0.0:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
engines: {node: '>=8'} engines: {node: '>=8'}
@ -8729,6 +9293,12 @@ packages:
'@shikijs/core': 1.1.5 '@shikijs/core': 1.1.5
dev: true dev: true
/shiki@1.1.7:
resolution: {integrity: sha512-9kUTMjZtcPH3i7vHunA6EraTPpPOITYTdA5uMrvsJRexktqP0s7P3s9HVK80b4pP42FRVe03D7fT3NmJv2yYhw==}
dependencies:
'@shikijs/core': 1.1.7
dev: true
/side-channel@1.0.4: /side-channel@1.0.4:
resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
dependencies: dependencies:
@ -9170,6 +9740,10 @@ packages:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
dev: false dev: false
/trim-lines@3.0.1:
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
dev: true
/ts-api-utils@1.0.1(typescript@5.2.2): /ts-api-utils@1.0.1(typescript@5.2.2):
resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==}
engines: {node: '>=16.13.0'} engines: {node: '>=16.13.0'}
@ -9240,6 +9814,35 @@ packages:
fsevents: 2.3.3 fsevents: 2.3.3
dev: true dev: true
/twoslash-protocol@0.2.4:
resolution: {integrity: sha512-AEGTJj4mFGfvQc/M6qi0+s82Zq+mxLcjWZU+EUHGG8LQElyHDs+uDR+/3+m1l+WP7WL+QmWrVzFXgFX+hBg+bg==}
dev: true
/twoslash-vue@0.2.4(typescript@5.2.2):
resolution: {integrity: sha512-AIcsYRSxn5WuZC+dD7/n99s1UEY6e5IljoGL3YijQvI/pylgsKk5sWXptp5NrRTH0srBLXoeVpE1re1Eo6eiJw==}
peerDependencies:
typescript: '*'
dependencies:
'@vue/language-core': 1.8.27(typescript@5.2.2)
twoslash: 0.2.4(typescript@5.2.2)
twoslash-protocol: 0.2.4
typescript: 5.2.2
transitivePeerDependencies:
- supports-color
dev: true
/twoslash@0.2.4(typescript@5.2.2):
resolution: {integrity: sha512-hc3y11BjLHP4kV37TR6lUKksxpZp0LQi9kCy95ka6qobye/gV49PqXZIuWlRaRVGNvp4AJBMg8aiwkp0M8x/nQ==}
peerDependencies:
typescript: '*'
dependencies:
'@typescript/vfs': 1.5.0
twoslash-protocol: 0.2.4
typescript: 5.2.2
transitivePeerDependencies:
- supports-color
dev: true
/type-check@0.4.0: /type-check@0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'} engines: {node: '>= 0.8.0'}
@ -9371,6 +9974,39 @@ packages:
engines: {node: '>=4'} engines: {node: '>=4'}
dev: false dev: false
/unist-util-is@6.0.0:
resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
dependencies:
'@types/unist': 3.0.2
dev: true
/unist-util-position@5.0.0:
resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
dependencies:
'@types/unist': 3.0.2
dev: true
/unist-util-stringify-position@4.0.0:
resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
dependencies:
'@types/unist': 3.0.2
dev: true
/unist-util-visit-parents@6.0.1:
resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
dependencies:
'@types/unist': 3.0.2
unist-util-is: 6.0.0
dev: true
/unist-util-visit@5.0.0:
resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
dependencies:
'@types/unist': 3.0.2
unist-util-is: 6.0.0
unist-util-visit-parents: 6.0.1
dev: true
/universalify@2.0.0: /universalify@2.0.0:
resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
engines: {node: '>= 10.0.0'} engines: {node: '>= 10.0.0'}
@ -9438,6 +10074,21 @@ packages:
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
engines: {node: '>= 0.8'} engines: {node: '>= 0.8'}
/vfile-message@4.0.2:
resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==}
dependencies:
'@types/unist': 3.0.2
unist-util-stringify-position: 4.0.0
dev: true
/vfile@6.0.1:
resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==}
dependencies:
'@types/unist': 3.0.2
unist-util-stringify-position: 4.0.0
vfile-message: 4.0.2
dev: true
/vite-node@1.3.1: /vite-node@1.3.1:
resolution: {integrity: sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng==} resolution: {integrity: sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng==}
engines: {node: ^18.0.0 || >=20.0.0} engines: {node: ^18.0.0 || >=20.0.0}
@ -9571,6 +10222,14 @@ packages:
vue: 3.4.21(typescript@5.2.2) vue: 3.4.21(typescript@5.2.2)
dev: true dev: true
/vue-resize@2.0.0-alpha.1(vue@3.4.21):
resolution: {integrity: sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg==}
peerDependencies:
vue: ^3.0.0
dependencies:
vue: 3.4.21(typescript@5.2.2)
dev: true
/vue-router@4.3.0(vue@3.4.21): /vue-router@4.3.0(vue@3.4.21):
resolution: {integrity: sha512-dqUcs8tUeG+ssgWhcPbjHvazML16Oga5w34uCUmsk7i0BcnskoLGwjpa15fqMr2Fa5JgVBrdL2MEgqz6XZ/6IQ==} resolution: {integrity: sha512-dqUcs8tUeG+ssgWhcPbjHvazML16Oga5w34uCUmsk7i0BcnskoLGwjpa15fqMr2Fa5JgVBrdL2MEgqz6XZ/6IQ==}
peerDependencies: peerDependencies:
@ -9580,6 +10239,13 @@ packages:
vue: 3.4.21(typescript@5.2.2) vue: 3.4.21(typescript@5.2.2)
dev: false dev: false
/vue-template-compiler@2.7.16:
resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==}
dependencies:
de-indent: 1.0.2
he: 1.2.0
dev: true
/vue@3.2.0: /vue@3.2.0:
resolution: {integrity: sha512-eMo5yCdkWRmBfqp/acBI/Y1Omgk0NyGqPViaU66eOpKarXNtkdImzDA57+E76jnWVr6MEp/rg1n0vnxaVvALMQ==} resolution: {integrity: sha512-eMo5yCdkWRmBfqp/acBI/Y1Omgk0NyGqPViaU66eOpKarXNtkdImzDA57+E76jnWVr6MEp/rg1n0vnxaVvALMQ==}
dependencies: dependencies:
@ -9768,6 +10434,10 @@ packages:
resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==}
dev: true dev: true
/zwitch@2.0.4:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
dev: true
file:playground/alias/dir/module: file:playground/alias/dir/module:
resolution: {directory: playground/alias/dir/module, type: directory} resolution: {directory: playground/alias/dir/module, type: directory}
name: '@vitejs/test-aliased-module' name: '@vitejs/test-aliased-module'

View File

@ -2,3 +2,4 @@ packages:
- 'packages/*' - 'packages/*'
- 'playground/**' - 'playground/**'
- 'packages/**/__tests__/**' - 'packages/**/__tests__/**'
- docs