diff options
author | HiDeoo | 2024-12-13 22:57:28 +0100 |
---|---|---|
committer | GitHub | 2024-12-13 22:57:28 +0100 |
commit | 8d5a4e8000d9e3a4bb9ca8178767cf3d8bc48773 (patch) | |
tree | 5fde60cc14cf36fb11ea34f75b8277758f4f201c | |
parent | 0223b425249f8d1fa468e367c632467276c9c208 (diff) | |
download | IT.starlight-8d5a4e8000d9e3a4bb9ca8178767cf3d8bc48773.tar.gz IT.starlight-8d5a4e8000d9e3a4bb9ca8178767cf3d8bc48773.tar.bz2 IT.starlight-8d5a4e8000d9e3a4bb9ca8178767cf3d8bc48773.zip |
Astro 5 + collection loaders + legacy collections support (#2612)
Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>
Co-authored-by: Chris Swithinbank <357379+delucis@users.noreply.github.com>
Co-authored-by: Sarah Rainsberger <5098874+sarah11918@users.noreply.github.com>
124 files changed, 1725 insertions, 1324 deletions
diff --git a/.changeset/green-suns-drive.md b/.changeset/green-suns-drive.md new file mode 100644 index 00000000..29f7dd15 --- /dev/null +++ b/.changeset/green-suns-drive.md @@ -0,0 +1,56 @@ +--- +"@astrojs/starlight": minor +--- + +Adds support for Astro v5, drops support for Astro v4. + +#### Upgrade Astro and dependencies + +⚠️ **BREAKING CHANGE:** Astro v4 is no longer supported. Make sure you [update Astro](https://docs.astro.build/en/guides/upgrade-to/v5/) and any other official integrations at the same time as updating Starlight: + +```sh +npx @astrojs/upgrade +``` + +_Community Starlight plugins and Astro integrations may also need to be manually updated to work with Astro v5. If you encounter any issues, please reach out to the plugin or integration author to see if it is a known issue or if an updated version is being worked on._ + +#### Update your collections + +⚠️ **BREAKING CHANGE:** Starlight's internal [content collections](https://docs.astro.build/en/guides/content-collections/), which organize, validate, and render your content, have been updated to use Astro's new Content Layer API and require configuration changes in your project. + +1. **Move the content config file.** This file no longer lives within the `src/content/config.ts` folder and should now exist at `src/content.config.ts`. + + +1. **Edit the collection definition(s).** To update the `docs` collection, a `loader` is now required: + + ```diff + // src/content.config.ts + import { defineCollection } from "astro:content"; + +import { docsLoader } from "@astrojs/starlight/loaders"; + import { docsSchema } from "@astrojs/starlight/schema"; + + export const collections = { + - docs: defineCollection({ schema: docsSchema() }), + + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), + }; + ``` + + If you are using the [`i18n` collection](https://starlight.astro.build/guides/i18n/#translate-starlights-ui) to provide translations for additional languages you support or override our default labels, you will need to update the collection definition in a similar way and remove the collection `type` which is no longer available: + + ```diff + // src/content.config.ts + import { defineCollection } from "astro:content"; + +import { docsLoader, i18nLoader } from "@astrojs/starlight/loaders"; + import { docsSchema, i18nSchema } from "@astrojs/starlight/schema"; + + export const collections = { + - docs: defineCollection({ schema: docsSchema() }), + + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), + - i18n: defineCollection({ type: 'data', schema: i18nSchema() }), + + i18n: defineCollection({ loader: i18nLoader(), schema: i18nSchema() }), + }; + ``` + +1. **Update other collections.** To update any other collections you may have, follow the [“Updating existing collections”](https://docs.astro.build/en/guides/upgrade-to/v5/#updating-existing-collections) section in the Astro 5 upgrade guide. + +If you are unable to make any changes to your collections at this time, including Starlight's default `docs` and `i18n` collections, you can enable the [`legacy.collections` flag](https://docs.astro.build/en/reference/legacy-flags/) to upgrade to v5 without updating your collections. This legacy flag exists to provide temporary backwards compatibility, and will allow you to keep your collections in their current state until the legacy flag is no longer supported. diff --git a/.changeset/polite-snails-sip.md b/.changeset/polite-snails-sip.md new file mode 100644 index 00000000..588ca325 --- /dev/null +++ b/.changeset/polite-snails-sip.md @@ -0,0 +1,13 @@ +--- +'@astrojs/starlight-docsearch': minor +'@astrojs/starlight-tailwind': major +'@astrojs/starlight-markdoc': minor +--- + +⚠️ **BREAKING CHANGE:** The minimum supported version of Starlight is now 0.30.0 + +Please use the `@astrojs/upgrade` command to upgrade your project: + +```sh +npx @astrojs/upgrade +``` diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 92f867eb..5dceb59f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,6 +50,9 @@ jobs: - run: pnpm i - name: Test packages run: pnpm -r test:coverage + - name: Test legacy collections support + working-directory: packages/starlight + run: pnpm test:legacy e2e-test: name: 'Run E2E tests (${{ matrix.os }})' @@ -149,6 +152,4 @@ jobs: - name: Build docs site and check links working-directory: ./docs - run: pnpm build - env: - CHECK_LINKS: true + run: pnpm linkcheck @@ -22,6 +22,3 @@ test-results/ # Vercel output .vercel - -# Created by @astrojs/check -/src/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 33cd9c7e..2d98b28e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -121,11 +121,11 @@ You should then be able to open <http://localhost:4321> and see your changes. When adding or translating content in the Starlight docs site, you can check all internal links are valid. All GitHub PRs are checked this way automatically, but testing locally can help if you want to confirm changes are correct before committing them. -To do this, move into the `docs/` directory from the root of the repo and then build the site with the `CHECK_LINKS` environment variable: +To do this, move into the `docs/` directory from the root of the repo and then run `pnpm linkcheck`: ```sh cd docs -CHECK_LINKS=true pnpm build +pnpm linkcheck ``` If there are any broken links, the build will fail and log which pages need to be fixed. @@ -200,7 +200,7 @@ pnpm test:e2e #### Test fixtures -Each subdirectory of `packages/starlight/__e2e__/fixtures` should contain the basic files needed to run Starlight (`package.json`, `astro.config.mjs`, a content collection configuration in `src/content/config.ts` and some content to render in `src/content/docs/`). +Each subdirectory of `packages/starlight/__e2e__/fixtures` should contain the basic files needed to run Starlight (`package.json`, `astro.config.mjs`, a content collection configuration in `src/content.config.ts` and some content to render in `src/content/docs/`). The `testFactory()` helper can be used in a test file to define the fixture which will be built and loaded in a preview server during a set of tests. diff --git a/docs/astro.config.mjs b/docs/astro.config.mjs index 3234f9c1..dda60459 100644 --- a/docs/astro.config.mjs +++ b/docs/astro.config.mjs @@ -1,3 +1,4 @@ +// @ts-check import { defineConfig } from 'astro/config'; import starlight from '@astrojs/starlight'; import starlightLinksValidator from 'starlight-links-validator'; diff --git a/docs/package.json b/docs/package.json index 254dfc76..b522db4a 100644 --- a/docs/package.json +++ b/docs/package.json @@ -10,6 +10,7 @@ "build": "astro build", "preview": "astro preview", "typecheck": "tsc --noEmit", + "linkcheck": "CHECK_LINKS=true pnpm build --force", "astro": "astro", "lunaria:build": "lunaria build", "grammars": "node grammars/generate.mjs" @@ -19,7 +20,7 @@ "@astrojs/starlight": "workspace:*", "@lunariajs/core": "^0.1.1", "@types/culori": "^2.1.1", - "astro": "^4.16.10", + "astro": "^5.0.2", "culori": "^4.0.1", "sharp": "^0.32.5" }, diff --git a/docs/src/content/config.ts b/docs/src/content.config.ts index e56c2a20..e47e819f 100644 --- a/docs/src/content/config.ts +++ b/docs/src/content.config.ts @@ -1,10 +1,14 @@ import { defineCollection, z } from 'astro:content'; +import { docsLoader, i18nLoader } from '@astrojs/starlight/loaders'; import { docsSchema, i18nSchema } from '@astrojs/starlight/schema'; export const collections = { - docs: defineCollection({ schema: docsSchema() }), + docs: defineCollection({ + loader: docsLoader(), + schema: docsSchema(), + }), i18n: defineCollection({ - type: 'data', + loader: i18nLoader(), schema: i18nSchema({ extend: z.object({ 'component.preview': z.string().optional(), diff --git a/docs/src/content/docs/components/code.mdx b/docs/src/content/docs/components/code.mdx index 3024d130..acd50b94 100644 --- a/docs/src/content/docs/components/code.mdx +++ b/docs/src/content/docs/components/code.mdx @@ -85,14 +85,14 @@ You can then pass this imported string to the `<Code>` component to include it o # src/content/docs/example.mdx import { Code } from '@astrojs/starlight/components'; -import importedCode from '/src/env.d.ts?raw'; +import importedCode from '/tsconfig.json?raw'; -<Code code={importedCode} lang="ts" title="src/env.d.ts" /> +<Code code={importedCode} lang="json" title="tsconfig.json" /> ``` -import importedCode from '/src/env.d.ts?raw'; +import importedCode from '../../../../../examples/basics/tsconfig.json?raw'; -<Code slot="preview" code={importedCode} lang="ts" title="src/env.d.ts" /> +<Code slot="preview" code={importedCode} lang="json" title="tsconfig.json" /> </Preview> diff --git a/docs/src/content/docs/components/using-components.mdx b/docs/src/content/docs/components/using-components.mdx index 0a16057c..76695eb0 100644 --- a/docs/src/content/docs/components/using-components.mdx +++ b/docs/src/content/docs/components/using-components.mdx @@ -9,7 +9,7 @@ Components let you easily reuse a piece of UI or styling consistently. Examples might include a link card or a YouTube embed. Starlight supports the use of components in [MDX](https://mdxjs.com/) and [Markdoc](https://markdoc.dev/) files and provides some common components for you to use. -[Learn more about building components in the Astro Docs](https://docs.astro.build/en/core-concepts/astro-components/). +[Learn more about building components in the Astro Docs](https://docs.astro.build/en/basics/astro-components/). ## Using a component in MDX @@ -30,7 +30,7 @@ import CustomCard from '../../components/CustomCard.astro'; <CustomCard>Components can also contain **nested content**.</CustomCard> ``` -Because Starlight is powered by Astro, you can add support for components built with any [supported UI framework (React, Preact, Svelte, Vue, Solid, and Alpine)](https://docs.astro.build/en/core-concepts/framework-components/) in your MDX files. +Because Starlight is powered by Astro, you can add support for components built with any [supported UI framework (React, Preact, Svelte, Vue, Solid, and Alpine)](https://docs.astro.build/en/guides/framework-components/) in your MDX files. Learn more about [using components in MDX](https://docs.astro.build/en/guides/integrations-guide/mdx/#using-components-in-mdx) in the Astro docs. ## Using a component in Markdoc diff --git a/docs/src/content/docs/de/components/code.mdx b/docs/src/content/docs/de/components/code.mdx index 3ad641e4..da5bfb57 100644 --- a/docs/src/content/docs/de/components/code.mdx +++ b/docs/src/content/docs/de/components/code.mdx @@ -85,14 +85,14 @@ Du kannst diese importierte Zeichenfolge dann an die Komponente `<Code>` überge # src/content/docs/example.mdx import { Code } from '@astrojs/starlight/components'; -import importedCode from '/src/env.d.ts?raw'; +import importedCode from '/tsconfig.json?raw'; -<Code code={importedCode} lang="ts" title="src/env.d.ts" /> +<Code code={importedCode} lang="json" title="tsconfig.json" /> ``` -import importedCode from '/src/env.d.ts?raw'; +import importedCode from '../../../../../../examples/basics/tsconfig.json?raw'; -<Code slot="preview" code={importedCode} lang="ts" title="src/env.d.ts" /> +<Code slot="preview" code={importedCode} lang="json" title="tsconfig.json" /> </Preview> diff --git a/docs/src/content/docs/environmental-impact.md b/docs/src/content/docs/environmental-impact.md index 9e945b69..ae7c8246 100644 --- a/docs/src/content/docs/environmental-impact.md +++ b/docs/src/content/docs/environmental-impact.md @@ -137,6 +137,6 @@ These tests with the [Website Carbon Calculator][wcc] compare similar pages buil [sf]: https://www.sciencefocus.com/science/what-is-the-carbon-footprint-of-the-internet/ [bbc]: https://www.bbc.com/future/article/20200305-why-your-internet-habits-are-not-as-clean-as-you-think [http]: https://httparchive.org/reports/state-of-the-web -[assets]: https://docs.astro.build/en/guides/assets/ +[assets]: https://docs.astro.build/en/guides/images/ [islands]: https://docs.astro.build/en/concepts/islands/ [wcc]: https://www.websitecarbon.com/ diff --git a/docs/src/content/docs/es/components/code.mdx b/docs/src/content/docs/es/components/code.mdx index 5058cd6e..77fbd0df 100644 --- a/docs/src/content/docs/es/components/code.mdx +++ b/docs/src/content/docs/es/components/code.mdx @@ -85,14 +85,14 @@ Puedes pasar este string importado al componente `<Code>` para incluirlo en tu p # src/content/docs/example.mdx import { Code } from '@astrojs/starlight/components'; -import importedCode from '/src/env.d.ts?raw'; +import importedCode from '/tsconfig.json?raw'; -<Code code={importedCode} lang="ts" title="src/env.d.ts" /> +<Code code={importedCode} lang="json" title="tsconfig.json" /> ``` -import importedCode from '/src/env.d.ts?raw'; +import importedCode from '../../../../../../examples/basics/tsconfig.json?raw'; -<Code slot="preview" code={importedCode} lang="ts" title="src/env.d.ts" /> +<Code slot="preview" code={importedCode} lang="json" title="tsconfig.json" /> </Preview> diff --git a/docs/src/content/docs/fr/components/code.mdx b/docs/src/content/docs/fr/components/code.mdx index 1e28c620..133c0a7c 100644 --- a/docs/src/content/docs/fr/components/code.mdx +++ b/docs/src/content/docs/fr/components/code.mdx @@ -85,14 +85,14 @@ Vous pouvez ensuite passer cette chaîne importée au composant `<Code>` pour l' # src/content/docs/example.mdx import { Code } from '@astrojs/starlight/components'; -import importedCode from '/src/env.d.ts?raw'; +import importedCode from '/tsconfig.json?raw'; -<Code code={importedCode} lang="ts" title="src/env.d.ts" /> +<Code code={importedCode} lang="json" title="tsconfig.json" /> ``` -import importedCode from '/src/env.d.ts?raw'; +import importedCode from '../../../../../../examples/basics/tsconfig.json?raw'; -<Code slot="preview" code={importedCode} lang="ts" title="src/env.d.ts" /> +<Code slot="preview" code={importedCode} lang="json" title="tsconfig.json" /> </Preview> diff --git a/docs/src/content/docs/guides/authoring-content.mdx b/docs/src/content/docs/guides/authoring-content.mdx index 819e4f50..68f37472 100644 --- a/docs/src/content/docs/guides/authoring-content.mdx +++ b/docs/src/content/docs/guides/authoring-content.mdx @@ -45,7 +45,7 @@ You can highlight `inline code` with backticks. ## Images -Images in Starlight use [Astro’s built-in optimized asset support](https://docs.astro.build/en/guides/assets/). +Images in Starlight use [Astro’s built-in optimized asset support](https://docs.astro.build/en/guides/images/). Markdown and MDX support the Markdown syntax for displaying images that includes alt-text for screen readers and assistive technology. diff --git a/docs/src/content/docs/guides/i18n.mdx b/docs/src/content/docs/guides/i18n.mdx index 9844fefd..7591a534 100644 --- a/docs/src/content/docs/guides/i18n.mdx +++ b/docs/src/content/docs/guides/i18n.mdx @@ -188,16 +188,16 @@ You can provide translations for additional languages you support — or overrid <Steps> -1. Configure the `i18n` data collection in `src/content/config.ts` if it isn’t configured already: +1. Configure the `i18n` data collection in `src/content.config.ts` if it isn’t configured already: - ```diff lang="js" ins=/, (i18nSchema)/ - // src/content/config.ts - import { defineCollection } from 'astro:content'; + ```diff lang="js" ins=/, (i18nLoader|i18nSchema)/ + // src/content.config.ts + import { docsLoader, i18nLoader } from '@astrojs/starlight/loaders'; import { docsSchema, i18nSchema } from '@astrojs/starlight/schema'; export const collections = { - docs: defineCollection({ schema: docsSchema() }), - + i18n: defineCollection({ type: 'data', schema: i18nSchema() }), + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), + + i18n: defineCollection({ loader: i18nLoader(), schema: i18nSchema() }), }; ``` @@ -257,14 +257,15 @@ Add custom keys to your site’s translation dictionaries by setting `extend` in In the following example, a new, optional `custom.label` key is added to the default keys: ```diff lang="js" -// src/content/config.ts +// src/content.config.ts import { defineCollection, z } from 'astro:content'; +import { docsLoader, i18nLoader } from '@astrojs/starlight/loaders'; import { docsSchema, i18nSchema } from '@astrojs/starlight/schema'; export const collections = { - docs: defineCollection({ schema: docsSchema() }), + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), i18n: defineCollection({ - type: 'data', + loader: i18nLoader(), schema: i18nSchema({ + extend: z.object({ + 'custom.label': z.string().optional(), @@ -274,7 +275,7 @@ export const collections = { }; ``` -Learn more about content collection schemas in [“Defining a collection schema”](https://docs.astro.build/en/guides/content-collections/#defining-a-collection-schema) in the Astro docs. +Learn more about content collection schemas in [“Defining a collection schema”](https://docs.astro.build/en/guides/content-collections/#defining-the-collection-schema) in the Astro docs. ## Using UI translations diff --git a/docs/src/content/docs/guides/overriding-components.mdx b/docs/src/content/docs/guides/overriding-components.mdx index a3b86778..edac98b2 100644 --- a/docs/src/content/docs/guides/overriding-components.mdx +++ b/docs/src/content/docs/guides/overriding-components.mdx @@ -84,7 +84,7 @@ import Default from '@astrojs/starlight/components/SocialIcons.astro'; When rendering a built-in component inside a custom component: - Spread `Astro.props` into it. This makes sure that it receives all the data it needs to render. -- Add a [`<slot />`](https://docs.astro.build/en/core-concepts/astro-components/#slots) inside the default component. This makes sure that if the component is passed any child elements, Astro knows where to render them. +- Add a [`<slot />`](https://docs.astro.build/en/basics/astro-components/#slots) inside the default component. This makes sure that if the component is passed any child elements, Astro knows where to render them. If you are reusing the [`PageFrame`](/reference/overrides/#pageframe) or [`TwoColumnContent`](/reference/overrides/#twocolumncontent) components which contain [named slots](https://docs.astro.build/en/basics/astro-components/#named-slots), you also need to [transfer](https://docs.astro.build/en/basics/astro-components/#transferring-slots) these slots as well. @@ -155,4 +155,4 @@ const isHomepage = Astro.props.slug === ''; } ``` -Learn more about conditional rendering in [Astro’s Template Syntax guide](https://docs.astro.build/en/core-concepts/astro-syntax/#dynamic-html). +Learn more about conditional rendering in [Astro’s Template Syntax guide](https://docs.astro.build/en/basics/astro-syntax/#dynamic-html). diff --git a/docs/src/content/docs/guides/project-structure.mdx b/docs/src/content/docs/guides/project-structure.mdx index f32bc16b..02dc4789 100644 --- a/docs/src/content/docs/guides/project-structure.mdx +++ b/docs/src/content/docs/guides/project-structure.mdx @@ -5,12 +5,12 @@ description: Learn how to organize files in your Starlight project. This guide will show you how a Starlight project is organized and what the different files in your project do. -Starlight projects generally follow the same file and directory structure as other Astro projects. See [Astro’s project structure documentation](https://docs.astro.build/en/core-concepts/project-structure/) for more detail. +Starlight projects generally follow the same file and directory structure as other Astro projects. See [Astro’s project structure documentation](https://docs.astro.build/en/basics/project-structure/) for more detail. ## Files and directories - `astro.config.mjs` — The Astro configuration file; includes the Starlight integration and configuration. -- `src/content/config.ts` — Content collections configuration file; adds Starlight’s frontmatter schemas to your project. +- `src/content.config.ts` — Content collections configuration file; adds Starlight’s frontmatter schemas to your project. - `src/content/docs/` — Content files. Starlight turns each `.md`, `.mdx` or `.mdoc` file in this directory into a page on your site. - `src/content/i18n/` (optional) — Translation data to support [internationalization](/guides/i18n/). - `src/` — Other source code and files (components, styles, images, etc.) for your project. @@ -39,8 +39,7 @@ import { FileTree } from '@astrojs/starlight/components'; - 01-getting-started.md - 02-advanced.md - index.mdx - - config.ts - - env.d.ts + - content.config.ts - astro.config.mjs - package.json - tsconfig.json diff --git a/docs/src/content/docs/guides/site-search.mdx b/docs/src/content/docs/guides/site-search.mdx index 083c245e..fe7ad701 100644 --- a/docs/src/content/docs/guides/site-search.mdx +++ b/docs/src/content/docs/guides/site-search.mdx @@ -124,18 +124,19 @@ Add translations of the modal UI for your language using Starlight’s built-in <Steps> -1. Extend Starlight’s `i18n` content collection definition with the DocSearch schema in `src/content/config.ts`: +1. Extend Starlight’s `i18n` content collection definition with the DocSearch schema in `src/content.config.ts`: - ```js ins={4} ins=/{ extend: .+ }/ - // src/content/config.ts + ```js ins={5} ins=/{ extend: .+ }/ + // src/content.config.ts import { defineCollection } from 'astro:content'; + import { docsLoader, i18nLoader } from '@astrojs/starlight/loaders'; import { docsSchema, i18nSchema } from '@astrojs/starlight/schema'; import { docSearchI18nSchema } from '@astrojs/starlight-docsearch/schema'; export const collections = { - docs: defineCollection({ schema: docsSchema() }), + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), i18n: defineCollection({ - type: 'data', + loader: i18nLoader(), schema: i18nSchema({ extend: docSearchI18nSchema() }), }), }; diff --git a/docs/src/content/docs/ja/components/code.mdx b/docs/src/content/docs/ja/components/code.mdx index a9dc4674..245e03e1 100644 --- a/docs/src/content/docs/ja/components/code.mdx +++ b/docs/src/content/docs/ja/components/code.mdx @@ -85,14 +85,14 @@ MDXファイルやAstroコンポーネント内で、[Viteの`?raw`インポー # src/content/docs/example.mdx import { Code } from '@astrojs/starlight/components'; -import importedCode from '/src/env.d.ts?raw'; +import importedCode from '/tsconfig.json?raw'; -<Code code={importedCode} lang="ts" title="src/env.d.ts" /> +<Code code={importedCode} lang="json" title="tsconfig.json" /> ``` -import importedCode from '/src/env.d.ts?raw'; +import importedCode from '../../../../../../examples/basics/tsconfig.json?raw'; -<Code slot="preview" code={importedCode} lang="ts" title="src/env.d.ts" /> +<Code slot="preview" code={importedCode} lang="json" title="tsconfig.json" /> </Preview> diff --git a/docs/src/content/docs/ko/components/code.mdx b/docs/src/content/docs/ko/components/code.mdx index 7c59999c..8e8ea630 100644 --- a/docs/src/content/docs/ko/components/code.mdx +++ b/docs/src/content/docs/ko/components/code.mdx @@ -85,14 +85,14 @@ MDX 파일 및 Astro 컴포넌트에서 [Vite의 `?raw` 가져오기 접미사]( # src/content/docs/example.mdx import { Code } from '@astrojs/starlight/components'; -import importedCode from '/src/env.d.ts?raw'; +import importedCode from '/tsconfig.json?raw'; -<Code code={importedCode} lang="ts" title="src/env.d.ts" /> +<Code code={importedCode} lang="json" title="tsconfig.json" /> ``` -import importedCode from '/src/env.d.ts?raw'; +import importedCode from '../../../../../../examples/basics/tsconfig.json?raw'; -<Code slot="preview" code={importedCode} lang="ts" title="src/env.d.ts" /> +<Code slot="preview" code={importedCode} lang="json" title="tsconfig.json" /> </Preview> diff --git a/docs/src/content/docs/manual-setup.mdx b/docs/src/content/docs/manual-setup.mdx index 07465d9f..7848438a 100644 --- a/docs/src/content/docs/manual-setup.mdx +++ b/docs/src/content/docs/manual-setup.mdx @@ -62,20 +62,24 @@ Find all available options in the [Starlight configuration reference](/reference ### Configure content collections -Starlight is built on top of Astro’s [content collections](https://docs.astro.build/en/guides/content-collections/), which are configured in the `src/content/config.ts` file. +Starlight is built on top of Astro’s [content collections](https://docs.astro.build/en/guides/content-collections/), which are configured in the `src/content.config.ts` file. -Create or update the content config file, adding a `docs` collection that uses Starlight’s `docsSchema`: +Create or update the content config file, adding a `docs` collection that uses Starlight’s `docsLoader` and `docsSchema`: -```js ins={3,6} -// src/content/config.ts +```js ins={3-4,7} +// src/content.config.ts import { defineCollection } from 'astro:content'; +import { docsLoader } from '@astrojs/starlight/loaders'; import { docsSchema } from '@astrojs/starlight/schema'; export const collections = { - docs: defineCollection({ schema: docsSchema() }), + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), }; ``` +Starlight also supports the [`legacy.collections` flag](https://docs.astro.build/en/reference/legacy-flags/) where collections are handled using the legacy content collections implementation. +This is useful if you have an existing Astro project and are unable to make any changes to collections at this time to use a loader. + ### Add content Starlight is now configured and it’s time to add some content! @@ -125,6 +129,6 @@ In the future, we plan to support this use case better to avoid the need for the ### Use Starlight with SSR -To enable SSR, follow the [“On-demand Rendering Adapters”](https://docs.astro.build/en/guides/server-side-rendering/) guide in Astro’s docs to add a server adapter to your Starlight project. +To enable SSR, follow the [“On-demand Rendering Adapters”](https://docs.astro.build/en/guides/on-demand-rendering/) guide in Astro’s docs to add a server adapter to your Starlight project. Documentation pages generated by Starlight are pre-rendered by default regardless of your project's output mode. To opt out of pre-rendering your Starlight pages, set the [`prerender` config option](/reference/configuration/#prerender) to `false`. diff --git a/docs/src/content/docs/reference/configuration.mdx b/docs/src/content/docs/reference/configuration.mdx index c878141b..fc26406c 100644 --- a/docs/src/content/docs/reference/configuration.mdx +++ b/docs/src/content/docs/reference/configuration.mdx @@ -462,7 +462,7 @@ Pagefind cannot be enabled when the [`prerender`](#prerender) option is set to ` **type:** `boolean` **default:** `true` -Define whether Starlight pages should be pre-rendered to static HTML or on-demand rendered by an [SSR adapter](https://docs.astro.build/en/guides/server-side-rendering/). +Define whether Starlight pages should be pre-rendered to static HTML or on-demand rendered by an [SSR adapter](https://docs.astro.build/en/guides/on-demand-rendering/). Starlight pages are pre-rendered by default. If you are using an SSR adapter and want to render Starlight pages on demand, set `prerender: false`. @@ -568,7 +568,7 @@ For example, this page is titled “Configuration Reference” and this site is **type:** `boolean` **default:** `false` -Disables injecting Starlight's default [404 page](https://docs.astro.build/en/core-concepts/astro-pages/#custom-404-error-page). To use a custom `src/pages/404.astro` route in your project, set this option to `true`. +Disables injecting Starlight's default [404 page](https://docs.astro.build/en/basics/astro-pages/#custom-404-error-page). To use a custom `src/pages/404.astro` route in your project, set this option to `true`. ### `components` diff --git a/docs/src/content/docs/reference/frontmatter.md b/docs/src/content/docs/reference/frontmatter.md index 75b56444..5c0f0b44 100644 --- a/docs/src/content/docs/reference/frontmatter.md +++ b/docs/src/content/docs/reference/frontmatter.md @@ -33,7 +33,7 @@ The page description is used for page metadata and will be picked up by search e **type**: `string` -Override the slug of the page. See [“Defining custom slugs”](https://docs.astro.build/en/guides/content-collections/#defining-custom-slugs) in the Astro docs for more details. +Override the slug of the page. See [“Defining custom IDs”](https://docs.astro.build/en/guides/content-collections/#defining-custom-ids) in the Astro docs for more details. ### `editUrl` @@ -397,19 +397,20 @@ sidebar: ## Customize frontmatter schema -The frontmatter schema for Starlight’s `docs` content collection is configured in `src/content/config.ts` using the `docsSchema()` helper: +The frontmatter schema for Starlight’s `docs` content collection is configured in `src/content.config.ts` using the `docsSchema()` helper: -```ts {3,6} -// src/content/config.ts +```ts {4,7} +// src/content.config.ts import { defineCollection } from 'astro:content'; +import { docsLoader, i18nLoader } from '@astrojs/starlight/loaders'; import { docsSchema } from '@astrojs/starlight/schema'; export const collections = { - docs: defineCollection({ schema: docsSchema() }), + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), }; ``` -Learn more about content collection schemas in [“Defining a collection schema”](https://docs.astro.build/en/guides/content-collections/#defining-a-collection-schema) in the Astro docs. +Learn more about content collection schemas in [“Defining a collection schema”](https://docs.astro.build/en/guides/content-collections/#defining-the-collection-schema) in the Astro docs. `docsSchema()` takes the following options: @@ -423,13 +424,15 @@ The value should be a [Zod schema](https://docs.astro.build/en/guides/content-co In the following example, we provide a stricter type for `description` to make it required and add a new optional `category` field: -```ts {8-13} -// src/content/config.ts +```ts {10-15} +// src/content.config.ts import { defineCollection, z } from 'astro:content'; +import { docsLoader } from '@astrojs/starlight/loaders'; import { docsSchema } from '@astrojs/starlight/schema'; export const collections = { docs: defineCollection({ + loader: docsLoader(), schema: docsSchema({ extend: z.object({ // Make a built-in field required instead of optional. @@ -444,13 +447,15 @@ export const collections = { To take advantage of the [Astro `image()` helper](https://docs.astro.build/en/guides/images/#images-in-content-collections), use a function that returns your schema extension: -```ts {8-13} -// src/content/config.ts +```ts {10-15} +// src/content.config.ts import { defineCollection, z } from 'astro:content'; +import { docsLoader } from '@astrojs/starlight/loaders'; import { docsSchema } from '@astrojs/starlight/schema'; export const collections = { docs: defineCollection({ + loader: docsLoader(), schema: docsSchema({ extend: ({ image }) => { return z.object({ diff --git a/docs/src/content/docs/reference/overrides.md b/docs/src/content/docs/reference/overrides.md index 5f47428d..f5773f86 100644 --- a/docs/src/content/docs/reference/overrides.md +++ b/docs/src/content/docs/reference/overrides.md @@ -69,11 +69,14 @@ For multilingual sites this will include the current locale, e.g. `/en/` or `/zh The slug for this page generated from the content filename. +This property is deprecated and will be removed in a future version of Starlight. +Migrate to the new Content Layer API by using [Starlight’s `docsLoader`](/manual-setup/#configure-content-collections) and use the [`id`](#id) property instead. + #### `id` **Type:** `string` -The unique ID for this page based on the content filename. +The slug for this page or the unique ID for this page based on the content filename if using the [`legacy.collections`](https://docs.astro.build/en/reference/legacy-flags/#collections) flag. #### `isFallback` diff --git a/docs/src/content/docs/ru/components/code.mdx b/docs/src/content/docs/ru/components/code.mdx index aa74ea97..6ddf4a05 100644 --- a/docs/src/content/docs/ru/components/code.mdx +++ b/docs/src/content/docs/ru/components/code.mdx @@ -85,14 +85,14 @@ export const highlights = ['файл', 'CMS']; # src/content/docs/example.mdx import { Code } from '@astrojs/starlight/components'; -import importedCode from '/src/env.d.ts?raw'; +import importedCode from '/tsconfig.json?raw'; -<Code code={importedCode} lang="ts" title="src/env.d.ts" /> +<Code code={importedCode} lang="json" title="tsconfig.json" /> ``` -import importedCode from '/src/env.d.ts?raw'; +import importedCode from '../../../../../../examples/basics/tsconfig.json?raw'; -<Code slot="preview" code={importedCode} lang="ts" title="src/env.d.ts" /> +<Code slot="preview" code={importedCode} lang="json" title="tsconfig.json" /> </Preview> diff --git a/docs/src/content/docs/zh-cn/components/code.mdx b/docs/src/content/docs/zh-cn/components/code.mdx index 7489f253..5c56e4e9 100644 --- a/docs/src/content/docs/zh-cn/components/code.mdx +++ b/docs/src/content/docs/zh-cn/components/code.mdx @@ -85,14 +85,14 @@ export const highlights = ['文件', 'CMS']; # src/content/docs/example.mdx import { Code } from '@astrojs/starlight/components'; -import importedCode from '/src/env.d.ts?raw'; +import importedCode from '/tsconfig.json?raw'; -<Code code={importedCode} lang="ts" title="src/env.d.ts" /> +<Code code={importedCode} lang="json" title="tsconfig.json" /> ``` -import importedCode from '/src/env.d.ts?raw'; +import importedCode from '../../../../../../examples/basics/tsconfig.json?raw'; -<Code slot="preview" code={importedCode} lang="ts" title="src/env.d.ts" /> +<Code slot="preview" code={importedCode} lang="json" title="tsconfig.json" /> </Preview> diff --git a/docs/src/env.d.ts b/docs/src/env.d.ts deleted file mode 100644 index acef35f1..00000000 --- a/docs/src/env.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -/// <reference path="../.astro/types.d.ts" /> -/// <reference types="astro/client" /> diff --git a/examples/basics/README.md b/examples/basics/README.md index e09bf55f..f9f6d31c 100644 --- a/examples/basics/README.md +++ b/examples/basics/README.md @@ -24,8 +24,7 @@ Inside of your Astro + Starlight project, you'll see the following folders and f │ ├── assets/ │ ├── content/ │ │ ├── docs/ -│ │ └── config.ts -│ └── env.d.ts +│ └── content.config.ts ├── astro.config.mjs ├── package.json └── tsconfig.json diff --git a/examples/basics/astro.config.mjs b/examples/basics/astro.config.mjs index 78078c32..1b393646 100644 --- a/examples/basics/astro.config.mjs +++ b/examples/basics/astro.config.mjs @@ -1,3 +1,4 @@ +// @ts-check import { defineConfig } from 'astro/config'; import starlight from '@astrojs/starlight'; diff --git a/examples/basics/package.json b/examples/basics/package.json index 3d9ae8fe..d3c6bea0 100644 --- a/examples/basics/package.json +++ b/examples/basics/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@astrojs/starlight": "^0.29.3", - "astro": "^4.16.10", + "astro": "^5.0.2", "sharp": "^0.32.5" } } diff --git a/examples/markdoc/src/content/config.ts b/examples/basics/src/content.config.ts index 45f60b01..d9ee8c9d 100644 --- a/examples/markdoc/src/content/config.ts +++ b/examples/basics/src/content.config.ts @@ -1,6 +1,7 @@ import { defineCollection } from 'astro:content'; +import { docsLoader } from '@astrojs/starlight/loaders'; import { docsSchema } from '@astrojs/starlight/schema'; export const collections = { - docs: defineCollection({ schema: docsSchema() }), + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), }; diff --git a/examples/basics/src/env.d.ts b/examples/basics/src/env.d.ts deleted file mode 100644 index acef35f1..00000000 --- a/examples/basics/src/env.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -/// <reference path="../.astro/types.d.ts" /> -/// <reference types="astro/client" /> diff --git a/examples/basics/tsconfig.json b/examples/basics/tsconfig.json index bcbf8b50..8bf91d3b 100644 --- a/examples/basics/tsconfig.json +++ b/examples/basics/tsconfig.json @@ -1,3 +1,5 @@ { - "extends": "astro/tsconfigs/strict" + "extends": "astro/tsconfigs/strict", + "include": [".astro/types.d.ts", "**/*"], + "exclude": ["dist"] } diff --git a/examples/markdoc/README.md b/examples/markdoc/README.md index 584fd88e..9dc25ffe 100644 --- a/examples/markdoc/README.md +++ b/examples/markdoc/README.md @@ -24,8 +24,7 @@ Inside of your Astro + Starlight project, you'll see the following folders and f │ ├── assets/ │ ├── content/ │ │ ├── docs/ -│ │ └── config.ts -│ └── env.d.ts +│ └── content.config.ts ├── astro.config.mjs ├── markdoc.config.mjs ├── package.json diff --git a/examples/markdoc/astro.config.mjs b/examples/markdoc/astro.config.mjs index 03155ce5..7f814cbb 100644 --- a/examples/markdoc/astro.config.mjs +++ b/examples/markdoc/astro.config.mjs @@ -1,3 +1,4 @@ +// @ts-check import { defineConfig } from 'astro/config'; import starlight from '@astrojs/starlight'; import markdoc from '@astrojs/markdoc'; diff --git a/examples/markdoc/package.json b/examples/markdoc/package.json index a3700c89..550b5669 100644 --- a/examples/markdoc/package.json +++ b/examples/markdoc/package.json @@ -11,10 +11,10 @@ "astro": "astro" }, "dependencies": { - "@astrojs/markdoc": "^0.11.4", + "@astrojs/markdoc": "^0.12.1", "@astrojs/starlight": "^0.29.3", "@astrojs/starlight-markdoc": "^0.1.0", - "astro": "^4.16.10", + "astro": "^5.0.2", "sharp": "^0.32.5" } } diff --git a/examples/basics/src/content/config.ts b/examples/markdoc/src/content.config.ts index 45f60b01..d9ee8c9d 100644 --- a/examples/basics/src/content/config.ts +++ b/examples/markdoc/src/content.config.ts @@ -1,6 +1,7 @@ import { defineCollection } from 'astro:content'; +import { docsLoader } from '@astrojs/starlight/loaders'; import { docsSchema } from '@astrojs/starlight/schema'; export const collections = { - docs: defineCollection({ schema: docsSchema() }), + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), }; diff --git a/examples/markdoc/src/env.d.ts b/examples/markdoc/src/env.d.ts deleted file mode 100644 index e16c13c6..00000000 --- a/examples/markdoc/src/env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// <reference path="../.astro/types.d.ts" /> diff --git a/examples/markdoc/tsconfig.json b/examples/markdoc/tsconfig.json index bcbf8b50..8bf91d3b 100644 --- a/examples/markdoc/tsconfig.json +++ b/examples/markdoc/tsconfig.json @@ -1,3 +1,5 @@ { - "extends": "astro/tsconfigs/strict" + "extends": "astro/tsconfigs/strict", + "include": [".astro/types.d.ts", "**/*"], + "exclude": ["dist"] } diff --git a/examples/tailwind/README.md b/examples/tailwind/README.md index 610da00f..bc54e6da 100644 --- a/examples/tailwind/README.md +++ b/examples/tailwind/README.md @@ -24,8 +24,7 @@ Inside of your Astro + Starlight project, you'll see the following folders and f │ ├── assets/ │ ├── content/ │ │ ├── docs/ -│ │ └── config.ts -│ └── env.d.ts +│ └── content.config.ts ├── astro.config.mjs ├── package.json ├── tailwind.config.mjs diff --git a/examples/tailwind/astro.config.mjs b/examples/tailwind/astro.config.mjs index 2a81ef78..a3a3ba5e 100644 --- a/examples/tailwind/astro.config.mjs +++ b/examples/tailwind/astro.config.mjs @@ -1,3 +1,4 @@ +// @ts-check import { defineConfig } from 'astro/config'; import starlight from '@astrojs/starlight'; import tailwind from '@astrojs/tailwind'; diff --git a/examples/tailwind/package.json b/examples/tailwind/package.json index 3ae0d464..9918cc4f 100644 --- a/examples/tailwind/package.json +++ b/examples/tailwind/package.json @@ -13,8 +13,8 @@ "dependencies": { "@astrojs/starlight": "^0.29.3", "@astrojs/starlight-tailwind": "^2.0.3", - "@astrojs/tailwind": "^5.1.0", - "astro": "^4.16.10", + "@astrojs/tailwind": "^5.1.3", + "astro": "^5.0.2", "sharp": "^0.32.5", "tailwindcss": "^3.4.4" } diff --git a/examples/tailwind/src/content/config.ts b/examples/tailwind/src/content.config.ts index 45f60b01..d9ee8c9d 100644 --- a/examples/tailwind/src/content/config.ts +++ b/examples/tailwind/src/content.config.ts @@ -1,6 +1,7 @@ import { defineCollection } from 'astro:content'; +import { docsLoader } from '@astrojs/starlight/loaders'; import { docsSchema } from '@astrojs/starlight/schema'; export const collections = { - docs: defineCollection({ schema: docsSchema() }), + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), }; diff --git a/examples/tailwind/src/env.d.ts b/examples/tailwind/src/env.d.ts deleted file mode 100644 index acef35f1..00000000 --- a/examples/tailwind/src/env.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -/// <reference path="../.astro/types.d.ts" /> -/// <reference types="astro/client" /> diff --git a/examples/tailwind/tsconfig.json b/examples/tailwind/tsconfig.json index bcbf8b50..8bf91d3b 100644 --- a/examples/tailwind/tsconfig.json +++ b/examples/tailwind/tsconfig.json @@ -1,3 +1,5 @@ { - "extends": "astro/tsconfigs/strict" + "extends": "astro/tsconfigs/strict", + "include": [".astro/types.d.ts", "**/*"], + "exclude": ["dist"] } diff --git a/package.json b/package.json index 7ccae44e..f63a9fd3 100644 --- a/package.json +++ b/package.json @@ -12,11 +12,11 @@ }, "license": "MIT", "devDependencies": { - "@astrojs/check": "^0.7.0", + "@astrojs/check": "^0.9.4", "@changesets/changelog-github": "^0.5.0", "@changesets/cli": "^2.27.9", "@size-limit/file": "^11.1.6", - "astro": "^4.16.10", + "astro": "^5.0.2", "prettier": "^3.3.3", "prettier-plugin-astro": "^0.14.1", "size-limit": "^11.1.6", @@ -50,6 +50,9 @@ "playwright", "search-insights" ] + }, + "patchedDependencies": { + "starlight-links-validator@0.13.2": "patches/starlight-links-validator@0.13.2.patch" } } } diff --git a/packages/docsearch/package.json b/packages/docsearch/package.json index e80bc275..ca909d19 100644 --- a/packages/docsearch/package.json +++ b/packages/docsearch/package.json @@ -25,7 +25,7 @@ "./schema": "./schema.ts" }, "peerDependencies": { - "@astrojs/starlight": ">=0.28.0" + "@astrojs/starlight": ">=0.30.0" }, "dependencies": { "@docsearch/css": "^3.6.0", diff --git a/packages/docsearch/schema.ts b/packages/docsearch/schema.ts index 1ee920ee..b227946c 100644 --- a/packages/docsearch/schema.ts +++ b/packages/docsearch/schema.ts @@ -3,17 +3,18 @@ import { z } from 'astro/zod'; /** * Schema for the Algolia DocSearch modal’s strings. * - * Add this to your `src/content/config.ts`: + * Add this to your `src/content.config.ts`: * * ```js * import { defineCollection } from 'astro:content'; + * import { docsLoader, i18nLoader } from '@astrojs/starlight/loaders'; * import { docsSchema, i18nSchema } from '@astrojs/starlight/schema'; * import { docSearchI18nSchema } from '@astrojs/starlight-docsearch/schema'; * * export const collections = { - * docs: defineCollection({ schema: docsSchema() }), + * docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), * i18n: defineCollection({ - * type: 'data', + * loader: i18nLoader(), * schema: i18nSchema({ extend: docSearchI18nSchema() }), * }), * }; diff --git a/packages/markdoc/package.json b/packages/markdoc/package.json index 0218a059..4a8f55a9 100644 --- a/packages/markdoc/package.json +++ b/packages/markdoc/package.json @@ -17,13 +17,13 @@ "./components": "./components.ts" }, "devDependencies": { - "@astrojs/markdoc": "^0.11.5", + "@astrojs/markdoc": "^0.12.1", "@astrojs/starlight": "workspace:*", - "vitest": "^1.6.0" + "vitest": "2.1.6" }, "peerDependencies": { - "@astrojs/markdoc": "^0.11.4", - "@astrojs/starlight": ">=0.23.0" + "@astrojs/markdoc": "^0.12.1", + "@astrojs/starlight": ">=0.30.0" }, "publishConfig": { "provenance": true diff --git a/packages/starlight/__e2e__/.gitignore b/packages/starlight/__e2e__/.gitignore index bde2931f..eed07661 100644 --- a/packages/starlight/__e2e__/.gitignore +++ b/packages/starlight/__e2e__/.gitignore @@ -1,3 +1,4 @@ # generated types .astro/ dist/ +build/ diff --git a/packages/starlight/__e2e__/fixtures/basics/astro.config.mjs b/packages/starlight/__e2e__/fixtures/basics/astro.config.mjs index 1279050d..ca9b813d 100644 --- a/packages/starlight/__e2e__/fixtures/basics/astro.config.mjs +++ b/packages/starlight/__e2e__/fixtures/basics/astro.config.mjs @@ -1,3 +1,4 @@ +// @ts-check import starlight from '@astrojs/starlight'; import { defineConfig } from 'astro/config'; diff --git a/packages/starlight/__e2e__/fixtures/basics/package.json b/packages/starlight/__e2e__/fixtures/basics/package.json index 09222111..cecfbf61 100644 --- a/packages/starlight/__e2e__/fixtures/basics/package.json +++ b/packages/starlight/__e2e__/fixtures/basics/package.json @@ -4,6 +4,6 @@ "private": true, "dependencies": { "@astrojs/starlight": "workspace:*", - "astro": "^4.16.10" + "astro": "^5.0.2" } } diff --git a/packages/starlight/__e2e__/fixtures/basics/src/content.config.ts b/packages/starlight/__e2e__/fixtures/basics/src/content.config.ts new file mode 100644 index 00000000..d9ee8c9d --- /dev/null +++ b/packages/starlight/__e2e__/fixtures/basics/src/content.config.ts @@ -0,0 +1,7 @@ +import { defineCollection } from 'astro:content'; +import { docsLoader } from '@astrojs/starlight/loaders'; +import { docsSchema } from '@astrojs/starlight/schema'; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight/__e2e__/fixtures/custom src-dir/astro.config.mjs b/packages/starlight/__e2e__/fixtures/custom src-dir/astro.config.mjs index 9e759d9e..68689f1b 100644 --- a/packages/starlight/__e2e__/fixtures/custom src-dir/astro.config.mjs +++ b/packages/starlight/__e2e__/fixtures/custom src-dir/astro.config.mjs @@ -1,3 +1,4 @@ +// @ts-check import starlight from '@astrojs/starlight'; import { defineConfig } from 'astro/config'; diff --git a/packages/starlight/__e2e__/fixtures/custom src-dir/package.json b/packages/starlight/__e2e__/fixtures/custom src-dir/package.json index c49d67f5..dd1a7765 100644 --- a/packages/starlight/__e2e__/fixtures/custom src-dir/package.json +++ b/packages/starlight/__e2e__/fixtures/custom src-dir/package.json @@ -4,6 +4,6 @@ "private": true, "dependencies": { "@astrojs/starlight": "workspace:*", - "astro": "^4.16.10" + "astro": "^5.0.2" } } diff --git a/packages/starlight/__e2e__/fixtures/custom src-dir/www/content.config.ts b/packages/starlight/__e2e__/fixtures/custom src-dir/www/content.config.ts new file mode 100644 index 00000000..d9ee8c9d --- /dev/null +++ b/packages/starlight/__e2e__/fixtures/custom src-dir/www/content.config.ts @@ -0,0 +1,7 @@ +import { defineCollection } from 'astro:content'; +import { docsLoader } from '@astrojs/starlight/loaders'; +import { docsSchema } from '@astrojs/starlight/schema'; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight/__e2e__/fixtures/custom src-dir/www/content/config.ts b/packages/starlight/__e2e__/fixtures/custom src-dir/www/content/config.ts deleted file mode 100644 index 45f60b01..00000000 --- a/packages/starlight/__e2e__/fixtures/custom src-dir/www/content/config.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { defineCollection } from 'astro:content'; -import { docsSchema } from '@astrojs/starlight/schema'; - -export const collections = { - docs: defineCollection({ schema: docsSchema() }), -}; diff --git a/packages/starlight/__e2e__/fixtures/git/astro.config.mjs b/packages/starlight/__e2e__/fixtures/git/astro.config.mjs index 0631c4f0..c3433485 100644 --- a/packages/starlight/__e2e__/fixtures/git/astro.config.mjs +++ b/packages/starlight/__e2e__/fixtures/git/astro.config.mjs @@ -1,3 +1,4 @@ +// @ts-check import starlight from '@astrojs/starlight'; import { defineConfig } from 'astro/config'; diff --git a/packages/starlight/__e2e__/fixtures/git/package.json b/packages/starlight/__e2e__/fixtures/git/package.json index ed68987e..a8b1645f 100644 --- a/packages/starlight/__e2e__/fixtures/git/package.json +++ b/packages/starlight/__e2e__/fixtures/git/package.json @@ -4,6 +4,6 @@ "private": true, "dependencies": { "@astrojs/starlight": "workspace:*", - "astro": "^4.16.10" + "astro": "^5.0.2" } } diff --git a/packages/starlight/__e2e__/fixtures/git/src/content.config.ts b/packages/starlight/__e2e__/fixtures/git/src/content.config.ts new file mode 100644 index 00000000..d9ee8c9d --- /dev/null +++ b/packages/starlight/__e2e__/fixtures/git/src/content.config.ts @@ -0,0 +1,7 @@ +import { defineCollection } from 'astro:content'; +import { docsLoader } from '@astrojs/starlight/loaders'; +import { docsSchema } from '@astrojs/starlight/schema'; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight/__e2e__/fixtures/git/src/content/config.ts b/packages/starlight/__e2e__/fixtures/git/src/content/config.ts deleted file mode 100644 index 45f60b01..00000000 --- a/packages/starlight/__e2e__/fixtures/git/src/content/config.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { defineCollection } from 'astro:content'; -import { docsSchema } from '@astrojs/starlight/schema'; - -export const collections = { - docs: defineCollection({ schema: docsSchema() }), -}; diff --git a/packages/starlight/__e2e__/fixtures/legacy-collection-config-file/astro.config.mjs b/packages/starlight/__e2e__/fixtures/legacy-collection-config-file/astro.config.mjs new file mode 100644 index 00000000..02d3655e --- /dev/null +++ b/packages/starlight/__e2e__/fixtures/legacy-collection-config-file/astro.config.mjs @@ -0,0 +1,12 @@ +// @ts-check +import starlight from '@astrojs/starlight'; +import { defineConfig } from 'astro/config'; + +export default defineConfig({ + integrations: [ + starlight({ + title: 'Legacy collection config file', + pagefind: false, + }), + ], +}); diff --git a/packages/starlight/__e2e__/fixtures/legacy-collection-config-file/package.json b/packages/starlight/__e2e__/fixtures/legacy-collection-config-file/package.json new file mode 100644 index 00000000..5274567a --- /dev/null +++ b/packages/starlight/__e2e__/fixtures/legacy-collection-config-file/package.json @@ -0,0 +1,9 @@ +{ + "name": "@e2e/legacy-collection-config-file", + "version": "0.0.0", + "private": true, + "dependencies": { + "@astrojs/starlight": "workspace:*", + "astro": "^5.0.2" + } +} diff --git a/packages/starlight/__e2e__/fixtures/basics/src/content/config.ts b/packages/starlight/__e2e__/fixtures/legacy-collection-config-file/src/content/config.ts index 45f60b01..d9ee8c9d 100644 --- a/packages/starlight/__e2e__/fixtures/basics/src/content/config.ts +++ b/packages/starlight/__e2e__/fixtures/legacy-collection-config-file/src/content/config.ts @@ -1,6 +1,7 @@ import { defineCollection } from 'astro:content'; +import { docsLoader } from '@astrojs/starlight/loaders'; import { docsSchema } from '@astrojs/starlight/schema'; export const collections = { - docs: defineCollection({ schema: docsSchema() }), + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), }; diff --git a/packages/starlight/__e2e__/fixtures/legacy-collection-config-file/src/pages/custom.astro b/packages/starlight/__e2e__/fixtures/legacy-collection-config-file/src/pages/custom.astro new file mode 100644 index 00000000..680eaaef --- /dev/null +++ b/packages/starlight/__e2e__/fixtures/legacy-collection-config-file/src/pages/custom.astro @@ -0,0 +1,7 @@ +--- +import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro'; +--- + +<StarlightPage frontmatter={{ title: 'A custom page' }}> + <p>Hello</p> +</StarlightPage> diff --git a/packages/starlight/__e2e__/fixtures/ssr/astro.config.mjs b/packages/starlight/__e2e__/fixtures/ssr/astro.config.mjs index 3faa2cd8..1b30d024 100644 --- a/packages/starlight/__e2e__/fixtures/ssr/astro.config.mjs +++ b/packages/starlight/__e2e__/fixtures/ssr/astro.config.mjs @@ -1,3 +1,4 @@ +// @ts-check import { defineConfig } from 'astro/config'; import starlight from '@astrojs/starlight'; import node from '@astrojs/node'; diff --git a/packages/starlight/__e2e__/fixtures/ssr/package.json b/packages/starlight/__e2e__/fixtures/ssr/package.json index 986a991f..3890d6b9 100644 --- a/packages/starlight/__e2e__/fixtures/ssr/package.json +++ b/packages/starlight/__e2e__/fixtures/ssr/package.json @@ -3,8 +3,8 @@ "version": "0.0.0", "private": true, "dependencies": { - "@astrojs/node": "^8.3.2", + "@astrojs/node": "^9.0.0", "@astrojs/starlight": "workspace:*", - "astro": "^4.16.10" + "astro": "^5.0.2" } } diff --git a/packages/starlight/__e2e__/fixtures/ssr/src/content.config.ts b/packages/starlight/__e2e__/fixtures/ssr/src/content.config.ts new file mode 100644 index 00000000..d9ee8c9d --- /dev/null +++ b/packages/starlight/__e2e__/fixtures/ssr/src/content.config.ts @@ -0,0 +1,7 @@ +import { defineCollection } from 'astro:content'; +import { docsLoader } from '@astrojs/starlight/loaders'; +import { docsSchema } from '@astrojs/starlight/schema'; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight/__e2e__/fixtures/ssr/src/content/config.ts b/packages/starlight/__e2e__/fixtures/ssr/src/content/config.ts deleted file mode 100644 index 45f60b01..00000000 --- a/packages/starlight/__e2e__/fixtures/ssr/src/content/config.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { defineCollection } from 'astro:content'; -import { docsSchema } from '@astrojs/starlight/schema'; - -export const collections = { - docs: defineCollection({ schema: docsSchema() }), -}; diff --git a/packages/starlight/__e2e__/legacy-collection-config-file.test.ts b/packages/starlight/__e2e__/legacy-collection-config-file.test.ts new file mode 100644 index 00000000..71b67f41 --- /dev/null +++ b/packages/starlight/__e2e__/legacy-collection-config-file.test.ts @@ -0,0 +1,15 @@ +import { expect, testFactory } from './test-utils'; + +// This fixture uses a legacy collection config file (`src/content/config.ts`) instead of the new +// one (`src/content.config.ts`). +const test = testFactory('./fixtures/legacy-collection-config-file/'); + +test('builds a custom page using the `<StarlightPage>` component and a legacy collection config file', async ({ + page, + getProdServer, +}) => { + const starlight = await getProdServer(); + await starlight.goto('/custom'); + + await expect(page.getByText('Hello')).toBeVisible(); +}); diff --git a/packages/starlight/__tests__/basics/git.test.ts b/packages/starlight/__tests__/basics/git.test.ts index 28f6a97b..439eea33 100644 --- a/packages/starlight/__tests__/basics/git.test.ts +++ b/packages/starlight/__tests__/basics/git.test.ts @@ -87,7 +87,7 @@ describe('getNewestCommitDate', () => { }); describe('getAllNewestCommitDate', () => { - const { commitAllChanges, getFilePath, writeFile } = makeTestRepo(); + const { commitAllChanges, getRepoPath, getFilePath, writeFile } = makeTestRepo(); test('returns the newest commit date', () => { writeFile('added.md', 'content'); @@ -108,7 +108,7 @@ describe('getAllNewestCommitDate', () => { writeFile('updated-same-day.md', 'content 1'); commitAllChanges('update updated.md', '2023-06-25T14:22:35Z'); - const latestDates = new Map(getAllNewestCommitDate(getFilePath(''))); + const latestDates = new Map(getAllNewestCommitDate(getRepoPath(), getFilePath(''))); const expectedDates = new Map<string, ISODate>([ ['added.md', '2022-09-18'], @@ -130,7 +130,7 @@ describe('getAllNewestCommitDate', () => { }); test('returns the newest commit date from inlined API', () => { - const api = makeInlineGitAPI(getAllNewestCommitDate(getFilePath(''))); + const api = makeInlineGitAPI(getAllNewestCommitDate(getRepoPath(), getFilePath(''))); const expectedDates = new Map<string, ISODate>([ ['added.md', '2022-09-18'], @@ -146,7 +146,9 @@ describe('getAllNewestCommitDate', () => { }); test('returns an empty list when the git history for the directory cannot be retrieved', () => { - expect(getAllNewestCommitDate(getFilePath('../not-a-starlight-test-repo'))).toStrictEqual([]); + expect( + getAllNewestCommitDate(getRepoPath(), getFilePath('../not-a-starlight-test-repo')) + ).toStrictEqual([]); }); }); diff --git a/packages/starlight/__tests__/basics/i18n.test.ts b/packages/starlight/__tests__/basics/i18n.test.ts index 7c0af56a..916fe8d9 100644 --- a/packages/starlight/__tests__/basics/i18n.test.ts +++ b/packages/starlight/__tests__/basics/i18n.test.ts @@ -1,8 +1,7 @@ import { assert, describe, expect, test, vi } from 'vitest'; import config from 'virtual:starlight/user-config'; import { processI18nConfig, pickLang } from '../../utils/i18n'; -import type { AstroConfig } from 'astro'; -import type { AstroUserConfig } from 'astro/config'; +import type { AstroConfig, AstroUserConfig } from 'astro'; describe('pickLang', () => { const dictionary = { en: 'Hello', fr: 'Bonjour' }; diff --git a/packages/starlight/__tests__/basics/route-data.test.ts b/packages/starlight/__tests__/basics/route-data.test.ts index f3293259..39d19fab 100644 --- a/packages/starlight/__tests__/basics/route-data.test.ts +++ b/packages/starlight/__tests__/basics/route-data.test.ts @@ -8,7 +8,6 @@ vi.mock('astro:content', async () => docs: [ ['index.mdx', { title: 'Home Page' }], ['getting-started.mdx', { title: 'Splash', template: 'splash' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['showcase.mdx', { title: 'ToC Disabled', tableOfContents: false }], ['environmental-impact.md', { title: 'Explicit update date', lastUpdated: new Date() }], ], diff --git a/packages/starlight/__tests__/basics/routing.test.ts b/packages/starlight/__tests__/basics/routing.test.ts index c94e4895..60f98256 100644 --- a/packages/starlight/__tests__/basics/routing.test.ts +++ b/packages/starlight/__tests__/basics/routing.test.ts @@ -1,8 +1,9 @@ import { type GetStaticPathsResult } from 'astro'; import { getCollection } from 'astro:content'; import config from 'virtual:starlight/user-config'; +import project from 'virtual:starlight/project-context'; import { expect, test, vi } from 'vitest'; -import { routes, paths, getRouteBySlugParam } from '../../utils/routing'; +import { routes, paths, getRouteBySlugParam, type Route } from '../../utils/routing'; import { slugToParam } from '../../utils/slugs'; vi.mock('astro:content', async () => @@ -20,19 +21,33 @@ test('test suite is using correct env', () => { }); test('route slugs are normalized', () => { - const indexRoute = routes.find((route) => route.id.startsWith('index.md')); + const indexRoute = routes.find( + (route) => route.id === (project.legacyCollections ? 'index.mdx' : '') + ); expect(indexRoute?.slug).toBe(''); }); test('routes contain copy of original doc as entry', async () => { const docs = await getCollection('docs'); for (const route of routes) { - const doc = docs.find((doc) => doc.id === route.id); + const doc = docs.find((doc) => doc.id === route.id || (doc.id === 'index' && route.id === '')); if (!doc) throw new Error('Expected to find doc for route ' + route.id); // Compare without slug as slugs can be normalized. const { slug: _, ...entry } = route.entry; - const { slug: __, ...input } = doc; - expect(entry).toEqual(input); + if (project.legacyCollections) { + // When using legacy collections, the `filePath` property is added to the route entry. + expect(entry.filePath).toBeDefined(); + const { filePath: _, ...legacyEntry } = entry; + // @ts-expect-error - When using legacy collections, the `slug` property is available but can + // be normalized. + const { slug: __, ...legacyInput } = doc; + expect(legacyEntry).toEqual(legacyInput); + } else { + // Compare without ids as ids can be normalized when using loaders. + const { id: _, ...loaderEntry } = entry; + const { id: __, ...loaderInput } = doc; + expect(loaderEntry).toEqual(loaderInput); + } } }); @@ -73,7 +88,11 @@ test('routes can be retrieved from their path parameters', () => { }); test('routes includes drafts except in production', async () => { - expect(routes.find((route) => route.id === 'guides/authoring-content.mdx')).toBeTruthy(); + const routeMatcher = (route: Route) => + route.id === + (project.legacyCollections ? 'guides/authoring-content.mdx' : 'guides/authoring-content'); + + expect(routes.find(routeMatcher)).toBeTruthy(); // Reset the modules registry so that re-importing `utils/routing.ts` re-evaluates the module and // re-computes the routes. Re-importing the module is necessary because top-level imports cannot @@ -84,7 +103,7 @@ test('routes includes drafts except in production', async () => { // Re-import the module to re-evaluate it. const { routes: prodRoutes } = await import('../../utils/routing'); - expect(prodRoutes.find((route) => route.id === 'guides/authoring-content.mdx')).toBeFalsy(); + expect(prodRoutes.find(routeMatcher)).toBeFalsy(); vi.unstubAllEnvs(); vi.resetModules(); diff --git a/packages/starlight/__tests__/basics/sorting.test.ts b/packages/starlight/__tests__/basics/sorting.test.ts index 1129928b..978ebd24 100644 --- a/packages/starlight/__tests__/basics/sorting.test.ts +++ b/packages/starlight/__tests__/basics/sorting.test.ts @@ -5,15 +5,10 @@ vi.mock('astro:content', async () => (await import('../test-utils')).mockedAstroContent({ docs: [ ['index.mdx', { title: 'first' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['guides/example.md', { title: 'second' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['reference/example.md', { title: 'third' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['reference/rod/foo.md', { title: 'fourth' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['reference/rod/zip.md', { title: 'fifth' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['reference/zoo.md', { title: 'sixth' }], ], }) diff --git a/packages/starlight/__tests__/basics/starlight-page-route-data-extend.test.ts b/packages/starlight/__tests__/basics/starlight-page-route-data-extend.test.ts index 23438c7a..24616330 100644 --- a/packages/starlight/__tests__/basics/starlight-page-route-data-extend.test.ts +++ b/packages/starlight/__tests__/basics/starlight-page-route-data-extend.test.ts @@ -23,7 +23,7 @@ const starlightPageProps: StarlightPageProps = { test('throws a validation error if a built-in field required by the user schema is not passed down', async () => { // The first line should be a user-friendly error message describing the exact issue and the second line should be // the missing description field. - expect(() => + await expect(() => generateStarlightPageRouteData({ props: starlightPageProps, url: new URL('https://example.com/test-slug'), diff --git a/packages/starlight/__tests__/basics/starlight-page-route-data.test.ts b/packages/starlight/__tests__/basics/starlight-page-route-data.test.ts index 91310f84..7f55bd22 100644 --- a/packages/starlight/__tests__/basics/starlight-page-route-data.test.ts +++ b/packages/starlight/__tests__/basics/starlight-page-route-data.test.ts @@ -250,7 +250,7 @@ test('uses provided sidebar if any', async () => { }); test('throws error if sidebar is malformated', async () => { - expect(() => + await expect(() => generateStarlightPageRouteData({ props: { ...starlightPageProps, diff --git a/packages/starlight/__tests__/build-format-file/navigation.test.ts b/packages/starlight/__tests__/build-format-file/navigation.test.ts index 30d3d105..16445cb6 100644 --- a/packages/starlight/__tests__/build-format-file/navigation.test.ts +++ b/packages/starlight/__tests__/build-format-file/navigation.test.ts @@ -8,7 +8,6 @@ vi.mock('astro:content', async () => ['environmental-impact.md', { title: 'Eco-friendly docs' }], ['reference/configuration.mdx', { title: 'Config Reference' }], ['reference/frontmatter.md', { title: 'Frontmatter Reference' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['api/v1/users.md', { title: 'Users API' }], ['guides/project-structure.mdx', { title: 'Project Structure' }], ], diff --git a/packages/starlight/__tests__/edit-url/edit-url.test.ts b/packages/starlight/__tests__/edit-url/edit-url.test.ts index c77aa93d..25ab98aa 100644 --- a/packages/starlight/__tests__/edit-url/edit-url.test.ts +++ b/packages/starlight/__tests__/edit-url/edit-url.test.ts @@ -8,7 +8,6 @@ vi.mock('astro:content', async () => ['index.mdx', { title: 'Home Page' }], ['getting-started.mdx', { title: 'Getting Started' }], [ - // @ts-expect-error — Using a slug not present in Starlight docs site 'showcase.mdx', { title: 'Custom edit link', editUrl: 'https://example.com/custom-edit?link' }, ], diff --git a/packages/starlight/__tests__/git-utils.ts b/packages/starlight/__tests__/git-utils.ts index 81999931..75f0054b 100644 --- a/packages/starlight/__tests__/git-utils.ts +++ b/packages/starlight/__tests__/git-utils.ts @@ -42,6 +42,9 @@ export function makeTestRepo(onPath?: string) { // This sets both the author and committer dates to the provided date. runInRepo('git', ['commit', '-m', message, '--date', date], { GIT_COMMITTER_DATE: date }); }, + getRepoPath() { + return repoPath; + }, getFilePath(name: string) { return join(repoPath, name); }, diff --git a/packages/starlight/__tests__/i18n-non-root-single-locale/routing.test.ts b/packages/starlight/__tests__/i18n-non-root-single-locale/routing.test.ts index fae14a98..216b17b5 100644 --- a/packages/starlight/__tests__/i18n-non-root-single-locale/routing.test.ts +++ b/packages/starlight/__tests__/i18n-non-root-single-locale/routing.test.ts @@ -1,11 +1,11 @@ import { expect, test, vi } from 'vitest'; +import project from 'virtual:starlight/project-context'; import { routes } from '../../utils/routing'; vi.mock('astro:content', async () => (await import('../test-utils')).mockedAstroContent({ docs: [ ['fr/index.mdx', { title: 'Accueil' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['en/index.mdx', { title: 'Home page' }], ['404.md', { title: '404' }], ], @@ -13,7 +13,9 @@ vi.mock('astro:content', async () => ); test('route slugs are normalized', () => { - const indexRoute = routes.find((route) => route.id.startsWith('fr/index.md')); + const indexRoute = routes.find( + (route) => route.entry.id === (project.legacyCollections ? 'fr/index.mdx' : 'fr') + ); expect(indexRoute?.slug).toBe('fr'); }); diff --git a/packages/starlight/__tests__/i18n-root-locale/routing.test.ts b/packages/starlight/__tests__/i18n-root-locale/routing.test.ts index 32654f3a..f23be463 100644 --- a/packages/starlight/__tests__/i18n-root-locale/routing.test.ts +++ b/packages/starlight/__tests__/i18n-root-locale/routing.test.ts @@ -1,3 +1,4 @@ +import project from 'virtual:starlight/project-context'; import config from 'virtual:starlight/user-config'; import { assert, expect, test, vi } from 'vitest'; import { routes } from '../../utils/routing'; @@ -9,9 +10,7 @@ vi.mock('astro:content', async () => docs: [ ['404.md', { title: 'Page introuvable' }], ['index.mdx', { title: 'Accueil' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['en/index.mdx', { title: 'Home page' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['ar/index.mdx', { title: 'الصفحة الرئيسية' }], [ 'guides/authoring-content.mdx', @@ -61,7 +60,13 @@ test('fallback routes have fallback locale data in entryMeta', () => { }); test('fallback routes use their own locale data', () => { - const enGuide = routes.find((route) => route.id === 'en/guides/authoring-content.mdx'); + const enGuide = routes.find( + (route) => + route.id === + (project.legacyCollections + ? 'en/guides/authoring-content.mdx' + : 'en/guides/authoring-content') + ); if (!enGuide) throw new Error('Expected to find English fallback route for authoring-content.mdx'); expect(enGuide.locale).toBe('en'); @@ -83,8 +88,8 @@ test('fallback routes use fallback entry last updated dates', () => { expect(getNewestCommitDate).toHaveBeenCalledOnce(); expect(getNewestCommitDate).toHaveBeenCalledWith( - 'guides/authoring-content.mdx' - //^ no `en/` prefix + 'src/content/docs/guides/authoring-content.mdx' + // ^ no `en/` prefix ); getNewestCommitDate.mockRestore(); diff --git a/packages/starlight/__tests__/i18n-single-root-locale/routing.test.ts b/packages/starlight/__tests__/i18n-single-root-locale/routing.test.ts index 64e482e7..a356dd4b 100644 --- a/packages/starlight/__tests__/i18n-single-root-locale/routing.test.ts +++ b/packages/starlight/__tests__/i18n-single-root-locale/routing.test.ts @@ -1,4 +1,5 @@ import { expect, test, vi } from 'vitest'; +import project from 'virtual:starlight/project-context'; import { routes } from '../../utils/routing'; vi.mock('astro:content', async () => @@ -6,14 +7,15 @@ vi.mock('astro:content', async () => docs: [ ['index.mdx', { title: 'Accueil' }], ['guides/authoring-content.mdx', { title: 'Authoring content' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['en/index.mdx', { title: 'Not the home page' }], ], }) ); test('route slugs are normalized', () => { - const indexRoute = routes.find((route) => route.id.startsWith('index.md')); + const indexRoute = routes.find( + (route) => route.id === (project.legacyCollections ? 'index.mdx' : '') + ); expect(indexRoute?.slug).toBe(''); }); diff --git a/packages/starlight/__tests__/i18n/navigation-order.test.ts b/packages/starlight/__tests__/i18n/navigation-order.test.ts index fb37ca62..96e60f9c 100644 --- a/packages/starlight/__tests__/i18n/navigation-order.test.ts +++ b/packages/starlight/__tests__/i18n/navigation-order.test.ts @@ -5,21 +5,13 @@ vi.mock('astro:content', async () => (await import('../test-utils')).mockedAstroContent({ docs: [ ['fr/index.mdx', { title: 'Accueil' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['en/index.mdx', { title: 'Home page', sidebar: { order: 1 } }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['ar/index.mdx', { title: 'الصفحة الرئيسية' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['en/guides/authoring-content.md', { title: 'Authoring Markdown' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['en/404.md', { title: 'Not found' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['fr/route/distribuer.mdx', { title: 'Distribuer' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['fr/route/décoder.mdx', { title: 'Décoder' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['fr/référence/bricolage.mdx', { title: 'Bricolage' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['fr/référence/bénéfice.mdx', { title: 'Bénéfice' }], ], }) diff --git a/packages/starlight/__tests__/i18n/routing.test.ts b/packages/starlight/__tests__/i18n/routing.test.ts index 8c025e2c..7e9f254a 100644 --- a/packages/starlight/__tests__/i18n/routing.test.ts +++ b/packages/starlight/__tests__/i18n/routing.test.ts @@ -1,4 +1,5 @@ import config from 'virtual:starlight/user-config'; +import project from 'virtual:starlight/project-context'; import { expect, test, vi } from 'vitest'; import { routes } from '../../utils/routing'; @@ -6,13 +7,9 @@ vi.mock('astro:content', async () => (await import('../test-utils')).mockedAstroContent({ docs: [ ['fr/index.mdx', { title: 'Accueil' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['en/index.mdx', { title: 'Home page' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['ar/index.mdx', { title: 'الصفحة الرئيسية' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['en/guides/authoring-content.md', { title: 'Création de contenu en Markdown' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['en/404.md', { title: 'Page introuvable' }], ['it/index.mdx', { title: 'Pagina iniziale' }], ['404.md', { title: '404' }], @@ -68,7 +65,11 @@ test('fallback routes have fallback locale data in entryMeta', () => { }); test('fallback routes use their own locale data', () => { - const arGuide = routes.find((route) => route.id === 'ar/guides/authoring-content.md'); + const arGuide = routes.find( + (route) => + route.id === + (project.legacyCollections ? 'ar/guides/authoring-content.md' : 'ar/guides/authoring-content') + ); if (!arGuide) throw new Error('Expected to find Arabic fallback route for authoring-content.md'); expect(arGuide.locale).toBe('ar'); expect(arGuide.lang).toBe('ar'); diff --git a/packages/starlight/__tests__/plugins/config.test.ts b/packages/starlight/__tests__/plugins/config.test.ts index 948c0726..8848e349 100644 --- a/packages/starlight/__tests__/plugins/config.test.ts +++ b/packages/starlight/__tests__/plugins/config.test.ts @@ -52,7 +52,7 @@ test('receives the user provided configuration including the plugins list', asyn describe('validation', () => { test('validates starlight configuration before running plugins', async () => { - expect( + await expect( async () => await runPlugins( // @ts-expect-error - invalid sidebar config. @@ -64,7 +64,7 @@ describe('validation', () => { }); test('validates plugins configuration before running them', async () => { - expect( + await expect( async () => await runPlugins( { title: 'Test Docs' }, @@ -76,7 +76,7 @@ describe('validation', () => { }); test('validates configuration updates from plugins do not update the `plugins` config key', async () => { - expect( + await expect( async () => await runPlugins( { title: 'Test Docs' }, @@ -99,7 +99,7 @@ describe('validation', () => { }); test('validates configuration updates from plugins', async () => { - expect( + await expect( async () => await runPlugins( { title: 'Test Docs' }, diff --git a/packages/starlight/__tests__/remark-rehype/asides.test.ts b/packages/starlight/__tests__/remark-rehype/asides.test.ts index 8ece4c12..456540b6 100644 --- a/packages/starlight/__tests__/remark-rehype/asides.test.ts +++ b/packages/starlight/__tests__/remark-rehype/asides.test.ts @@ -38,7 +38,7 @@ test('generates aside', async () => { Some text ::: `); - expect(res.code).toMatchFileSnapshot('./snapshots/generates-aside.html'); + await expect(res.code).toMatchFileSnapshot('./snapshots/generates-aside.html'); }); describe('default labels', () => { @@ -128,7 +128,7 @@ More. </details> ::: `); - expect(res.code).toMatchFileSnapshot('./snapshots/handles-complex-children.html'); + await expect(res.code).toMatchFileSnapshot('./snapshots/handles-complex-children.html'); }); test('nested asides', async () => { @@ -142,7 +142,7 @@ Nested tip. :::: `); - expect(res.code).toMatchFileSnapshot('./snapshots/nested-asides.html'); + await expect(res.code).toMatchFileSnapshot('./snapshots/nested-asides.html'); }); test('nested asides with custom titles', async () => { @@ -171,7 +171,7 @@ Nested tip. "Tip with a custom title", ] `); - expect(res.code).toMatchFileSnapshot('./snapshots/nested-asides-custom-titles.html'); + await expect(res.code).toMatchFileSnapshot('./snapshots/nested-asides-custom-titles.html'); }); describe('translated labels in French', () => { diff --git a/packages/starlight/__tests__/remark-rehype/rehype-file-tree.test.ts b/packages/starlight/__tests__/remark-rehype/rehype-file-tree.test.ts index dcbe62f5..36e8cb41 100644 --- a/packages/starlight/__tests__/remark-rehype/rehype-file-tree.test.ts +++ b/packages/starlight/__tests__/remark-rehype/rehype-file-tree.test.ts @@ -51,7 +51,7 @@ describe('validation', () => { }); describe('processor', () => { - test('processes a basic tree', () => { + test('processes a basic tree', async () => { const html = processTestFileTree(`<ul> <li>root_file</li> <li>root_directory/ @@ -61,7 +61,7 @@ describe('processor', () => { <li> </ul>`); - expect(extractFileTree(html)).toMatchFileSnapshot('./snapshots/file-tree-basic.html'); + await expect(extractFileTree(html)).toMatchFileSnapshot('./snapshots/file-tree-basic.html'); }); test('does not add a comment node with no comments', () => { @@ -70,18 +70,22 @@ describe('processor', () => { expect(extractFileTree(html)).not.toContain('<span class="comment">'); }); - test('processes text comments following the file name', () => { + test('processes text comments following the file name', async () => { const html = processTestFileTree(`<ul><li>file this is a comment</li></ul>`); - expect(extractFileTree(html)).toMatchFileSnapshot('./snapshots/file-tree-comment-text.html'); + await expect(extractFileTree(html)).toMatchFileSnapshot( + './snapshots/file-tree-comment-text.html' + ); }); - test('processes comment nodes', () => { + test('processes comment nodes', async () => { const html = processTestFileTree( `<ul><li>file this is an <strong>important</strong> comment</li></ul>` ); - expect(extractFileTree(html)).toMatchFileSnapshot('./snapshots/file-tree-comment-nodes.html'); + await expect(extractFileTree(html)).toMatchFileSnapshot( + './snapshots/file-tree-comment-nodes.html' + ); }); test('identifies directory with either a file name ending with a slash or a nested list', () => { diff --git a/packages/starlight/__tests__/sidebar/navigation-attributes.test.ts b/packages/starlight/__tests__/sidebar/navigation-attributes.test.ts index b613eda6..3ce50a76 100644 --- a/packages/starlight/__tests__/sidebar/navigation-attributes.test.ts +++ b/packages/starlight/__tests__/sidebar/navigation-attributes.test.ts @@ -13,7 +13,6 @@ vi.mock('astro:content', async () => sidebar: { attrs: { class: 'advanced', ping: 'https://example.com' } }, }, ], - // @ts-expect-error — Using a slug not present in Starlight docs site ['api/v1/users.md', { title: 'Users API' }], ], }) diff --git a/packages/starlight/__tests__/sidebar/navigation-badges.test.ts b/packages/starlight/__tests__/sidebar/navigation-badges.test.ts index c54546ba..2f48330d 100644 --- a/packages/starlight/__tests__/sidebar/navigation-badges.test.ts +++ b/packages/starlight/__tests__/sidebar/navigation-badges.test.ts @@ -19,7 +19,6 @@ vi.mock('astro:content', async () => }, ], ['reference/frontmatter.md', { title: 'Frontmatter Reference', sidebar: { badge: 'New' } }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['api/v1/users.md', { title: 'Users API' }], ['guides/project-structure.mdx', { title: 'Project Structure' }], ], diff --git a/packages/starlight/__tests__/sidebar/navigation-hidden.test.ts b/packages/starlight/__tests__/sidebar/navigation-hidden.test.ts index 631daae1..dc46686c 100644 --- a/packages/starlight/__tests__/sidebar/navigation-hidden.test.ts +++ b/packages/starlight/__tests__/sidebar/navigation-hidden.test.ts @@ -8,7 +8,6 @@ vi.mock('astro:content', async () => ['environmental-impact.md', { title: 'Eco-friendly docs' }], ['reference/configuration.mdx', { title: 'Config Reference' }], ['reference/frontmatter.md', { title: 'Frontmatter Reference', sidebar: { hidden: true } }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['api/v1/users.md', { title: 'Users API' }], ['guides/project-structure.mdx', { title: 'Project Structure' }], ], diff --git a/packages/starlight/__tests__/sidebar/navigation-order.test.ts b/packages/starlight/__tests__/sidebar/navigation-order.test.ts index 5b754f60..aa1396c5 100644 --- a/packages/starlight/__tests__/sidebar/navigation-order.test.ts +++ b/packages/starlight/__tests__/sidebar/navigation-order.test.ts @@ -8,7 +8,6 @@ vi.mock('astro:content', async () => ['environmental-impact.md', { title: 'Eco-friendly docs' }], ['reference/configuration.mdx', { title: 'Config Reference' }], ['reference/frontmatter.md', { title: 'Frontmatter Reference', sidebar: { order: 1 } }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['api/v1/users.md', { title: 'Users API' }], ['guides/project-structure.mdx', { title: 'Project Structure' }], ], diff --git a/packages/starlight/__tests__/sidebar/navigation-unicode.test.ts b/packages/starlight/__tests__/sidebar/navigation-unicode.test.ts index f3026d4e..e74f7f6c 100644 --- a/packages/starlight/__tests__/sidebar/navigation-unicode.test.ts +++ b/packages/starlight/__tests__/sidebar/navigation-unicode.test.ts @@ -8,7 +8,6 @@ vi.mock('astro:content', async () => ['environmental-impact.md', { title: 'Eco-friendly docs' }], ['reference/configuration.mdx', { title: 'Config Reference' }], ['reference/frontmatter.md', { title: 'Frontmatter Reference' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['api/v1/用户.md', { title: 'Path with non-ASCII characters' }], ['guides/project-structure.mdx', { title: 'Project Structure' }], ], diff --git a/packages/starlight/__tests__/sidebar/navigation.test.ts b/packages/starlight/__tests__/sidebar/navigation.test.ts index 2ae254a5..bda1c680 100644 --- a/packages/starlight/__tests__/sidebar/navigation.test.ts +++ b/packages/starlight/__tests__/sidebar/navigation.test.ts @@ -8,9 +8,7 @@ vi.mock('astro:content', async () => ['environmental-impact.md', { title: 'Eco-friendly docs' }], ['reference/configuration.mdx', { title: 'Config Reference' }], ['reference/frontmatter.md', { title: 'Frontmatter Reference' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['reference/frontmatter/foo.mdx', { title: 'Foo' }], - // @ts-expect-error — Using a slug not present in Starlight docs site ['api/v1/users.md', { title: 'Users API' }], ['guides/project-structure.mdx', { title: 'Project Structure' }], ], diff --git a/packages/starlight/__tests__/test-config.ts b/packages/starlight/__tests__/test-config.ts index 47ab267d..73ae958c 100644 --- a/packages/starlight/__tests__/test-config.ts +++ b/packages/starlight/__tests__/test-config.ts @@ -6,6 +6,8 @@ import { vitePluginStarlightUserConfig } from '../integrations/virtual-user-conf import { runPlugins, type StarlightUserConfigWithPlugins } from '../utils/plugins'; import { createTestPluginContext } from './test-plugin-utils'; +const testLegacyCollections = process.env.LEGACY_COLLECTIONS === 'true'; + export async function defineVitestConfig( { plugins, ...config }: StarlightUserConfigWithPlugins, opts?: { @@ -35,6 +37,7 @@ export async function defineVitestConfig( srcDir, build, trailingSlash, + legacy: { collections: testLegacyCollections }, }, pluginTranslations ), diff --git a/packages/starlight/__tests__/test-utils.ts b/packages/starlight/__tests__/test-utils.ts index 81faadf6..45dbde66 100644 --- a/packages/starlight/__tests__/test-utils.ts +++ b/packages/starlight/__tests__/test-utils.ts @@ -1,6 +1,7 @@ import { z } from 'astro/zod'; +import project from 'virtual:starlight/project-context'; import { docsSchema, i18nSchema } from '../schema'; -import type { StarlightDocsEntry } from '../utils/routing'; +import type { StarlightDocsCollectionEntry } from '../utils/routing'; import { vi } from 'vitest'; const frontmatterSchema = docsSchema()({ @@ -23,18 +24,26 @@ const frontmatterSchema = docsSchema()({ }); function mockDoc( - id: StarlightDocsEntry['id'], + docsFilePath: string, data: z.input<typeof frontmatterSchema>, body = '' -): StarlightDocsEntry { - return { - id, - slug: id.replace(/\.[^\.]+$/, '').replace(/\/index$/, ''), +): StarlightDocsCollectionEntry { + const slug = docsFilePath.replace(/\.[^\.]+$/, '').replace(/\/index$/, ''); + + const doc: StarlightDocsCollectionEntry = { + id: project.legacyCollections ? docsFilePath : slug, body, collection: 'docs', data: frontmatterSchema.parse(data), - render: (() => {}) as StarlightDocsEntry['render'], }; + + if (project.legacyCollections) { + doc.slug = slug; + } else { + doc.filePath = `src/content/docs/${docsFilePath}`; + } + + return doc; } function mockDict(id: string, data: z.input<ReturnType<typeof i18nSchema>>) { @@ -69,10 +78,20 @@ export async function mockedAstroContent({ export async function mockedCollectionConfig(docsUserSchema?: Parameters<typeof docsSchema>[0]) { const content = await vi.importActual<typeof import('astro:content')>('astro:content'); const schemas = await vi.importActual<typeof import('../schema')>('../schema'); + const loaders = await vi.importActual<typeof import('../loaders')>('../loaders'); + return { collections: { - docs: content.defineCollection({ schema: schemas.docsSchema(docsUserSchema) }), - i18n: content.defineCollection({ type: 'data', schema: schemas.i18nSchema() }), + docs: content.defineCollection( + project.legacyCollections + ? { schema: schemas.docsSchema(docsUserSchema) } + : { loader: loaders.docsLoader(), schema: schemas.docsSchema(docsUserSchema) } + ), + i18n: content.defineCollection( + project.legacyCollections + ? { type: 'data', schema: schemas.i18nSchema() } + : { loader: loaders.i18nLoader(), schema: schemas.i18nSchema() } + ), }, }; } diff --git a/packages/starlight/components/EmptyMarkdown.md b/packages/starlight/components/EmptyMarkdown.md deleted file mode 100644 index e69de29b..00000000 --- a/packages/starlight/components/EmptyMarkdown.md +++ /dev/null diff --git a/packages/starlight/components/Page.astro b/packages/starlight/components/Page.astro index 0ab90d1b..c1c7406f 100644 --- a/packages/starlight/components/Page.astro +++ b/packages/starlight/components/Page.astro @@ -35,16 +35,14 @@ const pagefindEnabled = Astro.props.entry.slug !== '404' && !Astro.props.entry.slug.endsWith('/404') && Astro.props.entry.data.pagefind !== false; + +const dataAttributes: DOMStringMap = { 'data-theme': 'dark' }; +if (Boolean(Astro.props.toc)) dataAttributes['data-has-toc'] = ''; +if (Astro.props.hasSidebar) dataAttributes['data-has-sidebar'] = ''; +if (Boolean(Astro.props.entry.data.hero)) dataAttributes['data-has-hero'] = ''; --- -<html - lang={Astro.props.lang} - dir={Astro.props.dir} - data-has-toc={Boolean(Astro.props.toc)} - data-has-sidebar={Astro.props.hasSidebar} - data-has-hero={Boolean(Astro.props.entry.data.hero)} - data-theme="dark" -> +<html lang={Astro.props.lang} dir={Astro.props.dir} {...dataAttributes}> <head> <Head {...Astro.props} /> <style> diff --git a/packages/starlight/components/Search.astro b/packages/starlight/components/Search.astro index e00bec07..e4398cdb 100644 --- a/packages/starlight/components/Search.astro +++ b/packages/starlight/components/Search.astro @@ -12,12 +12,12 @@ const pagefindTranslations = { .map(([key, value]) => [key.replace('pagefind.', ''), value]) ), }; + +const dataAttributes: DOMStringMap = { 'data-translations': JSON.stringify(pagefindTranslations) }; +if (project.trailingSlash === 'never') dataAttributes['data-strip-trailing-slash'] = ''; --- -<site-search - data-translations={JSON.stringify(pagefindTranslations)} - data-strip-trailing-slash={project.trailingSlash === 'never'} -> +<site-search class={Astro.props.class} {...dataAttributes}> <button data-open-modal disabled diff --git a/packages/starlight/index.ts b/packages/starlight/index.ts index c72d6e74..26858b84 100644 --- a/packages/starlight/index.ts +++ b/packages/starlight/index.ts @@ -137,9 +137,6 @@ export default function StarlightIntegration( scopedStyleStrategy: 'where', // If not already configured, default to prefetching all links on hover. prefetch: config.prefetch ?? { prefetchAll: true }, - experimental: { - globalRoutePriority: true, - }, i18n: astroI18nConfig, }); }, diff --git a/packages/starlight/integrations/shared/pathToLocale.ts b/packages/starlight/integrations/shared/pathToLocale.ts index 2ecb997c..c91a56f3 100644 --- a/packages/starlight/integrations/shared/pathToLocale.ts +++ b/packages/starlight/integrations/shared/pathToLocale.ts @@ -1,5 +1,6 @@ import type { AstroConfig } from 'astro'; import type { StarlightConfig } from '../../types'; +import { getCollectionPath } from '../../utils/collection'; import { slugToLocale } from './slugToLocale'; /** Get current locale from the full file path. */ @@ -13,15 +14,14 @@ export function pathToLocale( astroConfig: { root: AstroConfig['root']; srcDir: AstroConfig['srcDir'] }; } ): string | undefined { - const srcDir = new URL(astroConfig.srcDir, astroConfig.root); - const docsDir = new URL('content/docs/', srcDir); + const docsPath = getCollectionPath('docs', astroConfig.srcDir); // Format path to unix style path. path = path?.replace(/\\/g, '/'); // Ensure that the page path starts with a slash if the docs directory also does, // which makes stripping the docs path in the next step work on Windows, too. - if (path && !path.startsWith('/') && docsDir.pathname.startsWith('/')) path = '/' + path; + if (path && !path.startsWith('/') && docsPath.startsWith('/')) path = '/' + path; // Strip docs path leaving only content collection file ID. // Example: /Users/houston/repo/src/content/docs/en/guide.md => en/guide.md - const slug = path?.replace(docsDir.pathname, ''); + const slug = path?.replace(docsPath, ''); return slugToLocale(slug, starlightConfig); } diff --git a/packages/starlight/integrations/virtual-user-config.ts b/packages/starlight/integrations/virtual-user-config.ts index 52f60bad..c2cd662a 100644 --- a/packages/starlight/integrations/virtual-user-config.ts +++ b/packages/starlight/integrations/virtual-user-config.ts @@ -1,6 +1,8 @@ import type { AstroConfig, HookParameters, ViteUserConfig } from 'astro'; +import { existsSync } from 'node:fs'; import { resolve } from 'node:path'; import { fileURLToPath } from 'node:url'; +import { resolveCollectionPath } from '../utils/collection'; import type { StarlightConfig } from '../utils/user-config'; import { getAllNewestCommitDate } from '../utils/git'; import type { PluginTranslations } from '../utils/plugins'; @@ -15,11 +17,13 @@ export function vitePluginStarlightUserConfig( opts: StarlightConfig, { build, + legacy, root, srcDir, trailingSlash, }: Pick<AstroConfig, 'root' | 'srcDir' | 'trailingSlash'> & { build: Pick<AstroConfig['build'], 'format'>; + legacy: Pick<AstroConfig['legacy'], 'collections'>; }, pluginTranslations: PluginTranslations ): NonNullable<ViteUserConfig['plugins']>[number] { @@ -42,7 +46,19 @@ export function vitePluginStarlightUserConfig( const resolveLocalPath = (path: string) => JSON.stringify(fileURLToPath(new URL(path, import.meta.url))); - const docsPath = resolve(fileURLToPath(srcDir), 'content/docs'); + const rootPath = fileURLToPath(root); + const docsPath = resolveCollectionPath('docs', srcDir); + + let collectionConfigImportPath = resolve( + fileURLToPath(srcDir), + legacy.collections ? './content/config.ts' : './content.config.ts' + ); + // If not using legacy collections and the config doesn't exist, fallback to the legacy location. + // We need to test this ahead of time as we cannot `try/catch` a failing import in the virtual + // module as this would fail at build time when Rollup tries to resolve a non-existent path. + if (!legacy.collections && !existsSync(collectionConfigImportPath)) { + collectionConfigImportPath = resolve(fileURLToPath(srcDir), './content/config.ts'); + } const virtualComponentModules = Object.fromEntries( Object.entries(opts.components).map(([name, path]) => [ @@ -56,6 +72,7 @@ export function vitePluginStarlightUserConfig( 'virtual:starlight/user-config': `export default ${JSON.stringify(opts)}`, 'virtual:starlight/project-context': `export default ${JSON.stringify({ build: { format: build.format }, + legacyCollections: legacy.collections, root, srcDir, trailingSlash, @@ -63,9 +80,9 @@ export function vitePluginStarlightUserConfig( 'virtual:starlight/git-info': (command !== 'build' ? `import { makeAPI } from ${resolveLocalPath('../utils/git.ts')};` + - `const api = makeAPI(${JSON.stringify(docsPath)});` + `const api = makeAPI(${JSON.stringify(rootPath)});` : `import { makeAPI } from ${resolveLocalPath('../utils/gitInlined.ts')};` + - `const api = makeAPI(${JSON.stringify(getAllNewestCommitDate(docsPath))});`) + + `const api = makeAPI(${JSON.stringify(getAllNewestCommitDate(rootPath, docsPath))});`) + 'export const getNewestCommitDate = api.getNewestCommitDate;', 'virtual:starlight/user-css': opts.customCss.map((id) => `import ${resolveId(id)};`).join(''), 'virtual:starlight/user-images': opts.logo @@ -79,7 +96,7 @@ export function vitePluginStarlightUserConfig( : 'export const logos = {};', 'virtual:starlight/collection-config': `let userCollections; try { - userCollections = (await import(${resolveId('./content/config.ts', srcDir)})).collections; + userCollections = (await import(${JSON.stringify(collectionConfigImportPath)})).collections; } catch {} export const collections = userCollections;`, 'virtual:starlight/plugin-translations': `export default ${JSON.stringify(pluginTranslations)}`, diff --git a/packages/starlight/loaders.ts b/packages/starlight/loaders.ts new file mode 100644 index 00000000..bb424d0e --- /dev/null +++ b/packages/starlight/loaders.ts @@ -0,0 +1,40 @@ +import { glob, type Loader, type LoaderContext } from 'astro/loaders'; +import { getCollectionPathFromRoot, type StarlightCollection } from './utils/collection'; + +// https://github.com/withastro/astro/blob/main/packages/astro/src/core/constants.ts#L87 +// https://github.com/withastro/astro/blob/main/packages/integrations/mdx/src/index.ts#L59 +const docsExtensions = ['markdown', 'mdown', 'mkdn', 'mkd', 'mdwn', 'md', 'mdx']; +const i18nExtensions = ['json', 'yml', 'yaml']; + +export function docsLoader(): Loader { + return { + name: 'starlight-docs-loader', + load: createGlobLoadFn('docs'), + }; +} + +export function i18nLoader(): Loader { + return { + name: 'starlight-i18n-loader', + load: createGlobLoadFn('i18n'), + }; +} + +function createGlobLoadFn(collection: StarlightCollection): Loader['load'] { + return (context: LoaderContext) => { + const extensions = collection === 'docs' ? docsExtensions : i18nExtensions; + + if ( + collection === 'docs' && + context.config.integrations.find(({ name }) => name === '@astrojs/markdoc') + ) { + // https://github.com/withastro/astro/blob/main/packages/integrations/markdoc/src/content-entry-type.ts#L28 + extensions.push('mdoc'); + } + + return glob({ + base: getCollectionPathFromRoot(collection, context.config), + pattern: `**/[^_]*.{${extensions.join(',')}}`, + }).load(context); + }; +} diff --git a/packages/starlight/package.json b/packages/starlight/package.json index 730a708a..f1ba4041 100644 --- a/packages/starlight/package.json +++ b/packages/starlight/package.json @@ -4,6 +4,7 @@ "description": "Build beautiful, high-performance documentation websites with Astro", "scripts": { "test": "vitest", + "test:legacy": "LEGACY_COLLECTIONS=true vitest", "test:coverage": "vitest run --coverage", "test:e2e": "playwright install --with-deps chromium && playwright test" }, @@ -163,6 +164,7 @@ "./internal": "./internal.ts", "./props": "./props.ts", "./schema": "./schema.ts", + "./loaders": "./loaders.ts", "./types": "./types.ts", "./expressive-code": { "types": "./expressive-code.d.ts", @@ -176,19 +178,19 @@ "./style/markdown.css": "./style/markdown.css" }, "peerDependencies": { - "astro": "^4.14.0" + "astro": "^5.0.0" }, "devDependencies": { - "@astrojs/markdown-remark": "^5.3.0", + "@astrojs/markdown-remark": "^6.0.0", "@playwright/test": "^1.45.0", "@types/node": "^18.16.19", - "@vitest/coverage-v8": "^1.6.0", - "astro": "^4.16.10", + "@vitest/coverage-v8": "2.1.6", + "astro": "^5.0.2", "linkedom": "^0.18.4", - "vitest": "^1.6.0" + "vitest": "2.1.6" }, "dependencies": { - "@astrojs/mdx": "^3.1.3", + "@astrojs/mdx": "^4.0.1", "@astrojs/sitemap": "^3.1.6", "@pagefind/default-ui": "^1.0.3", "@types/hast": "^3.0.4", diff --git a/packages/starlight/routes/common.astro b/packages/starlight/routes/common.astro index eab058a9..ed3b92d1 100644 --- a/packages/starlight/routes/common.astro +++ b/packages/starlight/routes/common.astro @@ -1,4 +1,5 @@ --- +import { render } from 'astro:content'; import { generateRouteData } from '../utils/route-data'; import type { Route } from '../utils/routing'; import Page from '../components/Page.astro'; @@ -9,7 +10,7 @@ export type Props = { const { route } = Astro.props; -const { Content, headings } = await route.entry.render(); +const { Content, headings } = await render(route.entry); const routeData = generateRouteData({ props: { ...route, headings }, url: Astro.url }); --- diff --git a/packages/starlight/routes/static/404.astro b/packages/starlight/routes/static/404.astro index a18f78c5..06ab643a 100644 --- a/packages/starlight/routes/static/404.astro +++ b/packages/starlight/routes/static/404.astro @@ -1,8 +1,14 @@ --- import { getEntry } from 'astro:content'; +import project from 'virtual:starlight/project-context'; import config from 'virtual:starlight/user-config'; -import EmptyContent from '../../components/EmptyMarkdown.md'; -import type { Route, StarlightDocsEntry } from '../../utils/routing'; +import { getCollectionPathFromRoot } from '../../utils/collection'; +import { + normalizeCollectionEntry, + type Route, + type StarlightDocsCollectionEntry, + type StarlightDocsEntry, +} from '../../utils/routing'; import { BuiltInDefaultLocale } from '../../utils/i18n'; import CommonPage from '../common.astro'; @@ -17,7 +23,7 @@ const entryMeta = { dir, lang, locale }; const fallbackEntry: StarlightDocsEntry = { slug: '404', - id: '404.md' as StarlightDocsEntry['id'], + id: '404', body: '', collection: 'docs', data: { @@ -30,15 +36,11 @@ const fallbackEntry: StarlightDocsEntry = { sidebar: { hidden: false, attrs: {} }, draft: false, }, - render: async () => ({ - Content: EmptyContent, - headings: [], - remarkPluginFrontmatter: {}, - }), + filePath: `${getCollectionPathFromRoot('docs', project)}/404.md`, }; -const userEntry = await getEntry('docs', '404'); -const entry = userEntry || fallbackEntry; +const userEntry = (await getEntry('docs', '404')) as StarlightDocsCollectionEntry; +const entry = userEntry ? normalizeCollectionEntry(userEntry) : fallbackEntry; const route: Route = { ...entryMeta, entryMeta, entry, id: entry.id, slug: entry.slug }; --- diff --git a/packages/starlight/style/shiki.css b/packages/starlight/style/shiki.css index b35288bd..c9197d1c 100644 --- a/packages/starlight/style/shiki.css +++ b/packages/starlight/style/shiki.css @@ -1,6 +1,6 @@ :root { - --astro-code-color-text: var(--sl-color-white); - --astro-code-color-background: var(--sl-color-gray-6); + --astro-code-foreground: var(--sl-color-white); + --astro-code-background: var(--sl-color-gray-6); --astro-code-token-constant: var(--sl-color-blue-high); --astro-code-token-string: var(--sl-color-green-high); --astro-code-token-comment: var(--sl-color-gray-2); diff --git a/packages/starlight/utils/collection.ts b/packages/starlight/utils/collection.ts new file mode 100644 index 00000000..948c8209 --- /dev/null +++ b/packages/starlight/utils/collection.ts @@ -0,0 +1,45 @@ +import { resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const collectionNames = ['docs', 'i18n'] as const; +export type StarlightCollection = (typeof collectionNames)[number]; + +/** + * We still rely on the content collection folder structure to be fixed for now: + * + * - At build time, if the feature is enabled, we get all the last commit dates for each file in + * the docs folder ahead of time. In the current approach, we cannot know at this time the + * user-defined content folder path in the integration context as this would only be available + * from the loader. A potential solution could be to do that from a custom loader re-implementing + * the glob loader or built on top of it. Although, we don't have access to the Starlight + * configuration from the loader to even know we should do that. + * - Remark plugins get passed down an absolute path to a content file and we need to figure out + * the language from that path. Without knowing the content folder path, we cannot reliably do + * so. + * + * Below are various functions to easily get paths to these collections and avoid having to + * hardcode them throughout the codebase. When user-defined content folder locations are supported, + * these helper functions should be updated to reflect that in one place. + */ + +export function getCollectionPath(collection: StarlightCollection, srcDir: URL) { + return new URL(`content/${collection}/`, srcDir).pathname; +} + +export function resolveCollectionPath(collection: StarlightCollection, srcDir: URL) { + return resolve(fileURLToPath(srcDir), `content/${collection}`); +} + +export function getCollectionPathFromRoot( + collection: StarlightCollection, + { root, srcDir }: { root: URL | string; srcDir: URL | string } +) { + return ( + (typeof srcDir === 'string' ? srcDir : srcDir.pathname).replace( + typeof root === 'string' ? root : root.pathname, + '' + ) + + 'content/' + + collection + ); +} diff --git a/packages/starlight/utils/git.ts b/packages/starlight/utils/git.ts index e5937883..1536fac9 100644 --- a/packages/starlight/utils/git.ts +++ b/packages/starlight/utils/git.ts @@ -55,8 +55,8 @@ function getRepoRoot(directory: string): string { } } -export function getAllNewestCommitDate(directory: string): [string, number][] { - const repoRoot = getRepoRoot(directory); +export function getAllNewestCommitDate(rootPath: string, docsPath: string): [string, number][] { + const repoRoot = getRepoRoot(docsPath); const gitLog = spawnSync( 'git', @@ -67,7 +67,7 @@ export function getAllNewestCommitDate(directory: string): [string, number][] { // In each entry include the name and status for each modified file '--name-status', '--', - directory, + docsPath, ], { cwd: repoRoot, @@ -105,7 +105,9 @@ export function getAllNewestCommitDate(directory: string): [string, number][] { return Array.from(latestDates.entries()).map(([file, date]) => { const fileFullPath = resolve(repoRoot, file); - const fileInDirectory = relative(directory, fileFullPath); + let fileInDirectory = relative(rootPath, fileFullPath); + // Format path to unix style path. + fileInDirectory = fileInDirectory?.replace(/\\/g, '/'); return [fileInDirectory, date]; }); diff --git a/packages/starlight/utils/navigation.ts b/packages/starlight/utils/navigation.ts index 2ae0fa09..76608601 100644 --- a/packages/starlight/utils/navigation.ts +++ b/packages/starlight/utils/navigation.ts @@ -205,8 +205,8 @@ function pathsMatch(pathA: string, pathB: string) { function getBreadcrumbs(path: string, baseDir: string): string[] { // Strip extension from path. const pathWithoutExt = stripExtension(path); - // Index paths will match `baseDir` and don’t include breadcrumbs. - if (pathWithoutExt === baseDir) return []; + // Index paths will match `baseDir` but we still need to consider them as a single segment. + if (pathWithoutExt === baseDir) return [path]; // Ensure base directory ends in a trailing slash. baseDir = ensureTrailingSlash(baseDir); // Strip base directory from path if present. diff --git a/packages/starlight/utils/plugins.ts b/packages/starlight/utils/plugins.ts index 1eaf337e..8e0795b9 100644 --- a/packages/starlight/utils/plugins.ts +++ b/packages/starlight/utils/plugins.ts @@ -2,7 +2,6 @@ import type { AstroIntegration, HookParameters } from 'astro'; import { z } from 'astro/zod'; import { StarlightConfigSchema, type StarlightUserConfig } from '../utils/user-config'; import { parseWithFriendlyErrors } from '../utils/error-map'; -import { AstroError } from 'astro/errors'; import type { UserI18nSchema } from './translations'; /** @@ -83,14 +82,6 @@ export async function runPlugins( }); } - if (context.config.output === 'static' && !starlightConfig.prerender) { - throw new AstroError( - 'Starlight’s `prerender: false` option requires `output: "hybrid"` or `"server"` in your Astro config.', - 'Either set `output` in your Astro config or set `prerender: true` in the Starlight options.\n\n' + - 'Learn more about rendering modes in the Astro docs: https://docs.astro.build/en/basics/rendering-modes/' - ); - } - return { integrations, starlightConfig, pluginTranslations }; } diff --git a/packages/starlight/utils/route-data.ts b/packages/starlight/utils/route-data.ts index 760459e5..1f688020 100644 --- a/packages/starlight/utils/route-data.ts +++ b/packages/starlight/utils/route-data.ts @@ -1,12 +1,10 @@ import type { MarkdownHeading } from 'astro'; -import project from 'virtual:starlight/project-context'; import config from 'virtual:starlight/user-config'; import { generateToC, type TocItem } from './generateToC'; import { getNewestCommitDate } from 'virtual:starlight/git-info'; import { getPrevNextLinks, getSidebar, type SidebarEntry } from './navigation'; import { ensureTrailingSlash } from './path'; import type { Route } from './routing'; -import { localizedId } from './slugs'; import { formatPath } from './format-path'; import { useTranslations } from './translations'; import { DeprecatedLabelsPropProxy } from './i18n'; @@ -85,7 +83,7 @@ function getLastUpdated({ entry }: PageProps): Date | undefined { try { return frontmatterLastUpdated instanceof Date ? frontmatterLastUpdated - : getNewestCommitDate(entry.id); + : getNewestCommitDate(entry.filePath); } catch { // If the git command fails, ignore the error. return undefined; @@ -95,7 +93,7 @@ function getLastUpdated({ entry }: PageProps): Date | undefined { return undefined; } -function getEditUrl({ entry, id, isFallback }: PageProps): URL | undefined { +function getEditUrl({ entry }: PageProps): URL | undefined { const { editUrl } = entry.data; // If frontmatter value is false, editing is disabled for this page. if (editUrl === false) return; @@ -105,10 +103,8 @@ function getEditUrl({ entry, id, isFallback }: PageProps): URL | undefined { // If a URL was provided in frontmatter, use that. url = editUrl; } else if (config.editLink.baseUrl) { - const srcPath = project.srcDir.replace(project.root, ''); - const filePath = isFallback ? localizedId(id, config.defaultLocale.locale) : id; // If a base URL was added in Starlight config, synthesize the edit URL from it. - url = ensureTrailingSlash(config.editLink.baseUrl) + srcPath + 'content/docs/' + filePath; + url = ensureTrailingSlash(config.editLink.baseUrl) + entry.filePath; } return url ? new URL(url) : undefined; } diff --git a/packages/starlight/utils/routing.ts b/packages/starlight/utils/routing.ts index b365fb5f..b3ac686e 100644 --- a/packages/starlight/utils/routing.ts +++ b/packages/starlight/utils/routing.ts @@ -1,6 +1,8 @@ import type { GetStaticPathsItem } from 'astro'; import { type CollectionEntry, getCollection } from 'astro:content'; import config from 'virtual:starlight/user-config'; +import project from 'virtual:starlight/project-context'; +import { getCollectionPathFromRoot } from './collection'; import { type LocaleData, localizedId, @@ -15,7 +17,22 @@ import { BuiltInDefaultLocale } from './i18n'; // We do this here so all pages trigger it and at the top level so it runs just once. validateLogoImports(); -export type StarlightDocsEntry = Omit<CollectionEntry<'docs'>, 'slug'> & { +// The type returned from `CollectionEntry` is different for legacy collections and collections +// using a loader. This type is a common subset of both types. +export type StarlightDocsCollectionEntry = Omit< + CollectionEntry<'docs'>, + 'id' | 'filePath' | 'render' | 'slug' +> & { + // Update the `id` property to be a string like in the loader type. + id: string; + // Add the `filePath` property which is only present in the loader type. + filePath?: string; + // Add the `slug` property which is only present in the legacy type. + slug?: string; +}; + +export type StarlightDocsEntry = StarlightDocsCollectionEntry & { + filePath: string; slug: string; }; @@ -24,9 +41,9 @@ export interface Route extends LocaleData { entry: StarlightDocsEntry; /** Locale metadata for the page content. Can be different from top-level locale values when a page is using fallback content. */ entryMeta: LocaleData; - /** The slug, a.k.a. permalink, for this page. */ + /** @deprecated Migrate to the new Content Layer API and use `id` instead. */ slug: string; - /** The unique ID for this page. */ + /** The slug or unique ID if using the `legacy.collections` flag. */ id: string; /** True if this page is untranslated in the current language and using fallback content from the default locale. */ isFallback?: true; @@ -45,16 +62,27 @@ interface Path extends GetStaticPathsItem { */ const normalizeIndexSlug = (slug: string) => (slug === 'index' ? '' : slug); +/** Normalize the different collection entry we can get from a legacy collection or a loader. */ +export function normalizeCollectionEntry(entry: StarlightDocsCollectionEntry): StarlightDocsEntry { + const slug = normalizeIndexSlug(entry.slug ?? entry.id); + return { + ...entry, + // In a collection with a loader, the `id` is a slug and should be normalized. + id: entry.slug ? entry.id : slug, + // In a legacy collection, the `filePath` property doesn't exist. + filePath: entry.filePath ?? `${getCollectionPathFromRoot('docs', project)}/${entry.id}`, + // In a collection with a loader, the `slug` property is replaced by the `id`. + slug: normalizeIndexSlug(entry.slug ?? entry.id), + }; +} + /** All entries in the docs content collection. */ const docs: StarlightDocsEntry[] = ( (await getCollection('docs', ({ data }) => { // In production, filter out drafts. return import.meta.env.MODE !== 'production' || data.draft === false; })) ?? [] -).map(({ slug, ...entry }) => ({ - ...entry, - slug: normalizeIndexSlug(slug), -})); +).map(normalizeCollectionEntry); function getRoutes(): Route[] { const routes: Route[] = docs.map((entry) => ({ @@ -79,7 +107,7 @@ function getRoutes(): Route[] { const localeDocs = getLocaleDocs(locale); for (const fallback of defaultLocaleDocs) { const slug = localizedSlug(fallback.slug, locale); - const id = localizedId(fallback.id, locale); + const id = project.legacyCollections ? localizedId(fallback.id, locale) : slug; const doesNotNeedFallback = localeDocs.some((doc) => doc.slug === slug); if (doesNotNeedFallback) continue; routes.push({ diff --git a/packages/starlight/utils/slugs.ts b/packages/starlight/utils/slugs.ts index e74d6841..c811c550 100644 --- a/packages/starlight/utils/slugs.ts +++ b/packages/starlight/utils/slugs.ts @@ -82,7 +82,7 @@ export function localizedSlug(slug: string, locale: string | undefined): string } /** - * Convert a collection entry ID to a different locale. + * Convert a legacy collection entry ID to a different locale. * For example, passing an ID of `en/home.md` and a locale of `fr` results in `fr/home.md`. * An undefined locale is treated as the root locale, resulting in `home.md`. * @param id A collection entry ID diff --git a/packages/starlight/utils/starlight-page.ts b/packages/starlight/utils/starlight-page.ts index 42013e2a..fb4e0c11 100644 --- a/packages/starlight/utils/starlight-page.ts +++ b/packages/starlight/utils/starlight-page.ts @@ -1,6 +1,8 @@ import { z } from 'astro/zod'; import { type ContentConfig, type SchemaContext } from 'astro:content'; +import project from 'virtual:starlight/project-context'; import config from 'virtual:starlight/user-config'; +import { getCollectionPathFromRoot } from './collection'; import { parseWithFriendlyErrors, parseAsyncWithFriendlyErrors } from './error-map'; import { stripLeadingAndTrailingSlashes } from './path'; import { @@ -97,8 +99,8 @@ export type StarlightPageProps = Prettify< */ type StarlightPageDocsEntry = Omit<StarlightDocsEntry, 'id' | 'render'> & { /** - * The unique ID for this Starlight page which cannot be inferred from codegen like content - * collection entries. + * The unique ID if using the `legacy.collections` for this Starlight page which cannot be + * inferred from codegen like content collection entries or the slug. */ id: string; }; @@ -113,7 +115,7 @@ export async function generateStarlightPageRouteData({ const { isFallback, frontmatter, ...routeProps } = props; const slug = urlToSlug(url); const pageFrontmatter = await getStarlightPageFrontmatter(frontmatter); - const id = `${stripLeadingAndTrailingSlashes(slug)}.md`; + const id = project.legacyCollections ? `${stripLeadingAndTrailingSlashes(slug)}.md` : slug; const localeData = slugToLocaleData(slug); const sidebar = props.sidebar ? getSidebarFromConfig(validateSidebarProp(props.sidebar), url.pathname, localeData.locale) @@ -124,6 +126,7 @@ export async function generateStarlightPageRouteData({ slug, body: '', collection: 'docs', + filePath: `${getCollectionPathFromRoot('docs', project)}/${stripLeadingAndTrailingSlashes(slug)}.md`, data: { ...pageFrontmatter, sidebar: { diff --git a/packages/starlight/virtual-internal.d.ts b/packages/starlight/virtual-internal.d.ts index 312a4ede..3c4d5ef9 100644 --- a/packages/starlight/virtual-internal.d.ts +++ b/packages/starlight/virtual-internal.d.ts @@ -6,6 +6,7 @@ declare module 'virtual:starlight/project-context' { build: { format: import('astro').AstroConfig['build']['format']; }; + legacyCollections: boolean; }; export default ProjectContext; } diff --git a/packages/starlight/vitest.config.ts b/packages/starlight/vitest.config.ts index 1066fb9c..d9a80406 100644 --- a/packages/starlight/vitest.config.ts +++ b/packages/starlight/vitest.config.ts @@ -18,12 +18,14 @@ export default defineConfig({ 'props.ts', // Main integration entrypoint — don’t think we’re able to test this directly currently. 'index.ts', + // Since Vitest 2.1.2, coverage is collected for `*.astro` files. + '**/*.astro', ], thresholds: { - lines: 88, + lines: 87, functions: 90, branches: 90, - statements: 88, + statements: 87, }, }, }, diff --git a/packages/starlight/vitest.workspace.ts b/packages/starlight/vitest.workspace.ts index 4cfafe82..5fd9db05 100644 --- a/packages/starlight/vitest.workspace.ts +++ b/packages/starlight/vitest.workspace.ts @@ -1 +1 @@ -export default ['__tests__/*']; +export default ['__tests__/*/vitest.config.ts']; diff --git a/packages/tailwind/package.json b/packages/tailwind/package.json index 5b137cb5..bf633453 100644 --- a/packages/tailwind/package.json +++ b/packages/tailwind/package.json @@ -23,14 +23,14 @@ "test:coverage": "vitest run --coverage" }, "devDependencies": { - "@vitest/coverage-v8": "^1.6.0", + "@vitest/coverage-v8": "2.1.6", "postcss": "^8.4.47", "tailwindcss": "^3.4.14", - "vitest": "^1.6.0" + "vitest": "2.1.6" }, "peerDependencies": { - "@astrojs/starlight": ">=0.9.0", - "@astrojs/tailwind": "^5.0.0", + "@astrojs/starlight": ">=0.30.0", + "@astrojs/tailwind": "^5.1.3", "tailwindcss": "^3.3.3" }, "publishConfig": { diff --git a/packages/tailwind/vitest.config.ts b/packages/tailwind/vitest.config.ts index f32a3d0b..045a0029 100644 --- a/packages/tailwind/vitest.config.ts +++ b/packages/tailwind/vitest.config.ts @@ -5,11 +5,10 @@ export default defineConfig({ coverage: { reportsDirectory: './__coverage__', thresholds: { - autoUpdate: true, - lines: 94, + lines: 91, functions: 100, branches: 85, - statements: 94, + statements: 91, }, }, }, diff --git a/patches/starlight-links-validator@0.13.2.patch b/patches/starlight-links-validator@0.13.2.patch new file mode 100644 index 00000000..55b6c4cf --- /dev/null +++ b/patches/starlight-links-validator@0.13.2.patch @@ -0,0 +1,28 @@ +diff --git a/libs/remark.ts b/libs/remark.ts +index b3239f3ca44243cf48d3845443d3da14376216e6..322004af700df9c28d8fdf448061c3769d85d4b0 100644 +--- a/libs/remark.ts ++++ b/libs/remark.ts +@@ -3,6 +3,7 @@ import 'mdast-util-mdx-jsx' + import nodePath from 'node:path' + import { fileURLToPath } from 'node:url' + ++import type { MarkdownHeading } from 'astro' + import GitHubSlugger, { slug } from 'github-slugger' + import type { Nodes } from 'hast' + import { fromHtml } from 'hast-util-from-html' +@@ -203,11 +204,10 @@ interface MdxIdAttribute { + + declare module 'vfile' { + interface DataMap { +- astro?: { +- frontmatter?: { +- draft?: boolean +- slug?: string +- } ++ astro: { ++ headings?: MarkdownHeading[] ++ imagePaths?: string[] ++ frontmatter?: Record<string, any> + } + } + } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4e849264..6fda502c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,13 +4,18 @@ settings: autoInstallPeers: false excludeLinksFromLockfile: false +patchedDependencies: + starlight-links-validator@0.13.2: + hash: uzxiecwrihwm4whxdfjvzfhjsq + path: patches/starlight-links-validator@0.13.2.patch + importers: .: devDependencies: '@astrojs/check': - specifier: ^0.7.0 - version: 0.7.0(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.6.3) + specifier: ^0.9.4 + version: 0.9.4(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.6.3) '@changesets/changelog-github': specifier: ^0.5.0 version: 0.5.0 @@ -21,8 +26,8 @@ importers: specifier: ^11.1.6 version: 11.1.6(size-limit@11.1.6) astro: - specifier: ^4.16.10 - version: 4.16.10(@types/node@18.16.19)(typescript@5.6.3) + specifier: ^5.0.2 + version: 5.0.2(@types/node@18.16.19)(typescript@5.6.3) prettier: specifier: ^3.3.3 version: 3.3.3 @@ -40,7 +45,7 @@ importers: dependencies: '@astro-community/astro-embed-youtube': specifier: ^0.5.6 - version: 0.5.6(astro@4.16.10) + version: 0.5.6(astro@5.0.2) '@astrojs/starlight': specifier: workspace:* version: link:../packages/starlight @@ -51,8 +56,8 @@ importers: specifier: ^2.1.1 version: 2.1.1 astro: - specifier: ^4.16.10 - version: 4.16.10(@types/node@18.16.19)(typescript@5.6.3) + specifier: ^5.0.2 + version: 5.0.2(@types/node@18.16.19)(typescript@5.6.3) culori: specifier: ^4.0.1 version: 4.0.1 @@ -71,7 +76,7 @@ importers: version: 3.2.12 starlight-links-validator: specifier: ^0.13.2 - version: 0.13.2(@astrojs/starlight@packages+starlight)(astro@4.16.10) + version: 0.13.2(patch_hash=uzxiecwrihwm4whxdfjvzfhjsq)(@astrojs/starlight@packages+starlight)(astro@5.0.2) examples/basics: dependencies: @@ -79,8 +84,8 @@ importers: specifier: ^0.29.3 version: link:../../packages/starlight astro: - specifier: ^4.16.10 - version: 4.16.10(@types/node@18.16.19)(typescript@5.6.3) + specifier: ^5.0.2 + version: 5.0.2(@types/node@18.16.19)(typescript@5.6.3) sharp: specifier: ^0.32.5 version: 0.32.6 @@ -88,8 +93,8 @@ importers: examples/markdoc: dependencies: '@astrojs/markdoc': - specifier: ^0.11.4 - version: 0.11.5(astro@4.16.10) + specifier: ^0.12.1 + version: 0.12.1(astro@5.0.2) '@astrojs/starlight': specifier: ^0.29.3 version: link:../../packages/starlight @@ -97,8 +102,8 @@ importers: specifier: ^0.1.0 version: link:../../packages/markdoc astro: - specifier: ^4.16.10 - version: 4.16.10(@types/node@18.16.19)(typescript@5.6.3) + specifier: ^5.0.2 + version: 5.0.2(@types/node@18.16.19)(typescript@5.6.3) sharp: specifier: ^0.32.5 version: 0.32.6 @@ -112,11 +117,11 @@ importers: specifier: ^2.0.3 version: link:../../packages/tailwind '@astrojs/tailwind': - specifier: ^5.1.0 - version: 5.1.0(astro@4.16.10)(tailwindcss@3.4.14) + specifier: ^5.1.3 + version: 5.1.3(astro@5.0.2)(tailwindcss@3.4.14) astro: - specifier: ^4.16.10 - version: 4.16.10(@types/node@18.16.19)(typescript@5.6.3) + specifier: ^5.0.2 + version: 5.0.2(@types/node@18.16.19)(typescript@5.6.3) sharp: specifier: ^0.32.5 version: 0.32.6 @@ -153,20 +158,20 @@ importers: packages/markdoc: devDependencies: '@astrojs/markdoc': - specifier: ^0.11.5 - version: 0.11.5(astro@4.16.10) + specifier: ^0.12.1 + version: 0.12.1(astro@5.0.2) '@astrojs/starlight': specifier: workspace:* version: link:../starlight vitest: - specifier: ^1.6.0 - version: 1.6.0(@types/node@18.16.19) + specifier: 2.1.6 + version: 2.1.6(@types/node@18.16.19) packages/starlight: dependencies: '@astrojs/mdx': - specifier: ^3.1.3 - version: 3.1.9(astro@4.16.10) + specifier: ^4.0.1 + version: 4.0.1(astro@5.0.2) '@astrojs/sitemap': specifier: ^3.1.6 version: 3.1.6 @@ -184,7 +189,7 @@ importers: version: 4.0.4 astro-expressive-code: specifier: ^0.38.3 - version: 0.38.3(astro@4.16.10) + version: 0.38.3(astro@5.0.2) bcp-47: specifier: ^2.1.0 version: 2.1.0 @@ -238,8 +243,8 @@ importers: version: 6.0.3 devDependencies: '@astrojs/markdown-remark': - specifier: ^5.3.0 - version: 5.3.0 + specifier: ^6.0.0 + version: 6.0.0 '@playwright/test': specifier: ^1.45.0 version: 1.45.0 @@ -247,17 +252,17 @@ importers: specifier: ^18.16.19 version: 18.16.19 '@vitest/coverage-v8': - specifier: ^1.6.0 - version: 1.6.0(vitest@1.6.0) + specifier: 2.1.6 + version: 2.1.6(vitest@2.1.6) astro: - specifier: ^4.16.10 - version: 4.16.10(@types/node@18.16.19)(typescript@5.6.3) + specifier: ^5.0.2 + version: 5.0.2(@types/node@18.16.19)(typescript@5.6.3) linkedom: specifier: ^0.18.4 version: 0.18.4 vitest: - specifier: ^1.6.0 - version: 1.6.0(@types/node@18.16.19) + specifier: 2.1.6 + version: 2.1.6(@types/node@18.16.19) packages/starlight/__e2e__/fixtures/basics: dependencies: @@ -265,8 +270,8 @@ importers: specifier: workspace:* version: link:../../.. astro: - specifier: ^4.16.10 - version: 4.16.10(@types/node@18.16.19)(typescript@5.6.3) + specifier: ^5.0.2 + version: 5.0.2(@types/node@18.16.19)(typescript@5.6.3) packages/starlight/__e2e__/fixtures/custom src-dir: dependencies: @@ -274,8 +279,8 @@ importers: specifier: workspace:* version: link:../../.. astro: - specifier: ^4.16.10 - version: 4.16.10(@types/node@18.16.19)(typescript@5.6.3) + specifier: ^5.0.2 + version: 5.0.2(@types/node@18.16.19)(typescript@5.6.3) packages/starlight/__e2e__/fixtures/git: dependencies: @@ -283,35 +288,44 @@ importers: specifier: workspace:* version: link:../../.. astro: - specifier: ^4.16.10 - version: 4.16.10(@types/node@18.16.19)(typescript@5.6.3) + specifier: ^5.0.2 + version: 5.0.2(@types/node@18.16.19)(typescript@5.6.3) + + packages/starlight/__e2e__/fixtures/legacy-collection-config-file: + dependencies: + '@astrojs/starlight': + specifier: workspace:* + version: link:../../.. + astro: + specifier: ^5.0.2 + version: 5.0.2(@types/node@18.16.19)(typescript@5.6.3) packages/starlight/__e2e__/fixtures/ssr: dependencies: '@astrojs/node': - specifier: ^8.3.2 - version: 8.3.3(astro@4.16.10) + specifier: ^9.0.0 + version: 9.0.0(astro@5.0.2) '@astrojs/starlight': specifier: workspace:* version: link:../../.. astro: - specifier: ^4.16.10 - version: 4.16.10(@types/node@18.16.19)(typescript@5.6.3) + specifier: ^5.0.2 + version: 5.0.2(@types/node@18.16.19)(typescript@5.6.3) packages/tailwind: devDependencies: '@vitest/coverage-v8': - specifier: ^1.6.0 - version: 1.6.0(vitest@1.6.0) + specifier: 2.1.6 + version: 2.1.6(vitest@2.1.6) postcss: specifier: ^8.4.47 - version: 8.4.47 + version: 8.4.49 tailwindcss: specifier: ^3.4.14 version: 3.4.14 vitest: - specifier: ^1.6.0 - version: 1.6.0(@types/node@18.16.19) + specifier: 2.1.6 + version: 2.1.6(@types/node@18.16.19) packages: @@ -459,31 +473,31 @@ packages: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - /@ampproject/remapping@2.2.1: - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + dev: true - /@astro-community/astro-embed-youtube@0.5.6(astro@4.16.10): + /@astro-community/astro-embed-youtube@0.5.6(astro@5.0.2): resolution: {integrity: sha512-/mRfCl/eTBUz0kmjD1psOy0qoDDBorVp0QumUacjFcIkBullYtbeFQ2ZGZ+3N/tA6cR/OIyzr2QA4dQXlY6USg==} peerDependencies: astro: ^2.0.0 || ^3.0.0-beta || ^4.0.0-beta || ^5.0.0-beta dependencies: - astro: 4.16.10(@types/node@18.16.19)(typescript@5.6.3) + astro: 5.0.2(@types/node@18.16.19)(typescript@5.6.3) lite-youtube-embed: 0.3.3 dev: false - /@astrojs/check@0.7.0(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.6.3): - resolution: {integrity: sha512-UTqwOeKNu9IYZmJXEeWnQuTdSd/pX58Hl4TUARsMlT97SVDL//kLBE4T/ctxRz6J573N87oE5ddtW/uOOnQTug==} + /@astrojs/check@0.9.4(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.6.3): + resolution: {integrity: sha512-IOheHwCtpUfvogHHsvu0AbeRZEnjJg3MopdLddkJE70mULItS/Vh37BHcI00mcOJcH1vhD3odbpvWokpxam7xA==} hasBin: true peerDependencies: typescript: ^5.0.0 dependencies: - '@astrojs/language-server': 2.10.0(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.6.3) - chokidar: 3.6.0 - fast-glob: 3.3.2 + '@astrojs/language-server': 2.15.4(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.6.3) + chokidar: 4.0.1 kleur: 4.1.5 typescript: 5.6.3 yargs: 17.7.2 @@ -495,11 +509,11 @@ packages: /@astrojs/compiler@2.10.3: resolution: {integrity: sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw==} - /@astrojs/internal-helpers@0.4.1: - resolution: {integrity: sha512-bMf9jFihO8YP940uD70SI/RDzIhUHJAolWVcO1v5PUivxGKvfLZTLTVVxEYzGYyPsA3ivdLNqMnL5VgmQySa+g==} + /@astrojs/internal-helpers@0.4.2: + resolution: {integrity: sha512-EdDWkC3JJVcpGpqJAU/5hSk2LKXyG3mNGkzGoAuyK+xoPHbaVdSuIWoN1QTnmK3N/gGfaaAfM8gO2KDCAW7S3w==} - /@astrojs/language-server@2.10.0(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.6.3): - resolution: {integrity: sha512-crHXpqYfA5qWioiuZnZFpTsNItgBlF1f0S9MzDYS7/pfCALkHNJ7K3w9U/j0uMKymsT4hC7BfMaX0DYlfdSzHg==} + /@astrojs/language-server@2.15.4(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.6.3): + resolution: {integrity: sha512-JivzASqTPR2bao9BWsSc/woPHH7OGSGc9aMxXL4U6egVTqBycB3ZHdBJPuOCVtcGLrzdWTosAqVPz1BVoxE0+A==} hasBin: true peerDependencies: prettier: ^3.0.0 @@ -511,55 +525,57 @@ packages: optional: true dependencies: '@astrojs/compiler': 2.10.3 + '@astrojs/yaml2ts': 0.2.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@volar/kit': 2.2.5(typescript@5.6.3) - '@volar/language-core': 2.2.5 - '@volar/language-server': 2.2.5 - '@volar/language-service': 2.2.5 - '@volar/typescript': 2.2.5 + '@volar/kit': 2.4.10(typescript@5.6.3) + '@volar/language-core': 2.4.10 + '@volar/language-server': 2.4.10 + '@volar/language-service': 2.4.10 fast-glob: 3.3.2 + muggle-string: 0.4.1 prettier: 3.3.3 prettier-plugin-astro: 0.14.1 - volar-service-css: 0.0.45(@volar/language-service@2.2.5) - volar-service-emmet: 0.0.45(@volar/language-service@2.2.5) - volar-service-html: 0.0.45(@volar/language-service@2.2.5) - volar-service-prettier: 0.0.45(@volar/language-service@2.2.5)(prettier@3.3.3) - volar-service-typescript: 0.0.45(@volar/language-service@2.2.5) - volar-service-typescript-twoslash-queries: 0.0.45(@volar/language-service@2.2.5) - vscode-html-languageservice: 5.2.0 + volar-service-css: 0.0.62(@volar/language-service@2.4.10) + volar-service-emmet: 0.0.62(@volar/language-service@2.4.10) + volar-service-html: 0.0.62(@volar/language-service@2.4.10) + volar-service-prettier: 0.0.62(@volar/language-service@2.4.10)(prettier@3.3.3) + volar-service-typescript: 0.0.62(@volar/language-service@2.4.10) + volar-service-typescript-twoslash-queries: 0.0.62(@volar/language-service@2.4.10) + volar-service-yaml: 0.0.62(@volar/language-service@2.4.10) + vscode-html-languageservice: 5.3.1 vscode-uri: 3.0.8 transitivePeerDependencies: - typescript dev: true - /@astrojs/markdoc@0.11.5(astro@4.16.10): - resolution: {integrity: sha512-paNSvJgUgld5kSU4RZelHYgvNKZSMWX2QX7SzWEeyPBTQ8gwOe30eJjq3czIbg7Se+8NcGtq7v5FU7lOyXxmnw==} - engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + /@astrojs/markdoc@0.12.1(astro@5.0.2): + resolution: {integrity: sha512-1ayrIK1DlsT72QurLGMBCNmmTIlvVFbNih3bobaUxbjQ/r0hKbbdlLx42p8bfvf0J4iTiXSL7FhpU972rtwMHA==} + engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} peerDependencies: - astro: ^3.0.0 || ^4.0.0 + astro: ^5.0.0 dependencies: - '@astrojs/internal-helpers': 0.4.1 - '@astrojs/markdown-remark': 5.3.0 - '@astrojs/prism': 3.1.0 + '@astrojs/internal-helpers': 0.4.2 + '@astrojs/markdown-remark': 6.0.0 + '@astrojs/prism': 3.2.0 '@markdoc/markdoc': 0.4.0 - astro: 4.16.10(@types/node@18.16.19)(typescript@5.6.3) + astro: 5.0.2(@types/node@18.16.19)(typescript@5.6.3) esbuild: 0.21.5 github-slugger: 2.0.0 - gray-matter: 4.0.3 htmlparser2: 9.1.0 transitivePeerDependencies: - '@types/react' - react - supports-color - /@astrojs/markdown-remark@5.3.0: - resolution: {integrity: sha512-r0Ikqr0e6ozPb5bvhup1qdWnSPUvQu6tub4ZLYaKyG50BXZ0ej6FhGz3GpChKpH7kglRFPObJd/bDyf2VM9pkg==} + /@astrojs/markdown-remark@6.0.0: + resolution: {integrity: sha512-Tabo7xM44Pz2Yf9qpdaCCgxRmtaypi2YCinqTUNefDrWUa+OyKW62OuNeCaGwNh/ys+QAd9FUWN5/3HgPWjP4Q==} dependencies: - '@astrojs/prism': 3.1.0 + '@astrojs/prism': 3.2.0 github-slugger: 2.0.0 hast-util-from-html: 2.0.3 hast-util-to-text: 4.0.2 import-meta-resolve: 4.1.0 + js-yaml: 4.1.0 mdast-util-definitions: 6.0.0 rehype-raw: 7.0.0 rehype-stringify: 10.0.1 @@ -567,7 +583,7 @@ packages: remark-parse: 11.0.0 remark-rehype: 11.1.1 remark-smartypants: 3.0.2 - shiki: 1.22.2 + shiki: 1.23.1 unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.0.0 @@ -576,19 +592,18 @@ packages: transitivePeerDependencies: - supports-color - /@astrojs/mdx@3.1.9(astro@4.16.10): - resolution: {integrity: sha512-3jPD4Bff6lIA20RQoonnZkRtZ9T3i0HFm6fcDF7BMsKIZ+xBP2KXzQWiuGu62lrVCmU612N+SQVGl5e0fI+zWg==} - engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + /@astrojs/mdx@4.0.1(astro@5.0.2): + resolution: {integrity: sha512-ShntQtbIsMEnR29DCF9vBNxBOGU29FVRBXKdS5njYic4t4asrbxYmjFXiqqQ0ONnBNHk9P0RHFgqEy1GL/YbJg==} + engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} peerDependencies: - astro: ^4.8.0 + astro: ^5.0.0 dependencies: - '@astrojs/markdown-remark': 5.3.0 + '@astrojs/markdown-remark': 6.0.0 '@mdx-js/mdx': 3.1.0(acorn@8.14.0) acorn: 8.14.0 - astro: 4.16.10(@types/node@18.16.19)(typescript@5.6.3) + astro: 5.0.2(@types/node@18.16.19)(typescript@5.6.3) es-module-lexer: 1.5.4 estree-util-visit: 2.0.0 - gray-matter: 4.0.3 hast-util-to-html: 9.0.3 kleur: 4.1.5 rehype-raw: 7.0.0 @@ -601,21 +616,21 @@ packages: - supports-color dev: false - /@astrojs/node@8.3.3(astro@4.16.10): - resolution: {integrity: sha512-idrKhnnPSi0ABV+PCQsRQqVNwpOvVDF/+fkwcIiE8sr9J8EMvW9g/oyAt8T4X2OBJ8FUzYPL8klfCdG7r0eB5g==} + /@astrojs/node@9.0.0(astro@5.0.2): + resolution: {integrity: sha512-3h/5kFZvpuo+chYAjj75YhtRUxfquxEJrpZRRC7TdiMGp2WhLp2us4VXm2mjezJp/zHKotW2L3qgp0P2ujQ0xw==} peerDependencies: - astro: ^4.2.0 + astro: ^5.0.0 dependencies: - astro: 4.16.10(@types/node@18.16.19)(typescript@5.6.3) - send: 0.18.0 + astro: 5.0.2(@types/node@18.16.19)(typescript@5.6.3) + send: 1.1.0 server-destroy: 1.0.1 transitivePeerDependencies: - supports-color dev: false - /@astrojs/prism@3.1.0: - resolution: {integrity: sha512-Z9IYjuXSArkAUx3N6xj6+Bnvx8OdUSHA8YoOgyepp3+zJmtVYJIl/I18GozdJVW1p5u/CNpl3Km7/gwTJK85cw==} - engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + /@astrojs/prism@3.2.0: + resolution: {integrity: sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw==} + engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} dependencies: prismjs: 1.29.0 @@ -627,26 +642,26 @@ packages: zod: 3.23.8 dev: false - /@astrojs/tailwind@5.1.0(astro@4.16.10)(tailwindcss@3.4.14): - resolution: {integrity: sha512-BJoCDKuWhU9FT2qYg+fr6Nfb3qP4ShtyjXGHKA/4mHN94z7BGcmauQK23iy+YH5qWvTnhqkd6mQPQ1yTZTe9Ig==} + /@astrojs/tailwind@5.1.3(astro@5.0.2)(tailwindcss@3.4.14): + resolution: {integrity: sha512-XF7WhXRhqEHGvADqc0kDtF7Yv/g4wAWTaj91jBBTBaYnc4+MQLH94duFfFa4NlTkRG40VQd012eF3MhO3Kk+bg==} peerDependencies: - astro: ^3.0.0 || ^4.0.0 + astro: ^3.0.0 || ^4.0.0 || ^5.0.0 tailwindcss: ^3.0.24 dependencies: - astro: 4.16.10(@types/node@18.16.19)(typescript@5.6.3) - autoprefixer: 10.4.15(postcss@8.4.47) - postcss: 8.4.47 - postcss-load-config: 4.0.2(postcss@8.4.47) + astro: 5.0.2(@types/node@18.16.19)(typescript@5.6.3) + autoprefixer: 10.4.20(postcss@8.4.49) + postcss: 8.4.49 + postcss-load-config: 4.0.2(postcss@8.4.49) tailwindcss: 3.4.14 transitivePeerDependencies: - ts-node dev: false - /@astrojs/telemetry@3.1.0: - resolution: {integrity: sha512-/ca/+D8MIKEC8/A9cSaPUqQNZm+Es/ZinRv0ZAzvu2ios7POQSsVD+VOj7/hypWNsNM3T7RpfgNq7H2TU1KEHA==} - engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + /@astrojs/telemetry@3.2.0: + resolution: {integrity: sha512-wxhSKRfKugLwLlr4OFfcqovk+LIFtKwLyGPqMsv+9/ibqqnW3Gv7tBhtKEb0gAyUAC4G9BTVQeQahqnQAhd6IQ==} + engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} dependencies: - ci-info: 4.0.0 + ci-info: 4.1.0 debug: 4.3.7 dlv: 1.1.3 dset: 3.1.4 @@ -656,91 +671,11 @@ packages: transitivePeerDependencies: - supports-color - /@babel/code-frame@7.26.2: - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - /@babel/compat-data@7.26.2: - resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} - engines: {node: '>=6.9.0'} - - /@babel/core@7.26.0: - resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.2 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helpers': 7.26.0 - '@babel/parser': 7.26.2 - '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - convert-source-map: 2.0.0 - debug: 4.3.7 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - /@babel/generator@7.26.2: - resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.0.2 - - /@babel/helper-annotate-as-pure@7.25.9: - resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.26.0 - - /@babel/helper-compilation-targets@7.25.9: - resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.26.2 - '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.2 - lru-cache: 5.1.1 - semver: 6.3.1 - - /@babel/helper-module-imports@7.25.9: - resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color - - /@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0): - resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + /@astrojs/yaml2ts@0.2.2: + resolution: {integrity: sha512-GOfvSr5Nqy2z5XiwqTouBBpy5FyI6DEe+/g/Mk5am9SjILN1S5fOEvYK0GuWHg98yS/dobP4m8qyqw/URW35fQ==} dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - - /@babel/helper-plugin-utils@7.25.9: - resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} - engines: {node: '>=6.9.0'} + yaml: 2.6.1 + dev: true /@babel/helper-string-parser@7.25.9: resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} @@ -750,17 +685,6 @@ packages: resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.25.9: - resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} - engines: {node: '>=6.9.0'} - - /@babel/helpers@7.26.0: - resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.25.9 - '@babel/types': 7.26.0 - /@babel/parser@7.26.2: resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} engines: {node: '>=6.0.0'} @@ -768,58 +692,12 @@ packages: dependencies: '@babel/types': 7.26.0 - /@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0): - resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - /@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.0): - resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color - /@babel/runtime@7.24.7: resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 - /@babel/template@7.25.9: - resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 - - /@babel/traverse@7.25.9: - resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.2 - '@babel/parser': 7.26.2 - '@babel/template': 7.25.9 - '@babel/types': 7.26.0 - debug: 4.3.7 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - /@babel/types@7.26.0: resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} engines: {node: '>=6.9.0'} @@ -1135,6 +1013,14 @@ packages: requiresBuild: true optional: true + /@esbuild/aix-ppc64@0.24.0: + resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + optional: true + /@esbuild/android-arm64@0.21.5: resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} @@ -1143,6 +1029,14 @@ packages: requiresBuild: true optional: true + /@esbuild/android-arm64@0.24.0: + resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + requiresBuild: true + optional: true + /@esbuild/android-arm@0.21.5: resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} @@ -1151,6 +1045,14 @@ packages: requiresBuild: true optional: true + /@esbuild/android-arm@0.24.0: + resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + requiresBuild: true + optional: true + /@esbuild/android-x64@0.21.5: resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} @@ -1159,6 +1061,14 @@ packages: requiresBuild: true optional: true + /@esbuild/android-x64@0.24.0: + resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + requiresBuild: true + optional: true + /@esbuild/darwin-arm64@0.21.5: resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} @@ -1167,6 +1077,14 @@ packages: requiresBuild: true optional: true + /@esbuild/darwin-arm64@0.24.0: + resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + /@esbuild/darwin-x64@0.21.5: resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} @@ -1175,6 +1093,14 @@ packages: requiresBuild: true optional: true + /@esbuild/darwin-x64@0.24.0: + resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + /@esbuild/freebsd-arm64@0.21.5: resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} @@ -1183,6 +1109,14 @@ packages: requiresBuild: true optional: true + /@esbuild/freebsd-arm64@0.24.0: + resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + optional: true + /@esbuild/freebsd-x64@0.21.5: resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} @@ -1191,6 +1125,14 @@ packages: requiresBuild: true optional: true + /@esbuild/freebsd-x64@0.24.0: + resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + optional: true + /@esbuild/linux-arm64@0.21.5: resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} @@ -1199,6 +1141,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-arm64@0.24.0: + resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-arm@0.21.5: resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} @@ -1207,6 +1157,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-arm@0.24.0: + resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-ia32@0.21.5: resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} @@ -1215,6 +1173,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-ia32@0.24.0: + resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-loong64@0.21.5: resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} @@ -1223,6 +1189,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-loong64@0.24.0: + resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-mips64el@0.21.5: resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} @@ -1231,6 +1205,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-mips64el@0.24.0: + resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-ppc64@0.21.5: resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} @@ -1239,6 +1221,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-ppc64@0.24.0: + resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-riscv64@0.21.5: resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} @@ -1247,6 +1237,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-riscv64@0.24.0: + resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-s390x@0.21.5: resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} @@ -1255,6 +1253,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-s390x@0.24.0: + resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-x64@0.21.5: resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} @@ -1263,6 +1269,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-x64@0.24.0: + resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/netbsd-x64@0.21.5: resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} @@ -1271,6 +1285,22 @@ packages: requiresBuild: true optional: true + /@esbuild/netbsd-x64@0.24.0: + resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + optional: true + + /@esbuild/openbsd-arm64@0.24.0: + resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + requiresBuild: true + optional: true + /@esbuild/openbsd-x64@0.21.5: resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} @@ -1279,6 +1309,14 @@ packages: requiresBuild: true optional: true + /@esbuild/openbsd-x64@0.24.0: + resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + optional: true + /@esbuild/sunos-x64@0.21.5: resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} @@ -1287,6 +1325,14 @@ packages: requiresBuild: true optional: true + /@esbuild/sunos-x64@0.24.0: + resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + requiresBuild: true + optional: true + /@esbuild/win32-arm64@0.21.5: resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} @@ -1295,6 +1341,14 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-arm64@0.24.0: + resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + /@esbuild/win32-ia32@0.21.5: resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} @@ -1303,6 +1357,14 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-ia32@0.24.0: + resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + /@esbuild/win32-x64@0.21.5: resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} @@ -1311,6 +1373,14 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-x64@0.24.0: + resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + /@expressive-code/core@0.38.3: resolution: {integrity: sha512-s0/OtdRpBONwcn23O8nVwDNQqpBGKscysejkeBkwlIeHRLZWgiTVrusT5Idrdz1d8cW5wRk9iGsAIQmwDPXgJg==} dependencies: @@ -1319,8 +1389,8 @@ packages: hast-util-to-html: 9.0.3 hast-util-to-text: 4.0.2 hastscript: 9.0.0 - postcss: 8.4.47 - postcss-nested: 6.0.1(postcss@8.4.47) + postcss: 8.4.49 + postcss-nested: 6.0.1(postcss@8.4.49) unist-util-visit: 5.0.0 unist-util-visit-parents: 6.0.1 dev: false @@ -1335,7 +1405,7 @@ packages: resolution: {integrity: sha512-kqHnglZeesqG3UKrb6e9Fq5W36AZ05Y9tCREmSN2lw8LVTqENIeCIkLDdWtQ5VoHlKqwUEQFTVlRehdwoY7Gmw==} dependencies: '@expressive-code/core': 0.38.3 - shiki: 1.22.2 + shiki: 1.23.1 dev: false /@expressive-code/plugin-text-markers@0.38.3: @@ -1513,25 +1583,21 @@ packages: requiresBuild: true optional: true - /@istanbuljs/schema@0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - dev: true - - /@jest/schemas@29.6.3: - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} dependencies: - '@sinclair/typebox': 0.27.8 + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 dev: true - /@johnsoncodehk/vscode-html-languageservice@5.2.0-34a5462: - resolution: {integrity: sha512-etqLfpSJ5zaw76KUNF603be6d6QsiQPmaHr9FKEp4zhLZJzWCCMH6Icak7MtLUFLZLMpL761mZNImi/joBo1ZA==} - dependencies: - '@vscode/l10n': 0.0.18 - vscode-languageserver-textdocument: 1.0.11 - vscode-languageserver-types: 3.17.5 - vscode-uri: 3.0.8 + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} dev: true /@jridgewell/gen-mapping@0.3.5: @@ -1627,22 +1693,22 @@ packages: /@mdx-js/mdx@3.1.0(acorn@8.14.0): resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==} dependencies: - '@types/estree': 1.0.5 - '@types/estree-jsx': 1.0.0 + '@types/estree': 1.0.6 + '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 - '@types/mdx': 2.0.5 + '@types/mdx': 2.0.13 collapse-white-space: 2.1.0 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 estree-util-scope: 1.0.0 estree-walker: 3.0.3 - hast-util-to-jsx-runtime: 2.3.0 + hast-util-to-jsx-runtime: 2.3.2 markdown-extensions: 2.0.0 recma-build-jsx: 1.0.0 recma-jsx: 1.0.0(acorn@8.14.0) recma-stringify: 1.0.0 rehype-recma: 1.0.0 - remark-mdx: 3.0.0 + remark-mdx: 3.1.0 remark-parse: 11.0.0 remark-rehype: 11.1.1 source-map: 0.7.4 @@ -1721,6 +1787,13 @@ packages: dev: false optional: true + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + /@playwright/test@1.45.0: resolution: {integrity: sha512-TVYsfMlGAaxeUllNkywbwek67Ncf8FRGn8ZlRdO291OL3NjG9oMbfVhyP82HQF0CZLMrYsvesqoUekxdWuF9Qw==} engines: {node: '>=18'} @@ -1738,147 +1811,161 @@ packages: rollup: optional: true dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 - /@rollup/rollup-android-arm-eabi@4.21.2: - resolution: {integrity: sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==} + /@rollup/rollup-android-arm-eabi@4.25.0: + resolution: {integrity: sha512-CC/ZqFZwlAIbU1wUPisHyV/XRc5RydFrNLtgl3dGYskdwPZdt4HERtKm50a/+DtTlKeCq9IXFEWR+P6blwjqBA==} cpu: [arm] os: [android] requiresBuild: true optional: true - /@rollup/rollup-android-arm64@4.21.2: - resolution: {integrity: sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==} + /@rollup/rollup-android-arm64@4.25.0: + resolution: {integrity: sha512-/Y76tmLGUJqVBXXCfVS8Q8FJqYGhgH4wl4qTA24E9v/IJM0XvJCGQVSW1QZ4J+VURO9h8YCa28sTFacZXwK7Rg==} cpu: [arm64] os: [android] requiresBuild: true optional: true - /@rollup/rollup-darwin-arm64@4.21.2: - resolution: {integrity: sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==} + /@rollup/rollup-darwin-arm64@4.25.0: + resolution: {integrity: sha512-YVT6L3UrKTlC0FpCZd0MGA7NVdp7YNaEqkENbWQ7AOVOqd/7VzyHpgIpc1mIaxRAo1ZsJRH45fq8j4N63I/vvg==} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-darwin-x64@4.21.2: - resolution: {integrity: sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==} + /@rollup/rollup-darwin-x64@4.25.0: + resolution: {integrity: sha512-ZRL+gexs3+ZmmWmGKEU43Bdn67kWnMeWXLFhcVv5Un8FQcx38yulHBA7XR2+KQdYIOtD0yZDWBCudmfj6lQJoA==} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.21.2: - resolution: {integrity: sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==} + /@rollup/rollup-freebsd-arm64@4.25.0: + resolution: {integrity: sha512-xpEIXhiP27EAylEpreCozozsxWQ2TJbOLSivGfXhU4G1TBVEYtUPi2pOZBnvGXHyOdLAUUhPnJzH3ah5cqF01g==} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + optional: true + + /@rollup/rollup-freebsd-x64@4.25.0: + resolution: {integrity: sha512-sC5FsmZGlJv5dOcURrsnIK7ngc3Kirnx3as2XU9uER+zjfyqIjdcMVgzy4cOawhsssqzoAX19qmxgJ8a14Qrqw==} + cpu: [x64] + os: [freebsd] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.25.0: + resolution: {integrity: sha512-uD/dbLSs1BEPzg564TpRAQ/YvTnCds2XxyOndAO8nJhaQcqQGFgv/DAVko/ZHap3boCvxnzYMa3mTkV/B/3SWA==} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm-musleabihf@4.21.2: - resolution: {integrity: sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==} + /@rollup/rollup-linux-arm-musleabihf@4.25.0: + resolution: {integrity: sha512-ZVt/XkrDlQWegDWrwyC3l0OfAF7yeJUF4fq5RMS07YM72BlSfn2fQQ6lPyBNjt+YbczMguPiJoCfaQC2dnflpQ==} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.21.2: - resolution: {integrity: sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==} + /@rollup/rollup-linux-arm64-gnu@4.25.0: + resolution: {integrity: sha512-qboZ+T0gHAW2kkSDPHxu7quaFaaBlynODXpBVnPxUgvWYaE84xgCKAPEYE+fSMd3Zv5PyFZR+L0tCdYCMAtG0A==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-musl@4.21.2: - resolution: {integrity: sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==} + /@rollup/rollup-linux-arm64-musl@4.25.0: + resolution: {integrity: sha512-ndWTSEmAaKr88dBuogGH2NZaxe7u2rDoArsejNslugHZ+r44NfWiwjzizVS1nUOHo+n1Z6qV3X60rqE/HlISgw==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-powerpc64le-gnu@4.21.2: - resolution: {integrity: sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==} + /@rollup/rollup-linux-powerpc64le-gnu@4.25.0: + resolution: {integrity: sha512-BVSQvVa2v5hKwJSy6X7W1fjDex6yZnNKy3Kx1JGimccHft6HV0THTwNtC2zawtNXKUu+S5CjXslilYdKBAadzA==} cpu: [ppc64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.21.2: - resolution: {integrity: sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==} + /@rollup/rollup-linux-riscv64-gnu@4.25.0: + resolution: {integrity: sha512-G4hTREQrIdeV0PE2JruzI+vXdRnaK1pg64hemHq2v5fhv8C7WjVaeXc9P5i4Q5UC06d/L+zA0mszYIKl+wY8oA==} cpu: [riscv64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-s390x-gnu@4.21.2: - resolution: {integrity: sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==} + /@rollup/rollup-linux-s390x-gnu@4.25.0: + resolution: {integrity: sha512-9T/w0kQ+upxdkFL9zPVB6zy9vWW1deA3g8IauJxojN4bnz5FwSsUAD034KpXIVX5j5p/rn6XqumBMxfRkcHapQ==} cpu: [s390x] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-gnu@4.21.2: - resolution: {integrity: sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==} + /@rollup/rollup-linux-x64-gnu@4.25.0: + resolution: {integrity: sha512-ThcnU0EcMDn+J4B9LD++OgBYxZusuA7iemIIiz5yzEcFg04VZFzdFjuwPdlURmYPZw+fgVrFzj4CA64jSTG4Ig==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-musl@4.21.2: - resolution: {integrity: sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==} + /@rollup/rollup-linux-x64-musl@4.25.0: + resolution: {integrity: sha512-zx71aY2oQxGxAT1JShfhNG79PnjYhMC6voAjzpu/xmMjDnKNf6Nl/xv7YaB/9SIa9jDYf8RBPWEnjcdlhlv1rQ==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.21.2: - resolution: {integrity: sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==} + /@rollup/rollup-win32-arm64-msvc@4.25.0: + resolution: {integrity: sha512-JT8tcjNocMs4CylWY/CxVLnv8e1lE7ff1fi6kbGocWwxDq9pj30IJ28Peb+Y8yiPNSF28oad42ApJB8oUkwGww==} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.21.2: - resolution: {integrity: sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==} + /@rollup/rollup-win32-ia32-msvc@4.25.0: + resolution: {integrity: sha512-dRLjLsO3dNOfSN6tjyVlG+Msm4IiZnGkuZ7G5NmpzwF9oOc582FZG05+UdfTbz5Jd4buK/wMb6UeHFhG18+OEg==} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-x64-msvc@4.21.2: - resolution: {integrity: sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==} + /@rollup/rollup-win32-x64-msvc@4.25.0: + resolution: {integrity: sha512-/RqrIFtLB926frMhZD0a5oDa4eFIbyNEwLLloMTEjmqfwZWXywwVVOVmwTsuyhC9HKkVEZcOOi+KV4U9wmOdlg==} cpu: [x64] os: [win32] requiresBuild: true optional: true - /@shikijs/core@1.22.2: - resolution: {integrity: sha512-bvIQcd8BEeR1yFvOYv6HDiyta2FFVePbzeowf5pPS1avczrPK+cjmaxxh0nx5QzbON7+Sv0sQfQVciO7bN72sg==} + /@shikijs/core@1.23.1: + resolution: {integrity: sha512-NuOVgwcHgVC6jBVH5V7iblziw6iQbWWHrj5IlZI3Fqu2yx9awH7OIQkXIcsHsUmY19ckwSgUMgrqExEyP5A0TA==} dependencies: - '@shikijs/engine-javascript': 1.22.2 - '@shikijs/engine-oniguruma': 1.22.2 - '@shikijs/types': 1.22.2 + '@shikijs/engine-javascript': 1.23.1 + '@shikijs/engine-oniguruma': 1.23.1 + '@shikijs/types': 1.23.1 '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 hast-util-to-html: 9.0.3 - /@shikijs/engine-javascript@1.22.2: - resolution: {integrity: sha512-iOvql09ql6m+3d1vtvP8fLCVCK7BQD1pJFmHIECsujB0V32BJ0Ab6hxk1ewVSMFA58FI0pR2Had9BKZdyQrxTw==} + /@shikijs/engine-javascript@1.23.1: + resolution: {integrity: sha512-i/LdEwT5k3FVu07SiApRFwRcSJs5QM9+tod5vYCPig1Ywi8GR30zcujbxGQFJHwYD7A5BUqagi8o5KS+LEVgBg==} dependencies: - '@shikijs/types': 1.22.2 + '@shikijs/types': 1.23.1 '@shikijs/vscode-textmate': 9.3.0 - oniguruma-to-js: 0.4.3 + oniguruma-to-es: 0.4.1 - /@shikijs/engine-oniguruma@1.22.2: - resolution: {integrity: sha512-GIZPAGzQOy56mGvWMoZRPggn0dTlBf1gutV5TdceLCZlFNqWmuc7u+CzD0Gd9vQUTgLbrt0KLzz6FNprqYAxlA==} + /@shikijs/engine-oniguruma@1.23.1: + resolution: {integrity: sha512-KQ+lgeJJ5m2ISbUZudLR1qHeH3MnSs2mjFg7bnencgs5jDVPeJ2NVDJ3N5ZHbcTsOIh0qIueyAJnwg7lg7kwXQ==} dependencies: - '@shikijs/types': 1.22.2 + '@shikijs/types': 1.23.1 '@shikijs/vscode-textmate': 9.3.0 - /@shikijs/types@1.22.2: - resolution: {integrity: sha512-NCWDa6LGZqTuzjsGfXOBWfjS/fDIbDdmVDug+7ykVe1IKT4c1gakrvlfFYp5NhAXH/lyqLM8wsAPo5wNy73Feg==} + /@shikijs/types@1.23.1: + resolution: {integrity: sha512-98A5hGyEhzzAgQh2dAeHKrWW4HfCMeoFER2z16p5eJ+vmPeF6lZ/elEne6/UCU551F/WqkopqRsr1l2Yu6+A0g==} dependencies: '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 @@ -1886,10 +1973,6 @@ packages: /@shikijs/vscode-textmate@9.3.0: resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==} - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - dev: true - /@sindresorhus/is@4.6.0: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} @@ -1914,34 +1997,9 @@ packages: /@types/acorn@4.0.6: resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 dev: false - /@types/babel__core@7.20.5: - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - dependencies: - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 - '@types/babel__generator': 7.6.5 - '@types/babel__template': 7.4.2 - '@types/babel__traverse': 7.20.2 - - /@types/babel__generator@7.6.5: - resolution: {integrity: sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==} - dependencies: - '@babel/types': 7.26.0 - - /@types/babel__template@7.4.2: - resolution: {integrity: sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==} - dependencies: - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 - - /@types/babel__traverse@7.20.2: - resolution: {integrity: sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==} - dependencies: - '@babel/types': 7.26.0 - /@types/cacheable-request@6.0.3: resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} dependencies: @@ -1963,14 +2021,14 @@ packages: dependencies: '@types/ms': 0.7.34 - /@types/estree-jsx@1.0.0: - resolution: {integrity: sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==} + /@types/estree-jsx@1.0.5: + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 dev: false - /@types/estree@1.0.5: - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + /@types/estree@1.0.6: + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} /@types/hast@3.0.4: resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -2018,8 +2076,8 @@ packages: requiresBuild: true optional: true - /@types/mdx@2.0.5: - resolution: {integrity: sha512-76CqzuD6Q7LC+AtbPqrvD9AqsN0k8bsYo2bM2J8pmNldP1aIPAbzUQ7QbobyXL4eLr1wK5x8FZFe8eF/ubRuBg==} + /@types/mdx@2.0.13: + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} dev: false /@types/ms@0.7.34: @@ -2072,130 +2130,145 @@ packages: /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - /@vitest/coverage-v8@1.6.0(vitest@1.6.0): - resolution: {integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==} + /@vitest/coverage-v8@2.1.6(vitest@2.1.6): + resolution: {integrity: sha512-qItJVYDbG3MUFO68dOZUz+rWlqe9LMzotERXFXKg25s2A/kSVsyS9O0yNGrITfBd943GsnBeQZkBUu7Pc+zVeA==} peerDependencies: - vitest: 1.6.0 + '@vitest/browser': 2.1.6 + vitest: 2.1.6 + peerDependenciesMeta: + '@vitest/browser': + optional: true dependencies: - '@ampproject/remapping': 2.2.1 + '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 debug: 4.3.7 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.4 - istanbul-reports: 3.1.6 - magic-string: 0.30.12 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.1.7 + magic-string: 0.30.14 magicast: 0.3.5 - picocolors: 1.1.1 - std-env: 3.7.0 - strip-literal: 2.0.0 - test-exclude: 6.0.0 - vitest: 1.6.0(@types/node@18.16.19) + std-env: 3.8.0 + test-exclude: 7.0.1 + tinyrainbow: 1.2.0 + vitest: 2.1.6(@types/node@18.16.19) transitivePeerDependencies: - supports-color dev: true - /@vitest/expect@1.6.0: - resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} + /@vitest/expect@2.1.6: + resolution: {integrity: sha512-9M1UR9CAmrhJOMoSwVnPh2rELPKhYo0m/CSgqw9PyStpxtkwhmdM6XYlXGKeYyERY1N6EIuzkQ7e3Lm1WKCoUg==} + dependencies: + '@vitest/spy': 2.1.6 + '@vitest/utils': 2.1.6 + chai: 5.1.2 + tinyrainbow: 1.2.0 + dev: true + + /@vitest/mocker@2.1.6(vite@6.0.1): + resolution: {integrity: sha512-MHZp2Z+Q/A3am5oD4WSH04f9B0T7UvwEb+v5W0kCYMhtXGYbdyl2NUk1wdSMqGthmhpiThPDp/hEoVwu16+u1A==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true dependencies: - '@vitest/spy': 1.6.0 - '@vitest/utils': 1.6.0 - chai: 4.4.1 + '@vitest/spy': 2.1.6 + estree-walker: 3.0.3 + magic-string: 0.30.14 + vite: 6.0.1(@types/node@18.16.19) dev: true - /@vitest/runner@1.6.0: - resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} + /@vitest/pretty-format@2.1.6: + resolution: {integrity: sha512-exZyLcEnHgDMKc54TtHca4McV4sKT+NKAe9ix/yhd/qkYb/TP8HTyXRFDijV19qKqTZM0hPL4753zU/U8L/gAA==} dependencies: - '@vitest/utils': 1.6.0 - p-limit: 5.0.0 + tinyrainbow: 1.2.0 + dev: true + + /@vitest/runner@2.1.6: + resolution: {integrity: sha512-SjkRGSFyrA82m5nz7To4CkRSEVWn/rwQISHoia/DB8c6IHIhaE/UNAo+7UfeaeJRE979XceGl00LNkIz09RFsA==} + dependencies: + '@vitest/utils': 2.1.6 pathe: 1.1.2 dev: true - /@vitest/snapshot@1.6.0: - resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} + /@vitest/snapshot@2.1.6: + resolution: {integrity: sha512-5JTWHw8iS9l3v4/VSuthCndw1lN/hpPB+mlgn1BUhFbobeIUj1J1V/Bj2t2ovGEmkXLTckFjQddsxS5T6LuVWw==} dependencies: - magic-string: 0.30.12 + '@vitest/pretty-format': 2.1.6 + magic-string: 0.30.14 pathe: 1.1.2 - pretty-format: 29.7.0 dev: true - /@vitest/spy@1.6.0: - resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} + /@vitest/spy@2.1.6: + resolution: {integrity: sha512-oTFObV8bd4SDdRka5O+mSh5w9irgx5IetrD5i+OsUUsk/shsBoHifwCzy45SAORzAhtNiprUVaK3hSCCzZh1jQ==} dependencies: - tinyspy: 2.2.0 + tinyspy: 3.0.2 dev: true - /@vitest/utils@1.6.0: - resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} + /@vitest/utils@2.1.6: + resolution: {integrity: sha512-ixNkFy3k4vokOUTU2blIUvOgKq/N2PW8vKIjZZYsGJCMX69MRa9J2sKqX5hY/k5O5Gty3YJChepkqZ3KM9LyIQ==} dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 + '@vitest/pretty-format': 2.1.6 + loupe: 3.1.2 + tinyrainbow: 1.2.0 dev: true - /@volar/kit@2.2.5(typescript@5.6.3): - resolution: {integrity: sha512-Bmn0UCaT43xUGGRwcmFG9lKhiCCLjRT4ScSLLPn5C9ltUcSGnIFFDlbZZa1PreHYHq25/4zkXt9Ap32klAh17w==} + /@volar/kit@2.4.10(typescript@5.6.3): + resolution: {integrity: sha512-ul+rLeO9RlFDgkY/FhPWMnpFqAsjvjkKz8VZeOY5YCJMwTblmmSBlNJtFNxSBx9t/k1q80nEthLyxiJ50ZbIAg==} peerDependencies: typescript: '*' dependencies: - '@volar/language-service': 2.2.5 - '@volar/typescript': 2.2.5 + '@volar/language-service': 2.4.10 + '@volar/typescript': 2.4.10 typesafe-path: 0.2.2 typescript: 5.6.3 - vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 dev: true - /@volar/language-core@2.2.5: - resolution: {integrity: sha512-2htyAuxRrAgETmFeUhT4XLELk3LiEcqoW/B8YUXMF6BrGWLMwIR09MFaZYvrA2UhbdAeSyeQ726HaWSWkexUcQ==} + /@volar/language-core@2.4.10: + resolution: {integrity: sha512-hG3Z13+nJmGaT+fnQzAkS0hjJRa2FCeqZt6Bd+oGNhUkQ+mTFsDETg5rqUTxyzIh5pSOGY7FHCWUS8G82AzLCA==} dependencies: - '@volar/source-map': 2.2.5 + '@volar/source-map': 2.4.10 dev: true - /@volar/language-server@2.2.5: - resolution: {integrity: sha512-PV/jkUkI+m72HTXwnY7hsGqLY3VNi96ZRoWFRzVC9QG/853bixxjveXPJIiydMJ9I739lO3kcj3hnGrF5Sm+HA==} + /@volar/language-server@2.4.10: + resolution: {integrity: sha512-odQsgrJh8hOXfxkSj/BSnpjThb2/KDhbxZnG/XAEx6E3QGDQv4hAOz9GWuKoNs0tkjgwphQGIwDMT1JYaTgRJw==} dependencies: - '@volar/language-core': 2.2.5 - '@volar/language-service': 2.2.5 - '@volar/snapshot-document': 2.2.5 - '@volar/typescript': 2.2.5 - '@vscode/l10n': 0.0.16 + '@volar/language-core': 2.4.10 + '@volar/language-service': 2.4.10 + '@volar/typescript': 2.4.10 path-browserify: 1.0.1 request-light: 0.7.0 vscode-languageserver: 9.0.1 vscode-languageserver-protocol: 3.17.5 - vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 dev: true - /@volar/language-service@2.2.5: - resolution: {integrity: sha512-a97e/0uCe+uSu23F4zvgvldqJtZe6jugQeEHWjTfhgOEO8+Be0t5CZNNVItQqmPyAsD8eElg0S/cP6uxvCmCSQ==} + /@volar/language-service@2.4.10: + resolution: {integrity: sha512-VxUiWS11rnRzakkqw5x1LPhsz+RBfD0CrrFarLGW2/voliYXEdCuSOM3r8JyNRvMvP4uwhD38ccAdTcULQEAIQ==} dependencies: - '@volar/language-core': 2.2.5 + '@volar/language-core': 2.4.10 vscode-languageserver-protocol: 3.17.5 - vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 dev: true - /@volar/snapshot-document@2.2.5: - resolution: {integrity: sha512-MTOvWVKxM7ugKO3Amffkv2pND03fe2JtfygYaputqjVFML7YxtTXj8SPnI2pODLeSwOKzDYL6Q8r5j6Y5AgUzQ==} - dependencies: - vscode-languageserver-protocol: 3.17.5 - vscode-languageserver-textdocument: 1.0.11 - dev: true - - /@volar/source-map@2.2.5: - resolution: {integrity: sha512-wrOEIiZNf4E+PWB0AxyM4tfhkfldPsb3bxg8N6FHrxJH2ohar7aGu48e98bp3pR9HUA7P/pR9VrLmkTrgCCnWQ==} - dependencies: - muggle-string: 0.4.1 + /@volar/source-map@2.4.10: + resolution: {integrity: sha512-OCV+b5ihV0RF3A7vEvNyHPi4G4kFa6ukPmyVocmqm5QzOd8r5yAtiNvaPEjl8dNvgC/lj4JPryeeHLdXd62rWA==} dev: true - /@volar/typescript@2.2.5: - resolution: {integrity: sha512-eSV/n75+ppfEVugMC/salZsI44nXDPAyL6+iTYCNLtiLHGJsnMv9GwiDMujrvAUj/aLQyqRJgYtXRoxop2clCw==} + /@volar/typescript@2.4.10: + resolution: {integrity: sha512-F8ZtBMhSXyYKuBfGpYwqA5rsONnOwAVvjyE7KPYJ7wgZqo2roASqNWUnianOomJX5u1cxeRooHV59N0PhvEOgw==} dependencies: - '@volar/language-core': 2.2.5 + '@volar/language-core': 2.4.10 path-browserify: 1.0.1 + vscode-uri: 3.0.8 dev: true /@vscode/emmet-helper@2.9.3: @@ -2203,15 +2276,11 @@ packages: dependencies: emmet: 2.4.7 jsonc-parser: 2.3.1 - vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 vscode-uri: 2.1.2 dev: true - /@vscode/l10n@0.0.16: - resolution: {integrity: sha512-JT5CvrIYYCrmB+dCana8sUqJEcGB1ZDXNLMQ2+42bW995WmNoenijWMUdZfwmuQUTQcEVVIa2OecZzTYWUW9Cg==} - dev: true - /@vscode/l10n@0.0.18: resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} dev: true @@ -2224,16 +2293,20 @@ packages: acorn: 8.14.0 dev: false - /acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - dev: true - /acorn@8.14.0: resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} hasBin: true + /ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + dev: true + /algoliasearch@4.20.0: resolution: {integrity: sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==} dependencies: @@ -2278,11 +2351,6 @@ packages: color-convert: 2.0.1 dev: true - /ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - dev: true - /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} @@ -2320,45 +2388,42 @@ packages: engines: {node: '>=8'} dev: true - /assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + /assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} dev: true - /astring@1.8.4: - resolution: {integrity: sha512-97a+l2LBU3Op3bBQEff79i/E4jMD2ZLFD8rHx9B6mXyB2uQwhJQYfiDqUwtfjF4QA1F2qs//N6Cw8LetMbQjcw==} + /astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true dev: false - /astro-expressive-code@0.38.3(astro@4.16.10): + /astro-expressive-code@0.38.3(astro@5.0.2): resolution: {integrity: sha512-Tvdc7RV0G92BbtyEOsfJtXU35w41CkM94fOAzxbQP67Wj5jArfserJ321FO4XA7WG9QMV0GIBmQq77NBIRDzpQ==} peerDependencies: astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 dependencies: - astro: 4.16.10(@types/node@18.16.19)(typescript@5.6.3) + astro: 5.0.2(@types/node@18.16.19)(typescript@5.6.3) rehype-expressive-code: 0.38.3 dev: false - /astro@4.16.10(@types/node@18.16.19)(typescript@5.6.3): - resolution: {integrity: sha512-a+nB4bZE50NXHLzVXUHtx/lYct2Aa8kbqZnWNrWqkU97RuhBuWJ5H5/LQbKRnBWGvqChKfJBiMWJe53TY9ieYQ==} - engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} + /astro@5.0.2(@types/node@18.16.19)(typescript@5.6.3): + resolution: {integrity: sha512-MKf82vUiTZ2aK+c/8EDnLYIsToBdVVk4PuhhGdE8F/PcuUyS+oIcuCPf30iVf8WCQwXOfnYGnv1JbRjzkqUc3w==} + engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true dependencies: '@astrojs/compiler': 2.10.3 - '@astrojs/internal-helpers': 0.4.1 - '@astrojs/markdown-remark': 5.3.0 - '@astrojs/telemetry': 3.1.0 - '@babel/core': 7.26.0 - '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/types': 7.26.0 + '@astrojs/internal-helpers': 0.4.2 + '@astrojs/markdown-remark': 6.0.0 + '@astrojs/telemetry': 3.2.0 '@oslojs/encoding': 1.1.0 '@rollup/pluginutils': 5.1.3 - '@types/babel__core': 7.20.5 '@types/cookie': 0.6.0 acorn: 8.14.0 aria-query: 5.3.2 axobject-query: 4.1.0 boxen: 8.0.1 - ci-info: 4.0.0 + ci-info: 4.1.0 clsx: 2.1.1 common-ancestor-path: 1.0.1 cookie: 0.7.2 @@ -2375,33 +2440,33 @@ packages: fast-glob: 3.3.2 flattie: 1.1.1 github-slugger: 2.0.0 - gray-matter: 4.0.3 html-escaper: 3.0.3 http-cache-semantics: 4.1.1 js-yaml: 4.1.0 kleur: 4.1.5 - magic-string: 0.30.12 + magic-string: 0.30.14 magicast: 0.3.5 micromatch: 4.0.8 mrmime: 2.0.0 neotraverse: 0.6.18 - ora: 8.1.1 p-limit: 6.1.0 p-queue: 8.0.1 preferred-pm: 4.0.0 prompts: 2.4.2 rehype: 13.0.2 semver: 7.6.3 - shiki: 1.22.2 + shiki: 1.23.1 tinyexec: 0.3.1 tsconfck: 3.1.4(typescript@5.6.3) + ultrahtml: 1.5.3 unist-util-visit: 5.0.0 vfile: 6.0.3 - vite: 5.4.10(@types/node@18.16.19) - vitefu: 1.0.3(vite@5.4.10) + vite: 6.0.1(@types/node@18.16.19) + vitefu: 1.0.4(vite@6.0.1) which-pm: 3.0.0 - xxhash-wasm: 1.0.2 + xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 + yocto-spinner: 0.1.1 zod: 3.23.8 zod-to-json-schema: 3.23.5(zod@3.23.8) zod-to-ts: 1.2.0(typescript@5.6.3)(zod@3.23.8) @@ -2409,6 +2474,7 @@ packages: sharp: 0.33.3 transitivePeerDependencies: - '@types/node' + - jiti - less - lightningcss - rollup @@ -2418,10 +2484,12 @@ packages: - sugarss - supports-color - terser + - tsx - typescript + - yaml - /autoprefixer@10.4.15(postcss@8.4.47): - resolution: {integrity: sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==} + /autoprefixer@10.4.20(postcss@8.4.49): + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: @@ -2429,10 +2497,10 @@ packages: dependencies: browserslist: 4.24.2 caniuse-lite: 1.0.30001679 - fraction.js: 4.2.0 + fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.4.47 + postcss: 8.4.49 postcss-value-parser: 4.2.0 dev: false @@ -2540,6 +2608,12 @@ packages: balanced-match: 1.0.2 concat-map: 0.0.1 + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + /braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -2555,6 +2629,7 @@ packages: electron-to-chromium: 1.5.55 node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.2) + dev: false /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} @@ -2601,21 +2676,20 @@ packages: /caniuse-lite@1.0.30001679: resolution: {integrity: sha512-j2YqID/YwpLnKzCmBOS4tlZdWprXm3ZmQLBH9ZBXFOhoxLA46fwyBvx6toCBWBmnuwUY/qB3kEU6gFx8qgCroA==} + dev: false /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - /chai@4.4.1: - resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} - engines: {node: '>=4'} + /chai@5.1.2: + resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} + engines: {node: '>=12'} dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.3 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.0.8 + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.2 + pathval: 2.0.0 dev: true /chalk@5.3.0: @@ -2639,10 +2713,9 @@ packages: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - dependencies: - get-func-name: 2.0.2 + /check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} dev: true /chokidar@3.6.0: @@ -2675,24 +2748,14 @@ packages: engines: {node: '>=8'} dev: true - /ci-info@4.0.0: - resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} + /ci-info@4.1.0: + resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==} engines: {node: '>=8'} /cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} - /cli-cursor@5.0.0: - resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} - engines: {node: '>=18'} - dependencies: - restore-cursor: 5.1.0 - - /cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -2751,9 +2814,6 @@ packages: /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - /convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - /cookie@0.7.2: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} @@ -2766,8 +2826,8 @@ packages: which: 1.3.1 dev: true - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + /cross-spawn@7.0.5: + resolution: {integrity: sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==} engines: {node: '>= 8'} dependencies: path-key: 3.1.1 @@ -2812,17 +2872,6 @@ packages: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} dev: true - /debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.0.0 - dev: false - /debug@4.3.7: resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} engines: {node: '>=6.0'} @@ -2845,11 +2894,9 @@ packages: dependencies: mimic-response: 3.1.0 - /deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + /deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} - dependencies: - type-detect: 4.0.8 dev: true /deep-extend@0.6.0: @@ -2903,11 +2950,6 @@ packages: /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - /diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - /diff@5.2.0: resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} engines: {node: '>=0.3.1'} @@ -2959,12 +3001,17 @@ packages: resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} engines: {node: '>=4'} + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: false /electron-to-chromium@1.5.55: resolution: {integrity: sha512-6maZ2ASDOTBtjt9FhqYPRnbvKU5tjG0IN9SztUOWYw2AzNDNpKJYLJmlK0/En4Hs/aiWnB+JZ+gW19PIGszgKg==} + dev: false /emmet@2.4.7: resolution: {integrity: sha512-O5O5QNqtdlnQM2bmKHtJgyChcrFMgQuulI+WdiOw2NArzprUqqxUW6bgYtKvzKgrsYpuLWalOkdhNP+1jluhCA==} @@ -2973,14 +3020,21 @@ packages: '@emmetio/css-abbreviation': 2.1.8 dev: true + /emoji-regex-xs@1.0.0: + resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + /emoji-regex@10.3.0: resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - /encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} dev: false @@ -3006,7 +3060,7 @@ packages: /esast-util-from-estree@2.0.0: resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} dependencies: - '@types/estree-jsx': 1.0.0 + '@types/estree-jsx': 1.0.5 devlop: 1.1.0 estree-util-visit: 2.0.0 unist-util-position-from-estree: 2.0.0 @@ -3015,7 +3069,7 @@ packages: /esast-util-from-js@2.0.1: resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} dependencies: - '@types/estree-jsx': 1.0.0 + '@types/estree-jsx': 1.0.5 acorn: 8.14.0 esast-util-from-estree: 2.0.0 vfile-message: 4.0.2 @@ -3051,6 +3105,37 @@ packages: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 + /esbuild@0.24.0: + resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} + engines: {node: '>=18'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.24.0 + '@esbuild/android-arm': 0.24.0 + '@esbuild/android-arm64': 0.24.0 + '@esbuild/android-x64': 0.24.0 + '@esbuild/darwin-arm64': 0.24.0 + '@esbuild/darwin-x64': 0.24.0 + '@esbuild/freebsd-arm64': 0.24.0 + '@esbuild/freebsd-x64': 0.24.0 + '@esbuild/linux-arm': 0.24.0 + '@esbuild/linux-arm64': 0.24.0 + '@esbuild/linux-ia32': 0.24.0 + '@esbuild/linux-loong64': 0.24.0 + '@esbuild/linux-mips64el': 0.24.0 + '@esbuild/linux-ppc64': 0.24.0 + '@esbuild/linux-riscv64': 0.24.0 + '@esbuild/linux-s390x': 0.24.0 + '@esbuild/linux-x64': 0.24.0 + '@esbuild/netbsd-x64': 0.24.0 + '@esbuild/openbsd-arm64': 0.24.0 + '@esbuild/openbsd-x64': 0.24.0 + '@esbuild/sunos-x64': 0.24.0 + '@esbuild/win32-arm64': 0.24.0 + '@esbuild/win32-ia32': 0.24.0 + '@esbuild/win32-x64': 0.24.0 + /escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -3071,13 +3156,13 @@ packages: /estree-util-attach-comments@3.0.0: resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 dev: false /estree-util-build-jsx@3.0.1: resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} dependencies: - '@types/estree-jsx': 1.0.0 + '@types/estree-jsx': 1.0.5 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 estree-walker: 3.0.3 @@ -3090,22 +3175,22 @@ packages: /estree-util-scope@1.0.0: resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 devlop: 1.1.0 dev: false /estree-util-to-js@2.0.0: resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} dependencies: - '@types/estree-jsx': 1.0.0 - astring: 1.8.4 + '@types/estree-jsx': 1.0.5 + astring: 1.9.0 source-map: 0.7.4 dev: false /estree-util-visit@2.0.0: resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} dependencies: - '@types/estree-jsx': 1.0.0 + '@types/estree-jsx': 1.0.5 '@types/unist': 3.0.0 dev: false @@ -3115,7 +3200,7 @@ packages: /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 /etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} @@ -3125,26 +3210,16 @@ packages: /eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - /execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - dev: true - /expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} dev: false + /expect-type@1.1.0: + resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} + engines: {node: '>=12.0.0'} + dev: true + /expressive-code@0.38.3: resolution: {integrity: sha512-COM04AiUotHCKJgWdn7NtW2lqu8OW8owAidMpkXt1qxrZ9Q2iC7+tok/1qIn2ocGnczvr9paIySgGnEwFeEQ8Q==} dependencies: @@ -3154,12 +3229,6 @@ packages: '@expressive-code/plugin-text-markers': 0.38.3 dev: false - /extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - dependencies: - is-extendable: 0.1.1 - /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -3176,6 +3245,10 @@ packages: tmp: 0.0.33 dev: true + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + /fast-fifo@1.3.0: resolution: {integrity: sha512-IgfweLvEpwyA4WgiQe9Nx6VV2QkML2NkvZnk1oKnIzXgXdWxuhF7zw4DvLTPZJn6PIUneiAXPF24QmoEqHTjyw==} dev: false @@ -3190,6 +3263,10 @@ packages: merge2: 1.4.1 micromatch: 4.0.8 + /fast-uri@3.0.3: + resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} + dev: true + /fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: @@ -3233,8 +3310,16 @@ packages: resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} engines: {node: '>=8'} - /fraction.js@4.2.0: - resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} + /foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.5 + signal-exit: 4.1.0 + dev: true + + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} dev: false /fresh@0.5.2: @@ -3285,10 +3370,6 @@ packages: /function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - /gensync@1.0.0-beta.2: - 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.*} @@ -3298,10 +3379,6 @@ packages: resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} engines: {node: '>=18'} - /get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - dev: true - /get-port@7.1.0: resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==} engines: {node: '>=16'} @@ -3314,11 +3391,6 @@ packages: pump: 3.0.0 dev: true - /get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - dev: true - /get-tsconfig@4.7.5: resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} dependencies: @@ -3344,19 +3416,20 @@ packages: dependencies: is-glob: 4.0.3 - /glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} - deprecated: Glob versions prior to v9 are no longer supported + /glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true 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 + 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 + dev: true - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + /glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} deprecated: Glob versions prior to v9 are no longer supported dependencies: fs.realpath: 1.0.0 @@ -3365,11 +3438,6 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true - - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -3403,15 +3471,6 @@ packages: /graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - /gray-matter@4.0.3: - resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} - engines: {node: '>=6.0'} - dependencies: - js-yaml: 3.14.1 - kind-of: 6.0.3 - section-matter: 1.0.0 - strip-bom-string: 1.0.0 - /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -3535,20 +3594,20 @@ packages: /hast-util-to-estree@3.1.0: resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} dependencies: - '@types/estree': 1.0.5 - '@types/estree-jsx': 1.0.0 + '@types/estree': 1.0.6 + '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 devlop: 1.1.0 estree-util-attach-comments: 3.0.0 estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.1.3 mdast-util-mdxjs-esm: 2.0.1 property-information: 6.2.0 space-separated-tokens: 2.0.2 - style-to-object: 0.4.1 + style-to-object: 0.4.4 unist-util-position: 5.0.0 zwitch: 2.0.4 transitivePeerDependencies: @@ -3570,22 +3629,22 @@ packages: stringify-entities: 4.0.3 zwitch: 2.0.4 - /hast-util-to-jsx-runtime@2.3.0: - resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + /hast-util-to-jsx-runtime@2.3.2: + resolution: {integrity: sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 '@types/hast': 3.0.4 '@types/unist': 3.0.0 comma-separated-tokens: 2.0.3 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.1.3 mdast-util-mdxjs-esm: 2.0.1 property-information: 6.2.0 space-separated-tokens: 2.0.2 - style-to-object: 1.0.5 + style-to-object: 1.0.8 unist-util-position: 5.0.0 vfile-message: 4.0.2 transitivePeerDependencies: @@ -3689,11 +3748,6 @@ packages: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} dev: true - /human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - dev: true - /i18next@23.11.5: resolution: {integrity: sha512-41pvpVbW9rhZPk5xjCX2TPJi2861LEig/YRhUkY+1FQ2IQPS0bKUDYnEqY8XPPbB48h1uIwLnP9iiEfuSl20CA==} dependencies: @@ -3737,8 +3791,8 @@ packages: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} dev: false - /inline-style-parser@0.2.2: - resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} + /inline-style-parser@0.2.4: + resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} dev: false /is-absolute-url@4.0.1: @@ -3780,10 +3834,6 @@ packages: 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'} - /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -3814,10 +3864,6 @@ packages: dependencies: is-docker: 3.0.0 - /is-interactive@2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} - engines: {node: '>=12'} - /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -3826,11 +3872,6 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /is-subdir@1.2.0: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} @@ -3838,14 +3879,6 @@ packages: better-path-resolve: 1.0.0 dev: true - /is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} - engines: {node: '>=12'} - - /is-unicode-supported@2.0.0: - resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} - engines: {node: '>=18'} - /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} @@ -3875,8 +3908,8 @@ packages: supports-color: 7.2.0 dev: true - /istanbul-lib-source-maps@5.0.4: - resolution: {integrity: sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==} + /istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} engines: {node: '>=10'} dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -3886,14 +3919,22 @@ packages: - supports-color dev: true - /istanbul-reports@3.1.6: - resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + /istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 dev: true + /jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + /jiti@1.21.0: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true @@ -3903,13 +3944,6 @@ packages: hasBin: true dev: true - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - /js-tokens@8.0.3: - resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} - dev: true - /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -3923,26 +3957,20 @@ packages: dependencies: argparse: 2.0.1 - /jsesc@3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} - engines: {node: '>=6'} - hasBin: true - /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true /jsonc-parser@2.3.1: resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} dev: true - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + /jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} dev: true /jsonfile@4.0.0: @@ -3966,10 +3994,6 @@ packages: json-buffer: 3.0.1 dev: true - /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} @@ -4012,14 +4036,6 @@ packages: pify: 4.0.1 strip-bom: 3.0.0 - /local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} - engines: {node: '>=14'} - dependencies: - mlly: 1.5.0 - pkg-types: 1.0.3 - dev: true - /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -4034,20 +4050,11 @@ packages: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: true - /log-symbols@6.0.0: - resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} - engines: {node: '>=18'} - dependencies: - chalk: 5.3.0 - is-unicode-supported: 1.3.0 - /longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - /loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - dependencies: - get-func-name: 2.0.2 + /loupe@3.1.2: + resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} dev: true /lowercase-keys@2.0.0: @@ -4055,6 +4062,10 @@ packages: engines: {node: '>=8'} dev: true + /lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + dev: true + /lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: @@ -4062,13 +4073,8 @@ packages: yallist: 2.1.2 dev: true - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - dependencies: - yallist: 3.1.1 - - /magic-string@0.30.12: - resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} + /magic-string@0.30.14: + resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==} dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -4212,10 +4218,10 @@ packages: transitivePeerDependencies: - supports-color - /mdast-util-mdx-expression@2.0.0: - resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} + /mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} dependencies: - '@types/estree-jsx': 1.0.0 + '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 @@ -4225,10 +4231,10 @@ packages: - supports-color dev: false - /mdast-util-mdx-jsx@3.0.0: - resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==} + /mdast-util-mdx-jsx@3.1.3: + resolution: {integrity: sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==} dependencies: - '@types/estree-jsx': 1.0.0 + '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 '@types/unist': 3.0.0 @@ -4238,7 +4244,6 @@ packages: mdast-util-to-markdown: 2.1.0 parse-entities: 4.0.1 stringify-entities: 4.0.3 - unist-util-remove-position: 5.0.0 unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 transitivePeerDependencies: @@ -4249,8 +4254,8 @@ packages: resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} dependencies: mdast-util-from-markdown: 2.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.1.3 mdast-util-mdxjs-esm: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: @@ -4260,7 +4265,7 @@ packages: /mdast-util-mdxjs-esm@2.0.1: resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} dependencies: - '@types/estree-jsx': 1.0.0 + '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 @@ -4305,10 +4310,6 @@ packages: dependencies: '@types/mdast': 4.0.4 - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true - /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -4413,9 +4414,9 @@ packages: /micromark-extension-mdx-expression@3.0.0: resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 devlop: 1.1.0 - micromark-factory-mdx-expression: 2.0.1 + micromark-factory-mdx-expression: 2.0.2 micromark-factory-space: 2.0.0 micromark-util-character: 2.0.1 micromark-util-events-to-acorn: 2.0.2 @@ -4423,16 +4424,17 @@ packages: micromark-util-types: 2.0.0 dev: false - /micromark-extension-mdx-jsx@3.0.0: - resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} + /micromark-extension-mdx-jsx@3.0.1: + resolution: {integrity: sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==} dependencies: '@types/acorn': 4.0.6 - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 - micromark-factory-mdx-expression: 2.0.1 + micromark-factory-mdx-expression: 2.0.2 micromark-factory-space: 2.0.0 micromark-util-character: 2.0.1 + micromark-util-events-to-acorn: 2.0.2 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 vfile-message: 4.0.2 @@ -4447,7 +4449,7 @@ packages: /micromark-extension-mdxjs-esm@3.0.0: resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 devlop: 1.1.0 micromark-core-commonmark: 2.0.0 micromark-util-character: 2.0.1 @@ -4464,7 +4466,7 @@ packages: acorn: 8.14.0 acorn-jsx: 5.3.2(acorn@8.14.0) micromark-extension-mdx-expression: 3.0.0 - micromark-extension-mdx-jsx: 3.0.0 + micromark-extension-mdx-jsx: 3.0.1 micromark-extension-mdx-md: 2.0.0 micromark-extension-mdxjs-esm: 3.0.0 micromark-util-combine-extensions: 2.0.0 @@ -4486,11 +4488,12 @@ packages: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - /micromark-factory-mdx-expression@2.0.1: - resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} + /micromark-factory-mdx-expression@2.0.2: + resolution: {integrity: sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 devlop: 1.1.0 + micromark-factory-space: 2.0.0 micromark-util-character: 2.0.1 micromark-util-events-to-acorn: 2.0.2 micromark-util-symbol: 2.0.0 @@ -4565,7 +4568,7 @@ packages: resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} dependencies: '@types/acorn': 4.0.6 - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 '@types/unist': 3.0.0 devlop: 1.1.0 estree-util-visit: 2.0.0 @@ -4638,20 +4641,17 @@ packages: braces: 3.0.3 picomatch: 2.3.1 - /mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} dev: false - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: true - - /mimic-function@5.0.1: - resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} - engines: {node: '>=18'} + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false /mimic-response@1.0.1: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} @@ -4667,23 +4667,26 @@ packages: dependencies: brace-expansion: 1.1.11 + /minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: false + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + /mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} dev: false - /mlly@1.5.0: - resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} - dependencies: - acorn: 8.14.0 - pathe: 1.1.2 - pkg-types: 1.0.3 - ufo: 1.3.2 - dev: true - /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -4693,10 +4696,6 @@ packages: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} - /ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: false - /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -4765,6 +4764,7 @@ packages: /node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + dev: false /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} @@ -4784,13 +4784,6 @@ packages: resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==} dev: false - /npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - path-key: 4.0.0 - dev: true - /nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: @@ -4816,23 +4809,12 @@ packages: dependencies: wrappy: 1.0.2 - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - dependencies: - mimic-fn: 4.0.0 - dev: true - - /onetime@7.0.0: - resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} - engines: {node: '>=18'} - dependencies: - mimic-function: 5.0.1 - - /oniguruma-to-js@0.4.3: - resolution: {integrity: sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==} + /oniguruma-to-es@0.4.1: + resolution: {integrity: sha512-rNcEohFz095QKGRovP/yqPIKc+nP+Sjs4YTHMv33nMePGKrq/r2eu9Yh4646M5XluGJsUnmwoXuiXE69KDs+fQ==} dependencies: - regex: 4.3.3 + emoji-regex-xs: 1.0.0 + regex: 5.0.2 + regex-recursion: 4.3.0 /opentype.js@1.3.4: resolution: {integrity: sha512-d2JE9RP/6uagpQAVtJoF0pJJA/fgai89Cc50Yp0EJHk+eLp6QQ7gBoblsnubRULNY132I0J1QKMJ+JTbMqz4sw==} @@ -4843,20 +4825,6 @@ packages: tiny-inflate: 1.0.3 dev: false - /ora@8.1.1: - resolution: {integrity: sha512-YWielGi1XzG1UTvOaCFaNgEnuhZVMSHYkW/FQ7UX8O26PtlpdM84c0f7wLPlkvx2RfiQmnzd61d/MGxmpQeJPw==} - engines: {node: '>=18'} - dependencies: - chalk: 5.3.0 - cli-cursor: 5.0.0 - cli-spinners: 2.9.2 - is-interactive: 2.0.0 - is-unicode-supported: 2.0.0 - log-symbols: 6.0.0 - stdin-discarder: 0.2.2 - string-width: 7.2.0 - strip-ansi: 7.1.0 - /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -4891,13 +4859,6 @@ packages: yocto-queue: 0.1.0 dev: true - /p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} - dependencies: - yocto-queue: 1.1.1 - dev: true - /p-limit@6.1.0: resolution: {integrity: sha512-H0jc0q1vOzlEk0TqAKXKZxdl7kX3OFUzCnNVUnq5Pc3DGo0kpeaMuPqxQn235HibwBEb0/pm9dgKTjXy66fBkg==} engines: {node: '>=18'} @@ -4930,6 +4891,10 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + /package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + dev: true + /package-manager-detector@0.2.2: resolution: {integrity: sha512-VgXbyrSNsml4eHWIvxxG/nTL4wgybMTXCV2Un/+yEc3aDKKU6nQBZjbeP3Pl3qm9Qg92X/1ng4ffvCeD/zwHgg==} dev: true @@ -4990,14 +4955,17 @@ packages: engines: {node: '>=8'} dev: true - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - dev: true - /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'} + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + dev: true + /path-to-regexp@6.2.2: resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} dev: false @@ -5011,8 +4979,9 @@ packages: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} dev: true - /pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + /pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} dev: true /picocolors@1.1.1: @@ -5044,14 +5013,6 @@ packages: dependencies: find-up: 4.1.0 - /pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} - dependencies: - jsonc-parser: 3.2.0 - mlly: 1.5.0 - pathe: 1.1.2 - dev: true - /playwright-core@1.45.0: resolution: {integrity: sha512-lZmHlFQ0VYSpAs43dRq1/nJ9G/6SiTI7VPqidld9TDefL9tX87bTKExWZZUF5PeRyqtXqd8fQi2qmfIedkwsNQ==} engines: {node: '>=18'} @@ -5068,27 +5029,27 @@ packages: fsevents: 2.3.2 dev: true - /postcss-import@15.1.0(postcss@8.4.47): + /postcss-import@15.1.0(postcss@8.4.49): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - /postcss-js@4.0.1(postcss@8.4.47): + /postcss-js@4.0.1(postcss@8.4.49): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.47 + postcss: 8.4.49 - /postcss-load-config@4.0.2(postcss@8.4.47): + /postcss-load-config@4.0.2(postcss@8.4.49): resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} engines: {node: '>= 14'} peerDependencies: @@ -5101,16 +5062,16 @@ packages: optional: true dependencies: lilconfig: 3.1.2 - postcss: 8.4.47 - yaml: 2.3.4 + postcss: 8.4.49 + yaml: 2.6.1 - /postcss-nested@6.0.1(postcss@8.4.47): + /postcss-nested@6.0.1(postcss@8.4.49): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-selector-parser: 6.0.13 /postcss-selector-parser@6.0.13: @@ -5123,8 +5084,8 @@ packages: /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - /postcss@8.4.47: - resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + /postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 @@ -5171,6 +5132,14 @@ packages: sass-formatter: 0.7.6 dev: true + /prettier@2.8.7: + resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} + engines: {node: '>=10.13.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + /prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} @@ -5183,15 +5152,6 @@ packages: hasBin: true dev: true - /pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.2.0 - dev: true - /prismjs@1.29.0: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} engines: {node: '>=6'} @@ -5243,10 +5203,6 @@ packages: strip-json-comments: 2.0.1 dev: false - /react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - dev: true - /read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: @@ -5285,7 +5241,7 @@ packages: /recma-build-jsx@1.0.0: resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 estree-util-build-jsx: 3.0.1 vfile: 6.0.3 dev: false @@ -5305,7 +5261,7 @@ packages: /recma-parse@1.0.0: resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 esast-util-from-js: 2.0.1 unified: 11.0.5 vfile: 6.0.3 @@ -5314,7 +5270,7 @@ packages: /recma-stringify@1.0.0: resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 estree-util-to-js: 2.0.0 unified: 11.0.5 vfile: 6.0.3 @@ -5323,8 +5279,18 @@ packages: /regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - /regex@4.3.3: - resolution: {integrity: sha512-r/AadFO7owAq1QJVeZ/nq9jNS1vyZt+6t1p/E59B56Rn2GCya+gr1KSyOzNL/er+r+B7phv5jG2xU2Nz1YkmJg==} + /regex-recursion@4.3.0: + resolution: {integrity: sha512-5LcLnizwjcQ2ALfOj95MjcatxyqF5RPySx9yT+PaXu3Gox2vyAtLDjHB8NTJLtMGkvyau6nI3CfpwFCjPUIs/A==} + dependencies: + regex-utilities: 2.3.0 + + /regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + /regex@5.0.2: + resolution: {integrity: sha512-/pczGbKIQgfTMRV0XjABvc5RzLqQmwqxLHdQao2RTXPk+pmTXB2P0IaUHYdYyk412YLwUIkaeMd5T+RzVgTqnQ==} + dependencies: + regex-utilities: 2.3.0 /rehype-expressive-code@0.38.3: resolution: {integrity: sha512-RYSSDkMBikoTbycZPkcWp6ELneANT4eTpND1DSRJ6nI2eVFUwTBDCvE2vO6jOOTaavwnPiydi4i/87NRyjpdOA==} @@ -5372,7 +5338,7 @@ packages: /rehype-recma@1.0.0: resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 '@types/hast': 3.0.4 hast-util-to-estree: 3.1.0 transitivePeerDependencies: @@ -5417,8 +5383,8 @@ packages: transitivePeerDependencies: - supports-color - /remark-mdx@3.0.0: - resolution: {integrity: sha512-O7yfjuC6ra3NHPbRVxfflafAj3LTwx3b73aBvkEFU5z4PsD6FD4vrqJAkE5iNGLz71GdjXfgRqm3SQ0h0VuE7g==} + /remark-mdx@3.1.0: + resolution: {integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==} dependencies: mdast-util-mdx: 3.0.0 micromark-extension-mdxjs: 3.0.0 @@ -5461,6 +5427,10 @@ packages: mdast-util-to-markdown: 2.1.0 unified: 11.0.5 + /request-light@0.5.8: + resolution: {integrity: sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==} + dev: true + /request-light@0.7.0: resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} dev: true @@ -5470,6 +5440,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + /resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} dev: true @@ -5497,13 +5472,6 @@ packages: lowercase-keys: 2.0.0 dev: true - /restore-cursor@5.1.0: - resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} - engines: {node: '>=18'} - dependencies: - onetime: 7.0.0 - signal-exit: 4.1.0 - /retext-latin@4.0.0: resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} dependencies: @@ -5537,29 +5505,31 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - /rollup@4.21.2: - resolution: {integrity: sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==} + /rollup@4.25.0: + resolution: {integrity: sha512-uVbClXmR6wvx5R1M3Od4utyLUxrmOcEm3pAtMphn73Apq19PDtHpgZoEvqH2YnnaNUuvKmg2DgRd2Sqv+odyqg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.21.2 - '@rollup/rollup-android-arm64': 4.21.2 - '@rollup/rollup-darwin-arm64': 4.21.2 - '@rollup/rollup-darwin-x64': 4.21.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.21.2 - '@rollup/rollup-linux-arm-musleabihf': 4.21.2 - '@rollup/rollup-linux-arm64-gnu': 4.21.2 - '@rollup/rollup-linux-arm64-musl': 4.21.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.21.2 - '@rollup/rollup-linux-riscv64-gnu': 4.21.2 - '@rollup/rollup-linux-s390x-gnu': 4.21.2 - '@rollup/rollup-linux-x64-gnu': 4.21.2 - '@rollup/rollup-linux-x64-musl': 4.21.2 - '@rollup/rollup-win32-arm64-msvc': 4.21.2 - '@rollup/rollup-win32-ia32-msvc': 4.21.2 - '@rollup/rollup-win32-x64-msvc': 4.21.2 + '@rollup/rollup-android-arm-eabi': 4.25.0 + '@rollup/rollup-android-arm64': 4.25.0 + '@rollup/rollup-darwin-arm64': 4.25.0 + '@rollup/rollup-darwin-x64': 4.25.0 + '@rollup/rollup-freebsd-arm64': 4.25.0 + '@rollup/rollup-freebsd-x64': 4.25.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.25.0 + '@rollup/rollup-linux-arm-musleabihf': 4.25.0 + '@rollup/rollup-linux-arm64-gnu': 4.25.0 + '@rollup/rollup-linux-arm64-musl': 4.25.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.25.0 + '@rollup/rollup-linux-riscv64-gnu': 4.25.0 + '@rollup/rollup-linux-s390x-gnu': 4.25.0 + '@rollup/rollup-linux-x64-gnu': 4.25.0 + '@rollup/rollup-linux-x64-musl': 4.25.0 + '@rollup/rollup-win32-arm64-msvc': 4.25.0 + '@rollup/rollup-win32-ia32-msvc': 4.25.0 + '@rollup/rollup-win32-x64-msvc': 4.25.0 fsevents: 2.3.3 /run-parallel@1.2.0: @@ -5588,35 +5558,28 @@ packages: /sax@1.2.4: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} - /section-matter@1.0.0: - resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} - engines: {node: '>=4'} - dependencies: - extend-shallow: 2.0.1 - kind-of: 6.0.3 - /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true + dev: true /semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} hasBin: true - /send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} + /send@1.1.0: + resolution: {integrity: sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==} + engines: {node: '>= 18'} dependencies: - debug: 2.6.9 - depd: 2.0.0 + debug: 4.3.7 destroy: 1.2.0 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 fresh: 0.5.2 http-errors: 2.0.0 - mime: 1.6.0 + mime-types: 2.1.35 ms: 2.1.3 on-finished: 2.4.1 range-parser: 1.2.1 @@ -5702,13 +5665,13 @@ packages: engines: {node: '>=8'} dev: true - /shiki@1.22.2: - resolution: {integrity: sha512-3IZau0NdGKXhH2bBlUk4w1IHNxPh6A5B2sUpyY+8utLu2j/h1QpFkAaUA1bAMxOWWGtTWcAh531vnS4NJKS/lA==} + /shiki@1.23.1: + resolution: {integrity: sha512-8kxV9TH4pXgdKGxNOkrSMydn1Xf6It8lsle0fiqxf7a1149K1WGtdOu3Zb91T5r1JpvRPxqxU3C2XdZZXQnrig==} dependencies: - '@shikijs/core': 1.22.2 - '@shikijs/engine-javascript': 1.22.2 - '@shikijs/engine-oniguruma': 1.22.2 - '@shikijs/types': 1.22.2 + '@shikijs/core': 1.23.1 + '@shikijs/engine-javascript': 1.23.1 + '@shikijs/engine-oniguruma': 1.23.1 + '@shikijs/types': 1.23.1 '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 @@ -5723,6 +5686,7 @@ packages: /signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + dev: true /simple-concat@1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} @@ -5820,7 +5784,7 @@ packages: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true - /starlight-links-validator@0.13.2(@astrojs/starlight@packages+starlight)(astro@4.16.10): + /starlight-links-validator@0.13.2(patch_hash=uzxiecwrihwm4whxdfjvzfhjsq)(@astrojs/starlight@packages+starlight)(astro@5.0.2): resolution: {integrity: sha512-BP6vf+fj91LnQXPnggWVhZXhcSF1x6SHof0GRg+IGgY0idSbIU7OHE2SvLggs2fRZ5SflVqpCTpK0pQcOmYcDg==} engines: {node: '>=18.14.1'} peerDependencies: @@ -5829,7 +5793,7 @@ packages: dependencies: '@astrojs/starlight': link:packages/starlight '@types/picomatch': 2.3.3 - astro: 4.16.10(@types/node@18.16.19)(typescript@5.6.3) + astro: 5.0.2(@types/node@18.16.19)(typescript@5.6.3) github-slugger: 2.0.0 hast-util-from-html: 2.0.1 hast-util-has-property: 3.0.0 @@ -5839,20 +5803,17 @@ packages: picomatch: 4.0.2 unist-util-visit: 5.0.0 dev: true + patched: true /statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} dev: false - /std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + /std-env@3.8.0: + resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} dev: true - /stdin-discarder@0.2.2: - resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} - engines: {node: '>=18'} - /stream-replace-string@2.0.0: resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} dev: false @@ -5872,6 +5833,15 @@ packages: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + /string-width@7.2.0: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} @@ -5908,40 +5878,25 @@ packages: dependencies: ansi-regex: 6.0.1 - /strip-bom-string@1.0.0: - resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} - engines: {node: '>=0.10.0'} - /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - /strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - dev: true - /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} dev: false - /strip-literal@2.0.0: - resolution: {integrity: sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==} - dependencies: - js-tokens: 8.0.3 - dev: true - - /style-to-object@0.4.1: - resolution: {integrity: sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw==} + /style-to-object@0.4.4: + resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} dependencies: inline-style-parser: 0.1.1 dev: false - /style-to-object@1.0.5: - resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==} + /style-to-object@1.0.8: + resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} dependencies: - inline-style-parser: 0.2.2 + inline-style-parser: 0.2.4 dev: false /sucrase@3.34.0: @@ -5993,11 +5948,11 @@ packages: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.1.1 - postcss: 8.4.47 - postcss-import: 15.1.0(postcss@8.4.47) - postcss-js: 4.0.1(postcss@8.4.47) - postcss-load-config: 4.0.2(postcss@8.4.47) - postcss-nested: 6.0.1(postcss@8.4.47) + postcss: 8.4.49 + postcss-import: 15.1.0(postcss@8.4.49) + postcss-js: 4.0.1(postcss@8.4.49) + postcss-load-config: 4.0.2(postcss@8.4.49) + postcss-nested: 6.0.1(postcss@8.4.49) postcss-selector-parser: 6.0.13 resolve: 1.22.8 sucrase: 3.34.0 @@ -6045,13 +6000,13 @@ packages: engines: {node: '>=8'} dev: true - /test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} + /test-exclude@7.0.1: + resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} + engines: {node: '>=18'} dependencies: '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 + glob: 10.4.5 + minimatch: 9.0.5 dev: true /thenify-all@1.6.0: @@ -6069,8 +6024,8 @@ packages: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} dev: false - /tinybench@2.6.0: - resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} + /tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} dev: true /tinyexec@0.3.1: @@ -6084,13 +6039,18 @@ packages: picomatch: 4.0.2 dev: true - /tinypool@0.8.4: - resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + /tinypool@1.0.1: + resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} + engines: {node: ^18.0.0 || >=20.0.0} + dev: true + + /tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} engines: {node: '>=14.0.0'} dev: true - /tinyspy@2.2.0: - resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} + /tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} dev: true @@ -6159,11 +6119,6 @@ packages: safe-buffer: 5.2.1 dev: false - /type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - dev: true - /type-fest@4.26.1: resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} engines: {node: '>=16'} @@ -6172,8 +6127,8 @@ packages: resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==} dev: true - /typescript-auto-import-cache@0.3.2: - resolution: {integrity: sha512-+laqe5SFL1vN62FPOOJSUDTZxtgsoOXjneYOXIpx5rQ4UMiN89NAtJLpqLqyebv9fgQ/IMeeTX+mQyRnwvJzvg==} + /typescript-auto-import-cache@0.3.5: + resolution: {integrity: sha512-fAIveQKsoYj55CozUiBoj4b/7WpN0i4o74wiGY5JVUEoD0XiqDk1tJqTEjgzL2/AizKQrXxyRosSebyDzBZKjw==} dependencies: semver: 7.6.3 dev: true @@ -6183,14 +6138,13 @@ packages: engines: {node: '>=14.17'} hasBin: true - /ufo@1.3.2: - resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} - dev: true - /uhyphen@0.2.0: resolution: {integrity: sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA==} dev: true + /ultrahtml@1.5.3: + resolution: {integrity: sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==} + /ultramatter@0.0.4: resolution: {integrity: sha512-1f/hO3mR+/Hgue4eInOF/Qm/wzDqwhYha4DxM0hre9YIUyso3fE2XtrAU6B4njLqTC8CM49EZaYgsVSa+dXHGw==} dev: false @@ -6277,6 +6231,7 @@ packages: browserslist: 4.24.2 escalade: 3.2.0 picocolors: 1.1.1 + dev: false /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -6299,18 +6254,19 @@ packages: '@types/unist': 3.0.0 vfile-message: 4.0.2 - /vite-node@1.6.0(@types/node@18.16.19): - resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} - engines: {node: ^18.0.0 || >=20.0.0} + /vite-node@2.1.6(@types/node@18.16.19): + resolution: {integrity: sha512-DBfJY0n9JUwnyLxPSSUmEePT21j8JZp/sR9n+/gBwQU6DcQOioPdb8/pibWfXForbirSagZCilseYIwaL3f95A==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true dependencies: cac: 6.7.14 debug: 4.3.7 + es-module-lexer: 1.5.4 pathe: 1.1.2 - picocolors: 1.1.1 - vite: 5.4.10(@types/node@18.16.19) + vite: 6.0.1(@types/node@18.16.19) transitivePeerDependencies: - '@types/node' + - jiti - less - lightningcss - sass @@ -6319,24 +6275,31 @@ packages: - sugarss - supports-color - terser + - tsx + - yaml dev: true - /vite@5.4.10(@types/node@18.16.19): - resolution: {integrity: sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==} - engines: {node: ^18.0.0 || >=20.0.0} + /vite@6.0.1(@types/node@18.16.19): + resolution: {integrity: sha512-Ldn6gorLGr4mCdFnmeAOLweJxZ34HjKnDm4HGo6P66IEqTxQb36VEdFJQENKxWjupNfoIjvRUnswjn1hpYEpjQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 + '@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.4.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 peerDependenciesMeta: '@types/node': optional: true + jiti: + optional: true less: optional: true lightningcss: @@ -6351,33 +6314,37 @@ packages: optional: true terser: optional: true + tsx: + optional: true + yaml: + optional: true dependencies: '@types/node': 18.16.19 - esbuild: 0.21.5 - postcss: 8.4.47 - rollup: 4.21.2 + esbuild: 0.24.0 + postcss: 8.4.49 + rollup: 4.25.0 optionalDependencies: fsevents: 2.3.3 - /vitefu@1.0.3(vite@5.4.10): - resolution: {integrity: sha512-iKKfOMBHob2WxEJbqbJjHAkmYgvFDPhuqrO82om83S8RLk+17FtyMBfcyeH8GqD0ihShtkMW/zzJgiA51hCNCQ==} + /vitefu@1.0.4(vite@6.0.1): + resolution: {integrity: sha512-y6zEE3PQf6uu/Mt6DTJ9ih+kyJLr4XcSgHR2zUkM8SWDhuixEJxfJ6CZGMHh1Ec3vPLoEA0IHU5oWzVqw8ulow==} peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0-beta.0 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 peerDependenciesMeta: vite: optional: true dependencies: - vite: 5.4.10(@types/node@18.16.19) + vite: 6.0.1(@types/node@18.16.19) - /vitest@1.6.0(@types/node@18.16.19): - resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} - engines: {node: ^18.0.0 || >=20.0.0} + /vitest@2.1.6(@types/node@18.16.19): + resolution: {integrity: sha512-isUCkvPL30J4c5O5hgONeFRsDmlw6kzFEdLQHLezmDdKQHy8Ke/B/dgdTMEgU0vm+iZ0TjW8GuK83DiahBoKWQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.6.0 - '@vitest/ui': 1.6.0 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 2.1.6 + '@vitest/ui': 2.1.6 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -6395,83 +6362,88 @@ packages: optional: true dependencies: '@types/node': 18.16.19 - '@vitest/expect': 1.6.0 - '@vitest/runner': 1.6.0 - '@vitest/snapshot': 1.6.0 - '@vitest/spy': 1.6.0 - '@vitest/utils': 1.6.0 - acorn-walk: 8.3.2 - chai: 4.4.1 + '@vitest/expect': 2.1.6 + '@vitest/mocker': 2.1.6(vite@6.0.1) + '@vitest/pretty-format': 2.1.6 + '@vitest/runner': 2.1.6 + '@vitest/snapshot': 2.1.6 + '@vitest/spy': 2.1.6 + '@vitest/utils': 2.1.6 + chai: 5.1.2 debug: 4.3.7 - execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.12 + expect-type: 1.1.0 + magic-string: 0.30.14 pathe: 1.1.2 - picocolors: 1.1.1 - std-env: 3.7.0 - strip-literal: 2.0.0 - tinybench: 2.6.0 - tinypool: 0.8.4 - vite: 5.4.10(@types/node@18.16.19) - vite-node: 1.6.0(@types/node@18.16.19) - why-is-node-running: 2.2.2 + std-env: 3.8.0 + tinybench: 2.9.0 + tinyexec: 0.3.1 + tinypool: 1.0.1 + tinyrainbow: 1.2.0 + vite: 6.0.1(@types/node@18.16.19) + vite-node: 2.1.6(@types/node@18.16.19) + why-is-node-running: 2.3.0 transitivePeerDependencies: + - jiti - less - lightningcss + - msw - sass - sass-embedded - stylus - sugarss - supports-color - terser + - tsx + - yaml dev: true - /volar-service-css@0.0.45(@volar/language-service@2.2.5): - resolution: {integrity: sha512-f+AlUI1+kESbcZSVaNJVAnK0c/9Da5StoxzPqA5/8VqUHJWNdubWNnwG5xpFVTfgh6pgTcey3UBhBfHytFaIOg==} + /volar-service-css@0.0.62(@volar/language-service@2.4.10): + resolution: {integrity: sha512-JwNyKsH3F8PuzZYuqPf+2e+4CTU8YoyUHEHVnoXNlrLe7wy9U3biomZ56llN69Ris7TTy/+DEX41yVxQpM4qvg==} peerDependencies: - '@volar/language-service': ~2.2.3 + '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true dependencies: - '@volar/language-service': 2.2.5 - vscode-css-languageservice: 6.2.14 - vscode-languageserver-textdocument: 1.0.11 + '@volar/language-service': 2.4.10 + vscode-css-languageservice: 6.3.2 + vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 dev: true - /volar-service-emmet@0.0.45(@volar/language-service@2.2.5): - resolution: {integrity: sha512-9nLXSDkR1vA/3fQkFEsSXAu3XovQxOpTkVG2jilQgfek/K1ZLkaA/WMhN/TtmPmQg4NxE9Ni6mA5udBQ5gVXIA==} + /volar-service-emmet@0.0.62(@volar/language-service@2.4.10): + resolution: {integrity: sha512-U4dxWDBWz7Pi4plpbXf4J4Z/ss6kBO3TYrACxWNsE29abu75QzVS0paxDDhI6bhqpbDFXlpsDhZ9aXVFpnfGRQ==} peerDependencies: - '@volar/language-service': ~2.2.3 + '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true dependencies: '@emmetio/css-parser': 0.4.0 '@emmetio/html-matcher': 1.3.0 - '@volar/language-service': 2.2.5 + '@volar/language-service': 2.4.10 '@vscode/emmet-helper': 2.9.3 + vscode-uri: 3.0.8 dev: true - /volar-service-html@0.0.45(@volar/language-service@2.2.5): - resolution: {integrity: sha512-tLTJqfy1v5C4nmeAsfekFIKPl4r4qDMyL0L9MWywr/EApZzPCsbeUGxCqdzxSMC2q7PMCfX2i167txDo+J0LVA==} + /volar-service-html@0.0.62(@volar/language-service@2.4.10): + resolution: {integrity: sha512-Zw01aJsZRh4GTGUjveyfEzEqpULQUdQH79KNEiKVYHZyuGtdBRYCHlrus1sueSNMxwwkuF5WnOHfvBzafs8yyQ==} peerDependencies: - '@volar/language-service': ~2.2.3 + '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true dependencies: - '@volar/language-service': 2.2.5 - vscode-html-languageservice: /@johnsoncodehk/vscode-html-languageservice@5.2.0-34a5462 - vscode-languageserver-textdocument: 1.0.11 + '@volar/language-service': 2.4.10 + vscode-html-languageservice: 5.3.1 + vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 dev: true - /volar-service-prettier@0.0.45(@volar/language-service@2.2.5)(prettier@3.3.3): - resolution: {integrity: sha512-+mBS2EsDgp/kunKEBnHvhBwIQm5v2ahw4NKpKdg4sTpXy3UxqHt+Fq/wRYQ7Z8LlNVNRVfp75ThjM+w2zaZBAw==} + /volar-service-prettier@0.0.62(@volar/language-service@2.4.10)(prettier@3.3.3): + resolution: {integrity: sha512-h2yk1RqRTE+vkYZaI9KYuwpDfOQRrTEMvoHol0yW4GFKc75wWQRrb5n/5abDrzMPrkQbSip8JH2AXbvrRtYh4w==} peerDependencies: - '@volar/language-service': ~2.2.3 + '@volar/language-service': ~2.4.0 prettier: ^2.2 || ^3.0 peerDependenciesMeta: '@volar/language-service': @@ -6479,61 +6451,99 @@ packages: prettier: optional: true dependencies: - '@volar/language-service': 2.2.5 + '@volar/language-service': 2.4.10 prettier: 3.3.3 vscode-uri: 3.0.8 dev: true - /volar-service-typescript-twoslash-queries@0.0.45(@volar/language-service@2.2.5): - resolution: {integrity: sha512-KrPUUvKggZgV9mrDpstCzmf20irgv0ooMv+FGDzIIQUkya+d2+nSS8Mx2h9FvsYgLccUVw5jU3Rhwhd3pv/7qg==} + /volar-service-typescript-twoslash-queries@0.0.62(@volar/language-service@2.4.10): + resolution: {integrity: sha512-KxFt4zydyJYYI0kFAcWPTh4u0Ha36TASPZkAnNY784GtgajerUqM80nX/W1d0wVhmcOFfAxkVsf/Ed+tiYU7ng==} peerDependencies: - '@volar/language-service': ~2.2.3 + '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true dependencies: - '@volar/language-service': 2.2.5 + '@volar/language-service': 2.4.10 + vscode-uri: 3.0.8 dev: true - /volar-service-typescript@0.0.45(@volar/language-service@2.2.5): - resolution: {integrity: sha512-i/mMIIAMastJ2kgPo3qvX0Rrl7NyxhIYZ0ug/B4ambZcLPI1vzBgS2fmvyWX3jhBYHh8NmbAotFj+0Y9JtN47A==} + /volar-service-typescript@0.0.62(@volar/language-service@2.4.10): + resolution: {integrity: sha512-p7MPi71q7KOsH0eAbZwPBiKPp9B2+qrdHAd6VY5oTo9BUXatsOAdakTm9Yf0DUj6uWBAaOT01BSeVOPwucMV1g==} peerDependencies: - '@volar/language-service': ~2.2.3 + '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true dependencies: - '@volar/language-service': 2.2.5 + '@volar/language-service': 2.4.10 path-browserify: 1.0.1 semver: 7.6.3 - typescript-auto-import-cache: 0.3.2 - vscode-languageserver-textdocument: 1.0.11 + typescript-auto-import-cache: 0.3.5 + vscode-languageserver-textdocument: 1.0.12 vscode-nls: 5.2.0 + vscode-uri: 3.0.8 dev: true - /vscode-css-languageservice@6.2.14: - resolution: {integrity: sha512-5UPQ9Y1sUTnuMyaMBpO7LrBkqjhEJb5eAwdUlDp+Uez8lry+Tspnk3+3p2qWS4LlNsr4p3v9WkZxUf1ltgFpgw==} + /volar-service-yaml@0.0.62(@volar/language-service@2.4.10): + resolution: {integrity: sha512-k7gvv7sk3wa+nGll3MaSKyjwQsJjIGCHFjVkl3wjaSP2nouKyn9aokGmqjrl39mi88Oy49giog2GkZH526wjig==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + dependencies: + '@volar/language-service': 2.4.10 + vscode-uri: 3.0.8 + yaml-language-server: 1.15.0 + dev: true + + /vscode-css-languageservice@6.3.2: + resolution: {integrity: sha512-GEpPxrUTAeXWdZWHev1OJU9lz2Q2/PPBxQ2TIRmLGvQiH3WZbqaNoute0n0ewxlgtjzTW3AKZT+NHySk5Rf4Eg==} dependencies: '@vscode/l10n': 0.0.18 - vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 vscode-uri: 3.0.8 dev: true - /vscode-html-languageservice@5.2.0: - resolution: {integrity: sha512-cdNMhyw57/SQzgUUGSIMQ66jikqEN6nBNyhx5YuOyj9310+eY9zw8Q0cXpiKzDX8aHYFewQEXRnigl06j/TVwQ==} + /vscode-html-languageservice@5.3.1: + resolution: {integrity: sha512-ysUh4hFeW/WOWz/TO9gm08xigiSsV/FOAZ+DolgJfeLftna54YdmZ4A+lIn46RbdO3/Qv5QHTn1ZGqmrXQhZyA==} dependencies: '@vscode/l10n': 0.0.18 - vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 vscode-uri: 3.0.8 dev: true + /vscode-json-languageservice@4.1.8: + resolution: {integrity: sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==} + engines: {npm: '>=7.0.0'} + dependencies: + jsonc-parser: 3.3.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-nls: 5.2.0 + vscode-uri: 3.0.8 + dev: true + + /vscode-jsonrpc@6.0.0: + resolution: {integrity: sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==} + engines: {node: '>=8.0.0 || >=10.0.0'} + dev: true + /vscode-jsonrpc@8.2.0: resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} engines: {node: '>=14.0.0'} dev: true + /vscode-languageserver-protocol@3.16.0: + resolution: {integrity: sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==} + dependencies: + vscode-jsonrpc: 6.0.0 + vscode-languageserver-types: 3.16.0 + dev: true + /vscode-languageserver-protocol@3.17.5: resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} dependencies: @@ -6541,14 +6551,25 @@ packages: vscode-languageserver-types: 3.17.5 dev: true - /vscode-languageserver-textdocument@1.0.11: - resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} + /vscode-languageserver-textdocument@1.0.12: + resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + dev: true + + /vscode-languageserver-types@3.16.0: + resolution: {integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==} dev: true /vscode-languageserver-types@3.17.5: resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} dev: true + /vscode-languageserver@7.0.0: + resolution: {integrity: sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==} + hasBin: true + dependencies: + vscode-languageserver-protocol: 3.16.0 + dev: true + /vscode-languageserver@9.0.1: resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} hasBin: true @@ -6607,8 +6628,8 @@ packages: isexe: 2.0.0 dev: true - /why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + /why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} hasBin: true dependencies: @@ -6631,6 +6652,15 @@ packages: strip-ansi: 6.0.1 dev: true + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + /wrap-ansi@9.0.0: resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} engines: {node: '>=18'} @@ -6660,8 +6690,8 @@ packages: engines: {node: '>=8.0'} dev: true - /xxhash-wasm@1.0.2: - resolution: {integrity: sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==} + /xxhash-wasm@1.1.0: + resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==} /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} @@ -6672,12 +6702,33 @@ packages: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} dev: true - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + /yaml-language-server@1.15.0: + resolution: {integrity: sha512-N47AqBDCMQmh6mBLmI6oqxryHRzi33aPFPsJhYy3VTUGCdLHYjGh4FZzpUjRlphaADBBkDmnkM/++KNIOHi5Rw==} + hasBin: true + dependencies: + ajv: 8.17.1 + lodash: 4.17.21 + request-light: 0.5.8 + vscode-json-languageservice: 4.1.8 + vscode-languageserver: 7.0.0 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-nls: 5.2.0 + vscode-uri: 3.0.8 + yaml: 2.2.2 + optionalDependencies: + prettier: 2.8.7 + dev: true - /yaml@2.3.4: - resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} + /yaml@2.2.2: + resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==} engines: {node: '>= 14'} + dev: true + + /yaml@2.6.1: + resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} + engines: {node: '>= 14'} + hasBin: true /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} @@ -6705,6 +6756,16 @@ packages: resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} engines: {node: '>=12.20'} + /yocto-spinner@0.1.1: + resolution: {integrity: sha512-vb6yztJdmbX9BwiR2NlKim7roGM5xFFhiTO6UstNiKBnh8NT6uFNjpXYC6DWTnLgRRyHh2nDNEM8kLHSRLw4kg==} + engines: {node: '>=18.19'} + dependencies: + yoctocolors: 2.1.1 + + /yoctocolors@2.1.1: + resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} + engines: {node: '>=18'} + /zod-to-json-schema@3.23.5(zod@3.23.8): resolution: {integrity: sha512-5wlSS0bXfF/BrL4jPAbz9da5hDlDptdEppYfe+x4eIJ7jioqKG9uUxOwPzqof09u/XeVdrgFu29lZi+8XNDJtA==} peerDependencies: diff --git a/tsconfig.json b/tsconfig.json index 38ec1b74..a05a719d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,7 @@ { "extends": "astro/tsconfigs/strictest", - "exclude": ["**/dist/**", "**/__coverage__/**"], + "include": ["docs/.astro/types.d.ts", "**/*"], + "exclude": ["**/dist/**", "**/__coverage__/**", "**/build/**"], "compilerOptions": { "jsx": "preserve", "checkJs": true |