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

View File

@ -1,6 +1,8 @@
import { h } from 'vue'
import type { Theme } from 'vitepress'
import DefaultTheme from 'vitepress/theme'
import TwoslashFloatingVue from '@shikijs/vitepress-twoslash/client'
import '@shikijs/vitepress-twoslash/style.css'
import './styles/vars.css'
import HomeSponsors from './components/HomeSponsors.vue'
import AsideSponsors from './components/AsideSponsors.vue'
@ -16,5 +18,6 @@ export default {
},
enhanceApp({ app }) {
app.component('SvgImage', SvgImage)
app.use(TwoslashFloatingVue)
},
} 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.
```js
<!-- prettier-ignore-start -->
```js twoslash
/** @type {import('vite').UserConfig} */
const config = {
build: {
// ---cut-before---
modulePreload: {
resolveDependencies: (filename, deps, { hostId, hostType }) => {
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).

View File

@ -19,7 +19,9 @@ Dependencies to exclude from pre-bundling.
:::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:
```js
```js twoslash
import { defineConfig } from 'vite'
// ---cut---
export default defineConfig({
optimizeDeps: {
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:
```js
```js twoslash
import { defineConfig } from 'vite'
// ---cut---
export default defineConfig({
optimizeDeps: {
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:
```js
```js twoslash
import { defineConfig } from 'vite'
// ---cut---
export default defineConfig(({ command, mode, isSsrBuild, isPreview }) => {
if (command === 'serve') {
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:
```js
```js twoslash
import { defineConfig } from 'vite'
// ---cut---
export default defineConfig(async ({ command, mode }) => {
const data = await asyncFunction()
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.
```js
```js twoslash
import { defineConfig, loadEnv } from 'vite'
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`.
```js
```js twoslash
// vite.config.js
import { defineConfig } from 'vite'
import dns from 'dns'
import dns from 'node:dns'
dns.setDefaultResultOrder('verbatim')
@ -238,7 +238,7 @@ Create Vite server in middleware mode.
- **Example:**
```js
```js twoslash
import express from 'express'
import { createServer as createViteServer } from 'vite'
@ -358,9 +358,9 @@ export default defineConfig({
// in their paths to the ignore list.
sourcemapIgnoreList(sourcePath, sourcemapPath) {
return sourcePath.includes('node_modules')
}
}
};
},
},
})
```
::: 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.
```js
```ts twoslash
import { createLogger, defineConfig } from 'vite'
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:
```ts
```ts twoslash
import type { ModuleNamespace } from 'vite/types/hot.d.ts'
import type { InferCustomEventPayload } from 'vite/types/customEvent.d.ts'
// ---cut---
interface ImportMeta {
readonly hot?: ViteHotContext
}
type ModuleNamespace = Record<string, any> & {
[Symbol.toStringTag]: 'Module'
}
interface ViteHotContext {
readonly data: any
@ -32,7 +32,6 @@ interface ViteHotContext {
prune(cb: (data: any) => void): void
invalidate(message?: string): void
// `InferCustomEventPayload` provides types for built-in Vite events
on<T extends string>(
event: T,
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:
```js
```js twoslash
import 'vite/client'
// ---cut---
export const count = 1
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:
```js
```js twoslash
// @filename: /foo.d.ts
export declare const foo: () => void
// @filename: /example.js
import 'vite/client'
// ---cut---
import { foo } from './foo.js'
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:
```js
```js twoslash
import 'vite/client'
// ---cut---
function 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.
```js
```js twoslash
import 'vite/client'
// ---cut---
function 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.
```js
```js twoslash
import 'vite/client'
// ---cut---
// ok
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:
```js
```js twoslash
import 'vite/client'
// ---cut---
import.meta.hot.accept((module) => {
// You may use the new module instance to decide whether to invalidate.
if (cannotHandleUpdate(module)) {

View File

@ -12,13 +12,12 @@ async function createServer(inlineConfig?: InlineConfig): Promise<ViteDevServer>
**Example Usage:**
```js
import { fileURLToPath } from 'url'
```ts twoslash
import { fileURLToPath } from 'node:url'
import { createServer } from 'vite'
const __dirname = fileURLToPath(new URL('.', import.meta.url))
;(async () => {
const server = await createServer({
// any valid user config options, plus `mode` and `configFile`
configFile: false,
@ -31,7 +30,6 @@ const __dirname = fileURLToPath(new URL('.', import.meta.url))
server.printUrls()
server.bindCLIShortcuts({ print: true })
})()
```
::: tip NOTE
@ -44,7 +42,7 @@ When using [middleware mode](/config/server-options.html#server-middlewaremode)
<details>
<summary>Example</summary>
```ts
```ts twoslash
import http from 'http'
import { createServer } from 'vite'
@ -57,7 +55,6 @@ const vite = await createServer({
// Provide the parent http server for proxy WebSocket
server: parentServer,
},
},
proxy: {
'/ws': {
target: 'ws://localhost:3000',
@ -65,8 +62,10 @@ const vite = await createServer({
ws: true,
},
},
},
})
// @noErrors: 2339
parentServer.use(vite.middlewares)
```
@ -210,14 +209,13 @@ async function build(
**Example Usage:**
```js
import path from 'path'
import { fileURLToPath } from 'url'
```ts twoslash
import path from 'node:path'
import { fileURLToPath } from 'node:url'
import { build } from 'vite'
const __dirname = fileURLToPath(new URL('.', import.meta.url))
;(async () => {
await build({
root: path.resolve(__dirname, './project'),
base: '/foo/',
@ -227,7 +225,6 @@ const __dirname = fileURLToPath(new URL('.', import.meta.url))
},
},
})
})()
```
## `preview`
@ -240,9 +237,9 @@ async function preview(inlineConfig?: InlineConfig): Promise<PreviewServer>
**Example Usage:**
```js
```ts twoslash
import { preview } from 'vite'
;(async () => {
const previewServer = await preview({
// any valid user config options, plus `mode` and `configFile`
preview: {
@ -253,7 +250,6 @@ import { preview } from 'vite'
previewServer.printUrls()
previewServer.bindCLIShortcuts({ print: true })
})()
```
## `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:
```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) =>
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:
```ts
```ts twoslash
import 'vite/client'
// ---cut---
// client side
if (import.meta.hot) {
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:
```js
```js twoslash
import 'vite/client'
// ---cut---
import imgUrl from './img.png'
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()`
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'
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).
```js
```js twoslash
import 'vite/client'
// ---cut---
import workletURL from 'extra-scalloped-border/worklet.js?url'
CSS.paintWorklet.addModule(workletURL)
```
@ -53,7 +59,9 @@ CSS.paintWorklet.addModule(workletURL)
Assets can be imported as strings using the `?raw` suffix.
```js
```js twoslash
import 'vite/client'
// ---cut---
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.
```js
```js twoslash
import 'vite/client'
// ---cut---
// Separate chunk in the production build
import Worker from './shader.js?worker'
const worker = new Worker()
```
```js
```js twoslash
import 'vite/client'
// ---cut---
// sharedworker
import SharedWorker from './shader.js?sharedworker'
const sharedWorker = new SharedWorker()
```
```js
```js twoslash
import 'vite/client'
// ---cut---
// Inlined as base64 strings
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:
```js
```js twoslash
import { defineConfig } from 'vite'
// ---cut---
// vite.config.js
export default defineConfig({
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`:
```js
// vite.config.js
export default defineConfig({
build: {
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.
```js
```js twoslash
window.addEventListener('vite:preloadError', (event) => {
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:
```js
```js twoslash
// vite.config.js
import { resolve } from 'path'
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`:
```js
```js twoslash
// vite.config.js
import { resolve } from 'path'
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`.
```ts
<!-- prettier-ignore-start -->
```ts twoslash
import type { UserConfig } from 'vite'
const config: UserConfig = {
// ---cut-before---
experimental: {
renderBuiltUrl(filename: string, { hostType }: { hostType: 'js' | 'css' | 'html' }) {
renderBuiltUrl(filename, { hostType }) {
if (hostType === 'js') {
return { runtime: `window.__toCdnUrl(${JSON.stringify(filename)})` }
} else {
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.
```ts
```ts twoslash
import type { UserConfig } from 'vite'
import path from 'node:path'
const config: UserConfig = {
// ---cut-before---
experimental: {
renderBuiltUrl(filename: string, { hostId, hostType, type }: { hostId: string, hostType: 'js' | 'css' | 'html', type: 'public' | 'asset' }) {
renderBuiltUrl(filename, { hostId, hostType, type }) {
if (type === 'public') {
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)})` }
}
else {
} else {
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.
```js
```js twoslash
import { defineConfig } from 'vite'
// ---cut---
export default defineConfig({
optimizeDeps: {
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:
```js
```js twoslash
// vite.config.js
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:
```js
```js twoslash
// vite.config.js
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'
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:
```js
```js twoslash
import 'vite/client'
// ---cut---
// .apply-color -> applyColor
import { applyColor } from './example.module.css'
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.
```js
```js twoslash
import 'vite/client'
// ---cut---
import './foo.css' // will be injected into the page
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:
```js
```js twoslash
import 'vite/client'
// ---cut---
import imgUrl from './img.png'
document.getElementById('hero-img').src = imgUrl
```
Special queries can modify how assets are loaded:
```js
```js twoslash
import 'vite/client'
// ---cut---
// Explicitly load assets as URL
import assetAsURL from './asset.js?url'
```
```js
```js twoslash
import 'vite/client'
// ---cut---
// Load assets as strings
import assetAsString from './shader.glsl?raw'
```
```js
```js twoslash
import 'vite/client'
// ---cut---
// Load Web Workers
import Worker from './worker.js?worker'
```
```js
```js twoslash
import 'vite/client'
// ---cut---
// Web Workers inlined as base64 strings at build time
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:
```js
```js twoslash
import 'vite/client'
// ---cut---
// import the entire object
import json from './example.json'
// 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:
```js
```js twoslash
import 'vite/client'
// ---cut---
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:
```js
```js twoslash
import 'vite/client'
// ---cut---
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
```js
```js twoslash
import 'vite/client'
// ---cut---
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:
```js
```js twoslash
import 'vite/client'
// ---cut---
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.
```ts
```ts twoslash
import 'vite/client'
// ---cut---
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.
```ts
```ts twoslash
import 'vite/client'
// ---cut---
const modules = import.meta.glob('./dir/*.js', {
import: 'setup',
eager: true,
@ -451,7 +481,9 @@ const modules = {
Set `import` to `default` to import the default export.
```ts
```ts twoslash
import 'vite/client'
// ---cut---
const modules = import.meta.glob('./dir/*.js', {
import: 'default',
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):
```ts
```ts twoslash
import 'vite/client'
// ---cut---
const moduleStrings = import.meta.glob('./dir/*.svg', {
query: '?raw',
import: 'default',
@ -497,7 +531,9 @@ const moduleUrls = {
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', {
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`.
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'
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:
```js
```js twoslash
import 'vite/client'
import init from './example.wasm?init'
// ---cut---
init({
imports: {
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:
```js
```js twoslash
import 'vite/client'
// ---cut---
import wasmUrl from 'foo.wasm?url'
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:
```js
```js twoslash
import 'vite/client'
// ---cut---
import wasmUrl from 'foo.wasm?url'
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:
```js
```js twoslash
import 'vite/client'
// ---cut---
import MyWorker from './worker?worker'
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:
```js
```js twoslash
import 'vite/client'
// ---cut---
import MyWorker from './worker?worker&inline'
```
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'
```

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
```js
```js twoslash
import 'vite/client'
// ---cut---
if (import.meta.env.SSR) {
// ... 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**
```js{15-18}
import fs from 'fs'
import path from 'path'
import { fileURLToPath } from 'url'
```js{15-18} twoslash
import fs from 'node:fs'
import path from 'node:path'
import { fileURLToPath } from 'node:url'
import express from 'express'
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:
```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) => {
const url = req.originalUrl
@ -246,7 +259,9 @@ Some frameworks such as Vue or Svelte compile components into different formats
**Example:**
```js
```js twoslash
/** @type {() => import('vite').Plugin} */
// ---cut---
export function mySSRPlugin() {
return {
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
```
```js
```js twoslash
// vite.config.js
import legacy from '@vitejs/plugin-legacy'
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
- `post`: invoke plugin after Vite build plugins
```js
```js twoslash
// vite.config.js
import image from '@rollup/plugin-image'
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'`:
```js
```js twoslash
// vite.config.js
import typescript2 from 'rollup-plugin-typescript2'
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",
"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",
"docs": "vitepress dev docs",
"docs-build": "vitepress build docs",
"docs-serve": "vitepress serve docs",
"docs": "pnpm --filter=docs run docs",
"docs-build": "pnpm --filter=docs run docs-build",
"docs-serve": "pnpm --filter=docs run docs-serve",
"build": "pnpm -r --filter='./packages/*' run build",
"dev": "pnpm -r --parallel --filter='./packages/*' run dev",
"release": "tsx scripts/release.ts",
@ -85,9 +85,7 @@
"typescript": "^5.2.2",
"unbuild": "^2.0.0",
"vite": "workspace:*",
"vitepress": "1.0.0-rc.45",
"vitest": "^1.3.1",
"vue": "^3.4.21"
"vitest": "^1.3.1"
},
"simple-git-hooks": {
"pre-commit": "pnpm exec lint-staged --concurrent false"

View File

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

View File

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

View File

@ -159,12 +159,21 @@ importers:
vite:
specifier: workspace:*
version: link:packages/vite
vitepress:
specifier: 1.0.0-rc.45
version: 1.0.0-rc.45(typescript@5.2.2)
vitest:
specifier: ^1.3.1
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:
specifier: ^3.4.21
version: 3.4.21(typescript@5.2.2)
@ -3607,6 +3616,22 @@ packages:
engines: {node: '>=14'}
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:
resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
engines: {node: '>=10.10.0'}
@ -4068,12 +4093,44 @@ packages:
resolution: {integrity: sha512-cKc5vGQ4p/4sjx48BHIO7CvLaN32vqpz5Wh7v2n+U1EezGdfX4Wms7khBctKz3iCg9yYq4sfGUc2t+JWj6EUsw==}
dev: true
/@shikijs/core@1.1.7:
resolution: {integrity: sha512-gTYLUIuD1UbZp/11qozD3fWpUTuMqPSf3svDMMrL0UmlGU7D9dPw/V1FonwAorCUJBltaaESxq90jrSjQyGixg==}
dev: true
/@shikijs/transformers@1.1.5:
resolution: {integrity: sha512-ot6KWPmLuSN9nA9FAhttOXZIjKIy7cnwpNtI9aWmYN72RUaDz8eojRfMGUXsXXUxW/buvcvdZQAQldk7/pFpdw==}
dependencies:
shiki: 1.1.5
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:
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
dev: true
@ -4123,10 +4180,23 @@ packages:
'@babel/types': 7.24.0
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:
resolution: {integrity: sha512-+euflG6ygo4bn0JHtn4pYqcXwRtLvElQ7/nnjDu7iYG56H0+OhCd7d6Ug0IE3WcFpZozBKW2+80FUbv5QGk5AQ==}
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:
resolution: {integrity: sha512-ag0BfJLZf6CQz8VIuRIEYQ5Ggwk/82uvTQf27RcpyDNbY0Vw49LIPqAxk5tqYfrCs9xDaIMvl4aj7ZopnYL8bA==}
dev: true
@ -4164,6 +4234,24 @@ packages:
'@types/node': 20.11.25
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:
resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==}
dependencies:
@ -4171,6 +4259,16 @@ packages:
'@types/node': 20.11.25
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:
resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==}
dev: true
@ -4200,6 +4298,12 @@ packages:
'@types/mdurl': 1.0.2
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:
resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==}
dev: true
@ -4210,6 +4314,14 @@ packages:
'@types/braces': 3.0.1
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:
resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==}
dev: true
@ -4248,6 +4360,14 @@ packages:
kleur: 3.0.3
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:
resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
dev: true
@ -4262,12 +4382,31 @@ packages:
resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
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:
resolution: {integrity: sha512-CPGlr5teL4sqdap+EOowMifLuNGeIoLwc0VQ7u/BPxo+ocqiNa5jeVt0H0IVBblEh6ZwX1sGpIQIFnSSr8NBQA==}
dependencies:
'@types/node': 20.11.25
dev: true
/@types/unist@3.0.2:
resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==}
dev: true
/@types/web-bluetooth@0.0.20:
resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
dev: true
@ -4410,6 +4549,14 @@ packages:
eslint-visitor-keys: 3.4.3
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:
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
dev: true
@ -4475,6 +4622,18 @@ packages:
pretty-format: 29.7.0
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:
resolution: {integrity: sha512-+kfA4pisto26tcEh9Naf/qrizplYWnkBLHu3fX5Yu0c47RVBteVG3dHENFczl3Egwra+5NP5f3YuOgxK1ZMbNQ==}
dependencies:
@ -4561,6 +4720,26 @@ packages:
rfdc: 1.3.1
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:
resolution: {integrity: sha512-39L3UJe8+jYeCTM/QrDglDM05O11UrmyhazUOHOOj7+a9pPVu95HGInh5CkKQf98mx2gq6t3PPN8bCN5wK8Wwg==}
dependencies:
@ -5109,6 +5288,10 @@ packages:
- supports-color
dev: true
/ccount@2.0.1:
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
dev: true
/chai@4.3.10:
resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==}
engines: {node: '>=4'}
@ -5144,6 +5327,10 @@ packages:
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
dev: true
/character-entities@2.0.2:
resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
dev: true
/character-parser@2.2.0:
resolution: {integrity: sha1-x84o821LzZdE5f/CxfzeHHMmH8A=}
dependencies:
@ -5276,6 +5463,10 @@ packages:
dot-prop: 5.3.0
dev: true
/computeds@0.0.1:
resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==}
dev: true
/concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
@ -5534,6 +5725,10 @@ packages:
engines: {node: '>= 12'}
dev: true
/de-indent@1.0.2:
resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
dev: true
/debug@2.6.9:
resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
peerDependencies:
@ -5566,6 +5761,12 @@ packages:
dependencies:
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:
resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==}
engines: {node: '>=6'}
@ -5608,6 +5809,11 @@ packages:
resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
engines: {node: '>= 0.8'}
/dequal@2.0.3:
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
engines: {node: '>=6'}
dev: true
/destroy@1.2.0:
resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
@ -5623,6 +5829,12 @@ packages:
engines: {node: '>=8'}
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:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
@ -5862,6 +6074,11 @@ packages:
engines: {node: '>=10'}
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):
resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==}
engines: {node: '>=12'}
@ -6291,6 +6508,20 @@ packages:
resolution: {integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==}
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:
resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==}
dependencies:
@ -6632,6 +6863,11 @@ packages:
dependencies:
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:
resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
dev: true
@ -7240,6 +7476,10 @@ packages:
wrap-ansi: 9.0.0
dev: true
/longest-streak@3.1.0:
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
dev: true
/loose-envify@1.4.0:
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
@ -7313,6 +7553,147 @@ packages:
resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==}
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:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
engines: {node: '>= 0.6'}
@ -7347,6 +7728,181 @@ packages:
resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
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:
resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
engines: {node: '>=8.6'}
@ -7537,6 +8093,10 @@ packages:
/ms@2.1.3:
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:
resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==}
hasBin: true
@ -7840,6 +8400,10 @@ packages:
resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
engines: {node: '>= 0.8'}
/path-browserify@1.0.1:
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
dev: true
/path-exists@4.0.0:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
engines: {node: '>=8'}
@ -8729,6 +9293,12 @@ packages:
'@shikijs/core': 1.1.5
dev: true
/shiki@1.1.7:
resolution: {integrity: sha512-9kUTMjZtcPH3i7vHunA6EraTPpPOITYTdA5uMrvsJRexktqP0s7P3s9HVK80b4pP42FRVe03D7fT3NmJv2yYhw==}
dependencies:
'@shikijs/core': 1.1.7
dev: true
/side-channel@1.0.4:
resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
dependencies:
@ -9170,6 +9740,10 @@ packages:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
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):
resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==}
engines: {node: '>=16.13.0'}
@ -9240,6 +9814,35 @@ packages:
fsevents: 2.3.3
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:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
@ -9371,6 +9974,39 @@ packages:
engines: {node: '>=4'}
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:
resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
engines: {node: '>= 10.0.0'}
@ -9438,6 +10074,21 @@ packages:
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
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:
resolution: {integrity: sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng==}
engines: {node: ^18.0.0 || >=20.0.0}
@ -9571,6 +10222,14 @@ packages:
vue: 3.4.21(typescript@5.2.2)
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):
resolution: {integrity: sha512-dqUcs8tUeG+ssgWhcPbjHvazML16Oga5w34uCUmsk7i0BcnskoLGwjpa15fqMr2Fa5JgVBrdL2MEgqz6XZ/6IQ==}
peerDependencies:
@ -9580,6 +10239,13 @@ packages:
vue: 3.4.21(typescript@5.2.2)
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:
resolution: {integrity: sha512-eMo5yCdkWRmBfqp/acBI/Y1Omgk0NyGqPViaU66eOpKarXNtkdImzDA57+E76jnWVr6MEp/rg1n0vnxaVvALMQ==}
dependencies:
@ -9768,6 +10434,10 @@ packages:
resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==}
dev: true
/zwitch@2.0.4:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
dev: true
file:playground/alias/dir/module:
resolution: {directory: playground/alias/dir/module, type: directory}
name: '@vitejs/test-aliased-module'

View File

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