diff --git a/.github/workflows/cr.yml b/.github/workflows/cr.yml new file mode 100644 index 00000000..45a7da06 --- /dev/null +++ b/.github/workflows/cr.yml @@ -0,0 +1,38 @@ +name: ⚡️ Continuous Releases + +on: + push: + branches: + - main + merge_group: + pull_request: + +jobs: + cr: + name: "⚡️ Continuous Releases" + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v3 + + - name: Use Node.js 22.14.0 + uses: actions/setup-node@v4 + with: + node-version: 22.14.0 + registry-url: "https://registry.npmjs.org" + cache: "pnpm" + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Build start + run: pnpm run build + + - name: Rewrite exports + run: echo $(cat package.json | jq '.exports = .publishConfig.exports') > package.json + + - name: Release + run: pnpm dlx pkg-pr-new@0.0 publish diff --git a/.github/workflows/format-files.yml b/.github/workflows/format-files.yml index dfe923ad..27e1a66a 100644 --- a/.github/workflows/format-files.yml +++ b/.github/workflows/format-files.yml @@ -26,7 +26,7 @@ jobs: - name: Setup Biome uses: biomejs/setup-biome@v2 with: - version: 1.9.2 + version: 2.4.7 - name: Run Biome run: biome ci . diff --git a/.prettierignore b/.prettierignore index 329df30a..a21bf9de 100644 --- a/.prettierignore +++ b/.prettierignore @@ -5,5 +5,6 @@ *.json *.cjs *.css +*.d.ts pnpm-lock.yaml examples/solid-docs diff --git a/biome.json b/biome.json index fda06ac8..c954b342 100644 --- a/biome.json +++ b/biome.json @@ -1,12 +1,15 @@ { "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", "files": { - "ignore": [ - "./tsconfig.json", - "*/netlify/*", - "**/package.json", - "./examples/solid-docs", - "**/app.config.*.js" + "includes": [ + "**", + "!./tsconfig.json", + "!*/netlify/*", + "!**/package.json", + "!./examples/solid-docs", + "!**/app.config.*.js", + "!**/*.d.ts", + "!node_modules" ] }, "vcs": { @@ -30,7 +33,8 @@ "noAssignInExpressions": "off" }, "style": { - "noNonNullAssertion": "off" + "noNonNullAssertion": "off", + "noDescendingSpecificity": "off" }, "complexity": { "noBannedTypes": "off" diff --git a/dev/app.config.ts b/dev/app.config.ts index d39d8323..b9fbbc43 100644 --- a/dev/app.config.ts +++ b/dev/app.config.ts @@ -1,24 +1,24 @@ -import { defineConfig } from "@solidjs/start/config"; - -import { createWithSolidBase, defineTheme } from "../src/config"; +import { createSolidBase, defineTheme } from "../src/config"; import defaultTheme from "../src/default-theme"; -const customTheme = defineTheme({ +const theme = defineTheme({ componentsPath: import.meta.resolve("./src/solidbase-theme"), extends: defaultTheme, }); -export default defineConfig( - createWithSolidBase(customTheme)( - { - ssr: true, - server: { - prerender: { - crawlLinks: true, - }, - }, +const solidBase = createSolidBase(theme); + +export default { + ...solidBase.startConfig({ + ssr: true, + }), + server: { + prerender: { + crawlLinks: true, }, - { + }, + plugins: [ + solidBase.plugin({ title: "SolidBase", description: "Fully featured, fully customisable static site generation for SolidStart", @@ -30,12 +30,10 @@ export default defineConfig( transform: (_code, id) => { let code = _code; - // tests id if (id.endsWith("to-transform.tsx")) { code += "// appended by transform"; } - // tests code return code.replace("REPLACE ME", "replaced string!"); }, }, @@ -108,6 +106,6 @@ export default defineConfig( ], }, }, - }, - ), -); + }), + ], +}; diff --git a/dev/package.json b/dev/package.json index fb1ed90d..f0017fb3 100644 --- a/dev/package.json +++ b/dev/package.json @@ -3,21 +3,23 @@ "type": "module", "private": "true", "scripts": { - "dev": "VITE_SOLIDBASE_DEV=1 vinxi dev", - "build": "vinxi build", - "start": "vinxi start" + "dev": "cross-env VITE_SOLIDBASE_DEV=true vite dev", + "build": "vite build", + "preview": "vite preview" }, "dependencies": { "@kobalte/solidbase": "workspace:*", "@solidjs/router": "^0.15.3", - "@solidjs/start": "^1.1.1", - "solid-js": "^1.9.5", - "vinxi": "^0.5.3" + "@solidjs/start": "https://pkg.pr.new/solidjs/solid-start/@solidjs/start@2080", + "nitro": "3.0.260311-beta", + "solid-js": "^1.9.9" }, "engines": { - "node": ">=18" + "node": ">=22.12" }, "devDependencies": { - "@iconify-json/ri": "^1.2.5" + "@iconify-json/ri": "^1.2.5", + "cross-env": "^7.0.3", + "vite": "^8.0.0" } } diff --git a/dev/src/entry-client.tsx b/dev/src/entry-client.tsx index 9bda7ce9..0ca4e3c3 100644 --- a/dev/src/entry-client.tsx +++ b/dev/src/entry-client.tsx @@ -1,4 +1,4 @@ // @refresh reload -import { StartClient, mount } from "@solidjs/start/client"; +import { mount, StartClient } from "@solidjs/start/client"; mount(() => , document.getElementById("app")!); diff --git a/dev/src/entry-server.tsx b/dev/src/entry-server.tsx index dcb014a2..3cb29281 100644 --- a/dev/src/entry-server.tsx +++ b/dev/src/entry-server.tsx @@ -1,6 +1,6 @@ import { getHtmlProps } from "@kobalte/solidbase/server"; // @refresh reload -import { StartServer, createHandler } from "@solidjs/start/server"; +import { createHandler, StartServer } from "@solidjs/start/server"; export default createHandler(() => ( { + if ("items" in item) return true; + return /\.(md|mdx)$/.test(item.filePath); + }, + }), + }, + }, + }), + solidStart(solidBase.startConfig()), + nitro({ + prerender: { crawlLinks: true }, + }), + ], +}); diff --git a/docs/.gitignore b/docs/.gitignore index d16c893d..0167db10 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -5,6 +5,8 @@ dist .vercel .netlify .vinxi +.nitro +.solid-start app.config.timestamp_*.js # Environment diff --git a/docs/package.json b/docs/package.json index ccf13a17..c5b89611 100644 --- a/docs/package.json +++ b/docs/package.json @@ -3,20 +3,20 @@ "type": "module", "private": "true", "scripts": { - "dev": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" VITE_SOLIDBASE_DEV=true vinxi dev", - "build": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" vinxi build", - "start": "vinxi start" + "dev": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" VITE_SOLIDBASE_DEV=true vite dev", + "build": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" vite build" }, "dependencies": { "@kobalte/solidbase": "workspace:*", "@solid-mediakit/og": "0.4.1", "@solidjs/router": "^0.15.3", - "@solidjs/start": "^1.1.3", - "solid-js": "^1.9.5", - "vinxi": "^0.5.3" + "@solidjs/start": "https://pkg.pr.new/solidjs/solid-start/@solidjs/start@2080", + "nitro": "3.0.260311-beta", + "solid-js": "^1.9.9", + "vite": "^8.0.0" }, "engines": { - "node": ">=18" + "node": ">=22.12" }, "devDependencies": { "@iconify-json/ri": "^1.2.5", diff --git a/docs/src/entry-client.tsx b/docs/src/entry-client.tsx index 9bda7ce9..0ca4e3c3 100644 --- a/docs/src/entry-client.tsx +++ b/docs/src/entry-client.tsx @@ -1,4 +1,4 @@ // @refresh reload -import { StartClient, mount } from "@solidjs/start/client"; +import { mount, StartClient } from "@solidjs/start/client"; mount(() => , document.getElementById("app")!); diff --git a/docs/src/entry-server.tsx b/docs/src/entry-server.tsx index dcdf179f..d190d3b9 100644 --- a/docs/src/entry-server.tsx +++ b/docs/src/entry-server.tsx @@ -1,7 +1,7 @@ import { getFontPreloadLinkAttrs } from "@kobalte/solidbase/default-theme/fonts.js"; import { getHtmlProps } from "@kobalte/solidbase/server"; // @refresh reload -import { StartServer, createHandler } from "@solidjs/start/server"; +import { createHandler, StartServer } from "@solidjs/start/server"; export default createHandler(() => ( { description?: string; logo?: string; issueAutolink?: IssueAutoLinkConfig | false; + llms?: boolean; lang?: string; locales?: Record>; themeConfig?: ThemeConfig; @@ -78,7 +79,7 @@ There are several options for setting site-wide metadata and behavior. These opt ``` :::note -For multilingual support, you can use the `locales` option to define different configurations for each locale. More details can be found in the [Internationalization guide](/guide/i18n). +For multilingual support, you can use the `locales` option to define different configurations for each locale. More details can be found in the [Internationalization guide](/guide/features/i18n). ::: #### Miscellaneous options @@ -88,15 +89,19 @@ In addition to setting the site title and description, you can also configure ot - `editPath`: A string or function to generate the "Edit this page" link for each page. - `lastUpdated`: An object to configure the display of the last updated timestamp on each page. Set to `false` to disable this feature. - `issueAutolink`: An object to configure automatic linking of issue references in your markdown content. Set to `false` to disable this feature. +- `llms`: Set to `true` to emit an `llms.txt` index and markdown copies of your routes for LLM-friendly documentation output. ```ts title="app.config.ts" // .. editPath: "https://github.com/[USERNAME]/[REPO]/edit/main/docs/:path" lastUpdated: false; issueAutolink: "https://github.com/[USERNAME]/[REPO]/issues/:issue" +llms: true; // .. ``` +See the [LLMs.txt guide](/guide/features/llms) for page-level exclusion and output details. + ### Markdown Configuration In addition to the default markdown support provided by SolidBase, you can include additional markdown plugins, configurations, and other options through the `markdown` option. diff --git a/docs/src/routes/guide/(3)structure.mdx b/docs/src/routes/guide/(3)structure.mdx index 282bf4a3..e35f96ac 100644 --- a/docs/src/routes/guide/(3)structure.mdx +++ b/docs/src/routes/guide/(3)structure.mdx @@ -11,29 +11,26 @@ The entry point for a SolidBase project is the `app.config.ts` file located in t ```ts title=app.config.ts import { defineConfig } from "@solidjs/start/config"; -import { createWithSolidBase } from "@kobalte/solidbase"; - - -export default defineConfig( - createWithSolidBase(theme)( - /* SolidStart options */ - { - ssr: true, - server: { - prerender: { - crawlLinks: true, - }, - }, - ... +import { createSolidBase } from "@kobalte/solidbase"; + +const solidBase = createSolidBase(theme); + +export default defineConfig({ + ...solidBase.startConfig({ + ssr: true, + }), + server: { + prerender: { + crawlLinks: true, }, - /* SolidBase options */ - { + }, + plugins: [ + solidBase.plugin({ title: "SolidBase", description: "Fully featured, fully customisable static site generation for SolidStart", - ... - } - ) -); + }), + ], +}); ``` diff --git a/docs/src/routes/guide/customization/custom-themes.mdx b/docs/src/routes/guide/customization/custom-themes.mdx index 63182ac3..93f4e11b 100644 --- a/docs/src/routes/guide/customization/custom-themes.mdx +++ b/docs/src/routes/guide/customization/custom-themes.mdx @@ -86,14 +86,19 @@ It's up to you whether you distribute your theme's components as TS or JS. ## Consuming a Theme -To consume a theme, import its definition in your `app.config` and use it to create a custom `withSolidBase` function: +To consume a theme, import its definition in your `app.config` and create a SolidBase instance from it: ```ts import { someTheme } from "awesome-solidbase-theme"; -const withSolidBase = createWithSolidBase(someTheme); +const solidBase = createSolidBase(someTheme); -export default defineConfig(withSolidBase(...)) +export default defineConfig({ + ...solidBase.startConfig({ + ... + }), + plugins: [solidBase.plugin({ ... })], +}) ``` You can add to the theme by [extending](./extending-themes) it with your own theme. diff --git a/docs/src/routes/guide/customization/extending-themes.mdx b/docs/src/routes/guide/customization/extending-themes.mdx index ba584d12..9f73e32f 100644 --- a/docs/src/routes/guide/customization/extending-themes.mdx +++ b/docs/src/routes/guide/customization/extending-themes.mdx @@ -6,7 +6,7 @@ title: Extending Themes You can extend the default theme if you'd like to preserve the default theme's functionality while adding your own customisations. SolidBase offers the ability to extend this theme, allowing you to build upon its existing features without starting from scratch. -For example, these docs [extend the default theme](https://github.com/kobaltedev/solidbase/blob/main/docs/app.config.ts#L7) to add [OpenGraph](https://ogp.me) tags +For example, the dev app [extends the default theme](https://github.com/kobaltedev/solidbase/blob/main/dev/app.config.ts#L4) to add [OpenGraph](https://ogp.me) tags ## Create an Extended Theme @@ -17,29 +17,37 @@ To extend the default theme, you must define a custom theme using `defineTheme`, import { defineTheme } from "@kobalte/solidbase/config"; import defaultTheme from "@kobalte/solidbase/default-theme"; -const customTheme = defineTheme({ +const customTheme = defineTheme({ componentsPath: import.meta.resolve("./src/custom-theme"), extends: defaultTheme, -}), +}); ``` -Once the theme is defined, you can set it as the active theme in your SolidBase config, using the `createWithSolidBase` helper to wrap your configuration: +Once the theme is defined, you can set it as the active theme in your SolidBase config with `createSolidBase`: ```ts -import { defineTheme } from "@kobalte/solidbase/config"; +import { defineConfig } from "@solidjs/start/config"; +import { createSolidBase, defineTheme } from "@kobalte/solidbase/config"; import defaultTheme from "@kobalte/solidbase/default-theme"; -const customTheme = defineTheme({ +const customTheme = defineTheme({ componentsPath: import.meta.resolve("./src/custom-theme"), extends: defaultTheme, -}), - -export default defineConfig( - createWithSolidBase(customTheme)( - // your solidbase configuration - ) -); +}); + +const solidBase = createSolidBase(customTheme); + +export default defineConfig({ + ...solidBase.startConfig({ + ssr: true, + }), + plugins: [ + solidBase.plugin({ + // your solidbase configuration + }), + ], +}); ``` To complete the setup, in the folder specified by `componentsPath`, create a `Layout` file that re-exports the default theme's `Layout` component. In this file, you can add any custom logic or components you'd like to appear on every page, so long as you render the `Layout` component somewhere in the returned JSX. @@ -90,14 +98,18 @@ To disable these fonts, set the `fonts` option to `false` in your SolidBase conf ```ts -export default defineConfig(withSolidBase( - ..., - { - themeConfig: { - fonts: false - } - } -)) +export default defineConfig({ + ...solidBase.startConfig({ + ... + }), + plugins: [ + solidBase.plugin({ + themeConfig: { + fonts: false, + }, + }), + ], +}) ``` You can then provide your own fonts by overriding the variables in the CSS file you imported in your `Layout` component. diff --git a/docs/src/routes/guide/dave.mdx b/docs/src/routes/guide/dave.mdx index 2a20e857..206e452c 100644 --- a/docs/src/routes/guide/dave.mdx +++ b/docs/src/routes/guide/dave.mdx @@ -1,6 +1,7 @@ --- title: What are we missing? excludeFromSidebar: true +llms: false --- # Day 1 of asking for solidconf diff --git a/docs/src/routes/guide/features/(0)markdown.mdx b/docs/src/routes/guide/features/(0)markdown.mdx index fb10d92b..9603deef 100644 --- a/docs/src/routes/guide/features/(0)markdown.mdx +++ b/docs/src/routes/guide/features/(0)markdown.mdx @@ -51,7 +51,7 @@ layout: home The data defined in the frontmatter will be parsed and made available to the page as a `frontmatter` object. It is made available through the entire application, including all custom and theming components. -For more details, see the [Frontmatter reference](../reference/frontmatter). +For more details, see the [Frontmatter reference](/reference/frontmatter). ## Table of Contents diff --git a/docs/src/routes/guide/features/(1)language-switcher.mdx b/docs/src/routes/guide/features/(1)language-switcher.mdx index 33946cf7..1925b0b8 100644 --- a/docs/src/routes/guide/features/(1)language-switcher.mdx +++ b/docs/src/routes/guide/features/(1)language-switcher.mdx @@ -20,7 +20,7 @@ import { withSolidBase } from "@kobalte/solidbase/config"; export default defineConfig( withSolidBase( - /* your SolidStart config */, + /* your SolidStart config */ { markdown: { expressiveCode: { @@ -42,7 +42,7 @@ import { withSolidBase } from "@kobalte/solidbase/config"; export default defineConfig( withSolidBase( - /* your SolidStart config */, + /* your SolidStart config */ { markdown: { expressiveCode: { diff --git a/docs/src/routes/guide/features/(2)i18n.mdx b/docs/src/routes/guide/features/(2)i18n.mdx index a27b6e06..c7f3e136 100644 --- a/docs/src/routes/guide/features/(2)i18n.mdx +++ b/docs/src/routes/guide/features/(2)i18n.mdx @@ -7,14 +7,14 @@ title: Internationalisation SolidBase has built-in i18n support which can be configured in the root config: ```ts -export default defineConfig( - createWithSolidBase(theme)( - /* SolidStart options */ - { - ... - }, - /* SolidBase options */ - { +const solidBase = createSolidBase(theme); + +export default defineConfig({ + ...solidBase.startConfig({ + ... + }), + plugins: [ + solidBase.plugin({ ... lang: "en", // default lang without route prefix locales: { @@ -26,9 +26,9 @@ export default defineConfig( }, }, ... - } - ) -); + }), + ], +}); ``` ## Creating Localized Routes @@ -47,4 +47,4 @@ src ## Theme Configuration -Similar to the theme configuration for the default locale, you can provide a `themeConfig` for each locale to customize the theme for that specific language. To learn more about how to adjust the theme configuration, refer to the [Theme Configuration section within the config page](/guide/config#theme-configuration). \ No newline at end of file +Similar to the theme configuration for the default locale, you can provide a `themeConfig` for each locale to customize the theme for that specific language. To learn more about how to adjust the theme configuration, refer to the [Theme Configuration section within the config page](/guide/config#theme-configuration). diff --git a/docs/src/routes/guide/features/(3)llms.mdx b/docs/src/routes/guide/features/(3)llms.mdx new file mode 100644 index 00000000..61aa3e84 --- /dev/null +++ b/docs/src/routes/guide/features/(3)llms.mdx @@ -0,0 +1,88 @@ +--- +title: LLMS.txt +--- + +# {frontmatter.title} + +SolidBase can generate an `llms.txt` index plus markdown versions of your routes for LLM tooling, AI assistants, and other machine-readable documentation consumers. + +## Enable the feature + +Turn it on with the `llms` option in your SolidBase config: + +```ts title="app.config.ts" +import { createSolidBase, defineTheme } from "@kobalte/solidbase/config"; +import defaultTheme from "@kobalte/solidbase/default-theme"; + +const theme = defineTheme({ + componentsPath: import.meta.resolve("./src/solidbase-theme"), + extends: defaultTheme, +}); + +const solidBase = createSolidBase(theme); + +export default { + ...solidBase.startConfig({ + ssr: true, + }), + plugins: [ + solidBase.plugin({ + title: "My Docs", + description: "Documentation for my project", + llms: true, + themeConfig: { + sidebar: { + "/": [ + { + title: "Guide", + items: [{ title: "Getting Started", link: "/guide/getting-started" }], + }, + ], + }, + }, + }), + ], +}; +``` + +Once enabled, the build emits: + +- `llms.txt` at the site root +- one `.md` file per markdown route, such as `index.md` and `guide/getting-started.md` + +## What goes into `llms.txt` + +SolidBase builds the index from your docs metadata: + +- the document title comes from frontmatter `title` +- the description comes from frontmatter `description` +- the list order follows `themeConfig.sidebar` when a sidebar is configured +- if no sidebar is available, SolidBase falls back to a flat list of discovered documents + +The generated links point to the emitted markdown files, for example `/guide/getting-started.md`. + +## Generated markdown output + +Each emitted markdown file is derived from the source route and passed through the document markdown pipeline. That means: + +- frontmatter metadata is removed from the final file +- inline frontmatter expressions like `{frontmatter.title}` are rendered to plain text when possible +- markdown transforms such as `[[toc]]`, imported code snippets, and GitHub-style alerts are preserved in the generated document output + +## Excluding pages + +You can keep individual pages out of the LLMS output with page frontmatter: + +```md title="src/routes/about.mdx" +--- +title: About +llms: + exclude: true +--- +``` + +You can also disable it entirely for a page with `llms: false`. + +:::note +Pages are only included when they live under `src/routes` and are written as `.md` or `.mdx` files. +::: diff --git a/docs/src/routes/guide/features/(3)sitemap.mdx b/docs/src/routes/guide/features/(3)sitemap.mdx deleted file mode 100644 index 5efc4fbe..00000000 --- a/docs/src/routes/guide/features/(3)sitemap.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Sitemap Generation ---- - -# {frontmatter.title} - -TODO diff --git a/docs/src/routes/guide/features/dev.mdx b/docs/src/routes/guide/features/dev.mdx index 5ab65ead..a9441e34 100644 --- a/docs/src/routes/guide/features/dev.mdx +++ b/docs/src/routes/guide/features/dev.mdx @@ -64,7 +64,7 @@ www.example.com [Link Outbound](https://www.example.com) -[Link internal /about](/about) +[Link internal markdown guide](/guide/features/markdown) #20 also #4 but no \\#20 diff --git a/docs/src/routes/guide/index.mdx b/docs/src/routes/guide/index.mdx index 0c8cfb95..7086a18d 100644 --- a/docs/src/routes/guide/index.mdx +++ b/docs/src/routes/guide/index.mdx @@ -7,17 +7,21 @@ title: About SolidBase provides fully featured, fully customisable [Static Site Generation](https://www.wikiwand.com/en/articles/Static_site_generator) for [SolidStart](https://docs.solidjs.com/solid-start). It focuses on [Markdown](https://www.wikiwand.com/en/articles/Markdown) ([MDX](https://mdxjs.com/)), making it ideal for writing documentation. -You can [add SolidBase to an existing SolidStart project](/add-to-existing) or start a new project with our [quickstart guide](/quickstart). +You can [add SolidBase to an existing SolidStart project](/guide/add-to-existing) or start a new project with our [quickstart guide](/guide/quickstart). ## Key features ### Built-in Markdown -Out of the box support for Markdown and MDX with almost all extensions you'd ever want. All the extension documentation and examples are available on our [Markdown Extensions](./md-extensions) page. +Out of the box support for Markdown and MDX with almost all extensions you'd ever want. All the extension documentation and examples are available on our [Markdown Extensions](/guide/features/markdown) page. + +### LLM-ready docs + +Generate an `llms.txt` index and markdown mirrors of your docs for AI tooling and machine-readable documentation workflows. Learn more in the [LLMs.txt guide](/guide/features/llms). ### Customizable -All the SolidBase components can be overridden to transform your website into your own unique design. To see how, visit the [Extending Themes](/extending-themes) documentation. +All the SolidBase components can be overridden to transform your website into your own unique design. To see how, visit the [Extending Themes](/guide/customization/extending-themes) documentation. ### Performant diff --git a/docs/src/routes/reference/default-theme/components/footer.mdx b/docs/src/routes/reference/default-theme/components/footer.mdx index 6e89f05f..b8f402d8 100644 --- a/docs/src/routes/reference/default-theme/components/footer.mdx +++ b/docs/src/routes/reference/default-theme/components/footer.mdx @@ -12,17 +12,17 @@ The footer has multiple options available. import { defineConfig } from "@solidjs/start/config"; -import { createWithSolidBase } from "@kobalte/solidbase"; +import { createSolidBase } from "@kobalte/solidbase"; -export default defineConfig( - createWithSolidBase(theme)( - /* SolidStart options */ - { - ... - }, - /* SolidBase options */ - { +const solidBase = createSolidBase(theme); + +export default defineConfig({ + ...solidBase.startConfig({ + ... + }), + plugins: [ + solidBase.plugin({ ... themeConfig: { socialLinks: { @@ -32,9 +32,9 @@ export default defineConfig( ... }, ... - } - ) -); + }), + ], +}); ``` diff --git a/docs/src/routes/reference/default-theme/components/sidebar.mdx b/docs/src/routes/reference/default-theme/components/sidebar.mdx index 1e7b0549..ba193f5d 100644 --- a/docs/src/routes/reference/default-theme/components/sidebar.mdx +++ b/docs/src/routes/reference/default-theme/components/sidebar.mdx @@ -10,29 +10,29 @@ The sidebar for the default theme is configured in the app config: import { defineConfig } from "@solidjs/start/config"; -import { createWithSolidBase } from "@kobalte/solidbase"; +import { createSolidBase } from "@kobalte/solidbase"; -export default defineConfig( - createWithSolidBase(theme)( - /* SolidStart options */ - { - ... - }, - /* SolidBase options */ - { +const solidBase = createSolidBase(theme); + +export default defineConfig({ + ...solidBase.startConfig({ + ... + }), + plugins: [ + solidBase.plugin({ ... themeConfig: { ... sidebar: { - "/guide": { // Route matching prefix + "/guide": { items: [ { - title: "Overview", // Group + title: "Overview", collapsed: false, items: [ { - title: "What is SolidBase?", // Item + title: "What is SolidBase?", link: "/", }, { @@ -43,7 +43,7 @@ export default defineConfig( ], }, { - title: "Features", // Second Group + title: "Features", collapsed: false, items: [ { @@ -84,8 +84,8 @@ export default defineConfig( }, }, ... - } - ) -); + }), + ], +}); ``` diff --git a/docs/src/routes/reference/default-theme/index.mdx b/docs/src/routes/reference/default-theme/index.mdx index f003044e..c032757f 100644 --- a/docs/src/routes/reference/default-theme/index.mdx +++ b/docs/src/routes/reference/default-theme/index.mdx @@ -6,20 +6,20 @@ title: Default Theme SolidBase includes a default theme that provides a clean, minimal design out of the box. It includes components for layout, navigation, and other common UI elements. -You can use the default theme as-is, or customize it to fit your needs. For more information on customizing the default theme, refer to the [Extending Themes](/guide/customization#extending-the-default-theme) guide. +You can use the default theme as-is, or customize it to fit your needs. For more information on customizing the default theme, refer to the [Extending Themes](/guide/customization/extending-themes#extending-the-default-theme) guide. To access the variables used by the default theme, refer to the [CSS Variables](/reference/default-theme/css-variables) reference. ## Components The default theme includes the following components that can be used in your markdown files and customized to fit your needs: -- [`Article`](/reference/default-theme/article) -- [`Footer`](/reference/default-theme/footer) -- [`Header`](/reference/default-theme/header) -- [`LastUpdated`](/reference/default-theme/last-updated) -- [`Link`](/reference/default-theme/link) -- [`LocaleSelector`](/reference/default-theme/locale-selector) -- [`TableOfContents`](/reference/default-theme/table-of-contents) -- [`ThemeSelector`](/reference/default-theme/theme-selector) -- [`Hero`](/reference/default-theme/hero) -- [`Features`](/reference/default-theme/features) \ No newline at end of file +- [`Article`](/reference/default-theme/components/article) +- [`Footer`](/reference/default-theme/components/footer) +- [`Header`](/reference/default-theme/components/header) +- [`LastUpdated`](/reference/default-theme/components/last-updated) +- [`Link`](/reference/default-theme/components/link) +- [`LocaleSelector`](/reference/default-theme/components/locale-selector) +- [`TableOfContents`](/reference/default-theme/components/toc) +- [`ThemeSelector`](/reference/default-theme/components/theme-selector) +- [`Hero`](/reference/default-theme/components/hero) +- [`Features`](/reference/default-theme/components/features) diff --git a/docs/src/routes/reference/default-theme/landing.mdx b/docs/src/routes/reference/default-theme/landing.mdx index 4998e949..56671247 100644 --- a/docs/src/routes/reference/default-theme/landing.mdx +++ b/docs/src/routes/reference/default-theme/landing.mdx @@ -4,7 +4,7 @@ title: Landing # Landing -The landing page is configured using [Frontmatter](../frontmatter): +The landing page is configured using [Frontmatter](/reference/frontmatter): ```md --- diff --git a/docs/src/routes/reference/frontmatter.mdx b/docs/src/routes/reference/frontmatter.mdx index 8ceb11c4..35ad213a 100644 --- a/docs/src/routes/reference/frontmatter.mdx +++ b/docs/src/routes/reference/frontmatter.mdx @@ -34,4 +34,18 @@ The title is formatted from the config: ## Layout -More options such as `layout` are available in the [Default Theme](./default-theme) reference. +More options such as `layout` are available in the [Default Theme](/reference/default-theme) reference. + +## LLMs + +The `llms` frontmatter key controls whether a page is included in generated LLMS documents. + +```md +--- +title: About +llms: + exclude: true +--- +``` + +You can also write `llms: false` to exclude the page entirely. diff --git a/docs/src/solidbase-theme/Layout.tsx b/docs/src/solidbase-theme/Layout.tsx index aae83ce8..eab1b3b7 100644 --- a/docs/src/solidbase-theme/Layout.tsx +++ b/docs/src/solidbase-theme/Layout.tsx @@ -1,18 +1,16 @@ -import { Meta } from "@solidjs/meta"; -import { useLocation } from "@solidjs/router"; -import { type ComponentProps, Show } from "solid-js"; -import { Dynamic } from "solid-js/web"; - import { mdxComponents, useLocale, useSolidBaseContext, } from "@kobalte/solidbase/client"; -import Layout from "@kobalte/solidbase/default-theme/Layout.jsx"; import Article from "@kobalte/solidbase/default-theme/components/Article.jsx"; - import { DefaultThemeComponentsProvider } from "@kobalte/solidbase/default-theme/context.jsx"; import { useDefaultThemeFrontmatter } from "@kobalte/solidbase/default-theme/frontmatter.js"; +import Layout from "@kobalte/solidbase/default-theme/Layout.jsx"; +import { Meta } from "@solidjs/meta"; +import { useLocation } from "@solidjs/router"; +import { type ComponentProps, Show } from "solid-js"; +import { Dynamic } from "solid-js/web"; import { OGImage } from "./og-image"; diff --git a/docs/tsconfig.json b/docs/tsconfig.json index c2479116..2a3dbdfe 100644 --- a/docs/tsconfig.json +++ b/docs/tsconfig.json @@ -1,19 +1,18 @@ { - "compilerOptions": { - "target": "ESNext", - "module": "ESNext", - "moduleResolution": "bundler", - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "jsx": "preserve", - "jsxImportSource": "solid-js", - "allowJs": true, - "strict": true, - "noEmit": true, - "types": ["vinxi/types/client"], - "isolatedModules": true, - "paths": { - "~/*": ["./src/*"] - }, - } + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "jsx": "preserve", + "jsxImportSource": "solid-js", + "allowJs": true, + "strict": true, + "noEmit": true, + "isolatedModules": true, + "paths": { + "~/*": ["./src/*"] + } + } } diff --git a/docs/app.config.ts b/docs/vite.config.mts similarity index 70% rename from docs/app.config.ts rename to docs/vite.config.mts index a0709c4e..75a34f10 100644 --- a/docs/app.config.ts +++ b/docs/vite.config.mts @@ -1,36 +1,34 @@ import { vitePlugin as OGPlugin } from "@solid-mediakit/og/unplugin"; -import { defineConfig } from "@solidjs/start/config"; +import { solidStart } from "@solidjs/start/config"; +import { nitro } from "nitro/vite"; +import { defineConfig } from "vite"; import arraybuffer from "vite-plugin-arraybuffer"; -import { createWithSolidBase, defineTheme } from "../src/config"; -import { SidebarConfig, createFilesystemSidebar } from "../src/config/sidebar"; -import defaultTheme, { DefaultThemeSidebarItem } from "../src/default-theme"; +import { createSolidBase, defineTheme } from "../src/config"; +import { createFilesystemSidebar } from "../src/config/sidebar"; +import defaultTheme from "../src/default-theme"; const theme = defineTheme({ componentsPath: import.meta.resolve("./src/solidbase-theme"), extends: defaultTheme, }); -export default defineConfig( - createWithSolidBase(theme)( - { - ssr: true, - server: { - esbuild: { options: { target: "es2022" } }, - }, - vite: { - plugins: [OGPlugin(), arraybuffer()], - }, - }, - { +const solidBase = createSolidBase(theme); + +export default defineConfig({ + plugins: [ + OGPlugin(), + arraybuffer(), + solidBase.plugin({ title: "SolidBase", description: "Fully featured, fully customisable static site generation for SolidStart", + llms: true, issueAutolink: "https://github.com/kobaltedev/solidbase/issues/:issue", lang: "en", markdown: { expressiveCode: { - languageSwitcher: true, + languageSwitcher: false, }, }, locales: { @@ -98,10 +96,15 @@ export default defineConfig( }, ], sidebar: { - "/guide": createFilesystemSidebar("/guide"), - "/reference": createFilesystemSidebar("/reference"), + "/guide": createFilesystemSidebar("./src/routes/guide"), + "/reference": createFilesystemSidebar("./src/routes/reference"), }, }, - }, - ), -); + }), + solidStart(solidBase.startConfig()), + nitro({ + preset: "netlify", + prerender: { crawlLinks: true }, + }), + ], +}); diff --git a/netlify.toml b/netlify.toml index f7a3541f..1429f793 100644 --- a/netlify.toml +++ b/netlify.toml @@ -1,5 +1,5 @@ [build] -command = "VITE_ORIGIN=$DEPLOY_URL pnpm --filter @kobalte/solidbase-docs... run build" +command = "VITE_ORIGIN=$DEPLOY_URL pnpm build:docs" publish = "docs/dist/" [functions] diff --git a/package.json b/package.json index b5e88b21..4f695c73 100644 --- a/package.json +++ b/package.json @@ -3,12 +3,15 @@ "version": "0.0.0-dev", "description": "Fully featured, fully customisable static site generation for SolidStart", "type": "module", + "sideEffects": true, "scripts": { "dev": "pnpm -F @kobalte/solidbase-dev dev", "dev:docs": "pnpm -F @kobalte/solidbase-docs dev", "check": "biome check", "build": "tsc -b --force && node scripts/build.js", + "build:docs": "pnpm -F @kobalte/solidbase-docs build", "format": "biome check --write #&& prettier . --write", + "test": "vitest run", "typecheck": "tsc -b", "publish:next": "pnpm i && pnpm build && pnpm publish --tag next", "publish:release": "pnpm i && pnpm build && pnpm publish", @@ -33,9 +36,9 @@ "types": "./src/client/index.tsx" }, "./server": { - "solid": "./src/server.ts", - "import": "./src/server.ts", - "types": "./src/server.ts" + "solid": "./src/server.tsx", + "import": "./src/server.tsx", + "types": "./src/server.tsx" }, "./default-theme": { "solid": "./src/default-theme/index.ts", @@ -47,10 +50,10 @@ "import": "./src/default-theme/*", "types": "./src/default-theme/*" }, - "./solid-mdx": { - "solid": "./src/solid-mdx.ts", - "import": "./src/solid-mdx.ts", - "types": "./src/solid-mdx.ts" + "./mdx": { + "solid": "./src/mdx.ts", + "import": "./src/mdx.ts", + "types": "./src/mdx.ts" } }, "publishConfig": { @@ -67,8 +70,8 @@ "types": "./dist/config/index.d.ts" }, "./server": { - "solid": "./dist/server.js", - "import": "./dist/server.js", + "solid": "./dist/server.jsx", + "import": "./dist/server.jsx", "types": "./dist/server.d.ts" }, "./default-theme": { @@ -81,10 +84,10 @@ "import": "./dist/default-theme/*", "types": "./dist/default-theme/*" }, - "./solid-mdx": { - "solid": "./dist/solid-mdx.js", - "import": "./dist/solid-mdx.js", - "types": "./dist/solid-mdx.d.ts" + "./mdx": { + "solid": "./dist/mdx.js", + "import": "./dist/mdx.js", + "types": "./dist/mdx.d.ts" } } }, @@ -93,9 +96,9 @@ "/dist" ], "devDependencies": { - "@biomejs/biome": "^1.9.4", + "@biomejs/biome": "^2.4.0", "@octokit/core": "^6.1.4", - "@solidjs/start": "^1.1.3", + "@solidjs/start": "https://pkg.pr.new/solidjs/solid-start/@solidjs/start@2080", "@types/cross-spawn": "^6.0.6", "@types/mdast": "^4.0.4", "@types/resolve": "^1.20.6", @@ -103,29 +106,28 @@ "cross-env": "^7.0.3", "esbuild": "^0.25.2", "glob": "^11.0.1", + "jsdom": "^29.0.0", "mdast": "^3.0.0", "resolve": "^1.22.10", - "solid-js": "^1.9.5", + "solid-js": "^1.9.9", "tsx": "^4.19.3", "vfile": "^6.0.3", - "vinxi": "^0.5.3", - "vite": "^6.1.1" + "vite": "^8.0.0", + "vitest": "^4.1.0" }, "peerDependencies": { - "@solidjs/start": "^1.0.8", "solid-js": "^1.9.1", - "vinxi": "^0.5.3", - "vite": "^6.1.1" + "vite": "^8.0.0" }, "packageManager": "pnpm@10.6.2+sha512.47870716bea1572b53df34ad8647b42962bc790ce2bf4562ba0f643237d7302a3d6a8ecef9e4bdfc01d23af1969aa90485d4cebb0b9638fa5ef1daef656f6c1b", "dependencies": { "@alloc/quick-lru": "^5.2.0", "@bprogress/core": "^1.1.18", "@docsearch/css": "^3.6.2", - "@expressive-code/core": "^0.40.2", - "@expressive-code/plugin-collapsible-sections": "^0.40.2", - "@expressive-code/plugin-frames": "^0.40.2", - "@expressive-code/plugin-line-numbers": "^0.40.2", + "@expressive-code/core": "^0.41.7", + "@expressive-code/plugin-collapsible-sections": "^0.41.7", + "@expressive-code/plugin-frames": "^0.41.7", + "@expressive-code/plugin-line-numbers": "^0.41.7", "@fontsource-variable/inter": "^5.1.1", "@fontsource-variable/jetbrains-mono": "^5.1.2", "@fontsource-variable/lexend": "^5.1.2", @@ -157,13 +159,16 @@ "parse-numeric-range": "^1.3.0", "prettier": "4.0.0-alpha.10", "rehype-autolink-headings": "^7.1.0", - "rehype-expressive-code": "^0.40.2", + "rehype-expressive-code": "^0.41.7", "rehype-raw": "^7.0.0", "rehype-slug": "^6.0.0", "remark-directive": "^3.0.0", "remark-frontmatter": "^5.0.0", "remark-gfm": "^4.0.0", - "solid-mdx": "^0.0.7", + "remark-mdx": "^3.1.1", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "rollup": "^4.53.3", "source-map": "^0.7.6", "toml": "^3.0.0", "typescript": "^5.6.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a0aa243e..fc8df79b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,17 +18,17 @@ importers: specifier: ^3.6.2 version: 3.9.0 '@expressive-code/core': - specifier: ^0.40.2 - version: 0.40.2 + specifier: ^0.41.7 + version: 0.41.7 '@expressive-code/plugin-collapsible-sections': - specifier: ^0.40.2 - version: 0.40.2 + specifier: ^0.41.7 + version: 0.41.7 '@expressive-code/plugin-frames': - specifier: ^0.40.2 - version: 0.40.2 + specifier: ^0.41.7 + version: 0.41.7 '@expressive-code/plugin-line-numbers': - specifier: ^0.40.2 - version: 0.40.2 + specifier: ^0.41.7 + version: 0.41.7 '@fontsource-variable/inter': specifier: ^5.1.1 version: 5.2.5 @@ -40,40 +40,40 @@ importers: version: 5.2.6 '@kobalte/core': specifier: ^0.13.9 - version: 0.13.9(solid-js@1.9.5) + version: 0.13.9(solid-js@1.9.11) '@mdx-js/mdx': specifier: ^3.1.0 version: 3.1.0(acorn@8.14.1) '@solid-primitives/clipboard': specifier: ^1.5.10 - version: 1.6.0(solid-js@1.9.5) + version: 1.6.0(solid-js@1.9.11) '@solid-primitives/context': specifier: ^0.2.3 - version: 0.2.3(solid-js@1.9.5) + version: 0.2.3(solid-js@1.9.11) '@solid-primitives/event-listener': specifier: ^2.3.3 - version: 2.4.0(solid-js@1.9.5) + version: 2.4.0(solid-js@1.9.11) '@solid-primitives/keyboard': specifier: ^1.2.8 - version: 1.3.0(solid-js@1.9.5) + version: 1.3.0(solid-js@1.9.11) '@solid-primitives/media': specifier: ^2.2.9 - version: 2.3.0(solid-js@1.9.5) + version: 2.3.0(solid-js@1.9.11) '@solid-primitives/platform': specifier: ^0.1.2 - version: 0.1.2(solid-js@1.9.5) + version: 0.1.2(solid-js@1.9.11) '@solid-primitives/scroll': specifier: ^2.0.23 - version: 2.1.0(solid-js@1.9.5) + version: 2.1.0(solid-js@1.9.11) '@solid-primitives/storage': specifier: ^4.3.1 - version: 4.3.1(solid-js@1.9.5) + version: 4.3.1(solid-js@1.9.11) '@solidjs/meta': specifier: ^0.29.4 - version: 0.29.4(solid-js@1.9.5) + version: 0.29.4(solid-js@1.9.11) '@solidjs/router': specifier: ^0.15.3 - version: 0.15.3(solid-js@1.9.5) + version: 0.15.3(solid-js@1.9.11) cross-spawn: specifier: ^7.0.3 version: 7.0.6 @@ -91,7 +91,7 @@ importers: version: 0.41.3 expressive-code-twoslash: specifier: '=0.4.0' - version: 0.4.0(@expressive-code/core@0.40.2)(expressive-code@0.41.3)(typescript@5.7.3) + version: 0.4.0(@expressive-code/core@0.41.7)(expressive-code@0.41.3)(typescript@5.7.3) gray-matter: specifier: ^4.0.3 version: 4.0.3 @@ -123,8 +123,8 @@ importers: specifier: ^7.1.0 version: 7.1.0 rehype-expressive-code: - specifier: ^0.40.2 - version: 0.40.2 + specifier: ^0.41.7 + version: 0.41.7 rehype-raw: specifier: ^7.0.0 version: 7.0.0 @@ -140,9 +140,18 @@ importers: remark-gfm: specifier: ^4.0.0 version: 4.0.1 - solid-mdx: - specifier: ^0.0.7 - version: 0.0.7(solid-js@1.9.5)(vite@6.1.1(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0)) + remark-mdx: + specifier: ^3.1.1 + version: 3.1.1 + remark-parse: + specifier: ^11.0.0 + version: 11.0.0 + remark-stringify: + specifier: ^11.0.0 + version: 11.0.0 + rollup: + specifier: ^4.53.3 + version: 4.59.0 source-map: specifier: ^0.7.6 version: 0.7.6 @@ -178,14 +187,14 @@ importers: version: 2.8.0 devDependencies: '@biomejs/biome': - specifier: ^1.9.4 - version: 1.9.4 + specifier: ^2.4.0 + version: 2.4.7 '@octokit/core': specifier: ^6.1.4 version: 6.1.4 '@solidjs/start': - specifier: ^1.1.3 - version: 1.1.3(@types/node@22.13.5)(jiti@2.4.2)(solid-js@1.9.5)(terser@5.39.0)(tsx@4.19.3)(vinxi@0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0))(vite@6.1.1(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0))(yaml@2.8.0) + specifier: https://pkg.pr.new/solidjs/solid-start/@solidjs/start@2080 + version: https://pkg.pr.new/solidjs/solid-start/@solidjs/start@2080(crossws@0.4.4(srvx@0.11.12))(vite@8.0.0(@types/node@22.13.5)(esbuild@0.25.2)(tsx@4.19.3)(yaml@2.8.0)) '@types/cross-spawn': specifier: ^6.0.6 version: 6.0.6 @@ -207,6 +216,9 @@ importers: glob: specifier: ^11.0.1 version: 11.0.1 + jsdom: + specifier: ^29.0.0 + version: 29.0.0 mdast: specifier: ^3.0.0 version: 3.0.0 @@ -214,20 +226,20 @@ importers: specifier: ^1.22.10 version: 1.22.10 solid-js: - specifier: ^1.9.5 - version: 1.9.5 + specifier: ^1.9.9 + version: 1.9.11 tsx: specifier: ^4.19.3 version: 4.19.3 vfile: specifier: ^6.0.3 version: 6.0.3 - vinxi: - specifier: ^0.5.3 - version: 0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0) vite: - specifier: ^6.1.1 - version: 6.1.1(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^8.0.0 + version: 8.0.0(@types/node@22.13.5)(esbuild@0.25.2)(tsx@4.19.3)(yaml@2.8.0) + vitest: + specifier: ^4.1.0 + version: 4.1.0(@types/node@22.13.5)(jsdom@29.0.0)(vite@8.0.0(@types/node@22.13.5)(esbuild@0.25.2)(tsx@4.19.3)(yaml@2.8.0)) dev: dependencies: @@ -236,20 +248,26 @@ importers: version: link:.. '@solidjs/router': specifier: ^0.15.3 - version: 0.15.3(solid-js@1.9.5) + version: 0.15.3(solid-js@1.9.11) '@solidjs/start': - specifier: ^1.1.1 - version: 1.1.3(@types/node@22.13.5)(jiti@2.4.2)(solid-js@1.9.5)(terser@5.39.0)(tsx@4.19.3)(vinxi@0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0))(vite@6.1.2(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0))(yaml@2.8.0) + specifier: https://pkg.pr.new/solidjs/solid-start/@solidjs/start@2080 + version: https://pkg.pr.new/solidjs/solid-start/@solidjs/start@2080(crossws@0.4.4(srvx@0.11.12))(vite@8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0)) + nitro: + specifier: 3.0.260311-beta + version: 3.0.260311-beta(lru-cache@11.2.7)(rollup@4.59.0)(vite@8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0)) solid-js: - specifier: ^1.9.5 - version: 1.9.5 - vinxi: - specifier: ^0.5.3 - version: 0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0) + specifier: ^1.9.9 + version: 1.9.11 devDependencies: '@iconify-json/ri': specifier: ^1.2.5 version: 1.2.5 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + vite: + specifier: ^8.0.0 + version: 8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0) docs: dependencies: @@ -258,19 +276,22 @@ importers: version: link:.. '@solid-mediakit/og': specifier: 0.4.1 - version: 0.4.1(@solidjs/meta@0.29.4(solid-js@1.9.5))(@solidjs/start@1.1.3(@types/node@22.13.5)(jiti@2.4.2)(solid-js@1.9.5)(terser@5.39.0)(tsx@4.19.3)(vinxi@0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0))(vite@6.1.2(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0))(yaml@2.8.0))(rollup@4.38.0)(solid-js@1.9.5) + version: 0.4.1(@solidjs/meta@0.29.4(solid-js@1.9.11))(@solidjs/start@https://pkg.pr.new/solidjs/solid-start/@solidjs/start@2080(crossws@0.4.4(srvx@0.11.12))(vite@8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0)))(rollup@4.59.0)(solid-js@1.9.11) '@solidjs/router': specifier: ^0.15.3 - version: 0.15.3(solid-js@1.9.5) + version: 0.15.3(solid-js@1.9.11) '@solidjs/start': - specifier: ^1.1.3 - version: 1.1.3(@types/node@22.13.5)(jiti@2.4.2)(solid-js@1.9.5)(terser@5.39.0)(tsx@4.19.3)(vinxi@0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0))(vite@6.1.2(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0))(yaml@2.8.0) + specifier: https://pkg.pr.new/solidjs/solid-start/@solidjs/start@2080 + version: https://pkg.pr.new/solidjs/solid-start/@solidjs/start@2080(crossws@0.4.4(srvx@0.11.12))(vite@8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0)) + nitro: + specifier: 3.0.260311-beta + version: 3.0.260311-beta(lru-cache@11.2.7)(rollup@4.59.0)(vite@8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0)) solid-js: - specifier: ^1.9.5 - version: 1.9.5 - vinxi: - specifier: ^0.5.3 - version: 0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0) + specifier: ^1.9.9 + version: 1.9.11 + vite: + specifier: ^8.0.0 + version: 8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0) devDependencies: '@iconify-json/ri': specifier: ^1.2.5 @@ -295,79 +316,86 @@ packages: '@antfu/utils@8.1.1': resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==} - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} + '@asamuzakjp/css-color@5.0.1': + resolution: {integrity: sha512-2SZFvqMyvboVV1d15lMf7XiI3m7SDqXUuKaTymJYLN6dSGadqp+fVojqJlVoMlbZnlTmu3S0TLwLTJpvBMO1Aw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/dom-selector@7.0.3': + resolution: {integrity: sha512-Q6mU0Z6bfj6YvnX2k9n0JxiIwrCFN59x/nWmYQnAqP000ruX/yV+5bp/GRcF5T8ncvfwJQ7fgfP74DlpKExILA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/nwsapi@2.3.9': + resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.8': - resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} '@babel/compat-data@7.27.3': resolution: {integrity: sha512-V42wFfx1ymFte+ecf6iXghnnP8kWTO+ZLXIyZq+1LAXHHvTZdVxicn4yiVYdYMGaCO3tmqub11AorKkv+iodqw==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.29.0': + resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} + engines: {node: '>=6.9.0'} + '@babel/core@7.25.2': resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} - '@babel/core@7.26.10': - resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} engines: {node: '>=6.9.0'} - '@babel/core@7.26.9': - resolution: {integrity: sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==} + '@babel/generator@7.27.3': + resolution: {integrity: sha512-xnlJYj5zepml8NXtjkG0WquFUv8RskFqyFcVgTBp5k+NaA/8uw/K+OSVf8AMGw5e9HKP2ETd5xpK5MLZQD6b4Q==} engines: {node: '>=6.9.0'} - '@babel/core@7.27.3': - resolution: {integrity: sha512-hyrN8ivxfvJ4i0fIJuV4EOlV0WDMz5Ui4StRTgVaAvWeiRCilXgwVvxJKtFQ3TKtHgJscB2YiXKGNJuVwhQMtA==} + '@babel/generator@7.29.1': + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} engines: {node: '>=6.9.0'} - '@babel/generator@7.26.9': - resolution: {integrity: sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==} + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} - '@babel/generator@7.27.0': - resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} - '@babel/generator@7.27.3': - resolution: {integrity: sha512-xnlJYj5zepml8NXtjkG0WquFUv8RskFqyFcVgTBp5k+NaA/8uw/K+OSVf8AMGw5e9HKP2ETd5xpK5MLZQD6b4Q==} + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.26.5': - resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} + '@babel/helper-create-class-features-plugin@7.28.6': + resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 - '@babel/helper-compilation-targets@7.27.0': - resolution: {integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==} + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.2': - resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + '@babel/helper-member-expression-to-functions@7.28.5': + resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.18.6': resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.25.9': - resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} - engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.27.1': resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.26.0': - resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 '@babel/helper-module-transforms@7.27.3': resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} @@ -375,58 +403,65 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.27.1': + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.26.5': resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.25.9': - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + '@babel/helper-plugin-utils@7.28.6': + resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + '@babel/helper-replace-supers@7.28.6': + resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} '@babel/helper-validator-identifier@7.27.1': resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.25.9': - resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} '@babel/helper-validator-option@7.27.1': resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.26.9': - resolution: {integrity: sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.27.0': - resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==} - engines: {node: '>=6.9.0'} - '@babel/helpers@7.27.3': resolution: {integrity: sha512-h/eKy9agOya1IGuLaZ9tEUgz+uIRXcbtOhRtUyyMf8JFmn1iT13vnl/IGVWSkdOCG/pC57U4S1jnAabAavTMwg==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.9': - resolution: {integrity: sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==} - engines: {node: '>=6.0.0'} - hasBin: true + '@babel/helpers@7.29.2': + resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} + engines: {node: '>=6.9.0'} - '@babel/parser@7.27.0': - resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} + '@babel/parser@7.27.3': + resolution: {integrity: sha512-xyYxRj6+tLNDTWi0KCBcZ9V7yg3/lwL9DWh9Uwh/RIVlIfFidggcgxKX3GCXwCiswwcGRawBKbEg2LG/Y8eJhw==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@7.27.3': - resolution: {integrity: sha512-xyYxRj6+tLNDTWi0KCBcZ9V7yg3/lwL9DWh9Uwh/RIVlIfFidggcgxKX3GCXwCiswwcGRawBKbEg2LG/Y8eJhw==} + '@babel/parser@7.29.2': + resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} engines: {node: '>=6.0.0'} hasBin: true @@ -436,101 +471,109 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.25.9': - resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} + '@babel/plugin-syntax-jsx@7.28.6': + resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.28.6': + resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/standalone@7.26.9': - resolution: {integrity: sha512-UTeQKy0kzJwWRe55kT1uK4G9H6D0lS6G4207hCU/bDaOhA5t2aC0qHN6GmID0Axv3OFLNXm27NdqcWp+BXcGtA==} + '@babel/plugin-transform-modules-commonjs@7.28.6': + resolution: {integrity: sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@babel/template@7.26.9': - resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==} + '@babel/plugin-transform-typescript@7.28.6': + resolution: {integrity: sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@babel/template@7.27.0': - resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} + '@babel/preset-typescript@7.28.5': + resolution: {integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.26.9': - resolution: {integrity: sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.27.0': - resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} '@babel/traverse@7.27.3': resolution: {integrity: sha512-lId/IfN/Ye1CIu8xG7oKBHXd2iNb2aW1ilPszzGcJug6M8RCKfVNcYhpI5+bMvFYjK7lXIM0R+a+6r8xhHp2FQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.26.9': - resolution: {integrity: sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.27.0': - resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} '@babel/types@7.27.3': resolution: {integrity: sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==} engines: {node: '>=6.9.0'} - '@biomejs/biome@1.9.4': - resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + engines: {node: '>=6.9.0'} + + '@biomejs/biome@2.4.7': + resolution: {integrity: sha512-vXrgcmNGZ4lpdwZSpMf1hWw1aWS6B+SyeSYKTLrNsiUsAdSRN0J4d/7mF3ogJFbIwFFSOL3wT92Zzxia/d5/ng==} engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/cli-darwin-arm64@1.9.4': - resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==} + '@biomejs/cli-darwin-arm64@2.4.7': + resolution: {integrity: sha512-Oo0cF5mHzmvDmTXw8XSjhCia8K6YrZnk7aCS54+/HxyMdZMruMO3nfpDsrlar/EQWe41r1qrwKiCa2QDYHDzWA==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-x64@1.9.4': - resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==} + '@biomejs/cli-darwin-x64@2.4.7': + resolution: {integrity: sha512-I+cOG3sd/7HdFtvDSnF9QQPrWguUH7zrkIMMykM3PtfWU9soTcS2yRb9Myq6MHmzbeCT08D1UmY+BaiMl5CcoQ==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-linux-arm64-musl@1.9.4': - resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==} + '@biomejs/cli-linux-arm64-musl@2.4.7': + resolution: {integrity: sha512-I2NvM9KPb09jWml93O2/5WMfNR7Lee5Latag1JThDRMURVhPX74p9UDnyTw3Ae6cE1DgXfw7sqQgX7rkvpc0vw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-arm64@1.9.4': - resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==} + '@biomejs/cli-linux-arm64@2.4.7': + resolution: {integrity: sha512-om6FugwmibzfP/6ALj5WRDVSND4H2G9X0nkI1HZpp2ySf9lW2j0X68oQSaHEnls6666oy4KDsc5RFjT4m0kV0w==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-x64-musl@1.9.4': - resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==} + '@biomejs/cli-linux-x64-musl@2.4.7': + resolution: {integrity: sha512-00kx4YrBMU8374zd2wHuRV5wseh0rom5HqRND+vDldJPrWwQw+mzd/d8byI9hPx926CG+vWzq6AeiT7Yi5y59g==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-linux-x64@1.9.4': - resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==} + '@biomejs/cli-linux-x64@2.4.7': + resolution: {integrity: sha512-bV8/uo2Tj+gumnk4sUdkerWyCPRabaZdv88IpbmDWARQQoA/Q0YaqPz1a+LSEDIL7OfrnPi9Hq1Llz4ZIGyIQQ==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-win32-arm64@1.9.4': - resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==} + '@biomejs/cli-win32-arm64@2.4.7': + resolution: {integrity: sha512-hOUHBMlFCvDhu3WCq6vaBoG0dp0LkWxSEnEEsxxXvOa9TfT6ZBnbh72A/xBM7CBYB7WgwqboetzFEVDnMxelyw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-x64@1.9.4': - resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==} + '@biomejs/cli-win32-x64@2.4.7': + resolution: {integrity: sha512-qEpGjSkPC3qX4ycbMUthXvi9CkRq7kZpkqMY1OyhmYlYLnANnooDQ7hDerM8+0NJ+DZKVnsIc07h30XOpt7LtQ==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] @@ -538,39 +581,66 @@ packages: '@bprogress/core@1.1.18': resolution: {integrity: sha512-+khsDSJ7jv1L9LU34jnEsNqY6tXViSZDOeoxd09Ws8zVXzFjatRzWwBpiDQqTqyVZc0nlOxkkumFDtAgDJwY2A==} - '@cloudflare/kv-asset-handler@0.3.4': - resolution: {integrity: sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==} - engines: {node: '>=16.13'} + '@bramus/specificity@2.4.2': + resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} + hasBin: true '@corvu/utils@0.4.2': resolution: {integrity: sha512-Ox2kYyxy7NoXdKWdHeDEjZxClwzO4SKM8plAaVwmAJPxHMqA0rLOoAsa+hBDwRLpctf+ZRnAd/ykguuJidnaTA==} peerDependencies: solid-js: ^1.8 + '@csstools/color-helpers@6.0.2': + resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==} + engines: {node: '>=20.19.0'} + + '@csstools/css-calc@3.1.1': + resolution: {integrity: sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-color-parser@4.0.2': + resolution: {integrity: sha512-0GEfbBLmTFf0dJlpsNU7zwxRIH0/BGEMuXLTCvFYxuL1tNhqzTbtnFICyJLTNK4a+RechKP75e7w42ClXSnJQw==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-parser-algorithms@4.0.0': + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.1': + resolution: {integrity: sha512-BvqN0AMWNAnLk9G8jnUT77D+mUbY/H2b3uDTvg2isJkHaOufUE2R3AOwxWo7VBQKT1lOdwdvorddo2B/lk64+w==} + peerDependencies: + css-tree: ^3.2.1 + peerDependenciesMeta: + css-tree: + optional: true + + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} + '@ctrl/tinycolor@4.1.0': resolution: {integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==} engines: {node: '>=14'} - '@deno/shim-deno-test@0.5.0': - resolution: {integrity: sha512-4nMhecpGlPi0cSzT67L+Tm+GOJqvuk8gqHBziqcUQOarnuIax1z96/gJHCSIz2Z0zhxE6Rzwb3IZXPtFh51j+w==} - - '@deno/shim-deno@0.19.2': - resolution: {integrity: sha512-q3VTHl44ad8T2Tw2SpeAvghdGOjlnLPDNO2cpOxwMrBE/PVas6geWpbpIgrM+czOCH0yejp0yi8OaTuB+NU40Q==} - '@docsearch/css@3.9.0': resolution: {integrity: sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA==} - '@esbuild/aix-ppc64@0.20.2': - resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] + '@emnapi/core@1.9.0': + resolution: {integrity: sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==} - '@esbuild/aix-ppc64@0.24.2': - resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] + '@emnapi/runtime@1.9.0': + resolution: {integrity: sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==} + + '@emnapi/wasi-threads@1.2.0': + resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==} '@esbuild/aix-ppc64@0.25.2': resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==} @@ -578,17 +648,11 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.20.2': - resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.24.2': - resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} + '@esbuild/aix-ppc64@0.27.4': + resolution: {integrity: sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==} engines: {node: '>=18'} - cpu: [arm64] - os: [android] + cpu: [ppc64] + os: [aix] '@esbuild/android-arm64@0.25.2': resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==} @@ -596,16 +660,10 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm@0.20.2': - resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.24.2': - resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} + '@esbuild/android-arm64@0.27.4': + resolution: {integrity: sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==} engines: {node: '>=18'} - cpu: [arm] + cpu: [arm64] os: [android] '@esbuild/android-arm@0.25.2': @@ -614,16 +672,10 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-x64@0.20.2': - resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.24.2': - resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} + '@esbuild/android-arm@0.27.4': + resolution: {integrity: sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==} engines: {node: '>=18'} - cpu: [x64] + cpu: [arm] os: [android] '@esbuild/android-x64@0.25.2': @@ -632,17 +684,11 @@ packages: cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.20.2': - resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.24.2': - resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} + '@esbuild/android-x64@0.27.4': + resolution: {integrity: sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==} engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] + cpu: [x64] + os: [android] '@esbuild/darwin-arm64@0.25.2': resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==} @@ -650,16 +696,10 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.20.2': - resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.24.2': - resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} + '@esbuild/darwin-arm64@0.27.4': + resolution: {integrity: sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==} engines: {node: '>=18'} - cpu: [x64] + cpu: [arm64] os: [darwin] '@esbuild/darwin-x64@0.25.2': @@ -668,17 +708,11 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.20.2': - resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.24.2': - resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} + '@esbuild/darwin-x64@0.27.4': + resolution: {integrity: sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==} engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] + cpu: [x64] + os: [darwin] '@esbuild/freebsd-arm64@0.25.2': resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==} @@ -686,16 +720,10 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.20.2': - resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.24.2': - resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} + '@esbuild/freebsd-arm64@0.27.4': + resolution: {integrity: sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==} engines: {node: '>=18'} - cpu: [x64] + cpu: [arm64] os: [freebsd] '@esbuild/freebsd-x64@0.25.2': @@ -704,17 +732,11 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.20.2': - resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.24.2': - resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} + '@esbuild/freebsd-x64@0.27.4': + resolution: {integrity: sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==} engines: {node: '>=18'} - cpu: [arm64] - os: [linux] + cpu: [x64] + os: [freebsd] '@esbuild/linux-arm64@0.25.2': resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==} @@ -722,16 +744,10 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.20.2': - resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.24.2': - resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} + '@esbuild/linux-arm64@0.27.4': + resolution: {integrity: sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==} engines: {node: '>=18'} - cpu: [arm] + cpu: [arm64] os: [linux] '@esbuild/linux-arm@0.25.2': @@ -740,16 +756,10 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.20.2': - resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.24.2': - resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} + '@esbuild/linux-arm@0.27.4': + resolution: {integrity: sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==} engines: {node: '>=18'} - cpu: [ia32] + cpu: [arm] os: [linux] '@esbuild/linux-ia32@0.25.2': @@ -758,16 +768,10 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.20.2': - resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.24.2': - resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} + '@esbuild/linux-ia32@0.27.4': + resolution: {integrity: sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==} engines: {node: '>=18'} - cpu: [loong64] + cpu: [ia32] os: [linux] '@esbuild/linux-loong64@0.25.2': @@ -776,16 +780,10 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.20.2': - resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.24.2': - resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} + '@esbuild/linux-loong64@0.27.4': + resolution: {integrity: sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==} engines: {node: '>=18'} - cpu: [mips64el] + cpu: [loong64] os: [linux] '@esbuild/linux-mips64el@0.25.2': @@ -794,16 +792,10 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.20.2': - resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.24.2': - resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} + '@esbuild/linux-mips64el@0.27.4': + resolution: {integrity: sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==} engines: {node: '>=18'} - cpu: [ppc64] + cpu: [mips64el] os: [linux] '@esbuild/linux-ppc64@0.25.2': @@ -812,16 +804,10 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.20.2': - resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.24.2': - resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} + '@esbuild/linux-ppc64@0.27.4': + resolution: {integrity: sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==} engines: {node: '>=18'} - cpu: [riscv64] + cpu: [ppc64] os: [linux] '@esbuild/linux-riscv64@0.25.2': @@ -830,16 +816,10 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.20.2': - resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.24.2': - resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} + '@esbuild/linux-riscv64@0.27.4': + resolution: {integrity: sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==} engines: {node: '>=18'} - cpu: [s390x] + cpu: [riscv64] os: [linux] '@esbuild/linux-s390x@0.25.2': @@ -848,16 +828,10 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.20.2': - resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.24.2': - resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} + '@esbuild/linux-s390x@0.27.4': + resolution: {integrity: sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==} engines: {node: '>=18'} - cpu: [x64] + cpu: [s390x] os: [linux] '@esbuild/linux-x64@0.25.2': @@ -866,11 +840,11 @@ packages: cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.24.2': - resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} + '@esbuild/linux-x64@0.27.4': + resolution: {integrity: sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==} engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] + cpu: [x64] + os: [linux] '@esbuild/netbsd-arm64@0.25.2': resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==} @@ -878,16 +852,10 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.20.2': - resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.24.2': - resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} + '@esbuild/netbsd-arm64@0.27.4': + resolution: {integrity: sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==} engines: {node: '>=18'} - cpu: [x64] + cpu: [arm64] os: [netbsd] '@esbuild/netbsd-x64@0.25.2': @@ -896,11 +864,11 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.24.2': - resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} + '@esbuild/netbsd-x64@0.27.4': + resolution: {integrity: sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==} engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] + cpu: [x64] + os: [netbsd] '@esbuild/openbsd-arm64@0.25.2': resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==} @@ -908,16 +876,10 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.20.2': - resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.24.2': - resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} + '@esbuild/openbsd-arm64@0.27.4': + resolution: {integrity: sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==} engines: {node: '>=18'} - cpu: [x64] + cpu: [arm64] os: [openbsd] '@esbuild/openbsd-x64@0.25.2': @@ -926,17 +888,17 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.20.2': - resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} - engines: {node: '>=12'} + '@esbuild/openbsd-x64@0.27.4': + resolution: {integrity: sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==} + engines: {node: '>=18'} cpu: [x64] - os: [sunos] + os: [openbsd] - '@esbuild/sunos-x64@0.24.2': - resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} + '@esbuild/openharmony-arm64@0.27.4': + resolution: {integrity: sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==} engines: {node: '>=18'} - cpu: [x64] - os: [sunos] + cpu: [arm64] + os: [openharmony] '@esbuild/sunos-x64@0.25.2': resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==} @@ -944,17 +906,11 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.20.2': - resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.24.2': - resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} + '@esbuild/sunos-x64@0.27.4': + resolution: {integrity: sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==} engines: {node: '>=18'} - cpu: [arm64] - os: [win32] + cpu: [x64] + os: [sunos] '@esbuild/win32-arm64@0.25.2': resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==} @@ -962,16 +918,10 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.20.2': - resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.24.2': - resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} + '@esbuild/win32-arm64@0.27.4': + resolution: {integrity: sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==} engines: {node: '>=18'} - cpu: [ia32] + cpu: [arm64] os: [win32] '@esbuild/win32-ia32@0.25.2': @@ -980,16 +930,10 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.20.2': - resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.24.2': - resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} + '@esbuild/win32-ia32@0.27.4': + resolution: {integrity: sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==} engines: {node: '>=18'} - cpu: [x64] + cpu: [ia32] os: [win32] '@esbuild/win32-x64@0.25.2': @@ -998,36 +942,45 @@ packages: cpu: [x64] os: [win32] - '@expressive-code/core@0.40.2': - resolution: {integrity: sha512-gXY3v7jbgz6nWKvRpoDxK4AHUPkZRuJsM79vHX/5uhV9/qX6Qnctp/U/dMHog/LCVXcuOps+5nRmf1uxQVPb3w==} - - '@expressive-code/core@0.41.3': - resolution: {integrity: sha512-9qzohqU7O0+JwMEEgQhnBPOw5DtsQRBXhW++5fvEywsuX44vCGGof1SL5OvPElvNgaWZ4pFZAFSlkNOkGyLwSQ==} + '@esbuild/win32-x64@0.27.4': + resolution: {integrity: sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] - '@expressive-code/plugin-collapsible-sections@0.40.2': - resolution: {integrity: sha512-EtfuluXKk3CdFMAeCJoDsUJo/s+Yh9b+kX0hNHeFlZ/W2/H8FmdZ9Pu+Qel41vw4yP6AyiQpsamquO7bzlakug==} + '@exodus/bytes@1.15.0': + resolution: {integrity: sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + '@noble/hashes': ^1.8.0 || ^2.0.0 + peerDependenciesMeta: + '@noble/hashes': + optional: true - '@expressive-code/plugin-frames@0.40.2': - resolution: {integrity: sha512-aLw5IlDlZWb10Jo/TTDCVsmJhKfZ7FJI83Zo9VDrV0OBlmHAg7klZqw68VDz7FlftIBVAmMby53/MNXPnMjTSQ==} + '@expressive-code/core@0.41.7': + resolution: {integrity: sha512-ck92uZYZ9Wba2zxkiZLsZGi9N54pMSAVdrI9uW3Oo9AtLglD5RmrdTwbYPCT2S/jC36JGB2i+pnQtBm/Ib2+dg==} - '@expressive-code/plugin-frames@0.41.3': - resolution: {integrity: sha512-rFQtmf/3N2CK3Cq/uERweMTYZnBu+CwxBdHuOftEmfA9iBE7gTVvwpbh82P9ZxkPLvc40UMhYt7uNuAZexycRQ==} + '@expressive-code/plugin-collapsible-sections@0.41.7': + resolution: {integrity: sha512-uh74qWhAW6FEoNdlQAcHCcGBfuhslLvbWL5Fqmi+db/9mZI/I2G1Sr8NfApTEzD+jiIB/GmdPHV9kbjebkn0+g==} - '@expressive-code/plugin-line-numbers@0.40.2': - resolution: {integrity: sha512-YMLkn68n9a9DI/4fQW/f6QJ33uQUzHmGdV3pDl+f6fVTxv7rvhRja+UtPksm0ZJpft6vrrACV8wS2TaH77SBzw==} + '@expressive-code/plugin-frames@0.41.7': + resolution: {integrity: sha512-diKtxjQw/979cTglRFaMCY/sR6hWF0kSMg8jsKLXaZBSfGS0I/Hoe7Qds3vVEgeoW+GHHQzMcwvgx/MOIXhrTA==} - '@expressive-code/plugin-shiki@0.40.2': - resolution: {integrity: sha512-t2HMR5BO6GdDW1c1ISBTk66xO503e/Z8ecZdNcr6E4NpUfvY+MRje+LtrcvbBqMwWBBO8RpVKcam/Uy+1GxwKQ==} + '@expressive-code/plugin-line-numbers@0.41.7': + resolution: {integrity: sha512-wI9D5NBcgE9ksiJJV8YfOC0RPI3283+9AYWIb8pBUM5TSM8msIs1YRPDt8c8Ub0XGQvbjJKtB+f9fAl2RiHJ2A==} '@expressive-code/plugin-shiki@0.41.3': resolution: {integrity: sha512-RlTARoopzhFJIOVHLGvuXJ8DCEme/hjV+ZnRJBIxzxsKVpGPW4Oshqg9xGhWTYdHstTsxO663s0cdBLzZj9TQA==} - '@expressive-code/plugin-text-markers@0.40.2': - resolution: {integrity: sha512-/XoLjD67K9nfM4TgDlXAExzMJp6ewFKxNpfUw4F7q5Ecy+IU3/9zQQG/O70Zy+RxYTwKGw2MA9kd7yelsxnSmw==} + '@expressive-code/plugin-shiki@0.41.7': + resolution: {integrity: sha512-DL605bLrUOgqTdZ0Ot5MlTaWzppRkzzqzeGEu7ODnHF39IkEBbFdsC7pbl3LbUQ1DFtnfx6rD54k/cdofbW6KQ==} '@expressive-code/plugin-text-markers@0.41.3': resolution: {integrity: sha512-SN8tkIzDpA0HLAscEYD2IVrfLiid6qEdE9QLlGVSxO1KEw7qYvjpbNBQjUjMr5/jvTJ7ys6zysU2vLPHE0sb2g==} + '@expressive-code/plugin-text-markers@0.41.7': + resolution: {integrity: sha512-Ewpwuc5t6eFdZmWlFyeuy3e1PTQC0jFvw2Q+2bpcWXbOZhPLsT7+h8lsSIJxb5mS7wZko7cKyQ2RLYDyK6Fpmw==} + '@floating-ui/core@1.6.9': resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==} @@ -1064,21 +1017,20 @@ packages: '@internationalized/number@3.6.0': resolution: {integrity: sha512-PtrRcJVy7nw++wn4W2OuePQQfTqDzfusSuY1QTtui4wa7r+rGVtR75pO8CyKvHvzyQYi3Q1uO5sY0AsB4e65Bw==} - '@ioredis/commands@1.2.0': - resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} - '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - '@isaacs/fs-minipass@4.0.1': - resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} - engines: {node: '>=18.0.0'} + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} '@jridgewell/gen-mapping@0.3.8': resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -1087,9 +1039,6 @@ packages: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - '@jridgewell/source-map@0.3.6': - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} @@ -1099,6 +1048,9 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@kobalte/core@0.13.9': resolution: {integrity: sha512-TkeSpgNy7I5k8jwjqT9CK3teAxN0aFb3yyL9ODb06JVYMwXIk+UKrizoAF1ahLUP85lKnxv44B4Y5cXkHShgqw==} peerDependencies: @@ -1109,25 +1061,11 @@ packages: peerDependencies: solid-js: ^1.8.8 - '@mapbox/node-pre-gyp@2.0.0': - resolution: {integrity: sha512-llMXd39jtP0HpQLVI37Bf1m2ADlEb35GYSh1SDSLsBhR+5iCxiNGlT31yqbNtVHygHAtMy6dWFERpU2JgufhPg==} - engines: {node: '>=18'} - hasBin: true - '@mdx-js/mdx@3.1.0': resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==} - '@netlify/functions@2.8.2': - resolution: {integrity: sha512-DeoAQh8LuNPvBE4qsKlezjKj0PyXDryOFJfJKo3Z1qZLKzQ21sT314KQKPVjfvw6knqijj+IO+0kHXy/TJiqNA==} - engines: {node: '>=14.0.0'} - - '@netlify/node-cookies@0.1.0': - resolution: {integrity: sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==} - engines: {node: ^14.16.0 || >=16.0.0} - - '@netlify/serverless-functions-api@1.26.1': - resolution: {integrity: sha512-q3L9i3HoNfz0SGpTIS4zTcKBbRkxzCRpd169eyiTuk3IwcPC3/85mzLHranlKo2b+HYT0gu37YxGB45aD8A3Tw==} - engines: {node: '>=18.0.0'} + '@napi-rs/wasm-runtime@1.1.1': + resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -1171,186 +1109,114 @@ packages: '@octokit/types@13.8.0': resolution: {integrity: sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==} - '@parcel/watcher-android-arm64@2.5.1': - resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} - engines: {node: '>= 10.0.0'} + '@oxc-project/runtime@0.115.0': + resolution: {integrity: sha512-Rg8Wlt5dCbXhQnsXPrkOjL1DTSvXLgb2R/KYfnf1/K+R0k6UMLEmbQXPM+kwrWqSmWA2t0B1EtHy2/3zikQpvQ==} + engines: {node: ^20.19.0 || >=22.12.0} + + '@oxc-project/types@0.115.0': + resolution: {integrity: sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==} + + '@prettier/cli@0.6.0': + resolution: {integrity: sha512-kPQDTB+FPjvj23SmBH4T9uGCxMVS1cyJSY9dbOHGOC29nL9gR5gwZ4b4uMj4QRB0uE5K9c7avbAo+gvUbcZb4Q==} + hasBin: true + peerDependencies: + prettier: ^3.1.0 || ^4.0.0 + + '@resvg/resvg-wasm@2.4.0': + resolution: {integrity: sha512-C7c51Nn4yTxXFKvgh2txJFNweaVcfUPQxwEUFw4aWsCmfiBDJsTSwviIF8EcwjQ6k8bPyMWCl1vw4BdxE569Cg==} + engines: {node: '>= 10'} + + '@rolldown/binding-android-arm64@1.0.0-rc.9': + resolution: {integrity: sha512-lcJL0bN5hpgJfSIz/8PIf02irmyL43P+j1pTCfbD1DbLkmGRuFIA4DD3B3ZOvGqG0XiVvRznbKtN0COQVaKUTg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@parcel/watcher-darwin-arm64@2.5.1': - resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} - engines: {node: '>= 10.0.0'} + '@rolldown/binding-darwin-arm64@1.0.0-rc.9': + resolution: {integrity: sha512-J7Zk3kLYFsLtuH6U+F4pS2sYVzac0qkjcO5QxHS7OS7yZu2LRs+IXo+uvJ/mvpyUljDJ3LROZPoQfgBIpCMhdQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@parcel/watcher-darwin-x64@2.5.1': - resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} - engines: {node: '>= 10.0.0'} + '@rolldown/binding-darwin-x64@1.0.0-rc.9': + resolution: {integrity: sha512-iwtmmghy8nhfRGeNAIltcNXzD0QMNaaA5U/NyZc1Ia4bxrzFByNMDoppoC+hl7cDiUq5/1CnFthpT9n+UtfFyg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@parcel/watcher-freebsd-x64@2.5.1': - resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} - engines: {node: '>= 10.0.0'} + '@rolldown/binding-freebsd-x64@1.0.0-rc.9': + resolution: {integrity: sha512-DLFYI78SCiZr5VvdEplsVC2Vx53lnA4/Ga5C65iyldMVaErr86aiqCoNBLl92PXPfDtUYjUh+xFFor40ueNs4Q==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@parcel/watcher-linux-arm-glibc@2.5.1': - resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} - engines: {node: '>= 10.0.0'} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9': + resolution: {integrity: sha512-CsjTmTwd0Hri6iTw/DRMK7kOZ7FwAkrO4h8YWKoX/kcj833e4coqo2wzIFywtch/8Eb5enQ/lwLM7w6JX1W5RQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@parcel/watcher-linux-arm-musl@2.5.1': - resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} - engines: {node: '>= 10.0.0'} - cpu: [arm] + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-2x9O2JbSPxpxMDhP9Z74mahAStibTlrBMW0520+epJH5sac7/LwZW5Bmg/E6CXuEF53JJFW509uP+lSedaUNxg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] os: [linux] - '@parcel/watcher-linux-arm64-glibc@2.5.1': - resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} - engines: {node: '>= 10.0.0'} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.9': + resolution: {integrity: sha512-JA1QRW31ogheAIRhIg9tjMfsYbglXXYGNPLdPEYrwFxdbkQCAzvpSCSHCDWNl4hTtrol8WeboCSEpjdZK8qrCg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@parcel/watcher-linux-arm64-musl@2.5.1': - resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-aOKU9dJheda8Kj8Y3w9gnt9QFOO+qKPAl8SWd7JPHP+Cu0EuDAE5wokQubLzIDQWg2myXq2XhTpOVS07qqvT+w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-OalO94fqj7IWRn3VdXWty75jC5dk4C197AWEuMhIpvVv2lw9fiPhud0+bW2ctCxb3YoBZor71QHbY+9/WToadA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] os: [linux] - '@parcel/watcher-linux-x64-glibc@2.5.1': - resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} - engines: {node: '>= 10.0.0'} + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-cVEl1vZtBsBZna3YMjGXNvnYYrOJ7RzuWvZU0ffvJUexWkukMaDuGhUXn0rjnV0ptzGVkvc+vW9Yqy6h8YX4pg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@parcel/watcher-linux-x64-musl@2.5.1': - resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} - engines: {node: '>= 10.0.0'} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.9': + resolution: {integrity: sha512-UzYnKCIIc4heAKgI4PZ3dfBGUZefGCJ1TPDuLHoCzgrMYPb5Rv6TLFuYtyM4rWyHM7hymNdsg5ik2C+UD9VDbA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@parcel/watcher-wasm@2.3.0': - resolution: {integrity: sha512-ejBAX8H0ZGsD8lSICDNyMbSEtPMWgDL0WFCt/0z7hyf5v8Imz4rAM8xY379mBsECkq/Wdqa5WEDLqtjZ+6NxfA==} - engines: {node: '>= 10.0.0'} - bundledDependencies: - - napi-wasm - - '@parcel/watcher-wasm@2.5.1': - resolution: {integrity: sha512-RJxlQQLkaMMIuWRozy+z2vEqbaQlCuaCgVZIUCzQLYggY22LZbP5Y1+ia+FD724Ids9e+XIyOLXLrLgQSHIthw==} - engines: {node: '>= 10.0.0'} - bundledDependencies: - - napi-wasm - - '@parcel/watcher-win32-arm64@2.5.1': - resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} - engines: {node: '>= 10.0.0'} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.9': + resolution: {integrity: sha512-+6zoiF+RRyf5cdlFQP7nm58mq7+/2PFaY2DNQeD4B87N36JzfF/l9mdBkkmTvSYcYPE8tMh/o3cRlsx1ldLfog==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] - os: [win32] + os: [openharmony] - '@parcel/watcher-win32-ia32@2.5.1': - resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} - engines: {node: '>= 10.0.0'} - cpu: [ia32] + '@rolldown/binding-wasm32-wasi@1.0.0-rc.9': + resolution: {integrity: sha512-rgFN6sA/dyebil3YTlL2evvi/M+ivhfnyxec7AccTpRPccno/rPoNlqybEZQBkcbZu8Hy+eqNJCqfBR8P7Pg8g==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9': + resolution: {integrity: sha512-lHVNUG/8nlF1IQk1C0Ci574qKYyty2goMiPlRqkC5R+3LkXDkL5Dhx8ytbxq35m+pkHVIvIxviD+TWLdfeuadA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] os: [win32] - '@parcel/watcher-win32-x64@2.5.1': - resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} - engines: {node: '>= 10.0.0'} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.9': + resolution: {integrity: sha512-G0oA4+w1iY5AGi5HcDTxWsoxF509hrFIPB2rduV5aDqS9FtDg1CAfa7V34qImbjfhIcA8C+RekocJZA96EarwQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@parcel/watcher@2.5.1': - resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} - engines: {node: '>= 10.0.0'} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@prettier/cli@0.6.0': - resolution: {integrity: sha512-kPQDTB+FPjvj23SmBH4T9uGCxMVS1cyJSY9dbOHGOC29nL9gR5gwZ4b4uMj4QRB0uE5K9c7avbAo+gvUbcZb4Q==} - hasBin: true - peerDependencies: - prettier: ^3.1.0 || ^4.0.0 - - '@redocly/ajv@8.11.2': - resolution: {integrity: sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==} - - '@redocly/config@0.20.3': - resolution: {integrity: sha512-Nyyv1Bj7GgYwj/l46O0nkH1GTKWbO3Ixe7KFcn021aZipkZd+z8Vlu1BwkhqtVgivcKaClaExtWU/lDHkjBzag==} - - '@redocly/openapi-core@1.30.0': - resolution: {integrity: sha512-ZZc+FXKoQXJ9cOR7qRKHxOfKOsGCj2wSodklKdtM2FofzyjzvIwn1rksD5+9iJxvHuORPOPv3ppAHcM+iMr/Ag==} - engines: {node: '>=18.17.0', npm: '>=9.5.0'} - - '@resvg/resvg-wasm@2.4.0': - resolution: {integrity: sha512-C7c51Nn4yTxXFKvgh2txJFNweaVcfUPQxwEUFw4aWsCmfiBDJsTSwviIF8EcwjQ6k8bPyMWCl1vw4BdxE569Cg==} - engines: {node: '>= 10'} - - '@rollup/plugin-alias@5.1.1': - resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-commonjs@28.0.2': - resolution: {integrity: sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==} - engines: {node: '>=16.0.0 || 14 >= 14.17'} - peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-inject@5.0.5': - resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-json@6.1.0': - resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-node-resolve@15.3.1': - resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-replace@6.0.2': - resolution: {integrity: sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-terser@0.4.4': - resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@rolldown/pluginutils@1.0.0-rc.9': + resolution: {integrity: sha512-w6oiRWgEBl04QkFZgmW+jnU1EC9b57Oihi2ot3HNWIQRqgHp5PnYDia5iZ5FF7rpa4EQdiqMDXjlqKGXBhsoXw==} '@rollup/pluginutils@5.1.4': resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} @@ -1361,198 +1227,128 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.34.8': - resolution: {integrity: sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm-eabi@4.38.0': - resolution: {integrity: sha512-ldomqc4/jDZu/xpYU+aRxo3V4mGCV9HeTgUBANI3oIQMOL+SsxB+S2lxMpkFp5UamSS3XuTMQVbsS24R4J4Qjg==} + '@rollup/rollup-android-arm-eabi@4.59.0': + resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.34.8': - resolution: {integrity: sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-android-arm64@4.38.0': - resolution: {integrity: sha512-VUsgcy4GhhT7rokwzYQP+aV9XnSLkkhlEJ0St8pbasuWO/vwphhZQxYEKUP3ayeCYLhk6gEtacRpYP/cj3GjyQ==} + '@rollup/rollup-android-arm64@4.59.0': + resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.34.8': - resolution: {integrity: sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-arm64@4.38.0': - resolution: {integrity: sha512-buA17AYXlW9Rn091sWMq1xGUvWQFOH4N1rqUxGJtEQzhChxWjldGCCup7r/wUnaI6Au8sKXpoh0xg58a7cgcpg==} + '@rollup/rollup-darwin-arm64@4.59.0': + resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.34.8': - resolution: {integrity: sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==} + '@rollup/rollup-darwin-x64@4.59.0': + resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} cpu: [x64] os: [darwin] - '@rollup/rollup-darwin-x64@4.38.0': - resolution: {integrity: sha512-Mgcmc78AjunP1SKXl624vVBOF2bzwNWFPMP4fpOu05vS0amnLcX8gHIge7q/lDAHy3T2HeR0TqrriZDQS2Woeg==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.34.8': - resolution: {integrity: sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-arm64@4.38.0': - resolution: {integrity: sha512-zzJACgjLbQTsscxWqvrEQAEh28hqhebpRz5q/uUd1T7VTwUNZ4VIXQt5hE7ncs0GrF+s7d3S4on4TiXUY8KoQA==} + '@rollup/rollup-freebsd-arm64@4.59.0': + resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.34.8': - resolution: {integrity: sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.38.0': - resolution: {integrity: sha512-hCY/KAeYMCyDpEE4pTETam0XZS4/5GXzlLgpi5f0IaPExw9kuB+PDTOTLuPtM10TlRG0U9OSmXJ+Wq9J39LvAg==} + '@rollup/rollup-freebsd-x64@4.59.0': + resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.34.8': - resolution: {integrity: sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-gnueabihf@4.38.0': - resolution: {integrity: sha512-mimPH43mHl4JdOTD7bUMFhBdrg6f9HzMTOEnzRmXbOZqjijCw8LA5z8uL6LCjxSa67H2xiLFvvO67PT05PRKGg==} + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.34.8': - resolution: {integrity: sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==} + '@rollup/rollup-linux-arm-musleabihf@4.59.0': + resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.38.0': - resolution: {integrity: sha512-tPiJtiOoNuIH8XGG8sWoMMkAMm98PUwlriOFCCbZGc9WCax+GLeVRhmaxjJtz6WxrPKACgrwoZ5ia/uapq3ZVg==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.34.8': - resolution: {integrity: sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.38.0': - resolution: {integrity: sha512-wZco59rIVuB0tjQS0CSHTTUcEde+pXQWugZVxWaQFdQQ1VYub/sTrNdY76D1MKdN2NB48JDuGABP6o6fqos8mA==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.34.8': - resolution: {integrity: sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==} + '@rollup/rollup-linux-arm64-gnu@4.59.0': + resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.38.0': - resolution: {integrity: sha512-fQgqwKmW0REM4LomQ+87PP8w8xvU9LZfeLBKybeli+0yHT7VKILINzFEuggvnV9M3x1Ed4gUBmGUzCo/ikmFbQ==} + '@rollup/rollup-linux-arm64-musl@4.59.0': + resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.34.8': - resolution: {integrity: sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==} + '@rollup/rollup-linux-loong64-gnu@4.59.0': + resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.38.0': - resolution: {integrity: sha512-hz5oqQLXTB3SbXpfkKHKXLdIp02/w3M+ajp8p4yWOWwQRtHWiEOCKtc9U+YXahrwdk+3qHdFMDWR5k+4dIlddg==} + '@rollup/rollup-linux-loong64-musl@4.59.0': + resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': - resolution: {integrity: sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==} + '@rollup/rollup-linux-ppc64-gnu@4.59.0': + resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.38.0': - resolution: {integrity: sha512-NXqygK/dTSibQ+0pzxsL3r4Xl8oPqVoWbZV9niqOnIHV/J92fe65pOir0xjkUZDRSPyFRvu+4YOpJF9BZHQImw==} + '@rollup/rollup-linux-ppc64-musl@4.59.0': + resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.34.8': - resolution: {integrity: sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.38.0': - resolution: {integrity: sha512-GEAIabR1uFyvf/jW/5jfu8gjM06/4kZ1W+j1nWTSSB3w6moZEBm7iBtzwQ3a1Pxos2F7Gz+58aVEnZHU295QTg==} + '@rollup/rollup-linux-riscv64-gnu@4.59.0': + resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.38.0': - resolution: {integrity: sha512-9EYTX+Gus2EGPbfs+fh7l95wVADtSQyYw4DfSBcYdUEAmP2lqSZY0Y17yX/3m5VKGGJ4UmIH5LHLkMJft3bYoA==} + '@rollup/rollup-linux-riscv64-musl@4.59.0': + resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.34.8': - resolution: {integrity: sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==} + '@rollup/rollup-linux-s390x-gnu@4.59.0': + resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.38.0': - resolution: {integrity: sha512-Mpp6+Z5VhB9VDk7RwZXoG2qMdERm3Jw07RNlXHE0bOnEeX+l7Fy4bg+NxfyN15ruuY3/7Vrbpm75J9QHFqj5+Q==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.34.8': - resolution: {integrity: sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.38.0': - resolution: {integrity: sha512-vPvNgFlZRAgO7rwncMeE0+8c4Hmc+qixnp00/Uv3ht2x7KYrJ6ERVd3/R0nUtlE6/hu7/HiiNHJ/rP6knRFt1w==} + '@rollup/rollup-linux-x64-gnu@4.59.0': + resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.34.8': - resolution: {integrity: sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==} + '@rollup/rollup-linux-x64-musl@4.59.0': + resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.38.0': - resolution: {integrity: sha512-q5Zv+goWvQUGCaL7fU8NuTw8aydIL/C9abAVGCzRReuj5h30TPx4LumBtAidrVOtXnlB+RZkBtExMsfqkMfb8g==} + '@rollup/rollup-openbsd-x64@4.59.0': + resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} cpu: [x64] - os: [linux] + os: [openbsd] - '@rollup/rollup-win32-arm64-msvc@4.34.8': - resolution: {integrity: sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==} + '@rollup/rollup-openharmony-arm64@4.59.0': + resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} cpu: [arm64] - os: [win32] + os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.38.0': - resolution: {integrity: sha512-u/Jbm1BU89Vftqyqbmxdq14nBaQjQX1HhmsdBWqSdGClNaKwhjsg5TpW+5Ibs1mb8Es9wJiMdl86BcmtUVXNZg==} + '@rollup/rollup-win32-arm64-msvc@4.59.0': + resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.34.8': - resolution: {integrity: sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.38.0': - resolution: {integrity: sha512-mqu4PzTrlpNHHbu5qleGvXJoGgHpChBlrBx/mEhTPpnAL1ZAYFlvHD7rLK839LLKQzqEQMFJfGrrOHItN4ZQqA==} + '@rollup/rollup-win32-ia32-msvc@4.59.0': + resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.34.8': - resolution: {integrity: sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==} + '@rollup/rollup-win32-x64-gnu@4.59.0': + resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.38.0': - resolution: {integrity: sha512-jjqy3uWlecfB98Psxb5cD6Fny9Fupv9LrDSPTQZUROqjvZmcCqNu4UMl7qqhlUUGpwiAkotj6GYu4SZdcr/nLw==} + '@rollup/rollup-win32-x64-msvc@4.59.0': + resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} cpu: [x64] os: [win32] @@ -1600,12 +1396,9 @@ packages: engines: {node: '>= 8.0.0'} hasBin: true - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - '@solid-mediakit/og@0.4.1': resolution: {integrity: sha512-DHYJVDX/rk2LHZIv28+VjcSvJD2u7hfceHl+/q0ufpsW0KRZYRVBsFmT/F3LUDkHYM1ckx1Ec8Wh/NvDtkrkng==} + version: 0.4.1 peerDependencies: '@solidjs/meta': ^0.29.4 '@solidjs/start': ^1.1.3 @@ -1716,26 +1509,36 @@ packages: peerDependencies: solid-js: ^1.8.6 - '@solidjs/start@1.1.3': - resolution: {integrity: sha512-JjBQDk+5xIRVgAdh3A5/caWq1g2LaVh41mQTcl7ACKfmnYRkHkvGezV4XnckTBxXkmFYkXKxwCWavguPA0JE5g==} + '@solidjs/start@https://pkg.pr.new/solidjs/solid-start/@solidjs/start@2080': + resolution: {tarball: https://pkg.pr.new/solidjs/solid-start/@solidjs/start@2080} + version: 2.0.0-alpha.2 + engines: {node: '>=22'} peerDependencies: - vinxi: ^0.5.3 + vite: ^7 + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@tanstack/directive-functions-plugin@1.114.29': - resolution: {integrity: sha512-yo9hyuCUGVGO2L3hVHlHCZV7iGIpkVGxJdnxpGC/U7+W0N1lYPx+kFGUvnkkJ3gAo4ZP3/mJxiBslywsVCAhgQ==} + '@tanstack/directive-functions-plugin@1.134.5': + resolution: {integrity: sha512-J3oawV8uBRBbPoLgMdyHt+LxzTNuWRKNJJuCLWsm/yq6v0IQSvIVCgfD2+liIiSnDPxGZ8ExduPXy8IzS70eXw==} engines: {node: '>=12'} + peerDependencies: + vite: '>=6.0.0 || >=7.0.0' - '@tanstack/router-utils@1.114.29': - resolution: {integrity: sha512-RDn3aMOHPrXYCQGXNaN4P0MvwiuCZHBKTO9srtLqYYCzW2iipqbyZ53RI54TzPgNLE37jtN5XaEH4FNF0Ydodg==} + '@tanstack/router-utils@1.133.19': + resolution: {integrity: sha512-WEp5D2gPxvlLDRXwD/fV7RXjYtqaqJNXKB/L6OyZEbT+9BG/Ib2d7oG9GSUZNNMGPGYAlhBUOi3xutySsk6rxA==} engines: {node: '>=12'} - '@tanstack/server-functions-plugin@1.114.29': - resolution: {integrity: sha512-jNroqZgsJURdHHL4haeojoye1K3CWNk+lh88zTiABroal8ajzURETzXWGrBIllGpjbr4GT2R4jryqO62fG14Dg==} + '@tanstack/server-functions-plugin@1.134.5': + resolution: {integrity: sha512-2sWxq70T+dOEUlE3sHlXjEPhaFZfdPYlWTSkHchWXrFGw2YOAa+hzD6L9wHMjGDQezYd03ue8tQlHG+9Jzbzgw==} engines: {node: '>=12'} + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/acorn@4.0.6': resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} @@ -1748,18 +1551,24 @@ packages: '@types/babel__template@7.4.4': resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - '@types/babel__traverse@7.20.7': - resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} '@types/braces@3.0.5': resolution: {integrity: sha512-SQFof9H+LXeWNz8wDe7oN5zu7ket0qwMu5vZubW4GCJ8Kkeh6nBWUz87+KTz/G3Kqsrp0j/W253XJb3KMEeg3w==} + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + '@types/cross-spawn@6.0.6': resolution: {integrity: sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==} '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} @@ -1769,20 +1578,20 @@ packages: '@types/estree@1.0.7': resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - '@types/http-proxy@1.17.16': - resolution: {integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==} - '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} '@types/mdx@2.0.13': resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} - '@types/micromatch@4.0.9': - resolution: {integrity: sha512-7V+8ncr22h4UoYRLnLXSpTxjQrNUXtWHGeMPRJt1nULXI57G9bIcpyrHlmrQ7QK24EyyuXvYcSSWAM8GA9nqCg==} + '@types/micromatch@4.0.10': + resolution: {integrity: sha512-5jOhFDElqr4DKTrTEbnW8DZ4Hz5LRUEmyrGpCMrD/NphYv3nUnaF08xmSLx1rGGnyEs/kFnhiw6dCgcDqMr5PQ==} '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} @@ -1790,9 +1599,6 @@ packages: '@types/node@22.13.5': resolution: {integrity: sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==} - '@types/resolve@1.20.2': - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - '@types/resolve@1.20.6': resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} @@ -1813,56 +1619,44 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@vercel/nft@0.27.10': - resolution: {integrity: sha512-zbaF9Wp/NsZtKLE4uVmL3FyfFwlpDyuymQM1kPbeT0mVOHKDQQNjnnfslB3REg3oZprmNFJuh3pkHBk2qAaizg==} - engines: {node: '>=16'} - hasBin: true - '@vercel/og@0.6.8': resolution: {integrity: sha512-e4kQK9mP8ntpo3dACWirGod/hHv4qO5JMj9a/0a2AZto7b4persj5YP7t1Er372gTtYFTYxNhMx34jRvHooglw==} engines: {node: '>=16'} - '@vinxi/listhen@1.5.6': - resolution: {integrity: sha512-WSN1z931BtasZJlgPp704zJFnQFRg7yzSjkm3MzAWQYe4uXFXlFr1hc5Ac2zae5/HDOz5x1/zDM5Cb54vTCnWw==} - hasBin: true + '@vitest/expect@4.1.0': + resolution: {integrity: sha512-EIxG7k4wlWweuCLG9Y5InKFwpMEOyrMb6ZJ1ihYu02LVj/bzUwn2VMU+13PinsjRW75XnITeFrQBMH5+dLvCDA==} - '@vinxi/plugin-directives@0.5.0': - resolution: {integrity: sha512-zpgPWoul5vKbNH5GASHtHa7InwQWElmVdOexvyO4Nfvz7CeYfAAQ5/BAV01sVJPks4dfsLnBCegAgRPRykdUeA==} + '@vitest/mocker@4.1.0': + resolution: {integrity: sha512-evxREh+Hork43+Y4IOhTo+h5lGmVRyjqI739Rz4RlUPqwrkFFDF6EMvOOYjTx4E8Tl6gyCLRL8Mu7Ry12a13Tw==} peerDependencies: - vinxi: ^0.5.0 + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true - '@vinxi/server-components@0.5.0': - resolution: {integrity: sha512-2p6ZYzoqF7ZAriU0rC9KJWSX/n5qHhUBs7x04SLYzmy9lFxQNw3YHsmsA4b3aHDU+Mxw26wyFwvIbrL6eU3Gyw==} - peerDependencies: - vinxi: ^0.5.0 + '@vitest/pretty-format@4.1.0': + resolution: {integrity: sha512-3RZLZlh88Ib0J7NQTRATfc/3ZPOnSUn2uDBUoGNn5T36+bALixmzphN26OUD3LRXWkJu4H0s5vvUeqBiw+kS0A==} - abbrev@3.0.0: - resolution: {integrity: sha512-+/kfrslGQ7TNV2ecmQwMJj/B65g5KVq1/L3SGVZ3tCYGqlzFuFCGBZJtMP99wH3NpEUyAjn0zPdPUg0D+DwrOA==} - engines: {node: ^18.17.0 || >=20.5.0} + '@vitest/runner@4.1.0': + resolution: {integrity: sha512-Duvx2OzQ7d6OjchL+trw+aSrb9idh7pnNfxrklo14p3zmNL4qPCDeIJAK+eBKYjkIwG96Bc6vYuxhqDXQOWpoQ==} - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} + '@vitest/snapshot@4.1.0': + resolution: {integrity: sha512-0Vy9euT1kgsnj1CHttwi9i9o+4rRLEaPRSOJ5gyv579GJkNpgJK+B4HSv/rAWixx2wdAFci1X4CEPjiu2bXIMg==} - acorn-import-attributes@1.9.5: - resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} - peerDependencies: - acorn: ^8 + '@vitest/spy@4.1.0': + resolution: {integrity: sha512-pz77k+PgNpyMDv2FV6qmk5ZVau6c3R8HC8v342T2xlFxQKTrSeYw9waIJG8KgV9fFwAtTu4ceRzMivPTH6wSxw==} + + '@vitest/utils@4.1.0': + resolution: {integrity: sha512-XfPXT6a8TZY3dcGY8EdwsBulFCIw+BeeX0RZn2x/BtiY/75YGh8FeWGG8QISN/WhaqSrE2OrlDgtF8q5uhOTmw==} acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-loose@8.4.0: - resolution: {integrity: sha512-M0EUka6rb+QC4l9Z3T0nJEzNOO7JcoJlYMrBlyBCiFSXRyxjLKayd4TbQs2FDRWQU1h9FR7QVNHt+PEaoNL5rQ==} - engines: {node: '>=0.4.0'} - - acorn-typescript@1.4.13: - resolution: {integrity: sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==} - peerDependencies: - acorn: '>=8.9.0' - acorn@8.14.0: resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} @@ -1873,17 +1667,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - agent-base@7.1.3: - resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} - engines: {node: '>= 14'} - - ansi-align@3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - ansi-purge@1.0.1: resolution: {integrity: sha512-5NNMT7rljQ24DKHnIYG1qFXs8eUv5mZcT6kOPf5NopQUzpURBh/T4tbQw3TX//q3Zpw3JwVvsVHHsRKJesQHZQ==} @@ -1906,48 +1689,27 @@ packages: ansi-truncate@1.2.0: resolution: {integrity: sha512-/SLVrxNIP8o8iRHjdK3K9s2hDqdvb86NEjZOAB6ecWFsOo+9obaby97prnvAPn6j7ExXCpbvtlJFYPkkspg4BQ==} - ansis@3.17.0: - resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} + ansis@4.2.0: + resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} engines: {node: '>=14'} - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - archiver-utils@5.0.2: - resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} - engines: {node: '>= 14'} - - archiver@7.0.1: - resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} - engines: {node: '>= 14'} - argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - ast-types@0.16.1: - resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} - engines: {node: '>=4'} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} astring@1.9.0: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true - async-sema@3.1.1: - resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} - - async@3.2.6: - resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} - atomically@2.0.3: resolution: {integrity: sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw==} - b4a@1.6.7: - resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} - babel-dead-code-elimination@1.0.10: resolution: {integrity: sha512-DV5bdJZTzZ0zn0DC24v3jD7Mnidh6xhKa4GfKCbq3sfW8kaWhDdZjP3i81geA8T33tdYqWKw4D3fVv0CwEgKVA==} @@ -1967,39 +1729,26 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-events@2.5.4: - resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} - base64-js@0.0.8: resolution: {integrity: sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==} engines: {node: '>= 0.4'} - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - bcp-47-match@2.0.3: resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} before-after-hook@3.0.2: resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==} + bidi-js@1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - boxen@7.1.1: - resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} - engines: {node: '>=14.16'} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} @@ -2007,56 +1756,23 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.24.4: - resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - browserslist@4.25.0: resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - buffer-crc32@1.0.0: - resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} - engines: {node: '>=8.0.0'} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - c12@2.0.1: - resolution: {integrity: sha512-Z4JgsKXHG37C6PYUtIxCfLJZvo6FyhHJoClwwb9ftUkLpPSkuYqn6Tr+vnaN8hymm0kIbcg6Ey3kv/Q71k5w/A==} - peerDependencies: - magicast: ^0.3.5 - peerDependenciesMeta: - magicast: - optional: true - - camelcase@7.0.1: - resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} - engines: {node: '>=14.16'} - camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - caniuse-lite@1.0.30001700: - resolution: {integrity: sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==} - caniuse-lite@1.0.30001720: resolution: {integrity: sha512-Ec/2yV2nNPwb4DnTANEV99ZWwm3ZWfdlfkQbWSDDt+PsXEVYwlhPH8tdMaPunYTKKmz7AnHi2oNEi1GcmKCD8g==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chalk@5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - change-case@5.4.4: - resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} @@ -2070,41 +1786,6 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} - - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - - chownr@3.0.0: - resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} - engines: {node: '>=18'} - - citty@0.1.6: - resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} - - cli-boxes@3.0.0: - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} - engines: {node: '>=10'} - - clipboardy@4.0.0: - resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} - engines: {node: '>=18'} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - cluster-key-slot@1.1.2: - resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} - engines: {node: '>=0.10.0'} - collapse-white-space@2.1.0: resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} @@ -2115,56 +1796,21 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - colorette@1.4.0: - resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} - comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - - compatx@0.1.8: - resolution: {integrity: sha512-jcbsEAR81Bt5s1qOFymBufmCbXCXbk0Ql+K5ouj6gCyx2yHlu6AgmGIi9HxfKixpUDO5bCFJUHQ5uM6ecbTebw==} - - compress-commons@6.0.2: - resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} - engines: {node: '>= 14'} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - consola@3.4.0: - resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==} + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-es@1.2.2: - resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} - - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - crc-32@1.2.2: - resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} - engines: {node: '>=0.8'} - hasBin: true - - crc32-stream@6.0.0: - resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} - engines: {node: '>= 14'} - - croner@9.0.0: - resolution: {integrity: sha512-onMB0OkDjkXunhdW9htFjEhqrD54+M94i6ackoUkjHKbRnXdyEyKRelp4nJ1kAz32+s27jP1FsebpJCVl0BsvA==} - engines: {node: '>=18.0'} + cookie-es@2.0.0: + resolution: {integrity: sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==} cross-env@7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} @@ -2175,8 +1821,13 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - crossws@0.3.4: - resolution: {integrity: sha512-uj0O1ETYX1Bh6uSgktfPvwDiPYGQ3aI4qVsaC/LWpkIzGj1nUYm5FK3K+t11oOlpN01lGbprFCH4wBlKdJjVgw==} + crossws@0.4.4: + resolution: {integrity: sha512-w6c4OdpRNnudVmcgr7brb/+/HmYjMQvYToO/oTrprTwxRUiom3LYWU1PMWuD006okbUWpII1Ea9/+kwpUfmyRg==} + peerDependencies: + srvx: '>=0.7.1' + peerDependenciesMeta: + srvx: + optional: true css-background-parser@0.1.0: resolution: {integrity: sha512-2EZLisiZQ+7m4wwur/qiYJRniHX4K5Tc9w93MT3AS0WS1u5kaZ4FKXlOTBhOjc+CgEgPiGY+fX1yWD8UwpEqUA==} @@ -2198,6 +1849,10 @@ packages: css-to-react-native@3.2.0: resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -2206,11 +1861,12 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - dax-sh@0.39.2: - resolution: {integrity: sha512-gpuGEkBQM+5y6p4cWaw9+ePy5TNon+fdwFVtTI8leU3UhwhsBfPewRxMXGuQNC+M2b/MDGMlfgpqynkcd0C3FQ==} + data-urls@7.0.0: + resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - db0@0.2.4: - resolution: {integrity: sha512-hIzftLH1nMsF95zSLjDLYLbE9huOXnLYUTAQ5yKF5amp0FpeD+B15XJa8BvGYSOeSCH4gl2WahB/y1FcUByQSg==} + db0@0.3.4: + resolution: {integrity: sha512-RiXXi4WaNzPTHEOu8UPQKMooIbqOEyqA1t7Z6MsdxSCeb8iUC9ko3LcmsLmeUt2SM5bctfArZKkRQggKZz7JNw==} peerDependencies: '@electric-sql/pglite': '*' '@libsql/client': '*' @@ -2232,14 +1888,6 @@ packages: sqlite3: optional: true - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.0: resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} engines: {node: '>=6.0'} @@ -2258,52 +1906,19 @@ packages: supports-color: optional: true + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} - dedent@1.5.3: - resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - - define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - denque@2.1.0: - resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} - engines: {node: '>=0.10'} - - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - destr@2.0.3: - resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} - - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - detect-libc@2.0.3: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} @@ -2314,10 +1929,6 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - diff@7.0.0: - resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} - engines: {node: '>=0.3.1'} - diff@8.0.2: resolution: {integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==} engines: {node: '>=0.3.1'} @@ -2326,26 +1937,9 @@ packages: resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} hasBin: true - dot-prop@9.0.0: - resolution: {integrity: sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==} - engines: {node: '>=18'} - - dotenv@16.4.7: - resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} - engines: {node: '>=12'} - - duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - - electron-to-chromium@1.5.103: - resolution: {integrity: sha512-P6+XzIkfndgsrjROJWfSvVEgNHtPgbhVyTkwLjUM2HU/h7pZRORgaTlHqfAikqxKmdJMLW8fftrdGWbd/Ds0FA==} - electron-to-chromium@1.5.161: resolution: {integrity: sha512-hwtetwfKNZo/UlwHIVBlKZVdy7o8bIZxxKs0Mv/ROPiQQQmDgdm5a+KvKtBsxM8ZjFzTaCeLoodZ8jiBE3o9rA==} @@ -2361,23 +1955,28 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - - encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} - entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - error-stack-parser@2.1.4: - resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - - es-module-lexer@1.6.0: - resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + + env-runner@0.1.6: + resolution: {integrity: sha512-fSb7X1zdda8k6611a6/SdSQpDe7a/bqMz2UWdbHjk9YWzpUR4/fn9YtE/hqgGQ2nhvVN0zUtcL1SRMKwIsDbAA==} + hasBin: true + peerDependencies: + miniflare: ^4.0.0 + peerDependenciesMeta: + miniflare: + optional: true + + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + + es-module-lexer@2.0.0: + resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} esast-util-from-estree@2.0.0: resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} @@ -2385,18 +1984,13 @@ packages: esast-util-from-js@2.0.1: resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - esbuild@0.20.2: - resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} - engines: {node: '>=12'} - hasBin: true - - esbuild@0.24.2: - resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} + esbuild@0.25.2: + resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==} engines: {node: '>=18'} hasBin: true - esbuild@0.25.2: - resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==} + esbuild@0.27.4: + resolution: {integrity: sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==} engines: {node: '>=18'} hasBin: true @@ -2443,24 +2037,9 @@ packages: estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - - eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} expressive-code-twoslash@0.4.0: resolution: {integrity: sha512-7HffO04pYLNHX0P8/8xX+pdgWYpFWdP9/gYi7dAH1nSAxO1W7pQHW4Ly6OXD3fs4SChkGP/PWkE4oLo6CeXTfg==} @@ -2469,12 +2048,12 @@ packages: expressive-code: ^0.40.0 typescript: ^5.7 - expressive-code@0.40.2: - resolution: {integrity: sha512-1zIda2rB0qiDZACawzw2rbdBQiWHBT56uBctS+ezFe5XMAaFaHLnnSYND/Kd+dVzO9HfCXRDpzH3d+3fvOWRcw==} - expressive-code@0.41.3: resolution: {integrity: sha512-YLnD62jfgBZYrXIPQcJ0a51Afv9h8VlWqEGK9uU2T5nL/5rb8SnA86+7+mgCZe5D34Tff5RNEA5hjNVJYHzrFg==} + expressive-code@0.41.7: + resolution: {integrity: sha512-2wZjC8OQ3TaVEMcBtYY4Va3lo6J+Ai9jf3d4dbhURMJcU4Pbqe6EcHe424MIZI0VHUA1bR6xdpoHYi3yxokWqA==} + extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} @@ -2485,12 +2064,6 @@ packages: fast-content-type-parse@2.0.1: resolution: {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==} - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -2510,8 +2083,9 @@ packages: fault@2.0.1: resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} - fdir@6.4.3: - resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -2521,9 +2095,6 @@ packages: fflate@0.7.4: resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==} - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -2534,15 +2105,6 @@ packages: find-up-path@1.0.1: resolution: {integrity: sha512-cl4Sfxufq9WK848L887b4r+NVZoBjMeB4QydPZ+pXbp6Jt2nUVspTo2svNOm48stIIeSxtuCsULa9+e+LMTzwA==} - follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - foreground-child@3.3.0: resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} @@ -2551,21 +2113,6 @@ packages: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} - fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - - fs-extra@11.3.0: - resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} - engines: {node: '>=14.14'} - - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -2581,27 +2128,12 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - get-current-package@1.0.1: resolution: {integrity: sha512-c/Rw5ByDQ+zg+Lh/emBWv0bDpugEFdmXPR6/srIemVtIvol0XbT0JAr8Db0cX+Jj/xY9wj1wdjeq2qNB35Tayg==} - get-port-please@3.1.2: - resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} - - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - get-tsconfig@4.10.0: resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} - giget@1.2.5: - resolution: {integrity: sha512-r1ekGw/Bgpi3HLV3h1MRBIlSAdHoIMklpaQ3OQLFcRw9PwAj2rqigvIbg+dBUI51OxVI2jsEtDywDBjSiuf7Ug==} - hasBin: true - github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -2609,19 +2141,12 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - glob@11.0.1: resolution: {integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==} engines: {node: 20 || >=22} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -2630,13 +2155,6 @@ packages: resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} - globby@14.1.0: - resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==} - engines: {node: '>=18'} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - grammex@3.1.10: resolution: {integrity: sha512-UCfMsV/sfqk4TN1+m5ehSOXuADyLUgSuwMI2vCVlbN/REoSmTl4eagswC9DzzVxtsKv7Yp2CmIJNn4fMk8PaQA==} @@ -2644,15 +2162,15 @@ packages: resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} engines: {node: '>=6.0'} - gzip-size@7.0.0: - resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - h3@1.13.0: - resolution: {integrity: sha512-vFEAu/yf8UMUcB4s43OaDaigcqpQd14yanmOsn+NcRX3/guSKncyE2rOYhq8RIchgJrPSs/QiIddnTTR1ddiAg==} - - h3@1.15.1: - resolution: {integrity: sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==} + h3@2.0.1-rc.16: + resolution: {integrity: sha512-h+pjvyujdo9way8qj6FUbhaQcHlR8FEq65EhTX9ViT5pK8aLj68uFl4hBkF+hsTJAH+H1END2Yv6hTIsabGfag==} + engines: {node: '>=20.11.1'} + hasBin: true + peerDependencies: + crossws: ^0.4.1 + peerDependenciesMeta: + crossws: + optional: true hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} @@ -2707,8 +2225,12 @@ packages: resolution: {integrity: sha512-Ox1pJVrDCyGHMG9CFg1tmrRUMRPRsAWYc/PinY0XzJU4K7y7vjNoLKIQ7BR5UJMCxNN8EM1MNDmHWA/B3aZUuw==} engines: {node: '>=6'} - hookable@5.5.3: - resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + hookable@6.1.0: + resolution: {integrity: sha512-ZoKZSJgu8voGK2geJS+6YtYjvIzu9AOM/KZXsBxr83uhLL++e9pEv/dlgwgy3dvHg06kTz6JOh1hk3C8Ceiymw==} + + html-encoding-sniffer@6.0.0: + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} html-entities@2.3.3: resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} @@ -2719,50 +2241,12 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - - http-proxy@1.18.1: - resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} - engines: {node: '>=8.0.0'} - - http-shutdown@1.2.2: - resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - - https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} - - httpxy@0.1.7: - resolution: {integrity: sha512-pXNx8gnANKAndgga5ahefxc++tJvNL87CXoRwxn1cJE2ZkWEojF3tNfQIEhZX/vfpt+wzeAzpUI4qkediX1MLQ==} - - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - ignore@7.0.3: - resolution: {integrity: sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==} - engines: {node: '>= 4'} + httpxy@0.3.1: + resolution: {integrity: sha512-XjG/CEoofEisMrnFr0D6U6xOZ4mRfnwcYQ9qvvnT4lvnX8BoeA3x3WofB75D+vZwpaobFVkBIHrZzoK40w8XSw==} import-meta-resolve@4.1.0: resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} - index-to-position@0.1.2: - resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==} - engines: {node: '>=18'} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - ini-simple-parser@1.0.1: resolution: {integrity: sha512-myU5nhF2miBQP3tO/giUi+8BI9QhfM/XRZd0RD7G0p+40K6KPAwxMDtH3UEtJ2XJZbd+ZiQOoGh432DTYfzNVQ==} @@ -2772,13 +2256,6 @@ packages: ionstore@1.0.1: resolution: {integrity: sha512-g+99vyka3EiNFJCnbq3NxegjV211RzGtkDUMbZGB01Con8ZqUmMx/FpWMeqgDXOqgM7QoVeDhe+CfYCWznaDVA==} - ioredis@5.5.0: - resolution: {integrity: sha512-7CutT89g23FfSa8MDoIFs2GYYa0PaNiW/OrT+nRyjRXHDZd17HmIgy+reOQ/yhh72NznNjGuS8kbCAcA4Ro4mw==} - engines: {node: '>=12.22.0'} - - iron-webcrypto@1.2.1: - resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} - is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} @@ -2796,16 +2273,6 @@ packages: is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - - is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} @@ -2825,14 +2292,6 @@ packages: is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true - - is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -2841,62 +2300,20 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} - is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} is-what@4.1.16: resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} engines: {node: '>=12.13'} - is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - - is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} - engines: {node: '>=16'} - - is64bit@2.0.0: - resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} - engines: {node: '>=18'} - - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isexe@3.1.1: - resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} - engines: {node: '>=16'} - - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jackspeak@4.1.0: resolution: {integrity: sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==} engines: {node: 20 || >=22} - jiti@1.21.7: - resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} - hasBin: true - - jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} - hasBin: true - - js-levenshtein@1.1.6: - resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} - engines: {node: '>=0.10.0'} - js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -2911,14 +2328,20 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsdom@29.0.0: + resolution: {integrity: sha512-9FshNB6OepopZ08unmmGpsF7/qCjxGPbo3NbgfJAnPeHXnsODE9WWffXZtRFRFe0ntzaAOcSKNJFz8wiyvF1jQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true + jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} hasBin: true - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - json-sorted-stringify@1.0.1: resolution: {integrity: sha512-pWv9hqWho37EpwpBgqDYVPKPCgT/ytuvqtlBvb6M44BrnvooTk/5D/aSeohsGDLp+g8waP5dUUGODR+Ley+Idg==} @@ -2927,9 +2350,6 @@ packages: engines: {node: '>=6'} hasBin: true - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - kasi@1.1.1: resolution: {integrity: sha512-pzBwGWFIjf84T/8aD0XzMli1T3Ckr/jVLh6v0Jskwiv5ehmcgDM+vpYFSk8WzGn4ed4HqgaifTgQUHzzZHa+Qw==} @@ -2937,64 +2357,108 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - klona@2.0.6: - resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} - engines: {node: '>= 8'} - - knitwork@1.2.0: - resolution: {integrity: sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg==} - kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - lazystream@1.0.1: - resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} - engines: {node: '>= 0.6.3'} + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} linebreak@1.1.0: resolution: {integrity: sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==} - listhen@1.9.0: - resolution: {integrity: sha512-I8oW2+QL5KJo8zXNWX046M134WchxsXC7SawLPvRQpogCbkyQIaFxPE89A2HiwR7vAK2Dm2ERBAmyjTYGYEpBg==} - hasBin: true - local-pkg@1.0.0: resolution: {integrity: sha512-bbgPw/wmroJsil/GgL4qjDzs5YLTBMQ99weRsok1XCDccQeehbHA/I1oRvk2NPtr7KGZgT/Y5tPRnAtMqeG2Kg==} engines: {node: '>=14'} - lodash.defaults@4.2.0: - resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - - lodash.isarguments@3.1.0: - resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - lomemo@1.0.1: resolution: {integrity: sha512-g8CnVp7UYypeQKpXpMzyrJoDzhOoqVQYSJApoq/cFI3vGxXoHQ+6lH5cApW9XwzVy5SL9/Owil7/JxbKckw0Lg==} longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.0.2: resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} engines: {node: 20 || >=22} + lru-cache@11.2.7: + resolution: {integrity: sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} magic-string@0.30.19: resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} - magicast@0.2.11: - resolution: {integrity: sha512-6saXbRDA1HMkqbsvHOU6HBjCVgZT460qheRkLhJQHWAbhXoWESI3Kn/dGGXyKs15FFKR85jsUqFx2sMK0wy/5g==} - - magicast@0.3.5: - resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} @@ -3064,13 +2528,13 @@ packages: resolution: {integrity: sha512-xySmf8g4fPKMeC07jXGz971EkLbWAJ83s4US2Tj9lEdnZ142UP5grN73H1Xd3HzrdbU5o9GYYP/y8F9ZSwLE9g==} deprecated: '`mdast` was renamed to `remark`' + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + merge-anything@5.1.7: resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} engines: {node: '>=12.13'} - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -3190,160 +2654,78 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - - mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - - mime@4.0.6: - resolution: {integrity: sha512-4rGt7rvQHBbaSOF9POGkk1ocRP16Md1x36Xma8sz8h8/vfCUI2OtEIeCqe4Ofes853x4xDoPiFLIT47J5fI/7A==} - engines: {node: '>=16'} - hasBin: true - - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - minimatch@10.0.1: resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} engines: {node: 20 || >=22} - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - - minizlib@3.0.1: - resolution: {integrity: sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==} - engines: {node: '>= 18'} - - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - - mkdirp@3.0.1: - resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} - engines: {node: '>=10'} - hasBin: true - mlly@1.7.4: resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + nanoid@3.3.8: resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nitropack@2.10.4: - resolution: {integrity: sha512-sJiG/MIQlZCVSw2cQrFG1H6mLeSqHlYfFerRjLKz69vUfdu0EL2l0WdOxlQbzJr3mMv/l4cOlCCLzVRzjzzF/g==} - engines: {node: ^16.11.0 || >=17.0.0} + nf3@0.3.11: + resolution: {integrity: sha512-ObKp/SA3f1g1f/OMeDlRWaZmqGgk7A0NnDIbeO7c/MV4r/quMlpP/BsqMGuTi3lUlXbC1On8YH7ICM2u2bIAOw==} + + nitro@3.0.260311-beta: + resolution: {integrity: sha512-0o0fJ9LUh4WKUqJNX012jyieUOtMCnadkNDWr0mHzdraoHpJP/1CGNefjRyZyMXSpoJfwoWdNEZu2iGf35TUvQ==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: + dotenv: '*' + giget: '*' + jiti: ^2.6.1 + rollup: ^4.59.0 + vite: ^7 || ^8 || >=8.0.0-0 xml2js: ^0.6.2 + zephyr-agent: ^0.1.15 peerDependenciesMeta: + dotenv: + optional: true + giget: + optional: true + jiti: + optional: true + rollup: + optional: true + vite: + optional: true xml2js: optional: true - - node-addon-api@7.1.1: - resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - - node-fetch-native@1.6.6: - resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: + zephyr-agent: optional: true - node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} - engines: {node: '>= 6.13.0'} - - node-gyp-build@4.8.4: - resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} - hasBin: true - - node-mock-http@1.0.0: - resolution: {integrity: sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ==} - node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - nopt@8.1.0: - resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} - engines: {node: ^18.17.0 || >=20.5.0} - hasBin: true - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nypm@0.5.4: - resolution: {integrity: sha512-X0SNNrZiGU8/e/zAB7sCTtdxWTMSIO73q+xuKgglm2Yvzwlo8UoC5FNySQFCvl84uPaeADkqHUZUkWy4aH4xOA==} - engines: {node: ^14.16.0 || >=16.10.0} - hasBin: true - - ofetch@1.4.1: - resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} - - ohash@1.1.4: - resolution: {integrity: sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} + ocache@0.1.2: + resolution: {integrity: sha512-lI34wjM7cahEdrq2I5obbF7MEdE97vULf6vNj6ZCzwEadzyXO1w7QOl2qzzG4IL8cyO7wDtXPj9CqW/aG3mn7g==} - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + ofetch@2.0.0-alpha.3: + resolution: {integrity: sha512-zpYTCs2byOuft65vI3z43Dd6iSdFbOZZLb9/d21aCpx2rGastVU9dOCv0lu4ykc1Ur1anAYjDi3SUvR0vq50JA==} - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} oniguruma-parser@0.12.1: resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} @@ -3354,16 +2736,6 @@ packages: oniguruma-to-es@4.3.3: resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==} - open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - - openapi-typescript@7.6.1: - resolution: {integrity: sha512-F7RXEeo/heF3O9lOXo2bNjCOtfp7u+D6W3a3VNEH2xE6v+fxLtn5nq0uvUcA1F5aT+CMhNeC5Uqtg5tlXFX/ag==} - hasBin: true - peerDependencies: - typescript: ^5.x - package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} @@ -3379,59 +2751,32 @@ packages: parse-entities@4.0.2: resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} - parse-json@8.1.0: - resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==} - engines: {node: '>=18'} - parse-numeric-range@1.3.0: resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} parse5@7.2.1: resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} + parse5@8.0.0: + resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==} path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - path-scurry@2.0.0: resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} - path-to-regexp@6.3.0: - resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} - - path-type@6.0.0: - resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} - engines: {node: '>=18'} - - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + path-to-regexp@8.3.0: + resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - perfect-debounce@1.0.0: - resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -3443,16 +2788,16 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + pioppo@1.2.1: resolution: {integrity: sha512-1oErGVWD6wFDPmrJWEY1Cj2p829UGT6Fw9OItYFxLkWtBjCvQSMC8wA5IcAR5ms/6gqiY8pnJvIV/+/Imyobew==} pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - pluralize@8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} - engines: {node: '>=4'} - postcss-nested@6.2.0: resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} engines: {node: '>=12.0'} @@ -3470,22 +2815,15 @@ packages: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.8: + resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} + engines: {node: ^10 || ^12 || >=14} + prettier@4.0.0-alpha.10: resolution: {integrity: sha512-auyI68pnS9LmLRQCRuRBQaoqWU3Jnrifbhc+patuIGd1gzB/5h2CW1fa3Lub45R03ah+wzxbB2DNV1S1wzz9QQ==} engines: {node: '>=14'} hasBin: true - pretty-bytes@6.1.1: - resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} - engines: {node: ^14.13.1 || >=16.0.0} - - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - promise-make-counter@1.0.2: resolution: {integrity: sha512-FJAxTBWQuQoAs4ZOYuKX1FHXxEgKLEzBxUvwr4RoOglkTpOjWuM+RXsK3M9q5lMa8kjqctUrhwYeZFT4ygsnag==} @@ -3504,44 +2842,16 @@ packages: property-information@7.0.0: resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==} + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} radix3@1.1.2: resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - - rc9@2.1.2: - resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} - - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - - readable-stream@4.7.0: - resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - readdir-glob@1.1.3: - resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - readdirp@4.1.2: - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} - engines: {node: '>= 14.18.0'} - - recast@0.23.11: - resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} - engines: {node: '>= 4'} - recma-build-jsx@1.0.0: resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} @@ -3554,14 +2864,6 @@ packages: recma-stringify@1.0.0: resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} - redis-errors@1.2.0: - resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} - engines: {node: '>=4'} - - redis-parser@3.0.0: - resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} - engines: {node: '>=4'} - regex-recursion@5.1.1: resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} @@ -3580,8 +2882,8 @@ packages: rehype-autolink-headings@7.1.0: resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} - rehype-expressive-code@0.40.2: - resolution: {integrity: sha512-+kn+AMGCrGzvtH8Q5lC6Y5lnmTV/r33fdmi5QU/IH1KPHKobKr5UnLwJuqHv5jBTSN/0v2wLDS7RTM73FVzqmQ==} + rehype-expressive-code@0.41.7: + resolution: {integrity: sha512-25f8ZMSF1d9CMscX7Cft0TSQIqdwjce2gDOvQ+d/w0FovsMwrSt3ODP4P3Z7wO1jsIJ4eYyaDRnIR/27bd/EMQ==} rehype-raw@7.0.0: resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} @@ -3604,6 +2906,9 @@ packages: remark-mdx@3.1.0: resolution: {integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==} + remark-mdx@3.1.1: + resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} + remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} @@ -3613,21 +2918,10 @@ packages: remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} @@ -3640,42 +2934,22 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rimraf@5.0.10: - resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} + rolldown@1.0.0-rc.9: + resolution: {integrity: sha512-9EbgWge7ZH+yqb4d2EnELAntgPTWbfL8ajiTW+SyhJEC4qhBbkCKbqFV4Ge4zmu5ziQuVbWxb/XwLZ+RIO7E8Q==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rollup-plugin-visualizer@5.14.0: - resolution: {integrity: sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - rolldown: 1.x - rollup: 2.x || 3.x || 4.x - peerDependenciesMeta: - rolldown: - optional: true - rollup: - optional: true - - rollup@4.34.8: - resolution: {integrity: sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==} + rollup@4.59.0: + resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rollup@4.38.0: - resolution: {integrity: sha512-5SsIRtJy9bf1ErAOiFMFzl64Ex9X5V7bnJ+WlFMb+zmP459OSWCEG7b0ERZ+PEU7xPt4OG3RHbrp1LJlXxYTrw==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true + rou3@0.8.1: + resolution: {integrity: sha512-ePa+XGk00/3HuCqrEnK3LxJW7I0SdNg6EFzKUJG73hMAdDcOUC/i/aSz7LSDwLrGr33kal/rqOGydzwl6U7zBA==} run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - satori-html@0.3.2: resolution: {integrity: sha512-wjTh14iqADFKDK80e51/98MplTGfxz2RmIzh0GqShlf4a67+BooLywF17TvJPD6phO0Hxm7Mf1N5LtRYvdkYRA==} @@ -3683,6 +2957,10 @@ packages: resolution: {integrity: sha512-3C/laIeE6UUe9A+iQ0A48ywPVCCMKCNSTU5Os101Vhgsjd3AAxGNjyq0uAA8kulMPK5n0csn8JlxPN9riXEjLA==} engines: {node: '>=16'} + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + scule@1.3.0: resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} @@ -3694,38 +2972,16 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} - engines: {node: '>=10'} - hasBin: true - - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} - engines: {node: '>= 0.8.0'} - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - seroval-plugins@1.2.1: - resolution: {integrity: sha512-H5vs53+39+x4Udwp4J5rNZfgFuA+Lt+uU+09w1gYBVWomtAl98B+E9w7yC05Xc81/HgLvJdlyqJbU0fJCKCmdw==} + seroval-plugins@1.5.1: + resolution: {integrity: sha512-4FbuZ/TMl02sqv0RTFexu0SP6V+ywaIe5bAWCCEik0fk17BhALgwvUDVF7e3Uvf9pxmwCEJsRPmlkUE6HdzLAw==} engines: {node: '>=10'} peerDependencies: seroval: ^1.0 - seroval@1.2.1: - resolution: {integrity: sha512-yBxFFs3zmkvKNmR0pFSU//rIsYjuX418TnlDmc2weaq5XFDqDIV/NOMPBoLrbxjLH42p4UzRuXHryXh9dYcKcw==} + seroval@1.5.1: + resolution: {integrity: sha512-OwrZRZAfhHww0WEnKHDY8OM0U/Qs8OTfIDWhUD4BLpNJUfXK4cGmjiagGze086m+mhI+V2nD0gfbHEnJjb9STA==} engines: {node: '>=10'} - serve-placeholder@2.0.2: - resolution: {integrity: sha512-/TMG8SboeiQbZJWRlfTCqMs2DD3SZgWp0kDQePz9yUuCnDfDh/92gf7/PxGhzXTKBIPASIHxFcZndoNbp6QOLQ==} - - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} - engines: {node: '>= 0.8.0'} - - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -3740,25 +2996,15 @@ packages: shiki@3.12.2: resolution: {integrity: sha512-uIrKI+f9IPz1zDT+GMz+0RjzKJiijVr6WDWm9Pe3NNY6QigKCfifCEv9v9R2mDASKKjzjQ2QpFLcxaR3iHSnMA==} + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - - smob@1.5.0: - resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==} - - solid-js@1.9.5: - resolution: {integrity: sha512-ogI3DaFcyn6UhYhrgcyRAMbu/buBJitYQASZz5WzfQVPP10RD2AbCoRZ517psnezrasyCbWzIxZ6kVqet768xw==} - - solid-mdx@0.0.7: - resolution: {integrity: sha512-dYKGOu5ZiaX3sfEMZYtfyXm30u33kF+T/pr67CMeyHzENDkWD3st4XEJ12Akp0J0PG9jzyHe5sAAKEXSnEcDEw==} - peerDependencies: - solid-js: ^1.2.6 - vite: '*' + solid-js@1.9.11: + resolution: {integrity: sha512-WEJtcc5mkh/BnHA6Yrg4whlF8g6QwpmXXRg4P2ztPmcKeHHlH4+djYecBLhSpecZY2RRECXYUwIc/C2r3yzQ4Q==} solid-presence@0.1.8: resolution: {integrity: sha512-pWGtXUFWYYUZNbg5YpG5vkQJyOtzn2KXhxYaMx/4I+lylTLYkITOLevaCwMRN+liCVk0pqB6EayLWojNqBFECA==} @@ -3785,13 +3031,6 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - source-map@0.7.6: resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} engines: {node: '>= 12'} @@ -3805,25 +3044,23 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + srvx@0.11.12: + resolution: {integrity: sha512-AQfrGqntqVPXgP03pvBDN1KyevHC+KmYVqb8vVf4N+aomQqdhaZxjvoVp+AOm4u6x+GgNQY3MVzAUIn+TqwkOA==} + engines: {node: '>=20.16.0'} + hasBin: true - standard-as-callback@2.1.0: - resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - std-env@3.8.0: - resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + std-env@4.0.0: + resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==} stdin-blocker@2.0.1: resolution: {integrity: sha512-NEcAEpag+gE/Iivx1prq1AFPwnmgmcyHNvGZLUqGBoOE/7DZtmhtP9iYqJt8ymueFL+kknhfEebAMWbrWp3FJw==} - streamx@2.22.0: - resolution: {integrity: sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==} - string-escape-regex@1.0.1: resolution: {integrity: sha512-cdSXOHSJ32K/T2dbj9t7rJwonujaOkaINpa1zsXT+PNFIv1zuPjtr0tXanCvUhN2bIu2IB0z/C7ksl+Qsy44nA==} @@ -3838,12 +3075,6 @@ packages: string.prototype.codepointat@0.2.1: resolution: {integrity: sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==} - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} @@ -3859,13 +3090,6 @@ packages: resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} engines: {node: '>=0.10.0'} - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - - strip-literal@2.1.1: - resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==} - strip-literal@3.0.0: resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} @@ -3875,43 +3099,19 @@ packages: style-to-object@1.0.8: resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} - supports-color@9.4.0: - resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} - engines: {node: '>=12'} - supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - system-architecture@0.1.0: - resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} - engines: {node: '>=18'} - - tar-stream@3.1.7: - resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - - tar@7.4.3: - resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} - engines: {node: '>=18'} + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - terracotta@1.0.6: - resolution: {integrity: sha512-yVrmT/Lg6a3tEbeYEJH8ksb1PYkR5FA9k5gr1TchaSNIiA2ZWs5a+koEbePXwlBP0poaV7xViZ/v50bQFcMgqw==} + terracotta@1.1.0: + resolution: {integrity: sha512-kfQciWUBUBgYkXu7gh3CK3FAJng/iqZslAaY08C+k1Hdx17aVEpcFFb/WPaysxAfcupNH3y53s/pc53xxZauww==} engines: {node: '>=10'} peerDependencies: solid-js: ^1.8 - terser@5.39.0: - resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} - engines: {node: '>=10'} - hasBin: true - - text-decoder@1.2.3: - resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} - tiny-bin@1.11.0: resolution: {integrity: sha512-lZO8on7lID5/N9n+Geg3N6xlBYWRiSvYXACDMdfm/TD0tH9SyWYFJtm+u/MEvYCUyuzaanuTLZVHKc+PV/aQgg==} @@ -3954,26 +3154,45 @@ packages: tiny-updater@3.5.3: resolution: {integrity: sha512-wEUssfOOkVLg2raSaRbyZDHpVCDj6fnp7UjynpNE4XGuF+Gkj8GRRMoHdfk73VzLQs/AHKsbY8fCxXNz8Hx4Qg==} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyglobby@0.2.12: - resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} + tinyexec@1.0.4: + resolution: {integrity: sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==} + engines: {node: '>=18'} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + engines: {node: '>=14.0.0'} + + tldts-core@7.0.26: + resolution: {integrity: sha512-5WJ2SqFsv4G2Dwi7ZFVRnz6b2H1od39QME1lc2y5Ew3eWiZMAeqOAfWpRP9jHvhUl881406QtZTODvjttJs+ew==} + + tldts@7.0.26: + resolution: {integrity: sha512-WiGwQjr0qYdNNG8KpMKlSvpxz652lqa3Rd+/hSaDcY4Uo6SKWZq2LAF+hsAhUewTtYhXlorBKgNF3Kk8hnjGoQ==} + hasBin: true + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - toml@3.0.0: resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tough-cookie@6.0.1: + resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} + engines: {node: '>=16'} + + tr46@6.0.0: + resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} + engines: {node: '>=20'} trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -3997,14 +3216,6 @@ packages: peerDependencies: typescript: '*' - type-fest@2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} - - type-fest@4.35.0: - resolution: {integrity: sha512-2/AwEFQDFEy30iOLjrvHDIH7e4HEWH+f1Yl1bI5XMqzuoCUqwYCdxachgsgv0og/JdVZUhbfjcJAoHj5L1753A==} - engines: {node: '>=16'} - typescript@5.7.3: resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} engines: {node: '>=14.17'} @@ -4016,34 +3227,22 @@ packages: ultrahtml@1.6.0: resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==} - uncrypto@0.1.3: - resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - - unctx@2.4.1: - resolution: {integrity: sha512-AbaYw0Nm4mK4qjhns67C+kgxR2YWiwlDBPzxrN8h8C6VtAdCgditAY5Dezu3IJy4XVqAnbrXt9oQJvsn3fyozg==} - - undici-types@5.28.4: - resolution: {integrity: sha512-3OeMF5Lyowe8VW0skf5qaIE7Or3yS9LS7fvMUI0gg4YxpIBVg0L8BxCmROw2CcYhSkpR68Epz7CGc8MPj94Uww==} - undici-types@6.20.0: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} - unenv@1.10.0: - resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} + undici@7.24.4: + resolution: {integrity: sha512-BM/JzwwaRXxrLdElV2Uo6cTLEjhSb3WXboncJamZ15NgUURmvlXvxa6xkwIOILIjPNo9i8ku136ZvWV0Uly8+w==} + engines: {node: '>=20.18.1'} + + unenv@2.0.0-rc.24: + resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} unicode-trie@2.0.0: resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} - unicorn-magic@0.3.0: - resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} - engines: {node: '>=18'} - unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - unimport@3.14.6: - resolution: {integrity: sha512-CYvbDaTT04Rh8bmD8jz3WPmHYZRG/NnvYVzwD6V1YAlvvKROlAeNDUBhkBGzNav2RKaeuXvlWYaa1V4Lfi/O0g==} - unimport@4.1.2: resolution: {integrity: sha512-oVUL7PSlyVV3QRhsdcyYEMaDX8HJyS/CnUonEJTYA3//bWO+o/4gG8F7auGWWWkrrxBQBYOO8DKe+C53ktpRXw==} engines: {node: '>=18.12.0'} @@ -4082,10 +3281,6 @@ packages: universal-user-agent@7.0.2: resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==} - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - unplugin-auto-import@19.1.0: resolution: {integrity: sha512-B+TGBEBHqY9aR+7YfShfLujETOHstzpV+yaqgy5PkfV0QG7Py+TYMX7vJ9W4SrysHR+UzR+gzcx/nuZjmPeclA==} engines: {node: '>=14'} @@ -4125,10 +3320,6 @@ packages: resolution: {integrity: sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==} engines: {node: '>=18.12.0'} - unplugin@1.16.1: - resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} - engines: {node: '>=14.0.0'} - unplugin@2.2.0: resolution: {integrity: sha512-m1ekpSwuOT5hxkJeZGRxO7gXbXT3gF26NjQ7GdVHoLoF8/nopLcd/QfPigpCy7i51oFHiRJg/CyHhj4vs2+KGw==} engines: {node: '>=18.12.0'} @@ -4137,27 +3328,32 @@ packages: resolution: {integrity: sha512-RyWSb5AHmGtjjNQ6gIlA67sHOsWpsbWpwDokLwTcejVdOjEkJZh7QKu14J00gDDVSh8kGH4KYC/TNBceXFZhtw==} engines: {node: '>=18.12.0'} - unstorage@1.15.0: - resolution: {integrity: sha512-m40eHdGY/gA6xAPqo8eaxqXgBuzQTlAKfmB1iF7oCKXE1HfwHwzDJBywK+qQGn52dta+bPlZluPF7++yR3p/bg==} + unstorage@2.0.0-alpha.6: + resolution: {integrity: sha512-w5vLYCJtnSx3OBtDk7cG4c1p3dfAnHA4WSZq9Xsurjbl2wMj7zqfOIjaHQI1Bl7yKzUxXAi+kbMr8iO2RhJmBA==} peerDependencies: - '@azure/app-configuration': ^1.8.0 - '@azure/cosmos': ^4.2.0 - '@azure/data-tables': ^13.3.0 - '@azure/identity': ^4.6.0 - '@azure/keyvault-secrets': ^4.9.0 - '@azure/storage-blob': ^12.26.0 - '@capacitor/preferences': ^6.0.3 - '@deno/kv': '>=0.9.0' - '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 + '@azure/app-configuration': ^1.11.0 + '@azure/cosmos': ^4.9.1 + '@azure/data-tables': ^13.3.2 + '@azure/identity': ^4.13.0 + '@azure/keyvault-secrets': ^4.10.0 + '@azure/storage-blob': ^12.31.0 + '@capacitor/preferences': ^6 || ^7 || ^8 + '@deno/kv': '>=0.13.0' + '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0 '@planetscale/database': ^1.19.0 - '@upstash/redis': ^1.34.3 - '@vercel/blob': '>=0.27.1' + '@upstash/redis': ^1.36.2 + '@vercel/blob': '>=0.27.3' + '@vercel/functions': ^2.2.12 || ^3.0.0 '@vercel/kv': ^1.0.1 aws4fetch: ^1.0.20 - db0: '>=0.2.1' - idb-keyval: ^6.2.1 - ioredis: ^5.4.2 - uploadthing: ^7.4.4 + chokidar: ^4 || ^5 + db0: '>=0.3.4' + idb-keyval: ^6.2.2 + ioredis: ^5.9.3 + lru-cache: ^11.2.6 + mongodb: ^6 || ^7 + ofetch: '*' + uploadthing: ^7.7.4 peerDependenciesMeta: '@azure/app-configuration': optional: true @@ -4183,51 +3379,35 @@ packages: optional: true '@vercel/blob': optional: true + '@vercel/functions': + optional: true '@vercel/kv': optional: true aws4fetch: optional: true + chokidar: + optional: true db0: optional: true idb-keyval: optional: true ioredis: optional: true + lru-cache: + optional: true + mongodb: + optional: true + ofetch: + optional: true uploadthing: optional: true - untun@0.1.3: - resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} - hasBin: true - - untyped@1.5.2: - resolution: {integrity: sha512-eL/8PlhLcMmlMDtNPKhyyz9kEBDS3Uk4yMu/ewlkT2WFbtzScjHWPJLdQLmaGPUKjXzwe9MumOtOgc4Fro96Kg==} - hasBin: true - - unwasm@0.3.9: - resolution: {integrity: sha512-LDxTx/2DkFURUd+BU1vUsF/moj0JsoTvl+2tcg2AUOiEzVturhGGx17/IMgGvKUYdZwr33EJHtChCJuhu9Ouvg==} - - update-browserslist-db@1.1.2: - resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - update-browserslist-db@1.1.3: resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' - uqr@0.1.2: - resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} - - uri-js-replace@1.0.1: - resolution: {integrity: sha512-W+C9NWNLFOoBI2QWDp4UT9pv65r2w5Cx+3sTYFvtMdDBxkKt1syCqsUdSFAChbEe1uK5TfS04wt/nGwmaeIQ0g==} - - urlpattern-polyfill@8.0.2: - resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} - util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -4243,48 +3423,47 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vinxi@0.5.3: - resolution: {integrity: sha512-4sL2SMrRzdzClapP44oXdGjCE1oq7/DagsbjY5A09EibmoIO4LP8ScRVdh03lfXxKRk7nCWK7n7dqKvm+fp/9w==} - hasBin: true - vite-plugin-arraybuffer@0.0.8: resolution: {integrity: sha512-F+InDQuxd93YDVRdXTjBr3lydgjyVHSpgRZS4izK/i85Anl5kmbvf2NwJ//XHAccHh1TScfX70MFJfBx/rf3cg==} - vite-plugin-solid@2.11.6: - resolution: {integrity: sha512-Sl5CTqJTGyEeOsmdH6BOgalIZlwH3t4/y0RQuFLMGnvWMBvxb4+lq7x3BSiAw6etf0QexfNJW7HSOO/Qf7pigg==} + vite-plugin-solid@2.11.11: + resolution: {integrity: sha512-YMZCXsLw9kyuvQFEdwLP27fuTQJLmjNoHy90AOJnbRuJ6DwShUxKFo38gdFrWn9v11hnGicKCZEaeI/TFs6JKw==} peerDependencies: '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.* solid-js: ^1.7.2 - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@testing-library/jest-dom': optional: true - vite@6.1.1: - resolution: {integrity: sha512-4GgM54XrwRfrOp297aIYspIti66k56v16ZnqHvrIM7mG+HjDlAwS7p+Srr7J6fGvEdOJ5JcQ/D9T7HhtdXDTzA==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vite@8.0.0: + resolution: {integrity: sha512-fPGaRNj9Zytaf8LEiBhY7Z6ijnFKdzU/+mL8EFBaKr7Vw1/FWcTBAMW0wLPJAGMPX38ZPVCVgLceWiEqeoqL2Q==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.0.0-alpha.31 + esbuild: ^0.27.0 jiti: '>=1.21.0' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 yaml: ^2.4.2 peerDependenciesMeta: '@types/node': optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true jiti: optional: true less: optional: true - lightningcss: - optional: true sass: optional: true sass-embedded: @@ -4300,59 +3479,59 @@ packages: yaml: optional: true - vite@6.1.2: - resolution: {integrity: sha512-EiXfDyO/uNKhYOSlZ6+9qBz4H46A8Lr07pyjmb88KTbJ+xkXvnqtxvgtg2VxPU6Kfj8Ep0un9JLqdrCWLqIanw==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true + vitefu@1.0.6: + resolution: {integrity: sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA==} peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: '>=1.21.0' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 peerDependenciesMeta: - '@types/node': - optional: true - jiti: + vite: optional: true - less: + + vitest@4.1.0: + resolution: {integrity: sha512-YbDrMF9jM2Lqc++2530UourxZHmkKLxrs4+mYhEwqWS97WJ7wOYEkcr+QfRgJ3PW9wz3odRijLZjHEaRLTNbqw==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.0 + '@vitest/browser-preview': 4.1.0 + '@vitest/browser-webdriverio': 4.1.0 + '@vitest/ui': 4.1.0 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0 + peerDependenciesMeta: + '@edge-runtime/vm': optional: true - lightningcss: + '@opentelemetry/api': optional: true - sass: + '@types/node': optional: true - sass-embedded: + '@vitest/browser-playwright': optional: true - stylus: + '@vitest/browser-preview': optional: true - sugarss: + '@vitest/browser-webdriverio': optional: true - terser: + '@vitest/ui': optional: true - tsx: + happy-dom: optional: true - yaml: + jsdom: optional: true - vitefu@1.0.6: - resolution: {integrity: sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA==} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 - peerDependenciesMeta: - vite: - optional: true + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webidl-conversions@8.0.1: + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} + engines: {node: '>=20'} webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} @@ -4360,8 +3539,13 @@ packages: webworker-shim@1.1.1: resolution: {integrity: sha512-XCWuBjJH3Xn/7SbyUF1WrrCbe6ZEsgaD7kxlFhxIwdkljGYX3BqP/dhG6ge0NBT+V7ZPjR4/BXq5BvbdaxrpKg==} - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + whatwg-mimetype@5.0.0: + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} + engines: {node: '>=20'} + + whatwg-url@16.0.1: + resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} when-exit@2.1.4: resolution: {integrity: sha512-4rnvd3A1t16PWzrBUcSDZqcAmsUIy4minDXT/CZ8F2mVDgd65i4Aalimgz1aQkRGU0iH5eT5+6Rx2TK8o443Pg==} @@ -4371,15 +3555,11 @@ packages: engines: {node: '>= 8'} hasBin: true - which@4.0.0: - resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} - engines: {node: ^16.13.0 || >=18.0.0} + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} hasBin: true - widest-line@4.0.1: - resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} - engines: {node: '>=12'} - worktank@2.7.3: resolution: {integrity: sha512-M0fesnpttBPdvNYBdzRvLDsacN0na9RYWFxwmM/x1+/6mufjduv9/9vBObK8EXDqxRMX/SOYJabpo0UCYYBUdQ==} @@ -4391,39 +3571,21 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yallist@5.0.0: - resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} - engines: {node: '>=18'} - - yaml-ast-parser@0.0.43: - resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==} - yaml@2.8.0: resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} engines: {node: '>= 14.6'} hasBin: true - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - yoga-wasm-web@0.3.3: resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==} @@ -4445,13 +3607,6 @@ packages: zeptomatch@2.0.0: resolution: {integrity: sha512-xjsIq0tpg7dNtJcbl0tNf4d4It4UK1ujSYJZXvGygse3GNgX44v/b2FRbM8sCGZS2qh4o983u8+1CBNNF+106g==} - zip-stream@6.0.1: - resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} - engines: {node: '>= 14'} - - zod@3.24.2: - resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} - zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -4471,11 +3626,23 @@ snapshots: '@antfu/utils@8.1.1': {} - '@babel/code-frame@7.26.2': + '@asamuzakjp/css-color@5.0.1': dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 + '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.0.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + lru-cache: 11.2.7 + + '@asamuzakjp/dom-selector@7.0.3': + dependencies: + '@asamuzakjp/nwsapi': 2.3.9 + bidi-js: 1.0.3 + css-tree: 3.2.1 + is-potential-custom-element-name: 1.0.1 + lru-cache: 11.2.7 + + '@asamuzakjp/nwsapi@2.3.9': {} '@babel/code-frame@7.27.1': dependencies: @@ -4483,10 +3650,16 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.26.8': {} + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 '@babel/compat-data@7.27.3': {} + '@babel/compat-data@7.29.0': {} + '@babel/core@7.25.2': dependencies: '@ampproject/remapping': 2.3.0 @@ -4500,112 +3673,52 @@ snapshots: '@babel/traverse': 7.27.3 '@babel/types': 7.27.3 convert-source-map: 2.0.0 - debug: 4.4.1(supports-color@9.4.0) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/core@7.26.10': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helpers': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - convert-source-map: 2.0.0 - debug: 4.4.0 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/core@7.26.9': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.9 - '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.9) - '@babel/helpers': 7.26.9 - '@babel/parser': 7.26.9 - '@babel/template': 7.26.9 - '@babel/traverse': 7.26.9 - '@babel/types': 7.26.9 - convert-source-map: 2.0.0 - debug: 4.4.0 + debug: 4.4.1 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/core@7.27.3': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.3 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.3) - '@babel/helpers': 7.27.3 - '@babel/parser': 7.27.3 - '@babel/template': 7.27.2 - '@babel/traverse': 7.27.3 - '@babel/types': 7.27.3 + '@babel/core@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.29.2 + '@babel/parser': 7.29.2 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.1(supports-color@9.4.0) + debug: 4.4.1 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/generator@7.26.9': - dependencies: - '@babel/parser': 7.26.9 - '@babel/types': 7.26.9 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 - - '@babel/generator@7.27.0': - dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 - '@babel/generator@7.27.3': dependencies: '@babel/parser': 7.27.3 - '@babel/types': 7.27.3 + '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 - '@babel/helper-compilation-targets@7.26.5': + '@babel/generator@7.29.1': dependencies: - '@babel/compat-data': 7.26.8 - '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.4 - lru-cache: 5.1.1 - semver: 6.3.1 + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 - '@babel/helper-compilation-targets@7.27.0': + '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/compat-data': 7.26.8 - '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.4 - lru-cache: 5.1.1 - semver: 6.3.1 + '@babel/types': 7.29.0 '@babel/helper-compilation-targets@7.27.2': dependencies: @@ -4615,39 +3728,51 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-module-imports@7.18.6': + '@babel/helper-compilation-targets@7.28.6': dependencies: - '@babel/types': 7.27.3 + '@babel/compat-data': 7.29.0 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.25.0 + lru-cache: 5.1.1 + semver: 6.3.1 - '@babel/helper-module-imports@7.25.9': + '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/traverse': 7.26.9 - '@babel/types': 7.26.9 + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.29.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.27.1': + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-member-expression-to-functions@7.28.5': dependencies: - '@babel/traverse': 7.27.3 - '@babel/types': 7.27.3 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)': + '@babel/helper-module-imports@7.18.6': + dependencies: + '@babel/types': 7.29.0 + + '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.9 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.9)': + '@babel/helper-module-imports@7.28.6': dependencies: - '@babel/core': 7.26.9 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.9 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -4656,133 +3781,125 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.3 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.3)': + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.27.3 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.3 + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color + '@babel/helper-optimise-call-expression@7.27.1': + dependencies: + '@babel/types': 7.29.0 + '@babel/helper-plugin-utils@7.26.5': {} - '@babel/helper-string-parser@7.25.9': {} + '@babel/helper-plugin-utils@7.28.6': {} - '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color - '@babel/helper-validator-identifier@7.25.9': {} + '@babel/helper-string-parser@7.27.1': {} '@babel/helper-validator-identifier@7.27.1': {} - '@babel/helper-validator-option@7.25.9': {} + '@babel/helper-validator-identifier@7.28.5': {} '@babel/helper-validator-option@7.27.1': {} - '@babel/helpers@7.26.9': - dependencies: - '@babel/template': 7.26.9 - '@babel/types': 7.26.9 - - '@babel/helpers@7.27.0': - dependencies: - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 - '@babel/helpers@7.27.3': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.27.3 - - '@babel/parser@7.26.9': - dependencies: - '@babel/types': 7.26.9 + '@babel/types': 7.29.0 - '@babel/parser@7.27.0': + '@babel/helpers@7.29.2': dependencies: - '@babel/types': 7.27.0 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 '@babel/parser@7.27.3': dependencies: - '@babel/types': 7.27.3 - - '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/types': 7.29.0 - '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.9)': + '@babel/parser@7.29.2': dependencies: - '@babel/core': 7.26.9 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/types': 7.29.0 - '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.27.3)': + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.27.3 + '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.9)': + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.26.9 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.27.3)': + '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.27.3 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/standalone@7.26.9': {} + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color - '@babel/template@7.26.9': + '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.9 - '@babel/types': 7.26.9 + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color - '@babel/template@7.27.0': + '@babel/preset-typescript@7.28.5(@babel/core@7.29.0)': dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 '@babel/parser': 7.27.3 - '@babel/types': 7.27.3 - - '@babel/traverse@7.26.9': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.9 - '@babel/parser': 7.26.9 - '@babel/template': 7.26.9 - '@babel/types': 7.26.9 - debug: 4.4.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@babel/types': 7.29.0 - '@babel/traverse@7.27.0': + '@babel/template@7.28.6': dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 - debug: 4.4.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 '@babel/traverse@7.27.3': dependencies: @@ -4790,316 +3907,280 @@ snapshots: '@babel/generator': 7.27.3 '@babel/parser': 7.27.3 '@babel/template': 7.27.2 - '@babel/types': 7.27.3 - debug: 4.4.1(supports-color@9.4.0) + '@babel/types': 7.29.0 + debug: 4.4.1 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.26.9': + '@babel/traverse@7.29.0': dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - - '@babel/types@7.27.0': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.29.2 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color '@babel/types@7.27.3': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@biomejs/biome@1.9.4': + '@babel/types@7.29.0': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@biomejs/biome@2.4.7': optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.9.4 - '@biomejs/cli-darwin-x64': 1.9.4 - '@biomejs/cli-linux-arm64': 1.9.4 - '@biomejs/cli-linux-arm64-musl': 1.9.4 - '@biomejs/cli-linux-x64': 1.9.4 - '@biomejs/cli-linux-x64-musl': 1.9.4 - '@biomejs/cli-win32-arm64': 1.9.4 - '@biomejs/cli-win32-x64': 1.9.4 - - '@biomejs/cli-darwin-arm64@1.9.4': + '@biomejs/cli-darwin-arm64': 2.4.7 + '@biomejs/cli-darwin-x64': 2.4.7 + '@biomejs/cli-linux-arm64': 2.4.7 + '@biomejs/cli-linux-arm64-musl': 2.4.7 + '@biomejs/cli-linux-x64': 2.4.7 + '@biomejs/cli-linux-x64-musl': 2.4.7 + '@biomejs/cli-win32-arm64': 2.4.7 + '@biomejs/cli-win32-x64': 2.4.7 + + '@biomejs/cli-darwin-arm64@2.4.7': optional: true - '@biomejs/cli-darwin-x64@1.9.4': + '@biomejs/cli-darwin-x64@2.4.7': optional: true - '@biomejs/cli-linux-arm64-musl@1.9.4': + '@biomejs/cli-linux-arm64-musl@2.4.7': optional: true - '@biomejs/cli-linux-arm64@1.9.4': + '@biomejs/cli-linux-arm64@2.4.7': optional: true - '@biomejs/cli-linux-x64-musl@1.9.4': + '@biomejs/cli-linux-x64-musl@2.4.7': optional: true - '@biomejs/cli-linux-x64@1.9.4': + '@biomejs/cli-linux-x64@2.4.7': optional: true - '@biomejs/cli-win32-arm64@1.9.4': + '@biomejs/cli-win32-arm64@2.4.7': optional: true - '@biomejs/cli-win32-x64@1.9.4': + '@biomejs/cli-win32-x64@2.4.7': optional: true '@bprogress/core@1.1.18': {} - '@cloudflare/kv-asset-handler@0.3.4': + '@bramus/specificity@2.4.2': dependencies: - mime: 3.0.0 + css-tree: 3.2.1 - '@corvu/utils@0.4.2(solid-js@1.9.5)': + '@corvu/utils@0.4.2(solid-js@1.9.11)': dependencies: '@floating-ui/dom': 1.6.13 - solid-js: 1.9.5 + solid-js: 1.9.11 - '@ctrl/tinycolor@4.1.0': {} + '@csstools/color-helpers@6.0.2': {} + + '@csstools/css-calc@3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 - '@deno/shim-deno-test@0.5.0': {} + '@csstools/css-color-parser@4.0.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/color-helpers': 6.0.2 + '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 - '@deno/shim-deno@0.19.2': + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': dependencies: - '@deno/shim-deno-test': 0.5.0 - which: 4.0.0 + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.1(css-tree@3.2.1)': + optionalDependencies: + css-tree: 3.2.1 + + '@csstools/css-tokenizer@4.0.0': {} + + '@ctrl/tinycolor@4.1.0': {} '@docsearch/css@3.9.0': {} - '@esbuild/aix-ppc64@0.20.2': + '@emnapi/core@1.9.0': + dependencies: + '@emnapi/wasi-threads': 1.2.0 + tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.24.2': + '@emnapi/runtime@1.9.0': + dependencies: + tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.25.2': + '@emnapi/wasi-threads@1.2.0': + dependencies: + tslib: 2.8.1 optional: true - '@esbuild/android-arm64@0.20.2': + '@esbuild/aix-ppc64@0.25.2': optional: true - '@esbuild/android-arm64@0.24.2': + '@esbuild/aix-ppc64@0.27.4': optional: true '@esbuild/android-arm64@0.25.2': optional: true - '@esbuild/android-arm@0.20.2': - optional: true - - '@esbuild/android-arm@0.24.2': + '@esbuild/android-arm64@0.27.4': optional: true '@esbuild/android-arm@0.25.2': optional: true - '@esbuild/android-x64@0.20.2': - optional: true - - '@esbuild/android-x64@0.24.2': + '@esbuild/android-arm@0.27.4': optional: true '@esbuild/android-x64@0.25.2': optional: true - '@esbuild/darwin-arm64@0.20.2': - optional: true - - '@esbuild/darwin-arm64@0.24.2': + '@esbuild/android-x64@0.27.4': optional: true '@esbuild/darwin-arm64@0.25.2': optional: true - '@esbuild/darwin-x64@0.20.2': - optional: true - - '@esbuild/darwin-x64@0.24.2': + '@esbuild/darwin-arm64@0.27.4': optional: true '@esbuild/darwin-x64@0.25.2': optional: true - '@esbuild/freebsd-arm64@0.20.2': - optional: true - - '@esbuild/freebsd-arm64@0.24.2': + '@esbuild/darwin-x64@0.27.4': optional: true '@esbuild/freebsd-arm64@0.25.2': optional: true - '@esbuild/freebsd-x64@0.20.2': - optional: true - - '@esbuild/freebsd-x64@0.24.2': + '@esbuild/freebsd-arm64@0.27.4': optional: true '@esbuild/freebsd-x64@0.25.2': optional: true - '@esbuild/linux-arm64@0.20.2': - optional: true - - '@esbuild/linux-arm64@0.24.2': + '@esbuild/freebsd-x64@0.27.4': optional: true '@esbuild/linux-arm64@0.25.2': optional: true - '@esbuild/linux-arm@0.20.2': - optional: true - - '@esbuild/linux-arm@0.24.2': + '@esbuild/linux-arm64@0.27.4': optional: true '@esbuild/linux-arm@0.25.2': optional: true - '@esbuild/linux-ia32@0.20.2': - optional: true - - '@esbuild/linux-ia32@0.24.2': + '@esbuild/linux-arm@0.27.4': optional: true '@esbuild/linux-ia32@0.25.2': optional: true - '@esbuild/linux-loong64@0.20.2': - optional: true - - '@esbuild/linux-loong64@0.24.2': + '@esbuild/linux-ia32@0.27.4': optional: true '@esbuild/linux-loong64@0.25.2': optional: true - '@esbuild/linux-mips64el@0.20.2': - optional: true - - '@esbuild/linux-mips64el@0.24.2': + '@esbuild/linux-loong64@0.27.4': optional: true '@esbuild/linux-mips64el@0.25.2': optional: true - '@esbuild/linux-ppc64@0.20.2': - optional: true - - '@esbuild/linux-ppc64@0.24.2': + '@esbuild/linux-mips64el@0.27.4': optional: true '@esbuild/linux-ppc64@0.25.2': optional: true - '@esbuild/linux-riscv64@0.20.2': - optional: true - - '@esbuild/linux-riscv64@0.24.2': + '@esbuild/linux-ppc64@0.27.4': optional: true '@esbuild/linux-riscv64@0.25.2': optional: true - '@esbuild/linux-s390x@0.20.2': - optional: true - - '@esbuild/linux-s390x@0.24.2': + '@esbuild/linux-riscv64@0.27.4': optional: true '@esbuild/linux-s390x@0.25.2': optional: true - '@esbuild/linux-x64@0.20.2': - optional: true - - '@esbuild/linux-x64@0.24.2': + '@esbuild/linux-s390x@0.27.4': optional: true '@esbuild/linux-x64@0.25.2': optional: true - '@esbuild/netbsd-arm64@0.24.2': + '@esbuild/linux-x64@0.27.4': optional: true '@esbuild/netbsd-arm64@0.25.2': optional: true - '@esbuild/netbsd-x64@0.20.2': - optional: true - - '@esbuild/netbsd-x64@0.24.2': + '@esbuild/netbsd-arm64@0.27.4': optional: true '@esbuild/netbsd-x64@0.25.2': optional: true - '@esbuild/openbsd-arm64@0.24.2': + '@esbuild/netbsd-x64@0.27.4': optional: true '@esbuild/openbsd-arm64@0.25.2': optional: true - '@esbuild/openbsd-x64@0.20.2': - optional: true - - '@esbuild/openbsd-x64@0.24.2': + '@esbuild/openbsd-arm64@0.27.4': optional: true '@esbuild/openbsd-x64@0.25.2': optional: true - '@esbuild/sunos-x64@0.20.2': + '@esbuild/openbsd-x64@0.27.4': optional: true - '@esbuild/sunos-x64@0.24.2': + '@esbuild/openharmony-arm64@0.27.4': optional: true '@esbuild/sunos-x64@0.25.2': optional: true - '@esbuild/win32-arm64@0.20.2': - optional: true - - '@esbuild/win32-arm64@0.24.2': + '@esbuild/sunos-x64@0.27.4': optional: true '@esbuild/win32-arm64@0.25.2': optional: true - '@esbuild/win32-ia32@0.20.2': - optional: true - - '@esbuild/win32-ia32@0.24.2': + '@esbuild/win32-arm64@0.27.4': optional: true '@esbuild/win32-ia32@0.25.2': optional: true - '@esbuild/win32-x64@0.20.2': + '@esbuild/win32-ia32@0.27.4': optional: true - '@esbuild/win32-x64@0.24.2': + '@esbuild/win32-x64@0.25.2': optional: true - '@esbuild/win32-x64@0.25.2': + '@esbuild/win32-x64@0.27.4': optional: true - '@expressive-code/core@0.40.2': - dependencies: - '@ctrl/tinycolor': 4.1.0 - hast-util-select: 6.0.4 - hast-util-to-html: 9.0.5 - hast-util-to-text: 4.0.2 - hastscript: 9.0.1 - postcss: 8.5.3 - postcss-nested: 6.2.0(postcss@8.5.3) - unist-util-visit: 5.0.0 - unist-util-visit-parents: 6.0.1 + '@exodus/bytes@1.15.0': {} - '@expressive-code/core@0.41.3': + '@expressive-code/core@0.41.7': dependencies: '@ctrl/tinycolor': 4.1.0 hast-util-select: 6.0.4 @@ -5111,39 +4192,35 @@ snapshots: unist-util-visit: 5.0.0 unist-util-visit-parents: 6.0.1 - '@expressive-code/plugin-collapsible-sections@0.40.2': + '@expressive-code/plugin-collapsible-sections@0.41.7': dependencies: - '@expressive-code/core': 0.40.2 + '@expressive-code/core': 0.41.7 - '@expressive-code/plugin-frames@0.40.2': + '@expressive-code/plugin-frames@0.41.7': dependencies: - '@expressive-code/core': 0.40.2 + '@expressive-code/core': 0.41.7 - '@expressive-code/plugin-frames@0.41.3': + '@expressive-code/plugin-line-numbers@0.41.7': dependencies: - '@expressive-code/core': 0.41.3 - - '@expressive-code/plugin-line-numbers@0.40.2': - dependencies: - '@expressive-code/core': 0.40.2 - - '@expressive-code/plugin-shiki@0.40.2': - dependencies: - '@expressive-code/core': 0.40.2 - shiki: 1.29.2 + '@expressive-code/core': 0.41.7 '@expressive-code/plugin-shiki@0.41.3': dependencies: - '@expressive-code/core': 0.41.3 + '@expressive-code/core': 0.41.7 shiki: 3.12.2 - '@expressive-code/plugin-text-markers@0.40.2': + '@expressive-code/plugin-shiki@0.41.7': dependencies: - '@expressive-code/core': 0.40.2 + '@expressive-code/core': 0.41.7 + shiki: 3.12.2 '@expressive-code/plugin-text-markers@0.41.3': dependencies: - '@expressive-code/core': 0.41.3 + '@expressive-code/core': 0.41.7 + + '@expressive-code/plugin-text-markers@0.41.7': + dependencies: + '@expressive-code/core': 0.41.7 '@floating-ui/core@1.6.9': dependencies: @@ -5191,8 +4268,6 @@ snapshots: dependencies: '@swc/helpers': 0.5.15 - '@ioredis/commands@1.2.0': {} - '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -5202,9 +4277,10 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@isaacs/fs-minipass@4.0.1': + '@jridgewell/gen-mapping@0.3.13': dependencies: - minipass: 7.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/gen-mapping@0.3.8': dependencies: @@ -5212,15 +4288,15 @@ snapshots: '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/source-map@0.3.6': + '@jridgewell/remapping@2.3.5': dependencies: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + '@jridgewell/sourcemap-codec@1.5.0': {} '@jridgewell/sourcemap-codec@1.5.5': {} @@ -5230,41 +4306,33 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@kobalte/core@0.13.9(solid-js@1.9.5)': + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@kobalte/core@0.13.9(solid-js@1.9.11)': dependencies: '@floating-ui/dom': 1.6.13 '@internationalized/date': 3.7.0 '@internationalized/number': 3.6.0 - '@kobalte/utils': 0.9.1(solid-js@1.9.5) - '@solid-primitives/props': 3.2.0(solid-js@1.9.5) - '@solid-primitives/resize-observer': 2.1.0(solid-js@1.9.5) - solid-js: 1.9.5 - solid-presence: 0.1.8(solid-js@1.9.5) - solid-prevent-scroll: 0.1.10(solid-js@1.9.5) - - '@kobalte/utils@0.9.1(solid-js@1.9.5)': - dependencies: - '@solid-primitives/event-listener': 2.4.0(solid-js@1.9.5) - '@solid-primitives/keyed': 1.5.0(solid-js@1.9.5) - '@solid-primitives/map': 0.4.13(solid-js@1.9.5) - '@solid-primitives/media': 2.3.0(solid-js@1.9.5) - '@solid-primitives/props': 3.2.0(solid-js@1.9.5) - '@solid-primitives/refs': 1.1.0(solid-js@1.9.5) - '@solid-primitives/utils': 6.3.0(solid-js@1.9.5) - solid-js: 1.9.5 - - '@mapbox/node-pre-gyp@2.0.0': - dependencies: - consola: 3.4.0 - detect-libc: 2.0.3 - https-proxy-agent: 7.0.6(supports-color@9.4.0) - node-fetch: 2.7.0 - nopt: 8.1.0 - semver: 7.7.1 - tar: 7.4.3 - transitivePeerDependencies: - - encoding - - supports-color + '@kobalte/utils': 0.9.1(solid-js@1.9.11) + '@solid-primitives/props': 3.2.0(solid-js@1.9.11) + '@solid-primitives/resize-observer': 2.1.0(solid-js@1.9.11) + solid-js: 1.9.11 + solid-presence: 0.1.8(solid-js@1.9.11) + solid-prevent-scroll: 0.1.10(solid-js@1.9.11) + + '@kobalte/utils@0.9.1(solid-js@1.9.11)': + dependencies: + '@solid-primitives/event-listener': 2.4.0(solid-js@1.9.11) + '@solid-primitives/keyed': 1.5.0(solid-js@1.9.11) + '@solid-primitives/map': 0.4.13(solid-js@1.9.11) + '@solid-primitives/media': 2.3.0(solid-js@1.9.11) + '@solid-primitives/props': 3.2.0(solid-js@1.9.11) + '@solid-primitives/refs': 1.1.0(solid-js@1.9.11) + '@solid-primitives/utils': 6.3.0(solid-js@1.9.11) + solid-js: 1.9.11 '@mdx-js/mdx@3.1.0(acorn@8.14.1)': dependencies: @@ -5296,16 +4364,12 @@ snapshots: - acorn - supports-color - '@netlify/functions@2.8.2': - dependencies: - '@netlify/serverless-functions-api': 1.26.1 - - '@netlify/node-cookies@0.1.0': {} - - '@netlify/serverless-functions-api@1.26.1': + '@napi-rs/wasm-runtime@1.1.1': dependencies: - '@netlify/node-cookies': 0.1.0 - urlpattern-polyfill: 8.0.2 + '@emnapi/core': 1.9.0 + '@emnapi/runtime': 1.9.0 + '@tybys/wasm-util': 0.10.1 + optional: true '@nodelib/fs.scandir@2.1.5': dependencies: @@ -5360,78 +4424,9 @@ snapshots: dependencies: '@octokit/openapi-types': 23.0.1 - '@parcel/watcher-android-arm64@2.5.1': - optional: true - - '@parcel/watcher-darwin-arm64@2.5.1': - optional: true - - '@parcel/watcher-darwin-x64@2.5.1': - optional: true - - '@parcel/watcher-freebsd-x64@2.5.1': - optional: true + '@oxc-project/runtime@0.115.0': {} - '@parcel/watcher-linux-arm-glibc@2.5.1': - optional: true - - '@parcel/watcher-linux-arm-musl@2.5.1': - optional: true - - '@parcel/watcher-linux-arm64-glibc@2.5.1': - optional: true - - '@parcel/watcher-linux-arm64-musl@2.5.1': - optional: true - - '@parcel/watcher-linux-x64-glibc@2.5.1': - optional: true - - '@parcel/watcher-linux-x64-musl@2.5.1': - optional: true - - '@parcel/watcher-wasm@2.3.0': - dependencies: - is-glob: 4.0.3 - micromatch: 4.0.8 - - '@parcel/watcher-wasm@2.5.1': - dependencies: - is-glob: 4.0.3 - micromatch: 4.0.8 - - '@parcel/watcher-win32-arm64@2.5.1': - optional: true - - '@parcel/watcher-win32-ia32@2.5.1': - optional: true - - '@parcel/watcher-win32-x64@2.5.1': - optional: true - - '@parcel/watcher@2.5.1': - dependencies: - detect-libc: 1.0.3 - is-glob: 4.0.3 - micromatch: 4.0.8 - node-addon-api: 7.1.1 - optionalDependencies: - '@parcel/watcher-android-arm64': 2.5.1 - '@parcel/watcher-darwin-arm64': 2.5.1 - '@parcel/watcher-darwin-x64': 2.5.1 - '@parcel/watcher-freebsd-x64': 2.5.1 - '@parcel/watcher-linux-arm-glibc': 2.5.1 - '@parcel/watcher-linux-arm-musl': 2.5.1 - '@parcel/watcher-linux-arm64-glibc': 2.5.1 - '@parcel/watcher-linux-arm64-musl': 2.5.1 - '@parcel/watcher-linux-x64-glibc': 2.5.1 - '@parcel/watcher-linux-x64-musl': 2.5.1 - '@parcel/watcher-win32-arm64': 2.5.1 - '@parcel/watcher-win32-ia32': 2.5.1 - '@parcel/watcher-win32-x64': 2.5.1 - - '@pkgjs/parseargs@0.11.0': - optional: true + '@oxc-project/types@0.115.0': {} '@prettier/cli@0.6.0(prettier@4.0.0-alpha.10)': dependencies: @@ -5460,217 +4455,138 @@ snapshots: zeptomatch-escape: 1.0.0 zeptomatch-is-static: 1.0.0 - '@redocly/ajv@8.11.2': - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js-replace: 1.0.1 - - '@redocly/config@0.20.3': {} - - '@redocly/openapi-core@1.30.0(supports-color@9.4.0)': - dependencies: - '@redocly/ajv': 8.11.2 - '@redocly/config': 0.20.3 - colorette: 1.4.0 - https-proxy-agent: 7.0.6(supports-color@9.4.0) - js-levenshtein: 1.1.6 - js-yaml: 4.1.0 - minimatch: 5.1.6 - pluralize: 8.0.0 - yaml-ast-parser: 0.0.43 - transitivePeerDependencies: - - supports-color - '@resvg/resvg-wasm@2.4.0': {} - '@rollup/plugin-alias@5.1.1(rollup@4.34.8)': - optionalDependencies: - rollup: 4.34.8 - - '@rollup/plugin-commonjs@28.0.2(rollup@4.34.8)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.34.8) - commondir: 1.0.1 - estree-walker: 2.0.2 - fdir: 6.4.3(picomatch@4.0.2) - is-reference: 1.2.1 - magic-string: 0.30.19 - picomatch: 4.0.2 - optionalDependencies: - rollup: 4.34.8 - - '@rollup/plugin-inject@5.0.5(rollup@4.34.8)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.34.8) - estree-walker: 2.0.2 - magic-string: 0.30.19 - optionalDependencies: - rollup: 4.34.8 - - '@rollup/plugin-json@6.1.0(rollup@4.34.8)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.34.8) - optionalDependencies: - rollup: 4.34.8 - - '@rollup/plugin-node-resolve@15.3.1(rollup@4.34.8)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.34.8) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.10 - optionalDependencies: - rollup: 4.34.8 - - '@rollup/plugin-replace@6.0.2(rollup@4.34.8)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.34.8) - magic-string: 0.30.19 - optionalDependencies: - rollup: 4.34.8 - - '@rollup/plugin-terser@0.4.4(rollup@4.34.8)': - dependencies: - serialize-javascript: 6.0.2 - smob: 1.5.0 - terser: 5.39.0 - optionalDependencies: - rollup: 4.34.8 - - '@rollup/pluginutils@5.1.4(rollup@4.34.8)': - dependencies: - '@types/estree': 1.0.7 - estree-walker: 2.0.2 - picomatch: 4.0.2 - optionalDependencies: - rollup: 4.34.8 - - '@rollup/pluginutils@5.1.4(rollup@4.38.0)': - dependencies: - '@types/estree': 1.0.7 - estree-walker: 2.0.2 - picomatch: 4.0.2 - optionalDependencies: - rollup: 4.38.0 + '@rolldown/binding-android-arm64@1.0.0-rc.9': + optional: true - '@rollup/rollup-android-arm-eabi@4.34.8': + '@rolldown/binding-darwin-arm64@1.0.0-rc.9': optional: true - '@rollup/rollup-android-arm-eabi@4.38.0': + '@rolldown/binding-darwin-x64@1.0.0-rc.9': optional: true - '@rollup/rollup-android-arm64@4.34.8': + '@rolldown/binding-freebsd-x64@1.0.0-rc.9': optional: true - '@rollup/rollup-android-arm64@4.38.0': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9': optional: true - '@rollup/rollup-darwin-arm64@4.34.8': + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9': optional: true - '@rollup/rollup-darwin-arm64@4.38.0': + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.9': optional: true - '@rollup/rollup-darwin-x64@4.34.8': + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.9': optional: true - '@rollup/rollup-darwin-x64@4.38.0': + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.9': optional: true - '@rollup/rollup-freebsd-arm64@4.34.8': + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.9': optional: true - '@rollup/rollup-freebsd-arm64@4.38.0': + '@rolldown/binding-linux-x64-musl@1.0.0-rc.9': optional: true - '@rollup/rollup-freebsd-x64@4.34.8': + '@rolldown/binding-openharmony-arm64@1.0.0-rc.9': optional: true - '@rollup/rollup-freebsd-x64@4.38.0': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.9': + dependencies: + '@napi-rs/wasm-runtime': 1.1.1 optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.34.8': + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.38.0': + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.9': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.34.8': + '@rolldown/pluginutils@1.0.0-rc.9': {} + + '@rollup/pluginutils@5.1.4(rollup@4.59.0)': + dependencies: + '@types/estree': 1.0.7 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.59.0 + + '@rollup/rollup-android-arm-eabi@4.59.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.38.0': + '@rollup/rollup-android-arm64@4.59.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.34.8': + '@rollup/rollup-darwin-arm64@4.59.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.38.0': + '@rollup/rollup-darwin-x64@4.59.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.34.8': + '@rollup/rollup-freebsd-arm64@4.59.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.38.0': + '@rollup/rollup-freebsd-x64@4.59.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.34.8': + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.38.0': + '@rollup/rollup-linux-arm-musleabihf@4.59.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': + '@rollup/rollup-linux-arm64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.38.0': + '@rollup/rollup-linux-arm64-musl@4.59.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.34.8': + '@rollup/rollup-linux-loong64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.38.0': + '@rollup/rollup-linux-loong64-musl@4.59.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.38.0': + '@rollup/rollup-linux-ppc64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.34.8': + '@rollup/rollup-linux-ppc64-musl@4.59.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.38.0': + '@rollup/rollup-linux-riscv64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.34.8': + '@rollup/rollup-linux-riscv64-musl@4.59.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.38.0': + '@rollup/rollup-linux-s390x-gnu@4.59.0': optional: true - '@rollup/rollup-linux-x64-musl@4.34.8': + '@rollup/rollup-linux-x64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-x64-musl@4.38.0': + '@rollup/rollup-linux-x64-musl@4.59.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.34.8': + '@rollup/rollup-openbsd-x64@4.59.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.38.0': + '@rollup/rollup-openharmony-arm64@4.59.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.34.8': + '@rollup/rollup-win32-arm64-msvc@4.59.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.38.0': + '@rollup/rollup-win32-ia32-msvc@4.59.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.34.8': + '@rollup/rollup-win32-x64-gnu@4.59.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.38.0': + '@rollup/rollup-win32-x64-msvc@4.59.0': optional: true '@shikijs/core@1.29.2': @@ -5744,266 +4660,280 @@ snapshots: fflate: 0.7.4 string.prototype.codepointat: 0.2.1 - '@sindresorhus/merge-streams@2.3.0': {} - - '@solid-mediakit/og@0.4.1(@solidjs/meta@0.29.4(solid-js@1.9.5))(@solidjs/start@1.1.3(@types/node@22.13.5)(jiti@2.4.2)(solid-js@1.9.5)(terser@5.39.0)(tsx@4.19.3)(vinxi@0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0))(vite@6.1.2(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0))(yaml@2.8.0))(rollup@4.38.0)(solid-js@1.9.5)': + '@solid-mediakit/og@0.4.1(@solidjs/meta@0.29.4(solid-js@1.9.11))(@solidjs/start@https://pkg.pr.new/solidjs/solid-start/@solidjs/start@2080(crossws@0.4.4(srvx@0.11.12))(vite@8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0)))(rollup@4.59.0)(solid-js@1.9.11)': dependencies: '@babel/core': 7.25.2 - '@solid-mediakit/shared': 0.0.6(rollup@4.38.0) - '@solidjs/meta': 0.29.4(solid-js@1.9.5) - '@solidjs/start': 1.1.3(@types/node@22.13.5)(jiti@2.4.2)(solid-js@1.9.5)(terser@5.39.0)(tsx@4.19.3)(vinxi@0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0))(vite@6.1.2(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0))(yaml@2.8.0) + '@solid-mediakit/shared': 0.0.6(rollup@4.59.0) + '@solidjs/meta': 0.29.4(solid-js@1.9.11) + '@solidjs/start': https://pkg.pr.new/solidjs/solid-start/@solidjs/start@2080(crossws@0.4.4(srvx@0.11.12))(vite@8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0)) '@vercel/og': 0.6.8 satori-html: 0.3.2 - solid-js: 1.9.5 + solid-js: 1.9.11 unplugin: 2.3.5 transitivePeerDependencies: - rollup - supports-color - '@solid-mediakit/shared@0.0.6(rollup@4.38.0)': + '@solid-mediakit/shared@0.0.6(rollup@4.59.0)': dependencies: '@babel/core': 7.25.2 - '@rollup/pluginutils': 5.1.4(rollup@4.38.0) + '@rollup/pluginutils': 5.1.4(rollup@4.59.0) transitivePeerDependencies: - rollup - supports-color - '@solid-primitives/clipboard@1.6.0(solid-js@1.9.5)': + '@solid-primitives/clipboard@1.6.0(solid-js@1.9.11)': dependencies: - '@solid-primitives/utils': 6.3.0(solid-js@1.9.5) - solid-js: 1.9.5 + '@solid-primitives/utils': 6.3.0(solid-js@1.9.11) + solid-js: 1.9.11 - '@solid-primitives/context@0.2.3(solid-js@1.9.5)': + '@solid-primitives/context@0.2.3(solid-js@1.9.11)': dependencies: - solid-js: 1.9.5 + solid-js: 1.9.11 - '@solid-primitives/event-listener@2.4.0(solid-js@1.9.5)': + '@solid-primitives/event-listener@2.4.0(solid-js@1.9.11)': dependencies: - '@solid-primitives/utils': 6.3.0(solid-js@1.9.5) - solid-js: 1.9.5 + '@solid-primitives/utils': 6.3.0(solid-js@1.9.11) + solid-js: 1.9.11 - '@solid-primitives/keyboard@1.3.0(solid-js@1.9.5)': + '@solid-primitives/keyboard@1.3.0(solid-js@1.9.11)': dependencies: - '@solid-primitives/event-listener': 2.4.0(solid-js@1.9.5) - '@solid-primitives/rootless': 1.5.0(solid-js@1.9.5) - '@solid-primitives/utils': 6.3.0(solid-js@1.9.5) - solid-js: 1.9.5 + '@solid-primitives/event-listener': 2.4.0(solid-js@1.9.11) + '@solid-primitives/rootless': 1.5.0(solid-js@1.9.11) + '@solid-primitives/utils': 6.3.0(solid-js@1.9.11) + solid-js: 1.9.11 - '@solid-primitives/keyed@1.5.0(solid-js@1.9.5)': + '@solid-primitives/keyed@1.5.0(solid-js@1.9.11)': dependencies: - solid-js: 1.9.5 + solid-js: 1.9.11 - '@solid-primitives/map@0.4.13(solid-js@1.9.5)': + '@solid-primitives/map@0.4.13(solid-js@1.9.11)': dependencies: - '@solid-primitives/trigger': 1.2.0(solid-js@1.9.5) - solid-js: 1.9.5 + '@solid-primitives/trigger': 1.2.0(solid-js@1.9.11) + solid-js: 1.9.11 - '@solid-primitives/media@2.3.0(solid-js@1.9.5)': + '@solid-primitives/media@2.3.0(solid-js@1.9.11)': dependencies: - '@solid-primitives/event-listener': 2.4.0(solid-js@1.9.5) - '@solid-primitives/rootless': 1.5.0(solid-js@1.9.5) - '@solid-primitives/static-store': 0.1.0(solid-js@1.9.5) - '@solid-primitives/utils': 6.3.0(solid-js@1.9.5) - solid-js: 1.9.5 + '@solid-primitives/event-listener': 2.4.0(solid-js@1.9.11) + '@solid-primitives/rootless': 1.5.0(solid-js@1.9.11) + '@solid-primitives/static-store': 0.1.0(solid-js@1.9.11) + '@solid-primitives/utils': 6.3.0(solid-js@1.9.11) + solid-js: 1.9.11 - '@solid-primitives/platform@0.1.2(solid-js@1.9.5)': + '@solid-primitives/platform@0.1.2(solid-js@1.9.11)': dependencies: - solid-js: 1.9.5 + solid-js: 1.9.11 - '@solid-primitives/props@3.2.0(solid-js@1.9.5)': + '@solid-primitives/props@3.2.0(solid-js@1.9.11)': dependencies: - '@solid-primitives/utils': 6.3.0(solid-js@1.9.5) - solid-js: 1.9.5 + '@solid-primitives/utils': 6.3.0(solid-js@1.9.11) + solid-js: 1.9.11 - '@solid-primitives/refs@1.1.0(solid-js@1.9.5)': + '@solid-primitives/refs@1.1.0(solid-js@1.9.11)': dependencies: - '@solid-primitives/utils': 6.3.0(solid-js@1.9.5) - solid-js: 1.9.5 + '@solid-primitives/utils': 6.3.0(solid-js@1.9.11) + solid-js: 1.9.11 - '@solid-primitives/resize-observer@2.1.0(solid-js@1.9.5)': + '@solid-primitives/resize-observer@2.1.0(solid-js@1.9.11)': dependencies: - '@solid-primitives/event-listener': 2.4.0(solid-js@1.9.5) - '@solid-primitives/rootless': 1.5.0(solid-js@1.9.5) - '@solid-primitives/static-store': 0.1.0(solid-js@1.9.5) - '@solid-primitives/utils': 6.3.0(solid-js@1.9.5) - solid-js: 1.9.5 + '@solid-primitives/event-listener': 2.4.0(solid-js@1.9.11) + '@solid-primitives/rootless': 1.5.0(solid-js@1.9.11) + '@solid-primitives/static-store': 0.1.0(solid-js@1.9.11) + '@solid-primitives/utils': 6.3.0(solid-js@1.9.11) + solid-js: 1.9.11 - '@solid-primitives/rootless@1.5.0(solid-js@1.9.5)': + '@solid-primitives/rootless@1.5.0(solid-js@1.9.11)': dependencies: - '@solid-primitives/utils': 6.3.0(solid-js@1.9.5) - solid-js: 1.9.5 + '@solid-primitives/utils': 6.3.0(solid-js@1.9.11) + solid-js: 1.9.11 - '@solid-primitives/scroll@2.1.0(solid-js@1.9.5)': + '@solid-primitives/scroll@2.1.0(solid-js@1.9.11)': dependencies: - '@solid-primitives/event-listener': 2.4.0(solid-js@1.9.5) - '@solid-primitives/rootless': 1.5.0(solid-js@1.9.5) - '@solid-primitives/static-store': 0.1.0(solid-js@1.9.5) - solid-js: 1.9.5 + '@solid-primitives/event-listener': 2.4.0(solid-js@1.9.11) + '@solid-primitives/rootless': 1.5.0(solid-js@1.9.11) + '@solid-primitives/static-store': 0.1.0(solid-js@1.9.11) + solid-js: 1.9.11 - '@solid-primitives/static-store@0.1.0(solid-js@1.9.5)': + '@solid-primitives/static-store@0.1.0(solid-js@1.9.11)': dependencies: - '@solid-primitives/utils': 6.3.0(solid-js@1.9.5) - solid-js: 1.9.5 + '@solid-primitives/utils': 6.3.0(solid-js@1.9.11) + solid-js: 1.9.11 - '@solid-primitives/storage@4.3.1(solid-js@1.9.5)': + '@solid-primitives/storage@4.3.1(solid-js@1.9.11)': dependencies: - '@solid-primitives/utils': 6.3.0(solid-js@1.9.5) - solid-js: 1.9.5 + '@solid-primitives/utils': 6.3.0(solid-js@1.9.11) + solid-js: 1.9.11 - '@solid-primitives/trigger@1.2.0(solid-js@1.9.5)': + '@solid-primitives/trigger@1.2.0(solid-js@1.9.11)': dependencies: - '@solid-primitives/utils': 6.3.0(solid-js@1.9.5) - solid-js: 1.9.5 + '@solid-primitives/utils': 6.3.0(solid-js@1.9.11) + solid-js: 1.9.11 - '@solid-primitives/utils@6.3.0(solid-js@1.9.5)': + '@solid-primitives/utils@6.3.0(solid-js@1.9.11)': dependencies: - solid-js: 1.9.5 + solid-js: 1.9.11 - '@solidjs/meta@0.29.4(solid-js@1.9.5)': + '@solidjs/meta@0.29.4(solid-js@1.9.11)': dependencies: - solid-js: 1.9.5 + solid-js: 1.9.11 - '@solidjs/router@0.15.3(solid-js@1.9.5)': + '@solidjs/router@0.15.3(solid-js@1.9.11)': dependencies: - solid-js: 1.9.5 + solid-js: 1.9.11 - '@solidjs/start@1.1.3(@types/node@22.13.5)(jiti@2.4.2)(solid-js@1.9.5)(terser@5.39.0)(tsx@4.19.3)(vinxi@0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0))(vite@6.1.1(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0))(yaml@2.8.0)': + '@solidjs/start@https://pkg.pr.new/solidjs/solid-start/@solidjs/start@2080(crossws@0.4.4(srvx@0.11.12))(vite@8.0.0(@types/node@22.13.5)(esbuild@0.25.2)(tsx@4.19.3)(yaml@2.8.0))': dependencies: - '@tanstack/server-functions-plugin': 1.114.29(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0) - '@vinxi/plugin-directives': 0.5.0(vinxi@0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0)) - '@vinxi/server-components': 0.5.0(vinxi@0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0)) + '@babel/core': 7.29.0 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@solidjs/meta': 0.29.4(solid-js@1.9.11) + '@tanstack/server-functions-plugin': 1.134.5(vite@8.0.0(@types/node@22.13.5)(esbuild@0.25.2)(tsx@4.19.3)(yaml@2.8.0)) + '@types/babel__traverse': 7.28.0 + '@types/micromatch': 4.0.10 + cookie-es: 2.0.0 defu: 6.1.4 error-stack-parser: 2.1.4 + es-module-lexer: 2.0.0 + esbuild: 0.27.4 + fast-glob: 3.3.3 + h3: 2.0.1-rc.16(crossws@0.4.4(srvx@0.11.12)) html-to-image: 1.11.13 + micromatch: 4.0.8 + path-to-regexp: 8.3.0 + pathe: 2.0.3 radix3: 1.1.2 - seroval: 1.2.1 - seroval-plugins: 1.2.1(seroval@1.2.1) + seroval: 1.5.1 + seroval-plugins: 1.5.1(seroval@1.5.1) shiki: 1.29.2 + solid-js: 1.9.11 source-map-js: 1.2.1 - terracotta: 1.0.6(solid-js@1.9.5) - tinyglobby: 0.2.12 - vinxi: 0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0) - vite-plugin-solid: 2.11.6(solid-js@1.9.5)(vite@6.1.1(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0)) + srvx: 0.11.12 + terracotta: 1.1.0(solid-js@1.9.11) + vite: 8.0.0(@types/node@22.13.5)(esbuild@0.25.2)(tsx@4.19.3)(yaml@2.8.0) + vite-plugin-solid: 2.11.11(solid-js@1.9.11)(vite@8.0.0(@types/node@22.13.5)(esbuild@0.25.2)(tsx@4.19.3)(yaml@2.8.0)) transitivePeerDependencies: - '@testing-library/jest-dom' - - '@types/node' - - babel-plugin-macros - - jiti - - less - - lightningcss - - sass - - sass-embedded - - solid-js - - stylus - - sugarss + - crossws - supports-color - - terser - - tsx - - vite - - yaml - '@solidjs/start@1.1.3(@types/node@22.13.5)(jiti@2.4.2)(solid-js@1.9.5)(terser@5.39.0)(tsx@4.19.3)(vinxi@0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0))(vite@6.1.2(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0))(yaml@2.8.0)': + '@solidjs/start@https://pkg.pr.new/solidjs/solid-start/@solidjs/start@2080(crossws@0.4.4(srvx@0.11.12))(vite@8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0))': dependencies: - '@tanstack/server-functions-plugin': 1.114.29(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0) - '@vinxi/plugin-directives': 0.5.0(vinxi@0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0)) - '@vinxi/server-components': 0.5.0(vinxi@0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0)) + '@babel/core': 7.29.0 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@solidjs/meta': 0.29.4(solid-js@1.9.11) + '@tanstack/server-functions-plugin': 1.134.5(vite@8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0)) + '@types/babel__traverse': 7.28.0 + '@types/micromatch': 4.0.10 + cookie-es: 2.0.0 defu: 6.1.4 error-stack-parser: 2.1.4 + es-module-lexer: 2.0.0 + esbuild: 0.27.4 + fast-glob: 3.3.3 + h3: 2.0.1-rc.16(crossws@0.4.4(srvx@0.11.12)) html-to-image: 1.11.13 + micromatch: 4.0.8 + path-to-regexp: 8.3.0 + pathe: 2.0.3 radix3: 1.1.2 - seroval: 1.2.1 - seroval-plugins: 1.2.1(seroval@1.2.1) + seroval: 1.5.1 + seroval-plugins: 1.5.1(seroval@1.5.1) shiki: 1.29.2 + solid-js: 1.9.11 source-map-js: 1.2.1 - terracotta: 1.0.6(solid-js@1.9.5) - tinyglobby: 0.2.12 - vinxi: 0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0) - vite-plugin-solid: 2.11.6(solid-js@1.9.5)(vite@6.1.2(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0)) + srvx: 0.11.12 + terracotta: 1.1.0(solid-js@1.9.11) + vite: 8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0) + vite-plugin-solid: 2.11.11(solid-js@1.9.11)(vite@8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0)) transitivePeerDependencies: - '@testing-library/jest-dom' - - '@types/node' - - babel-plugin-macros - - jiti - - less - - lightningcss - - sass - - sass-embedded - - solid-js - - stylus - - sugarss + - crossws - supports-color - - terser - - tsx - - vite - - yaml + + '@standard-schema/spec@1.1.0': {} '@swc/helpers@0.5.15': dependencies: tslib: 2.8.1 - '@tanstack/directive-functions-plugin@1.114.29(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0)': + '@tanstack/directive-functions-plugin@1.134.5(vite@8.0.0(@types/node@22.13.5)(esbuild@0.25.2)(tsx@4.19.3)(yaml@2.8.0))': dependencies: - '@babel/code-frame': 7.26.2 - '@babel/core': 7.27.3 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.27.3) - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.27.3) - '@babel/template': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - '@tanstack/router-utils': 1.114.29 + '@babel/code-frame': 7.27.1 + '@babel/core': 7.29.0 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@tanstack/router-utils': 1.133.19 babel-dead-code-elimination: 1.0.10 - dedent: 1.5.3 + pathe: 2.0.3 tiny-invariant: 1.3.3 - vite: 6.1.2(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0) + vite: 8.0.0(@types/node@22.13.5)(esbuild@0.25.2)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - supports-color - - terser - - tsx - - yaml - - '@tanstack/router-utils@1.114.29': - dependencies: - '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 - ansis: 3.17.0 - diff: 7.0.0 - - '@tanstack/server-functions-plugin@1.114.29(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0)': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/core': 7.26.10 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) - '@babel/template': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - '@tanstack/directive-functions-plugin': 1.114.29(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0) + + '@tanstack/directive-functions-plugin@1.134.5(vite@8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0))': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/core': 7.29.0 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@tanstack/router-utils': 1.133.19 babel-dead-code-elimination: 1.0.10 - dedent: 1.5.3 + pathe: 2.0.3 tiny-invariant: 1.3.3 + vite: 8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - supports-color - - terser - - tsx - - yaml + + '@tanstack/router-utils@1.133.19': + dependencies: + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/parser': 7.29.2 + '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) + ansis: 4.2.0 + diff: 8.0.2 + pathe: 2.0.3 + tinyglobby: 0.2.15 + transitivePeerDependencies: + - supports-color + + '@tanstack/server-functions-plugin@1.134.5(vite@8.0.0(@types/node@22.13.5)(esbuild@0.25.2)(tsx@4.19.3)(yaml@2.8.0))': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/core': 7.29.0 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + '@babel/template': 7.27.2 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@tanstack/directive-functions-plugin': 1.134.5(vite@8.0.0(@types/node@22.13.5)(esbuild@0.25.2)(tsx@4.19.3)(yaml@2.8.0)) + babel-dead-code-elimination: 1.0.10 + tiny-invariant: 1.3.3 + transitivePeerDependencies: + - supports-color + - vite + + '@tanstack/server-functions-plugin@1.134.5(vite@8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0))': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/core': 7.29.0 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + '@babel/template': 7.27.2 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@tanstack/directive-functions-plugin': 1.134.5(vite@8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0)) + babel-dead-code-elimination: 1.0.10 + tiny-invariant: 1.3.3 + transitivePeerDependencies: + - supports-color + - vite + + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true '@types/acorn@4.0.6': dependencies: @@ -6011,27 +4941,32 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/parser': 7.27.3 + '@babel/types': 7.29.0 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.7 + '@types/babel__traverse': 7.28.0 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.29.0 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/parser': 7.27.3 + '@babel/types': 7.29.0 - '@types/babel__traverse@7.20.7': + '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.29.0 '@types/braces@3.0.5': {} + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + '@types/cross-spawn@6.0.6': dependencies: '@types/node': 22.13.5 @@ -6040,6 +4975,8 @@ snapshots: dependencies: '@types/ms': 2.1.0 + '@types/deep-eql@4.0.2': {} + '@types/estree-jsx@1.0.5': dependencies: '@types/estree': 1.0.6 @@ -6048,21 +4985,19 @@ snapshots: '@types/estree@1.0.7': {} + '@types/estree@1.0.8': {} + '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 - '@types/http-proxy@1.17.16': - dependencies: - '@types/node': 22.13.5 - '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 '@types/mdx@2.0.13': {} - '@types/micromatch@4.0.9': + '@types/micromatch@4.0.10': dependencies: '@types/braces': 3.0.5 @@ -6072,8 +5007,6 @@ snapshots: dependencies: undici-types: 6.20.0 - '@types/resolve@1.20.2': {} - '@types/resolve@1.20.6': {} '@types/ungap__structured-clone@1.2.0': {} @@ -6091,84 +5024,52 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vercel/nft@0.27.10(rollup@4.34.8)': - dependencies: - '@mapbox/node-pre-gyp': 2.0.0 - '@rollup/pluginutils': 5.1.4(rollup@4.34.8) - acorn: 8.14.0 - acorn-import-attributes: 1.9.5(acorn@8.14.0) - async-sema: 3.1.1 - bindings: 1.5.0 - estree-walker: 2.0.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - node-gyp-build: 4.8.4 - picomatch: 4.0.2 - resolve-from: 5.0.0 - transitivePeerDependencies: - - encoding - - rollup - - supports-color - '@vercel/og@0.6.8': dependencies: '@resvg/resvg-wasm': 2.4.0 satori: 0.12.2 yoga-wasm-web: 0.3.3 - '@vinxi/listhen@1.5.6': + '@vitest/expect@4.1.0': dependencies: - '@parcel/watcher': 2.5.1 - '@parcel/watcher-wasm': 2.3.0 - citty: 0.1.6 - clipboardy: 4.0.0 - consola: 3.4.0 - defu: 6.1.4 - get-port-please: 3.1.2 - h3: 1.13.0 - http-shutdown: 1.2.2 - jiti: 1.21.7 - mlly: 1.7.4 - node-forge: 1.3.1 - pathe: 1.1.2 - std-env: 3.8.0 - ufo: 1.5.4 - untun: 0.1.3 - uqr: 0.1.2 + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.0 + '@vitest/utils': 4.1.0 + chai: 6.2.2 + tinyrainbow: 3.1.0 - '@vinxi/plugin-directives@0.5.0(vinxi@0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0))': + '@vitest/mocker@4.1.0(vite@8.0.0(@types/node@22.13.5)(esbuild@0.25.2)(tsx@4.19.3)(yaml@2.8.0))': dependencies: - '@babel/parser': 7.27.0 - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) - acorn-loose: 8.4.0 - acorn-typescript: 1.4.13(acorn@8.14.1) - astring: 1.9.0 - magicast: 0.2.11 - recast: 0.23.11 - tslib: 2.8.1 - vinxi: 0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0) + '@vitest/spy': 4.1.0 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 8.0.0(@types/node@22.13.5)(esbuild@0.25.2)(tsx@4.19.3)(yaml@2.8.0) - '@vinxi/server-components@0.5.0(vinxi@0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0))': + '@vitest/pretty-format@4.1.0': dependencies: - '@vinxi/plugin-directives': 0.5.0(vinxi@0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0)) - acorn: 8.14.1 - acorn-loose: 8.4.0 - acorn-typescript: 1.4.13(acorn@8.14.1) - astring: 1.9.0 - magicast: 0.2.11 - recast: 0.23.11 - vinxi: 0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0) + tinyrainbow: 3.1.0 - abbrev@3.0.0: {} + '@vitest/runner@4.1.0': + dependencies: + '@vitest/utils': 4.1.0 + pathe: 2.0.3 - abort-controller@3.0.0: + '@vitest/snapshot@4.1.0': dependencies: - event-target-shim: 5.0.1 + '@vitest/pretty-format': 4.1.0 + '@vitest/utils': 4.1.0 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@4.1.0': {} - acorn-import-attributes@1.9.5(acorn@8.14.0): + '@vitest/utils@4.1.0': dependencies: - acorn: 8.14.0 + '@vitest/pretty-format': 4.1.0 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 acorn-jsx@5.3.2(acorn@8.14.0): dependencies: @@ -6178,26 +5079,10 @@ snapshots: dependencies: acorn: 8.14.1 - acorn-loose@8.4.0: - dependencies: - acorn: 8.14.1 - - acorn-typescript@1.4.13(acorn@8.14.1): - dependencies: - acorn: 8.14.1 - acorn@8.14.0: {} acorn@8.14.1: {} - agent-base@7.1.3: {} - - ansi-align@3.0.1: - dependencies: - string-width: 4.2.3 - - ansi-colors@4.1.3: {} - ansi-purge@1.0.1: {} ansi-regex@5.0.1: {} @@ -6214,32 +5099,7 @@ snapshots: dependencies: fast-string-truncated-width: 1.2.1 - ansis@3.17.0: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - archiver-utils@5.0.2: - dependencies: - glob: 10.4.5 - graceful-fs: 4.2.11 - is-stream: 2.0.1 - lazystream: 1.0.1 - lodash: 4.17.21 - normalize-path: 3.0.0 - readable-stream: 4.7.0 - - archiver@7.0.1: - dependencies: - archiver-utils: 5.0.2 - async: 3.2.6 - buffer-crc32: 1.0.0 - readable-stream: 4.7.0 - readdir-glob: 1.1.3 - tar-stream: 3.1.7 - zip-stream: 6.0.1 + ansis@4.2.0: {} argparse@1.0.10: dependencies: @@ -6247,85 +5107,56 @@ snapshots: argparse@2.0.1: {} - ast-types@0.16.1: - dependencies: - tslib: 2.8.1 + assertion-error@2.0.1: {} astring@1.9.0: {} - async-sema@3.1.1: {} - - async@3.2.6: {} - atomically@2.0.3: dependencies: stubborn-fs: 1.2.5 when-exit: 2.1.4 - b4a@1.6.7: {} - babel-dead-code-elimination@1.0.10: dependencies: - '@babel/core': 7.27.3 - '@babel/parser': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 + '@babel/core': 7.29.0 + '@babel/parser': 7.27.3 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - babel-plugin-jsx-dom-expressions@0.39.7(@babel/core@7.26.10): + babel-plugin-jsx-dom-expressions@0.39.7(@babel/core@7.29.0): dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.29.0 '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) - '@babel/types': 7.27.0 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.29.0) + '@babel/types': 7.29.0 html-entities: 2.3.3 parse5: 7.2.1 validate-html-nesting: 1.2.2 - babel-preset-solid@1.9.5(@babel/core@7.26.10): + babel-preset-solid@1.9.5(@babel/core@7.29.0): dependencies: - '@babel/core': 7.26.10 - babel-plugin-jsx-dom-expressions: 0.39.7(@babel/core@7.26.10) + '@babel/core': 7.29.0 + babel-plugin-jsx-dom-expressions: 0.39.7(@babel/core@7.29.0) bail@2.0.2: {} balanced-match@1.0.2: {} - bare-events@2.5.4: - optional: true - base64-js@0.0.8: {} - base64-js@1.5.1: {} - bcp-47-match@2.0.3: {} before-after-hook@3.0.2: {} - binary-extensions@2.3.0: {} - - bindings@1.5.0: + bidi-js@1.0.3: dependencies: - file-uri-to-path: 1.0.0 - - boolbase@1.0.0: {} + require-from-string: 2.0.2 - boxen@7.1.1: - dependencies: - ansi-align: 3.0.1 - camelcase: 7.0.1 - chalk: 5.4.1 - cli-boxes: 3.0.0 - string-width: 5.1.2 - type-fest: 2.19.0 - widest-line: 4.0.1 - wrap-ansi: 8.1.0 + binary-extensions@2.3.0: {} - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 + boolbase@1.0.0: {} brace-expansion@2.0.1: dependencies: @@ -6335,13 +5166,6 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.24.4: - dependencies: - caniuse-lite: 1.0.30001700 - electron-to-chromium: 1.5.103 - node-releases: 2.0.19 - update-browserslist-db: 1.1.2(browserslist@4.24.4) - browserslist@4.25.0: dependencies: caniuse-lite: 1.0.30001720 @@ -6349,93 +5173,21 @@ snapshots: node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.25.0) - buffer-crc32@1.0.0: {} - - buffer-from@1.1.2: {} - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - c12@2.0.1(magicast@0.3.5): - dependencies: - chokidar: 4.0.3 - confbox: 0.1.8 - defu: 6.1.4 - dotenv: 16.4.7 - giget: 1.2.5 - jiti: 2.4.2 - mlly: 1.7.4 - ohash: 1.1.4 - pathe: 1.1.2 - perfect-debounce: 1.0.0 - pkg-types: 1.3.1 - rc9: 2.1.2 - optionalDependencies: - magicast: 0.3.5 - - camelcase@7.0.1: {} - camelize@1.0.1: {} - caniuse-lite@1.0.30001700: {} - caniuse-lite@1.0.30001720: {} ccount@2.0.1: {} - chalk@5.4.1: {} - - change-case@5.4.4: {} + chai@6.2.2: {} character-entities-html4@2.1.0: {} - character-entities-legacy@3.0.0: {} - - character-entities@2.0.2: {} - - character-reference-invalid@2.0.1: {} - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - chokidar@4.0.3: - dependencies: - readdirp: 4.1.2 - - chownr@2.0.0: {} - - chownr@3.0.0: {} - - citty@0.1.6: - dependencies: - consola: 3.4.0 - - cli-boxes@3.0.0: {} - - clipboardy@4.0.0: - dependencies: - execa: 8.0.1 - is-wsl: 3.1.0 - is64bit: 2.0.0 + character-entities-legacy@3.0.0: {} - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 + character-entities@2.0.2: {} - cluster-key-slot@1.1.2: {} + character-reference-invalid@2.0.1: {} collapse-white-space@2.1.0: {} @@ -6445,44 +5197,15 @@ snapshots: color-name@1.1.4: {} - colorette@1.4.0: {} - comma-separated-tokens@2.0.3: {} - commander@2.20.3: {} - - commondir@1.0.1: {} - - compatx@0.1.8: {} - - compress-commons@6.0.2: - dependencies: - crc-32: 1.2.2 - crc32-stream: 6.0.0 - is-stream: 2.0.1 - normalize-path: 3.0.0 - readable-stream: 4.7.0 - - concat-map@0.0.1: {} - confbox@0.1.8: {} - consola@3.4.0: {} + consola@3.4.2: {} convert-source-map@2.0.0: {} - cookie-es@1.2.2: {} - - core-util-is@1.0.3: {} - - crc-32@1.2.2: {} - - crc32-stream@6.0.0: - dependencies: - crc-32: 1.2.2 - readable-stream: 4.7.0 - - croner@9.0.0: {} + cookie-es@2.0.0: {} cross-env@7.0.3: dependencies: @@ -6494,9 +5217,9 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - crossws@0.3.4: - dependencies: - uncrypto: 0.1.3 + crossws@0.4.4(srvx@0.11.12): + optionalDependencies: + srvx: 0.11.12 css-background-parser@0.1.0: {} @@ -6514,55 +5237,42 @@ snapshots: css-color-keywords: 1.0.0 postcss-value-parser: 4.2.0 + css-tree@3.2.1: + dependencies: + mdn-data: 2.27.1 + source-map-js: 1.2.1 + cssesc@3.0.0: {} csstype@3.1.3: {} - dax-sh@0.39.2: + data-urls@7.0.0: dependencies: - '@deno/shim-deno': 0.19.2 - undici-types: 5.28.4 - - db0@0.2.4: {} + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.1 + transitivePeerDependencies: + - '@noble/hashes' - debug@2.6.9: - dependencies: - ms: 2.0.0 + db0@0.3.4: {} debug@4.4.0: dependencies: ms: 2.1.3 - debug@4.4.1(supports-color@9.4.0): + debug@4.4.1: dependencies: ms: 2.1.3 - optionalDependencies: - supports-color: 9.4.0 + + decimal.js@10.6.0: {} decode-named-character-reference@1.0.2: dependencies: character-entities: 2.0.2 - dedent@1.5.3: {} - - deepmerge@4.3.1: {} - - define-lazy-prop@2.0.0: {} - defu@6.1.4: {} - denque@2.1.0: {} - - depd@2.0.0: {} - dequal@2.0.3: {} - destr@2.0.3: {} - - destroy@1.2.0: {} - - detect-libc@1.0.3: {} - detect-libc@2.0.3: {} dettle@1.0.5: {} @@ -6571,26 +5281,12 @@ snapshots: dependencies: dequal: 2.0.3 - diff@7.0.0: {} - diff@8.0.2: {} direction@2.0.1: {} - dot-prop@9.0.0: - dependencies: - type-fest: 4.35.0 - - dotenv@16.4.7: {} - - duplexer@0.1.2: {} - eastasianwidth@0.2.0: {} - ee-first@1.1.1: {} - - electron-to-chromium@1.5.103: {} - electron-to-chromium@1.5.161: {} emoji-regex-xs@1.0.0: {} @@ -6601,17 +5297,21 @@ snapshots: emoji-regex@9.2.2: {} - encodeurl@1.0.2: {} + entities@4.5.0: {} - encodeurl@2.0.0: {} + entities@6.0.1: {} - entities@4.5.0: {} + env-runner@0.1.6: + dependencies: + crossws: 0.4.4(srvx@0.11.12) + httpxy: 0.3.1 + srvx: 0.11.12 error-stack-parser@2.1.4: dependencies: stackframe: 1.3.4 - es-module-lexer@1.6.0: {} + es-module-lexer@2.0.0: {} esast-util-from-estree@2.0.0: dependencies: @@ -6627,60 +5327,6 @@ snapshots: esast-util-from-estree: 2.0.0 vfile-message: 4.0.2 - esbuild@0.20.2: - optionalDependencies: - '@esbuild/aix-ppc64': 0.20.2 - '@esbuild/android-arm': 0.20.2 - '@esbuild/android-arm64': 0.20.2 - '@esbuild/android-x64': 0.20.2 - '@esbuild/darwin-arm64': 0.20.2 - '@esbuild/darwin-x64': 0.20.2 - '@esbuild/freebsd-arm64': 0.20.2 - '@esbuild/freebsd-x64': 0.20.2 - '@esbuild/linux-arm': 0.20.2 - '@esbuild/linux-arm64': 0.20.2 - '@esbuild/linux-ia32': 0.20.2 - '@esbuild/linux-loong64': 0.20.2 - '@esbuild/linux-mips64el': 0.20.2 - '@esbuild/linux-ppc64': 0.20.2 - '@esbuild/linux-riscv64': 0.20.2 - '@esbuild/linux-s390x': 0.20.2 - '@esbuild/linux-x64': 0.20.2 - '@esbuild/netbsd-x64': 0.20.2 - '@esbuild/openbsd-x64': 0.20.2 - '@esbuild/sunos-x64': 0.20.2 - '@esbuild/win32-arm64': 0.20.2 - '@esbuild/win32-ia32': 0.20.2 - '@esbuild/win32-x64': 0.20.2 - - esbuild@0.24.2: - optionalDependencies: - '@esbuild/aix-ppc64': 0.24.2 - '@esbuild/android-arm': 0.24.2 - '@esbuild/android-arm64': 0.24.2 - '@esbuild/android-x64': 0.24.2 - '@esbuild/darwin-arm64': 0.24.2 - '@esbuild/darwin-x64': 0.24.2 - '@esbuild/freebsd-arm64': 0.24.2 - '@esbuild/freebsd-x64': 0.24.2 - '@esbuild/linux-arm': 0.24.2 - '@esbuild/linux-arm64': 0.24.2 - '@esbuild/linux-ia32': 0.24.2 - '@esbuild/linux-loong64': 0.24.2 - '@esbuild/linux-mips64el': 0.24.2 - '@esbuild/linux-ppc64': 0.24.2 - '@esbuild/linux-riscv64': 0.24.2 - '@esbuild/linux-s390x': 0.24.2 - '@esbuild/linux-x64': 0.24.2 - '@esbuild/netbsd-arm64': 0.24.2 - '@esbuild/netbsd-x64': 0.24.2 - '@esbuild/openbsd-arm64': 0.24.2 - '@esbuild/openbsd-x64': 0.24.2 - '@esbuild/sunos-x64': 0.24.2 - '@esbuild/win32-arm64': 0.24.2 - '@esbuild/win32-ia32': 0.24.2 - '@esbuild/win32-x64': 0.24.2 - esbuild@0.25.2: optionalDependencies: '@esbuild/aix-ppc64': 0.25.2 @@ -6709,6 +5355,35 @@ snapshots: '@esbuild/win32-ia32': 0.25.2 '@esbuild/win32-x64': 0.25.2 + esbuild@0.27.4: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.4 + '@esbuild/android-arm': 0.27.4 + '@esbuild/android-arm64': 0.27.4 + '@esbuild/android-x64': 0.27.4 + '@esbuild/darwin-arm64': 0.27.4 + '@esbuild/darwin-x64': 0.27.4 + '@esbuild/freebsd-arm64': 0.27.4 + '@esbuild/freebsd-x64': 0.27.4 + '@esbuild/linux-arm': 0.27.4 + '@esbuild/linux-arm64': 0.27.4 + '@esbuild/linux-ia32': 0.27.4 + '@esbuild/linux-loong64': 0.27.4 + '@esbuild/linux-mips64el': 0.27.4 + '@esbuild/linux-ppc64': 0.27.4 + '@esbuild/linux-riscv64': 0.27.4 + '@esbuild/linux-s390x': 0.27.4 + '@esbuild/linux-x64': 0.27.4 + '@esbuild/netbsd-arm64': 0.27.4 + '@esbuild/netbsd-x64': 0.27.4 + '@esbuild/openbsd-arm64': 0.27.4 + '@esbuild/openbsd-x64': 0.27.4 + '@esbuild/openharmony-arm64': 0.27.4 + '@esbuild/sunos-x64': 0.27.4 + '@esbuild/win32-arm64': 0.27.4 + '@esbuild/win32-ia32': 0.27.4 + '@esbuild/win32-x64': 0.27.4 + escalade@3.2.0: {} escape-html@1.0.3: {} @@ -6756,29 +5431,11 @@ snapshots: dependencies: '@types/estree': 1.0.7 - etag@1.8.1: {} - - event-target-shim@5.0.1: {} - - eventemitter3@4.0.7: {} - - events@3.3.0: {} - - execa@8.0.1: - dependencies: - cross-spawn: 7.0.6 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 + expect-type@1.3.0: {} - expressive-code-twoslash@0.4.0(@expressive-code/core@0.40.2)(expressive-code@0.41.3)(typescript@5.7.3): + expressive-code-twoslash@0.4.0(@expressive-code/core@0.41.7)(expressive-code@0.41.3)(typescript@5.7.3): dependencies: - '@expressive-code/core': 0.40.2 + '@expressive-code/core': 0.41.7 expressive-code: 0.41.3 mdast-util-from-markdown: 2.0.2 mdast-util-gfm: 3.1.0 @@ -6788,20 +5445,20 @@ snapshots: transitivePeerDependencies: - supports-color - expressive-code@0.40.2: - dependencies: - '@expressive-code/core': 0.40.2 - '@expressive-code/plugin-frames': 0.40.2 - '@expressive-code/plugin-shiki': 0.40.2 - '@expressive-code/plugin-text-markers': 0.40.2 - expressive-code@0.41.3: dependencies: - '@expressive-code/core': 0.41.3 - '@expressive-code/plugin-frames': 0.41.3 + '@expressive-code/core': 0.41.7 + '@expressive-code/plugin-frames': 0.41.7 '@expressive-code/plugin-shiki': 0.41.3 '@expressive-code/plugin-text-markers': 0.41.3 + expressive-code@0.41.7: + dependencies: + '@expressive-code/core': 0.41.7 + '@expressive-code/plugin-frames': 0.41.7 + '@expressive-code/plugin-shiki': 0.41.7 + '@expressive-code/plugin-text-markers': 0.41.7 + extend-shallow@2.0.1: dependencies: is-extendable: 0.1.1 @@ -6810,10 +5467,6 @@ snapshots: fast-content-type-parse@2.0.1: {} - fast-deep-equal@3.1.3: {} - - fast-fifo@1.3.2: {} - fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -6841,14 +5494,12 @@ snapshots: dependencies: format: 0.2.2 - fdir@6.4.3(picomatch@4.0.2): + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: - picomatch: 4.0.2 + picomatch: 4.0.3 fflate@0.7.4: {} - file-uri-to-path@1.0.0: {} - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -6859,8 +5510,6 @@ snapshots: find-up-path@1.0.1: {} - follow-redirects@1.15.9: {} - foreground-child@3.3.0: dependencies: cross-spawn: 7.0.6 @@ -6868,20 +5517,6 @@ snapshots: format@0.2.2: {} - fresh@0.5.2: {} - - fs-extra@11.3.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - - fs.realpath@1.0.0: {} - fsevents@2.3.3: optional: true @@ -6891,45 +5526,20 @@ snapshots: gensync@1.0.0-beta.2: {} - get-caller-file@2.0.5: {} - get-current-package@1.0.1: dependencies: find-up-json: 2.0.5 - get-port-please@3.1.2: {} - - get-stream@8.0.1: {} - get-tsconfig@4.10.0: dependencies: resolve-pkg-maps: 1.0.0 - giget@1.2.5: - dependencies: - citty: 0.1.6 - consola: 3.4.0 - defu: 6.1.4 - node-fetch-native: 1.6.6 - nypm: 0.5.4 - pathe: 2.0.3 - tar: 6.2.1 - github-slugger@2.0.0: {} glob-parent@5.1.2: dependencies: is-glob: 4.0.3 - glob@10.4.5: - dependencies: - foreground-child: 3.3.0 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - glob@11.0.1: dependencies: foreground-child: 3.3.0 @@ -6939,30 +5549,10 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 2.0.0 - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - globals@11.12.0: {} globals@15.15.0: {} - globby@14.1.0: - dependencies: - '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.3 - ignore: 7.0.3 - path-type: 6.0.0 - slash: 5.1.0 - unicorn-magic: 0.3.0 - - graceful-fs@4.2.11: {} - grammex@3.1.10: {} gray-matter@4.0.3: @@ -6972,34 +5562,12 @@ snapshots: section-matter: 1.0.0 strip-bom-string: 1.0.0 - gzip-size@7.0.0: - dependencies: - duplexer: 0.1.2 - - h3@1.13.0: - dependencies: - cookie-es: 1.2.2 - crossws: 0.3.4 - defu: 6.1.4 - destr: 2.0.3 - iron-webcrypto: 1.2.1 - ohash: 1.1.4 - radix3: 1.1.2 - ufo: 1.5.4 - uncrypto: 0.1.3 - unenv: 1.10.0 - - h3@1.15.1: + h3@2.0.1-rc.16(crossws@0.4.4(srvx@0.11.12)): dependencies: - cookie-es: 1.2.2 - crossws: 0.3.4 - defu: 6.1.4 - destr: 2.0.3 - iron-webcrypto: 1.2.1 - node-mock-http: 1.0.0 - radix3: 1.1.2 - ufo: 1.5.4 - uncrypto: 0.1.3 + rou3: 0.8.1 + srvx: 0.11.12 + optionalDependencies: + crossws: 0.4.4(srvx@0.11.12) hasown@2.0.2: dependencies: @@ -7156,80 +5724,30 @@ snapshots: hex-rgb@4.3.0: {} - hookable@5.5.3: {} - - html-entities@2.3.3: {} - - html-to-image@1.11.13: {} - - html-void-elements@3.0.0: {} - - http-errors@2.0.0: - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - - http-proxy@1.18.1: - dependencies: - eventemitter3: 4.0.7 - follow-redirects: 1.15.9 - requires-port: 1.0.0 - transitivePeerDependencies: - - debug + hookable@6.1.0: {} - http-shutdown@1.2.2: {} - - https-proxy-agent@7.0.6(supports-color@9.4.0): + html-encoding-sniffer@6.0.0: dependencies: - agent-base: 7.1.3 - debug: 4.4.1(supports-color@9.4.0) + '@exodus/bytes': 1.15.0 transitivePeerDependencies: - - supports-color + - '@noble/hashes' - httpxy@0.1.7: {} + html-entities@2.3.3: {} - human-signals@5.0.0: {} + html-to-image@1.11.13: {} - ieee754@1.2.1: {} + html-void-elements@3.0.0: {} - ignore@7.0.3: {} + httpxy@0.3.1: {} import-meta-resolve@4.1.0: {} - index-to-position@0.1.2: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - ini-simple-parser@1.0.1: {} inline-style-parser@0.2.4: {} ionstore@1.0.1: {} - ioredis@5.5.0: - dependencies: - '@ioredis/commands': 1.2.0 - cluster-key-slot: 1.1.2 - debug: 4.4.0 - denque: 2.1.0 - lodash.defaults: 4.2.0 - lodash.isarguments: 3.1.0 - redis-errors: 1.2.0 - redis-parser: 3.0.0 - standard-as-callback: 2.1.0 - transitivePeerDependencies: - - supports-color - - iron-webcrypto@1.2.1: {} - is-alphabetical@2.0.1: {} is-alphanumerical@2.0.1: @@ -7247,10 +5765,6 @@ snapshots: is-decimal@2.0.1: {} - is-docker@2.2.1: {} - - is-docker@3.0.0: {} - is-extendable@0.1.1: {} is-extglob@2.1.1: {} @@ -7263,60 +5777,20 @@ snapshots: is-hexadecimal@2.0.1: {} - is-inside-container@1.0.0: - dependencies: - is-docker: 3.0.0 - - is-module@1.0.0: {} - is-number@7.0.0: {} is-plain-obj@4.1.0: {} - is-reference@1.2.1: - dependencies: - '@types/estree': 1.0.7 - - is-stream@2.0.1: {} - - is-stream@3.0.0: {} + is-potential-custom-element-name@1.0.1: {} is-what@4.1.16: {} - is-wsl@2.2.0: - dependencies: - is-docker: 2.2.1 - - is-wsl@3.1.0: - dependencies: - is-inside-container: 1.0.0 - - is64bit@2.0.0: - dependencies: - system-architecture: 0.1.0 - - isarray@1.0.0: {} - isexe@2.0.0: {} - isexe@3.1.1: {} - - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - jackspeak@4.1.0: dependencies: '@isaacs/cliui': 8.0.2 - jiti@1.21.7: {} - - jiti@2.4.2: {} - - js-levenshtein@1.1.6: {} - js-tokens@4.0.0: {} js-tokens@9.0.1: {} @@ -7330,79 +5804,111 @@ snapshots: dependencies: argparse: 2.0.1 - jsesc@3.1.0: {} + jsdom@29.0.0: + dependencies: + '@asamuzakjp/css-color': 5.0.1 + '@asamuzakjp/dom-selector': 7.0.3 + '@bramus/specificity': 2.4.2 + '@csstools/css-syntax-patches-for-csstree': 1.1.1(css-tree@3.2.1) + '@exodus/bytes': 1.15.0 + css-tree: 3.2.1 + data-urls: 7.0.0 + decimal.js: 10.6.0 + html-encoding-sniffer: 6.0.0 + is-potential-custom-element-name: 1.0.1 + lru-cache: 11.2.7 + parse5: 8.0.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 6.0.1 + undici: 7.24.4 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 8.0.1 + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.1 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - '@noble/hashes' - json-schema-traverse@1.0.0: {} + jsesc@3.1.0: {} json-sorted-stringify@1.0.1: {} json5@2.2.3: {} - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - kasi@1.1.1: {} kind-of@6.0.3: {} - klona@2.0.6: {} + kolorist@1.8.0: {} + + lightningcss-android-arm64@1.32.0: + optional: true - knitwork@1.2.0: {} + lightningcss-darwin-arm64@1.32.0: + optional: true - kolorist@1.8.0: {} + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true - lazystream@1.0.1: + lightningcss@1.32.0: dependencies: - readable-stream: 2.3.8 + detect-libc: 2.0.3 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 linebreak@1.1.0: dependencies: base64-js: 0.0.8 unicode-trie: 2.0.0 - listhen@1.9.0: - dependencies: - '@parcel/watcher': 2.5.1 - '@parcel/watcher-wasm': 2.5.1 - citty: 0.1.6 - clipboardy: 4.0.0 - consola: 3.4.0 - crossws: 0.3.4 - defu: 6.1.4 - get-port-please: 3.1.2 - h3: 1.13.0 - http-shutdown: 1.2.2 - jiti: 2.4.2 - mlly: 1.7.4 - node-forge: 1.3.1 - pathe: 1.1.2 - std-env: 3.8.0 - ufo: 1.5.4 - untun: 0.1.3 - uqr: 0.1.2 - local-pkg@1.0.0: dependencies: mlly: 1.7.4 pkg-types: 1.3.1 - lodash.defaults@4.2.0: {} - - lodash.isarguments@3.1.0: {} - - lodash@4.17.21: {} - lomemo@1.0.1: {} longest-streak@3.1.0: {} - lru-cache@10.4.3: {} - lru-cache@11.0.2: {} + lru-cache@11.2.7: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -7411,17 +5917,9 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - magicast@0.2.11: - dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - recast: 0.23.11 - - magicast@0.3.5: + magic-string@0.30.21: dependencies: - '@babel/parser': 7.26.9 - '@babel/types': 7.26.9 - source-map-js: 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.5 markdown-extensions@2.0.0: {} @@ -7627,12 +6125,12 @@ snapshots: mdast@3.0.0: {} + mdn-data@2.27.1: {} + merge-anything@5.1.7: dependencies: is-what: 4.1.16 - merge-stream@2.0.0: {} - merge2@1.4.1: {} micromark-core-commonmark@2.0.2: @@ -7923,52 +6421,12 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 - mime@1.6.0: {} - - mime@3.0.0: {} - - mime@4.0.6: {} - - mimic-fn@4.0.0: {} - minimatch@10.0.1: dependencies: brace-expansion: 2.0.1 - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.1 - - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - - minipass@5.0.0: {} - minipass@7.1.2: {} - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - - minizlib@3.0.1: - dependencies: - minipass: 7.1.2 - rimraf: 5.0.10 - - mkdirp@1.0.4: {} - - mkdirp@3.0.1: {} - mlly@1.7.4: dependencies: acorn: 8.14.0 @@ -7976,82 +6434,33 @@ snapshots: pkg-types: 1.3.1 ufo: 1.5.4 - ms@2.0.0: {} - ms@2.1.3: {} + nanoid@3.3.11: {} + nanoid@3.3.8: {} - nitropack@2.10.4(typescript@5.7.3): - dependencies: - '@cloudflare/kv-asset-handler': 0.3.4 - '@netlify/functions': 2.8.2 - '@rollup/plugin-alias': 5.1.1(rollup@4.34.8) - '@rollup/plugin-commonjs': 28.0.2(rollup@4.34.8) - '@rollup/plugin-inject': 5.0.5(rollup@4.34.8) - '@rollup/plugin-json': 6.1.0(rollup@4.34.8) - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.34.8) - '@rollup/plugin-replace': 6.0.2(rollup@4.34.8) - '@rollup/plugin-terser': 0.4.4(rollup@4.34.8) - '@rollup/pluginutils': 5.1.4(rollup@4.34.8) - '@types/http-proxy': 1.17.16 - '@vercel/nft': 0.27.10(rollup@4.34.8) - archiver: 7.0.1 - c12: 2.0.1(magicast@0.3.5) - chokidar: 3.6.0 - citty: 0.1.6 - compatx: 0.1.8 - confbox: 0.1.8 - consola: 3.4.0 - cookie-es: 1.2.2 - croner: 9.0.0 - crossws: 0.3.4 - db0: 0.2.4 - defu: 6.1.4 - destr: 2.0.3 - dot-prop: 9.0.0 - esbuild: 0.24.2 - escape-string-regexp: 5.0.0 - etag: 1.8.1 - fs-extra: 11.3.0 - globby: 14.1.0 - gzip-size: 7.0.0 - h3: 1.13.0 - hookable: 5.5.3 - httpxy: 0.1.7 - ioredis: 5.5.0 - jiti: 2.4.2 - klona: 2.0.6 - knitwork: 1.2.0 - listhen: 1.9.0 - magic-string: 0.30.19 - magicast: 0.3.5 - mime: 4.0.6 - mlly: 1.7.4 - node-fetch-native: 1.6.6 - ofetch: 1.4.1 - ohash: 1.1.4 - openapi-typescript: 7.6.1(typescript@5.7.3) - pathe: 1.1.2 - perfect-debounce: 1.0.0 - pkg-types: 1.3.1 - pretty-bytes: 6.1.1 - radix3: 1.1.2 - rollup: 4.34.8 - rollup-plugin-visualizer: 5.14.0(rollup@4.34.8) - scule: 1.3.0 - semver: 7.7.1 - serve-placeholder: 2.0.2 - serve-static: 1.16.2 - std-env: 3.8.0 - ufo: 1.5.4 - uncrypto: 0.1.3 - unctx: 2.4.1 - unenv: 1.10.0 - unimport: 3.14.6(rollup@4.34.8) - unstorage: 1.15.0(db0@0.2.4)(ioredis@5.5.0) - untyped: 1.5.2 - unwasm: 0.3.9 + nf3@0.3.11: {} + + nitro@3.0.260311-beta(lru-cache@11.2.7)(rollup@4.59.0)(vite@8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0)): + dependencies: + consola: 3.4.2 + crossws: 0.4.4(srvx@0.11.12) + db0: 0.3.4 + env-runner: 0.1.6 + h3: 2.0.1-rc.16(crossws@0.4.4(srvx@0.11.12)) + hookable: 6.1.0 + nf3: 0.3.11 + ocache: 0.1.2 + ofetch: 2.0.0-alpha.3 + ohash: 2.0.11 + rolldown: 1.0.0-rc.9 + srvx: 0.11.12 + unenv: 2.0.0-rc.24 + unstorage: 2.0.0-alpha.6(db0@0.3.4)(lru-cache@11.2.7)(ofetch@2.0.0-alpha.3) + optionalDependencies: + rollup: 4.59.0 + vite: 8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -8067,77 +6476,36 @@ snapshots: - '@planetscale/database' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - better-sqlite3 + - chokidar - drizzle-orm - - encoding - idb-keyval + - ioredis + - lru-cache + - miniflare + - mongodb - mysql2 - - rolldown - sqlite3 - - supports-color - - typescript - uploadthing - node-addon-api@7.1.1: {} - - node-fetch-native@1.6.6: {} - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-forge@1.3.1: {} - - node-gyp-build@4.8.4: {} - - node-mock-http@1.0.0: {} - node-releases@2.0.19: {} - nopt@8.1.0: - dependencies: - abbrev: 3.0.0 - - normalize-path@3.0.0: {} - - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - nth-check@2.1.1: dependencies: boolbase: 1.0.0 - nypm@0.5.4: - dependencies: - citty: 0.1.6 - consola: 3.4.0 - pathe: 2.0.3 - pkg-types: 1.3.1 - tinyexec: 0.3.2 - ufo: 1.5.4 - - ofetch@1.4.1: - dependencies: - destr: 2.0.3 - node-fetch-native: 1.6.6 - ufo: 1.5.4 - - ohash@1.1.4: {} + obug@2.1.1: {} - on-finished@2.4.1: + ocache@0.1.2: dependencies: - ee-first: 1.1.1 + ohash: 2.0.11 - once@1.4.0: - dependencies: - wrappy: 1.0.2 + ofetch@2.0.0-alpha.3: {} - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 + ohash@2.0.11: {} oniguruma-parser@0.12.1: {} @@ -8153,22 +6521,6 @@ snapshots: regex: 6.0.1 regex-recursion: 6.0.2 - open@8.4.2: - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - - openapi-typescript@7.6.1(typescript@5.7.3): - dependencies: - '@redocly/openapi-core': 1.30.0(supports-color@9.4.0) - ansi-colors: 4.1.3 - change-case: 5.4.4 - parse-json: 8.1.0 - supports-color: 9.4.0 - typescript: 5.7.3 - yargs-parser: 21.1.1 - package-json-from-dist@1.0.1: {} package-manager-detector@0.2.9: {} @@ -8190,54 +6542,37 @@ snapshots: is-decimal: 2.0.1 is-hexadecimal: 2.0.1 - parse-json@8.1.0: - dependencies: - '@babel/code-frame': 7.26.2 - index-to-position: 0.1.2 - type-fest: 4.35.0 - parse-numeric-range@1.3.0: {} parse5@7.2.1: dependencies: entities: 4.5.0 - parseurl@1.3.3: {} - - path-is-absolute@1.0.1: {} + parse5@8.0.0: + dependencies: + entities: 6.0.1 path-key@3.1.1: {} - path-key@4.0.0: {} - path-parse@1.0.7: {} - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - path-scurry@2.0.0: dependencies: lru-cache: 11.0.2 minipass: 7.1.2 - path-to-regexp@6.3.0: {} - - path-type@6.0.0: {} - - pathe@1.1.2: {} + path-to-regexp@8.3.0: {} pathe@2.0.3: {} - perfect-debounce@1.0.0: {} - picocolors@1.1.1: {} picomatch@2.3.1: {} picomatch@4.0.2: {} + picomatch@4.0.3: {} + pioppo@1.2.1: dependencies: dettle: 1.0.5 @@ -8249,8 +6584,6 @@ snapshots: mlly: 1.7.4 pathe: 2.0.3 - pluralize@8.0.0: {} - postcss-nested@6.2.0(postcss@8.5.3): dependencies: postcss: 8.5.3 @@ -8269,16 +6602,16 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.8: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + prettier@4.0.0-alpha.10: dependencies: '@prettier/cli': 0.6.0(prettier@4.0.0-alpha.10) - pretty-bytes@6.1.1: {} - - process-nextick-args@2.0.1: {} - - process@0.11.10: {} - promise-make-counter@1.0.2: dependencies: promise-make-naked: 3.0.2 @@ -8293,57 +6626,12 @@ snapshots: property-information@7.0.0: {} + punycode@2.3.1: {} + queue-microtask@1.2.3: {} radix3@1.1.2: {} - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - range-parser@1.2.1: {} - - rc9@2.1.2: - dependencies: - defu: 6.1.4 - destr: 2.0.3 - - readable-stream@2.3.8: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - - readable-stream@4.7.0: - dependencies: - abort-controller: 3.0.0 - buffer: 6.0.3 - events: 3.3.0 - process: 0.11.10 - string_decoder: 1.3.0 - - readdir-glob@1.1.3: - dependencies: - minimatch: 5.1.6 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - readdirp@4.1.2: {} - - recast@0.23.11: - dependencies: - ast-types: 0.16.1 - esprima: 4.0.1 - source-map: 0.6.1 - tiny-invariant: 1.3.3 - tslib: 2.8.1 - recma-build-jsx@1.0.0: dependencies: '@types/estree': 1.0.6 @@ -8374,12 +6662,6 @@ snapshots: unified: 11.0.5 vfile: 6.0.3 - redis-errors@1.2.0: {} - - redis-parser@3.0.0: - dependencies: - redis-errors: 1.2.0 - regex-recursion@5.1.1: dependencies: regex: 5.1.1 @@ -8408,9 +6690,9 @@ snapshots: unified: 11.0.5 unist-util-visit: 5.0.0 - rehype-expressive-code@0.40.2: + rehype-expressive-code@0.41.7: dependencies: - expressive-code: 0.40.2 + expressive-code: 0.41.7 rehype-raw@7.0.0: dependencies: @@ -8470,6 +6752,13 @@ snapshots: transitivePeerDependencies: - supports-color + remark-mdx@3.1.1: + dependencies: + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + transitivePeerDependencies: + - supports-color + remark-parse@11.0.0: dependencies: '@types/mdast': 4.0.4 @@ -8493,14 +6782,8 @@ snapshots: mdast-util-to-markdown: 2.1.2 unified: 11.0.5 - require-directory@2.1.1: {} - require-from-string@2.0.2: {} - requires-port@1.0.0: {} - - resolve-from@5.0.0: {} - resolve-pkg-maps@1.0.0: {} resolve@1.22.10: @@ -8511,78 +6794,64 @@ snapshots: reusify@1.0.4: {} - rimraf@5.0.10: - dependencies: - glob: 10.4.5 - - rollup-plugin-visualizer@5.14.0(rollup@4.34.8): + rolldown@1.0.0-rc.9: dependencies: - open: 8.4.2 - picomatch: 4.0.2 - source-map: 0.7.6 - yargs: 17.7.2 + '@oxc-project/types': 0.115.0 + '@rolldown/pluginutils': 1.0.0-rc.9 optionalDependencies: - rollup: 4.34.8 - - rollup@4.34.8: - dependencies: - '@types/estree': 1.0.6 + '@rolldown/binding-android-arm64': 1.0.0-rc.9 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.9 + '@rolldown/binding-darwin-x64': 1.0.0-rc.9 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.9 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.9 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.9 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.9 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.9 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.9 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.9 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.9 + + rollup@4.59.0: + dependencies: + '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.34.8 - '@rollup/rollup-android-arm64': 4.34.8 - '@rollup/rollup-darwin-arm64': 4.34.8 - '@rollup/rollup-darwin-x64': 4.34.8 - '@rollup/rollup-freebsd-arm64': 4.34.8 - '@rollup/rollup-freebsd-x64': 4.34.8 - '@rollup/rollup-linux-arm-gnueabihf': 4.34.8 - '@rollup/rollup-linux-arm-musleabihf': 4.34.8 - '@rollup/rollup-linux-arm64-gnu': 4.34.8 - '@rollup/rollup-linux-arm64-musl': 4.34.8 - '@rollup/rollup-linux-loongarch64-gnu': 4.34.8 - '@rollup/rollup-linux-powerpc64le-gnu': 4.34.8 - '@rollup/rollup-linux-riscv64-gnu': 4.34.8 - '@rollup/rollup-linux-s390x-gnu': 4.34.8 - '@rollup/rollup-linux-x64-gnu': 4.34.8 - '@rollup/rollup-linux-x64-musl': 4.34.8 - '@rollup/rollup-win32-arm64-msvc': 4.34.8 - '@rollup/rollup-win32-ia32-msvc': 4.34.8 - '@rollup/rollup-win32-x64-msvc': 4.34.8 + '@rollup/rollup-android-arm-eabi': 4.59.0 + '@rollup/rollup-android-arm64': 4.59.0 + '@rollup/rollup-darwin-arm64': 4.59.0 + '@rollup/rollup-darwin-x64': 4.59.0 + '@rollup/rollup-freebsd-arm64': 4.59.0 + '@rollup/rollup-freebsd-x64': 4.59.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.59.0 + '@rollup/rollup-linux-arm-musleabihf': 4.59.0 + '@rollup/rollup-linux-arm64-gnu': 4.59.0 + '@rollup/rollup-linux-arm64-musl': 4.59.0 + '@rollup/rollup-linux-loong64-gnu': 4.59.0 + '@rollup/rollup-linux-loong64-musl': 4.59.0 + '@rollup/rollup-linux-ppc64-gnu': 4.59.0 + '@rollup/rollup-linux-ppc64-musl': 4.59.0 + '@rollup/rollup-linux-riscv64-gnu': 4.59.0 + '@rollup/rollup-linux-riscv64-musl': 4.59.0 + '@rollup/rollup-linux-s390x-gnu': 4.59.0 + '@rollup/rollup-linux-x64-gnu': 4.59.0 + '@rollup/rollup-linux-x64-musl': 4.59.0 + '@rollup/rollup-openbsd-x64': 4.59.0 + '@rollup/rollup-openharmony-arm64': 4.59.0 + '@rollup/rollup-win32-arm64-msvc': 4.59.0 + '@rollup/rollup-win32-ia32-msvc': 4.59.0 + '@rollup/rollup-win32-x64-gnu': 4.59.0 + '@rollup/rollup-win32-x64-msvc': 4.59.0 fsevents: 2.3.3 - rollup@4.38.0: - dependencies: - '@types/estree': 1.0.7 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.38.0 - '@rollup/rollup-android-arm64': 4.38.0 - '@rollup/rollup-darwin-arm64': 4.38.0 - '@rollup/rollup-darwin-x64': 4.38.0 - '@rollup/rollup-freebsd-arm64': 4.38.0 - '@rollup/rollup-freebsd-x64': 4.38.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.38.0 - '@rollup/rollup-linux-arm-musleabihf': 4.38.0 - '@rollup/rollup-linux-arm64-gnu': 4.38.0 - '@rollup/rollup-linux-arm64-musl': 4.38.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.38.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.38.0 - '@rollup/rollup-linux-riscv64-gnu': 4.38.0 - '@rollup/rollup-linux-riscv64-musl': 4.38.0 - '@rollup/rollup-linux-s390x-gnu': 4.38.0 - '@rollup/rollup-linux-x64-gnu': 4.38.0 - '@rollup/rollup-linux-x64-musl': 4.38.0 - '@rollup/rollup-win32-arm64-msvc': 4.38.0 - '@rollup/rollup-win32-ia32-msvc': 4.38.0 - '@rollup/rollup-win32-x64-msvc': 4.38.0 - fsevents: 2.3.3 + rou3@0.8.1: {} run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - safe-buffer@5.1.2: {} - - safe-buffer@5.2.1: {} - satori-html@0.3.2: dependencies: ultrahtml: 1.6.0 @@ -8601,6 +6870,10 @@ snapshots: postcss-value-parser: 4.2.0 yoga-wasm-web: 0.3.3 + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + scule@1.3.0: {} section-matter@1.0.0: @@ -8610,50 +6883,11 @@ snapshots: semver@6.3.1: {} - semver@7.7.1: {} - - send@0.19.0: - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - seroval-plugins@1.2.1(seroval@1.2.1): - dependencies: - seroval: 1.2.1 - - seroval@1.2.1: {} - - serve-placeholder@2.0.2: - dependencies: - defu: 6.1.4 - - serve-static@1.16.2: + seroval-plugins@1.5.1(seroval@1.5.1): dependencies: - encodeurl: 2.0.0 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.19.0 - transitivePeerDependencies: - - supports-color + seroval: 1.5.1 - setprototypeof@1.2.0: {} + seroval@1.5.1: {} shebang-command@2.0.0: dependencies: @@ -8683,55 +6917,41 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - signal-exit@4.1.0: {} - - slash@5.1.0: {} + siginfo@2.0.0: {} - smob@1.5.0: {} + signal-exit@4.1.0: {} - solid-js@1.9.5: + solid-js@1.9.11: dependencies: csstype: 3.1.3 - seroval: 1.2.1 - seroval-plugins: 1.2.1(seroval@1.2.1) - - solid-mdx@0.0.7(solid-js@1.9.5)(vite@6.1.1(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0)): - dependencies: - solid-js: 1.9.5 - vite: 6.1.1(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0) + seroval: 1.5.1 + seroval-plugins: 1.5.1(seroval@1.5.1) - solid-presence@0.1.8(solid-js@1.9.5): + solid-presence@0.1.8(solid-js@1.9.11): dependencies: - '@corvu/utils': 0.4.2(solid-js@1.9.5) - solid-js: 1.9.5 + '@corvu/utils': 0.4.2(solid-js@1.9.11) + solid-js: 1.9.11 - solid-prevent-scroll@0.1.10(solid-js@1.9.5): + solid-prevent-scroll@0.1.10(solid-js@1.9.11): dependencies: - '@corvu/utils': 0.4.2(solid-js@1.9.5) - solid-js: 1.9.5 + '@corvu/utils': 0.4.2(solid-js@1.9.11) + solid-js: 1.9.11 - solid-refresh@0.6.3(solid-js@1.9.5): + solid-refresh@0.6.3(solid-js@1.9.11): dependencies: - '@babel/generator': 7.27.0 - '@babel/helper-module-imports': 7.25.9 - '@babel/types': 7.27.0 - solid-js: 1.9.5 + '@babel/generator': 7.27.3 + '@babel/helper-module-imports': 7.27.1 + '@babel/types': 7.29.0 + solid-js: 1.9.11 transitivePeerDependencies: - supports-color - solid-use@0.9.1(solid-js@1.9.5): + solid-use@0.9.1(solid-js@1.9.11): dependencies: - solid-js: 1.9.5 + solid-js: 1.9.11 source-map-js@1.2.1: {} - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - source-map@0.7.6: {} space-separated-tokens@2.0.2: {} @@ -8745,23 +6965,16 @@ snapshots: sprintf-js@1.0.3: {} - stackframe@1.3.4: {} + srvx@0.11.12: {} - standard-as-callback@2.1.0: {} + stackback@0.0.2: {} - statuses@2.0.1: {} + stackframe@1.3.4: {} - std-env@3.8.0: {} + std-env@4.0.0: {} stdin-blocker@2.0.1: {} - streamx@2.22.0: - dependencies: - fast-fifo: 1.3.2 - text-decoder: 1.2.3 - optionalDependencies: - bare-events: 2.5.4 - string-escape-regex@1.0.1: {} string-width@4.2.3: @@ -8778,14 +6991,6 @@ snapshots: string.prototype.codepointat@0.2.1: {} - string_decoder@1.1.1: - dependencies: - safe-buffer: 5.1.2 - - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 @@ -8801,12 +7006,6 @@ snapshots: strip-bom-string@1.0.0: {} - strip-final-newline@3.0.0: {} - - strip-literal@2.1.1: - dependencies: - js-tokens: 9.0.1 - strip-literal@3.0.0: dependencies: js-tokens: 9.0.1 @@ -8817,51 +7016,14 @@ snapshots: dependencies: inline-style-parser: 0.2.4 - supports-color@9.4.0: {} - supports-preserve-symlinks-flag@1.0.0: {} - system-architecture@0.1.0: {} - - tar-stream@3.1.7: - dependencies: - b4a: 1.6.7 - fast-fifo: 1.3.2 - streamx: 2.22.0 - - tar@6.2.1: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - - tar@7.4.3: - dependencies: - '@isaacs/fs-minipass': 4.0.1 - chownr: 3.0.0 - minipass: 7.1.2 - minizlib: 3.0.1 - mkdirp: 3.0.1 - yallist: 5.0.0 - - terracotta@1.0.6(solid-js@1.9.5): - dependencies: - solid-js: 1.9.5 - solid-use: 0.9.1(solid-js@1.9.5) - - terser@5.39.0: - dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.14.0 - commander: 2.20.3 - source-map-support: 0.5.21 + symbol-tree@3.2.4: {} - text-decoder@1.2.3: + terracotta@1.1.0(solid-js@1.9.11): dependencies: - b4a: 1.6.7 + solid-js: 1.9.11 + solid-use: 0.9.1(solid-js@1.9.11) tiny-bin@1.11.0: dependencies: @@ -8923,22 +7085,38 @@ snapshots: tiny-colors: 2.2.2 when-exit: 2.1.4 + tinybench@2.9.0: {} + tinyexec@0.3.2: {} - tinyglobby@0.2.12: + tinyexec@1.0.4: {} + + tinyglobby@0.2.15: dependencies: - fdir: 6.4.3(picomatch@4.0.2) - picomatch: 4.0.2 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + + tinyrainbow@3.1.0: {} + + tldts-core@7.0.26: {} + + tldts@7.0.26: + dependencies: + tldts-core: 7.0.26 to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - toidentifier@1.0.1: {} - toml@3.0.0: {} - tr46@0.0.3: {} + tough-cookie@6.0.1: + dependencies: + tldts: 7.0.26 + + tr46@6.0.0: + dependencies: + punycode: 2.3.1 trim-lines@3.0.1: {} @@ -8963,44 +7141,25 @@ snapshots: transitivePeerDependencies: - supports-color - type-fest@2.19.0: {} - - type-fest@4.35.0: {} - typescript@5.7.3: {} ufo@1.5.4: {} ultrahtml@1.6.0: {} - uncrypto@0.1.3: {} - - unctx@2.4.1: - dependencies: - acorn: 8.14.0 - estree-walker: 3.0.3 - magic-string: 0.30.19 - unplugin: 2.2.0 - - undici-types@5.28.4: {} - undici-types@6.20.0: {} - unenv@1.10.0: + undici@7.24.4: {} + + unenv@2.0.0-rc.24: dependencies: - consola: 3.4.0 - defu: 6.1.4 - mime: 3.0.0 - node-fetch-native: 1.6.6 - pathe: 1.1.2 + pathe: 2.0.3 unicode-trie@2.0.0: dependencies: pako: 0.2.9 tiny-inflate: 1.0.3 - unicorn-magic@0.3.0: {} - unified@11.0.5: dependencies: '@types/unist': 3.0.3 @@ -9011,25 +7170,6 @@ snapshots: trough: 2.2.0 vfile: 6.0.3 - unimport@3.14.6(rollup@4.34.8): - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.34.8) - acorn: 8.14.0 - escape-string-regexp: 5.0.0 - estree-walker: 3.0.3 - fast-glob: 3.3.3 - local-pkg: 1.0.0 - magic-string: 0.30.19 - mlly: 1.7.4 - pathe: 2.0.3 - picomatch: 4.0.2 - pkg-types: 1.3.1 - scule: 1.3.0 - strip-literal: 2.1.1 - unplugin: 1.16.1 - transitivePeerDependencies: - - rollup - unimport@4.1.2: dependencies: acorn: 8.14.0 @@ -9039,11 +7179,11 @@ snapshots: magic-string: 0.30.19 mlly: 1.7.4 pathe: 2.0.3 - picomatch: 4.0.2 + picomatch: 4.0.3 pkg-types: 1.3.1 scule: 1.3.0 strip-literal: 3.0.0 - tinyglobby: 0.2.12 + tinyglobby: 0.2.15 unplugin: 2.3.5 unplugin-utils: 0.2.4 @@ -9097,8 +7237,6 @@ snapshots: universal-user-agent@7.0.2: {} - universalify@2.0.1: {} - unplugin-auto-import@19.1.0: dependencies: local-pkg: 1.0.0 @@ -9121,12 +7259,7 @@ snapshots: unplugin-utils@0.2.4: dependencies: pathe: 2.0.3 - picomatch: 4.0.2 - - unplugin@1.16.1: - dependencies: - acorn: 8.14.1 - webpack-virtual-modules: 0.6.2 + picomatch: 4.0.3 unplugin@2.2.0: dependencies: @@ -9139,53 +7272,11 @@ snapshots: picomatch: 4.0.2 webpack-virtual-modules: 0.6.2 - unstorage@1.15.0(db0@0.2.4)(ioredis@5.5.0): - dependencies: - anymatch: 3.1.3 - chokidar: 4.0.3 - destr: 2.0.3 - h3: 1.15.1 - lru-cache: 10.4.3 - node-fetch-native: 1.6.6 - ofetch: 1.4.1 - ufo: 1.5.4 + unstorage@2.0.0-alpha.6(db0@0.3.4)(lru-cache@11.2.7)(ofetch@2.0.0-alpha.3): optionalDependencies: - db0: 0.2.4 - ioredis: 5.5.0 - - untun@0.1.3: - dependencies: - citty: 0.1.6 - consola: 3.4.0 - pathe: 1.1.2 - - untyped@1.5.2: - dependencies: - '@babel/core': 7.27.3 - '@babel/standalone': 7.26.9 - '@babel/types': 7.26.9 - citty: 0.1.6 - defu: 6.1.4 - jiti: 2.4.2 - knitwork: 1.2.0 - scule: 1.3.0 - transitivePeerDependencies: - - supports-color - - unwasm@0.3.9: - dependencies: - knitwork: 1.2.0 - magic-string: 0.30.19 - mlly: 1.7.4 - pathe: 1.1.2 - pkg-types: 1.3.1 - unplugin: 1.16.1 - - update-browserslist-db@1.1.2(browserslist@4.24.4): - dependencies: - browserslist: 4.24.4 - escalade: 3.2.0 - picocolors: 1.1.1 + db0: 0.3.4 + lru-cache: 11.2.7 + ofetch: 2.0.0-alpha.3 update-browserslist-db@1.1.3(browserslist@4.25.0): dependencies: @@ -9193,12 +7284,6 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 - uqr@0.1.2: {} - - uri-js-replace@1.0.1: {} - - urlpattern-polyfill@8.0.2: {} - util-deprecate@1.0.2: {} validate-html-nesting@1.2.2: {} @@ -9218,159 +7303,121 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vinxi@0.5.3(@types/node@22.13.5)(db0@0.2.4)(ioredis@5.5.0)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)(yaml@2.8.0): - dependencies: - '@babel/core': 7.26.9 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.9) - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.9) - '@types/micromatch': 4.0.9 - '@vinxi/listhen': 1.5.6 - boxen: 7.1.1 - chokidar: 3.6.0 - citty: 0.1.6 - consola: 3.4.0 - crossws: 0.3.4 - dax-sh: 0.39.2 - defu: 6.1.4 - es-module-lexer: 1.6.0 - esbuild: 0.20.2 - fast-glob: 3.3.3 - get-port-please: 3.1.2 - h3: 1.13.0 - hookable: 5.5.3 - http-proxy: 1.18.1 - micromatch: 4.0.8 - nitropack: 2.10.4(typescript@5.7.3) - node-fetch-native: 1.6.6 - path-to-regexp: 6.3.0 - pathe: 1.1.2 - radix3: 1.1.2 - resolve: 1.22.10 - serve-placeholder: 2.0.2 - serve-static: 1.16.2 - ufo: 1.5.4 - unctx: 2.4.1 - unenv: 1.10.0 - unstorage: 1.15.0(db0@0.2.4)(ioredis@5.5.0) - vite: 6.1.1(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0) - zod: 3.24.2 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@electric-sql/pglite' - - '@libsql/client' - - '@netlify/blobs' - - '@planetscale/database' - - '@types/node' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - better-sqlite3 - - db0 - - debug - - drizzle-orm - - encoding - - idb-keyval - - ioredis - - jiti - - less - - lightningcss - - mysql2 - - rolldown - - sass - - sass-embedded - - sqlite3 - - stylus - - sugarss - - supports-color - - terser - - tsx - - typescript - - uploadthing - - xml2js - - yaml - vite-plugin-arraybuffer@0.0.8: {} - vite-plugin-solid@2.11.6(solid-js@1.9.5)(vite@6.1.1(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0)): + vite-plugin-solid@2.11.11(solid-js@1.9.11)(vite@8.0.0(@types/node@22.13.5)(esbuild@0.25.2)(tsx@4.19.3)(yaml@2.8.0)): dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.29.0 '@types/babel__core': 7.20.5 - babel-preset-solid: 1.9.5(@babel/core@7.26.10) + babel-preset-solid: 1.9.5(@babel/core@7.29.0) merge-anything: 5.1.7 - solid-js: 1.9.5 - solid-refresh: 0.6.3(solid-js@1.9.5) - vite: 6.1.1(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0) - vitefu: 1.0.6(vite@6.1.1(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0)) + solid-js: 1.9.11 + solid-refresh: 0.6.3(solid-js@1.9.11) + vite: 8.0.0(@types/node@22.13.5)(esbuild@0.25.2)(tsx@4.19.3)(yaml@2.8.0) + vitefu: 1.0.6(vite@8.0.0(@types/node@22.13.5)(esbuild@0.25.2)(tsx@4.19.3)(yaml@2.8.0)) transitivePeerDependencies: - supports-color - vite-plugin-solid@2.11.6(solid-js@1.9.5)(vite@6.1.2(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0)): + vite-plugin-solid@2.11.11(solid-js@1.9.11)(vite@8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0)): dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.29.0 '@types/babel__core': 7.20.5 - babel-preset-solid: 1.9.5(@babel/core@7.26.10) + babel-preset-solid: 1.9.5(@babel/core@7.29.0) merge-anything: 5.1.7 - solid-js: 1.9.5 - solid-refresh: 0.6.3(solid-js@1.9.5) - vite: 6.1.2(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0) - vitefu: 1.0.6(vite@6.1.2(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0)) + solid-js: 1.9.11 + solid-refresh: 0.6.3(solid-js@1.9.11) + vite: 8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0) + vitefu: 1.0.6(vite@8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0)) transitivePeerDependencies: - supports-color - vite@6.1.1(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0): + vite@8.0.0(@types/node@22.13.5)(esbuild@0.25.2)(tsx@4.19.3)(yaml@2.8.0): dependencies: - esbuild: 0.24.2 - postcss: 8.5.3 - rollup: 4.34.8 + '@oxc-project/runtime': 0.115.0 + lightningcss: 1.32.0 + picomatch: 4.0.3 + postcss: 8.5.8 + rolldown: 1.0.0-rc.9 + tinyglobby: 0.2.15 optionalDependencies: '@types/node': 22.13.5 + esbuild: 0.25.2 fsevents: 2.3.3 - jiti: 2.4.2 - terser: 5.39.0 tsx: 4.19.3 yaml: 2.8.0 - vite@6.1.2(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0): + vite@8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0): dependencies: - esbuild: 0.24.2 - postcss: 8.5.3 - rollup: 4.38.0 + '@oxc-project/runtime': 0.115.0 + lightningcss: 1.32.0 + picomatch: 4.0.3 + postcss: 8.5.8 + rolldown: 1.0.0-rc.9 + tinyglobby: 0.2.15 optionalDependencies: '@types/node': 22.13.5 + esbuild: 0.27.4 fsevents: 2.3.3 - jiti: 2.4.2 - terser: 5.39.0 tsx: 4.19.3 yaml: 2.8.0 - vitefu@1.0.6(vite@6.1.1(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0)): + vitefu@1.0.6(vite@8.0.0(@types/node@22.13.5)(esbuild@0.25.2)(tsx@4.19.3)(yaml@2.8.0)): optionalDependencies: - vite: 6.1.1(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0) + vite: 8.0.0(@types/node@22.13.5)(esbuild@0.25.2)(tsx@4.19.3)(yaml@2.8.0) - vitefu@1.0.6(vite@6.1.2(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0)): + vitefu@1.0.6(vite@8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0)): + optionalDependencies: + vite: 8.0.0(@types/node@22.13.5)(esbuild@0.27.4)(tsx@4.19.3)(yaml@2.8.0) + + vitest@4.1.0(@types/node@22.13.5)(jsdom@29.0.0)(vite@8.0.0(@types/node@22.13.5)(esbuild@0.25.2)(tsx@4.19.3)(yaml@2.8.0)): + dependencies: + '@vitest/expect': 4.1.0 + '@vitest/mocker': 4.1.0(vite@8.0.0(@types/node@22.13.5)(esbuild@0.25.2)(tsx@4.19.3)(yaml@2.8.0)) + '@vitest/pretty-format': 4.1.0 + '@vitest/runner': 4.1.0 + '@vitest/snapshot': 4.1.0 + '@vitest/spy': 4.1.0 + '@vitest/utils': 4.1.0 + es-module-lexer: 2.0.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 4.0.0 + tinybench: 2.9.0 + tinyexec: 1.0.4 + tinyglobby: 0.2.15 + tinyrainbow: 3.1.0 + vite: 8.0.0(@types/node@22.13.5)(esbuild@0.25.2)(tsx@4.19.3)(yaml@2.8.0) + why-is-node-running: 2.3.0 optionalDependencies: - vite: 6.1.2(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.0) + '@types/node': 22.13.5 + jsdom: 29.0.0 + transitivePeerDependencies: + - msw + + w3c-xmlserializer@5.0.0: + dependencies: + xml-name-validator: 5.0.0 web-namespaces@2.0.1: {} - webidl-conversions@3.0.1: {} + webidl-conversions@8.0.1: {} webpack-virtual-modules@0.6.2: {} webworker-shim@1.1.1: {} - whatwg-url@5.0.0: + whatwg-mimetype@5.0.0: {} + + whatwg-url@16.0.1: dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 + '@exodus/bytes': 1.15.0 + tr46: 6.0.0 + webidl-conversions: 8.0.1 + transitivePeerDependencies: + - '@noble/hashes' when-exit@2.1.4: {} @@ -9378,13 +7425,10 @@ snapshots: dependencies: isexe: 2.0.0 - which@4.0.0: - dependencies: - isexe: 3.1.1 - - widest-line@4.0.1: + why-is-node-running@2.3.0: dependencies: - string-width: 5.1.2 + siginfo: 2.0.0 + stackback: 0.0.2 worktank@2.7.3: dependencies: @@ -9403,32 +7447,14 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.1.0 - wrappy@1.0.2: {} + xml-name-validator@5.0.0: {} - y18n@5.0.8: {} + xmlchars@2.2.0: {} yallist@3.1.1: {} - yallist@4.0.0: {} - - yallist@5.0.0: {} - - yaml-ast-parser@0.0.43: {} - yaml@2.8.0: {} - yargs-parser@21.1.1: {} - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - yoga-wasm-web@0.3.3: {} zeptomatch-escape@1.0.0: {} @@ -9447,12 +7473,4 @@ snapshots: dependencies: grammex: 3.1.10 - zip-stream@6.0.1: - dependencies: - archiver-utils: 5.0.2 - compress-commons: 6.0.2 - readable-stream: 4.7.0 - - zod@3.24.2: {} - zwitch@2.0.4: {} diff --git a/scripts/build.js b/scripts/build.js index 627f4d93..d43be6a8 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -1,8 +1,10 @@ import * as fs from "node:fs/promises"; +import { glob } from "node:fs/promises"; import * as path from "node:path"; -import { glob } from "glob"; -const files = await glob("**/*.{js,css}", { cwd: `${process.cwd()}/src` }); +const files = await Array.fromAsync( + glob("**/*.{js,css}", { cwd: `${process.cwd()}/src` }), +); await Promise.all( files.map((file) => diff --git a/scripts/release.ts b/scripts/release.ts index 3363c3ba..4ef2609b 100644 --- a/scripts/release.ts +++ b/scripts/release.ts @@ -3,11 +3,11 @@ import { Octokit } from "@octokit/core"; if (!execSync("git --version").includes("git version")) { console.error("Git not installed"); - // @ts-ignore + // @ts-expect-error process.exit(1); } -// @ts-ignore +// @ts-expect-error const DRY_RUN = !process.env.GITHUB_ACTIONS; if (DRY_RUN) console.log("DRY RUN\n"); @@ -105,7 +105,7 @@ console.log(`Creating tag v${nextVersion} for hash ${currentHash}`); if (!DRY_RUN) { const octokit = new Octokit({ - // @ts-ignore + // @ts-expect-error auth: process.env.GITHUB_TOKEN, }); diff --git a/src/client/Root.tsx b/src/client/Root.tsx index 61e89010..4d742c56 100644 --- a/src/client/Root.tsx +++ b/src/client/Root.tsx @@ -1,10 +1,14 @@ import { Layout, mdxComponents } from "virtual:solidbase/components"; +// Doing this instead of importing '../mdx.js' is annoying but necessary: +// MDX files import from `@kobalte/solidbase/mdx`, and this file would otherwise import +// from `../mdx.js`. Even though these both point to the same file, Vite treats them +// as different modules, resulting in this file getting its own MDXContext (id `file://.../mdx.js), +// and the MDX files sharing another (id `@kobalte/solidbase/mdx`). +import { MDXProvider } from "virtual:solidbase/mdx"; import { Meta, MetaProvider, Title } from "@solidjs/meta"; -import { type ParentProps, Suspense, createMemo, onMount } from "solid-js"; -import { MDXProvider } from "solid-mdx"; - -import { useRouteSolidBaseConfig } from "./config"; -import { SolidBaseContext } from "./context"; +import { createMemo, onMount, type ParentProps, Suspense } from "solid-js"; +import { useRouteSolidBaseConfig } from "./config.js"; +import { SolidBaseContext } from "./context.jsx"; export function SolidBaseRoot( props: ParentProps & { @@ -38,14 +42,14 @@ export function SolidBaseRoot( (props.meta?.provider ?? true) ? ( {base()} ) : ( - <>{base()} + base() ); return <>{withMeta()}; } -import { LocaleContextProvider } from "./locale"; -import { CurrentPageDataProvider, useCurrentPageData } from "./page-data"; +import { LocaleContextProvider } from "./locale.js"; +import { CurrentPageDataProvider, useCurrentPageData } from "./page-data.js"; export function Inner(props: ParentProps) { const config = useRouteSolidBaseConfig(); diff --git a/src/client/config.ts b/src/client/config.ts index 11301af7..9c86d068 100644 --- a/src/client/config.ts +++ b/src/client/config.ts @@ -1,8 +1,8 @@ import { solidBaseConfig } from "virtual:solidbase/config"; import { type Accessor, createMemo } from "solid-js"; -import type { SolidBaseResolvedConfig } from "../config"; -import { useLocale } from "./locale"; +import type { SolidBaseResolvedConfig } from "../config/index.js"; +import { useLocale } from "./locale.js"; export function useRouteSolidBaseConfig(): Accessor< SolidBaseResolvedConfig diff --git a/src/client/context.tsx b/src/client/context.tsx index 58c67472..1ab719d2 100644 --- a/src/client/context.tsx +++ b/src/client/context.tsx @@ -1,6 +1,6 @@ import { type Accessor, createContext, useContext } from "solid-js"; -import type { SolidBaseResolvedConfig } from "../config"; +import type { SolidBaseResolvedConfig } from "../config/index.js"; export interface SolidBaseContextValue { config: Accessor>; diff --git a/src/client/index.tsx b/src/client/index.tsx index 35aa20e4..f8cfab7b 100644 --- a/src/client/index.tsx +++ b/src/client/index.tsx @@ -1,28 +1,26 @@ -export { - getTheme, - setTheme, - getThemeVariant, - useThemeListener, - type ThemeType, -} from "./theme"; +export { mdxComponents } from "virtual:solidbase/components"; +export { useRouteSolidBaseConfig } from "./config.js"; +export { useSolidBaseContext } from "./context.jsx"; export { getLocale, - useLocale, getLocaleLink, type ResolvedLocale, -} from "./locale"; -export { usePreferredLanguage } from "./preferred-language"; -export { SolidBaseRoot } from "./Root"; + useLocale, +} from "./locale.js"; export { - useCurrentPageData, - useFrontmatter, type BaseFrontmatter, type TableOfContentsItemData, -} from "./page-data"; -export { useSolidBaseContext } from "./context"; -export { useRouteSolidBaseConfig } from "./config"; - -export { SidebarProvider, useSidebar, usePrevNext } from "./sidebar"; -export type * from "./sidebar"; - -export { mdxComponents } from "virtual:solidbase/components"; + useCurrentPageData, + useFrontmatter, +} from "./page-data.js"; +export { usePreferredLanguage } from "./preferred-language.js"; +export { SolidBaseRoot } from "./Root.jsx"; +export type * from "./sidebar.js"; +export { SidebarProvider, usePrevNext, useSidebar } from "./sidebar.js"; +export { + getTheme, + getThemeVariant, + setTheme, + type ThemeType, + useThemeListener, +} from "./theme.js"; diff --git a/src/client/locale.ts b/src/client/locale.ts index ac278f89..9db149fe 100644 --- a/src/client/locale.ts +++ b/src/client/locale.ts @@ -4,7 +4,7 @@ import { useLocation, useMatch, useNavigate } from "@solidjs/router"; import { createMemo, startTransition } from "solid-js"; import { getRequestEvent, isServer } from "solid-js/web"; -import type { LocaleConfig } from "../config"; +import type { LocaleConfig } from "../config/index.js"; export const DEFAULT_LANG_CODE = "en-US"; export const DEFAULT_LANG_LABEL = "English"; @@ -80,11 +80,13 @@ const [LocaleContextProvider, useLocaleContext] = createContextProvider(() => { let path = _path; const link = getLocaleLink(currentLocale()); - if (link === "/") - return path.startsWith("/") ? path : (`/${path}` as any); + if (link === "/") { + const normalizedPath = path.startsWith("/") ? path : `/${path}`; + return normalizedPath as `/${string}`; + } if (path.startsWith("/")) path = path.slice(1); - return `${link}${path}`; + return `${link}${path}` as `/${string}`; }, routePath: () => { const rest = match()?.params.rest; diff --git a/src/client/page-data.ts b/src/client/page-data.ts index 8692c356..425d4b0e 100644 --- a/src/client/page-data.ts +++ b/src/client/page-data.ts @@ -2,6 +2,12 @@ import { createContextProvider } from "@solid-primitives/context"; import { useCurrentMatches } from "@solidjs/router"; import { createResource } from "solid-js"; +function getWindowPageData(path?: string) { + if (typeof window === "undefined" || !path) return; + + return (window as any).$$SolidBase_page_data?.[path.split("?")[0]!]; +} + export interface TableOfContentsItemData { title: string; href: string; @@ -12,6 +18,7 @@ export interface BaseFrontmatter { title?: string; titleTemplate?: string; description?: string; + llms?: { exclude?: boolean }; } interface CurrentPageData { @@ -32,35 +39,17 @@ const [CurrentPageDataProvider, useCurrentPageDataContext] = // if there's no matches that's not an us problem if (!lastMatch) return; - const { $component } = lastMatch.route.key as { $component: any }; - - let mod: any; - - // modelled after Start's lazyRoute - // https://github.com/solidjs/solid-start/blob/main/packages/start/src/router/lazyRoute.ts - if (import.meta.env.DEV) { - if ( - typeof window !== "undefined" && - // @ts-ignore - typeof window.$$SolidBase_page_data !== "undefined" && - // @ts-ignore - typeof window.$$SolidBase_page_data[ - $component.src.split("?")[0] - ] !== "undefined" - ) { - const pageData = (window as Record) - .$$SolidBase_page_data[$component.src.split("?")[0]]; - if (!pageData) - throw new Error("Failed to get page data: no page data"); - return pageData; - } - - const manifest = import.meta.env.SSR - ? import.meta.env.MANIFEST.ssr - : import.meta.env.MANIFEST.client; - - mod = await manifest.inputs[$component.src]?.import(); - } else mod = await $component.import(); + const { $component } = lastMatch.route.key as { + $component: { import?: () => Promise; src?: string }; + }; + const windowPageData = getWindowPageData($component?.src); + + if (windowPageData) return windowPageData; + + const mod = + typeof $component?.import === "function" + ? await $component.import() + : undefined; if (!mod) throw new Error("Failed to get page data: module not found"); return mod.$$SolidBase_page_data; diff --git a/src/client/preferred-language.ts b/src/client/preferred-language.ts index 430b9b34..e1159638 100644 --- a/src/client/preferred-language.ts +++ b/src/client/preferred-language.ts @@ -48,6 +48,7 @@ export function usePreferredLanguage() { "data-preferred-language", preferredLanguageStr, ); + // biome-ignore lint/suspicious/noDocumentCookie: remove next major document.cookie = `${COOKIE_NAME}=${preferredLanguageStr}; max-age=31536000; path=/`; const toggles = document.querySelectorAll( diff --git a/src/client/sidebar.ts b/src/client/sidebar.ts index a3339c47..62dddea5 100644 --- a/src/client/sidebar.ts +++ b/src/client/sidebar.ts @@ -6,10 +6,10 @@ import type { SidebarConfig, SidebarItem, SidebarItemLink, -} from "../config/sidebar"; -import { useLocale } from "./locale"; +} from "../config/sidebar.js"; +import { useLocale } from "./locale.js"; -export type * from "../config/sidebar"; +export type * from "../config/sidebar.js"; const [SidebarProvider, useSidebarRaw] = createContextProvider( (props: { config?: SidebarConfig }) => { @@ -74,17 +74,20 @@ function flattenSidebarItems( depth = 0, ): Array { return sidebar.items.flatMap((item) => { - if ("link" in item) + if ("link" in item) { + const isExternal = item.link.includes("//"); + return { target: (() => { - if (item.link.includes("//")) return "_blank"; + if (isExternal) return "_blank"; })(), rel: (() => { - if (item.link.includes("//") || item.target === "_blank") + if (isExternal || item.target === "_blank") return "noopener noreferrer"; })(), ...item, link: (() => { + if (isExternal) return item.link; if (sidebar.prefix === "/") return item.link; if (item.link.endsWith("/")) @@ -93,6 +96,7 @@ function flattenSidebarItems( })(), depth, }; + } return flattenSidebarItems( { prefix: sidebar.prefix + (item.base ?? ""), items: item.items }, diff --git a/src/client/theme.ts b/src/client/theme.ts index ad0abfad..ef8105e5 100644 --- a/src/client/theme.ts +++ b/src/client/theme.ts @@ -60,6 +60,7 @@ import readThemeCookieScript from "./read-theme-cookie.js?raw"; export function useThemeListener() { createEffect(() => { document.documentElement.setAttribute("data-theme", getRawTheme()); + // biome-ignore lint/suspicious/noDocumentCookie: remove next major document.cookie = `theme=${getRawTheme()}; max-age=31536000; path=/`; }); diff --git a/src/config/document-markdown.ts b/src/config/document-markdown.ts new file mode 100644 index 00000000..48fb7efe --- /dev/null +++ b/src/config/document-markdown.ts @@ -0,0 +1,135 @@ +import remarkMdx from "remark-mdx"; +import remarkParse from "remark-parse"; +import remarkStringify from "remark-stringify"; +import { unified } from "unified"; +import { SKIP, visit } from "unist-util-visit"; +import { VFile } from "vfile"; + +import type { RemarkPipelineConfig } from "./mdx.js"; +import { getRemarkPlugins } from "./mdx.js"; +import { + evaluateInlineFrontmatterExpression, + isInlineFrontmatterExpression, + remarkInlineFrontmatter, +} from "./remark-plugins/inline-frontmatter.js"; + +type DocumentMarkdownOptions = { + config?: RemarkPipelineConfig; + filePath?: string; +}; + +function renderExpressionValue(value: unknown): string | null { + if (value === null || value === undefined || typeof value === "boolean") { + return ""; + } + + if ( + typeof value === "string" || + typeof value === "number" || + typeof value === "bigint" + ) { + return String(value); + } + + if (Array.isArray(value)) { + return value + .map((entry) => renderExpressionValue(entry)) + .filter((entry): entry is string => entry !== null) + .join(""); + } + + return null; +} + +function remarkDocumentInlineFrontmatter() { + return (tree: any) => { + visit(tree, (node, index, parent) => { + if ( + (node.type !== "mdxTextExpression" && + node.type !== "mdxFlowExpression") || + index === undefined || + parent === undefined || + !isInlineFrontmatterExpression(node.value) + ) { + return; + } + + let value: unknown; + try { + value = evaluateInlineFrontmatterExpression( + tree.data.frontmatter, + node.value, + ); + } catch { + return; + } + + const text = renderExpressionValue(value); + if (text === null) return; + + if (node.type === "mdxTextExpression") { + parent.children.splice(index, 1, { + type: "text", + value: text, + }); + return [SKIP, index]; + } + + if (text === "") { + parent.children.splice(index, 1); + return [SKIP, index]; + } + + parent.children.splice(index, 1, { + type: "paragraph", + children: [{ type: "text", value: text }], + }); + return [SKIP, index]; + }); + }; +} + +function remarkStripDocumentMetadata() { + return (tree: any) => { + visit(tree, (node, index, parent) => { + if ( + index === undefined || + parent === undefined || + (node.type !== "yaml" && + node.type !== "toml" && + node.type !== "mdxjsEsm") + ) { + return; + } + + parent.children.splice(index, 1); + return [SKIP, index]; + }); + }; +} + +function getDocumentRemarkPlugins(config: RemarkPipelineConfig = {}) { + return getRemarkPlugins(config).map((plugin) => + plugin === remarkInlineFrontmatter + ? remarkDocumentInlineFrontmatter + : plugin, + ); +} + +export async function toDocumentMarkdown( + source: string, + options: DocumentMarkdownOptions = {}, +) { + const processor = unified() + .use(remarkParse) + .use(remarkMdx) + .use(getDocumentRemarkPlugins(options.config)) + .use(remarkStripDocumentMetadata) + .use(remarkStringify); + + const file = await processor.process( + new VFile({ path: options.filePath, value: source }), + ); + + return String(file).trim(); +} diff --git a/src/config/ec-plugins/language-switcher/index.ts b/src/config/ec-plugins/language-switcher/index.ts index c659823f..57fa77a8 100644 --- a/src/config/ec-plugins/language-switcher/index.ts +++ b/src/config/ec-plugins/language-switcher/index.ts @@ -1,14 +1,14 @@ import { + definePlugin, ExpressiveCodeBlock, ExpressiveCodeEngine, MetaOptions, - definePlugin, } from "@expressive-code/core"; import { - type Element, - SKIP, addClassName, + type Element, h, + SKIP, visit, } from "expressive-code/hast"; import rangeParser from "parse-numeric-range"; @@ -178,7 +178,8 @@ export function ecPluginLanguageSwitcher(options: LanguageSwitcherOptions) { const engine = new ExpressiveCodeEngine({ ...config, - plugins: config.plugins.filter((v) => v.name !== "Language switcher"), + plugins: + config.plugins.filter((v) => v.name !== "Language switcher") ?? [], }); const jsBlock = new ExpressiveCodeBlock({ diff --git a/src/config/index.ts b/src/config/index.ts index 53d5da40..f256175b 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -1,8 +1,4 @@ -import { dirname, parse } from "node:path"; -import type { - SolidStartInlineConfig, - ViteCustomizableConfig, -} from "@solidjs/start/config"; +import type { SolidStartOptions } from "@solidjs/start/config"; import type { Options as AutoImportOptions } from "unplugin-auto-import/dist/types.js"; import type { ComponentResolverOption } from "unplugin-icons/resolver"; import type { Options as IconsOptions } from "unplugin-icons/types"; @@ -17,6 +13,7 @@ export interface SolidBaseConfig { title?: string; titleTemplate?: string; description?: string; + llms?: boolean; logo?: string; issueAutolink?: IssueAutoLinkConfig | false; lang?: string; @@ -35,6 +32,7 @@ export interface SolidBaseConfig { type ResolvedConfigKeys = | "title" | "description" + | "llms" | "lang" | "issueAutolink" | "lastUpdated"; @@ -59,80 +57,61 @@ export type ThemeDefinition = { vite?(config: SolidBaseResolvedConfig): PluginOption | undefined; }; -export const withSolidBase = createWithSolidBase(defaultTheme); +export const solidBase = createSolidBase(defaultTheme); -export function createWithSolidBase( +export function createSolidBase( theme: ThemeDefinition, ) { - if (parse(theme.componentsPath).ext !== "") { - theme.componentsPath = dirname(theme.componentsPath); - } - - return ( - startConfig?: SolidStartInlineConfig, + const plugin = ( solidBaseConfig?: SolidBaseConfig, - ) => { - const config = startConfig ?? {}; - - process.env.PORT ??= "4000"; - - config.extensions = [ - ...new Set((config.extensions ?? []).concat(["md", "mdx"])), - ]; - config.server ??= {}; - config.server.prerender ??= { - crawlLinks: true, - }; - + ): PluginOption => { const sbConfig: SolidBaseResolvedConfig = { title: "SolidBase", description: "Fully featured, fully customisable static site generation for SolidStart", + llms: false, lang: "en-US", issueAutolink: false, lastUpdated: { dateStyle: "short", timeStyle: "short" }, ...solidBaseConfig, }; - let t: ThemeDefinition | undefined = theme; - while (t !== undefined) { - if (t.config) t.config(sbConfig); - t = t.extends; - } - - const vite = config.vite; - - config.vite = (options) => { - const viteConfig = - typeof vite === "function" - ? vite(options) - : { ...(vite ?? ({} as ViteCustomizableConfig)) }; - - ((viteConfig.optimizeDeps ??= {}).exclude ??= []).push("fsevents"); - - viteConfig.plugins = [...(viteConfig.plugins ?? [])]; - viteConfig.plugins.push(solidBaseMdx(sbConfig)); - viteConfig.plugins.push(solidBaseVitePlugin(theme, sbConfig)); - + { let t: ThemeDefinition | undefined = theme; - const plugins: Array = []; while (t !== undefined) { - if (t.vite) { - const contents = t.vite(sbConfig); - if (contents) plugins.push(contents); - } - + if (t.config) t.config(sbConfig); t = t.extends; } - plugins.reverse(); + } - viteConfig.plugins.push(...plugins); + let t: ThemeDefinition | undefined = theme; + const plugins: Array = []; + while (t !== undefined) { + if (t.vite) { + const contents = t.vite(sbConfig); + if (contents) plugins.push(contents); + } - return viteConfig; - }; + t = t.extends; + } + plugins.reverse(); + + return [ + solidBaseMdx(sbConfig), + solidBaseVitePlugin(theme, sbConfig), + ...plugins, + ]; + }; + const startConfig = (config: SolidStartOptions = {}) => { + config.ssr ??= true; + config.extensions = [ + ...new Set((config.extensions ?? []).concat(["md", "mdx"])), + ]; return config; }; + + return { plugin, startConfig }; } export function defineTheme(def: ThemeDefinition) { diff --git a/src/config/llms-index.ts b/src/config/llms-index.ts new file mode 100644 index 00000000..0537a940 --- /dev/null +++ b/src/config/llms-index.ts @@ -0,0 +1,339 @@ +import { readdir, readFile } from "node:fs/promises"; +import { extname, join, relative } from "node:path"; + +import matter from "gray-matter"; + +import { toDocumentMarkdown } from "./document-markdown.js"; +import type { SolidBaseResolvedConfig } from "./index.js"; +import type { SidebarConfig } from "./sidebar.js"; + +const MARKDOWN_EXTENSIONS = new Set([".md", ".mdx"]); + +type LlmFrontmatter = { + title?: string; + description?: string; + llms?: false | { exclude?: boolean }; +}; + +type SidebarItem = { + title: string; + link?: string; + items?: SidebarItem[]; +}; + +type NavItem = { + text: string; + link?: string; +}; + +export type LlmDocument = { + title: string; + description?: string; + routePath: string; + markdownPath: string; + content: string; +}; + +function getRoutesDir(root: string) { + return join(root, "src/routes"); +} + +function isExcluded(frontmatter: LlmFrontmatter) { + return frontmatter.llms === false || frontmatter.llms?.exclude === true; +} + +function isNotFoundRoute(routesDir: string, filePath: string) { + const relativePath = relative(routesDir, filePath).replace(/\\/g, "/"); + return relativePath + .split("/") + .some((segment) => segment.startsWith("[...404].")); +} + +function stripOrderingSegment(segment: string) { + return segment.replace(/^\(\d+\)/, ""); +} + +async function collectMarkdownFiles(dir: string): Promise { + const entries = await readdir(dir, { withFileTypes: true }); + const files = await Promise.all( + entries.map(async (entry) => { + const fullPath = join(dir, entry.name); + + if (entry.isDirectory()) return collectMarkdownFiles(fullPath); + if (!MARKDOWN_EXTENSIONS.has(extname(entry.name))) return []; + + return [fullPath]; + }), + ); + + return files.flat().sort((a, b) => a.localeCompare(b)); +} + +function toRoutePath(routesDir: string, filePath: string) { + const relativePath = relative(routesDir, filePath).replace(/\\/g, "/"); + const routePath = relativePath + .replace(/\.(md|mdx)$/, "") + .split("/") + .map(stripOrderingSegment) + .join("/"); + + if (routePath === "index") return "/"; + if (routePath.endsWith("/index")) { + return `/${routePath.slice(0, -"/index".length)}`; + } + + return `/${routePath}`; +} + +export function toMarkdownPath(routePath: string) { + if (routePath === "/") return "/index.md"; + return `${routePath}.md`; +} + +function getRootSidebarItems(sidebar: SidebarConfig | undefined) { + if (!sidebar) return []; + if (Array.isArray(sidebar)) return sidebar; + return sidebar["/"] ?? []; +} + +function getSidebar(config: SolidBaseResolvedConfig) { + const themeConfig = config.themeConfig; + + if ( + themeConfig && + typeof themeConfig === "object" && + "sidebar" in themeConfig + ) { + return themeConfig.sidebar as SidebarConfig | undefined; + } + + return undefined; +} + +function getNav(config: SolidBaseResolvedConfig) { + const themeConfig = config.themeConfig; + + if (themeConfig && typeof themeConfig === "object" && "nav" in themeConfig) { + return themeConfig.nav as NavItem[] | undefined; + } + + return undefined; +} + +function joinRoutePath(basePath: `/${string}`, link: string) { + if (link === "/") return basePath; + if (link.startsWith(`${basePath}/`) || link === basePath) return link; + if (!link.startsWith("/")) return `${basePath}/${link}`.replaceAll("//", "/"); + return `${basePath}${link}`.replaceAll("//", "/"); +} + +function resolveSidebarItems( + items: SidebarItem[], + basePath?: `/${string}`, +): SidebarItem[] { + return items.map((item) => ({ + ...item, + link: item.link + ? basePath + ? joinRoutePath(basePath, item.link) + : item.link + : undefined, + items: item.items ? resolveSidebarItems(item.items, basePath) : undefined, + })); +} + +function normalizeLocalePrefix(prefix: string) { + if (prefix === "/") return "/"; + return prefix.endsWith("/") ? prefix.slice(0, -1) : prefix; +} + +function getNonRootLocalePrefixes(config: SolidBaseResolvedConfig) { + return Object.entries(config.locales ?? {}) + .filter(([locale]) => locale !== "root") + .map(([locale, localeConfig]) => + normalizeLocalePrefix(localeConfig.link ?? `/${locale}/`), + ); +} + +function isDefaultLocaleRoute( + routePath: string, + config: SolidBaseResolvedConfig, +) { + const localePrefixes = getNonRootLocalePrefixes(config); + + return !localePrefixes.some( + (prefix) => routePath === prefix || routePath.startsWith(`${prefix}/`), + ); +} + +export async function getLlmDocuments( + root: string, + config: SolidBaseResolvedConfig, +): Promise { + if (!config.llms) return []; + + const routesDir = getRoutesDir(root); + const markdownFiles = await collectMarkdownFiles(routesDir); + + return Promise.all( + markdownFiles.map(async (filePath): Promise => { + if (isNotFoundRoute(routesDir, filePath)) return null; + + const source = await readFile(filePath, "utf8"); + const { data } = matter(source); + const frontmatter = data as LlmFrontmatter; + + if (isExcluded(frontmatter)) return null; + + const routePath = toRoutePath(routesDir, filePath); + + return { + title: + typeof frontmatter.title === "string" ? frontmatter.title : routePath, + description: + typeof frontmatter.description === "string" + ? frontmatter.description + : undefined, + routePath, + markdownPath: toMarkdownPath(routePath), + content: await toDocumentMarkdown(source, { + config, + filePath, + }), + } satisfies LlmDocument; + }), + ).then((documents) => documents.filter((document) => document !== null)); +} + +function toDocumentHref(markdownPath: string, origin?: string) { + if (!origin) return markdownPath; + return new URL(markdownPath, origin).toString(); +} + +function addHeadingSpacing(lines: string[]) { + const spaced: string[] = []; + + for (const line of lines) { + if (line.startsWith("#") && spaced.at(-1) && spaced.at(-1) !== "") { + spaced.push(""); + } + + spaced.push(line); + } + + return spaced; +} + +export function buildLlmsIndex( + origin: string | undefined, + config: SolidBaseResolvedConfig, + documents: LlmDocument[], +) { + const defaultLocaleDocuments = documents.filter((document) => + isDefaultLocaleRoute(document.routePath, config), + ); + const indexDocuments = + defaultLocaleDocuments.length > 0 ? defaultLocaleDocuments : documents; + + const byRoutePath = new Map( + indexDocuments.map((document) => [document.routePath, document] as const), + ); + const renderedRoutePaths = new Set(); + + const renderItem = (item: SidebarItem, headingLevel: number): string[] => { + const children = (item.items ?? []).flatMap((child) => + renderItem(child, Math.min(headingLevel + 1, 6)), + ); + + if (item.link) { + const document = byRoutePath.get(item.link); + if (!document) return children; + renderedRoutePaths.add(document.routePath); + + const description = document.description + ? `: ${document.description}` + : ""; + + return [ + `- [${item.title}](${toDocumentHref(document.markdownPath, origin)})${description}`, + ...children, + ]; + } + + if (children.length === 0) return []; + + return [`${"#".repeat(headingLevel)} ${item.title}`, "", ...children]; + }; + + const sidebar = getSidebar(config); + const nav = getNav(config); + const keyedSidebar = + sidebar && !Array.isArray(sidebar) + ? (sidebar as Record<`/${string}`, SidebarItem[]>) + : undefined; + const rootSectionEntries = resolveSidebarItems( + getRootSidebarItems(sidebar), + ).map((item) => ({ + title: item.title, + items: + item.items ?? (item.link ? [{ title: item.title, link: item.link }] : []), + })); + const sectionEntries = Array.isArray(sidebar) + ? rootSectionEntries + : (nav + ?.filter((item): item is NavItem & { link: `/${string}` } => + Boolean(item.link && keyedSidebar?.[item.link as `/${string}`]), + ) + .map((item) => ({ + title: item.text, + items: resolveSidebarItems( + keyedSidebar?.[item.link] ?? [], + item.link, + ), + })) ?? rootSectionEntries); + + const sections = sectionEntries + .map((section) => { + const lines = addHeadingSpacing( + section.items.flatMap((item: SidebarItem) => renderItem(item, 3)), + ); + if (lines.length === 0) return null; + + return [`## ${section.title}`, "", ...lines].join("\n"); + }) + .filter((section): section is string => section !== null) + .join("\n\n"); + + const topLevelDocuments = indexDocuments + .filter((document) => !renderedRoutePaths.has(document.routePath)) + .map((document) => { + const description = document.description + ? `: ${document.description}` + : ""; + return `- [${document.title}](${toDocumentHref(document.markdownPath, origin)})${description}`; + }) + .join("\n"); + + const fallbackSections = indexDocuments + .map((document) => { + const description = document.description + ? `: ${document.description}` + : ""; + return `- [${document.title}](${toDocumentHref(document.markdownPath, origin)})${description}`; + }) + .join("\n"); + + return [ + `# ${config.title}`, + "", + config.description, + "", + topLevelDocuments && sections + ? `${topLevelDocuments}\n\n${sections}` + : topLevelDocuments || sections || fallbackSections, + ].join("\n"); +} + +export function getDocumentByPath(documents: LlmDocument[], pathname: string) { + return documents.find((document) => document.markdownPath === pathname); +} diff --git a/src/config/mdx.ts b/src/config/mdx.ts index 4090a3b1..664ce2be 100644 --- a/src/config/mdx.ts +++ b/src/config/mdx.ts @@ -20,10 +20,16 @@ import type { PluginOption } from "vite"; import mdx from "../vite-mdx/index.js"; import { - type LanguageSwitcherOptions, ecPluginLanguageSwitcher, + type LanguageSwitcherOptions, } from "./ec-plugins/language-switcher/index.js"; -import type { SolidBaseResolvedConfig } from "./index.js"; +import type { SolidBaseConfig, SolidBaseResolvedConfig } from "./index.js"; + +export type RemarkPipelineConfig = Pick< + SolidBaseConfig, + "markdown" | "issueAutolink" +>; + import { rehypeFixExpressiveCodeJsx } from "./rehype-plugins/fix-expressive-code.js"; import { remarkCodeTabs } from "./remark-plugins/code-tabs.js"; import { remarkDirectiveContainers } from "./remark-plugins/directives.js"; @@ -50,8 +56,8 @@ export type TwoslashOptions = PluginTwoslashOptions & { tsconfig: any }; export interface MdxOptions { expressiveCode?: | (RehypeExpressiveCodeOptions & { - twoSlash?: TwoslashOptions | true; - languageSwitcher?: LanguageSwitcherOptions | true; + twoSlash?: TwoslashOptions | boolean; + languageSwitcher?: LanguageSwitcherOptions | boolean; }) | false; toc?: TOCOptions | false; @@ -70,7 +76,7 @@ export function solidBaseMdx( mdx.withImports({})({ jsx: true, jsxImportSource: "solid-js", - providerImportSource: "@kobalte/solidbase/solid-mdx", + providerImportSource: "@kobalte/solidbase/mdx", stylePropertyNameCase: "css", rehypePlugins: getRehypePlugins(sbConfig), remarkPlugins: getRemarkPlugins(sbConfig), @@ -167,7 +173,7 @@ function getRehypePlugins(sbConfig: SolidBaseResolvedConfig) { return rehypePlugins; } -function getRemarkPlugins(sbConfig: SolidBaseResolvedConfig) { +export function getRemarkPlugins(sbConfig: RemarkPipelineConfig) { const remarkPlugins: any[] = []; if (sbConfig.markdown?.steps !== false) remarkPlugins.push(remarkSteps); diff --git a/src/config/remark-plugins/directives.ts b/src/config/remark-plugins/directives.ts index 0aed27d4..4600f20d 100644 --- a/src/config/remark-plugins/directives.ts +++ b/src/config/remark-plugins/directives.ts @@ -11,7 +11,7 @@ export function remarkDirectiveContainers() { const maybeLabel = node.children[0]; const hasLabel = maybeLabel?.data?.directiveLabel; - let labelText = undefined; + let labelText: string | undefined; if (hasLabel) { if (maybeLabel.children.length === 0) { diff --git a/src/config/remark-plugins/import-code-file.ts b/src/config/remark-plugins/import-code-file.ts index 389ca9f3..dbc2b134 100644 --- a/src/config/remark-plugins/import-code-file.ts +++ b/src/config/remark-plugins/import-code-file.ts @@ -4,7 +4,7 @@ import fs from "node:fs"; import { EOL } from "node:os"; import path from "node:path"; import { MetaOptions } from "@expressive-code/core"; -import type { Code, Parent, Root } from "mdast"; +import type { Root } from "mdast"; import { visit } from "unist-util-visit"; import type { VFile } from "vfile"; import type { PluginOption } from "vite"; diff --git a/src/config/remark-plugins/inline-frontmatter.ts b/src/config/remark-plugins/inline-frontmatter.ts index 2622cea9..e046eb2d 100644 --- a/src/config/remark-plugins/inline-frontmatter.ts +++ b/src/config/remark-plugins/inline-frontmatter.ts @@ -1,23 +1,30 @@ import { SKIP, visit } from "unist-util-visit"; +export function isInlineFrontmatterExpression(value: string) { + return value.startsWith("frontmatter.") || value.startsWith("frontmatter["); +} + +export function evaluateInlineFrontmatterExpression( + frontmatter: unknown, + expression: string, +) { + const scopedEval = (scope: any, script: string) => + Function(`"use strict"; return ${script}`).bind(scope)(); + + return scopedEval({ frontmatter }, `this.${expression}`); +} + export function remarkInlineFrontmatter() { return (tree: any) => { - visit(tree, (node, index, parent) => { + visit(tree, (node, _index, parent) => { if (node.type !== "mdxTextExpression" || parent.type !== "heading") return; - if ( - !node.value.startsWith("frontmatter.") && - !node.value.startsWith("frontmatter[") - ) - return; - - const scopedEval = (scope: any, script: string) => - Function(`"use strict"; return ${script}`).bind(scope)(); + if (!isInlineFrontmatterExpression(node.value)) return; - const value = scopedEval( - { frontmatter: tree.data.frontmatter }, - `this.${node.value}`, + const value = evaluateInlineFrontmatterExpression( + tree.data.frontmatter, + node.value, ); Object.assign(node, { diff --git a/src/config/remark-plugins/package-manager-tabs.ts b/src/config/remark-plugins/package-manager-tabs.ts index 8814f7eb..f8fe7195 100644 --- a/src/config/remark-plugins/package-manager-tabs.ts +++ b/src/config/remark-plugins/package-manager-tabs.ts @@ -1,4 +1,3 @@ -import { MetaOptions } from "@expressive-code/core"; import { SKIP, visit } from "unist-util-visit"; export interface PackageManagerConfig { diff --git a/src/config/remark-plugins/tab-group.ts b/src/config/remark-plugins/tab-group.ts index c504768e..bfdc8069 100644 --- a/src/config/remark-plugins/tab-group.ts +++ b/src/config/remark-plugins/tab-group.ts @@ -1,8 +1,8 @@ -import { SKIP, visit } from "unist-util-visit"; +import { visit } from "unist-util-visit"; export function remarkTabGroup() { return (tree: any) => { - visit(tree, (node, index, parent) => { + visit(tree, (node, _index, _parent) => { if (node.type !== "containerDirective" || node.name !== "tab-group") return; diff --git a/src/config/remark-plugins/toc.ts b/src/config/remark-plugins/toc.ts index 13656895..4121c429 100644 --- a/src/config/remark-plugins/toc.ts +++ b/src/config/remark-plugins/toc.ts @@ -1,7 +1,7 @@ import { fromJs } from "esast-util-from-js"; import type { PhrasingContent } from "mdast"; import { findAndReplace } from "mdast-util-find-and-replace"; -import { toString as mdastToString } from "mdast-util-to-string"; +import { toString as nodeToString } from "mdast-util-to-string"; import { type Options, toc } from "mdast-util-toc"; interface ParagraphNode { @@ -32,7 +32,7 @@ interface TOCTree { function mapNode(node: ListItemNode): TOCTree { return { - title: mdastToString(node.children[0].children[0].children), + title: nodeToString(node.children[0].children[0].children), href: node.children[0].children[0].url, children: (node.children[1]?.children ?? []).map(mapNode), }; @@ -65,7 +65,7 @@ export function remarkTOC(opts?: TOCOptions) { findAndReplace(tree, [["[[toc]]", () => map]]); - // @ts-ignore: not sure what the correct type is + // @ts-expect-error: not sure what the correct type is value = JSON.stringify(map.children.map(mapNode)); } diff --git a/src/config/sidebar.ts b/src/config/sidebar.ts index e833e00a..65fc8fd4 100644 --- a/src/config/sidebar.ts +++ b/src/config/sidebar.ts @@ -32,15 +32,11 @@ export interface FilesystemSidebarOptions { sort?: (a: SidebarItemWithMeta, b: SidebarItemWithMeta) => number; } -const ROUTES_FOLDER = import.meta - .resolve("./src/routes/") - .substring("file:".length); - export function createFilesystemSidebar( route: string, options?: FilesystemSidebarOptions, ): Item[] { - const folder = path.join(ROUTES_FOLDER, route); + const folder = path.join(process.cwd(), route); const resolvedOptions: Required = { filter: (item) => { diff --git a/src/config/vite-plugin/index.ts b/src/config/vite-plugin/index.ts index 863e05ac..791ad852 100644 --- a/src/config/vite-plugin/index.ts +++ b/src/config/vite-plugin/index.ts @@ -1,10 +1,12 @@ +import { fileURLToPath } from "node:url"; +import MagicString from "magic-string"; import AutoImport from "unplugin-auto-import/vite"; import IconsResolver from "unplugin-icons/resolver"; import Icons from "unplugin-icons/vite"; import type { PluginOption } from "vite"; -import { fileURLToPath } from "node:url"; -import type { SolidBaseConfig, ThemeDefinition } from "../index.js"; +import type { SolidBaseResolvedConfig, ThemeDefinition } from "../index.js"; +import solidBaseLlmsPlugin from "./llms.js"; import { componentsModule, configModule, @@ -13,29 +15,46 @@ import { export default function solidBaseVitePlugin( theme: ThemeDefinition, - solidBaseConfig: Partial>, + solidBaseConfig: SolidBaseResolvedConfig, ): PluginOption { + let root = process.cwd(); + const plugins: PluginOption[] = [ { name: "solidbase:pre", enforce: "pre", + config() { + return { resolve: { noExternal: ["@kobalte/solidbase"] } }; + }, + configResolved(resolvedConfig) { + root = resolvedConfig.root; + }, resolveId(id) { if (id === configModule.id) return configModule.resolvedId; if (id === componentsModule.id) return componentsModule.resolvedId; + if (id === "virtual:solidbase/mdx") return "\0virtual:solidbase/mdx"; if (id.startsWith("\0unfonts.css")) return id.slice("\0".length); }, async load(id) { if (id === configModule.resolvedId) - return configModule.load(solidBaseConfig); + return configModule.load(solidBaseConfig, root); if (id === componentsModule.resolvedId) return await componentsModule.load(theme); + if (id === "\0virtual:solidbase/mdx") + return `export * from "@kobalte/solidbase/mdx"`; }, transform(code, id) { if (isMarkdown(id)) { - return code.replaceAll( + const s = new MagicString(code); + s.replaceAll( /="(\$\$SolidBase_RelativeImport\d+)"/gm, (_, ident) => `={${ident}}`, ); + + return { + code: s.toString(), + map: s.generateMap(), + }; } }, }, @@ -90,6 +109,8 @@ export default function solidBaseVitePlugin( }), ); + plugins.push(solidBaseLlmsPlugin(solidBaseConfig)); + return plugins; } @@ -97,10 +118,16 @@ export function isMarkdown(path: string) { return !!path.match(/\.(mdx|md)/gm); } -// Workaround for https://github.com/solidjs/solid-start/issues/1374 import type { Options, Resolver } from "unplugin-auto-import/dist/types.js"; +// Workaround for https://github.com/solidjs/solid-start/issues/1374 +import type { Plugin } from "vite"; + function VinxiAutoImport(options: Options): PluginOption { - const autoimport = AutoImport(options); + const autoimport = AutoImport(options) as Plugin; + const transform = + typeof autoimport.transform === "function" + ? autoimport.transform + : autoimport.transform?.handler; const ABSOLUTE_PATH = /^\/|^[a-zA-Z]:\//; @@ -113,7 +140,7 @@ function VinxiAutoImport(options: Options): PluginOption { pathname = new URL(`file://${id}`).pathname; } - return autoimport.transform(src, pathname); + return transform?.call(this, src, pathname); }, }; } diff --git a/src/config/vite-plugin/llms.ts b/src/config/vite-plugin/llms.ts new file mode 100644 index 00000000..dcae10ac --- /dev/null +++ b/src/config/vite-plugin/llms.ts @@ -0,0 +1,81 @@ +import { mkdir, rm, writeFile } from "node:fs/promises"; +import { dirname, join, sep } from "node:path"; + +import type { PluginOption } from "vite"; + +import type { SolidBaseResolvedConfig } from "../index.js"; +import { buildLlmsIndex, getLlmDocuments } from "../llms-index.js"; + +const LLMS_PUBLIC_ASSETS_DIR = join("node_modules", ".solidbase", "llms"); + +async function emptyDir(dir: string) { + await rm(dir, { recursive: true, force: true }); + await mkdir(dir, { recursive: true }); +} + +async function writeLlmsAssets( + root: string, + config: SolidBaseResolvedConfig, +) { + const documents = await getLlmDocuments(root, config); + const outputDir = join(root, LLMS_PUBLIC_ASSETS_DIR); + + await emptyDir(outputDir); + await writeFile( + join(outputDir, "llms.txt"), + buildLlmsIndex(undefined, config, documents), + "utf8", + ); + + await Promise.all( + documents.map(async (document) => { + const filePath = join(outputDir, document.markdownPath.slice(1)); + + await mkdir(dirname(filePath), { recursive: true }); + await writeFile(filePath, document.content, "utf8"); + }), + ); +} + +export default function solidBaseLlmsPlugin( + config: SolidBaseResolvedConfig, +): PluginOption { + if (!config.llms) return []; + + let root = process.cwd(); + + return { + name: "solidbase:llms", + config(viteConfig) { + const nitroConfig = (viteConfig as any).nitro ?? {}; + + return { + nitro: { + ...nitroConfig, + publicAssets: [ + ...(nitroConfig.publicAssets ?? []), + { + dir: LLMS_PUBLIC_ASSETS_DIR, + baseURL: "/", + fallthrough: true, + ignore: false, + }, + ], + }, + } as any; + }, + configResolved(resolvedConfig) { + root = resolvedConfig.root; + }, + async buildStart() { + await writeLlmsAssets(root, config); + }, + async handleHotUpdate(ctx) { + if (!ctx.file.includes(`${sep}src${sep}routes${sep}`)) { + return; + } + + await writeLlmsAssets(root, config); + }, + }; +} diff --git a/src/config/vite-plugin/virtual.ts b/src/config/vite-plugin/virtual.ts index 2555e0f6..4b713b4e 100644 --- a/src/config/vite-plugin/virtual.ts +++ b/src/config/vite-plugin/virtual.ts @@ -1,23 +1,30 @@ -import { readdir } from "node:fs/promises"; +import { readdir, readFile } from "node:fs/promises"; import { parse } from "node:path"; import { fileURLToPath } from "node:url"; +import MagicString from "magic-string"; +import { toDocumentMarkdown } from "../document-markdown.js"; import { getGitTimestamp } from "../git.js"; -import type { Theme } from "../index.js"; -import type { SolidBaseConfig } from "../index.js"; +import type { SolidBaseConfig, Theme } from "../index.js"; import { SolidBaseTOC } from "../remark-plugins/toc.js"; -export const configModule = { +type VirtualModule = { + id: string; + resolvedId: string; + load(arg: T, root?: string): Promise; +}; + +export const configModule: VirtualModule>> = { id: "virtual:solidbase/config", resolvedId: "\0virtual:solidbase/config", - load: (solidBaseConfig: Partial>) => + load: async (solidBaseConfig, _root) => `export const solidBaseConfig = ${JSON.stringify(solidBaseConfig)};`, }; -export const componentsModule = { +export const componentsModule: VirtualModule> = { id: "virtual:solidbase/components", resolvedId: "\0virtual:solidbase/components", - load: async (theme: Theme) => { + async load(theme) { const themePaths = (() => { let t: Theme | undefined = theme; const paths: Array = []; @@ -58,10 +65,21 @@ ${mdxComponentFiles.map((file) => `import * as ${file.importName} from "${file.p export const mdxComponents = { ${mdxComponentFiles.map((file) => `...${file.importName}`).join(",\n")} -};`; +}; +`; }, }; +function getMarkdownModulePath(id: string) { + const [pathname, search = ""] = id.split(/\?(.*)/s); + const params = new URLSearchParams(search); + const nestedId = params.get("id"); + + if (nestedId) return nestedId.split("?")[0]!; + + return pathname!; +} + export async function transformMdxModule( code: string, id: string, @@ -69,7 +87,7 @@ export async function transformMdxModule( ) { const rootPath = process.env.PWD!; - const modulePath = id.split("?")[0]; + const modulePath = getMarkdownModulePath(id); let modulePathLink = ""; if (solidBaseConfig.editPath && modulePath.startsWith(rootPath)) { @@ -85,13 +103,24 @@ export async function transformMdxModule( lastUpdated = await getGitTimestamp(modulePath); } - return ` - ${code} + const source = await readFile(modulePath, "utf8"); + const llmText = await toDocumentMarkdown(source, { + config: { + markdown: solidBaseConfig.markdown, + issueAutolink: solidBaseConfig.issueAutolink ?? false, + }, + filePath: modulePath, + }); + + const s = new MagicString(code); + + s.append(` const data = { frontmatter: typeof frontmatter !== "undefined" ? (frontmatter ?? {}) : {}, toc: typeof ${SolidBaseTOC} !== "undefined" ? ${SolidBaseTOC} : undefined, editLink: "${modulePathLink}", lastUpdated: ${lastUpdated}, + llmText: ${JSON.stringify(llmText)}, }; if (typeof window !== "undefined") { @@ -100,5 +129,10 @@ export async function transformMdxModule( } export const $$SolidBase_page_data = data; - `; + `); + + return { + code: s.toString(), + map: s.generateMap(), + }.code; } diff --git a/src/default-theme/Layout.module.css b/src/default-theme/Layout.module.css index 83f736cf..8a52b388 100644 --- a/src/default-theme/Layout.module.css +++ b/src/default-theme/Layout.module.css @@ -31,7 +31,7 @@ left: 0; display: flex; flex-direction: row; - padding: .5rem .5rem 1.5rem 1.5rem; + padding: 0.5rem 0.5rem 1.5rem 1.5rem; transition: transform 0.3s ease-in-out; overflow-y: auto; } @@ -110,7 +110,7 @@ display: flex; justify-content: space-between; align-items: center; - margin: 1rem 0 .5rem; + margin: 1rem 0 0.5rem; width: 100%; &:hover, @@ -159,11 +159,11 @@ } .section-content { - animation: sectionHide .15s var(--sb-transition-timing); + animation: sectionHide 0.15s var(--sb-transition-timing); overflow: hidden; &[data-expanded] { - animation: sectionShow .15s var(--sb-transition-timing); + animation: sectionShow 0.15s var(--sb-transition-timing); } } @@ -206,7 +206,7 @@ flex-direction: column; ul { - padding-left: .5rem; + padding-left: 0.5rem; display: flex; flex-direction: column; @@ -258,11 +258,11 @@ display: inline-flex; align-items: center; font-size: 0.7rem; - padding: .2rem .35rem; + padding: 0.2rem 0.35rem; line-height: 1; font-weight: 600; text-transform: uppercase; - border-radius: .25rem; + border-radius: 0.25rem; } .status-new { diff --git a/src/default-theme/Layout.tsx b/src/default-theme/Layout.tsx index ab872400..bc52c7f9 100644 --- a/src/default-theme/Layout.tsx +++ b/src/default-theme/Layout.tsx @@ -1,47 +1,47 @@ +import { Collapsible } from "@kobalte/core/collapsible"; // @refresh reload import { Dialog } from "@kobalte/core/dialog"; import { Title } from "@solidjs/meta"; import { A } from "@solidjs/router"; import { + createEffect, For, Match, + onCleanup, + onMount, type ParentProps, Show, Switch, - createEffect, - onCleanup, - onMount, } from "solid-js"; +import { Dynamic } from "solid-js/web"; -import { useLocale, useThemeListener } from "../client"; -import { usePreferredLanguage } from "../client/preferred-language"; +import { useLocale, useThemeListener } from "../client/index.js"; +import { usePreferredLanguage } from "../client/preferred-language.js"; import { type SidebarItemLink, type SidebarItemSection, SidebarProvider, useSidebar, -} from "../client/sidebar"; +} from "../client/sidebar.js"; import { DefaultThemeComponentsProvider, DefaultThemeStateProvider, useDefaultThemeComponents, useDefaultThemeState, -} from "./context"; -import { mobileLayout } from "./globals"; -import { usePace } from "./pace"; -import { useRouteConfig } from "./utils"; +} from "./context.jsx"; +import { mobileLayout } from "./globals.js"; +import { usePace } from "./pace.js"; +import { useRouteConfig } from "./utils.js"; import "virtual:solidbase/default-theme/fonts.css"; import styles from "./Layout.module.css"; import "./index.css"; -import { Collapsible } from "@kobalte/core/collapsible"; -import { Dynamic } from "solid-js/web"; import IconArrowDownLine from "~icons/ri/arrow-down-s-line"; import type { DefaultThemeSidebarItem, DefaultThemeSidebarItemOptionCustomStatus, DefaultThemeSidebarItemOptions, -} from "."; +} from "./index.js"; export default (props: ParentProps) => { const config = useRouteConfig(); diff --git a/src/default-theme/components/Article.module.css b/src/default-theme/components/Article.module.css index 6002a444..d889f91c 100644 --- a/src/default-theme/components/Article.module.css +++ b/src/default-theme/components/Article.module.css @@ -6,6 +6,7 @@ .content { max-width: min(calc(100dvw - 2.5rem), 52rem); flex: 1; + min-width: 0; margin: 0 auto; } diff --git a/src/default-theme/components/Article.tsx b/src/default-theme/components/Article.tsx index 7db493c5..391b3013 100644 --- a/src/default-theme/components/Article.tsx +++ b/src/default-theme/components/Article.tsx @@ -1,14 +1,17 @@ import { WindowEventListener } from "@solid-primitives/event-listener"; import { createShortcut } from "@solid-primitives/keyboard"; import { isAppleDevice } from "@solid-primitives/platform"; -import { type ParentProps, Show, createSignal } from "solid-js"; - -import { useCurrentPageData } from "../../client"; -import { usePrevNext } from "../../client/sidebar"; -import { useDefaultThemeComponents, useDefaultThemeState } from "../context"; -import type { RelativePageConfig } from "../frontmatter"; -import { mobileLayout } from "../globals"; -import { useSolidBaseContext } from "../utils"; +import { createSignal, type ParentProps, Show } from "solid-js"; + +import { useCurrentPageData } from "../../client/index.jsx"; +import { usePrevNext } from "../../client/sidebar.js"; +import { + useDefaultThemeComponents, + useDefaultThemeState, +} from "../context.jsx"; +import type { RelativePageConfig } from "../frontmatter.js"; +import { mobileLayout } from "../globals.js"; +import { useSolidBaseContext } from "../utils.js"; import styles from "./Article.module.css"; @@ -19,7 +22,7 @@ export default function Article(props: ParentProps) { const { TableOfContents, Link, LastUpdated, Footer, Hero, Features } = useDefaultThemeComponents(); - const [contentRef, setContentRef] = createSignal(); + const [_contentRef, setContentRef] = createSignal(); const [clickedCodeElement, setClickedCodeElement] = createSignal(); diff --git a/src/default-theme/components/Features.tsx b/src/default-theme/components/Features.tsx index 3d5faf2b..1536b315 100644 --- a/src/default-theme/components/Features.tsx +++ b/src/default-theme/components/Features.tsx @@ -1,6 +1,6 @@ import { For, Show } from "solid-js"; -import type { FeaturesConfig } from "../frontmatter"; +import type { FeaturesConfig } from "../frontmatter.js"; import styles from "./Features.module.css"; diff --git a/src/default-theme/components/Footer.tsx b/src/default-theme/components/Footer.tsx index 03b70f26..b1c6652d 100644 --- a/src/default-theme/components/Footer.tsx +++ b/src/default-theme/components/Footer.tsx @@ -1,10 +1,8 @@ import { For, Show } from "solid-js"; - +import type { SocialLink } from "../index.js"; +import { useRouteConfig } from "../utils.js"; import styles from "./Footer.module.css"; -import type { SocialLink } from ".."; -import { useRouteConfig } from "../utils"; - const logos: Partial> = { discord: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMjcuMTQgOTYuMzYiPjxwYXRoIGZpbGw9ImN1cnJlbnRDb2xvciIgZD0iTTEwNy43LDguMDdBMTA1LjE1LDEwNS4xNSwwLDAsMCw4MS40NywwYTcyLjA2LDcyLjA2LDAsMCwwLTMuMzYsNi44M0E5Ny42OCw5Ny42OCwwLDAsMCw0OSw2LjgzLDcyLjM3LDcyLjM3LDAsMCwwLDQ1LjY0LDAsMTA1Ljg5LDEwNS44OSwwLDAsMCwxOS4zOSw4LjA5QzIuNzksMzIuNjUtMS43MSw1Ni42LjU0LDgwLjIxaDBBMTA1LjczLDEwNS43MywwLDAsMCwzMi43MSw5Ni4zNiw3Ny43LDc3LjcsMCwwLDAsMzkuNiw4NS4yNWE2OC40Miw2OC40MiwwLDAsMS0xMC44NS01LjE4Yy45MS0uNjYsMS44LTEuMzQsMi42Ni0yYTc1LjU3LDc1LjU3LDAsMCwwLDY0LjMyLDBjLjg3LjcxLDEuNzYsMS4zOSwyLjY2LDJhNjguNjgsNjguNjgsMCwwLDEtMTAuODcsNS4xOSw3Nyw3NywwLDAsMCw2Ljg5LDExLjFBMTA1LjI1LDEwNS4yNSwwLDAsMCwxMjYuNiw4MC4yMmgwQzEyOS4yNCw1Mi44NCwxMjIuMDksMjkuMTEsMTA3LjcsOC4wN1pNNDIuNDUsNjUuNjlDMzYuMTgsNjUuNjksMzEsNjAsMzEsNTNzNS0xMi43NCwxMS40My0xMi43NFM1NCw0Niw1My44OSw1Myw0OC44NCw2NS42OSw0Mi40NSw2NS42OVptNDIuMjQsMEM3OC40MSw2NS42OSw3My4yNSw2MCw3My4yNSw1M3M1LTEyLjc0LDExLjQ0LTEyLjc0Uzk2LjIzLDQ2LDk2LjEyLDUzLDkxLjA4LDY1LjY5LDg0LjY5LDY1LjY5WiIvPjwvc3ZnPg==", diff --git a/src/default-theme/components/Header.module.css b/src/default-theme/components/Header.module.css index 840e3324..1590928e 100644 --- a/src/default-theme/components/Header.module.css +++ b/src/default-theme/components/Header.module.css @@ -9,7 +9,6 @@ flex-direction: column; padding: 0 1.5rem; background: var(--sb-background-color); - border-bottom: 2px solid #e4e4e7; grid-column-start: span 2; border-bottom: 1px solid color-mix(in hsl, var(--sb-decoration-color) 15%, transparent); @@ -30,12 +29,14 @@ } html:has(.header .mobile-bar) { + /* biome-ignore lint/complexity/noImportantStyles: important */ --sb-header-height: 6.25rem !important; } } @media screen and (min-width: 1100px) { .mobile-bar { + /* biome-ignore lint/complexity/noImportantStyles: important */ display: none !important; } } @@ -109,6 +110,7 @@ @media screen and (max-width: 500px) { .top-nav { > *:not(.mobile-nav-menu) { + /* biome-ignore lint/complexity/noImportantStyles: important */ display: none !important; } @@ -131,8 +133,8 @@ > .menu-icon { position: absolute; - left: .5rem; - top: .5rem; + left: 0.5rem; + top: 0.5rem; } > .close-icon { @@ -186,6 +188,7 @@ } .mobile-bar { + /* biome-ignore lint/complexity/noImportantStyles: important */ flex: none !important; border-top: 1px solid color-mix(in hsl, var(--sb-decoration-color) 15%, transparent); @@ -201,6 +204,7 @@ top: 0; position: relative; overflow: visible; + /* biome-ignore lint/complexity/noImportantStyles: important */ flex: 0 !important; } @@ -224,6 +228,7 @@ } & * { + /* biome-ignore lint/complexity/noImportantStyles: important */ opacity: 1 !important; } } @@ -232,7 +237,7 @@ height: calc(100dvh - var(--sb-header-height) * 0.55); display: flex; flex-direction: column; - gap: .5rem; + gap: 0.5rem; align-items: center; > *:not(:last-child) { @@ -244,7 +249,7 @@ .nav-popup-selectors { display: flex; - gap: .5rem; + gap: 0.5rem; justify-content: space-evenly; align-items: center; } diff --git a/src/default-theme/components/Header.tsx b/src/default-theme/components/Header.tsx index b046cf99..50babcb4 100644 --- a/src/default-theme/components/Header.tsx +++ b/src/default-theme/components/Header.tsx @@ -1,16 +1,22 @@ import { Dialog } from "@kobalte/core/dialog"; import { useMatch } from "@solidjs/router"; -import { For, Show, createSignal, lazy } from "solid-js"; +import { createSignal, For, Show } from "solid-js"; import IconArrowDownLine from "~icons/ri/arrow-down-s-line"; import IconCloseFill from "~icons/ri/close-large-fill"; import IconMenuLeftLine from "~icons/ri/menu-2-line"; import IconMenuFill from "~icons/ri/menu-fill"; -import { getLocaleLink, useCurrentPageData, useLocale } from "../../client"; -import { useDefaultThemeComponents, useDefaultThemeState } from "../context"; -import { useRouteConfig } from "../utils"; - -import { useSidebar } from "../../client/sidebar"; +import { + getLocaleLink, + useCurrentPageData, + useLocale, +} from "../../client/index.jsx"; +import { useSidebar } from "../../client/sidebar.js"; +import { + useDefaultThemeComponents, + useDefaultThemeState, +} from "../context.jsx"; +import { useRouteConfig } from "../utils.js"; import styles from "./Header.module.css"; export default function Header() { diff --git a/src/default-theme/components/Hero.module.css b/src/default-theme/components/Hero.module.css index ee3e1a57..d520f409 100644 --- a/src/default-theme/components/Hero.module.css +++ b/src/default-theme/components/Hero.module.css @@ -69,7 +69,11 @@ &:hover, &:focus { - background: color-mix(in hsl, var(--sb-text-color) 20%, transparent); + background: color-mix( + in hsl, + var(--sb-text-color) 20%, + transparent + ); } } @@ -106,6 +110,7 @@ } article:has(.hero) > div { + /* biome-ignore lint/complexity/noImportantStyles: important */ max-width: min(calc(100dvw - 2.5rem), 72rem) !important; } diff --git a/src/default-theme/components/Hero.tsx b/src/default-theme/components/Hero.tsx index bf992326..10d34146 100644 --- a/src/default-theme/components/Hero.tsx +++ b/src/default-theme/components/Hero.tsx @@ -1,6 +1,6 @@ import { For, Show } from "solid-js"; -import { type HeroConfig, useDefaultThemeFrontmatter } from "../frontmatter"; +import { type HeroConfig, useDefaultThemeFrontmatter } from "../frontmatter.js"; import styles from "./Hero.module.css"; diff --git a/src/default-theme/components/LastUpdated.tsx b/src/default-theme/components/LastUpdated.tsx index f612edb1..d66fbf99 100644 --- a/src/default-theme/components/LastUpdated.tsx +++ b/src/default-theme/components/LastUpdated.tsx @@ -1,7 +1,7 @@ -import { Show, createMemo } from "solid-js"; +import { createMemo, Show } from "solid-js"; -import { useCurrentPageData } from "../../client"; -import { useRouteConfig } from "../utils"; +import { useCurrentPageData } from "../../client/index.jsx"; +import { useRouteConfig } from "../utils.js"; import styles from "./LastUpdated.module.css"; export default function LastUpdated() { diff --git a/src/default-theme/components/LocaleSelector.tsx b/src/default-theme/components/LocaleSelector.tsx index 3ec4370a..b69fd245 100644 --- a/src/default-theme/components/LocaleSelector.tsx +++ b/src/default-theme/components/LocaleSelector.tsx @@ -1,7 +1,7 @@ import { Select } from "@kobalte/core/select"; import { Show } from "solid-js"; -import { type ResolvedLocale, useLocale } from "../../client"; +import { type ResolvedLocale, useLocale } from "../../client/index.jsx"; import styles from "./ThemeSelector.module.css"; export default function LocaleSelector() { diff --git a/src/default-theme/components/TableOfContents.tsx b/src/default-theme/components/TableOfContents.tsx index c07a3d57..e35546e9 100644 --- a/src/default-theme/components/TableOfContents.tsx +++ b/src/default-theme/components/TableOfContents.tsx @@ -1,9 +1,12 @@ import { useWindowScrollPosition } from "@solid-primitives/scroll"; -import { For, type JSX, Show, createEffect, createSignal } from "solid-js"; -import { type TableOfContentsItemData, useCurrentPageData } from "../../client"; +import { createEffect, createSignal, For, type JSX, Show } from "solid-js"; +import { + type TableOfContentsItemData, + useCurrentPageData, +} from "../../client/index.jsx"; import styles from "./TableOfContents.module.css"; -export default function TableOfContents(props: {}) { +export default function TableOfContents(_props: {}) { const toc = () => useCurrentPageData()()?.toc; const [currentSection, setCurrentSection] = createSignal< diff --git a/src/default-theme/components/ThemeSelector.module.css b/src/default-theme/components/ThemeSelector.module.css index d6357e8e..9bbc5885 100644 --- a/src/default-theme/components/ThemeSelector.module.css +++ b/src/default-theme/components/ThemeSelector.module.css @@ -1,5 +1,5 @@ .item { - padding: .3rem .5rem; + padding: 0.3rem 0.5rem; list-style-type: none; border-radius: var(--sb-border-radius); cursor: var(--sb-button-cursor); @@ -15,7 +15,7 @@ } & svg { - margin-right: .15rem; + margin-right: 0.15rem; } & div { @@ -26,7 +26,7 @@ .trigger { appearance: none; - padding: .5rem; + padding: 0.5rem; background: transparent; border: none; outline: none; @@ -35,7 +35,7 @@ cursor: var(--sb-button-cursor); transition-property: background-color, opacity, color; transition-timing-function: var(--sb-transition-timing); - transition-duration: .15s; + transition-duration: 0.15s; &:hover, &:focus, diff --git a/src/default-theme/components/ThemeSelector.tsx b/src/default-theme/components/ThemeSelector.tsx index df1da320..eb2f5c5b 100644 --- a/src/default-theme/components/ThemeSelector.tsx +++ b/src/default-theme/components/ThemeSelector.tsx @@ -1,25 +1,22 @@ import { Select } from "@kobalte/core/select"; import { type ComponentProps, - type JSX, - Show, children, - createEffect, createSignal, + type JSX, onMount, + Show, } from "solid-js"; -import { - type ThemeType, - getTheme, - getThemeVariant, - setTheme, -} from "../../client"; -import styles from "./ThemeSelector.module.css"; - import IconMoonFill from "~icons/ri/moon-fill"; import IconMoonLine from "~icons/ri/moon-line"; import IconSunFill from "~icons/ri/sun-fill"; import IconSunLine from "~icons/ri/sun-line"; +import { + getThemeVariant, + setTheme, + type ThemeType, +} from "../../client/index.jsx"; +import styles from "./ThemeSelector.module.css"; interface ThemeOption { value: ThemeType | "system"; diff --git a/src/default-theme/context.tsx b/src/default-theme/context.tsx index e49eb7a3..8c7b0efd 100644 --- a/src/default-theme/context.tsx +++ b/src/default-theme/context.tsx @@ -1,18 +1,18 @@ import { createContextProvider } from "@solid-primitives/context"; import { createSignal } from "solid-js"; -import Article from "./components/Article"; -import Features from "./components/Features"; -import Footer from "./components/Footer"; -import Header from "./components/Header"; -import Hero from "./components/Hero"; -import LastUpdated from "./components/LastUpdated"; -import Link from "./components/Link"; -import LocaleSelector from "./components/LocaleSelector"; -import TableOfContents from "./components/TableOfContents"; -import ThemeSelector from "./components/ThemeSelector"; +import Article from "./components/Article.jsx"; +import Features from "./components/Features.jsx"; +import Footer from "./components/Footer.jsx"; +import Header from "./components/Header.jsx"; +import Hero from "./components/Hero.jsx"; +import LastUpdated from "./components/LastUpdated.jsx"; +import Link from "./components/Link.jsx"; +import LocaleSelector from "./components/LocaleSelector.jsx"; +import TableOfContents from "./components/TableOfContents.jsx"; +import ThemeSelector from "./components/ThemeSelector.jsx"; -import { useDefaultThemeFrontmatter } from "./frontmatter"; +import { useDefaultThemeFrontmatter } from "./frontmatter.js"; const defaultComponents = { Article, diff --git a/src/default-theme/frontmatter.ts b/src/default-theme/frontmatter.ts index 8edf66fb..6b164e57 100644 --- a/src/default-theme/frontmatter.ts +++ b/src/default-theme/frontmatter.ts @@ -1,5 +1,5 @@ import { createMemo } from "solid-js"; -import { type BaseFrontmatter, useFrontmatter } from "../client"; +import { type BaseFrontmatter, useFrontmatter } from "../client/index.jsx"; export function useDefaultThemeFrontmatter() { const frontmatter = useFrontmatter(); diff --git a/src/default-theme/index.css b/src/default-theme/index.css index 1033fb54..3c048a66 100644 --- a/src/default-theme/index.css +++ b/src/default-theme/index.css @@ -20,6 +20,7 @@ html { } code { + /* biome-ignore lint/complexity/noImportantStyles: important */ font-family: var(--sb-font-mono) !important; } @@ -83,11 +84,12 @@ article *[id] { &:has(.ec-line.highlight) .ec-line:not(.highlight) { opacity: 0.7; - transition: opacity .1s var(--sb-transition-timing); + transition: opacity 0.1s var(--sb-transition-timing); } &:hover .ec-line, &:focus-within .ec-line { + /* biome-ignore lint/complexity/noImportantStyles: important */ opacity: 1 !important; } } @@ -95,8 +97,7 @@ article *[id] { .sb-ts-js-toggle, /* Expressive code hides all non-svg elements inside the header, so we need this selector to override it. */ - .expressive-code - .sb-ts-js-toggle { +.expressive-code .sb-ts-js-toggle { appearance: none; display: flex; align-items: center; diff --git a/src/default-theme/index.ts b/src/default-theme/index.ts index 8efe55cc..fb47f6a8 100644 --- a/src/default-theme/index.ts +++ b/src/default-theme/index.ts @@ -1,6 +1,6 @@ import { fileURLToPath } from "node:url"; -import { type ThemeDefinition, defineTheme } from "../config/index.js"; +import { defineTheme, type ThemeDefinition } from "../config/index.js"; import type { SidebarConfig, SidebarItem } from "../config/sidebar.js"; export type DefaultThemeSidebarItemOptions = { @@ -60,7 +60,7 @@ const allFonts = { } satisfies Record; const defaultTheme: ThemeDefinition = defineTheme({ - componentsPath: import.meta.resolve("@kobalte/solidbase/default-theme"), + componentsPath: import.meta.resolve("./"), vite(config) { const filteredFonts: Array = []; @@ -77,12 +77,12 @@ const defaultTheme: ThemeDefinition = defineTheme({ name: "solidbase-default-theme-fonts", resolveId(id) { if (id.startsWith("virtual:solidbase/default-theme/fonts.css")) - return "virtual:solidbase/default-theme/fonts.css"; + return "\0virtual:solidbase/default-theme/fonts.css"; if (id.startsWith("virtual:solidbase/default-theme/fonts")) return "\0virtual:solidbase/default-theme/fonts"; }, load(id) { - if (id.startsWith("virtual:solidbase/default-theme/fonts.css")) + if (id.startsWith("\0virtual:solidbase/default-theme/fonts.css")) return filteredFonts .map( (font) => diff --git a/src/default-theme/mdx-components.module.css b/src/default-theme/mdx-components.module.css index b7f17766..fbc053b8 100644 --- a/src/default-theme/mdx-components.module.css +++ b/src/default-theme/mdx-components.module.css @@ -335,7 +335,9 @@ a[data-footnote-ref] { .tabs-indicator { background: var(--sb-code-background-color); - transition: transform 150ms, width 50ms; + transition: + transform 150ms, + width 50ms; z-index: 1; overflow: hidden; } @@ -354,7 +356,9 @@ a[data-footnote-ref] { cursor: var(--sb-button-cursor); font-family: var(--sb-font-mono); font-size: 0.9rem; - transition: background-color 150ms, border 150ms; + transition: + background-color 150ms, + border 150ms; color: color-mix(in hsl, var(--sb-text-color) 75%, transparent); &[data-selected], diff --git a/src/default-theme/mdx-components.tsx b/src/default-theme/mdx-components.tsx index a271afd8..ede5c584 100644 --- a/src/default-theme/mdx-components.tsx +++ b/src/default-theme/mdx-components.tsx @@ -8,14 +8,14 @@ import { A } from "@solidjs/router"; import { type Accessor, type ComponentProps, + children, + createSignal, For, type ParentProps, Show, - children, - createSignal, splitProps, } from "solid-js"; -import { usePreferredLanguage } from "../client/preferred-language"; +import { usePreferredLanguage } from "../client/preferred-language.js"; import styles from "./mdx-components.module.css"; export function h1(props: ComponentProps<"h1">) { @@ -66,7 +66,7 @@ export function hr(props: ComponentProps<"hr">) { } export function table(props: ComponentProps<"table">) { - const [local, others] = splitProps(props, ["class"]); + const [_local, others] = splitProps(props, ["class"]); return (
@@ -179,7 +179,7 @@ export function DirectiveContainer( name: `tab-group:${props.title}`, sync: messageSync(new BroadcastChannel("tab-group")), storage: cookieStorage.withOptions({ - expires: new Date(+new Date() + 3e10), + expires: new Date(Date.now() + 3e10), }), }); diff --git a/src/default-theme/utils.ts b/src/default-theme/utils.ts index 4aa84568..cb66c028 100644 --- a/src/default-theme/utils.ts +++ b/src/default-theme/utils.ts @@ -1,8 +1,8 @@ -import type { DefaultThemeConfig } from "."; import { useRouteSolidBaseConfig as _useRouteConfig, useSolidBaseContext as _useSolidBaseContext, -} from "../client"; +} from "../client/index.jsx"; +import type { DefaultThemeConfig } from "./index.js"; export function useSolidBaseContext() { return _useSolidBaseContext(); diff --git a/src/mdx.ts b/src/mdx.ts new file mode 100644 index 00000000..c63df00b --- /dev/null +++ b/src/mdx.ts @@ -0,0 +1,413 @@ +import { + createComponent, + createContext, + type JSX, + mergeProps, + type ParentProps, + useContext, +} from "solid-js"; +import { Dynamic } from "solid-js/web"; + +const HTMLElements = [ + "html", + "base", + "head", + "link", + "meta", + "style", + "title", + "body", + "address", + "article", + "aside", + "footer", + "header", + "main", + "nav", + "section", + "body", + "blockquote", + "dd", + "div", + "dl", + "dt", + "figcaption", + "figure", + "hr", + "li", + "ol", + "p", + "pre", + "ul", + "a", + "abbr", + "b", + "bdi", + "bdo", + "br", + "cite", + "code", + "data", + "dfn", + "em", + "i", + "kbd", + "mark", + "q", + "rp", + "rt", + "ruby", + "s", + "samp", + "small", + "span", + "strong", + "sub", + "sup", + "time", + "u", + "var", + "wbr", + "area", + "audio", + "img", + "map", + "track", + "video", + "embed", + "iframe", + "object", + "param", + "picture", + "portal", + "source", + "svg", + "math", + "canvas", + "noscript", + "script", + "del", + "ins", + "caption", + "col", + "colgroup", + "table", + "tbody", + "td", + "tfoot", + "th", + "thead", + "tr", + "button", + "datalist", + "fieldset", + "form", + "input", + "label", + "legend", + "meter", + "optgroup", + "option", + "output", + "progress", + "select", + "textarea", + "details", + "dialog", + "menu", + "summary", + "details", + "slot", + "template", + "acronym", + "applet", + "basefont", + "bgsound", + "big", + "blink", + "center", + "content", + "dir", + "font", + "frame", + "frameset", + "hgroup", + "image", + "keygen", + "marquee", + "menuitem", + "nobr", + "noembed", + "noframes", + "plaintext", + "rb", + "rtc", + "shadow", + "spacer", + "strike", + "tt", + "xmp", + "a", + "abbr", + "acronym", + "address", + "applet", + "area", + "article", + "aside", + "audio", + "b", + "base", + "basefont", + "bdi", + "bdo", + "bgsound", + "big", + "blink", + "blockquote", + "body", + "br", + "button", + "canvas", + "caption", + "center", + "cite", + "code", + "col", + "colgroup", + "content", + "data", + "datalist", + "dd", + "del", + "details", + "dfn", + "dialog", + "dir", + "div", + "dl", + "dt", + "em", + "embed", + "fieldset", + "figcaption", + "figure", + "font", + "footer", + "form", + "frame", + "frameset", + "head", + "header", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "hgroup", + "hr", + "html", + "i", + "iframe", + "image", + "img", + "input", + "ins", + "kbd", + "keygen", + "label", + "legend", + "li", + "link", + "main", + "map", + "mark", + "marquee", + "menu", + "menuitem", + "meta", + "meter", + "nav", + "nobr", + "noembed", + "noframes", + "noscript", + "object", + "ol", + "optgroup", + "option", + "output", + "p", + "param", + "picture", + "plaintext", + "portal", + "pre", + "progress", + "q", + "rb", + "rp", + "rt", + "rtc", + "ruby", + "s", + "samp", + "script", + "section", + "select", + "shadow", + "slot", + "small", + "source", + "spacer", + "span", + "strike", + "strong", + "style", + "sub", + "summary", + "sup", + "table", + "tbody", + "td", + "template", + "textarea", + "tfoot", + "th", + "thead", + "time", + "title", + "tr", + "track", + "tt", + "u", + "ul", + "var", + "video", + "wbr", + "xmp", + "input", +]; + +const SVGElements = new Set([ + // "a", + "altGlyph", + "altGlyphDef", + "altGlyphItem", + "animate", + "animateColor", + "animateMotion", + "animateTransform", + "circle", + "clipPath", + "color-profile", + "cursor", + "defs", + "desc", + "ellipse", + "feBlend", + "feColorMatrix", + "feComponentTransfer", + "feComposite", + "feConvolveMatrix", + "feDiffuseLighting", + "feDisplacementMap", + "feDistantLight", + "feFlood", + "feFuncA", + "feFuncB", + "feFuncG", + "feFuncR", + "feGaussianBlur", + "feImage", + "feMerge", + "feMergeNode", + "feMorphology", + "feOffset", + "fePointLight", + "feSpecularLighting", + "feSpotLight", + "feTile", + "feTurbulence", + "filter", + "font", + "font-face", + "font-face-format", + "font-face-name", + "font-face-src", + "font-face-uri", + "foreignObject", + "g", + "glyph", + "glyphRef", + "hkern", + "image", + "line", + "linearGradient", + "marker", + "mask", + "metadata", + "missing-glyph", + "mpath", + "path", + "pattern", + "polygon", + "polyline", + "radialGradient", + "rect", + // "script", + "set", + "stop", + // "style", + "svg", + "switch", + "symbol", + "text", + "textPath", + // "title", + "tref", + "tspan", + "use", + "view", + "vkern", +]); + +export const MDXContext = createContext( + Object.fromEntries( + [...HTMLElements, ...SVGElements.keys()].map((el) => [ + el, + (_props: any) => { + const props = mergeProps(_props, { + component: el, + }); + return createComponent(Dynamic, props); + }, + ]), + ), +); + +export const MDXProvider = ( + props: ParentProps<{ + components: { + [k: string]: (props: any) => JSX.Element; + }; + }>, +) => { + const context = useContext(MDXContext); + return createComponent(MDXContext.Provider, { + get value() { + return { + ...context, + ...(props.components ?? {}), + }; + }, + get children() { + return props.children; + }, + }); +}; + +export const useMDXComponents = () => { + return useContext(MDXContext); +}; diff --git a/src/server.ts b/src/server.tsx similarity index 64% rename from src/server.ts rename to src/server.tsx index edf84875..ccbdc9a0 100644 --- a/src/server.ts +++ b/src/server.tsx @@ -1,4 +1,4 @@ -import { getLocale, getTheme } from "./client"; +import { getLocale, getTheme } from "./client/index.jsx"; export function getHtmlProps() { return { diff --git a/src/solid-mdx.ts b/src/solid-mdx.ts deleted file mode 100644 index 64ddc1ff..00000000 --- a/src/solid-mdx.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "solid-mdx"; diff --git a/src/types/solid-mdx.d.ts b/src/types/solid-mdx.d.ts deleted file mode 100644 index 4dcef8e6..00000000 --- a/src/types/solid-mdx.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -declare module "solid-mdx" { - import type { PropsWithChildren, JSX } from "solid-js"; - - export declare const MDXContext: import("solid-js").Context<{ - [k: string]: (props: any) => JSX.Element; - }>; - export declare const MDXProvider: ( - props: PropsWithChildren<{ - components: { - [k: string]: (props: any) => JSX.Element; - }; - }>, - ) => JSX.Element; - export declare const useMDXComponents: () => { - [k: string]: (props: any) => JSX.Element; - }; -} diff --git a/src/virtual.d.ts b/src/virtual.d.ts index d11f8217..c02fc5b9 100644 --- a/src/virtual.d.ts +++ b/src/virtual.d.ts @@ -1,5 +1,7 @@ declare module "virtual:solidbase/config" { - export const solidBaseConfig: import("./config").SolidBaseResolvedConfig; + export const solidBaseConfig: import( + "./config/index.js" + ).SolidBaseResolvedConfig; } declare module "virtual:solidbase/components" { @@ -12,3 +14,7 @@ declare module "virtual:solidbase/components" { declare module "virtual:solidbase/default-theme/fonts" { export const preloadFonts: Array<{ path: string; type: string }>; } + +declare module "virtual:solidbase/mdx" { + export const MDXProvider: typeof import("./mdx.ts").MDXProvider; +} diff --git a/src/vite-mdx/imports.ts b/src/vite-mdx/imports.ts index f740abd4..c13079d1 100644 --- a/src/vite-mdx/imports.ts +++ b/src/vite-mdx/imports.ts @@ -38,7 +38,7 @@ export function resolveImport( if (!importCache[cacheKey]) { try { importCache[cacheKey] = resolve.sync(name, { basedir: cwd }); - } catch (e) { + } catch (_e) { if (throwOnMissing) { throw new Error(`[vite-plugin-mdx] "${name}" must be installed`); } diff --git a/src/vite-mdx/index.ts b/src/vite-mdx/index.ts index 5691e78f..18508187 100644 --- a/src/vite-mdx/index.ts +++ b/src/vite-mdx/index.ts @@ -1,8 +1,7 @@ // ty vinxi :) -import type { Plugin } from "vite"; - import { VFile, type VFileCompatible } from "vfile"; +import type { Plugin } from "vite"; import { mergeArrays } from "./common.js"; import type { NamedImports } from "./imports.js"; import { createTransformer } from "./transform.js"; @@ -67,7 +66,7 @@ function createPlugin( }, async transform(_code, id, ssr) { let code = _code; - const [path, query] = id.split("?"); + const [path, _query] = id.split("?"); if (/\.mdx?$/.test(path)) { if (!transformMdx) throw new Error( @@ -82,8 +81,8 @@ function createPlugin( const input = new VFile({ value: code, path }); code = await transformMdx(input, { ...mdxOptions }); - // @ts-ignore - const refreshResult = await reactRefresh?.transform!.call( + // @ts-expect-error + const refreshResult = await reactRefresh?.transform?.call( this, code, `${path}.js`, diff --git a/src/vite-mdx/viteMdxTransclusion/index.ts b/src/vite-mdx/viteMdxTransclusion/index.ts index 4e4e17e1..0ef681c7 100644 --- a/src/vite-mdx/viteMdxTransclusion/index.ts +++ b/src/vite-mdx/viteMdxTransclusion/index.ts @@ -3,15 +3,15 @@ import { isAbsolute } from "node:path"; import LRUCache from "@alloc/quick-lru"; import { type FSWatcher, + normalizePath, type Plugin, type ResolvedConfig, - normalizePath, } from "vite"; import { mergeArrays } from "../common.js"; import type { MdxOptions, MdxPlugin } from "../types.js"; -import { ImportMap } from "./ImportMap.js"; import { createMdxAstCompiler } from "./createMdxAstCompiler.js"; +import { ImportMap } from "./ImportMap.js"; import { type MdxAstCache, remarkTransclusion } from "./remarkTransclusion.js"; /** @@ -68,7 +68,6 @@ export function viteMdxTransclusion( if (importers) { astCache.delete(filePath); for (const importer of importers) { - // @ts-ignore watcher!.emit("change", importer); } } diff --git a/tests/client/config.test.ts b/tests/client/config.test.ts new file mode 100644 index 00000000..209010f3 --- /dev/null +++ b/tests/client/config.test.ts @@ -0,0 +1,57 @@ +import { createRoot } from "solid-js"; +import { afterEach, describe, expect, it, vi } from "vitest"; + +function setSolidBaseConfig(value: Record) { + const store = ((globalThis as any).__solidBaseConfig ??= {}) as Record< + string, + unknown + >; + for (const key of Object.keys(store)) delete store[key]; + Object.assign(store, value); +} + +vi.mock("../../src/client/locale.ts", () => ({ + useLocale: () => ({ + currentLocale: () => ({ + config: { + themeConfig: { + nav: { title: "Localized" }, + }, + }, + }), + }), +})); + +describe("route config helper", () => { + afterEach(() => { + setSolidBaseConfig({}); + vi.resetModules(); + }); + + it("merges locale theme config over the base config", async () => { + setSolidBaseConfig({ + title: "Docs", + themeConfig: { + nav: { title: "Default" }, + sidebar: { "/": [] }, + }, + }); + + const { useRouteSolidBaseConfig } = await import( + "../../src/client/config.ts" + ); + + createRoot((dispose) => { + const config = useRouteSolidBaseConfig(); + + expect(config()).toMatchObject({ + title: "Docs", + themeConfig: { + nav: { title: "Localized" }, + sidebar: { "/": [] }, + }, + }); + dispose(); + }); + }); +}); diff --git a/tests/client/locale.test.ts b/tests/client/locale.test.ts new file mode 100644 index 00000000..b1bae52e --- /dev/null +++ b/tests/client/locale.test.ts @@ -0,0 +1,110 @@ +// @vitest-environment jsdom + +import { createRoot } from "solid-js"; +import { afterEach, describe, expect, it, vi } from "vitest"; + +const pathname = vi.fn<() => string>(() => "/fr/guide/install"); +const navigate = vi.fn<(to: string) => Promise>(() => Promise.resolve()); +const matchRest = vi.fn<() => string | undefined>(() => "guide/install"); + +function setSolidBaseConfig(value: Record) { + const store = ((globalThis as any).__solidBaseConfig ??= {}) as Record< + string, + unknown + >; + for (const key of Object.keys(store)) delete store[key]; + Object.assign(store, value); +} + +vi.mock("@solidjs/router", () => ({ + useLocation: () => ({ + get pathname() { + return pathname(); + }, + }), + useNavigate: () => navigate, + useMatch: () => () => ({ params: { rest: matchRest() } }), +})); + +vi.mock("solid-js", async () => { + const actual = await vi.importActual("solid-js"); + return { + ...actual, + startTransition: (fn: () => void) => Promise.resolve(fn()), + }; +}); + +vi.mock("solid-js/web", () => ({ + getRequestEvent: vi.fn(), + isServer: false, +})); + +describe("locale client helpers", () => { + afterEach(() => { + pathname.mockReset(); + pathname.mockReturnValue("/fr/guide/install"); + navigate.mockReset(); + navigate.mockReturnValue(Promise.resolve()); + matchRest.mockReset(); + matchRest.mockReturnValue("guide/install"); + setSolidBaseConfig({}); + vi.resetModules(); + }); + + it("selects the current locale, prefixes paths, and navigates when switching", async () => { + document.documentElement.lang = ""; + setSolidBaseConfig({ + lang: "en-US", + locales: { + root: { label: "English" }, + fr: { label: "Francais" }, + }, + }); + + const { LocaleContextProvider, getLocaleLink, useLocale } = await import( + "../../src/client/locale.ts" + ); + + createRoot((dispose) => { + let value: ReturnType | undefined; + + LocaleContextProvider({ + get children() { + value = useLocale(); + return null; + }, + } as any); + + expect(value?.currentLocale().code).toBe("fr"); + expect(value?.routePath()).toBe("/guide/install"); + expect(value?.applyPathPrefix("reference")).toBe("/fr/reference"); + expect(getLocaleLink(value!.locales[0]!)).toBe("/"); + expect(getLocaleLink(value!.locales[1]!)).toBe("/fr/"); + + void value?.setLocale(value!.locales[0]!); + dispose(); + }); + + await Promise.resolve(); + expect(navigate).toHaveBeenCalledWith("/guide/install"); + expect(document.documentElement.lang).toBe("en-US"); + }); + + it("supports custom locale links and root fallback resolution", async () => { + setSolidBaseConfig({ + lang: "en-US", + locales: { + root: { label: "English", link: "/docs/" }, + de: { label: "Deutsch", link: "/de/docs/" }, + }, + }); + + const { getLocale, getLocaleLink } = await import( + "../../src/client/locale.ts" + ); + + expect(getLocale("/de/docs/setup").code).toBe("de"); + expect(getLocale("/docs/setup").code).toBe("en-US"); + expect(getLocaleLink(getLocale("/de/docs/setup"))).toBe("/de/docs/"); + }); +}); diff --git a/tests/client/page-data.test.ts b/tests/client/page-data.test.ts new file mode 100644 index 00000000..d366ef30 --- /dev/null +++ b/tests/client/page-data.test.ts @@ -0,0 +1,79 @@ +// @vitest-environment jsdom + +import { createRoot } from "solid-js"; +import { afterEach, describe, expect, it, vi } from "vitest"; + +const useCurrentMatches = vi.fn(); + +vi.mock("@solidjs/router", () => ({ + useCurrentMatches, +})); + +vi.mock("solid-js", async () => { + const actual = await vi.importActual("solid-js"); + return { + ...actual, + createResource: (source: any, fetcher: (value: any) => Promise) => { + let value: any; + Promise.resolve(typeof source === "function" ? source() : source) + .then((resolved) => fetcher(resolved)) + .then((resolved) => { + value = resolved; + }); + return [() => value] as const; + }, + }; +}); + +describe("page data helpers", () => { + const pagePath = "tests/fixtures/page.mdx"; + + afterEach(() => { + useCurrentMatches.mockReset(); + vi.resetModules(); + (window as any).$$SolidBase_page_data = undefined; + }); + + it("reads current page data from the window cache in dev", async () => { + useCurrentMatches.mockReturnValue([ + { + route: { key: { $component: { src: `${pagePath}?import` } } }, + }, + ]); + (window as any).$$SolidBase_page_data = { + [pagePath]: { + frontmatter: { title: "Hello", description: "World" }, + llmText: "Hello world", + }, + }; + + const { CurrentPageDataProvider, useCurrentPageData, useFrontmatter } = + await import("../../src/client/page-data.ts"); + + let pageData: ReturnType | undefined; + let frontmatter: ReturnType> | undefined; + + const dispose = createRoot((dispose) => { + CurrentPageDataProvider({ + get children() { + pageData = useCurrentPageData(); + frontmatter = useFrontmatter(); + return null; + }, + } as any); + return dispose; + }); + + await Promise.resolve(); + await Promise.resolve(); + await Promise.resolve(); + await Promise.resolve(); + + expect((pageData?.() as any)?.llmText).toBe("Hello world"); + expect(frontmatter?.()).toEqual({ + title: "Hello", + description: "World", + }); + dispose(); + }); +}); diff --git a/tests/client/sidebar.test.ts b/tests/client/sidebar.test.ts new file mode 100644 index 00000000..3f98cec4 --- /dev/null +++ b/tests/client/sidebar.test.ts @@ -0,0 +1,131 @@ +import { createRoot } from "solid-js"; +import { afterEach, describe, expect, it, vi } from "vitest"; + +const pathname = vi.fn<() => string>(() => "/guide/install"); +const routePath = vi.fn<() => string>(() => "/guide/install"); + +vi.mock("@solidjs/router", () => ({ + useLocation: () => ({ + get pathname() { + return pathname(); + }, + }), +})); + +vi.mock("../../src/client/locale.ts", () => ({ + useLocale: () => ({ + routePath, + }), +})); + +describe("client sidebar helpers", () => { + afterEach(() => { + pathname.mockReset(); + pathname.mockReturnValue("/guide/install"); + routePath.mockReset(); + routePath.mockReturnValue("/guide/install"); + vi.resetModules(); + }); + + it("selects the longest matching sidebar prefix", async () => { + const { SidebarProvider, useSidebar } = await import( + "../../src/client/sidebar.ts" + ); + + createRoot((dispose) => { + let value: ReturnType> | undefined; + SidebarProvider({ + config: { + "/guide": [{ title: "Guide", link: "/intro" }], + "/guide/install": [{ title: "Install", link: "/" }], + }, + get children() { + value = useSidebar()(); + return null; + }, + } as any); + + expect(value).toEqual({ + prefix: "/guide/install", + items: [{ title: "Install", link: "/" }], + }); + dispose(); + }); + }); + + it("flattens nested sections and computes prev/next links", async () => { + pathname.mockReturnValue("/guide/nested/install"); + routePath.mockReturnValue("/guide/nested/install"); + + const { SidebarProvider, usePrevNext } = await import( + "../../src/client/sidebar.ts" + ); + + createRoot((dispose) => { + let value: ReturnType | undefined; + SidebarProvider({ + config: { + "/guide": [ + { title: "Intro", link: "/intro" }, + { + title: "Section", + base: "/nested", + items: [ + { title: "Install", link: "/install" }, + { title: "External", link: "https://example.com" }, + ], + }, + ], + }, + get children() { + value = usePrevNext() as any; + return null; + }, + } as any); + + expect(value).toBeDefined(); + expect(value!.prevLink()).toMatchObject({ + title: "Intro", + link: "/guide/intro", + depth: 0, + }); + expect(value!.nextLink()).toMatchObject({ + title: "External", + link: "https://example.com", + target: "_blank", + rel: "noopener noreferrer", + depth: 1, + }); + dispose(); + }); + }); + + it("supports legacy section-shaped sidebar config objects", async () => { + const { SidebarProvider, useSidebar } = await import( + "../../src/client/sidebar.ts" + ); + + createRoot((dispose) => { + let value: ReturnType> | undefined; + + SidebarProvider({ + config: { + "/guide": { + title: "Guide", + items: [{ title: "Intro", link: "/intro" }], + }, + }, + get children() { + value = useSidebar()(); + return null; + }, + } as any); + + expect(value).toEqual({ + prefix: "/guide", + items: [{ title: "Intro", link: "/intro" }], + }); + dispose(); + }); + }); +}); diff --git a/tests/client/theme.test.ts b/tests/client/theme.test.ts new file mode 100644 index 00000000..914f9692 --- /dev/null +++ b/tests/client/theme.test.ts @@ -0,0 +1,91 @@ +// @vitest-environment jsdom + +import { createRoot } from "solid-js"; +import { afterEach, describe, expect, it, vi } from "vitest"; + +const prefersDarkValue = vi.fn<() => boolean>(() => false); +const useHead = vi.fn(); + +vi.mock("@solid-primitives/media", () => ({ + usePrefersDark: () => prefersDarkValue, +})); + +vi.mock("solid-js", async () => { + const actual = await vi.importActual("solid-js"); + return { + ...actual, + createEffect: (fn: () => void) => fn(), + createUniqueId: () => "theme-script", + }; +}); + +vi.mock("@solidjs/meta", () => ({ + useHead, +})); + +vi.mock("solid-js/web", () => ({ + getRequestEvent: vi.fn(), + isServer: false, +})); + +vi.mock("../../src/client/read-theme-cookie.js?raw", () => ({ + default: "window.__theme = document.cookie", +})); + +describe("theme client helpers", () => { + afterEach(async () => { + prefersDarkValue.mockReset(); + prefersDarkValue.mockReturnValue(false); + useHead.mockReset(); + vi.resetModules(); + document.cookie = ""; + }); + + it("derives raw theme, variant, and theme from cookies and system preference", async () => { + document.cookie = "theme=system"; + prefersDarkValue.mockReturnValue(true); + + const { getRawTheme, getTheme, getThemeVariant, setTheme } = await import( + "../../src/client/theme.ts" + ); + + expect(getRawTheme()).toBe("sdark"); + expect(getTheme()).toBe("dark"); + expect(getThemeVariant()).toBe("system"); + + setTheme("light"); + expect(getRawTheme()).toBe("light"); + expect(getThemeVariant()).toBe("light"); + }); + + it("writes theme side effects and injects the theme cookie script", async () => { + const setAttribute = vi.spyOn(document.documentElement, "setAttribute"); + document.cookie = "theme=dark"; + + const { setTheme, useThemeListener } = await import( + "../../src/client/theme.ts" + ); + + const dispose = createRoot((dispose) => { + setTheme("dark"); + useThemeListener(); + return dispose; + }); + + await Promise.resolve(); + await Promise.resolve(); + + expect(setAttribute).toHaveBeenCalledWith("data-theme", "dark"); + expect(document.cookie).toContain("theme=dark"); + expect(useHead).toHaveBeenCalledWith( + expect.objectContaining({ + tag: "script", + props: expect.objectContaining({ + children: "window.__theme = document.cookie", + }), + }), + ); + setAttribute.mockRestore(); + dispose(); + }); +}); diff --git a/tests/config/document-markdown.test.ts b/tests/config/document-markdown.test.ts new file mode 100644 index 00000000..ec8ec156 --- /dev/null +++ b/tests/config/document-markdown.test.ts @@ -0,0 +1,198 @@ +import { describe, expect, it } from "vitest"; + +import { toDocumentMarkdown } from "../../src/config/document-markdown.ts"; +import { routeFixturePath } from "../helpers/fixtures.ts"; + +describe("toDocumentMarkdown", () => { + it("renders arbitrary frontmatter expressions across markdown content", async () => { + const source = [ + "---", + "title: Hello", + "product: SolidBase", + "tagline: Fast docs", + "release: 3", + "---", + "", + "# {frontmatter.title}", + "", + "Welcome to {frontmatter.product}.", + "", + "> {frontmatter.tagline}", + "", + "- v{frontmatter.release}", + "", + '{frontmatter["product"]}', + ].join("\n"); + + expect( + await toDocumentMarkdown(source, { + config: {}, + filePath: routeFixturePath("index.mdx"), + }), + ).toBe( + [ + "# Hello", + "", + "Welcome to SolidBase.", + "", + "> Fast docs", + "", + "* v3", + "", + "SolidBase", + ].join("\n"), + ); + }); + + it("strips frontmatter metadata and keeps code fences untouched", async () => { + const source = [ + "---", + "title: Hello", + "product: SolidBase", + "---", + "", + "# {frontmatter.title}", + "", + "```md", + "{frontmatter.product}", + "```", + ].join("\n"); + + const markdown = await toDocumentMarkdown(source, { + config: {}, + filePath: routeFixturePath("index.mdx"), + }); + + expect(markdown).toContain("# Hello"); + expect(markdown).toContain("```md\n{frontmatter.product}\n```"); + expect(markdown).not.toContain("title: Hello"); + expect(markdown).not.toContain("export const frontmatter"); + }); + + it("renders scalar values and removes empty flow expressions", async () => { + const source = [ + "---", + "count: 3", + "published: false", + "tags:", + " - docs", + " - llms", + "---", + "", + "Count: {frontmatter.count}", + "", + "{frontmatter.published}", + "", + "{frontmatter.tags}", + ].join("\n"); + + expect( + await toDocumentMarkdown(source, { + config: {}, + filePath: routeFixturePath("index.mdx"), + }), + ).toBe(["Count: 3", "", "docsllms"].join("\n")); + }); + + it("keeps object expressions intact and renders missing values as empty text", async () => { + const source = [ + "---", + "meta:", + " nested: value", + "---", + "", + "Object: {frontmatter.meta}", + "", + "Broken: {frontmatter.missing?.value}", + ].join("\n"); + + expect( + await toDocumentMarkdown(source, { + config: {}, + filePath: routeFixturePath("index.mdx"), + }), + ).toBe(["Object: {frontmatter.meta}", "", "Broken:"].join("\n")); + }); + + it("matches a representative rendered-markdown fixture", async () => { + const source = [ + "---", + "title: Home", + "product: SolidBase", + "tagline: Fast docs", + "release: 3", + "---", + "", + "# {frontmatter.title}", + "", + "Welcome to {frontmatter.product}.", + "", + "> {frontmatter.tagline}", + "", + "- v{frontmatter.release}", + "", + '{frontmatter["product"]}', + "", + "```md", + "{frontmatter.product}", + "```", + ].join("\n"); + + expect( + await toDocumentMarkdown(source, { + config: {}, + filePath: routeFixturePath("index.mdx"), + }), + ).toBe( + [ + "# Home", + "", + "Welcome to SolidBase.", + "", + "> Fast docs", + "", + "* v3", + "", + "SolidBase", + "", + "```md", + "{frontmatter.product}", + "```", + ].join("\n"), + ); + }); + + it("applies TOC, imported code, and github alert transforms together", async () => { + const codePath = routeFixturePath("..", "..", "code", "example.ts"); + const source = [ + "---", + "title: Home", + "product: SolidBase", + "---", + "", + "# {frontmatter.title}", + "", + "[[toc]]", + "", + "## Install", + "", + "> [!NOTE]", + "> Welcome to {frontmatter.product}.", + "", + `\`\`\`ts file="${codePath}#L2-L3"`, + "```", + ].join("\n"); + + const markdown = await toDocumentMarkdown(source, { + config: { markdown: { toc: {} } }, + filePath: routeFixturePath("index.mdx"), + }); + + expect(markdown).toContain("# Home"); + expect(markdown).toContain("1. [Install](#install)"); + expect(markdown).toContain(' ({ + default: { + existsSync, + }, +})); + +vi.mock("cross-spawn", () => ({ + spawn, +})); + +function createChild(output: string) { + const child = new EventEmitter() as EventEmitter & { + stdout: EventEmitter; + }; + child.stdout = new EventEmitter(); + + queueMicrotask(() => { + child.stdout.emit("data", output); + child.emit("close"); + }); + + return child; +} + +describe("getGitTimestamp", () => { + const missingPath = "tests/fixtures/missing.mdx"; + const docPath = "tests/fixtures/doc.mdx"; + const errorPath = "tests/fixtures/error.mdx"; + + beforeEach(() => { + vi.resetModules(); + existsSync.mockReset(); + spawn.mockReset(); + }); + + it("returns 0 for missing files without spawning git", async () => { + existsSync.mockReturnValue(false); + const { getGitTimestamp } = await import("../../src/config/git.ts"); + + expect(getGitTimestamp(missingPath)).toBe(0); + expect(spawn).not.toHaveBeenCalled(); + }); + + it("spawns git once and caches successful timestamps", async () => { + existsSync.mockReturnValue(true); + spawn.mockImplementation(() => createChild("2024-01-02 03:04:05 +0000")); + const { getGitTimestamp } = await import("../../src/config/git.ts"); + + await expect(getGitTimestamp(docPath)).resolves.toBe( + +new Date("2024-01-02 03:04:05 +0000"), + ); + expect(getGitTimestamp(docPath)).toBe( + +new Date("2024-01-02 03:04:05 +0000"), + ); + expect(spawn).toHaveBeenCalledTimes(1); + expect(spawn).toHaveBeenCalledWith( + "git", + ["log", "-1", '--pretty="%ai"', "doc.mdx"], + { cwd: dirname(docPath) }, + ); + }); + + it("rejects when git spawning errors", async () => { + existsSync.mockReturnValue(true); + spawn.mockImplementation(() => { + const child = new EventEmitter() as EventEmitter & { + stdout: EventEmitter; + }; + child.stdout = new EventEmitter(); + queueMicrotask(() => child.emit("error", new Error("git failed"))); + return child; + }); + const { getGitTimestamp } = await import("../../src/config/git.ts"); + + await expect(getGitTimestamp(errorPath)).rejects.toThrow("git failed"); + }); +}); diff --git a/tests/config/import-code-file.test.ts b/tests/config/import-code-file.test.ts new file mode 100644 index 00000000..7dd7f599 --- /dev/null +++ b/tests/config/import-code-file.test.ts @@ -0,0 +1,71 @@ +import remarkParse from "remark-parse"; +import { unified } from "unified"; +import { describe, expect, it } from "vitest"; + +import { remarkImportCodeFile } from "../../src/config/remark-plugins/import-code-file.ts"; +import { routeFixturePath } from "../helpers/fixtures.ts"; + +async function transform( + markdown: string, + filePath = routeFixturePath("index.mdx"), +) { + const processor = unified().use(remarkParse).use(remarkImportCodeFile); + const tree = processor.parse(markdown); + return processor.run(tree, { path: filePath, value: markdown }); +} + +describe("remarkImportCodeFile", () => { + it("inlines imported code and annotates title metadata", async () => { + const codePath = routeFixturePath("..", "..", "code", "example.ts"); + const tree: any = await transform(`\`\`\`ts file="${codePath}"\n\`\`\``); + const code = tree.children[0]; + + expect(code.lang).toBe("ts"); + expect(code.meta).toContain('title="example.ts"'); + expect(code.value).toContain('console.log("hi");'); + expect(code.value).toContain('console.log("bye");'); + }); + + it("supports line ranges and strips redundant indentation", async () => { + const codePath = routeFixturePath("..", "..", "code", "example.ts"); + const tree: any = await transform( + `\`\`\`ts file="${codePath}#L2-L3"\n\`\`\``, + ); + const code = tree.children[0]; + + expect(code.value).toBe('console.log("hi");\nconsole.log("bye");'); + }); + + it("allows custom transforms before line extraction", async () => { + const codePath = routeFixturePath("..", "..", "code", "example.ts"); + const processor = unified() + .use(remarkParse) + .use(remarkImportCodeFile, { + transform: (code) => code.replace("bye", "see ya"), + }); + const markdown = `\`\`\`ts file="${codePath}#L2-L3"\n\`\`\``; + const tree: any = await processor.run(processor.parse(markdown), { + path: routeFixturePath("index.mdx"), + value: markdown, + }); + + expect(tree.children[0].value).toContain('console.log("see ya");'); + }); + + it("throws for missing files so broken imports are visible", async () => { + const missingPath = routeFixturePath("..", "..", "code", "missing.ts"); + + await expect( + transform(`\`\`\`ts file="${missingPath}"\n\`\`\``), + ).rejects.toThrow(/missing\.ts|ENOENT/); + }); + + it("returns an empty snippet for out-of-range line selections", async () => { + const codePath = routeFixturePath("..", "..", "code", "example.ts"); + const tree: any = await transform( + `\`\`\`ts file="${codePath}#L99-L100"\n\`\`\``, + ); + + expect(tree.children[0].value).toBe(""); + }); +}); diff --git a/tests/config/index.test.ts b/tests/config/index.test.ts new file mode 100644 index 00000000..2d6aefbd --- /dev/null +++ b/tests/config/index.test.ts @@ -0,0 +1,94 @@ +import { describe, expect, it, vi } from "vitest"; + +const solidBaseMdx = vi.fn(); +const solidBaseVitePlugin = vi.fn(); + +vi.mock("../../src/config/mdx.ts", () => ({ + solidBaseMdx, +})); + +vi.mock("../../src/config/vite-plugin/index.ts", () => ({ + default: solidBaseVitePlugin, +})); + +vi.mock("../../src/default-theme/index.js", () => ({ + default: { + componentsPath: "/themes/default", + }, +})); + +describe("createSolidBase", () => { + it("applies defaults and returns mdx, core, and theme plugins", async () => { + solidBaseMdx.mockReset(); + solidBaseVitePlugin.mockReset(); + solidBaseMdx.mockReturnValue("mdx-plugin"); + solidBaseVitePlugin.mockReturnValue("solidbase-plugin"); + + const { createSolidBase } = await import("../../src/config/index.ts"); + const theme = { + componentsPath: "/themes/custom", + config: vi.fn(), + vite: vi.fn(() => "theme-plugin"), + } as any; + + const solidBase = createSolidBase(theme); + const config = solidBase.startConfig({ + extensions: ["tsx", "md"], + }); + const plugins = solidBase.plugin({ title: "Docs", llms: true }); + + expect(config.extensions).toEqual(["tsx", "md", "mdx"]); + expect(config.ssr).toBe(true); + expect(theme.config).toHaveBeenCalledWith( + expect.objectContaining({ + title: "Docs", + llms: true, + lang: "en-US", + issueAutolink: false, + }), + ); + expect(plugins).toEqual(["mdx-plugin", "solidbase-plugin", "theme-plugin"]); + expect(solidBaseMdx).toHaveBeenCalledWith( + expect.objectContaining({ title: "Docs", llms: true }), + ); + expect(solidBaseVitePlugin).toHaveBeenCalledWith( + theme, + expect.objectContaining({ title: "Docs", llms: true }), + ); + }); + + it("merges inherited theme config hooks and reverses theme vite order", async () => { + solidBaseMdx.mockReset(); + solidBaseVitePlugin.mockReset(); + solidBaseMdx.mockReturnValue("mdx-plugin"); + solidBaseVitePlugin.mockReturnValue("solidbase-plugin"); + + const { createSolidBase } = await import("../../src/config/index.ts"); + const parent = { + componentsPath: "/themes/parent", + config: vi.fn(), + vite: vi.fn(() => "parent-plugin"), + } as any; + const child = { + componentsPath: "/themes/child", + extends: parent, + config: vi.fn(), + vite: vi.fn(() => "child-plugin"), + } as any; + + const solidBase = createSolidBase(child); + const plugins = solidBase.plugin(); + + expect(child.config.mock.invocationCallOrder[0]).toBeLessThan( + parent.config.mock.invocationCallOrder[0], + ); + expect(parent.config).toHaveBeenCalled(); + expect(child.vite.mock.invocationCallOrder[0]).toBeLessThan( + parent.vite.mock.invocationCallOrder[0], + ); + expect((plugins as any[]).slice(-2)).toEqual([ + "parent-plugin", + "child-plugin", + ]); + }); +}); diff --git a/tests/config/llms-index.test.ts b/tests/config/llms-index.test.ts new file mode 100644 index 00000000..2545c466 --- /dev/null +++ b/tests/config/llms-index.test.ts @@ -0,0 +1,335 @@ +import { mkdir, mkdtemp, writeFile } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { describe, expect, it } from "vitest"; +import { + buildLlmsIndex, + getDocumentByPath, + getLlmDocuments, +} from "../../src/config/llms-index.ts"; +import { fixtureSiteRoot } from "../helpers/fixtures.ts"; + +const config = { + title: "SolidBase Docs", + description: "Documentation for SolidBase", + llms: true, + themeConfig: { + sidebar: { + "/": [ + { + title: "Guide", + items: [{ title: "Getting Started", link: "/guide/getting-started" }], + }, + ], + }, + }, + markdown: {}, +} as any; + +describe("getLlmDocuments", () => { + it("collects transformed markdown documents and skips excluded files", async () => { + const documents = await getLlmDocuments(fixtureSiteRoot, config); + + expect(documents.map((document) => document.routePath)).toEqual([ + "/guide/getting-started", + "/", + "/plain", + ]); + + expect(documents[1]).toMatchObject({ + title: "Home", + description: "Welcome home", + markdownPath: "/index.md", + }); + expect(documents[1]?.content).toContain("Welcome to SolidBase."); + expect(documents[1]?.content).toContain( + "```md\n{frontmatter.product}\n```", + ); + }); + + it("builds llms index content from sidebar metadata", async () => { + const documents = await getLlmDocuments(fixtureSiteRoot, config); + const index = buildLlmsIndex("https://solidbase.dev", config, documents); + + expect(index).toContain("# SolidBase Docs"); + expect(index).toContain("## Guide"); + expect(index).toContain( + "- [Getting Started](https://solidbase.dev/guide/getting-started.md): Learn the basics", + ); + }); + + it("looks up emitted documents by markdown path", async () => { + const documents = await getLlmDocuments(fixtureSiteRoot, config); + + expect( + getDocumentByPath(documents, "/guide/getting-started.md"), + ).toMatchObject({ + routePath: "/guide/getting-started", + title: "Getting Started", + }); + }); + + it("falls back to a flat index when no sidebar is configured", async () => { + const documents = await getLlmDocuments(fixtureSiteRoot, config); + const index = buildLlmsIndex( + undefined, + { ...config, themeConfig: {} }, + documents, + ); + + expect(index).toContain( + "- [Getting Started](/guide/getting-started.md): Learn the basics", + ); + expect(index).toContain("- [Home](/index.md): Welcome home"); + }); + + it("defaults llms.txt to root locale documents when localized routes exist", () => { + const index = buildLlmsIndex( + undefined, + { + ...config, + themeConfig: {}, + locales: { + root: { label: "English" }, + fr: { label: "Francais" }, + }, + }, + [ + { + title: "Home", + description: "Welcome home", + routePath: "/", + markdownPath: "/index.md", + content: "Home", + }, + { + title: "Guide", + description: "English docs", + routePath: "/guide/getting-started", + markdownPath: "/guide/getting-started.md", + content: "Guide", + }, + { + title: "Accueil", + description: "French docs", + routePath: "/fr", + markdownPath: "/fr.md", + content: "Accueil", + }, + { + title: "Demarrage", + description: "French getting started", + routePath: "/fr/guide/getting-started", + markdownPath: "/fr/guide/getting-started.md", + content: "Demarrage", + }, + ], + ); + + expect(index).toContain("- [Home](/index.md): Welcome home"); + expect(index).toContain( + "- [Guide](/guide/getting-started.md): English docs", + ); + expect(index).not.toContain("/fr.md"); + expect(index).not.toContain("/fr/guide/getting-started.md"); + }); + + it("renders nav sections and nested sidebar groups as headings", () => { + const index = buildLlmsIndex( + undefined, + { + ...config, + themeConfig: { + nav: [ + { text: "Guide", link: "/guide" }, + { text: "Reference", link: "/reference" }, + ], + sidebar: { + "/guide": [ + { title: "About", link: "/" }, + { + title: "Customization", + items: [ + { + title: "Custom Themes", + link: "/customization/custom-themes", + }, + ], + }, + { + title: "Features", + items: [ + { + title: "LLMs.txt", + link: "/features/llms", + }, + ], + }, + ], + "/reference": [ + { title: "Index", link: "/" }, + { title: "Frontmatter", link: "/frontmatter" }, + { title: "Runtime API", link: "/runtime-api" }, + { + title: "Default Theme", + items: [ + { + title: "Landing", + link: "/default-theme/landing", + }, + ], + }, + ], + }, + }, + }, + [ + { + title: "About", + routePath: "/guide", + markdownPath: "/guide.md", + content: "About", + }, + { + title: "Custom Themes", + routePath: "/guide/customization/custom-themes", + markdownPath: "/guide/customization/custom-themes.md", + content: "Custom Themes", + }, + { + title: "LLMs.txt", + routePath: "/guide/features/llms", + markdownPath: "/guide/features/llms.md", + content: "LLMs", + }, + { + title: "Index", + routePath: "/reference", + markdownPath: "/reference.md", + content: "Reference", + }, + { + title: "Frontmatter", + routePath: "/reference/frontmatter", + markdownPath: "/reference/frontmatter.md", + content: "Frontmatter", + }, + { + title: "Runtime API", + routePath: "/reference/runtime-api", + markdownPath: "/reference/runtime-api.md", + content: "Runtime API", + }, + { + title: "Landing", + routePath: "/reference/default-theme/landing", + markdownPath: "/reference/default-theme/landing.md", + content: "Landing", + }, + ], + ); + + expect(index).toContain("- [About](/guide.md)"); + expect(index).toContain("## Guide"); + expect(index).toContain("## Reference"); + expect(index).toContain("- [About](/guide.md)"); + expect(index).toContain( + "### Customization\n\n- [Custom Themes](/guide/customization/custom-themes.md)", + ); + expect(index).toContain( + "### Features\n\n- [LLMs.txt](/guide/features/llms.md)", + ); + expect(index).toContain("- [Index](/reference.md)"); + expect(index).toContain("- [Frontmatter](/reference/frontmatter.md)"); + expect(index).toContain("- [Runtime API](/reference/runtime-api.md)"); + expect(index).toContain( + "### Default Theme\n\n- [Landing](/reference/default-theme/landing.md)", + ); + }); + + it("uses route path as a title fallback and respects nested llms exclusion", async () => { + const root = await mkdtemp(join(tmpdir(), "solidbase-llms-")); + const routesDir = join(root, "src", "routes", "guide"); + await mkdir(routesDir, { recursive: true }); + + await writeFile( + join(root, "src", "routes", "guide", "no-title.mdx"), + "Paragraph only.", + ); + await writeFile( + join(root, "src", "routes", "guide", "excluded.mdx"), + ["---", "llms:", " exclude: true", "---", "", "Should not appear."].join( + "\n", + ), + ); + + const documents = await getLlmDocuments(root, { + ...config, + themeConfig: {}, + }); + + expect(documents).toEqual([ + expect.objectContaining({ + title: "/guide/no-title", + routePath: "/guide/no-title", + markdownPath: "/guide/no-title.md", + content: "Paragraph only.", + }), + ]); + }); + + it("skips not-found route files from llms output", async () => { + const root = await mkdtemp(join(tmpdir(), "solidbase-llms-404-")); + await mkdir(join(root, "src", "routes", "fr"), { recursive: true }); + + await writeFile( + join(root, "src", "routes", "index.mdx"), + ["---", "title: Home", "---", "", "Welcome home."].join("\n"), + ); + await writeFile( + join(root, "src", "routes", "[...404].mdx"), + ["---", "title: Not Found", "---", "", "Missing page."].join("\n"), + ); + await writeFile( + join(root, "src", "routes", "fr", "[...404].mdx"), + ["---", "title: Introuvable", "---", "", "Page manquante."].join("\n"), + ); + + const documents = await getLlmDocuments(root, { + ...config, + themeConfig: {}, + }); + + expect(documents.map((document) => document.routePath)).toEqual(["/"]); + }); + + it("strips numeric ordering prefixes from llms route paths", async () => { + const root = await mkdtemp(join(tmpdir(), "solidbase-llms-ordering-")); + await mkdir(join(root, "src", "routes", "guide", "features"), { + recursive: true, + }); + + await writeFile( + join(root, "src", "routes", "guide", "(0)quickstart.mdx"), + ["---", "title: Quick Start", "---", "", "Start here."].join("\n"), + ); + await writeFile( + join(root, "src", "routes", "guide", "features", "(3)llms.mdx"), + ["---", "title: LLMs.txt", "---", "", "AI docs."].join("\n"), + ); + + const documents = await getLlmDocuments(root, { + ...config, + themeConfig: {}, + }); + + expect(documents.map((document) => document.routePath)).toEqual([ + "/guide/quickstart", + "/guide/features/llms", + ]); + expect(documents.map((document) => document.markdownPath)).toEqual([ + "/guide/quickstart.md", + "/guide/features/llms.md", + ]); + }); +}); diff --git a/tests/config/llms-plugin.test.ts b/tests/config/llms-plugin.test.ts new file mode 100644 index 00000000..0f529693 --- /dev/null +++ b/tests/config/llms-plugin.test.ts @@ -0,0 +1,54 @@ +import { describe, expect, it, vi } from "vitest"; + +import solidBaseLlmsPlugin from "../../src/config/vite-plugin/llms.ts"; +import { fixtureSiteRoot } from "../helpers/fixtures.ts"; + +describe("solidBaseLlmsPlugin", () => { + it("returns no plugin when llms is disabled", () => { + expect(solidBaseLlmsPlugin({ llms: false } as any)).toEqual([]); + }); + + it("emits llms assets for the configured root", async () => { + const pluginOption = solidBaseLlmsPlugin({ + title: "SolidBase Docs", + description: "Documentation for SolidBase", + llms: true, + themeConfig: { + sidebar: { + "/": [ + { + title: "Guide", + items: [ + { title: "Getting Started", link: "/guide/getting-started" }, + ], + }, + ], + }, + }, + markdown: {}, + } as any); + const plugin = ( + Array.isArray(pluginOption) ? pluginOption[0] : pluginOption + ) as any; + expect(plugin).toBeDefined(); + if (!plugin) throw new Error("Expected LLMS plugin to be defined"); + + plugin.configResolved?.({ root: fixtureSiteRoot } as any); + const emitFile = vi.fn(); + + await plugin.generateBundle?.call({ emitFile } as any); + + expect(emitFile).toHaveBeenCalledWith( + expect.objectContaining({ fileName: "llms.txt", type: "asset" }), + ); + expect(emitFile).toHaveBeenCalledWith( + expect.objectContaining({ fileName: "index.md", type: "asset" }), + ); + expect(emitFile).toHaveBeenCalledWith( + expect.objectContaining({ + fileName: "guide/getting-started.md", + type: "asset", + }), + ); + }); +}); diff --git a/tests/config/remark-core.test.ts b/tests/config/remark-core.test.ts new file mode 100644 index 00000000..065c8b4a --- /dev/null +++ b/tests/config/remark-core.test.ts @@ -0,0 +1,149 @@ +import remarkFrontmatter from "remark-frontmatter"; +import remarkMdx from "remark-mdx"; +import remarkParse from "remark-parse"; +import { unified } from "unified"; +import { VFile } from "vfile"; +import { describe, expect, it } from "vitest"; + +import { remarkAddClass } from "../../src/config/remark-plugins/kbd.ts"; +import { + type FrontmatterRoot, + remarkMdxFrontmatter, +} from "../../src/config/remark-plugins/mdx-frontmatter.ts"; +import { remarkSteps } from "../../src/config/remark-plugins/steps.ts"; + +async function runMarkdown(markdown: string, ...plugins: Array) { + const processor = unified().use(remarkParse).use(remarkMdx); + for (const plugin of plugins) { + if (Array.isArray(plugin)) processor.use(plugin[0], plugin[1]); + else processor.use(plugin); + } + const file = new VFile({ value: markdown, path: "tests/fixtures/test.mdx" }); + const tree = processor.parse(file); + return processor.run(tree, file); +} + +describe("remarkSteps", () => { + it("groups consecutive numbered headings into a Steps container", async () => { + const tree: any = await runMarkdown( + [ + "## 1. Install", + "", + "Install the package.", + "", + "## 2. Configure", + "", + "Add config.", + ].join("\n"), + remarkSteps, + ); + + const steps = tree.children[0]; + expect(steps.type).toBe("mdxJsxFlowElement"); + expect(steps.name).toBe("Steps"); + expect(steps.children).toHaveLength(2); + expect(steps.children[0].name).toBe("Step"); + expect(steps.children[0].children[0].children[0].value).toBe("Install"); + expect(steps.children[1].children[1].children[0].value).toBe("Add config."); + }); + + it("stops grouping when numbering breaks or heading depth changes", async () => { + const tree: any = await runMarkdown( + [ + "## 1. First", + "", + "## 3. Skipped", + "", + "### 4. Nested", + "", + "## Not a step", + ].join("\n"), + remarkSteps, + ); + + expect(tree.children[0].name).toBe("Steps"); + expect(tree.children[0].children).toHaveLength(1); + expect(tree.children[1].name).toBe("Steps"); + expect(tree.children[1].children).toHaveLength(1); + expect(tree.children[2].type).toBe("heading"); + expect(tree.children[2].children[0].value).toBe("Not a step"); + }); +}); + +describe("remarkAddClass", () => { + it("adds sb-kbd class to ", async () => { + const tree: any = await runMarkdown( + "Press Enter", + remarkAddClass, + ); + const kbd = tree.children[0].children[1]; + + expect(kbd.attributes).toEqual( + expect.arrayContaining([ + expect.objectContaining({ name: "class", value: "sb-kbd" }), + ]), + ); + }); + + it("appends sb-kbd to an existing class on ", async () => { + const tree: any = await runMarkdown( + 'Press Enter', + remarkAddClass, + ); + const kbd = tree.children[0].children[1]; + + expect(kbd.attributes).toEqual( + expect.arrayContaining([ + expect.objectContaining({ name: "class", value: "hotkey sb-kbd" }), + ]), + ); + }); +}); + +describe("remarkMdxFrontmatter", () => { + it("parses yaml frontmatter into exports and ast data", async () => { + const tree = (await runMarkdown( + ["---", "title: Hello", "count: 3", "---", "", "# Heading"].join("\n"), + [remarkFrontmatter, ["yaml", "toml"]], + remarkMdxFrontmatter, + )) as FrontmatterRoot; + const exportNode = tree.children.find( + (child: any) => child.type === "mdxjsEsm", + ); + + expect(tree.data?.frontmatter).toEqual({ title: "Hello", count: 3 }); + expect(exportNode?.type).toBe("mdxjsEsm"); + expect(JSON.stringify((exportNode as any).data.estree)).toContain( + "frontmatter", + ); + }); + + it("supports toml and custom export names", async () => { + const tree = (await runMarkdown( + ["+++", 'title = "Hello"', "enabled = true", "+++", "", "# Heading"].join( + "\n", + ), + [remarkFrontmatter, ["yaml", "toml"]], + [remarkMdxFrontmatter, { name: "meta" }], + )) as FrontmatterRoot; + const exportNode = tree.children.find( + (child: any) => child.type === "mdxjsEsm", + ); + + expect(tree.data?.frontmatter).toEqual({ title: "Hello", enabled: true }); + expect(exportNode?.type).toBe("mdxjsEsm"); + expect(JSON.stringify((exportNode as any).data.estree)).toContain("meta"); + }); + + it("defaults to an empty frontmatter object when none exists", async () => { + const tree = (await runMarkdown( + "# Heading", + remarkMdxFrontmatter, + )) as FrontmatterRoot; + + expect(tree.data?.frontmatter).toEqual({}); + expect(JSON.stringify((tree.children[0] as any).data.estree)).toContain( + "frontmatter", + ); + }); +}); diff --git a/tests/config/remark-misc.test.ts b/tests/config/remark-misc.test.ts new file mode 100644 index 00000000..168bd9aa --- /dev/null +++ b/tests/config/remark-misc.test.ts @@ -0,0 +1,82 @@ +import remarkDirective from "remark-directive"; +import remarkParse from "remark-parse"; +import { unified } from "unified"; +import { describe, expect, it } from "vitest"; + +import { remarkDirectiveContainers } from "../../src/config/remark-plugins/directives.ts"; +import { remarkGithubAlertsToDirectives } from "../../src/config/remark-plugins/gh-directives.ts"; +import { remarkIssueAutolink } from "../../src/config/remark-plugins/issue-autolink.ts"; +import { remarkRelativeImports } from "../../src/config/remark-plugins/relative-imports.ts"; + +async function run(markdown: string, ...plugins: Array) { + const processor = unified().use(remarkParse); + for (const plugin of plugins) { + if (Array.isArray(plugin)) processor.use(plugin[0], plugin[1]); + else processor.use(plugin); + } + const tree = processor.parse(markdown); + return processor.run(tree); +} + +describe("misc remark plugins", () => { + it("converts github alert blockquotes into directive containers", async () => { + const tree: any = await run( + ["> [!NOTE]", "> Heads up"].join("\n"), + remarkGithubAlertsToDirectives, + remarkDirectiveContainers, + ); + + expect(tree.children[0].type).toBe("mdxJsxFlowElement"); + expect(tree.children[0].name).toBe("DirectiveContainer"); + expect(tree.children[0].attributes).toEqual( + expect.arrayContaining([ + expect.objectContaining({ name: "type", value: "note" }), + ]), + ); + }); + + it("rewrites relative image imports into MDX imports", async () => { + const tree: any = await run("![Logo](./logo.png)", remarkRelativeImports); + + expect(tree.children[0].children[0].url).toMatch( + /^\$\$SolidBase_RelativeImport/, + ); + expect(tree.children[1].type).toBe("mdxjsEsm"); + expect(JSON.stringify(tree.children[1].data.estree)).toContain( + "./logo.png", + ); + }); + + it("autolinks issue references using the configured template", async () => { + const tree: any = await run("Fixes #123", [ + remarkIssueAutolink, + "https://example.com/issues/:issue", + ]); + + expect(tree.children[0].children).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + type: "link", + url: "https://example.com/issues/123", + }), + ]), + ); + }); + + it("converts directive syntax into DirectiveContainer JSX", async () => { + const processor = unified() + .use(remarkParse) + .use(remarkDirective) + .use(remarkDirectiveContainers); + const markdown = [":::note[Custom title]", "Body", ":::"].join("\n"); + const tree: any = await processor.run(processor.parse(markdown)); + + expect(tree.children[0].type).toBe("mdxJsxFlowElement"); + expect(tree.children[0].attributes).toEqual( + expect.arrayContaining([ + expect.objectContaining({ name: "type", value: "note" }), + expect.objectContaining({ name: "title", value: "Custom title" }), + ]), + ); + }); +}); diff --git a/tests/config/tabs.test.ts b/tests/config/tabs.test.ts new file mode 100644 index 00000000..32c03f36 --- /dev/null +++ b/tests/config/tabs.test.ts @@ -0,0 +1,113 @@ +import remarkParse from "remark-parse"; +import { unified } from "unified"; +import { describe, expect, it } from "vitest"; + +import { remarkCodeTabs } from "../../src/config/remark-plugins/code-tabs.ts"; +import { remarkPackageManagerTabs } from "../../src/config/remark-plugins/package-manager-tabs.ts"; +import { remarkTabGroup } from "../../src/config/remark-plugins/tab-group.ts"; + +async function transformCodeTabs(markdown: string, withTsJsToggle = false) { + const processor = unified().use(remarkParse).use(remarkCodeTabs, { + withTsJsToggle, + }); + const tree = processor.parse(markdown); + return processor.run(tree); +} + +async function transformPackageTabs(markdown: string, options?: any) { + const processor = unified() + .use(remarkParse) + .use(remarkPackageManagerTabs, options); + const tree = processor.parse(markdown); + return processor.run(tree); +} + +describe("tab-related remark plugins", () => { + it("groups adjacent tabbed code fences into a tab-group container", async () => { + const tree: any = await transformCodeTabs( + [ + '```ts tab="install" title="npm"', + "npm install solidbase", + "```", + '```ts tab="install" title="pnpm"', + "pnpm add solidbase", + "```", + ].join("\n"), + true, + ); + + const group = tree.children[0]; + expect(group.type).toBe("containerDirective"); + expect(group.name).toBe("tab-group"); + expect(group.attributes).toMatchObject({ + codeGroup: "true", + title: "install", + withTsJsToggle: "true", + }); + expect(group.children).toHaveLength(2); + expect(group.children[0].children[1].meta).toContain('frame="none"'); + expect(group.children[1].children[0].children[0].value).toBe("pnpm"); + }); + + it("creates package-manager tabs from package-* code fences", async () => { + const tree: any = await transformPackageTabs( + "```package-install\nsolidbase@latest\n```", + { + show: ["npm", "pnpm"], + default: "pnpm", + }, + ); + + const group = tree.children[0]; + expect(group.name).toBe("tab-group"); + expect(group.attributes.title).toBe("package-manager"); + expect(group.children[0].children[1].value).toContain( + "npm i solidbase@latest", + ); + expect(group.children[1].children[1].value).toContain("pnpm add solidbase"); + }); + + it("annotates tab groups with ordered tab names", async () => { + const tree: any = { + type: "root", + children: [ + { + type: "containerDirective", + name: "tab-group", + attributes: {}, + children: [ + { + type: "containerDirective", + name: "tab", + attributes: {}, + children: [ + { + type: "paragraph", + data: { directiveLabel: true }, + children: [{ type: "text", value: "Alpha" }], + }, + ], + }, + { + type: "containerDirective", + name: "tab", + attributes: {}, + children: [ + { + type: "paragraph", + data: { directiveLabel: true }, + children: [{ type: "text", value: "Beta" }], + }, + ], + }, + ], + }, + ], + }; + + remarkTabGroup()(tree); + + expect(tree.children[0].attributes.tabNames).toBe("Alpha\0Beta"); + expect(tree.children[0].children).toHaveLength(2); + }); +}); diff --git a/tests/config/toc.test.ts b/tests/config/toc.test.ts new file mode 100644 index 00000000..bcd44389 --- /dev/null +++ b/tests/config/toc.test.ts @@ -0,0 +1,51 @@ +import remarkMdx from "remark-mdx"; +import remarkParse from "remark-parse"; +import { unified } from "unified"; +import { describe, expect, it } from "vitest"; + +import { + remarkTOC, + SolidBaseTOC, + type TOCOptions, +} from "../../src/config/remark-plugins/toc.ts"; + +async function transform(markdown: string, opts?: TOCOptions) { + const processor = unified() + .use(remarkParse) + .use(remarkMdx) + .use(remarkTOC, opts); + const tree = processor.parse(markdown); + return processor.run(tree); +} + +describe("remarkTOC", () => { + it("replaces [[toc]] with a generated list and exports toc data", async () => { + const tree: any = await transform( + ["# Intro", "", "[[toc]]", "", "## Install", "", "### CLI"].join("\n"), + ); + + expect(tree.children[0].type).toBe("mdxjsEsm"); + expect(JSON.stringify(tree.children[0].data.estree)).toContain( + SolidBaseTOC, + ); + expect(JSON.stringify(tree.children[0].data.estree)).toContain( + '"value":"Install"', + ); + expect(JSON.stringify(tree)).toContain('"data-toc":""'); + expect(JSON.stringify(tree)).toContain('"type":"list"'); + }); + + it("respects heading depth limits", async () => { + const tree: any = await transform( + ["# Intro", "", "[[toc]]", "", "## Install", "", "### CLI"].join("\n"), + { minDepth: 2, maxDepth: 2 }, + ); + + expect(JSON.stringify(tree.children[0].data.estree)).toContain( + '"value":"Install"', + ); + expect(JSON.stringify(tree.children[0].data.estree)).not.toContain( + '"value":"CLI"', + ); + }); +}); diff --git a/tests/config/virtual.test.ts b/tests/config/virtual.test.ts new file mode 100644 index 00000000..fa1016a2 --- /dev/null +++ b/tests/config/virtual.test.ts @@ -0,0 +1,56 @@ +import { afterEach, describe, expect, it } from "vitest"; + +import { transformMdxModule } from "../../src/config/vite-plugin/virtual.ts"; +import { routeFixturePath } from "../helpers/fixtures.ts"; + +describe("transformMdxModule", () => { + const previousPwd = process.env.PWD; + + afterEach(() => { + process.env.PWD = previousPwd; + }); + + it("embeds llmText using the same transformed markdown output", async () => { + const modulePath = routeFixturePath("index.mdx"); + + const code = await transformMdxModule( + "export default function Page() {}", + modulePath, + { markdown: {} }, + ); + + expect(code).toContain('llmText: "# Home'); + expect(code).toContain("Welcome to SolidBase."); + expect(code).toContain("```md\\n{frontmatter.product}\\n```"); + }); + + it("supports nested vite ids and function edit links", async () => { + const modulePath = routeFixturePath("guide", "getting-started.mdx"); + + const code = await transformMdxModule( + "export default function Page() {}", + `${modulePath}?id=${encodeURIComponent(`${modulePath}?import`)}`, + { + markdown: {}, + editPath: (file: string) => `https://example.com/edit/${file}`, + }, + ); + + expect(code).toContain("Getting Started"); + expect(code).toContain("https://example.com/edit/"); + expect(code).toContain( + "/tests/fixtures/src/routes/guide/getting-started.mdx", + ); + }); + + it("works for markdown files without frontmatter", async () => { + const markdownPath = routeFixturePath("plain.md"); + const code = await transformMdxModule( + "export default function Page() {}", + markdownPath, + { markdown: {} }, + ); + + expect(code).toContain('llmText: "Just plain markdown."'); + }); +}); diff --git a/tests/fixtures/code/example.ts b/tests/fixtures/code/example.ts new file mode 100644 index 00000000..7f2d47ae --- /dev/null +++ b/tests/fixtures/code/example.ts @@ -0,0 +1,4 @@ +export function greet() { + console.log("hi"); + console.log("bye"); +} diff --git a/tests/fixtures/src/routes/excluded.mdx b/tests/fixtures/src/routes/excluded.mdx new file mode 100644 index 00000000..e404db1a --- /dev/null +++ b/tests/fixtures/src/routes/excluded.mdx @@ -0,0 +1,8 @@ +--- +title: Hidden Doc +llms: false +--- + +# Hidden Doc + +This should not be emitted. diff --git a/tests/fixtures/src/routes/guide/getting-started.mdx b/tests/fixtures/src/routes/guide/getting-started.mdx new file mode 100644 index 00000000..60c8a843 --- /dev/null +++ b/tests/fixtures/src/routes/guide/getting-started.mdx @@ -0,0 +1,11 @@ +--- +title: Getting Started +description: Learn the basics +product: SolidBase +llms: + exclude: false +--- + +# {frontmatter.title} + +Start with {frontmatter.product}. diff --git a/tests/fixtures/src/routes/index.mdx b/tests/fixtures/src/routes/index.mdx new file mode 100644 index 00000000..9513d854 --- /dev/null +++ b/tests/fixtures/src/routes/index.mdx @@ -0,0 +1,21 @@ +--- +title: Home +description: Welcome home +product: SolidBase +tagline: Fast docs +release: 3 +--- + +# {frontmatter.title} + +Welcome to {frontmatter.product}. + +> {frontmatter.tagline} + +- v{frontmatter.release} + +{frontmatter["product"]} + +```md +{frontmatter.product} +``` diff --git a/tests/fixtures/src/routes/plain.md b/tests/fixtures/src/routes/plain.md new file mode 100644 index 00000000..40c3e2f5 --- /dev/null +++ b/tests/fixtures/src/routes/plain.md @@ -0,0 +1 @@ +Just plain markdown. diff --git a/tests/helpers/fixtures.ts b/tests/helpers/fixtures.ts new file mode 100644 index 00000000..15d3d82e --- /dev/null +++ b/tests/helpers/fixtures.ts @@ -0,0 +1,10 @@ +import { dirname, resolve } from "node:path"; +import { fileURLToPath } from "node:url"; + +const testRoot = dirname(fileURLToPath(import.meta.url)); + +export const fixtureSiteRoot = resolve(testRoot, "..", "fixtures"); + +export function routeFixturePath(...parts: string[]) { + return resolve(fixtureSiteRoot, "src", "routes", ...parts); +} diff --git a/tests/mocks/virtual-solidbase-config.ts b/tests/mocks/virtual-solidbase-config.ts new file mode 100644 index 00000000..60be9633 --- /dev/null +++ b/tests/mocks/virtual-solidbase-config.ts @@ -0,0 +1,3 @@ +const store = ((globalThis as any).__solidBaseConfig ??= {}); + +export const solidBaseConfig = store; diff --git a/tests/vite-mdx/integration.test.ts b/tests/vite-mdx/integration.test.ts new file mode 100644 index 00000000..73d5badf --- /dev/null +++ b/tests/vite-mdx/integration.test.ts @@ -0,0 +1,134 @@ +import remarkMdx from "remark-mdx"; +import remarkParse from "remark-parse"; +import { unified } from "unified"; +import { VFile } from "vfile"; +import { describe, expect, it } from "vitest"; + +import viteMdx from "../../src/vite-mdx/index.ts"; +import { createTransformer } from "../../src/vite-mdx/transform.ts"; +import { ImportMap } from "../../src/vite-mdx/viteMdxTransclusion/ImportMap.ts"; +import { remarkTransclusion } from "../../src/vite-mdx/viteMdxTransclusion/remarkTransclusion.ts"; + +function appendParagraph(text: string) { + return () => (tree: any) => { + tree.children.push({ + type: "paragraph", + children: [{ type: "text", value: text }], + }); + }; +} + +function createStubCompiler() { + const processor = unified().use(remarkParse).use(remarkMdx); + + return { + parse(file: { contents: string; path: string }) { + return processor.parse( + new VFile({ path: file.path, value: file.contents }), + ); + }, + async run(tree: any) { + return tree; + }, + }; +} + +describe("vite-mdx integration", () => { + const pagePath = "tests/fixtures/page.mdx"; + const sharedPath = "tests/fixtures/shared.mdx"; + + it("createTransformer prepends imports and transpiles JSX output", async () => { + const transform = createTransformer(process.cwd(), {}); + + const code = await transform("# Hello"); + + expect(code).toContain("export default MDXContent; function MDXContent"); + expect(code).toContain('"Hello"'); + }); + + it("viteMdx merges global and local remark plugins during transform", async () => { + const [plugin] = viteMdx.withImports({})((filename) => ({ + remarkPlugins: filename.endsWith("page.mdx") + ? [appendParagraph("local")] + : [], + })) as any[]; + + plugin.configResolved({ + root: process.cwd(), + plugins: [], + } as any); + + plugin.mdxOptions.remarkPlugins.push(appendParagraph("global")); + + const result = await plugin.transform.call({}, "# Hello", pagePath, false); + + expect(result.code).toContain('"global"'); + expect(result.code).toContain('"local"'); + }); + + it("remarkTransclusion inlines imported mdx, caches ASTs, and tracks imports", async () => { + const importMap = new ImportMap(); + const astCache = new Map(); + const compiler = createStubCompiler(); + let readCount = 0; + + const processor = unified().use(remarkParse).use(remarkMdx); + const transformTransclusion = (remarkTransclusion as any)({ + astCache: astCache as any, + importMap, + resolve: async (id: string) => + id === "./shared.mdx" ? sharedPath : undefined, + readFile: async () => { + readCount += 1; + return "## Shared\n\nFrom import."; + }, + getCompiler: () => compiler as any, + })(); + + const firstFile = new VFile({ + path: pagePath, + value: 'import "./shared.mdx"\n\n# Page', + }); + const firstTree: any = processor.parse(firstFile); + await transformTransclusion(firstTree, firstFile); + + expect(firstTree.children.map((node: any) => node.type)).toEqual([ + "heading", + "paragraph", + "heading", + ]); + expect(firstTree.children[0].children[0].value).toBe("Shared"); + expect(importMap.importers.get(sharedPath)).toEqual(new Set([pagePath])); + expect(readCount).toBe(1); + + const secondFile = new VFile({ + path: pagePath, + value: 'import "./shared.mdx"\n\n# Page', + }); + const secondTree: any = processor.parse(secondFile); + await transformTransclusion(secondTree, secondFile); + + expect(readCount).toBe(1); + expect(secondTree.children[0].children[0].value).toBe("Shared"); + }); + + it("remarkTransclusion strips unresolved mdx imports", async () => { + const processor = unified().use(remarkParse).use(remarkMdx); + const compiler = createStubCompiler(); + const transformTransclusion = (remarkTransclusion as any)({ + resolve: async () => undefined, + readFile: async () => "", + getCompiler: () => compiler as any, + })(); + + const file = new VFile({ + path: pagePath, + value: 'import "./missing.mdx"\n\n# Page', + }); + const tree: any = processor.parse(file); + await transformTransclusion(tree, file); + + expect(tree.children).toHaveLength(1); + expect(tree.children[0].children[0].value).toBe("Page"); + }); +}); diff --git a/tsconfig.config.json b/tsconfig.config.json deleted file mode 100644 index ea51d4b6..00000000 --- a/tsconfig.config.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "./tsconfig.json", - "compilerOptions": { - "composite": true, - "module": "Node16", - "moduleResolution": "node16" - }, - "include": ["src/config", "src/default-theme/index.ts", "src/vite-mdx"] -} diff --git a/tsconfig.json b/tsconfig.json index e6041b58..93694fdf 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,30 +1,27 @@ { - "compilerOptions": { - "target": "esnext", - "module": "esnext", - "newLine": "LF", - "allowJs": false, - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "noFallthroughCasesInSwitch": false, - "isolatedModules": true, - "jsx": "preserve", - "jsxImportSource": "solid-js", - "moduleResolution": "bundler", - "resolveJsonModule": true, - "skipLibCheck": true, - "strict": true, - "declaration": true, - "sourceMap": true, - "lib": ["dom", "esnext"], - "types": ["solid-js", "vite", "vinxi/types/client", "vite/client", "unplugin-icons/types/solid"], - "rootDir": "./src", - "outDir": "./dist" - }, - "references": [ - { "path": "./tsconfig.config.json" } - ], - "include": ["src/**/*"], - "exclude": ["node_modules", "docs"] + "compilerOptions": { + "target": "esnext", + "module": "Node16", + "moduleResolution": "node16", + "newLine": "LF", + "allowJs": false, + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": false, + "isolatedModules": true, + "jsx": "preserve", + "jsxImportSource": "solid-js", + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "declaration": true, + "sourceMap": true, + "lib": ["dom", "esnext"], + "types": ["solid-js", "vite/client", "unplugin-icons/types/solid"], + "rootDir": "./src", + "outDir": "./dist" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "docs"] } diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 00000000..830a688f --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,17 @@ +import { resolve } from "node:path"; +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + resolve: { + alias: { + "virtual:solidbase/config": resolve( + __dirname, + "tests/mocks/virtual-solidbase-config.ts", + ), + }, + }, + test: { + environment: "node", + include: ["tests/**/*.test.ts"], + }, +});