diff --git a/.changeset/angry-swans-fry.md b/.changeset/angry-swans-fry.md new file mode 100644 index 000000000000..ce5c513d5fc3 --- /dev/null +++ b/.changeset/angry-swans-fry.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Redesign Dev Overlay main screen to show more information, such as the coolest integrations, your current Astro version and more. diff --git a/.changeset/beige-jokes-report.md b/.changeset/beige-jokes-report.md new file mode 100644 index 000000000000..ecb97328b6c1 --- /dev/null +++ b/.changeset/beige-jokes-report.md @@ -0,0 +1,9 @@ +--- +'@astrojs/mdx': major +'@astrojs/markdown-remark': major +'astro': major +--- + +Updates the unified, remark, and rehype dependencies to latest. Make sure to update your custom remark and rehype plugins as well to be compatible with the latest versions. + +**Potentially breaking change:** The default value of `markdown.remarkRehype.footnoteBackLabel` is changed from `"Back to content"` to `"Back to reference 1"`. See the `mdast-util-to-hast` [commit](https://github.com/syntax-tree/mdast-util-to-hast/commit/56c88e45690be138fad9f0bf367b939d09816863) for more information. diff --git a/.changeset/big-cooks-notice.md b/.changeset/big-cooks-notice.md new file mode 100644 index 000000000000..9a0586c73ad4 --- /dev/null +++ b/.changeset/big-cooks-notice.md @@ -0,0 +1,6 @@ +--- +'@astrojs/vercel': major +'@astrojs/node': major +--- + +The internals of the integration have been updated to support Astro 4.0. Make sure to upgrade your Astro version as Astro 3.0 is no longer supported. diff --git a/.changeset/brown-jars-lick.md b/.changeset/brown-jars-lick.md new file mode 100644 index 000000000000..0d824e445f47 --- /dev/null +++ b/.changeset/brown-jars-lick.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fixes an issue where links with the same pathname as the current page, but different search params, were not prefetched. diff --git a/.changeset/clever-beds-notice.md b/.changeset/clever-beds-notice.md new file mode 100644 index 000000000000..6be65bde1157 --- /dev/null +++ b/.changeset/clever-beds-notice.md @@ -0,0 +1,9 @@ +--- +'astro': major +--- + +Removes support for returning simple objects from endpoints (deprecated since Astro 3.0). You should return a `Response` instead. + +`ResponseWithEncoding` is also removed. You can refactor the code to return a response with an array buffer instead, which is encoding agnostic. + +The types for middlewares have also been revised. To type a middleware function, you should now use `MiddlewareHandler` instead of `MiddlewareResponseHandler`. If you used `defineMiddleware()` to type the function, no changes are needed. diff --git a/.changeset/famous-eels-trade.md b/.changeset/famous-eels-trade.md new file mode 100644 index 000000000000..2c3d24898746 --- /dev/null +++ b/.changeset/famous-eels-trade.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Ensure the dev-overlay-window is anchored to the bottom diff --git a/.changeset/giant-snails-perform.md b/.changeset/giant-snails-perform.md new file mode 100644 index 000000000000..e44a0b73060b --- /dev/null +++ b/.changeset/giant-snails-perform.md @@ -0,0 +1,5 @@ +--- +'@astrojs/vercel': major +--- + +Removes deprecated `analytics` option. Use the `webAnalytics` option instead. diff --git a/.changeset/grumpy-seas-switch.md b/.changeset/grumpy-seas-switch.md new file mode 100644 index 000000000000..85cf0e22fe56 --- /dev/null +++ b/.changeset/grumpy-seas-switch.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Improve high contrast mode with the Dev Overlay diff --git a/.changeset/khaki-fans-sell.md b/.changeset/khaki-fans-sell.md new file mode 100644 index 000000000000..f6d84bdaedac --- /dev/null +++ b/.changeset/khaki-fans-sell.md @@ -0,0 +1,5 @@ +--- +'@astrojs/markdown-remark': patch +--- + +Fixes `RemarkRehype` type's `handler` and `handlers` properties diff --git a/.changeset/odd-rivers-happen.md b/.changeset/odd-rivers-happen.md new file mode 100644 index 000000000000..2490084bc234 --- /dev/null +++ b/.changeset/odd-rivers-happen.md @@ -0,0 +1,5 @@ +--- +'astro': major +--- + +Removes the opt-in `handleForms` property for ``. Form submissions are now handled by default and can be disabled by setting `data-astro-reload` on relevant `
` elements. diff --git a/.changeset/plenty-candles-help.md b/.changeset/plenty-candles-help.md new file mode 100644 index 000000000000..e7ddf8cb4fcb --- /dev/null +++ b/.changeset/plenty-candles-help.md @@ -0,0 +1,21 @@ +--- +'astro': major +--- + +Removes support for Shiki custom language's `path` property. The language JSON file should be imported and passed to the option instead. + +```diff +// astro.config.js ++ import customLang from './custom.tmLanguage.json' + +export default defineConfig({ + markdown: { + shikiConfig: { + langs: [ +- { path: './custom.tmLanguage.json' }, ++ customLang, + ], + }, + }, +}) +``` diff --git a/.changeset/pre.json b/.changeset/pre.json index af2e97775afe..08a455c2fe4a 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -26,7 +26,27 @@ "@astrojs/internal-helpers": "0.2.1", "@astrojs/markdown-remark": "3.5.0", "@astrojs/telemetry": "3.0.4", - "@astrojs/underscore-redirects": "0.3.3" + "@astrojs/underscore-redirects": "0.3.3", + "@astrojs/upgrade": "0.0.1" }, - "changesets": [] + "changesets": [ + "angry-swans-fry", + "beige-jokes-report", + "brown-jars-lick", + "calm-baboons-watch", + "clever-beds-notice", + "giant-snails-perform", + "khaki-fans-sell", + "light-ties-poke", + "modern-candles-sip", + "plenty-candles-help", + "rude-hairs-whisper", + "shiny-trees-sip", + "short-deers-whisper", + "slow-hornets-try", + "sour-games-burn", + "tasty-dryers-bathe", + "wicked-sloths-develop", + "wild-apricots-rescue" + ] } diff --git a/.changeset/rude-hairs-whisper.md b/.changeset/rude-hairs-whisper.md new file mode 100644 index 000000000000..a9d7baa4d445 --- /dev/null +++ b/.changeset/rude-hairs-whisper.md @@ -0,0 +1,5 @@ +--- +'astro': minor +--- + +Renames the `entryPoint` property of the `injectRoute` integrations API to `entrypoint` for consistency. A warning will be shown prompting you to update your code when using the old name. diff --git a/.changeset/sharp-starfishes-compete.md b/.changeset/sharp-starfishes-compete.md new file mode 100644 index 000000000000..0eb4f413bcda --- /dev/null +++ b/.changeset/sharp-starfishes-compete.md @@ -0,0 +1,20 @@ +--- +'astro': major +--- + +This change only affects maintainers of third-party adapters. In the Integration API, the `app.render()` method of the `App` class has been simplified. + +Instead of two optional arguments, it now takes a single optional argument that is an object with two optional properties: `routeData` and `locals`. +```diff + app.render(request) + +- app.render(request, routeData) ++ app.render(request, { routeData }) + +- app.render(request, routeData, locals) ++ app.render(request, { routeData, locals }) + +- app.render(request, undefined, locals) ++ app.render(request, { locals }) +``` +The current signature is deprecated but will continue to function until next major version. diff --git a/.changeset/shiny-trees-sip.md b/.changeset/shiny-trees-sip.md new file mode 100644 index 000000000000..991c7aa92825 --- /dev/null +++ b/.changeset/shiny-trees-sip.md @@ -0,0 +1,5 @@ +--- +'@astrojs/markdown-remark': major +--- + +Removes deprecated APIs. All Astro packages had been refactored to not use these APIs. diff --git a/.changeset/short-deers-whisper.md b/.changeset/short-deers-whisper.md new file mode 100644 index 000000000000..03e0f4480676 --- /dev/null +++ b/.changeset/short-deers-whisper.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Removes vendored Vite's `importMeta.d.ts` file in favour of Vite 5's new `vite/types/import-meta.d.ts` export diff --git a/.changeset/slow-hornets-try.md b/.changeset/slow-hornets-try.md new file mode 100644 index 000000000000..970e7f49105b --- /dev/null +++ b/.changeset/slow-hornets-try.md @@ -0,0 +1,5 @@ +--- +'@astrojs/rss': major +--- + +Removes the `drafts` option as the feature is deprecated in Astro 3.0 diff --git a/.changeset/sour-games-burn.md b/.changeset/sour-games-burn.md new file mode 100644 index 000000000000..f0d596603ddd --- /dev/null +++ b/.changeset/sour-games-burn.md @@ -0,0 +1,13 @@ +--- +"astro": patch +--- + +Refactors virtual modules exports. This should not break your project unless you import Astro's internal modules, including: + +- `astro/middleware/namespace` +- `astro/transitions` +- `astro/transitions/router` +- `astro/transitions/events` +- `astro/transitions/types` +- `astro/prefetch` +- `astro/i18n` diff --git a/.changeset/spicy-starfishes-shake.md b/.changeset/spicy-starfishes-shake.md new file mode 100644 index 000000000000..a283f4d37911 --- /dev/null +++ b/.changeset/spicy-starfishes-shake.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Ensure overlay x-ray z-index is higher than the island diff --git a/.changeset/tasty-dryers-bathe.md b/.changeset/tasty-dryers-bathe.md new file mode 100644 index 000000000000..438597e13b04 --- /dev/null +++ b/.changeset/tasty-dryers-bathe.md @@ -0,0 +1,27 @@ +--- +'@astrojs/upgrade': minor +--- + +Initial release! + +`@astrojs/upgrade` is an automated command-line tool for upgrading Astro and your official Astro integrations together. + +Inside of your existing `astro` project, run the following command to install the `latest` version of your integrations. + +**With NPM:** + +```bash +npx @astrojs/upgrade +``` + +**With Yarn:** + +```bash +yarn dlx @astrojs/upgrade +``` + +**With PNPM:** + +```bash +pnpm dlx @astrojs/upgrade +``` diff --git a/.changeset/tricky-dragons-explain.md b/.changeset/tricky-dragons-explain.md new file mode 100644 index 000000000000..78ecb1e95752 --- /dev/null +++ b/.changeset/tricky-dragons-explain.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fixes a number of small user experience bugs with the dev overlay diff --git a/.changeset/weak-wolves-bow.md b/.changeset/weak-wolves-bow.md new file mode 100644 index 000000000000..484544cd12b7 --- /dev/null +++ b/.changeset/weak-wolves-bow.md @@ -0,0 +1,5 @@ +--- +'astro': major +--- + +Removes deprecated `app.match()` option, `matchNotFound` diff --git a/.changeset/wicked-sloths-develop.md b/.changeset/wicked-sloths-develop.md new file mode 100644 index 000000000000..806e0270728f --- /dev/null +++ b/.changeset/wicked-sloths-develop.md @@ -0,0 +1,11 @@ +--- +'astro': major +--- + +Removes deprecated features from Astro 3.0 + +- Adapters are now required to pass `supportedAstroFeatures` to specify a list of features they support. +- The `build.split` and `build.excludeMiddleware` options are removed. Use `functionPerRoute` and `edgeMiddleware` from adapters instead. +- The `markdown.drafts` option and draft feature is removed. Use content collections instead. +- Lowercase endpoint names are no longer supported. Use uppercase endpoint names instead. +- `getHeaders()` exported from markdown files is removed. Use `getHeadings()` instead. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index cea4f61e20fd..05a07e125484 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,8 +2,7 @@ We welcome contributions of any size and skill level. As an open source project, we believe in giving back to our contributors and are happy to help with guidance on PRs, technical writing, and turning any feature idea into a reality. -> **Tip for new contributors:** -> Take a look at [https://github.com/firstcontributions/first-contributions](https://github.com/firstcontributions/first-contributions) for helpful information on contributing +> [!Tip] > **For new contributors:** Take a look at [https://github.com/firstcontributions/first-contributions](https://github.com/firstcontributions/first-contributions) for helpful information on contributing ## Quick Guide @@ -46,7 +45,8 @@ To get started, create a codespace for this repository by clicking this 👇 Your new codespace will open in a web-based version of Visual Studio Code. All development dependencies will be preinstalled, and the tests will run automatically ensuring you've got a green base from which to start working. -**Note**: Dev containers is now an open spec which is supported by [GitHub Codespaces](https://github.com/codespaces) and [other supporting tools](https://containers.dev/supporting). +> [!Note] +> Dev containers is now an open spec which is supported by [GitHub Codespaces](https://github.com/codespaces) and [other supporting tools](https://containers.dev/supporting). ### Development @@ -187,7 +187,7 @@ Understanding in which environment code runs, and at which stage in the process, Active Astro development happens on the [`main`](https://github.com/withastro/astro/tree/main) branch. `main` always reflects the latest code. -> **Note:** +> [!Note] > During certain periods, we put `main` into a [**prerelease**](https://github.com/changesets/changesets/blob/main/docs/prereleases.md#prereleases) state. Read more about [Releasing Astro](#releasing-astro). ### `latest` @@ -198,7 +198,8 @@ By default, `create-astro` and [astro.new](https://astro.new) point to this bran ## Releasing Astro -_Note: Only [core maintainers (L3+)](https://github.com/withastro/.github/blob/main/GOVERNANCE.md#level-3-l3---core) can release new versions of Astro._ +> [!Note] +> Only [core maintainers (L3+)](https://github.com/withastro/.github/blob/main/GOVERNANCE.md#level-3-l3---core) can release new versions of Astro. The repo is set up with automatic releases, using the changeset GitHub action & bot. diff --git a/benchmark/packages/timer/package.json b/benchmark/packages/timer/package.json index 8ac03985492e..a4a3b8df1b81 100644 --- a/benchmark/packages/timer/package.json +++ b/benchmark/packages/timer/package.json @@ -29,7 +29,7 @@ "astro": "workspace:*" }, "devDependencies": { - "@types/server-destroy": "^1.0.1", + "@types/server-destroy": "^1.0.3", "astro": "workspace:*", "astro-scripts": "workspace:*" } diff --git a/benchmark/packages/timer/src/index.ts b/benchmark/packages/timer/src/index.ts index 49edcb5e86a5..2ea41af6624d 100644 --- a/benchmark/packages/timer/src/index.ts +++ b/benchmark/packages/timer/src/index.ts @@ -6,6 +6,7 @@ export function getAdapter(): AstroAdapter { serverEntrypoint: '@benchmark/timer/server.js', previewEntrypoint: '@benchmark/timer/preview.js', exports: ['handler'], + supportedAstroFeatures: {}, }; } diff --git a/examples/basics/package.json b/examples/basics/package.json index 1be44bed6e74..37e88b2eaad9 100644 --- a/examples/basics/package.json +++ b/examples/basics/package.json @@ -11,6 +11,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^3.5.5" + "astro": "^4.0.0-beta.1" } } diff --git a/examples/blog/package.json b/examples/blog/package.json index afee1f0281c6..de7cadfaf80f 100644 --- a/examples/blog/package.json +++ b/examples/blog/package.json @@ -11,9 +11,9 @@ "astro": "astro" }, "dependencies": { - "@astrojs/mdx": "^1.1.5", - "@astrojs/rss": "^3.0.0", + "@astrojs/mdx": "^2.0.0-beta.0", + "@astrojs/rss": "^4.0.0-beta.0", "@astrojs/sitemap": "^3.0.3", - "astro": "^3.5.5" + "astro": "^4.0.0-beta.1" } } diff --git a/examples/component/package.json b/examples/component/package.json index 2c781217268b..2a0a0f28dba7 100644 --- a/examples/component/package.json +++ b/examples/component/package.json @@ -15,7 +15,7 @@ ], "scripts": {}, "devDependencies": { - "astro": "^3.5.5" + "astro": "^4.0.0-beta.1" }, "peerDependencies": { "astro": "^3.0.0" diff --git a/examples/framework-alpine/package.json b/examples/framework-alpine/package.json index 88c5f32295e4..fb949bba7e01 100644 --- a/examples/framework-alpine/package.json +++ b/examples/framework-alpine/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@astrojs/alpinejs": "^0.3.1", - "@types/alpinejs": "^3.7.2", - "alpinejs": "^3.12.3", - "astro": "^3.5.5" + "@types/alpinejs": "^3.13.5", + "alpinejs": "^3.13.3", + "astro": "^4.0.0-beta.1" } } diff --git a/examples/framework-lit/package.json b/examples/framework-lit/package.json index 97f9a4dcb29c..1b40e873486a 100644 --- a/examples/framework-lit/package.json +++ b/examples/framework-lit/package.json @@ -13,7 +13,7 @@ "dependencies": { "@astrojs/lit": "^3.0.3", "@webcomponents/template-shadowroot": "^0.2.1", - "astro": "^3.5.5", + "astro": "^4.0.0-beta.1", "lit": "^2.8.0" } } diff --git a/examples/framework-multiple/package.json b/examples/framework-multiple/package.json index af251b7d8796..0e26aeec00c7 100644 --- a/examples/framework-multiple/package.json +++ b/examples/framework-multiple/package.json @@ -12,16 +12,16 @@ }, "dependencies": { "@astrojs/preact": "^3.0.1", - "@astrojs/react": "^3.0.5", + "@astrojs/react": "^3.0.7-beta.0", "@astrojs/solid-js": "^3.0.2", - "@astrojs/svelte": "^4.0.4", - "@astrojs/vue": "^3.0.4", - "astro": "^3.5.5", - "preact": "^10.17.1", + "@astrojs/svelte": "^5.0.0-beta.0", + "@astrojs/vue": "^4.0.0-beta.0", + "astro": "^4.0.0-beta.1", + "preact": "^10.19.2", "react": "^18.2.0", "react-dom": "^18.2.0", - "solid-js": "^1.7.11", - "svelte": "^4.2.0", - "vue": "^3.3.4" + "solid-js": "^1.8.5", + "svelte": "^4.2.5", + "vue": "^3.3.8" } } diff --git a/examples/framework-preact/package.json b/examples/framework-preact/package.json index c8059410c45e..ce44cfaada21 100644 --- a/examples/framework-preact/package.json +++ b/examples/framework-preact/package.json @@ -13,7 +13,7 @@ "dependencies": { "@astrojs/preact": "^3.0.1", "@preact/signals": "^1.2.1", - "astro": "^3.5.5", - "preact": "^10.17.1" + "astro": "^4.0.0-beta.1", + "preact": "^10.19.2" } } diff --git a/examples/framework-react/package.json b/examples/framework-react/package.json index 79b09fc45d4c..7f5102910119 100644 --- a/examples/framework-react/package.json +++ b/examples/framework-react/package.json @@ -11,10 +11,10 @@ "astro": "astro" }, "dependencies": { - "@astrojs/react": "^3.0.5", - "@types/react": "^18.2.21", - "@types/react-dom": "^18.2.7", - "astro": "^3.5.5", + "@astrojs/react": "^3.0.7-beta.0", + "@types/react": "^18.2.37", + "@types/react-dom": "^18.2.15", + "astro": "^4.0.0-beta.1", "react": "^18.2.0", "react-dom": "^18.2.0" } diff --git a/examples/framework-solid/package.json b/examples/framework-solid/package.json index 8b1a9a3157f0..ea5bd5f11720 100644 --- a/examples/framework-solid/package.json +++ b/examples/framework-solid/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@astrojs/solid-js": "^3.0.2", - "astro": "^3.5.5", - "solid-js": "^1.7.11" + "astro": "^4.0.0-beta.1", + "solid-js": "^1.8.5" } } diff --git a/examples/framework-svelte/package.json b/examples/framework-svelte/package.json index 3badefefbdd6..68e6d2078ac1 100644 --- a/examples/framework-svelte/package.json +++ b/examples/framework-svelte/package.json @@ -11,8 +11,8 @@ "astro": "astro" }, "dependencies": { - "@astrojs/svelte": "^4.0.4", - "astro": "^3.5.5", - "svelte": "^4.2.0" + "@astrojs/svelte": "^5.0.0-beta.0", + "astro": "^4.0.0-beta.1", + "svelte": "^4.2.5" } } diff --git a/examples/framework-vue/package.json b/examples/framework-vue/package.json index 99a6b678f005..d279a3644d12 100644 --- a/examples/framework-vue/package.json +++ b/examples/framework-vue/package.json @@ -11,8 +11,8 @@ "astro": "astro" }, "dependencies": { - "@astrojs/vue": "^3.0.4", - "astro": "^3.5.5", - "vue": "^3.3.4" + "@astrojs/vue": "^4.0.0-beta.0", + "astro": "^4.0.0-beta.1", + "vue": "^3.3.8" } } diff --git a/examples/hackernews/package.json b/examples/hackernews/package.json index fa19009ab647..5c1ad557f067 100644 --- a/examples/hackernews/package.json +++ b/examples/hackernews/package.json @@ -11,7 +11,7 @@ "astro": "astro" }, "dependencies": { - "@astrojs/node": "^6.0.4", - "astro": "^3.5.5" + "@astrojs/node": "^7.0.0-beta.0", + "astro": "^4.0.0-beta.1" } } diff --git a/examples/integration/package.json b/examples/integration/package.json index 262ba7aeb1cb..c9034bcae9cb 100644 --- a/examples/integration/package.json +++ b/examples/integration/package.json @@ -15,7 +15,7 @@ ], "scripts": {}, "devDependencies": { - "astro": "^3.5.5" + "astro": "^4.0.0-beta.1" }, "peerDependencies": { "astro": "^3.0.0" diff --git a/examples/middleware/package.json b/examples/middleware/package.json index 7c3da323eecd..a0dafd56967f 100644 --- a/examples/middleware/package.json +++ b/examples/middleware/package.json @@ -12,8 +12,8 @@ "server": "node dist/server/entry.mjs" }, "dependencies": { - "@astrojs/node": "^6.0.4", - "astro": "^3.5.5", + "@astrojs/node": "^7.0.0-beta.0", + "astro": "^4.0.0-beta.1", "html-minifier": "^4.0.0" } } diff --git a/examples/minimal/package.json b/examples/minimal/package.json index 9577132a2dc1..2b02ba774f25 100644 --- a/examples/minimal/package.json +++ b/examples/minimal/package.json @@ -11,6 +11,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^3.5.5" + "astro": "^4.0.0-beta.1" } } diff --git a/examples/non-html-pages/package.json b/examples/non-html-pages/package.json index 9b8a6e24814d..b6d645bbe407 100644 --- a/examples/non-html-pages/package.json +++ b/examples/non-html-pages/package.json @@ -11,6 +11,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^3.5.5" + "astro": "^4.0.0-beta.1" } } diff --git a/examples/portfolio/package.json b/examples/portfolio/package.json index 375bb8ff5bfd..2030139bb992 100644 --- a/examples/portfolio/package.json +++ b/examples/portfolio/package.json @@ -11,6 +11,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^3.5.5" + "astro": "^4.0.0-beta.1" } } diff --git a/examples/ssr/package.json b/examples/ssr/package.json index 04c0d698420e..bccc8956276f 100644 --- a/examples/ssr/package.json +++ b/examples/ssr/package.json @@ -12,9 +12,9 @@ "server": "node dist/server/entry.mjs" }, "dependencies": { - "@astrojs/node": "^6.0.4", - "@astrojs/svelte": "^4.0.4", - "astro": "^3.5.5", - "svelte": "^4.2.0" + "@astrojs/node": "^7.0.0-beta.0", + "@astrojs/svelte": "^5.0.0-beta.0", + "astro": "^4.0.0-beta.1", + "svelte": "^4.2.5" } } diff --git a/examples/view-transitions/package.json b/examples/view-transitions/package.json index b2904039ce43..2be6d3945183 100644 --- a/examples/view-transitions/package.json +++ b/examples/view-transitions/package.json @@ -10,8 +10,8 @@ "astro": "astro" }, "devDependencies": { - "@astrojs/tailwind": "^5.0.2", - "@astrojs/node": "^6.0.4", - "astro": "^3.5.5" + "@astrojs/tailwind": "^6.0.0-beta.0", + "@astrojs/node": "^7.0.0-beta.0", + "astro": "^4.0.0-beta.1" } } diff --git a/examples/with-markdoc/package.json b/examples/with-markdoc/package.json index 8447aa0cff28..b1e18647acec 100644 --- a/examples/with-markdoc/package.json +++ b/examples/with-markdoc/package.json @@ -11,7 +11,7 @@ "astro": "astro" }, "dependencies": { - "@astrojs/markdoc": "^0.7.2", - "astro": "^3.5.5" + "@astrojs/markdoc": "^1.0.0-beta.0", + "astro": "^4.0.0-beta.1" } } diff --git a/examples/with-markdown-plugins/package.json b/examples/with-markdown-plugins/package.json index ad51e3f987f1..efb99a814cd5 100644 --- a/examples/with-markdown-plugins/package.json +++ b/examples/with-markdown-plugins/package.json @@ -11,11 +11,11 @@ "astro": "astro" }, "dependencies": { - "@astrojs/markdown-remark": "^3.5.0", - "astro": "^3.5.5", - "hast-util-select": "^5.0.5", - "rehype-autolink-headings": "^6.1.1", - "rehype-slug": "^5.1.0", + "@astrojs/markdown-remark": "^4.0.0-beta.0", + "astro": "^4.0.0-beta.1", + "hast-util-select": "^6.0.2", + "rehype-autolink-headings": "^7.1.0", + "rehype-slug": "^6.0.0", "rehype-toc": "^3.0.2", "remark-code-titles": "^0.1.2" } diff --git a/examples/with-markdown-shiki/package.json b/examples/with-markdown-shiki/package.json index f44759d761d9..ae0983a0e291 100644 --- a/examples/with-markdown-shiki/package.json +++ b/examples/with-markdown-shiki/package.json @@ -11,6 +11,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^3.5.5" + "astro": "^4.0.0-beta.1" } } diff --git a/examples/with-mdx/package.json b/examples/with-mdx/package.json index 13f77a46eded..882caf0425ac 100644 --- a/examples/with-mdx/package.json +++ b/examples/with-mdx/package.json @@ -11,9 +11,9 @@ "astro": "astro" }, "dependencies": { - "@astrojs/mdx": "^1.1.5", + "@astrojs/mdx": "^2.0.0-beta.0", "@astrojs/preact": "^3.0.1", - "astro": "^3.5.5", - "preact": "^10.17.1" + "astro": "^4.0.0-beta.1", + "preact": "^10.19.2" } } diff --git a/examples/with-nanostores/package.json b/examples/with-nanostores/package.json index 14ae5ab8d611..43a406b4db0f 100644 --- a/examples/with-nanostores/package.json +++ b/examples/with-nanostores/package.json @@ -13,8 +13,8 @@ "dependencies": { "@astrojs/preact": "^3.0.1", "@nanostores/preact": "^0.5.0", - "astro": "^3.5.5", - "nanostores": "^0.9.3", - "preact": "^10.17.1" + "astro": "^4.0.0-beta.1", + "nanostores": "^0.9.5", + "preact": "^10.19.2" } } diff --git a/examples/with-tailwindcss/package.json b/examples/with-tailwindcss/package.json index 3a3e83dd3e7c..8a7652b8d884 100644 --- a/examples/with-tailwindcss/package.json +++ b/examples/with-tailwindcss/package.json @@ -11,13 +11,13 @@ "astro": "astro" }, "dependencies": { - "@astrojs/mdx": "^1.1.5", - "@astrojs/tailwind": "^5.0.2", - "@types/canvas-confetti": "^1.6.0", - "astro": "^3.5.5", + "@astrojs/mdx": "^2.0.0-beta.0", + "@astrojs/tailwind": "^6.0.0-beta.0", + "@types/canvas-confetti": "^1.6.3", + "astro": "^4.0.0-beta.1", "autoprefixer": "^10.4.15", - "canvas-confetti": "^1.6.0", + "canvas-confetti": "^1.9.1", "postcss": "^8.4.28", - "tailwindcss": "^3.3.3" + "tailwindcss": "^3.3.5" } } diff --git a/examples/with-vite-plugin-pwa/package.json b/examples/with-vite-plugin-pwa/package.json index adc9a8032c2c..939357b79791 100644 --- a/examples/with-vite-plugin-pwa/package.json +++ b/examples/with-vite-plugin-pwa/package.json @@ -11,8 +11,8 @@ "astro": "astro" }, "dependencies": { - "astro": "^3.5.5", - "vite-plugin-pwa": "0.16.4", + "astro": "^4.0.0-beta.1", + "vite-plugin-pwa": "0.17.0", "workbox-window": "^7.0.0" } } diff --git a/examples/with-vitest/package.json b/examples/with-vitest/package.json index 5259966bb9e7..950f19282bb0 100644 --- a/examples/with-vitest/package.json +++ b/examples/with-vitest/package.json @@ -12,7 +12,7 @@ "test": "vitest" }, "dependencies": { - "astro": "^3.5.5", + "astro": "^4.0.0-beta.1", "vitest": "^0.34.2" } } diff --git a/package.json b/package.json index 8bf7dc459cb9..98bffa203deb 100644 --- a/package.json +++ b/package.json @@ -77,23 +77,23 @@ "astro-benchmark": "workspace:*" }, "devDependencies": { - "@astrojs/check": "^0.1.0", + "@astrojs/check": "^0.3.1", "@changesets/changelog-github": "^0.4.8", "@changesets/cli": "^2.26.2", "@types/node": "^18.17.8", - "@typescript-eslint/eslint-plugin": "^6.4.1", - "@typescript-eslint/parser": "^6.4.1", - "esbuild": "^0.19.2", - "eslint": "^8.47.0", + "@typescript-eslint/eslint-plugin": "^6.11.0", + "@typescript-eslint/parser": "^6.11.0", + "esbuild": "^0.19.6", + "eslint": "^8.54.0", "eslint-config-prettier": "^9.0.0", "eslint-plugin-no-only-tests": "^3.1.0", "eslint-plugin-prettier": "^5.0.0", "only-allow": "^1.1.1", "organize-imports-cli": "^0.10.0", - "prettier": "^3.0.3", - "prettier-plugin-astro": "^0.12.0", + "prettier": "^3.1.0", + "prettier-plugin-astro": "^0.12.2", "tiny-glob": "^0.2.9", "turbo": "^1.10.12", - "typescript": "~5.1.6" + "typescript": "~5.2.2" } } diff --git a/packages/astro-prism/package.json b/packages/astro-prism/package.json index eae841073a2d..d62e819a8253 100644 --- a/packages/astro-prism/package.json +++ b/packages/astro-prism/package.json @@ -35,7 +35,7 @@ "prismjs": "^1.29.0" }, "devDependencies": { - "@types/prismjs": "1.26.0", + "@types/prismjs": "1.26.3", "astro-scripts": "workspace:*" }, "engines": { diff --git a/packages/astro-rss/CHANGELOG.md b/packages/astro-rss/CHANGELOG.md index 26e9c95d73c2..60327a088ea0 100644 --- a/packages/astro-rss/CHANGELOG.md +++ b/packages/astro-rss/CHANGELOG.md @@ -1,5 +1,11 @@ # @astrojs/rss +## 4.0.0-beta.0 + +### Major Changes + +- [#9168](https://github.com/withastro/astro/pull/9168) [`153a5abb9`](https://github.com/withastro/astro/commit/153a5abb905042ac68b712514dc9ec387d3e6b17) Thanks [@bluwy](https://github.com/bluwy)! - Removes the `drafts` option as the feature is deprecated in Astro 3.0 + ## 3.0.0 ### Major Changes diff --git a/packages/astro-rss/README.md b/packages/astro-rss/README.md index 268f58f26690..c8485b02e3e8 100644 --- a/packages/astro-rss/README.md +++ b/packages/astro-rss/README.md @@ -28,7 +28,7 @@ Start by [adding a `site` to your project's `astro.config` for link generation]( import rss from '@astrojs/rss'; import { getCollection } from 'astro:content'; -export async function get(context) { +export async function GET(context) { const posts = await getCollection('blog'); return rss({ title: 'Buzz’s Blog', @@ -55,7 +55,7 @@ Read **[Astro's RSS docs][astro-rss]** for more on using content collections, an The `rss` default export offers a number of configuration options. Here's a quick reference: ```js -export function get(context) { +export function GET(context) { return rss({ // `` field in output xml title: 'Buzz’s Blog', @@ -98,7 +98,7 @@ The base URL to use when generating RSS item links. We recommend using the [endp ```ts import rss from '@astrojs/rss'; -export const get = (context) => +export const GET = (context) => rss({ site: context.site, // ... @@ -113,14 +113,6 @@ A list of formatted RSS feed items. See [Astro's RSS items documentation](https: When providing a formatted RSS item list, see the [`RSSFeedItem` type reference](#rssfeeditem). -### drafts - -Type: `boolean (optional)` - -**Deprecated**: Manually filter `items` instead. - -Set `drafts: true` to include [draft posts](https://docs.astro.build/en/guides/markdown-content/#draft-pages) in the feed output. By default, this option is `false` and draft posts are not included. - ### stylesheet Type: `string (optional)` @@ -136,7 +128,7 @@ A string of valid XML to be injected between your feed's `<description>` and `<i ```js import rss from '@astrojs/rss'; -export const get = () => rss({ +export const GET = () => rss({ ... customData: '<language>en-us</language>', }); @@ -181,7 +173,7 @@ By default, the library will add trailing slashes to the emitted URLs. To preven ```js import rss from '@astrojs/rss'; -export const get = () => +export const GET = () => rss({ trailingSlash: false, }); @@ -361,7 +353,7 @@ This function assumes, but does not verify, you are globbing for items inside `s // src/pages/rss.xml.js import rss, { pagesGlobToRssItems } from '@astrojs/rss'; -export async function get(context) { +export async function GET(context) { return rss({ title: 'Buzz’s Blog', description: 'A humble Astronaut’s guide to the stars', @@ -379,7 +371,7 @@ As `rss()` returns a `Response`, you can also use `getRssString()` to get the RS // src/pages/rss.xml.js import { getRssString } from '@astrojs/rss'; -export async function get(context) { +export async function GET(context) { const rssString = await getRssString({ title: 'Buzz’s Blog', ... diff --git a/packages/astro-rss/package.json b/packages/astro-rss/package.json index c200e6c5942a..86df612b7707 100644 --- a/packages/astro-rss/package.json +++ b/packages/astro-rss/package.json @@ -1,7 +1,7 @@ { "name": "@astrojs/rss", "description": "Add RSS feeds to your Astro projects", - "version": "3.0.0", + "version": "4.0.0-beta.0", "type": "module", "types": "./dist/index.d.ts", "author": "withastro", @@ -27,9 +27,9 @@ "test": "mocha --exit --timeout 20000" }, "devDependencies": { - "@types/chai": "^4.3.5", - "@types/chai-as-promised": "^7.1.5", - "@types/mocha": "^10.0.1", + "@types/chai": "^4.3.10", + "@types/chai-as-promised": "^7.1.8", + "@types/mocha": "^10.0.4", "astro": "workspace:*", "astro-scripts": "workspace:*", "chai": "^4.3.7", diff --git a/packages/astro-rss/src/index.ts b/packages/astro-rss/src/index.ts index a611afc1637d..48c5defe855c 100644 --- a/packages/astro-rss/src/index.ts +++ b/packages/astro-rss/src/index.ts @@ -27,11 +27,6 @@ export type RSSOptions = { stylesheet?: z.infer<typeof rssOptionsValidator>['stylesheet']; /** Specify custom data in opening of file */ customData?: z.infer<typeof rssOptionsValidator>['customData']; - /** - * Whether to include drafts or not - * @deprecated Deprecated since version 3.0. Use content collections instead. - */ - drafts?: z.infer<typeof rssOptionsValidator>['drafts']; trailingSlash?: z.infer<typeof rssOptionsValidator>['trailingSlash']; }; @@ -48,11 +43,6 @@ export type RSSFeedItem = { description?: z.infer<typeof rssSchema>['description']; /** Append some other XML-valid data to this item */ customData?: z.infer<typeof rssSchema>['customData']; - /** - * Whether draft or not - * @deprecated Deprecated since version 3.0. Use content collections instead. - */ - draft?: z.infer<typeof rssSchema>['draft']; /** Categories or tags related to the item */ categories?: z.infer<typeof rssSchema>['categories']; /** The item author's email address */ @@ -92,7 +82,6 @@ const rssOptionsValidator = z.object({ return items; }), xmlns: z.record(z.string()).optional(), - drafts: z.boolean().default(false), stylesheet: z.union([z.string(), z.boolean()]).optional(), customData: z.string().optional(), trailingSlash: z.boolean().default(true), @@ -159,10 +148,7 @@ export function pagesGlobToRssItems(items: GlobResult): Promise<ValidatedRSSFeed /** Generate RSS 2.0 feed */ async function generateRSS(rssOptions: ValidatedRSSOptions): Promise<string> { - const { site } = rssOptions; - const items = rssOptions.drafts - ? rssOptions.items - : rssOptions.items.filter((item) => !item.draft); + const { items, site } = rssOptions; const xmlOptions = { ignoreAttributes: false, diff --git a/packages/astro-rss/src/schema.ts b/packages/astro-rss/src/schema.ts index eb15ecd58409..98aa35f81212 100644 --- a/packages/astro-rss/src/schema.ts +++ b/packages/astro-rss/src/schema.ts @@ -8,7 +8,6 @@ export const rssSchema = z.object({ .refine((value) => !isNaN(value.getTime())), description: z.string().optional(), customData: z.string().optional(), - draft: z.boolean().optional(), categories: z.array(z.string()).optional(), author: z.string().optional(), commentsUrl: z.string().optional(), diff --git a/packages/astro-rss/test/rss.test.js b/packages/astro-rss/test/rss.test.js index 5dfb48b32adf..cc7bff82b2ed 100644 --- a/packages/astro-rss/test/rss.test.js +++ b/packages/astro-rss/test/rss.test.js @@ -156,36 +156,12 @@ describe('getRssString', () => { chai.expect(str).to.contain(customData); }); - it('should filter out entries marked as `draft`', async () => { - const str = await getRssString({ - title, - description, - items: [phpFeedItem, { ...web1FeedItem, draft: true }], - site, - }); - - chai.expect(str).xml.to.equal(validXmlWithoutWeb1FeedResult); - }); - - it('should respect drafts option', async () => { - const str = await getRssString({ - title, - description, - items: [phpFeedItem, { ...web1FeedItem, draft: true }], - site, - drafts: true, - }); - - chai.expect(str).xml.to.equal(validXmlResult); - }); - it('should not append trailing slash to URLs with the given option', async () => { const str = await getRssString({ title, description, - items: [phpFeedItem, { ...web1FeedItem, draft: true }], + items: [phpFeedItem], site, - drafts: true, trailingSlash: false, }); diff --git a/packages/astro/CHANGELOG.md b/packages/astro/CHANGELOG.md index a3061833944f..d698935e2bff 100644 --- a/packages/astro/CHANGELOG.md +++ b/packages/astro/CHANGELOG.md @@ -1,5 +1,134 @@ # astro +## 4.0.0-beta.1 + +### Patch Changes + +- [#9118](https://github.com/withastro/astro/pull/9118) [`000e8f465`](https://github.com/withastro/astro/commit/000e8f4654cae9982e21e0a858366c4844139db6) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Redesign Dev Overlay main screen to show more information, such as the coolest integrations, your current Astro version and more. + +- [#9118](https://github.com/withastro/astro/pull/9118) [`000e8f465`](https://github.com/withastro/astro/commit/000e8f4654cae9982e21e0a858366c4844139db6) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes an issue where links with the same pathname as the current page, but different search params, were not prefetched. + +## 4.0.0-beta.0 + +### Major Changes + +- [#9138](https://github.com/withastro/astro/pull/9138) [`abf601233`](https://github.com/withastro/astro/commit/abf601233f8188d118a8cb063c777478d8d9f1a3) Thanks [@bluwy](https://github.com/bluwy)! - Updates the unified, remark, and rehype dependencies to latest. Make sure to update your custom remark and rehype plugins as well to be compatible with the latest versions. + + **Potentially breaking change:** The default value of `markdown.remarkRehype.footnoteBackLabel` is changed from `"Back to content"` to `"Back to reference 1"`. See the `mdast-util-to-hast` [commit](https://github.com/syntax-tree/mdast-util-to-hast/commit/56c88e45690be138fad9f0bf367b939d09816863) for more information. + +- [#9181](https://github.com/withastro/astro/pull/9181) [`cdabf6ef0`](https://github.com/withastro/astro/commit/cdabf6ef02be7220fd2b6bdcef924ceca089381e) Thanks [@bluwy](https://github.com/bluwy)! - Removes support for returning simple objects from endpoints (deprecated since Astro 3.0). You should return a `Response` instead. + + `ResponseWithEncoding` is also removed. You can refactor the code to return a response with an array buffer instead, which is encoding agnostic. + + The types for middlewares have also been revised. To type a middleware function, you should now use `MiddlewareHandler` instead of `MiddlewareResponseHandler`. If you used `defineMiddleware()` to type the function, no changes are needed. + +- [#9122](https://github.com/withastro/astro/pull/9122) [`1c48ed286`](https://github.com/withastro/astro/commit/1c48ed286538ab9e354eca4e4dcd7c6385c96721) Thanks [@bluwy](https://github.com/bluwy)! - Adds Vite 5 support. There are no breaking changes from Astro. Check the [Vite migration guide](https://vitejs.dev/guide/migration.html) for details of the breaking changes from Vite instead. + +- [#9196](https://github.com/withastro/astro/pull/9196) [`37697a2c5`](https://github.com/withastro/astro/commit/37697a2c5511572dc29c0a4ea46f90c2f62be8e6) Thanks [@bluwy](https://github.com/bluwy)! - Removes support for Shiki custom language's `path` property. The language JSON file should be imported and passed to the option instead. + + ```diff + // astro.config.js + + import customLang from './custom.tmLanguage.json' + + export default defineConfig({ + markdown: { + shikiConfig: { + langs: [ + - { path: './custom.tmLanguage.json' }, + + customLang, + ], + }, + }, + }) + ``` + +- [#9168](https://github.com/withastro/astro/pull/9168) [`153a5abb9`](https://github.com/withastro/astro/commit/153a5abb905042ac68b712514dc9ec387d3e6b17) Thanks [@bluwy](https://github.com/bluwy)! - Removes deprecated features from Astro 3.0 + + - Adapters are now required to pass `supportedAstroFeatures` to specify a list of features they support. + - The `build.split` and `build.excludeMiddleware` options are removed. Use `functionPerRoute` and `edgeMiddleware` from adapters instead. + - The `markdown.drafts` option and draft feature is removed. Use content collections instead. + - Lowercase endpoint names are no longer supported. Use uppercase endpoint names instead. + - `getHeaders()` exported from markdown files is removed. Use `getHeadings()` instead. + +### Minor Changes + +- [#9105](https://github.com/withastro/astro/pull/9105) [`6201bbe96`](https://github.com/withastro/astro/commit/6201bbe96c2a083fb201e4a43a9bd88499821a3e) Thanks [@FredKSchott](https://github.com/FredKSchott)! - Update CLI logging experience + +- [#9161](https://github.com/withastro/astro/pull/9161) [`bd0c2e9ae`](https://github.com/withastro/astro/commit/bd0c2e9ae3389a9d3085050c1e8134ae98dff299) Thanks [@bluwy](https://github.com/bluwy)! - Renames the `entryPoint` property of the `injectRoute` integrations API to `entrypoint` for consistency. A warning will be shown prompting you to update your code when using the old name. + +### Patch Changes + +- [#9149](https://github.com/withastro/astro/pull/9149) [`0fe3a7ed5`](https://github.com/withastro/astro/commit/0fe3a7ed5d7bb1a9fce1623e84ba14104b51223c) Thanks [@bluwy](https://github.com/bluwy)! - Removes vendored Vite's `importMeta.d.ts` file in favour of Vite 5's new `vite/types/import-meta.d.ts` export + +- [#9150](https://github.com/withastro/astro/pull/9150) [`710be505c`](https://github.com/withastro/astro/commit/710be505c9ddf416e77a75343d8cae9c497d72c6) Thanks [@bluwy](https://github.com/bluwy)! - Refactors virtual modules exports. This should not break your project unless you import Astro's internal modules, including: + + - `astro/middleware/namespace` + - `astro/transitions` + - `astro/transitions/router` + - `astro/transitions/events` + - `astro/transitions/types` + - `astro/prefetch` + - `astro/i18n` + +- Updated dependencies [[`abf601233`](https://github.com/withastro/astro/commit/abf601233f8188d118a8cb063c777478d8d9f1a3), [`addb57c8e`](https://github.com/withastro/astro/commit/addb57c8e80b7b67ec61224666f3a1db5c44410c), [`c7953645e`](https://github.com/withastro/astro/commit/c7953645eeaaf9e87c6db4494b0023d2c1878ff0)]: + - @astrojs/markdown-remark@4.0.0-beta.0 + +## 3.6.1 + +### Patch Changes + +- [#9173](https://github.com/withastro/astro/pull/9173) [`04fdc1c61`](https://github.com/withastro/astro/commit/04fdc1c613171409ed1a2bd887326e26cdb8b5ef) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where having a middleware prevented the SSR app from being deployed on Netlify. + +- [#9186](https://github.com/withastro/astro/pull/9186) [`607542c7c`](https://github.com/withastro/astro/commit/607542c7cf9fe9813c06f1d96615d6c793262d22) Thanks [@martrapp](https://github.com/martrapp)! - Fixes a view transition issue on webKit browsers that prevented scrolling to #fragments + +## 3.6.0 + +### Minor Changes + +- [#9090](https://github.com/withastro/astro/pull/9090) [`c87223c21`](https://github.com/withastro/astro/commit/c87223c21ab5d515fb8f04ee10be5c0ca51e0b29) Thanks [@martrapp](https://github.com/martrapp)! - Take full control over the behavior of view transitions! + + Three new events now complement the existing `astro:after-swap` and `astro:page-load` events: + + ```javascript + 'astro:before-preparation'; // Control how the DOM and other resources of the target page are loaded + 'astro:after-preparation'; // Last changes before taking off? Remove that loading indicator? Here you go! + 'astro:before-swap'; // Control how the DOM is updated to match the new page + ``` + + The `astro:before-*` events allow you to change properties and strategies of the view transition implementation. + The `astro:after-*` events are notifications that a phase is complete. + Head over to docs to see [the full view transitions lifecycle](https://docs.astro.build/en/guides/view-transitions/#lifecycle-events) including these new events! + +- [#9092](https://github.com/withastro/astro/pull/9092) [`0ea4bd47e`](https://github.com/withastro/astro/commit/0ea4bd47e0d7cc98c43568a55aa87da772bd2e0a) Thanks [@smitbarmase](https://github.com/smitbarmase)! - Changes the fallback prefetch behavior on slow connections and when data saver mode is enabled. Instead of disabling prefetch entirely, the `tap` strategy will be used. + +- [#9166](https://github.com/withastro/astro/pull/9166) [`cba6cf32d`](https://github.com/withastro/astro/commit/cba6cf32d9bf1f5c3268808f185a4824d6fbd7f4) Thanks [@matthewp](https://github.com/matthewp)! - The Picture component is no longer experimental + + The `<Picture />` component, part of `astro:assets`, has exited experimental status and is now recommended for use. There are no code changes to the component, and no upgrade to your project is necessary. + + This is only a change in documentation/recommendation. If you were waiting to use the `<Picture />` component until it had exited the experimental stage, wait no more! + +- [#9092](https://github.com/withastro/astro/pull/9092) [`0ea4bd47e`](https://github.com/withastro/astro/commit/0ea4bd47e0d7cc98c43568a55aa87da772bd2e0a) Thanks [@smitbarmase](https://github.com/smitbarmase)! - Adds a `ignoreSlowConnection` option to the `prefetch()` API to prefetch even on data saver mode or slow connection. + +## 3.5.7 + +### Patch Changes + +- [#9157](https://github.com/withastro/astro/pull/9157) [`7ff8d62bf`](https://github.com/withastro/astro/commit/7ff8d62bf861694067491ff17d01b1b0f6809d6b) Thanks [@ematipico](https://github.com/ematipico)! - Revert fix around fallback system, which broken injected styles + +## 3.5.6 + +### Patch Changes + +- [#9121](https://github.com/withastro/astro/pull/9121) [`f4efd1c80`](https://github.com/withastro/astro/commit/f4efd1c808476c7e60fe00fcfb86276cf14fee79) Thanks [@peng](https://github.com/peng)! - Adds a warning if `astro add` fetches a package but returns a non-404 status + +- [#9142](https://github.com/withastro/astro/pull/9142) [`7d55cf68d`](https://github.com/withastro/astro/commit/7d55cf68d89cb46bfb89a109b09af61be8431c89) Thanks [@ematipico](https://github.com/ematipico)! - Consistely emit fallback routes in the correct folders. + +- [#9119](https://github.com/withastro/astro/pull/9119) [`306781795`](https://github.com/withastro/astro/commit/306781795d5f4b755bbdf650a937f1f3c00030bd) Thanks [@ematipico](https://github.com/ematipico)! - Fix a flaw in the i18n fallback logic, where the routes didn't preserve their metadata, such as hoisted scripts + +- [#9140](https://github.com/withastro/astro/pull/9140) [`7742fd7dc`](https://github.com/withastro/astro/commit/7742fd7dc26533c6f7cd497b00b72de935c57628) Thanks [@martrapp](https://github.com/martrapp)! - View Transitions: handle clicks on SVGAElements and image maps" + +- [#9101](https://github.com/withastro/astro/pull/9101) [`e3dce215a`](https://github.com/withastro/astro/commit/e3dce215a5ea06bcff1b21027e5613e6518c69d4) Thanks [@ematipico](https://github.com/ematipico)! - Add a new property `Astro.currentLocale`, available when `i18n` is enabled. + ## 3.5.5 ### Patch Changes diff --git a/packages/astro/client.d.ts b/packages/astro/client.d.ts index f2af4a88c0a1..c3a7652ecec6 100644 --- a/packages/astro/client.d.ts +++ b/packages/astro/client.d.ts @@ -1,4 +1,4 @@ -/// <reference path="./import-meta.d.ts" /> +/// <reference types="vite/types/import-meta.d.ts" /> // eslint-disable-next-line @typescript-eslint/no-namespace declare namespace App { @@ -106,33 +106,55 @@ declare module '*.avif' { } declare module 'astro:transitions' { - type TransitionModule = typeof import('./dist/transitions/index.js'); + type TransitionModule = typeof import('./dist/virtual-modules/transitions.js'); export const slide: TransitionModule['slide']; export const fade: TransitionModule['fade']; + export const createAnimationScope: TransitionModule['createAnimationScope']; type ViewTransitionsModule = typeof import('./components/ViewTransitions.astro'); export const ViewTransitions: ViewTransitionsModule['default']; } declare module 'astro:transitions/client' { - type TransitionRouterModule = typeof import('./dist/transitions/router.js'); - export const supportsViewTransitions: TransitionRouterModule['supportsViewTransitions']; - export const transitionEnabledOnThisPage: TransitionRouterModule['transitionEnabledOnThisPage']; + type TransitionRouterModule = typeof import('./dist/virtual-modules/transitions-router.js'); export const navigate: TransitionRouterModule['navigate']; - export type Options = import('./dist/transitions/router.js').Options; + + type TransitionUtilModule = typeof import('./dist/virtual-modules/transitions-util.js'); + export const supportsViewTransitions: TransitionUtilModule['supportsViewTransitions']; + export const getFallback: TransitionUtilModule['getFallback']; + export const transitionEnabledOnThisPage: TransitionUtilModule['transitionEnabledOnThisPage']; + + export type Fallback = import('./dist/virtual-modules/transitions-types.js').Fallback; + export type Direction = import('./dist/virtual-modules/transitions-types.ts').Direction; + export type NavigationTypeString = + import('./dist/virtual-modules/transitions-types.js').NavigationTypeString; + export type Options = import('./dist/virtual-modules/transitions-types.js').Options; + + type EventModule = typeof import('./dist/virtual-modules/transitions-events.js'); + export const TRANSITION_BEFORE_PREPARATION: EventModule['TRANSITION_BEFORE_PREPARATION']; + export const TRANSITION_AFTER_PREPARATION: EventModule['TRANSITION_AFTER_PREPARATION']; + export const TRANSITION_BEFORE_SWAP: EventModule['TRANSITION_BEFORE_SWAP']; + export const TRANSITION_AFTER_SWAP: EventModule['TRANSITION_AFTER_SWAP']; + export const TRANSITION_PAGE_LOAD: EventModule['TRANSITION_PAGE_LOAD']; + export type TransitionBeforePreparationEvent = + import('./dist/virtual-modules/transitions-events.js').TransitionBeforePreparationEvent; + export type TransitionBeforeSwapEvent = + import('./dist/virtual-modules/transitions-events.js').TransitionBeforeSwapEvent; + export const isTransitionBeforePreparationEvent: EventModule['isTransitionBeforePreparationEvent']; + export const isTransitionBeforeSwapEvent: EventModule['isTransitionBeforeSwapEvent']; } declare module 'astro:prefetch' { - export { prefetch, PrefetchOptions } from 'astro/prefetch'; + export { prefetch, PrefetchOptions } from 'astro/virtual-modules/prefetch.js'; } declare module 'astro:i18n' { - export type GetLocaleOptions = import('./dist/i18n/index.js').GetLocaleOptions; + export type GetLocaleOptions = import('./dist/virtual-modules/i18n.js').GetLocaleOptions; /** * @param {string} locale A locale * @param {string} [path=""] An optional path to add after the `locale`. - * @param {import('./dist/i18n/index.js').GetLocaleOptions} options Customise the generated path + * @param {import('./dist/virtual-modules/i18n.js').GetLocaleOptions} options Customise the generated path * @return {string} * * Returns a _relative_ path with passed locale. @@ -161,7 +183,7 @@ declare module 'astro:i18n' { * * @param {string} locale A locale * @param {string} [path=""] An optional path to add after the `locale`. - * @param {import('./dist/i18n/index.js').GetLocaleOptions} options Customise the generated path + * @param {import('./dist/virtual-modules/i18n.js').GetLocaleOptions} options Customise the generated path * @return {string} * * Returns an absolute path with the passed locale. The behaviour is subject to change based on `site` configuration. @@ -191,7 +213,7 @@ declare module 'astro:i18n' { /** * @param {string} [path=""] An optional path to add after the `locale`. - * @param {import('./dist/i18n/index.js').GetLocaleOptions} options Customise the generated path + * @param {import('./dist/virtual-modules/i18n.js').GetLocaleOptions} options Customise the generated path * @return {string[]} * * Works like `getRelativeLocaleUrl` but it emits the relative URLs for ALL locales: @@ -199,7 +221,7 @@ declare module 'astro:i18n' { export const getRelativeLocaleUrlList: (path?: string, options?: GetLocaleOptions) => string[]; /** * @param {string} [path=""] An optional path to add after the `locale`. - * @param {import('./dist/i18n/index.js').GetLocaleOptions} options Customise the generated path + * @param {import('./dist/virtual-modules/i18n.js').GetLocaleOptions} options Customise the generated path * @return {string[]} * * Works like `getAbsoluteLocaleUrl` but it emits the absolute URLs for ALL locales: @@ -208,7 +230,7 @@ declare module 'astro:i18n' { } declare module 'astro:middleware' { - export * from 'astro/middleware/namespace'; + export * from 'astro/virtual-modules/middleware.js'; } declare module 'astro:components' { @@ -221,8 +243,6 @@ interface ExportedMarkdownModuleEntities { file: MD['file']; url: MD['url']; getHeadings: MD['getHeadings']; - /** @deprecated Renamed to `getHeadings()` */ - getHeaders: () => void; Content: MD['Content']; rawContent: MD['rawContent']; compiledContent: MD['compiledContent']; diff --git a/packages/astro/components/Code.astro b/packages/astro/components/Code.astro index 506a3ed3c0d1..93da72add710 100644 --- a/packages/astro/components/Code.astro +++ b/packages/astro/components/Code.astro @@ -1,7 +1,4 @@ --- -import path from 'node:path'; -import fs from 'node:fs'; -import { fileURLToPath } from 'node:url'; import type { BuiltinLanguage, BuiltinTheme, @@ -64,23 +61,6 @@ const { // shiki -> shikiji compat if (typeof lang === 'object') { - // shikiji does not support `path` - // https://github.com/shikijs/shiki/blob/facb6ff37996129626f8066a5dccb4608e45f649/packages/shiki/src/loader.ts#L98 - const langPath = (lang as any).path; - if (langPath) { - // shiki resolves path from within its package directory :shrug: - const astroRoot = fileURLToPath(new URL('../', import.meta.url)); - const normalizedPath = path.isAbsolute(langPath) ? langPath : path.resolve(astroRoot, langPath); - try { - const content = fs.readFileSync(normalizedPath, 'utf-8'); - const parsed = JSON.parse(content); - Object.assign(lang, parsed); - } catch (e) { - throw new Error(`Unable to find language file at ${normalizedPath}`, { - cause: e, - }); - } - } // `id` renamed to `name` (always override) if ((lang as any).id) { lang.name = (lang as any).id; diff --git a/packages/astro/components/ViewTransitions.astro b/packages/astro/components/ViewTransitions.astro index 089d8d8e554e..934ae650f39a 100644 --- a/packages/astro/components/ViewTransitions.astro +++ b/packages/astro/components/ViewTransitions.astro @@ -3,10 +3,14 @@ type Fallback = 'none' | 'animate' | 'swap'; export interface Props { fallback?: Fallback; + /** @deprecated handleForms is enabled by default in Astro 4.0 + * + * Set `data-astro-reload` on your form to opt-out of the default behavior. + */ handleForms?: boolean; } -const { fallback = 'animate', handleForms } = Astro.props; +const { fallback = 'animate' } = Astro.props; --- <style is:global> @@ -25,14 +29,14 @@ const { fallback = 'animate', handleForms } = Astro.props; </style> <meta name="astro-view-transitions-enabled" content="true" /> <meta name="astro-view-transitions-fallback" content={fallback} /> -{handleForms ? <meta name="astro-view-transitions-forms" content="true" /> : ''} <script> import type { Options } from 'astro:transitions/client'; import { supportsViewTransitions, navigate } from 'astro:transitions/client'; - // NOTE: import from `astro/prefetch` as `astro:prefetch` requires the `prefetch` config to be enabled - import { init } from 'astro/prefetch'; + // NOTE: import from `astro/virtual-modules/prefetch.js` as `astro:prefetch` requires the `prefetch` config to be enabled + // @ts-ignore + import { init } from 'astro/virtual-modules/prefetch.js'; - export type Fallback = 'none' | 'animate' | 'swap'; + type Fallback = 'none' | 'animate' | 'swap'; function getFallback(): Fallback { const el = document.querySelector('[name="astro-view-transitions-fallback"]'); @@ -42,27 +46,34 @@ const { fallback = 'animate', handleForms } = Astro.props; return 'animate'; } - function isReloadEl(el: HTMLElement): boolean { + function isReloadEl(el: HTMLElement | SVGAElement): boolean { return el.dataset.astroReload !== undefined; } if (supportsViewTransitions || getFallback() !== 'none') { document.addEventListener('click', (ev) => { let link = ev.target; - if (link instanceof Element && link.tagName !== 'A') { - link = link.closest('a'); + if (link instanceof Element) { + link = link.closest('a, area'); } + if ( + !(link instanceof HTMLAnchorElement) && + !(link instanceof SVGAElement) && + !(link instanceof HTMLAreaElement) + ) + return; // This check verifies that the click is happening on an anchor // that is going to another page within the same origin. Basically it determines // same-origin navigation, but omits special key combos for new tabs, etc. + const linkTarget = link instanceof HTMLElement ? link.target : link.target.baseVal; + const href = link instanceof HTMLElement ? link.href : link.href.baseVal; + const origin = new URL(href, location.href).origin; if ( - !link || - !(link instanceof HTMLAnchorElement) || isReloadEl(link) || link.hasAttribute('download') || !link.href || - (link.target && link.target !== '_self') || - link.origin !== location.origin || + (linkTarget && linkTarget !== '_self') || + origin !== location.origin || ev.button !== 0 || // left clicks only ev.metaKey || // new tab (mac) ev.ctrlKey || // new tab (windows) @@ -75,38 +86,37 @@ const { fallback = 'animate', handleForms } = Astro.props; return; } ev.preventDefault(); - navigate(link.href, { + navigate(href, { history: link.dataset.astroHistory === 'replace' ? 'replace' : 'auto', + sourceElement: link, }); }); - if (document.querySelector('[name="astro-view-transitions-forms"]')) { - document.addEventListener('submit', (ev) => { - let el = ev.target as HTMLElement; - if (el.tagName !== 'FORM' || isReloadEl(el)) { - return; - } + document.addEventListener('submit', (ev) => { + let el = ev.target as HTMLElement; + if (el.tagName !== 'FORM' || isReloadEl(el)) { + return; + } - const form = el as HTMLFormElement; - const submitter = ev.submitter; - const formData = new FormData(form); - // Use the form action, if defined, otherwise fallback to current path. - let action = submitter?.getAttribute('formaction') ?? form.action ?? location.pathname; - const method = submitter?.getAttribute('formmethod') ?? form.method; + const form = el as HTMLFormElement; + const submitter = ev.submitter; + const formData = new FormData(form); + // Use the form action, if defined, otherwise fallback to current path. + let action = submitter?.getAttribute('formaction') ?? form.action ?? location.pathname; + const method = submitter?.getAttribute('formmethod') ?? form.method; - const options: Options = {}; - if (method === 'get') { - const params = new URLSearchParams(formData as any); - const url = new URL(action); - url.search = params.toString(); - action = url.toString(); - } else { - options.formData = formData; - } - ev.preventDefault(); - navigate(action, options); - }); - } + const options: Options = { sourceElement: submitter ?? form }; + if (method === 'get') { + const params = new URLSearchParams(formData as any); + const url = new URL(action); + url.search = params.toString(); + action = url.toString(); + } else { + options.formData = formData; + } + ev.preventDefault(); + navigate(action, options); + }); // @ts-expect-error injected by vite-plugin-transitions for treeshaking if (!__PREFETCH_DISABLED__) { diff --git a/packages/astro/e2e/fixtures/astro-component/package.json b/packages/astro/e2e/fixtures/astro-component/package.json index b7cc8fbc132f..b02f5b90c89f 100644 --- a/packages/astro/e2e/fixtures/astro-component/package.json +++ b/packages/astro/e2e/fixtures/astro-component/package.json @@ -6,6 +6,6 @@ "@astrojs/preact": "workspace:*", "@e2e/astro-linked-lib": "link:../_deps/astro-linked-lib", "astro": "workspace:*", - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/astro/e2e/fixtures/astro-envs/package.json b/packages/astro/e2e/fixtures/astro-envs/package.json index 2fa703b969de..ac0cd9afa5b3 100644 --- a/packages/astro/e2e/fixtures/astro-envs/package.json +++ b/packages/astro/e2e/fixtures/astro-envs/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/vue": "workspace:*", "astro": "workspace:*", - "vue": "^3.3.4" + "vue": "^3.3.8" } } diff --git a/packages/astro/e2e/fixtures/client-only/package.json b/packages/astro/e2e/fixtures/client-only/package.json index f71e9936ca5e..938d67392533 100644 --- a/packages/astro/e2e/fixtures/client-only/package.json +++ b/packages/astro/e2e/fixtures/client-only/package.json @@ -11,11 +11,11 @@ "astro": "workspace:*" }, "dependencies": { - "preact": "^10.17.1", + "preact": "^10.19.2", "react": "^18.1.0", "react-dom": "^18.1.0", - "solid-js": "^1.7.11", - "svelte": "^4.2.0", - "vue": "^3.3.4" + "solid-js": "^1.8.5", + "svelte": "^4.2.5", + "vue": "^3.3.8" } } diff --git a/packages/astro/e2e/fixtures/dev-overlay/package.json b/packages/astro/e2e/fixtures/dev-overlay/package.json index 707aa8718b0d..6cd05404d6a2 100644 --- a/packages/astro/e2e/fixtures/dev-overlay/package.json +++ b/packages/astro/e2e/fixtures/dev-overlay/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/preact": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/astro/e2e/fixtures/error-cyclic/package.json b/packages/astro/e2e/fixtures/error-cyclic/package.json index b4a9ed29ca35..f63c95a376d8 100644 --- a/packages/astro/e2e/fixtures/error-cyclic/package.json +++ b/packages/astro/e2e/fixtures/error-cyclic/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/preact": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/astro/e2e/fixtures/error-sass/package.json b/packages/astro/e2e/fixtures/error-sass/package.json index 6c89910db6c4..7f92d3b5ac66 100644 --- a/packages/astro/e2e/fixtures/error-sass/package.json +++ b/packages/astro/e2e/fixtures/error-sass/package.json @@ -4,6 +4,6 @@ "private": true, "dependencies": { "astro": "workspace:*", - "sass": "^1.66.1" + "sass": "^1.69.5" } } diff --git a/packages/astro/e2e/fixtures/errors/package.json b/packages/astro/e2e/fixtures/errors/package.json index 67ce0a5355f4..7d93b835492a 100644 --- a/packages/astro/e2e/fixtures/errors/package.json +++ b/packages/astro/e2e/fixtures/errors/package.json @@ -9,12 +9,12 @@ "@astrojs/svelte": "workspace:*", "@astrojs/vue": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1", + "preact": "^10.19.2", "react": "^18.1.0", "react-dom": "^18.1.0", - "sass": "^1.66.1", - "solid-js": "^1.7.11", - "svelte": "^4.2.0", - "vue": "^3.3.4" + "sass": "^1.69.5", + "solid-js": "^1.8.5", + "svelte": "^4.2.5", + "vue": "^3.3.8" } } diff --git a/packages/astro/e2e/fixtures/hmr/package.json b/packages/astro/e2e/fixtures/hmr/package.json index f5aa414601d8..6e102c9976fd 100644 --- a/packages/astro/e2e/fixtures/hmr/package.json +++ b/packages/astro/e2e/fixtures/hmr/package.json @@ -4,6 +4,6 @@ "private": true, "devDependencies": { "astro": "workspace:*", - "sass": "^1.66.1" + "sass": "^1.69.5" } } diff --git a/packages/astro/e2e/fixtures/hydration-race/package.json b/packages/astro/e2e/fixtures/hydration-race/package.json index 8db4efa2934d..580c6721dab1 100644 --- a/packages/astro/e2e/fixtures/hydration-race/package.json +++ b/packages/astro/e2e/fixtures/hydration-race/package.json @@ -9,6 +9,6 @@ "dependencies": { "@astrojs/preact": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/astro/e2e/fixtures/multiple-frameworks/package.json b/packages/astro/e2e/fixtures/multiple-frameworks/package.json index 1edb9df993ef..4666b1593e5b 100644 --- a/packages/astro/e2e/fixtures/multiple-frameworks/package.json +++ b/packages/astro/e2e/fixtures/multiple-frameworks/package.json @@ -14,11 +14,11 @@ "dependencies": { "@webcomponents/template-shadowroot": "^0.2.1", "lit": "^2.8.0", - "preact": "^10.17.1", + "preact": "^10.19.2", "react": "^18.1.0", "react-dom": "^18.1.0", - "solid-js": "^1.7.11", - "svelte": "^4.2.0", - "vue": "^3.3.4" + "solid-js": "^1.8.5", + "svelte": "^4.2.5", + "vue": "^3.3.8" } } diff --git a/packages/astro/e2e/fixtures/namespaced-component/package.json b/packages/astro/e2e/fixtures/namespaced-component/package.json index 596cb5d2b3a1..a64e3b52a023 100644 --- a/packages/astro/e2e/fixtures/namespaced-component/package.json +++ b/packages/astro/e2e/fixtures/namespaced-component/package.json @@ -8,6 +8,6 @@ "astro": "workspace:*" }, "dependencies": { - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/astro/e2e/fixtures/nested-in-preact/package.json b/packages/astro/e2e/fixtures/nested-in-preact/package.json index c626314bd4eb..fcbbd1e2bdbc 100644 --- a/packages/astro/e2e/fixtures/nested-in-preact/package.json +++ b/packages/astro/e2e/fixtures/nested-in-preact/package.json @@ -11,11 +11,11 @@ "astro": "workspace:*" }, "dependencies": { - "preact": "^10.17.1", + "preact": "^10.19.2", "react": "^18.1.0", "react-dom": "^18.1.0", - "solid-js": "^1.7.11", - "svelte": "^4.2.0", - "vue": "^3.3.4" + "solid-js": "^1.8.5", + "svelte": "^4.2.5", + "vue": "^3.3.8" } } diff --git a/packages/astro/e2e/fixtures/nested-in-react/package.json b/packages/astro/e2e/fixtures/nested-in-react/package.json index 88690f140636..18463a773692 100644 --- a/packages/astro/e2e/fixtures/nested-in-react/package.json +++ b/packages/astro/e2e/fixtures/nested-in-react/package.json @@ -11,11 +11,11 @@ "astro": "workspace:*" }, "dependencies": { - "preact": "^10.17.1", + "preact": "^10.19.2", "react": "^18.1.0", "react-dom": "^18.1.0", - "solid-js": "^1.7.11", - "svelte": "^4.2.0", - "vue": "^3.3.4" + "solid-js": "^1.8.5", + "svelte": "^4.2.5", + "vue": "^3.3.8" } } diff --git a/packages/astro/e2e/fixtures/nested-in-solid/package.json b/packages/astro/e2e/fixtures/nested-in-solid/package.json index 47ba1334d23e..4c9f03262ab7 100644 --- a/packages/astro/e2e/fixtures/nested-in-solid/package.json +++ b/packages/astro/e2e/fixtures/nested-in-solid/package.json @@ -11,11 +11,11 @@ "astro": "workspace:*" }, "dependencies": { - "preact": "^10.17.1", + "preact": "^10.19.2", "react": "^18.1.0", "react-dom": "^18.1.0", - "solid-js": "^1.7.11", - "svelte": "^4.2.0", - "vue": "^3.3.4" + "solid-js": "^1.8.5", + "svelte": "^4.2.5", + "vue": "^3.3.8" } } diff --git a/packages/astro/e2e/fixtures/nested-in-svelte/package.json b/packages/astro/e2e/fixtures/nested-in-svelte/package.json index 91b88bbb8430..a3adbea06b76 100644 --- a/packages/astro/e2e/fixtures/nested-in-svelte/package.json +++ b/packages/astro/e2e/fixtures/nested-in-svelte/package.json @@ -11,11 +11,11 @@ "astro": "workspace:*" }, "dependencies": { - "preact": "^10.17.1", + "preact": "^10.19.2", "react": "^18.1.0", "react-dom": "^18.1.0", - "solid-js": "^1.7.11", - "svelte": "^4.2.0", - "vue": "^3.3.4" + "solid-js": "^1.8.5", + "svelte": "^4.2.5", + "vue": "^3.3.8" } } diff --git a/packages/astro/e2e/fixtures/nested-in-vue/package.json b/packages/astro/e2e/fixtures/nested-in-vue/package.json index 3cab15f47c3a..2555b7a2908d 100644 --- a/packages/astro/e2e/fixtures/nested-in-vue/package.json +++ b/packages/astro/e2e/fixtures/nested-in-vue/package.json @@ -11,11 +11,11 @@ "astro": "workspace:*" }, "dependencies": { - "preact": "^10.17.1", + "preact": "^10.19.2", "react": "^18.1.0", "react-dom": "^18.1.0", - "solid-js": "^1.7.11", - "svelte": "^4.2.0", - "vue": "^3.3.4" + "solid-js": "^1.8.5", + "svelte": "^4.2.5", + "vue": "^3.3.8" } } diff --git a/packages/astro/e2e/fixtures/nested-recursive/package.json b/packages/astro/e2e/fixtures/nested-recursive/package.json index a1dfa3a097ab..a6b11a389129 100644 --- a/packages/astro/e2e/fixtures/nested-recursive/package.json +++ b/packages/astro/e2e/fixtures/nested-recursive/package.json @@ -11,12 +11,12 @@ "astro": "workspace:*" }, "dependencies": { - "preact": "^10.17.1", + "preact": "^10.19.2", "react": "^18.1.0", "react-dom": "^18.1.0", - "solid-js": "^1.7.11", - "svelte": "^4.2.0", - "vue": "^3.3.4" + "solid-js": "^1.8.5", + "svelte": "^4.2.5", + "vue": "^3.3.8" }, "scripts": { "dev": "astro dev" diff --git a/packages/astro/e2e/fixtures/preact-compat-component/package.json b/packages/astro/e2e/fixtures/preact-compat-component/package.json index 72fdbdf3a6ef..38b4fc3a8d09 100644 --- a/packages/astro/e2e/fixtures/preact-compat-component/package.json +++ b/packages/astro/e2e/fixtures/preact-compat-component/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/preact": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/astro/e2e/fixtures/preact-component/package.json b/packages/astro/e2e/fixtures/preact-component/package.json index 264c1d99bfa0..4e2cd6fe225a 100644 --- a/packages/astro/e2e/fixtures/preact-component/package.json +++ b/packages/astro/e2e/fixtures/preact-component/package.json @@ -6,6 +6,6 @@ "@astrojs/mdx": "workspace:*", "@astrojs/preact": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/astro/e2e/fixtures/prefetch/src/pages/index.astro b/packages/astro/e2e/fixtures/prefetch/src/pages/index.astro index e61bc1c6c33e..88ce196ae22f 100644 --- a/packages/astro/e2e/fixtures/prefetch/src/pages/index.astro +++ b/packages/astro/e2e/fixtures/prefetch/src/pages/index.astro @@ -9,6 +9,8 @@ <br> <a id="prefetch-false" href="/prefetch-false" data-astro-prefetch="false">false</a> <br> + <a id="prefetch-search-param" href="?search-param=true" data-astro-prefetch="hover">search param</a> + <br> <a id="prefetch-tap" href="/prefetch-tap" data-astro-prefetch="tap">tap</a> <br> <a id="prefetch-hover" href="/prefetch-hover" data-astro-prefetch="hover">hover</a> diff --git a/packages/astro/e2e/fixtures/solid-circular/package.json b/packages/astro/e2e/fixtures/solid-circular/package.json index e32dccbdb22e..a40b083c3d2b 100644 --- a/packages/astro/e2e/fixtures/solid-circular/package.json +++ b/packages/astro/e2e/fixtures/solid-circular/package.json @@ -7,6 +7,6 @@ "astro": "workspace:*" }, "devDependencies": { - "solid-js": "^1.7.11" + "solid-js": "^1.8.5" } } diff --git a/packages/astro/e2e/fixtures/solid-component/package.json b/packages/astro/e2e/fixtures/solid-component/package.json index d4ef4de6ea6f..634693c79321 100644 --- a/packages/astro/e2e/fixtures/solid-component/package.json +++ b/packages/astro/e2e/fixtures/solid-component/package.json @@ -6,6 +6,6 @@ "@astrojs/mdx": "workspace:*", "@astrojs/solid-js": "workspace:*", "astro": "workspace:*", - "solid-js": "^1.7.11" + "solid-js": "^1.8.5" } } diff --git a/packages/astro/e2e/fixtures/solid-recurse/package.json b/packages/astro/e2e/fixtures/solid-recurse/package.json index 6f999c6a35d7..96d93df74a5d 100644 --- a/packages/astro/e2e/fixtures/solid-recurse/package.json +++ b/packages/astro/e2e/fixtures/solid-recurse/package.json @@ -7,6 +7,6 @@ "astro": "workspace:*" }, "devDependencies": { - "solid-js": "^1.7.11" + "solid-js": "^1.8.5" } } diff --git a/packages/astro/e2e/fixtures/svelte-component/package.json b/packages/astro/e2e/fixtures/svelte-component/package.json index c6fe3c8e892d..b721b8ccbdaa 100644 --- a/packages/astro/e2e/fixtures/svelte-component/package.json +++ b/packages/astro/e2e/fixtures/svelte-component/package.json @@ -6,6 +6,6 @@ "@astrojs/mdx": "workspace:*", "@astrojs/svelte": "workspace:*", "astro": "workspace:*", - "svelte": "^4.2.0" + "svelte": "^4.2.5" } } diff --git a/packages/astro/e2e/fixtures/tailwindcss/package.json b/packages/astro/e2e/fixtures/tailwindcss/package.json index ddac263a55ad..d755b9516334 100644 --- a/packages/astro/e2e/fixtures/tailwindcss/package.json +++ b/packages/astro/e2e/fixtures/tailwindcss/package.json @@ -7,6 +7,6 @@ "astro": "workspace:*", "autoprefixer": "^10.4.15", "postcss": "^8.4.28", - "tailwindcss": "^3.3.3" + "tailwindcss": "^3.3.5" } } diff --git a/packages/astro/e2e/fixtures/view-transitions/package.json b/packages/astro/e2e/fixtures/view-transitions/package.json index b53b5fcad4a6..327393ccda6e 100644 --- a/packages/astro/e2e/fixtures/view-transitions/package.json +++ b/packages/astro/e2e/fixtures/view-transitions/package.json @@ -3,14 +3,14 @@ "version": "0.0.0", "private": true, "dependencies": { - "astro": "workspace:*", "@astrojs/node": "workspace:*", "@astrojs/react": "workspace:*", - "@astrojs/vue": "workspace:*", "@astrojs/svelte": "workspace:*", - "svelte": "^4.2.0", - "vue": "^3.3.4", + "@astrojs/vue": "workspace:*", + "astro": "workspace:*", "react": "^18.1.0", - "react-dom": "^18.1.0" + "react-dom": "^18.1.0", + "svelte": "^4.2.5", + "vue": "^3.3.8" } } diff --git a/packages/astro/e2e/fixtures/view-transitions/src/pages/non-html-anchor.astro b/packages/astro/e2e/fixtures/view-transitions/src/pages/non-html-anchor.astro new file mode 100644 index 000000000000..8d5ea8d46c76 --- /dev/null +++ b/packages/astro/e2e/fixtures/view-transitions/src/pages/non-html-anchor.astro @@ -0,0 +1,22 @@ +--- +import Layout from '../components/Layout.astro'; +--- +<Layout> +<h1>SVGA and Image Map links</h1> + +<svg viewBox="0 0 160 40" xmlns="http://www.w3.org/2000/svg"> + <a href="/two" id="svga"> + <text x="10" y="25" id="insidesvga">text within a svga</text> + </a> +</svg> + + +<map name="map"> + <area shape="default" href="/two" alt="logo" id="area"/> +</map> +<img id="logo" usemap="#map" src="/logo.svg" alt="logo" /> +<style> + body { + background: #888; + } +</style> diff --git a/packages/astro/e2e/fixtures/vue-component/package.json b/packages/astro/e2e/fixtures/vue-component/package.json index 81e7997830e3..091f3643558c 100644 --- a/packages/astro/e2e/fixtures/vue-component/package.json +++ b/packages/astro/e2e/fixtures/vue-component/package.json @@ -6,6 +6,6 @@ "@astrojs/mdx": "workspace:*", "@astrojs/vue": "workspace:*", "astro": "workspace:*", - "vue": "^3.3.4" + "vue": "^3.3.8" } } diff --git a/packages/astro/e2e/prefetch.test.js b/packages/astro/e2e/prefetch.test.js index dc29bde33f07..a19c87680eca 100644 --- a/packages/astro/e2e/prefetch.test.js +++ b/packages/astro/e2e/prefetch.test.js @@ -16,7 +16,8 @@ test.describe('Prefetch (default)', () => { test.beforeEach(async ({ page }) => { page.on('request', (req) => { - reqUrls.push(new URL(req.url()).pathname); + const urlObj = new URL(req.url()); + reqUrls.push(urlObj.pathname + urlObj.search); }); }); @@ -38,6 +39,16 @@ test.describe('Prefetch (default)', () => { expect(reqUrls).not.toContainEqual('/prefetch-false'); }); + test('Link with search param should prefetch', async ({ page, astro }) => { + await page.goto(astro.resolveUrl('/')); + expect(reqUrls).not.toContainEqual('/?search-param=true'); + await Promise.all([ + page.waitForEvent('request'), // wait prefetch request + page.locator('#prefetch-search-param').hover(), + ]); + expect(reqUrls).toContainEqual('/?search-param=true'); + }); + test('data-astro-prefetch="tap" should prefetch on tap', async ({ page, astro }) => { await page.goto(astro.resolveUrl('/')); expect(reqUrls).not.toContainEqual('/prefetch-tap'); @@ -102,7 +113,8 @@ test.describe("Prefetch (prefetchAll: true, defaultStrategy: 'tap')", () => { test.beforeEach(async ({ page }) => { page.on('request', (req) => { - reqUrls.push(new URL(req.url()).pathname); + const urlObj = new URL(req.url()); + reqUrls.push(urlObj.pathname + urlObj.search); }); }); @@ -129,6 +141,16 @@ test.describe("Prefetch (prefetchAll: true, defaultStrategy: 'tap')", () => { expect(reqUrls).not.toContainEqual('/prefetch-false'); }); + test('Link with search param should prefetch', async ({ page, astro }) => { + await page.goto(astro.resolveUrl('/')); + expect(reqUrls).not.toContainEqual('/?search-param=true'); + await Promise.all([ + page.waitForEvent('request'), // wait prefetch request + page.locator('#prefetch-search-param').hover(), + ]); + expect(reqUrls).toContainEqual('/?search-param=true'); + }); + test('data-astro-prefetch="tap" should prefetch on tap', async ({ page, astro }) => { await page.goto(astro.resolveUrl('/')); expect(reqUrls).not.toContainEqual('/prefetch-tap'); diff --git a/packages/astro/e2e/react-component.test.js b/packages/astro/e2e/react-component.test.js index b19a071d664a..361ee8d69a2a 100644 --- a/packages/astro/e2e/react-component.test.js +++ b/packages/astro/e2e/react-component.test.js @@ -46,7 +46,6 @@ test.describe('React client id generation', () => { const hydratedId1 = await components.nth(2).getAttribute('id'); const clientOnlyId0 = await components.nth(3).getAttribute('id'); const clientOnlyId1 = await components.nth(4).getAttribute('id'); - console.log('ho ho', staticId, hydratedId0, hydratedId1, clientOnlyId0, clientOnlyId1); expect(staticId).not.toEqual(hydratedId0); expect(hydratedId0).not.toEqual(hydratedId1); expect(hydratedId1).not.toEqual(clientOnlyId0); diff --git a/packages/astro/e2e/view-transitions.test.js b/packages/astro/e2e/view-transitions.test.js index 20ea8adbc302..c56abae2423e 100644 --- a/packages/astro/e2e/view-transitions.test.js +++ b/packages/astro/e2e/view-transitions.test.js @@ -1016,4 +1016,47 @@ test.describe('View Transitions', () => { const result = page.locator('#three-result'); await expect(result, 'should have content').toHaveText('Got: Testing'); }); + + test('click on an svg anchor should trigger navigation', async ({ page, astro }) => { + const loads = []; + page.addListener('load', (p) => { + loads.push(p.title()); + }); + + await page.goto(astro.resolveUrl('/non-html-anchor')); + let locator = page.locator('#insidesvga'); + await expect(locator, 'should have attribute').toHaveAttribute('x', '10'); + await page.click('#svga'); + const p = page.locator('#two'); + await expect(p, 'should have content').toHaveText('Page 2'); + expect(loads.length, 'There should only be 1 page load').toEqual(1); + }); + + test('click inside an svg anchor should trigger navigation', async ({ page, astro }) => { + const loads = []; + page.addListener('load', (p) => { + loads.push(p.title()); + }); + await page.goto(astro.resolveUrl('/non-html-anchor')); + let locator = page.locator('#insidesvga'); + await expect(locator, 'should have content').toHaveText('text within a svga'); + await page.click('#insidesvga'); + const p = page.locator('#two'); + await expect(p, 'should have content').toHaveText('Page 2'); + expect(loads.length, 'There should only be 1 page load').toEqual(1); + }); + + test('click on an area in an image map should trigger navigation', async ({ page, astro }) => { + const loads = []; + page.addListener('load', (p) => { + loads.push(p.title()); + }); + await page.goto(astro.resolveUrl('/non-html-anchor')); + let locator = page.locator('#area'); + await expect(locator, 'should have attribute').toHaveAttribute('shape', 'default'); + await page.click('#logo'); + const p = page.locator('#two'); + await expect(p, 'should have content').toHaveText('Page 2'); + expect(loads.length, 'There should only be 1 page load').toEqual(1); + }); }); diff --git a/packages/astro/import-meta.d.ts b/packages/astro/import-meta.d.ts deleted file mode 100644 index 23d951cf2db1..000000000000 --- a/packages/astro/import-meta.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -// File vendored from Vite itself, as a workaround to https://github.com/vitejs/vite/issues/13309 until Vite 5 comes out - -// This file is an augmentation to the built-in ImportMeta interface -// Thus cannot contain any top-level imports -// <https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation> - -/* eslint-disable @typescript-eslint/consistent-type-imports */ - -interface ImportMeta { - url: string; - - readonly hot?: import('vite/types/hot').ViteHotContext; - - readonly env: ImportMetaEnv; - - glob: import('vite/types/importGlob').ImportGlobFunction; - /** - * @deprecated Use `import.meta.glob('*', { eager: true })` instead - */ - globEager: import('vite/types/importGlob').ImportGlobEagerFunction; -} - -interface ImportMetaEnv { - [key: string]: any; - BASE_URL: string; - MODE: string; - DEV: boolean; - PROD: boolean; - SSR: boolean; -} diff --git a/packages/astro/package.json b/packages/astro/package.json index 020ef48f0d24..6b076fc7da46 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -1,6 +1,6 @@ { "name": "astro", - "version": "3.5.5", + "version": "4.0.0-beta.1", "description": "Astro is a modern site builder with web best practices, performance, and DX front-of-mind.", "type": "module", "author": "withastro", @@ -22,10 +22,7 @@ "./dist/core/app/*" ], "middleware": [ - "./dist/core/middleware/index.d.ts" - ], - "middleware/namespace": [ - "./dist/core/middleware/namespace.d.ts" + "./dist/virtual-modules/middleware.d.ts" ] } }, @@ -73,14 +70,7 @@ "types": "./dist/core/middleware/index.d.ts", "default": "./dist/core/middleware/index.js" }, - "./middleware/namespace": { - "types": "./dist/core/middleware/namespace.d.ts", - "default": "./dist/core/middleware/namespace.js" - }, - "./transitions": "./dist/transitions/index.js", - "./transitions/router": "./dist/transitions/router.js", - "./prefetch": "./dist/prefetch/index.js", - "./i18n": "./dist/i18n/index.js" + "./virtual-modules/*": "./dist/virtual-modules/*" }, "imports": { "#astro/*": "./dist/*.js" @@ -122,33 +112,33 @@ "test:e2e:match": "playwright test -g" }, "dependencies": { - "@astrojs/compiler": "^2.3.0", + "@astrojs/compiler": "^2.3.2", "@astrojs/internal-helpers": "workspace:*", "@astrojs/markdown-remark": "workspace:*", "@astrojs/telemetry": "workspace:*", - "@babel/core": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/parser": "^7.22.10", + "@babel/core": "^7.23.3", + "@babel/generator": "^7.23.3", + "@babel/parser": "^7.23.3", "@babel/plugin-transform-react-jsx": "^7.22.5", - "@babel/traverse": "^7.22.10", - "@babel/types": "^7.22.10", - "@types/babel__core": "^7.20.1", - "acorn": "^8.10.0", + "@babel/traverse": "^7.23.3", + "@babel/types": "^7.23.3", + "@types/babel__core": "^7.20.4", + "acorn": "^8.11.2", "boxen": "^7.1.1", "chokidar": "^3.5.3", - "ci-info": "^3.8.0", + "ci-info": "^4.0.0", "clsx": "^2.0.0", "common-ancestor-path": "^1.0.1", - "cookie": "^0.5.0", + "cookie": "^0.6.0", "debug": "^4.3.4", - "deterministic-object-hash": "^1.3.1", + "deterministic-object-hash": "^2.0.1", "devalue": "^4.3.2", "diff": "^5.1.0", - "es-module-lexer": "^1.3.0", - "esbuild": "^0.19.2", + "es-module-lexer": "^1.4.1", + "esbuild": "^0.19.6", "estree-walker": "^3.0.3", "execa": "^8.0.1", - "fast-glob": "^3.3.1", + "fast-glob": "^3.3.2", "github-slugger": "^2.0.0", "gray-matter": "^4.0.3", "html-escaper": "^3.0.3", @@ -156,25 +146,25 @@ "js-yaml": "^4.1.0", "kleur": "^4.1.4", "magic-string": "^0.30.3", - "mdast-util-to-hast": "12.3.0", + "mdast-util-to-hast": "13.0.2", "mime": "^3.0.0", "ora": "^7.0.1", - "p-limit": "^4.0.0", + "p-limit": "^5.0.0", "p-queue": "^7.4.1", "path-to-regexp": "^6.2.1", "preferred-pm": "^3.1.2", "probe-image-size": "^7.2.3", "prompts": "^2.4.2", - "rehype": "^12.0.1", + "rehype": "^13.0.1", "resolve": "^1.22.4", "semver": "^7.5.4", "server-destroy": "^1.0.1", - "shikiji": "^0.6.8", - "string-width": "^6.1.0", + "shikiji": "^0.6.13", + "string-width": "^7.0.0", "strip-ansi": "^7.1.0", "tsconfck": "^3.0.0", - "unist-util-visit": "^4.1.2", - "vfile": "^5.3.7", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.1", "vite": "^5.0.0", "vitefu": "^0.2.4", "which-pm": "^2.1.1", @@ -185,31 +175,31 @@ "sharp": "^0.32.5" }, "devDependencies": { - "@astrojs/check": "^0.1.0", - "@playwright/test": "1.40.0-alpha-nov-13-2023", - "@types/babel__generator": "^7.6.4", - "@types/babel__traverse": "^7.20.1", - "@types/chai": "^4.3.5", - "@types/common-ancestor-path": "^1.0.0", - "@types/connect": "^3.4.35", - "@types/cookie": "^0.5.1", - "@types/debug": "^4.1.8", - "@types/diff": "^5.0.3", - "@types/dom-view-transitions": "^1.0.1", - "@types/estree": "^1.0.1", - "@types/hast": "^2.3.5", - "@types/html-escaper": "^3.0.0", - "@types/http-cache-semantics": "^4.0.1", - "@types/js-yaml": "^4.0.5", - "@types/mime": "^3.0.1", - "@types/mocha": "^10.0.1", - "@types/probe-image-size": "^7.2.0", - "@types/prompts": "^2.4.4", - "@types/resolve": "^1.20.2", - "@types/send": "^0.17.1", - "@types/server-destroy": "^1.0.1", - "@types/unist": "^2.0.7", - "@types/yargs-parser": "^21.0.0", + "@astrojs/check": "^0.3.1", + "@playwright/test": "1.40.0", + "@types/babel__generator": "^7.6.7", + "@types/babel__traverse": "^7.20.4", + "@types/chai": "^4.3.10", + "@types/common-ancestor-path": "^1.0.2", + "@types/connect": "^3.4.38", + "@types/cookie": "^0.5.4", + "@types/debug": "^4.1.12", + "@types/diff": "^5.0.8", + "@types/dom-view-transitions": "^1.0.4", + "@types/estree": "^1.0.5", + "@types/hast": "^3.0.3", + "@types/html-escaper": "^3.0.2", + "@types/http-cache-semantics": "^4.0.4", + "@types/js-yaml": "^4.0.9", + "@types/mime": "^3.0.4", + "@types/mocha": "^10.0.4", + "@types/probe-image-size": "^7.2.3", + "@types/prompts": "^2.4.8", + "@types/resolve": "^1.20.5", + "@types/send": "^0.17.4", + "@types/server-destroy": "^1.0.3", + "@types/unist": "^3.0.2", + "@types/yargs-parser": "^21.0.3", "astro-scripts": "workspace:*", "chai": "^4.3.7", "cheerio": "1.0.0-rc.12", @@ -218,14 +208,14 @@ "mocha": "^10.2.0", "node-mocks-http": "^1.13.0", "parse-srcset": "^1.0.2", - "rehype-autolink-headings": "^6.1.1", - "rehype-slug": "^5.0.1", + "rehype-autolink-headings": "^7.1.0", + "rehype-slug": "^6.0.0", "rehype-toc": "^3.0.2", "remark-code-titles": "^0.1.2", - "rollup": "^4.4.1", - "sass": "^1.66.1", + "rollup": "^4.5.0", + "sass": "^1.69.5", "srcset-parse": "^1.1.0", - "unified": "^10.1.2" + "unified": "^11.0.4" }, "engines": { "node": ">=18.14.1", diff --git a/packages/astro/performance/content-benchmark.mjs b/packages/astro/performance/content-benchmark.mjs index 14f9b598e3b3..c2d1d69184de 100644 --- a/packages/astro/performance/content-benchmark.mjs +++ b/packages/astro/performance/content-benchmark.mjs @@ -44,14 +44,14 @@ async function benchmark({ fixtures, templates, numPosts }) { const test = Array.isArray(flags.test) ? flags.test : typeof flags.test === 'string' - ? [flags.test] - : ['simple', 'with-astro-components', 'with-react-components']; + ? [flags.test] + : ['simple', 'with-astro-components', 'with-react-components']; const formats = Array.isArray(flags.format) ? flags.format : typeof flags.format === 'string' - ? [flags.format] - : ['md', 'mdx', 'mdoc']; + ? [flags.format] + : ['md', 'mdx', 'mdoc']; const numPosts = flags.numPosts || 1000; diff --git a/packages/astro/performance/fixtures/md/package.json b/packages/astro/performance/fixtures/md/package.json index ff7b1dec0df6..4dea64d76530 100644 --- a/packages/astro/performance/fixtures/md/package.json +++ b/packages/astro/performance/fixtures/md/package.json @@ -16,8 +16,8 @@ "dependencies": { "@astrojs/react": "workspace:*", "@performance/utils": "workspace:*", - "@types/react": "^18.2.21", - "@types/react-dom": "^18.2.7", + "@types/react": "^18.2.37", + "@types/react-dom": "^18.2.15", "astro": "workspace:*", "react": "^18.0.0", "react-dom": "^18.0.0" diff --git a/packages/astro/performance/fixtures/mdoc/package.json b/packages/astro/performance/fixtures/mdoc/package.json index 351ef15e4948..a25e69c971b2 100644 --- a/packages/astro/performance/fixtures/mdoc/package.json +++ b/packages/astro/performance/fixtures/mdoc/package.json @@ -17,8 +17,8 @@ "@astrojs/markdoc": "workspace:*", "@astrojs/react": "workspace:*", "@performance/utils": "workspace:*", - "@types/react": "^18.2.21", - "@types/react-dom": "^18.2.7", + "@types/react": "^18.2.37", + "@types/react-dom": "^18.2.15", "astro": "workspace:*", "react": "^18.0.0", "react-dom": "^18.0.0" diff --git a/packages/astro/performance/fixtures/mdx/package.json b/packages/astro/performance/fixtures/mdx/package.json index c2d4e368a872..2144dc225819 100644 --- a/packages/astro/performance/fixtures/mdx/package.json +++ b/packages/astro/performance/fixtures/mdx/package.json @@ -17,8 +17,8 @@ "@astrojs/mdx": "workspace:*", "@astrojs/react": "workspace:*", "@performance/utils": "workspace:*", - "@types/react": "^18.2.21", - "@types/react-dom": "^18.2.7", + "@types/react": "^18.2.37", + "@types/react-dom": "^18.2.15", "astro": "workspace:*", "react": "^18.0.0", "react-dom": "^18.0.0" diff --git a/packages/astro/performance/package.json b/packages/astro/performance/package.json index e09f291736c2..25bfad16b4af 100644 --- a/packages/astro/performance/package.json +++ b/packages/astro/performance/package.json @@ -11,7 +11,7 @@ "author": "", "license": "ISC", "devDependencies": { - "@types/yargs-parser": "^21.0.0", + "@types/yargs-parser": "^21.0.3", "cross-env": "^7.0.3", "kleur": "^4.1.5", "npm-run-all": "^4.1.5", diff --git a/packages/astro/src/@types/astro.ts b/packages/astro/src/@types/astro.ts index f15cf7d09630..778b55080b72 100644 --- a/packages/astro/src/@types/astro.ts +++ b/packages/astro/src/@types/astro.ts @@ -19,14 +19,19 @@ import type { AstroConfigType } from '../core/config/index.js'; import type { AstroTimer } from '../core/config/timer.js'; import type { TSConfig } from '../core/config/tsconfig.js'; import type { AstroCookies } from '../core/cookies/index.js'; -import type { ResponseWithEncoding } from '../core/endpoint/index.js'; import type { AstroIntegrationLogger, Logger, LoggerLevel } from '../core/logger/core.js'; import type { AstroDevOverlay, DevOverlayCanvas } from '../runtime/client/dev-overlay/overlay.js'; -import type { DevOverlayHighlight } from '../runtime/client/dev-overlay/ui-library/highlight.js'; import type { Icon } from '../runtime/client/dev-overlay/ui-library/icons.js'; -import type { DevOverlayToggle } from '../runtime/client/dev-overlay/ui-library/toggle.js'; -import type { DevOverlayTooltip } from '../runtime/client/dev-overlay/ui-library/tooltip.js'; -import type { DevOverlayWindow } from '../runtime/client/dev-overlay/ui-library/window.js'; +import type { + DevOverlayBadge, + DevOverlayButton, + DevOverlayCard, + DevOverlayHighlight, + DevOverlayIcon, + DevOverlayToggle, + DevOverlayTooltip, + DevOverlayWindow, +} from '../runtime/client/dev-overlay/ui-library/index.js'; import type { AstroComponentFactory, AstroComponentInstance } from '../runtime/server/index.js'; import type { OmitIndexSignature, Simplify } from '../type-utils.js'; import type { SUPPORTED_MARKDOWN_FILE_EXTENSIONS } from './../core/constants.js'; @@ -143,7 +148,6 @@ export interface CLIFlags { host?: string | boolean; port?: number; config?: string; - drafts?: boolean; open?: boolean; } @@ -886,33 +890,6 @@ export interface AstroUserConfig { * ``` */ inlineStylesheets?: 'always' | 'auto' | 'never'; - - /** - * @docs - * @name build.split - * @type {boolean} - * @default `false` - * @deprecated Deprecated since version 3.0. - * @description - * The build config option `build.split` has been replaced by the adapter configuration option [`functionPerRoute`](/en/reference/adapter-reference/#functionperroute). - * - * Please see your [SSR adapter's documentation](/en/guides/integrations-guide/#official-integrations) for using `functionPerRoute` to define how your SSR code is bundled. - * - */ - split?: boolean; - - /** - * @docs - * @name build.excludeMiddleware - * @type {boolean} - * @default `false` - * @deprecated Deprecated since version 3.0. - * @description - * The build config option `build.excludeMiddleware` has been replaced by the adapter configuration option [`edgeMiddleware`](/en/reference/adapter-reference/#edgemiddleware). - * - * Please see your [SSR adapter's documentation](/en/guides/integrations-guide/#official-integrations) for using `edgeMiddleware` to define whether or not any SSR middleware code will be bundled when built. - */ - excludeMiddleware?: boolean; }; /** @@ -1183,28 +1160,6 @@ export interface AstroUserConfig { * @name Markdown Options */ markdown?: { - /** - * @docs - * @name markdown.drafts - * @type {boolean} - * @default `false` - * @deprecated Deprecated since version 3.0. Use content collections instead. - * @description - * Control whether Markdown draft pages should be included in the build. - * - * A Markdown page is considered a draft if it includes `draft: true` in its frontmatter. Draft pages are always included & visible during development (`astro dev`) but by default they will not be included in your final build. - * - * ```js - * { - * markdown: { - * // Example: Include all drafts in your final build - * drafts: true, - * } - * } - * ``` - */ - drafts?: boolean; - /** * @docs * @name markdown.shikiConfig @@ -1317,7 +1272,7 @@ export interface AstroUserConfig { * { * markdown: { * // Example: Translate the footnotes text to another language, here are the default English values - * remarkRehype: { footnoteLabel: "Footnotes", footnoteBackLabel: "Back to content"}, + * remarkRehype: { footnoteLabel: "Footnotes", footnoteBackLabel: "Back to reference 1"}, * }, * }; * ``` @@ -1578,7 +1533,7 @@ export type InjectedScriptStage = 'before-hydration' | 'head-inline' | 'page' | export interface InjectedRoute { pattern: string; - entryPoint: string; + entrypoint: string; prerender?: boolean; } @@ -1749,10 +1704,6 @@ export interface ComponentInstance { css?: string[]; partial?: boolean; prerender?: boolean; - /** - * Only used for logging if deprecated drafts feature is used - */ - frontmatter?: Record<string, any>; getStaticPaths?: (options: GetStaticPathsOptions) => GetStaticPathsResult; } @@ -2056,11 +2007,9 @@ export interface AstroAdapter { * * If the adapter is not able to handle certain configurations, Astro will throw an error. */ - supportedAstroFeatures?: AstroFeatureMap; + supportedAstroFeatures: AstroFeatureMap; } -type Body = string; - export type ValidRedirectStatus = 300 | 301 | 302 | 303 | 304 | 307 | 308; // Shared types between `Astro` global and API context object @@ -2112,6 +2061,11 @@ interface AstroSharedContext< */ preferredLocaleList: string[] | undefined; + + /** + * The current locale computed from the URL of the request. It matches the locales in `i18n.locales`, and returns `undefined` otherwise. + */ + currentLocale: string | undefined; } export interface APIContext< @@ -2140,7 +2094,7 @@ export interface APIContext< * ]; * } * - * export async function get({ params }) { + * export async function GET({ params }) { * return { * body: `Hello user ${params.id}!`, * } @@ -2163,7 +2117,7 @@ export interface APIContext< * ]; * } * - * export function get({ props }) { + * export function GET({ props }) { * return { * body: `Hello ${props.name}!`, * } @@ -2179,7 +2133,7 @@ export interface APIContext< * Example usage: * ```ts * // src/pages/secret.ts - * export function get({ redirect }) { + * export function GET({ redirect }) { * return redirect('/login'); * } * ``` @@ -2212,7 +2166,6 @@ export interface APIContext< * ``` */ locals: App.Locals; - ResponseWithEncoding: typeof ResponseWithEncoding; /** * Available only when `experimental.i18n` enabled and in SSR. @@ -2241,24 +2194,19 @@ export interface APIContext< * [quality value]: https://developer.mozilla.org/en-US/docs/Glossary/Quality_values */ preferredLocaleList: string[] | undefined; -} -export type EndpointOutput = - | { - body: Body; - encoding?: BufferEncoding; - } - | { - body: Uint8Array; - encoding: 'binary'; - }; + /** + * The current locale computed from the URL of the request. It matches the locales in `i18n.locales`, and returns `undefined` otherwise. + */ + currentLocale: string | undefined; +} export type APIRoute<Props extends Record<string, any> = Record<string, any>> = ( context: APIContext<Props> -) => EndpointOutput | Response | Promise<EndpointOutput | Response>; +) => Response | Promise<Response>; export interface EndpointHandler { - [method: string]: APIRoute | ((params: Params, request: Request) => EndpointOutput | Response); + [method: string]: APIRoute | ((params: Params, request: Request) => Response); } export type Props = Record<string, unknown>; @@ -2363,20 +2311,16 @@ export interface AstroIntegration { }; } -export type MiddlewareNext<R> = () => Promise<R>; -export type MiddlewareHandler<R> = ( +export type MiddlewareNext = () => Promise<Response>; +export type MiddlewareHandler = ( context: APIContext, - next: MiddlewareNext<R> -) => Promise<R> | R | Promise<void> | void; - -export type MiddlewareResponseHandler = MiddlewareHandler<Response>; -export type MiddlewareEndpointHandler = MiddlewareHandler<Response | EndpointOutput>; -export type MiddlewareNextResponse = MiddlewareNext<Response>; + next: MiddlewareNext +) => Promise<Response> | Response | Promise<void> | void; // NOTE: when updating this file with other functions, // remember to update `plugin-page.ts` too, to add that function as a no-op function. -export type AstroMiddlewareInstance<R> = { - onRequest?: MiddlewareHandler<R>; +export type AstroMiddlewareInstance = { + onRequest?: MiddlewareHandler; }; export type AstroIntegrationMiddleware = { @@ -2424,16 +2368,21 @@ export interface RouteData { prerender: boolean; redirect?: RedirectConfig; redirectRoute?: RouteData; + fallbackRoutes: RouteData[]; } export type RedirectRouteData = RouteData & { redirect: string; }; -export type SerializedRouteData = Omit<RouteData, 'generate' | 'pattern' | 'redirectRoute'> & { +export type SerializedRouteData = Omit< + RouteData, + 'generate' | 'pattern' | 'redirectRoute' | 'fallbackRoutes' +> & { generate: undefined; pattern: string; redirectRoute: SerializedRouteData | undefined; + fallbackRoutes: SerializedRouteData[]; _meta: { trailingSlash: AstroConfig['trailingSlash']; }; @@ -2569,6 +2518,8 @@ export type DevOverlayMetadata = Window & typeof globalThis & { __astro_dev_overlay__: { root: string; + version: string; + debugInfo: string; }; }; @@ -2580,5 +2531,9 @@ declare global { 'astro-dev-overlay-tooltip': DevOverlayTooltip; 'astro-dev-overlay-highlight': DevOverlayHighlight; 'astro-dev-overlay-toggle': DevOverlayToggle; + 'astro-dev-overlay-badge': DevOverlayBadge; + 'astro-dev-overlay-button': DevOverlayButton; + 'astro-dev-overlay-icon': DevOverlayIcon; + 'astro-dev-overlay-card': DevOverlayCard; } } diff --git a/packages/astro/src/assets/internal.ts b/packages/astro/src/assets/internal.ts index 46319ed3bc4c..9e615d5c988a 100644 --- a/packages/astro/src/assets/internal.ts +++ b/packages/astro/src/assets/internal.ts @@ -19,7 +19,7 @@ export function injectImageEndpoint(settings: AstroSettings, mode: 'dev' | 'buil settings.injectedRoutes.push({ pattern: '/_image', - entryPoint: endpointEntrypoint, + entrypoint: endpointEntrypoint, prerender: false, }); diff --git a/packages/astro/src/cli/add/index.ts b/packages/astro/src/cli/add/index.ts index 42b16066577e..80c0e10ff760 100644 --- a/packages/astro/src/cli/add/index.ts +++ b/packages/astro/src/cli/add/index.ts @@ -731,8 +731,11 @@ async function fetchPackageJson( const res = await fetch(`${registry}/${packageName}/${tag}`); if (res.status >= 200 && res.status < 300) { return await res.json(); - } else { + } else if (res.status === 404) { + // 404 means the package doesn't exist, so we don't need an error message here return new Error(); + } else { + return new Error(`Failed to fetch ${registry}/${packageName}/${tag} - GET ${res.status}`); } } @@ -754,6 +757,9 @@ export async function validateIntegrations(integrations: string[]): Promise<Inte } else { const firstPartyPkgCheck = await fetchPackageJson('@astrojs', name, tag); if (firstPartyPkgCheck instanceof Error) { + if (firstPartyPkgCheck.message) { + spinner.warn(yellow(firstPartyPkgCheck.message)); + } spinner.warn( yellow(`${bold(integration)} is not an official Astro package. Use at your own risk!`) ); @@ -780,6 +786,9 @@ export async function validateIntegrations(integrations: string[]): Promise<Inte if (pkgType === 'third-party') { const thirdPartyPkgCheck = await fetchPackageJson(scope, name, tag); if (thirdPartyPkgCheck instanceof Error) { + if (thirdPartyPkgCheck.message) { + spinner.warn(yellow(thirdPartyPkgCheck.message)); + } throw new Error(`Unable to fetch ${bold(integration)}. Does the package exist?`); } else { pkgJson = thirdPartyPkgCheck as any; diff --git a/packages/astro/src/cli/build/index.ts b/packages/astro/src/cli/build/index.ts index 1a7d5aa52048..15ff584317d9 100644 --- a/packages/astro/src/cli/build/index.ts +++ b/packages/astro/src/cli/build/index.ts @@ -14,7 +14,6 @@ export async function build({ flags }: BuildOptions) { usage: '[...flags]', tables: { Flags: [ - ['--drafts', `Include Markdown draft pages in the build.`], ['--outDir <directory>', `Specify the output directory for the build.`], ['--help (-h)', 'See all available flags.'], ], diff --git a/packages/astro/src/cli/flags.ts b/packages/astro/src/cli/flags.ts index c97f1801acf1..c384d98671b8 100644 --- a/packages/astro/src/cli/flags.ts +++ b/packages/astro/src/cli/flags.ts @@ -15,9 +15,6 @@ export function flagsToAstroInlineConfig(flags: Flags): AstroInlineConfig { site: typeof flags.site === 'string' ? flags.site : undefined, base: typeof flags.base === 'string' ? flags.base : undefined, outDir: typeof flags.outDir === 'string' ? flags.outDir : undefined, - markdown: { - drafts: typeof flags.drafts === 'boolean' ? flags.drafts : undefined, - }, server: { port: typeof flags.port === 'number' ? flags.port : undefined, host: diff --git a/packages/astro/src/cli/info/index.ts b/packages/astro/src/cli/info/index.ts index 46e7d3c6978c..c6586b28d2a4 100644 --- a/packages/astro/src/cli/info/index.ts +++ b/packages/astro/src/cli/info/index.ts @@ -4,6 +4,7 @@ import { execSync } from 'node:child_process'; import { arch, platform } from 'node:os'; import prompts from 'prompts'; import type yargs from 'yargs-parser'; +import type { AstroConfig, AstroUserConfig } from '../../@types/astro.js'; import { resolveConfig } from '../../core/config/index.js'; import { ASTRO_VERSION } from '../../core/constants.js'; import { flagsToAstroInlineConfig } from '../flags.js'; @@ -12,7 +13,13 @@ interface InfoOptions { flags: yargs.Arguments; } -export async function printInfo({ flags }: InfoOptions) { +export async function getInfoOutput({ + userConfig, + print, +}: { + userConfig: AstroUserConfig | AstroConfig; + print: boolean; +}): Promise<string> { const rows: Array<[string, string | string[]]> = [ ['Astro', `v${ASTRO_VERSION}`], ['Node', process.version], @@ -20,9 +27,7 @@ export async function printInfo({ flags }: InfoOptions) { ['Package Manager', getPackageManager()], ]; - const inlineConfig = flagsToAstroInlineConfig(flags); try { - const { userConfig } = await resolveConfig(inlineConfig, 'info'); rows.push(['Output', userConfig.output ?? 'static']); rows.push(['Adapter', userConfig.adapter?.name ?? 'none']); const integrations = (userConfig?.integrations ?? []) @@ -35,10 +40,17 @@ export async function printInfo({ flags }: InfoOptions) { let output = ''; for (const [label, value] of rows) { - output += printRow(label, value); + output += printRow(label, value, print); } - await copyToClipboard(output.trim()); + return output.trim(); +} + +export async function printInfo({ flags }: InfoOptions) { + const { userConfig } = await resolveConfig(flagsToAstroInlineConfig(flags), 'info'); + const output = await getInfoOutput({ userConfig, print: true }); + + await copyToClipboard(output); } async function copyToClipboard(text: string) { @@ -105,7 +117,7 @@ function getPackageManager() { } const MAX_PADDING = 25; -function printRow(label: string, value: string | string[]) { +function printRow(label: string, value: string | string[], print: boolean) { const padding = MAX_PADDING - label.length; const [first, ...rest] = Array.isArray(value) ? value : [value]; let plaintext = `${label}${' '.repeat(padding)}${first}`; @@ -117,6 +129,8 @@ function printRow(label: string, value: string | string[]) { } } plaintext += '\n'; - console.log(richtext); + if (print) { + console.log(richtext); + } return plaintext; } diff --git a/packages/astro/src/core/app/index.ts b/packages/astro/src/core/app/index.ts index 4c6fb5783e76..ee50fc343581 100644 --- a/packages/astro/src/core/app/index.ts +++ b/packages/astro/src/core/app/index.ts @@ -1,7 +1,6 @@ import type { EndpointHandler, ManifestData, - MiddlewareEndpointHandler, RouteData, SSRElement, SSRManifest, @@ -36,9 +35,11 @@ const responseSentSymbol = Symbol.for('astro.responseSent'); const STATUS_CODES = new Set([404, 500]); -export interface MatchOptions { - matchNotFound?: boolean | undefined; +export interface RenderOptions { + routeData?: RouteData; + locals?: object; } + export interface RenderErrorOptions { routeData?: RouteData; response?: Response; @@ -63,6 +64,7 @@ export class App { #baseWithoutTrailingSlash: string; #pipeline: SSRRoutePipeline; #adapterLogger: AstroIntegrationLogger; + #renderOptionsDeprecationWarningShown = false; constructor(manifest: SSRManifest, streaming = true) { this.#manifest = manifest; @@ -127,7 +129,14 @@ export class App { } return pathname; } - match(request: Request, _opts: MatchOptions = {}): RouteData | undefined { + + #getPathnameFromRequest(request: Request): string { + const url = new URL(request.url); + const pathname = prependForwardSlash(this.removeBase(url.pathname)); + return pathname; + } + + match(request: Request): RouteData | undefined { const url = new URL(request.url); // ignore requests matching public assets if (this.#manifest.assets.has(url.pathname)) return undefined; @@ -138,7 +147,32 @@ export class App { return routeData; } - async render(request: Request, routeData?: RouteData, locals?: object): Promise<Response> { + async render(request: Request, options?: RenderOptions): Promise<Response> + /** + * @deprecated Instead of passing `RouteData` and locals individually, pass an object with `routeData` and `locals` properties. + * See https://github.com/withastro/astro/pull/9199 for more information. + */ + async render(request: Request, routeData?: RouteData, locals?: object): Promise<Response> + async render(request: Request, routeDataOrOptions?: RouteData | RenderOptions, maybeLocals?: object): Promise<Response> { + let routeData: RouteData | undefined; + let locals: object | undefined; + + if (routeDataOrOptions && ('routeData' in routeDataOrOptions || 'locals' in routeDataOrOptions)) { + if ('routeData' in routeDataOrOptions) { + routeData = routeDataOrOptions.routeData; + } + if ('locals' in routeDataOrOptions) { + locals = routeDataOrOptions.locals; + } + } + else { + routeData = routeDataOrOptions as RouteData | undefined; + locals = maybeLocals; + if (routeDataOrOptions || locals) { + this.#logRenderOptionsDeprecationWarning(); + } + } + // Handle requests with duplicate slashes gracefully by cloning with a cleaned-up request URL if (request.url !== collapseDuplicateSlashes(request.url)) { request = new Request(collapseDuplicateSlashes(request.url), request); @@ -149,9 +183,9 @@ export class App { if (!routeData) { return this.#renderError(request, { status: 404 }); } - Reflect.set(request, clientLocalsSymbol, locals ?? {}); - const defaultStatus = this.#getDefaultStatusCode(routeData.route); + const pathname = this.#getPathnameFromRequest(request); + const defaultStatus = this.#getDefaultStatusCode(routeData, pathname); const mod = await this.#getModuleForRoute(routeData); const pageModule = (await mod.page()) as any; @@ -173,16 +207,14 @@ export class App { ); if (i18nMiddleware) { if (mod.onRequest) { - this.#pipeline.setMiddlewareFunction( - sequence(i18nMiddleware, mod.onRequest as MiddlewareEndpointHandler) - ); + this.#pipeline.setMiddlewareFunction(sequence(i18nMiddleware, mod.onRequest)); } else { this.#pipeline.setMiddlewareFunction(i18nMiddleware); } this.#pipeline.onBeforeRenderRoute(i18nPipelineHook); } else { if (mod.onRequest) { - this.#pipeline.setMiddlewareFunction(mod.onRequest as MiddlewareEndpointHandler); + this.#pipeline.setMiddlewareFunction(mod.onRequest); } } response = await this.#pipeline.renderRoute(renderContext, pageModule); @@ -208,6 +240,12 @@ export class App { return response; } + #logRenderOptionsDeprecationWarning() { + if (this.#renderOptionsDeprecationWarningShown) return; + this.#logger.warn("deprecated", `The adapter ${this.#manifest.adapterName} is using a deprecated signature of the 'app.render()' method. From Astro 4.0, locals and routeData are provided as properties on an optional object to this method. Using the old signature will cause an error in Astro 5.0. See https://github.com/withastro/astro/pull/9199 for more information.`) + this.#renderOptionsDeprecationWarningShown = true; + } + setCookieHeaders(response: Response) { return getSetCookiesFromResponse(response); } @@ -234,7 +272,9 @@ export class App { status, env: this.#pipeline.env, mod: handler as any, - locales: this.#manifest.i18n ? this.#manifest.i18n.locales : undefined, + locales: this.#manifest.i18n?.locales, + routingStrategy: this.#manifest.i18n?.routingStrategy, + defaultLocale: this.#manifest.i18n?.defaultLocale, }); } else { const pathname = prependForwardSlash(this.removeBase(url.pathname)); @@ -269,7 +309,9 @@ export class App { status, mod, env: this.#pipeline.env, - locales: this.#manifest.i18n ? this.#manifest.i18n.locales : undefined, + locales: this.#manifest.i18n?.locales, + routingStrategy: this.#manifest.i18n?.routingStrategy, + defaultLocale: this.#manifest.i18n?.defaultLocale, }); } } @@ -310,7 +352,7 @@ export class App { ); const page = (await mod.page()) as any; if (skipMiddleware === false && mod.onRequest) { - this.#pipeline.setMiddlewareFunction(mod.onRequest as MiddlewareEndpointHandler); + this.#pipeline.setMiddlewareFunction(mod.onRequest); } if (skipMiddleware) { // make sure middleware set by other requests is cleared out @@ -355,8 +397,8 @@ export class App { const status = override?.status ? override.status : oldResponse.status === 200 - ? newResponse.status - : oldResponse.status; + ? newResponse.status + : oldResponse.status; return new Response(newResponse.body, { status, @@ -365,8 +407,15 @@ export class App { }); } - #getDefaultStatusCode(route: string): number { - route = removeTrailingForwardSlash(route); + #getDefaultStatusCode(routeData: RouteData, pathname: string): number { + if (!routeData.pattern.exec(pathname)) { + for (const fallbackRoute of routeData.fallbackRoutes) { + if (fallbackRoute.pattern.test(pathname)) { + return 302; + } + } + } + const route = removeTrailingForwardSlash(routeData.route); if (route.endsWith('/404')) return 404; if (route.endsWith('/500')) return 500; return 200; diff --git a/packages/astro/src/core/app/node.ts b/packages/astro/src/core/app/node.ts index 1df931eca22e..1c4ced2b40ca 100644 --- a/packages/astro/src/core/app/node.ts +++ b/packages/astro/src/core/app/node.ts @@ -1,11 +1,12 @@ import type { RouteData } from '../../@types/astro.js'; import type { SerializedSSRManifest, SSRManifest } from './types.js'; +import type { RenderOptions } from './index.js'; import * as fs from 'node:fs'; import { IncomingMessage } from 'node:http'; import { TLSSocket } from 'node:tls'; import { deserializeManifest } from './common.js'; -import { App, type MatchOptions } from './index.js'; +import { App } from './index.js'; export { apply as applyPolyfills } from '../polyfill.js'; const clientAddressSymbol = Symbol.for('astro.clientAddress'); @@ -108,19 +109,26 @@ class NodeIncomingMessage extends IncomingMessage { } export class NodeApp extends App { - match(req: NodeIncomingMessage | Request, opts: MatchOptions = {}) { + match(req: NodeIncomingMessage | Request) { if (!(req instanceof Request)) { req = createRequestFromNodeRequest(req, { emptyBody: true, }); } - return super.match(req, opts); + return super.match(req); } - render(req: NodeIncomingMessage | Request, routeData?: RouteData, locals?: object) { + render(request: NodeIncomingMessage | Request, options?: RenderOptions): Promise<Response> + /** + * @deprecated Instead of passing `RouteData` and locals individually, pass an object with `routeData` and `locals` properties. + * See https://github.com/withastro/astro/pull/9199 for more information. + */ + render(request: NodeIncomingMessage | Request, routeData?: RouteData, locals?: object): Promise<Response> + render(req: NodeIncomingMessage | Request, routeDataOrOptions?: RouteData | RenderOptions, maybeLocals?: object) { if (!(req instanceof Request)) { req = createRequestFromNodeRequest(req); } - return super.render(req, routeData, locals); + // @ts-expect-error The call would have succeeded against the implementation, but implementation signatures of overloads are not externally visible. + return super.render(req, routeDataOrOptions, maybeLocals); } } diff --git a/packages/astro/src/core/build/buildPipeline.ts b/packages/astro/src/core/build/buildPipeline.ts index fc315ff7dba2..87166b4f4a1b 100644 --- a/packages/astro/src/core/build/buildPipeline.ts +++ b/packages/astro/src/core/build/buildPipeline.ts @@ -142,15 +142,15 @@ export class BuildPipeline extends Pipeline { retrieveRoutesToGenerate(): Map<PageBuildData, string> { const pages = new Map<PageBuildData, string>(); - for (const [entryPoint, filePath] of this.#internals.entrySpecifierToBundleMap) { + for (const [entrypoint, filePath] of this.#internals.entrySpecifierToBundleMap) { // virtual pages can be emitted with different prefixes: // - the classic way are pages emitted with prefix ASTRO_PAGE_RESOLVED_MODULE_ID -> plugin-pages // - pages emitted using `build.split`, in this case pages are emitted with prefix RESOLVED_SPLIT_MODULE_ID if ( - entryPoint.includes(ASTRO_PAGE_RESOLVED_MODULE_ID) || - entryPoint.includes(RESOLVED_SPLIT_MODULE_ID) + entrypoint.includes(ASTRO_PAGE_RESOLVED_MODULE_ID) || + entrypoint.includes(RESOLVED_SPLIT_MODULE_ID) ) { - const [, pageName] = entryPoint.split(':'); + const [, pageName] = entrypoint.split(':'); const pageData = this.#internals.pagesByComponent.get( `${pageName.replace(ASTRO_PAGE_EXTENSION_POST_PATTERN, '.')}` ); @@ -164,17 +164,15 @@ export class BuildPipeline extends Pipeline { } } - for (const [path, pageDataList] of this.#internals.pagesByComponents.entries()) { - for (const pageData of pageDataList) { - if (routeIsRedirect(pageData.route)) { - pages.set(pageData, path); - } else if ( - routeIsFallback(pageData.route) && - (i18nHasFallback(this.getConfig()) || - (routeIsFallback(pageData.route) && pageData.route.route === '/')) - ) { - pages.set(pageData, path); - } + for (const [path, pageData] of this.#internals.pagesByComponent.entries()) { + if (routeIsRedirect(pageData.route)) { + pages.set(pageData, path); + } else if ( + routeIsFallback(pageData.route) && + (i18nHasFallback(this.getConfig()) || + (routeIsFallback(pageData.route) && pageData.route.route === '/')) + ) { + pages.set(pageData, path); } } diff --git a/packages/astro/src/core/build/generate.ts b/packages/astro/src/core/build/generate.ts index 2beb85d62ee5..a7d286b4054c 100644 --- a/packages/astro/src/core/build/generate.ts +++ b/packages/astro/src/core/build/generate.ts @@ -4,12 +4,10 @@ import os from 'node:os'; import { fileURLToPath } from 'node:url'; import PQueue from 'p-queue'; import type { OutputAsset, OutputChunk } from 'rollup'; -import type { BufferEncoding } from 'vfile'; import type { AstroSettings, ComponentInstance, GetStaticPathsItem, - MiddlewareEndpointHandler, RouteData, RouteType, SSRError, @@ -112,16 +110,6 @@ async function getEntryForFallbackRoute( return RedirectSinglePageBuiltModule; } -function shouldSkipDraft(pageModule: ComponentInstance, settings: AstroSettings): boolean { - return ( - // Drafts are disabled - !settings.config.markdown.drafts && - // This is a draft post - 'frontmatter' in pageModule && - (pageModule as any).frontmatter?.draft === true - ); -} - // Gives back a facadeId that is relative to the root. // ie, src/pages/index.astro instead of /Users/name..../src/pages/index.astro export function rootRelativeFacadeId(facadeId: string, settings: AstroSettings): string { @@ -186,11 +174,7 @@ export async function generatePages(opts: StaticBuildOptions, internals: BuildIn if (pageData.route.prerender) { const ssrEntryURLPage = createEntryURL(filePath, outFolder); const ssrEntryPage = await import(ssrEntryURLPage.toString()); - if ( - // TODO: remove in Astro 4.0 - opts.settings.config.build.split || - opts.settings.adapter?.adapterFeatures?.functionPerRoute - ) { + if (opts.settings.adapter?.adapterFeatures?.functionPerRoute) { // forcing to use undefined, so we fail in an expected way if the module is not even there. const ssrEntry = ssrEntryPage?.pageModule; if (ssrEntry) { @@ -245,10 +229,7 @@ export async function generatePages(opts: StaticBuildOptions, internals: BuildIn await queue.onIdle(); const assetsTimeEnd = performance.now(); - logger.info( - null, - green(`✓ Completed in ${getTimeStat(assetsTimer, assetsTimeEnd)}.\n`) - ); + logger.info(null, green(`✓ Completed in ${getTimeStat(assetsTimer, assetsTimeEnd)}.\n`)); delete globalThis?.astroAsset?.addStaticImage; } @@ -287,15 +268,13 @@ async function generatePage( ); if (config.experimental.i18n && i18nMiddleware) { if (onRequest) { - pipeline.setMiddlewareFunction( - sequence(i18nMiddleware, onRequest as MiddlewareEndpointHandler) - ); + pipeline.setMiddlewareFunction(sequence(i18nMiddleware, onRequest)); } else { pipeline.setMiddlewareFunction(i18nMiddleware); } pipeline.onBeforeRenderRoute(i18nPipelineHook); } else if (onRequest) { - pipeline.setMiddlewareFunction(onRequest as MiddlewareEndpointHandler); + pipeline.setMiddlewareFunction(onRequest); } if (!pageModulePromise) { throw new Error( @@ -303,16 +282,6 @@ async function generatePage( ); } const pageModule = await pageModulePromise(); - // TODO: Remove in Astro 4.0 - if (shouldSkipDraft(pageModule, pipeline.getSettings())) { - logger.info(null, `${magenta('⚠️')} Skipping draft ${pageData.route.component}`); - logger.warn( - null, - `The drafts feature is deprecated. You should migrate to content collections instead. See https://docs.astro.build/en/guides/content-collections/#filtering-collection-queries for more information.` - ); - return; - } - const generationOptions: Readonly<GeneratePathOptions> = { pageData, linkIds, @@ -329,6 +298,9 @@ async function generatePage( : magenta('λ'); if (isRelativePath(pageData.route.component)) { logger.info(null, `${icon} ${pageData.route.route}`); + for (const fallbackRoute of pageData.route.fallbackRoutes) { + logger.info(null, `${icon} ${fallbackRoute.route}`); + } } else { logger.info(null, `${icon} ${pageData.route.component}`); } @@ -350,6 +322,13 @@ async function generatePage( } } +function* eachRouteInRouteData(data: PageBuildData) { + yield data.route; + for (const fallbackRoute of data.route.fallbackRoutes) { + yield fallbackRoute; + } +} + async function getPathsForRoute( pageData: PageBuildData, mod: ComponentInstance, @@ -362,56 +341,65 @@ async function getPathsForRoute( if (pageData.route.pathname) { paths.push(pageData.route.pathname); builtPaths.add(pageData.route.pathname); + for (const virtualRoute of pageData.route.fallbackRoutes) { + if (virtualRoute.pathname) { + paths.push(virtualRoute.pathname); + builtPaths.add(virtualRoute.pathname); + } + } } else { - const route = pageData.route; - const staticPaths = await callGetStaticPaths({ - mod, - route, - routeCache: opts.routeCache, - logger, - ssr: isServerLikeOutput(opts.settings.config), - }).catch((err) => { - logger.debug('build', `├── ${bold(red('✗'))} ${route.component}`); - throw err; - }); - - const label = staticPaths.length === 1 ? 'page' : 'pages'; - logger.debug( - 'build', - `├── ${bold(green('✔'))} ${route.component} → ${magenta( - `[${staticPaths.length} ${label}]` - )}` - ); + for (const route of eachRouteInRouteData(pageData)) { + const staticPaths = await callGetStaticPaths({ + mod, + route, + routeCache: opts.routeCache, + logger, + ssr: isServerLikeOutput(opts.settings.config), + }).catch((err) => { + logger.debug('build', `├── ${bold(red('✗'))} ${route.component}`); + throw err; + }); - paths = staticPaths - .map((staticPath) => { - try { - return route.generate(staticPath.params); - } catch (e) { - if (e instanceof TypeError) { - throw getInvalidRouteSegmentError(e, route, staticPath); - } - throw e; - } - }) - .filter((staticPath) => { - // The path hasn't been built yet, include it - if (!builtPaths.has(removeTrailingForwardSlash(staticPath))) { - return true; - } + const label = staticPaths.length === 1 ? 'page' : 'pages'; + logger.debug( + 'build', + `├── ${bold(green('✔'))} ${route.component} → ${magenta( + `[${staticPaths.length} ${label}]` + )}` + ); - // The path was already built once. Check the manifest to see if - // this route takes priority for the final URL. - // NOTE: The same URL may match multiple routes in the manifest. - // Routing priority needs to be verified here for any duplicate - // paths to ensure routing priority rules are enforced in the final build. - const matchedRoute = matchRoute(staticPath, opts.manifest); - return matchedRoute === route; - }); + paths.push( + ...staticPaths + .map((staticPath) => { + try { + return route.generate(staticPath.params); + } catch (e) { + if (e instanceof TypeError) { + throw getInvalidRouteSegmentError(e, route, staticPath); + } + throw e; + } + }) + .filter((staticPath) => { + // The path hasn't been built yet, include it + if (!builtPaths.has(removeTrailingForwardSlash(staticPath))) { + return true; + } + + // The path was already built once. Check the manifest to see if + // this route takes priority for the final URL. + // NOTE: The same URL may match multiple routes in the manifest. + // Routing priority needs to be verified here for any duplicate + // paths to ensure routing priority rules are enforced in the final build. + const matchedRoute = matchRoute(staticPath, opts.manifest); + return matchedRoute === route; + }) + ); - // Add each path to the builtPaths set, to avoid building it again later. - for (const staticPath of paths) { - builtPaths.add(removeTrailingForwardSlash(staticPath)); + // Add each path to the builtPaths set, to avoid building it again later. + for (const staticPath of paths) { + builtPaths.add(removeTrailingForwardSlash(staticPath)); + } } } @@ -498,99 +486,101 @@ async function generatePath(pathname: string, gopts: GeneratePathOptions, pipeli const manifest = pipeline.getManifest(); const { mod, scripts: hoistedScripts, styles: _styles, pageData } = gopts; - // This adds the page name to the array so it can be shown as part of stats. - if (pageData.route.type === 'page') { - addPageName(pathname, pipeline.getStaticBuildOptions()); - } - - pipeline.getEnvironment().logger.debug('build', `Generating: ${pathname}`); + for (const route of eachRouteInRouteData(pageData)) { + // This adds the page name to the array so it can be shown as part of stats. + if (route.type === 'page') { + addPageName(pathname, pipeline.getStaticBuildOptions()); + } - // may be used in the future for handling rel=modulepreload, rel=icon, rel=manifest etc. - const links = new Set<never>(); - const scripts = createModuleScriptsSet( - hoistedScripts ? [hoistedScripts] : [], - manifest.base, - manifest.assetsPrefix - ); - const styles = createStylesheetElementSet(_styles, manifest.base, manifest.assetsPrefix); + pipeline.getEnvironment().logger.debug('build', `Generating: ${pathname}`); - if (pipeline.getSettings().scripts.some((script) => script.stage === 'page')) { - const hashedFilePath = pipeline.getInternals().entrySpecifierToBundleMap.get(PAGE_SCRIPT_ID); - if (typeof hashedFilePath !== 'string') { - throw new Error(`Cannot find the built path for ${PAGE_SCRIPT_ID}`); - } - const src = createAssetLink(hashedFilePath, manifest.base, manifest.assetsPrefix); - scripts.add({ - props: { type: 'module', src }, - children: '', - }); - } + // may be used in the future for handling rel=modulepreload, rel=icon, rel=manifest etc. + const links = new Set<never>(); + const scripts = createModuleScriptsSet( + hoistedScripts ? [hoistedScripts] : [], + manifest.base, + manifest.assetsPrefix + ); + const styles = createStylesheetElementSet(_styles, manifest.base, manifest.assetsPrefix); - // Add all injected scripts to the page. - for (const script of pipeline.getSettings().scripts) { - if (script.stage === 'head-inline') { + if (pipeline.getSettings().scripts.some((script) => script.stage === 'page')) { + const hashedFilePath = pipeline.getInternals().entrySpecifierToBundleMap.get(PAGE_SCRIPT_ID); + if (typeof hashedFilePath !== 'string') { + throw new Error(`Cannot find the built path for ${PAGE_SCRIPT_ID}`); + } + const src = createAssetLink(hashedFilePath, manifest.base, manifest.assetsPrefix); scripts.add({ - props: {}, - children: script.content, + props: { type: 'module', src }, + children: '', }); } - } - const ssr = isServerLikeOutput(pipeline.getConfig()); - const url = getUrlForPath( - pathname, - pipeline.getConfig().base, - pipeline.getStaticBuildOptions().origin, - pipeline.getConfig().build.format, - pageData.route.type - ); + // Add all injected scripts to the page. + for (const script of pipeline.getSettings().scripts) { + if (script.stage === 'head-inline') { + scripts.add({ + props: {}, + children: script.content, + }); + } + } - const request = createRequest({ - url, - headers: new Headers(), - logger: pipeline.getLogger(), - ssr, - }); - const i18n = pipeline.getConfig().experimental.i18n; - const renderContext = await createRenderContext({ - pathname, - request, - componentMetadata: manifest.componentMetadata, - scripts, - styles, - links, - route: pageData.route, - env: pipeline.getEnvironment(), - mod, - locales: i18n ? i18n.locales : undefined, - }); + const ssr = isServerLikeOutput(pipeline.getConfig()); + const url = getUrlForPath( + pathname, + pipeline.getConfig().base, + pipeline.getStaticBuildOptions().origin, + pipeline.getConfig().build.format, + route.type + ); - let body: string | Uint8Array; - let encoding: BufferEncoding | undefined; + const request = createRequest({ + url, + headers: new Headers(), + logger: pipeline.getLogger(), + ssr, + }); + const i18n = pipeline.getConfig().experimental.i18n; + const renderContext = await createRenderContext({ + pathname, + request, + componentMetadata: manifest.componentMetadata, + scripts, + styles, + links, + route, + env: pipeline.getEnvironment(), + mod, + locales: i18n?.locales, + routingStrategy: i18n?.routingStrategy, + defaultLocale: i18n?.defaultLocale, + }); - let response: Response; - try { - response = await pipeline.renderRoute(renderContext, mod); - } catch (err) { - if (!AstroError.is(err) && !(err as SSRError).id && typeof err === 'object') { - (err as SSRError).id = pageData.component; - } - throw err; - } + let body: string | Uint8Array; - if (response.status >= 300 && response.status < 400) { - // If redirects is set to false, don't output the HTML - if (!pipeline.getConfig().build.redirects) { - return; + let response: Response; + try { + response = await pipeline.renderRoute(renderContext, mod); + } catch (err) { + if (!AstroError.is(err) && !(err as SSRError).id && typeof err === 'object') { + (err as SSRError).id = pageData.component; + } + throw err; } - const locationSite = getRedirectLocationOrThrow(response.headers); - const siteURL = pipeline.getConfig().site; - const location = siteURL ? new URL(locationSite, siteURL) : locationSite; - const fromPath = new URL(renderContext.request.url).pathname; - // A short delay causes Google to interpret the redirect as temporary. - // https://developers.google.com/search/docs/crawling-indexing/301-redirects#metarefresh - const delay = response.status === 302 ? 2 : 0; - body = `<!doctype html> + + if (response.status >= 300 && response.status < 400) { + // If redirects is set to false, don't output the HTML + if (!pipeline.getConfig().build.redirects) { + return; + } + const locationSite = getRedirectLocationOrThrow(response.headers); + const siteURL = pipeline.getConfig().site; + const location = siteURL ? new URL(locationSite, siteURL) : locationSite; + const fromPath = new URL(renderContext.request.url).pathname; + // A short delay causes Google to interpret the redirect as temporary. + // https://developers.google.com/search/docs/crawling-indexing/301-redirects#metarefresh + const delay = response.status === 302 ? 2 : 0; + body = `<!doctype html> <title>Redirecting to: ${location} @@ -598,26 +588,26 @@ async function generatePath(pathname: string, gopts: GeneratePathOptions, pipeli Redirecting from ${fromPath} to ${location} `; - if (pipeline.getConfig().compressHTML === true) { - body = body.replaceAll('\n', ''); - } - // A dynamic redirect, set the location so that integrations know about it. - if (pageData.route.type !== 'redirect') { - pageData.route.redirect = location.toString(); + if (pipeline.getConfig().compressHTML === true) { + body = body.replaceAll('\n', ''); + } + // A dynamic redirect, set the location so that integrations know about it. + if (route.type !== 'redirect') { + route.redirect = location.toString(); + } + } else { + // If there's no body, do nothing + if (!response.body) return; + body = Buffer.from(await response.arrayBuffer()); } - } else { - // If there's no body, do nothing - if (!response.body) return; - body = Buffer.from(await response.arrayBuffer()); - encoding = (response.headers.get('X-Astro-Encoding') as BufferEncoding | null) ?? 'utf-8'; - } - const outFolder = getOutFolder(pipeline.getConfig(), pathname, pageData.route.type); - const outFile = getOutFile(pipeline.getConfig(), outFolder, pathname, pageData.route.type); - pageData.route.distURL = outFile; + const outFolder = getOutFolder(pipeline.getConfig(), pathname, route.type); + const outFile = getOutFile(pipeline.getConfig(), outFolder, pathname, route.type); + route.distURL = outFile; - await fs.promises.mkdir(outFolder, { recursive: true }); - await fs.promises.writeFile(outFile, body, encoding); + await fs.promises.mkdir(outFolder, { recursive: true }); + await fs.promises.writeFile(outFile, body); + } } /** diff --git a/packages/astro/src/core/build/index.ts b/packages/astro/src/core/build/index.ts index 19f263a017a6..0245e50c2ff1 100644 --- a/packages/astro/src/core/build/index.ts +++ b/packages/astro/src/core/build/index.ts @@ -161,7 +161,7 @@ class AstroBuilder { this.logger.info('build', `output: ${blue('"' + this.settings.config.output + '"')}`); this.logger.info('build', `directory: ${blue(fileURLToPath(this.settings.config.outDir))}`); if (this.settings.adapter) { - this.logger.info('build', `adapter: ${green(this.settings.adapter.name)}`); + this.logger.info('build', `adapter: ${green(this.settings.adapter.name)}`); } this.logger.info('build', 'Collecting build info...'); this.timer.loadStart = performance.now(); @@ -253,32 +253,6 @@ class AstroBuilder { `the outDir cannot be the root folder. Please build to a folder such as dist.` ); } - - // TODO: Remove in Astro 4.0 - if (config.build.split === true) { - if (config.output === 'static') { - this.logger.warn( - 'config', - 'The option `build.split` won\'t take effect, because `output` is not `"server"` or `"hybrid"`.' - ); - } - this.logger.warn( - 'deprecated', - 'The option `build.split` is deprecated. Use the adapter options.' - ); - } - if (config.build.excludeMiddleware === true) { - if (config.output === 'static') { - this.logger.warn( - 'config', - 'The option `build.excludeMiddleware` won\'t take effect, because `output` is not `"server"` or `"hybrid"`.' - ); - } - this.logger.warn( - 'deprecated', - 'The option `build.excludeMiddleware` is deprecated. Use the adapter options.' - ); - } } /** Stats */ diff --git a/packages/astro/src/core/build/internal.ts b/packages/astro/src/core/build/internal.ts index 1dc38e73566b..34e76ab1df1b 100644 --- a/packages/astro/src/core/build/internal.ts +++ b/packages/astro/src/core/build/internal.ts @@ -2,7 +2,6 @@ import type { Rollup } from 'vite'; import type { RouteData, SSRResult } from '../../@types/astro.js'; import type { PageOptions } from '../../vite-plugin-astro/types.js'; import { prependForwardSlash, removeFileExtension } from '../path.js'; -import { routeIsFallback } from '../redirects/helpers.js'; import { viteID } from '../util.js'; import { ASTRO_PAGE_RESOLVED_MODULE_ID, @@ -38,16 +37,9 @@ export interface BuildInternals { /** * A map for page-specific information. - * // TODO: Remove in Astro 4.0 - * @deprecated */ pagesByComponent: Map; - /** - * TODO: Use this in Astro 4.0 - */ - pagesByComponents: Map; - /** * A map for page-specific output. */ @@ -126,7 +118,6 @@ export function createBuildInternals(): BuildInternals { entrySpecifierToBundleMap: new Map(), pageToBundleMap: new Map(), pagesByComponent: new Map(), - pagesByComponents: new Map(), pageOptionsByPage: new Map(), pagesByViteID: new Map(), pagesByClientOnly: new Map(), @@ -152,16 +143,7 @@ export function trackPageData( componentURL: URL ): void { pageData.moduleSpecifier = componentModuleId; - if (!routeIsFallback(pageData.route)) { - internals.pagesByComponent.set(component, pageData); - } - const list = internals.pagesByComponents.get(component); - if (list) { - list.push(pageData); - internals.pagesByComponents.set(component, list); - } else { - internals.pagesByComponents.set(component, [pageData]); - } + internals.pagesByComponent.set(component, pageData); internals.pagesByViteID.set(viteID(componentURL), pageData); } @@ -258,25 +240,23 @@ export function* eachPageData(internals: BuildInternals) { } export function* eachPageFromAllPages(allPages: AllPagesData): Generator<[string, PageBuildData]> { - for (const [path, list] of Object.entries(allPages)) { - for (const pageData of list) { - yield [path, pageData]; - } + for (const [path, pageData] of Object.entries(allPages)) { + yield [path, pageData]; } } export function* eachPageDataFromEntryPoint( internals: BuildInternals ): Generator<[PageBuildData, string]> { - for (const [entryPoint, filePath] of internals.entrySpecifierToBundleMap) { + for (const [entrypoint, filePath] of internals.entrySpecifierToBundleMap) { // virtual pages can be emitted with different prefixes: // - the classic way are pages emitted with prefix ASTRO_PAGE_RESOLVED_MODULE_ID -> plugin-pages // - pages emitted using `build.split`, in this case pages are emitted with prefix RESOLVED_SPLIT_MODULE_ID if ( - entryPoint.includes(ASTRO_PAGE_RESOLVED_MODULE_ID) || - entryPoint.includes(RESOLVED_SPLIT_MODULE_ID) + entrypoint.includes(ASTRO_PAGE_RESOLVED_MODULE_ID) || + entrypoint.includes(RESOLVED_SPLIT_MODULE_ID) ) { - const [, pageName] = entryPoint.split(':'); + const [, pageName] = entrypoint.split(':'); const pageData = internals.pagesByComponent.get( `${pageName.replace(ASTRO_PAGE_EXTENSION_POST_PATTERN, '.')}` ); diff --git a/packages/astro/src/core/build/page-data.ts b/packages/astro/src/core/build/page-data.ts index 7292cb4e8f94..89eca3ffc5ef 100644 --- a/packages/astro/src/core/build/page-data.ts +++ b/packages/astro/src/core/build/page-data.ts @@ -47,29 +47,16 @@ export async function collectPagesData( clearInterval(routeCollectionLogTimeout); }, 10000); builtPaths.add(route.pathname); - if (allPages[route.component]) { - allPages[route.component].push({ - component: route.component, - route, - moduleSpecifier: '', - styles: [], - propagatedStyles: new Map(), - propagatedScripts: new Map(), - hoistedScript: undefined, - }); - } else { - allPages[route.component] = [ - { - component: route.component, - route, - moduleSpecifier: '', - styles: [], - propagatedStyles: new Map(), - propagatedScripts: new Map(), - hoistedScript: undefined, - }, - ]; - } + + allPages[route.component] = { + component: route.component, + route, + moduleSpecifier: '', + styles: [], + propagatedStyles: new Map(), + propagatedScripts: new Map(), + hoistedScript: undefined, + }; clearInterval(routeCollectionLogTimeout); if (settings.config.output === 'static') { @@ -84,29 +71,16 @@ export async function collectPagesData( continue; } // dynamic route: - if (allPages[route.component]) { - allPages[route.component].push({ - component: route.component, - route, - moduleSpecifier: '', - styles: [], - propagatedStyles: new Map(), - propagatedScripts: new Map(), - hoistedScript: undefined, - }); - } else { - allPages[route.component] = [ - { - component: route.component, - route, - moduleSpecifier: '', - styles: [], - propagatedStyles: new Map(), - propagatedScripts: new Map(), - hoistedScript: undefined, - }, - ]; - } + + allPages[route.component] = { + component: route.component, + route, + moduleSpecifier: '', + styles: [], + propagatedStyles: new Map(), + propagatedScripts: new Map(), + hoistedScript: undefined, + }; } clearInterval(dataCollectionLogTimeout); diff --git a/packages/astro/src/core/build/plugins/plugin-css.ts b/packages/astro/src/core/build/plugins/plugin-css.ts index f8611898f0a0..318a1fee545e 100644 --- a/packages/astro/src/core/build/plugins/plugin-css.ts +++ b/packages/astro/src/core/build/plugins/plugin-css.ts @@ -223,8 +223,8 @@ function rollupPluginAstroBuildCSS(options: PluginOptions): VitePlugin[] { inlineConfig === 'always' ? true : inlineConfig === 'never' - ? false - : assetSize <= assetsInlineLimit; + ? false + : assetSize <= assetsInlineLimit; // there should be a single js object for each stylesheet, // allowing the single reference to be shared and checked for duplicates diff --git a/packages/astro/src/core/build/plugins/plugin-manifest.ts b/packages/astro/src/core/build/plugins/plugin-manifest.ts index 83065ecacbe4..0ac0db028823 100644 --- a/packages/astro/src/core/build/plugins/plugin-manifest.ts +++ b/packages/astro/src/core/build/plugins/plugin-manifest.ts @@ -98,8 +98,6 @@ export function pluginManifest( const manifest = await createManifest(options, internals); const shouldPassMiddlewareEntryPoint = - // TODO: remove in Astro 4.0 - options.settings.config.build.excludeMiddleware || options.settings.adapter?.adapterFeatures?.edgeMiddleware; await runHookBuildSsr({ config: options.settings.config, diff --git a/packages/astro/src/core/build/plugins/plugin-pages.ts b/packages/astro/src/core/build/plugins/plugin-pages.ts index 2a348f18fece..fee94071ee25 100644 --- a/packages/astro/src/core/build/plugins/plugin-pages.ts +++ b/packages/astro/src/core/build/plugins/plugin-pages.ts @@ -92,10 +92,6 @@ function vitePluginPages(opts: StaticBuildOptions, internals: BuildInternals): V } export function shouldBundleMiddleware(settings: AstroSettings) { - // TODO: Remove in Astro 4.0 - if (settings.config.build.excludeMiddleware === true) { - return false; - } if (settings.adapter?.adapterFeatures?.edgeMiddleware === true) { return false; } diff --git a/packages/astro/src/core/build/plugins/plugin-ssr.ts b/packages/astro/src/core/build/plugins/plugin-ssr.ts index fd892c9b63c7..6a6dd224af4f 100644 --- a/packages/astro/src/core/build/plugins/plugin-ssr.ts +++ b/packages/astro/src/core/build/plugins/plugin-ssr.ts @@ -102,10 +102,7 @@ export function pluginSSR( hooks: { 'build:before': () => { let vitePlugin = - ssr && - // TODO: Remove in Astro 4.0 - options.settings.config.build.split === false && - functionPerRouteEnabled === false + ssr && functionPerRouteEnabled === false ? vitePluginSSR(internals, options.settings.adapter!, options) : undefined; @@ -119,7 +116,7 @@ export function pluginSSR( return; } - if (options.settings.config.build.split || functionPerRouteEnabled) { + if (functionPerRouteEnabled) { return; } @@ -146,7 +143,7 @@ function vitePluginSSRSplit( name: '@astrojs/vite-plugin-astro-ssr-split', enforce: 'post', options(opts) { - if (options.settings.config.build.split || functionPerRouteEnabled) { + if (functionPerRouteEnabled) { const inputs = new Set(); for (const [path, pageData] of eachPageFromAllPages(options.allPages)) { @@ -223,7 +220,7 @@ export function pluginSSRSplit( hooks: { 'build:before': () => { let vitePlugin = - ssr && (options.settings.config.build.split || functionPerRouteEnabled) + ssr && functionPerRouteEnabled ? vitePluginSSRSplit(internals, options.settings.adapter!, options) : undefined; @@ -240,7 +237,7 @@ function generateSSRCode(config: AstroConfig, adapter: AstroAdapter) { const imports: string[] = []; const contents: string[] = []; let pageMap; - if (config.build.split || isFunctionPerRouteEnabled(adapter)) { + if (isFunctionPerRouteEnabled(adapter)) { pageMap = 'pageModule'; } else { pageMap = 'pageMap'; diff --git a/packages/astro/src/core/build/static-build.ts b/packages/astro/src/core/build/static-build.ts index 95404c6d677f..2580e585ee13 100644 --- a/packages/astro/src/core/build/static-build.ts +++ b/packages/astro/src/core/build/static-build.ts @@ -51,17 +51,15 @@ export async function viteBuild(opts: StaticBuildOptions) { // Build internals needed by the CSS plugin const internals = createBuildInternals(); - for (const [component, pageDataList] of Object.entries(allPages)) { - for (const pageData of pageDataList) { - const astroModuleURL = new URL('./' + component, settings.config.root); - const astroModuleId = prependForwardSlash(component); + for (const [component, pageData] of Object.entries(allPages)) { + const astroModuleURL = new URL('./' + component, settings.config.root); + const astroModuleId = prependForwardSlash(component); - // Track the page data in internals - trackPageData(internals, component, pageData, astroModuleId, astroModuleURL); + // Track the page data in internals + trackPageData(internals, component, pageData, astroModuleId, astroModuleURL); - if (!routeIsRedirect(pageData.route)) { - pageInput.add(astroModuleId); - } + if (!routeIsRedirect(pageData.route)) { + pageInput.add(astroModuleId); } } @@ -150,9 +148,7 @@ async function ssrBuild( const { allPages, settings, viteConfig } = opts; const ssr = isServerLikeOutput(settings.config); const out = getOutputDirectory(settings.config); - const routes = Object.values(allPages) - .flat() - .map((pageData) => pageData.route); + const routes = Object.values(allPages).flatMap((pageData) => pageData.route); const isContentCache = !ssr && settings.config.experimental.contentCollectionCache; const { lastVitePlugins, vitePlugins } = await container.runBeforeHook('server', input); diff --git a/packages/astro/src/core/build/types.ts b/packages/astro/src/core/build/types.ts index 00d6ce0461bf..0722a293dcad 100644 --- a/packages/astro/src/core/build/types.ts +++ b/packages/astro/src/core/build/types.ts @@ -30,7 +30,8 @@ export interface PageBuildData { hoistedScript: { type: 'inline' | 'external'; value: string } | undefined; styles: Array<{ depth: number; order: number; sheet: StylesheetAsset }>; } -export type AllPagesData = Record; + +export type AllPagesData = Record; /** Options for the static build */ export interface StaticBuildOptions { @@ -53,7 +54,7 @@ export interface SinglePageBuiltModule { /** * The `onRequest` hook exported by the middleware */ - onRequest?: MiddlewareHandler; + onRequest?: MiddlewareHandler; renderers: SSRLoadedRenderer[]; } diff --git a/packages/astro/src/core/config/config.ts b/packages/astro/src/core/config/config.ts index 53acb6924fcb..82bb872b1593 100644 --- a/packages/astro/src/core/config/config.ts +++ b/packages/astro/src/core/config/config.ts @@ -67,7 +67,6 @@ export function resolveFlags(flags: Partial): CLIFlags { config: typeof flags.config === 'string' ? flags.config : undefined, host: typeof flags.host === 'string' || typeof flags.host === 'boolean' ? flags.host : undefined, - drafts: typeof flags.drafts === 'boolean' ? flags.drafts : undefined, }; } diff --git a/packages/astro/src/core/config/schema.ts b/packages/astro/src/core/config/schema.ts index eaa11786a5c9..8fefa2106d34 100644 --- a/packages/astro/src/core/config/schema.ts +++ b/packages/astro/src/core/config/schema.ts @@ -8,10 +8,9 @@ import { markdownConfigDefaults } from '@astrojs/markdown-remark'; import { bundledThemes, type BuiltinTheme } from 'shikiji'; import type { AstroUserConfig, ViteUserConfig } from '../../@types/astro.js'; -import fs from 'node:fs'; import type { OutgoingHttpHeaders } from 'node:http'; import path from 'node:path'; -import { fileURLToPath, pathToFileURL } from 'node:url'; +import { pathToFileURL } from 'node:url'; import { z } from 'zod'; import { appendForwardSlash, prependForwardSlash, removeTrailingForwardSlash } from '../path.js'; @@ -38,8 +37,6 @@ const ASTRO_CONFIG_DEFAULTS = { serverEntry: 'entry.mjs', redirects: true, inlineStylesheets: 'auto', - split: false, - excludeMiddleware: false, }, image: { service: { entrypoint: 'astro/assets/services/sharp', config: {} }, @@ -51,10 +48,7 @@ const ASTRO_CONFIG_DEFAULTS = { open: false, }, integrations: [], - markdown: { - drafts: false, - ...markdownConfigDefaults, - }, + markdown: markdownConfigDefaults, vite: {}, legacy: {}, redirects: {}, @@ -139,20 +133,6 @@ export const AstroConfigSchema = z.object({ .enum(['always', 'auto', 'never']) .optional() .default(ASTRO_CONFIG_DEFAULTS.build.inlineStylesheets), - - /** - * @deprecated - * Use the adapter feature instead - */ - split: z.boolean().optional().default(ASTRO_CONFIG_DEFAULTS.build.split), - /** - * @deprecated - * Use the adapter feature instead - */ - excludeMiddleware: z - .boolean() - .optional() - .default(ASTRO_CONFIG_DEFAULTS.build.excludeMiddleware), }) .default({}), server: z.preprocess( @@ -245,7 +225,6 @@ export const AstroConfigSchema = z.object({ .default(ASTRO_CONFIG_DEFAULTS.image), markdown: z .object({ - drafts: z.boolean().default(false), syntaxHighlight: z .union([z.literal('shiki'), z.literal('prism'), z.literal(false)]) .default(ASTRO_CONFIG_DEFAULTS.markdown.syntaxHighlight), @@ -258,25 +237,6 @@ export const AstroConfigSchema = z.object({ for (const lang of langs) { // shiki -> shikiji compat if (typeof lang === 'object') { - // shikiji does not support `path` - // https://github.com/shikijs/shiki/blob/facb6ff37996129626f8066a5dccb4608e45f649/packages/shiki/src/loader.ts#L98 - const langPath = (lang as any).path; - if (langPath) { - // shiki resolves path from within its package directory :shrug: - const astroRoot = fileURLToPath(new URL('../../../', import.meta.url)); - const normalizedPath = path.isAbsolute(langPath) - ? langPath - : path.resolve(astroRoot, langPath); - try { - const content = fs.readFileSync(normalizedPath, 'utf-8'); - const parsed = JSON.parse(content); - Object.assign(lang, parsed); - } catch (e) { - throw new Error(`Unable to find language file at ${normalizedPath}`, { - cause: e, - }); - } - } // `id` renamed to `name` (always override) if ((lang as any).id) { lang.name = (lang as any).id; @@ -452,12 +412,6 @@ export function createRelativeSchema(cmd: string, fileProtocolRoot: string) { .enum(['always', 'auto', 'never']) .optional() .default(ASTRO_CONFIG_DEFAULTS.build.inlineStylesheets), - - split: z.boolean().optional().default(ASTRO_CONFIG_DEFAULTS.build.split), - excludeMiddleware: z - .boolean() - .optional() - .default(ASTRO_CONFIG_DEFAULTS.build.excludeMiddleware), }) .optional() .default({}), diff --git a/packages/astro/src/core/config/tsconfig.ts b/packages/astro/src/core/config/tsconfig.ts index db4b1392ff2a..3375be9c8b87 100644 --- a/packages/astro/src/core/config/tsconfig.ts +++ b/packages/astro/src/core/config/tsconfig.ts @@ -162,14 +162,14 @@ export type StripEnums> = { [K in keyof T]: T[K] extends boolean ? T[K] : T[K] extends string - ? T[K] - : T[K] extends object - ? T[K] - : T[K] extends Array - ? T[K] - : T[K] extends undefined - ? undefined - : any; + ? T[K] + : T[K] extends object + ? T[K] + : T[K] extends Array + ? T[K] + : T[K] extends undefined + ? undefined + : any; }; export interface TSConfig { diff --git a/packages/astro/src/core/create-vite.ts b/packages/astro/src/core/create-vite.ts index 2b677c1d9d34..c9716af8933a 100644 --- a/packages/astro/src/core/create-vite.ts +++ b/packages/astro/src/core/create-vite.ts @@ -192,7 +192,7 @@ export async function createVite( }, { find: 'astro:middleware', - replacement: 'astro/middleware/namespace', + replacement: 'astro/virtual-modules/middleware.js', }, { find: 'astro:components', diff --git a/packages/astro/src/core/dev/dev.ts b/packages/astro/src/core/dev/dev.ts index f8db6647e811..980b93463c89 100644 --- a/packages/astro/src/core/dev/dev.ts +++ b/packages/astro/src/core/dev/dev.ts @@ -43,7 +43,6 @@ export default async function dev(inlineConfig: AstroInlineConfig): Promise; adapterName?: string; locales: string[] | undefined; + routingStrategy: 'prefix-always' | 'prefix-other-locales' | undefined; + defaultLocale: string | undefined; }; /** @@ -41,9 +37,12 @@ export function createAPIContext({ props, adapterName, locales, + routingStrategy, + defaultLocale, }: CreateAPIContext): APIContext { let preferredLocale: string | undefined = undefined; let preferredLocaleList: string[] | undefined = undefined; + let currentLocale: string | undefined = undefined; const context = { cookies: new AstroCookies(request), @@ -60,7 +59,6 @@ export function createAPIContext({ }, }); }, - ResponseWithEncoding, get preferredLocale(): string | undefined { if (preferredLocale) { return preferredLocale; @@ -83,6 +81,16 @@ export function createAPIContext({ return undefined; }, + get currentLocale(): string | undefined { + if (currentLocale) { + return currentLocale; + } + if (locales) { + currentLocale = computeCurrentLocale(request, locales, routingStrategy, defaultLocale); + } + + return currentLocale; + }, url: new URL(request.url), get clientAddress() { if (clientAddressSymbol in request) { @@ -124,37 +132,11 @@ export function createAPIContext({ return context; } -type ResponseParameters = ConstructorParameters; - -export class ResponseWithEncoding extends Response { - constructor(body: ResponseParameters[0], init: ResponseParameters[1], encoding?: BufferEncoding) { - // If a body string is given, try to encode it to preserve the behaviour as simple objects. - // We don't do the full handling as simple objects so users can control how headers are set instead. - if (typeof body === 'string') { - // In NodeJS, we can use Buffer.from which supports all BufferEncoding - if (typeof Buffer !== 'undefined' && Buffer.from) { - body = Buffer.from(body, encoding); - } - // In non-NodeJS, use the web-standard TextEncoder for utf-8 strings - else if (encoding == null || encoding === 'utf8' || encoding === 'utf-8') { - body = encoder.encode(body); - } - } - - super(body, init); - - if (encoding) { - this.headers.set('X-Astro-Encoding', encoding); - } - } -} - -export async function callEndpoint( +export async function callEndpoint( mod: EndpointHandler, env: Environment, ctx: RenderContext, - onRequest: MiddlewareHandler | undefined, - locales: undefined | string[] + onRequest: MiddlewareHandler | undefined ): Promise { const context = createAPIContext({ request: ctx.request, @@ -162,112 +144,20 @@ export async function callEndpoint props: ctx.props, site: env.site, adapterName: env.adapterName, - locales, + routingStrategy: ctx.routingStrategy, + defaultLocale: ctx.defaultLocale, + locales: ctx.locales, }); let response; if (onRequest) { - response = await callMiddleware( - env.logger, - onRequest as MiddlewareEndpointHandler, - context, - async () => { - return await renderEndpoint(mod, context, env.ssr, env.logger); - } - ); + response = await callMiddleware(onRequest, context, async () => { + return await renderEndpoint(mod, context, env.ssr, env.logger); + }); } else { response = await renderEndpoint(mod, context, env.ssr, env.logger); } - const isEndpointSSR = env.ssr && !ctx.route?.prerender; - - if (response instanceof Response) { - if (isEndpointSSR && response.headers.get('X-Astro-Encoding')) { - env.logger.warn( - null, - '`ResponseWithEncoding` is ignored in SSR. Please return an instance of Response. See https://docs.astro.build/en/core-concepts/endpoints/#server-endpoints-api-routes for more information.' - ); - } - attachCookiesToResponse(response, context.cookies); - return response; - } - - // The endpoint returned a simple object, convert it to a Response - - // TODO: Remove in Astro 4.0 - env.logger.warn( - null, - `${ctx.route.component} returns a simple object which is deprecated. Please return an instance of Response. See https://docs.astro.build/en/core-concepts/endpoints/#server-endpoints-api-routes for more information.` - ); - - if (isEndpointSSR) { - if (response.hasOwnProperty('headers')) { - env.logger.warn( - null, - 'Setting headers is not supported when returning an object. Please return an instance of Response. See https://docs.astro.build/en/core-concepts/endpoints/#server-endpoints-api-routes for more information.' - ); - } - - if (response.encoding) { - env.logger.warn( - null, - '`encoding` is ignored in SSR. To return a charset other than UTF-8, please return an instance of Response. See https://docs.astro.build/en/core-concepts/endpoints/#server-endpoints-api-routes for more information.' - ); - } - } - - let body: BodyInit; - const headers = new Headers(); - - // Try to get the MIME type for this route - const pathname = ctx.route - ? // Try the static route `pathname` - ctx.route.pathname ?? - // Dynamic routes don't include `pathname`, so synthesize a path for these (e.g. 'src/pages/[slug].svg') - ctx.route.segments.map((s) => s.map((p) => p.content).join('')).join('/') - : // Fallback to pathname of the request - ctx.pathname; - const mimeType = mime.getType(pathname) || 'text/plain'; - headers.set('Content-Type', `${mimeType};charset=utf-8`); - - // Save encoding to X-Astro-Encoding to be used later during SSG with `fs.writeFile`. - // It won't work in SSR and is already warned above. - if (response.encoding) { - headers.set('X-Astro-Encoding', response.encoding); - } - - // For Uint8Array (binary), it can passed to Response directly - if (response.body instanceof Uint8Array) { - body = response.body; - headers.set('Content-Length', body.byteLength.toString()); - } - // In NodeJS, we can use Buffer.from which supports all BufferEncoding - else if (typeof Buffer !== 'undefined' && Buffer.from) { - body = Buffer.from(response.body, response.encoding); - headers.set('Content-Length', body.byteLength.toString()); - } - // In non-NodeJS, use the web-standard TextEncoder for utf-8 strings only - // to calculate the content length - else if ( - response.encoding == null || - response.encoding === 'utf8' || - response.encoding === 'utf-8' - ) { - body = encoder.encode(response.body); - headers.set('Content-Length', body.byteLength.toString()); - } - // Fallback pass it to Response directly. It will mainly rely on X-Astro-Encoding - // to be further processed in SSG. - else { - body = response.body; - // NOTE: Can't calculate the content length as we can't encode to figure out the real length. - // But also because we don't need the length for SSG as it's only being written to disk. - } - - response = new Response(body, { - status: 200, - headers, - }); attachCookiesToResponse(response, context.cookies); return response; } diff --git a/packages/astro/src/core/errors/utils.ts b/packages/astro/src/core/errors/utils.ts index 300787dd3203..ef0a10b4f6de 100644 --- a/packages/astro/src/core/errors/utils.ts +++ b/packages/astro/src/core/errors/utils.ts @@ -93,9 +93,8 @@ export function createSafeError(err: any): Error { } else { const error = new Error(JSON.stringify(err)); - ( - error as SSRError - ).hint = `To get as much information as possible from your errors, make sure to throw Error objects instead of \`${typeof err}\`. See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error for more information.`; + (error as SSRError).hint = + `To get as much information as possible from your errors, make sure to throw Error objects instead of \`${typeof err}\`. See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error for more information.`; return error; } diff --git a/packages/astro/src/core/logger/core.ts b/packages/astro/src/core/logger/core.ts index 5d617a1a2fa2..2c26a55a0d3d 100644 --- a/packages/astro/src/core/logger/core.ts +++ b/packages/astro/src/core/logger/core.ts @@ -8,10 +8,10 @@ export interface LogWritable { export type LoggerLevel = 'debug' | 'info' | 'warn' | 'error' | 'silent'; // same as Pino /** - * Defined logger labels. Add more as needed, but keep them high-level & reusable, - * rather than specific to a single command, function, use, etc. The label will be + * Defined logger labels. Add more as needed, but keep them high-level & reusable, + * rather than specific to a single command, function, use, etc. The label will be * shown in the log message to the user, so it should be relevant. - */ + */ export type LoggerLabel = | 'add' | 'build' @@ -122,7 +122,7 @@ function padStr(str: string, len: number) { } /** - * Get the prefix for a log message. + * Get the prefix for a log message. * This includes the timestamp, log level, and label all properly formatted * with colors. This is shared across different loggers, so it's defined here. */ diff --git a/packages/astro/src/core/middleware/callMiddleware.ts b/packages/astro/src/core/middleware/callMiddleware.ts index d0a6ceca201a..4d79cd566364 100644 --- a/packages/astro/src/core/middleware/callMiddleware.ts +++ b/packages/astro/src/core/middleware/callMiddleware.ts @@ -1,13 +1,6 @@ -import { bold } from 'kleur/colors'; -import type { - APIContext, - EndpointOutput, - MiddlewareHandler, - MiddlewareNext, -} from '../../@types/astro.js'; +import type { APIContext, MiddlewareHandler, MiddlewareNext } from '../../@types/astro.js'; import { attachCookiesToResponse, responseHasCookies } from '../cookies/index.js'; import { AstroError, AstroErrorData } from '../errors/index.js'; -import type { Environment } from '../render/index.js'; /** * Utility function that is in charge of calling the middleware. @@ -43,15 +36,14 @@ import type { Environment } from '../render/index.js'; * @param apiContext The API context * @param responseFunction A callback function that should return a promise with the response */ -export async function callMiddleware( - logger: Environment['logger'], - onRequest: MiddlewareHandler, +export async function callMiddleware( + onRequest: MiddlewareHandler, apiContext: APIContext, - responseFunction: () => Promise -): Promise { + responseFunction: () => Promise +): Promise { let nextCalled = false; - let responseFunctionPromise: Promise | undefined = undefined; - const next: MiddlewareNext = async () => { + let responseFunctionPromise: Promise | undefined = undefined; + const next: MiddlewareNext = async () => { nextCalled = true; responseFunctionPromise = responseFunction(); return responseFunctionPromise; @@ -60,15 +52,6 @@ export async function callMiddleware( let middlewarePromise = onRequest(apiContext, next); return await Promise.resolve(middlewarePromise).then(async (value) => { - if (isEndpointOutput(value)) { - logger.warn( - null, - apiContext.url.pathname + - ' Using simple endpoints can cause unexpected issues in the chain of middleware functions.' + - `\nIt's strongly suggested to use full ${bold('Response')} objects.` - ); - } - // first we check if `next` was called if (nextCalled) { /** @@ -84,7 +67,7 @@ export async function callMiddleware( if (value instanceof Response === false) { throw new AstroError(AstroErrorData.MiddlewareNotAResponse); } - return ensureCookiesAttached(apiContext, value as Response); + return ensureCookiesAttached(apiContext, value); } else { /** * Here we handle the case where `next` was called and returned nothing. @@ -107,7 +90,7 @@ export async function callMiddleware( throw new AstroError(AstroErrorData.MiddlewareNotAResponse); } else { // Middleware did not call resolve and returned a value - return ensureCookiesAttached(apiContext, value as Response); + return ensureCookiesAttached(apiContext, value); } }); } @@ -118,11 +101,3 @@ function ensureCookiesAttached(apiContext: APIContext, response: Response): Resp } return response; } - -function isEndpointOutput(endpointResult: any): endpointResult is EndpointOutput { - return ( - !(endpointResult instanceof Response) && - typeof endpointResult === 'object' && - typeof endpointResult.body === 'string' - ); -} diff --git a/packages/astro/src/core/middleware/index.ts b/packages/astro/src/core/middleware/index.ts index 77da30aee2a6..ffaafb3e56b2 100644 --- a/packages/astro/src/core/middleware/index.ts +++ b/packages/astro/src/core/middleware/index.ts @@ -1,8 +1,8 @@ -import type { MiddlewareEndpointHandler, Params } from '../../@types/astro.js'; +import type { MiddlewareHandler, Params } from '../../@types/astro.js'; import { createAPIContext } from '../endpoint/index.js'; import { sequence } from './sequence.js'; -function defineMiddleware(fn: MiddlewareEndpointHandler) { +function defineMiddleware(fn: MiddlewareHandler) { return fn; } @@ -35,6 +35,8 @@ function createContext({ request, params, userDefinedLocales = [] }: CreateConte props: {}, site: undefined, locales: userDefinedLocales, + defaultLocale: undefined, + routingStrategy: undefined, }); } diff --git a/packages/astro/src/core/middleware/namespace.ts b/packages/astro/src/core/middleware/namespace.ts deleted file mode 100644 index 55a84f66620c..000000000000 --- a/packages/astro/src/core/middleware/namespace.ts +++ /dev/null @@ -1 +0,0 @@ -export { defineMiddleware, sequence } from './index.js'; diff --git a/packages/astro/src/core/middleware/sequence.ts b/packages/astro/src/core/middleware/sequence.ts index d20641ee3169..9a68963945ec 100644 --- a/packages/astro/src/core/middleware/sequence.ts +++ b/packages/astro/src/core/middleware/sequence.ts @@ -1,4 +1,4 @@ -import type { APIContext, MiddlewareEndpointHandler } from '../../@types/astro.js'; +import type { APIContext, MiddlewareHandler } from '../../@types/astro.js'; import { defineMiddleware } from './index.js'; // From SvelteKit: https://github.com/sveltejs/kit/blob/master/packages/kit/src/exports/hooks/sequence.js @@ -6,11 +6,11 @@ import { defineMiddleware } from './index.js'; * * It accepts one or more middleware handlers and makes sure that they are run in sequence. */ -export function sequence(...handlers: MiddlewareEndpointHandler[]): MiddlewareEndpointHandler { +export function sequence(...handlers: MiddlewareHandler[]): MiddlewareHandler { const filtered = handlers.filter((h) => !!h); const length = filtered.length; if (!length) { - const handler: MiddlewareEndpointHandler = defineMiddleware((context, next) => { + const handler: MiddlewareHandler = defineMiddleware((context, next) => { return next(); }); return handler; diff --git a/packages/astro/src/core/middleware/vite-plugin.ts b/packages/astro/src/core/middleware/vite-plugin.ts index 0447134910f0..918c7c9526c5 100644 --- a/packages/astro/src/core/middleware/vite-plugin.ts +++ b/packages/astro/src/core/middleware/vite-plugin.ts @@ -7,7 +7,7 @@ import type { BuildInternals } from '../build/internal.js'; import type { StaticBuildOptions } from '../build/types.js'; import { MIDDLEWARE_PATH_SEGMENT_NAME } from '../constants.js'; -export const MIDDLEWARE_MODULE_ID = '@astro-middleware'; +export const MIDDLEWARE_MODULE_ID = '\0astro-internal:middleware'; const EMPTY_MIDDLEWARE = '\0empty-middleware'; export function vitePluginMiddleware({ settings }: { settings: AstroSettings }): VitePlugin { diff --git a/packages/astro/src/core/pipeline.ts b/packages/astro/src/core/pipeline.ts index bd203b437415..b3493b7c0437 100644 --- a/packages/astro/src/core/pipeline.ts +++ b/packages/astro/src/core/pipeline.ts @@ -1,10 +1,4 @@ -import type { - ComponentInstance, - EndpointHandler, - MiddlewareEndpointHandler, - MiddlewareHandler, - MiddlewareResponseHandler, -} from '../@types/astro.js'; +import type { ComponentInstance, EndpointHandler, MiddlewareHandler } from '../@types/astro.js'; import { callEndpoint, createAPIContext } from './endpoint/index.js'; import { callMiddleware } from './middleware/callMiddleware.js'; import { renderPage } from './render/core.js'; @@ -28,7 +22,7 @@ export type PipelineHookFunction = (ctx: RenderContext, mod: ComponentInstance | */ export class Pipeline { env: Environment; - #onRequest?: MiddlewareEndpointHandler; + #onRequest?: MiddlewareHandler; #hooks: PipelineHooks = { before: [], }; @@ -60,7 +54,7 @@ export class Pipeline { /** * A middleware function that will be called before each request. */ - setMiddlewareFunction(onRequest: MiddlewareEndpointHandler) { + setMiddlewareFunction(onRequest: MiddlewareHandler) { this.#onRequest = onRequest; } @@ -115,11 +109,11 @@ export class Pipeline { * * It throws an error if the page can't be rendered. */ - async #tryRenderRoute( + async #tryRenderRoute( renderContext: Readonly, env: Readonly, mod: Readonly | undefined, - onRequest?: MiddlewareHandler + onRequest?: MiddlewareHandler ): Promise { const apiContext = createAPIContext({ request: renderContext.request, @@ -128,6 +122,8 @@ export class Pipeline { site: env.site, adapterName: env.adapterName, locales: renderContext.locales, + routingStrategy: renderContext.routingStrategy, + defaultLocale: renderContext.defaultLocale, }); switch (renderContext.route.type) { @@ -135,19 +131,14 @@ export class Pipeline { case 'fallback': case 'redirect': { if (onRequest) { - return await callMiddleware( - env.logger, - onRequest as MiddlewareResponseHandler, - apiContext, - () => { - return renderPage({ - mod, - renderContext, - env, - cookies: apiContext.cookies, - }); - } - ); + return await callMiddleware(onRequest, apiContext, () => { + return renderPage({ + mod, + renderContext, + env, + cookies: apiContext.cookies, + }); + }); } else { return await renderPage({ mod, @@ -158,13 +149,7 @@ export class Pipeline { } } case 'endpoint': { - return await callEndpoint( - mod as any as EndpointHandler, - env, - renderContext, - onRequest, - renderContext.locales - ); + return await callEndpoint(mod as any as EndpointHandler, env, renderContext, onRequest); } default: throw new Error(`Couldn't find route of type [${renderContext.route.type}]`); diff --git a/packages/astro/src/core/render/context.ts b/packages/astro/src/core/render/context.ts index 851c41bc5ab2..0f0bf39b0465 100644 --- a/packages/astro/src/core/render/context.ts +++ b/packages/astro/src/core/render/context.ts @@ -29,6 +29,8 @@ export interface RenderContext { props: Props; locals?: object; locales: string[] | undefined; + defaultLocale: string | undefined; + routingStrategy: 'prefix-always' | 'prefix-other-locales' | undefined; } export type CreateRenderContextArgs = Partial< @@ -60,6 +62,8 @@ export async function createRenderContext( params, props, locales: options.locales, + routingStrategy: options.routingStrategy, + defaultLocale: options.defaultLocale, }; // We define a custom property, so we can check the value passed to locals @@ -208,3 +212,23 @@ export function computePreferredLocaleList(request: Request, locales: string[]) return result; } + +export function computeCurrentLocale( + request: Request, + locales: string[], + routingStrategy: 'prefix-always' | 'prefix-other-locales' | undefined, + defaultLocale: string | undefined +): undefined | string { + const requestUrl = new URL(request.url); + for (const segment of requestUrl.pathname.split('/')) { + for (const locale of locales) { + if (normalizeTheLocale(locale) === normalizeTheLocale(segment)) { + return locale; + } + } + } + if (routingStrategy === 'prefix-other-locales') { + return defaultLocale; + } + return undefined; +} diff --git a/packages/astro/src/core/render/core.ts b/packages/astro/src/core/render/core.ts index a3235003f3fd..c73306de06ba 100644 --- a/packages/astro/src/core/render/core.ts +++ b/packages/astro/src/core/render/core.ts @@ -60,16 +60,10 @@ export async function renderPage({ mod, renderContext, env, cookies }: RenderPag cookies, locals: renderContext.locals ?? {}, locales: renderContext.locales, + defaultLocale: renderContext.defaultLocale, + routingStrategy: renderContext.routingStrategy, }); - // TODO: Remove in Astro 4.0 - if (mod.frontmatter && typeof mod.frontmatter === 'object' && 'draft' in mod.frontmatter) { - env.logger.warn( - null, - `The drafts feature is deprecated and used in ${renderContext.route.component}. You should migrate to content collections instead. See https://docs.astro.build/en/guides/content-collections/#filtering-collection-queries for more information.` - ); - } - const response = await runtimeRenderPage( result, Component, diff --git a/packages/astro/src/core/render/index.ts b/packages/astro/src/core/render/index.ts index 6d466c4117d8..5f3a702a3083 100644 --- a/packages/astro/src/core/render/index.ts +++ b/packages/astro/src/core/render/index.ts @@ -24,5 +24,5 @@ export interface SSROptions { /** * Optional middlewares */ - middleware?: AstroMiddlewareInstance; + middleware?: AstroMiddlewareInstance; } diff --git a/packages/astro/src/core/render/result.ts b/packages/astro/src/core/render/result.ts index f4a1b0769999..2c37f38c4200 100644 --- a/packages/astro/src/core/render/result.ts +++ b/packages/astro/src/core/render/result.ts @@ -12,7 +12,11 @@ import { chunkToString } from '../../runtime/server/render/index.js'; import { AstroCookies } from '../cookies/index.js'; import { AstroError, AstroErrorData } from '../errors/index.js'; import type { Logger } from '../logger/core.js'; -import { computePreferredLocale, computePreferredLocaleList } from './context.js'; +import { + computeCurrentLocale, + computePreferredLocale, + computePreferredLocaleList, +} from './context.js'; const clientAddressSymbol = Symbol.for('astro.clientAddress'); const responseSentSymbol = Symbol.for('astro.responseSent'); @@ -47,6 +51,8 @@ export interface CreateResultArgs { locals: App.Locals; cookies?: AstroCookies; locales: string[] | undefined; + defaultLocale: string | undefined; + routingStrategy: 'prefix-always' | 'prefix-other-locales' | undefined; } function getFunctionExpression(slot: any) { @@ -148,6 +154,7 @@ export function createResult(args: CreateResultArgs): SSRResult { let cookies: AstroCookies | undefined = args.cookies; let preferredLocale: string | undefined = undefined; let preferredLocaleList: string[] | undefined = undefined; + let currentLocale: string | undefined = undefined; // Create the result object that will be passed into the render function. // This object starts here as an empty shell (not yet the result) but then @@ -218,6 +225,24 @@ export function createResult(args: CreateResultArgs): SSRResult { return undefined; }, + get currentLocale(): string | undefined { + if (currentLocale) { + return currentLocale; + } + if (args.locales) { + currentLocale = computeCurrentLocale( + request, + args.locales, + args.routingStrategy, + args.defaultLocale + ); + if (currentLocale) { + return currentLocale; + } + } + + return undefined; + }, params, props, locals, diff --git a/packages/astro/src/core/render/route-cache.ts b/packages/astro/src/core/render/route-cache.ts index 322326957bb7..8aca230f47a7 100644 --- a/packages/astro/src/core/render/route-cache.ts +++ b/packages/astro/src/core/render/route-cache.ts @@ -107,10 +107,7 @@ export class RouteCache { // Warn here so that an unexpected double-call of getStaticPaths() // isn't invisible and developer can track down the issue. if (this.mode === 'production' && this.cache[route.component]?.staticPaths) { - this.logger.warn( - null, - `Internal Warning: route cache overwritten. (${route.component})` - ); + this.logger.warn(null, `Internal Warning: route cache overwritten. (${route.component})`); } this.cache[route.component] = entry; } diff --git a/packages/astro/src/core/routing/manifest/create.ts b/packages/astro/src/core/routing/manifest/create.ts index ded3e13a8a5b..7c04638ac5a8 100644 --- a/packages/astro/src/core/routing/manifest/create.ts +++ b/packages/astro/src/core/routing/manifest/create.ts @@ -184,13 +184,13 @@ function comparator(a: Item, b: Item) { function injectedRouteToItem( { config, cwd }: { config: AstroConfig; cwd?: string }, - { pattern, entryPoint }: InjectedRoute + { pattern, entrypoint }: InjectedRoute ): Item { let resolved: string; try { - resolved = require.resolve(entryPoint, { paths: [cwd || fileURLToPath(config.root)] }); + resolved = require.resolve(entrypoint, { paths: [cwd || fileURLToPath(config.root)] }); } catch (e) { - resolved = fileURLToPath(new URL(entryPoint, config.root)); + resolved = fileURLToPath(new URL(entrypoint, config.root)); } const ext = path.extname(pattern); @@ -347,6 +347,7 @@ export function createRouteManifest( generate, pathname: pathname || undefined, prerender, + fallbackRoutes: [], }); } }); @@ -368,12 +369,12 @@ export function createRouteManifest( comparator(injectedRouteToItem({ config, cwd }, a), injectedRouteToItem({ config, cwd }, b)) ) .reverse() // prepend to the routes array from lowest to highest priority - .forEach(({ pattern: name, entryPoint, prerender: prerenderInjected }) => { + .forEach(({ pattern: name, entrypoint, prerender: prerenderInjected }) => { let resolved: string; try { - resolved = require.resolve(entryPoint, { paths: [cwd || fileURLToPath(config.root)] }); + resolved = require.resolve(entrypoint, { paths: [cwd || fileURLToPath(config.root)] }); } catch (e) { - resolved = fileURLToPath(new URL(entryPoint, config.root)); + resolved = fileURLToPath(new URL(entrypoint, config.root)); } const component = slash(path.relative(cwd || fileURLToPath(config.root), resolved)); @@ -422,6 +423,7 @@ export function createRouteManifest( generate, pathname: pathname || void 0, prerender: prerenderInjected ?? prerender, + fallbackRoutes: [], }); }); @@ -461,6 +463,7 @@ export function createRouteManifest( prerender: false, redirect: to, redirectRoute: routes.find((r) => r.route === to), + fallbackRoutes: [], }; const lastSegmentIsDynamic = (r: RouteData) => !!r.segments.at(-1)?.at(-1)?.dynamic; @@ -549,6 +552,7 @@ export function createRouteManifest( validateSegment(s); return getParts(s, route); }); + routes.push({ ...indexDefaultRoute, pathname, @@ -622,14 +626,21 @@ export function createRouteManifest( validateSegment(s); return getParts(s, route); }); - routes.push({ - ...fallbackToRoute, - pathname, - route, - segments, - pattern: getPattern(segments, config, config.trailingSlash), - type: 'fallback', - }); + + const index = routes.findIndex((r) => r === fallbackToRoute); + if (index) { + const fallbackRoute: RouteData = { + ...fallbackToRoute, + pathname, + route, + segments, + pattern: getPattern(segments, config, config.trailingSlash), + type: 'fallback', + fallbackRoutes: [], + }; + const routeData = routes[index]; + routeData.fallbackRoutes.push(fallbackRoute); + } } } } diff --git a/packages/astro/src/core/routing/manifest/serialization.ts b/packages/astro/src/core/routing/manifest/serialization.ts index 71ffc221dd54..f70aa84dd0ac 100644 --- a/packages/astro/src/core/routing/manifest/serialization.ts +++ b/packages/astro/src/core/routing/manifest/serialization.ts @@ -13,6 +13,9 @@ export function serializeRouteData( redirectRoute: routeData.redirectRoute ? serializeRouteData(routeData.redirectRoute, trailingSlash) : undefined, + fallbackRoutes: routeData.fallbackRoutes.map((fallbackRoute) => { + return serializeRouteData(fallbackRoute, trailingSlash); + }), _meta: { trailingSlash }, }; } @@ -32,5 +35,8 @@ export function deserializeRouteData(rawRouteData: SerializedRouteData): RouteDa redirectRoute: rawRouteData.redirectRoute ? deserializeRouteData(rawRouteData.redirectRoute) : undefined, + fallbackRoutes: rawRouteData.fallbackRoutes.map((fallback) => { + return deserializeRouteData(fallback); + }), }; } diff --git a/packages/astro/src/core/routing/match.ts b/packages/astro/src/core/routing/match.ts index 9b91e1e9a2f3..97659253e32e 100644 --- a/packages/astro/src/core/routing/match.ts +++ b/packages/astro/src/core/routing/match.ts @@ -2,7 +2,13 @@ import type { ManifestData, RouteData } from '../../@types/astro.js'; /** Find matching route from pathname */ export function matchRoute(pathname: string, manifest: ManifestData): RouteData | undefined { - return manifest.routes.find((route) => route.pattern.test(decodeURI(pathname))); + const decodedPathname = decodeURI(pathname); + return manifest.routes.find((route) => { + return ( + route.pattern.test(decodedPathname) || + route.fallbackRoutes.some((fallbackRoute) => fallbackRoute.pattern.test(decodedPathname)) + ); + }); } /** Finds all matching routes from pathname */ diff --git a/packages/astro/src/i18n/middleware.ts b/packages/astro/src/i18n/middleware.ts index 854a39b77cda..79ac2c962464 100644 --- a/packages/astro/src/i18n/middleware.ts +++ b/packages/astro/src/i18n/middleware.ts @@ -1,5 +1,5 @@ import { appendForwardSlash, joinPaths } from '@astrojs/internal-helpers/path'; -import type { MiddlewareEndpointHandler, RouteData, SSRManifest } from '../@types/astro.js'; +import type { MiddlewareHandler, RouteData, SSRManifest } from '../@types/astro.js'; import type { PipelineHookFunction } from '../core/pipeline.js'; const routeDataSymbol = Symbol.for('astro.routeData'); @@ -19,7 +19,7 @@ export function createI18nMiddleware( i18n: SSRManifest['i18n'], base: SSRManifest['base'], trailingSlash: SSRManifest['trailingSlash'] -): MiddlewareEndpointHandler | undefined { +): MiddlewareHandler | undefined { if (!i18n) { return undefined; } diff --git a/packages/astro/src/i18n/vite-plugin-i18n.ts b/packages/astro/src/i18n/vite-plugin-i18n.ts index 4aa6ee42e4f5..faba67da338e 100644 --- a/packages/astro/src/i18n/vite-plugin-i18n.ts +++ b/packages/astro/src/i18n/vite-plugin-i18n.ts @@ -28,7 +28,7 @@ export default function astroInternationalization({ getLocaleAbsoluteUrl as _getLocaleAbsoluteUrl, getLocaleAbsoluteUrlList as _getLocaleAbsoluteUrlList, - } from "astro/i18n"; + } from "astro/virtual-modules/i18n.js"; const base = ${JSON.stringify(settings.config.base)}; const trailingSlash = ${JSON.stringify(settings.config.trailingSlash)}; diff --git a/packages/astro/src/integrations/astroFeaturesValidation.ts b/packages/astro/src/integrations/astroFeaturesValidation.ts index d9049f8765bf..4c6b1131b328 100644 --- a/packages/astro/src/integrations/astroFeaturesValidation.ts +++ b/packages/astro/src/integrations/astroFeaturesValidation.ts @@ -17,17 +17,6 @@ const UNSUPPORTED_ASSETS_FEATURE: AstroAssetsFeature = { isSharpCompatible: false, }; -// NOTE: remove for Astro 4.0 -const ALL_UNSUPPORTED: Required = { - serverOutput: UNSUPPORTED, - staticOutput: UNSUPPORTED, - hybridOutput: UNSUPPORTED, - assets: UNSUPPORTED_ASSETS_FEATURE, - i18n: { - detectBrowserLanguage: UNSUPPORTED, - }, -}; - type ValidationResult = { [Property in keyof AstroFeatureMap]: boolean; }; @@ -41,7 +30,7 @@ type ValidationResult = { */ export function validateSupportedFeatures( adapterName: string, - featureMap: AstroFeatureMap = ALL_UNSUPPORTED, + featureMap: AstroFeatureMap, config: AstroConfig, logger: Logger ): ValidationResult { @@ -105,18 +94,21 @@ function validateSupportKind( } function featureIsUnsupported(adapterName: string, logger: Logger, featureName: string) { - logger.error( - 'config', - `The feature ${featureName} is not supported (used by ${adapterName}).` - ); + logger.error('config', `The feature ${featureName} is not supported (used by ${adapterName}).`); } function featureIsExperimental(adapterName: string, logger: Logger) { - logger.warn('config', `The feature is experimental and subject to change (used by ${adapterName}).`); + logger.warn( + 'config', + `The feature is experimental and subject to change (used by ${adapterName}).` + ); } function featureIsDeprecated(adapterName: string, logger: Logger) { - logger.warn('config', `The feature is deprecated and will be removed in the future (used by ${adapterName}).`); + logger.warn( + 'config', + `The feature is deprecated and will be removed in the future (used by ${adapterName}).` + ); } const SHARP_SERVICE = 'astro/assets/services/sharp'; diff --git a/packages/astro/src/integrations/index.ts b/packages/astro/src/integrations/index.ts index 55c1bcbcc81d..f21fd088b67c 100644 --- a/packages/astro/src/integrations/index.ts +++ b/packages/astro/src/integrations/index.ts @@ -127,6 +127,13 @@ export async function runHookConfigSetup({ updatedConfig = mergeConfig(updatedConfig, newConfig) as AstroConfig; }, injectRoute: (injectRoute) => { + if (injectRoute.entrypoint == null && 'entryPoint' in injectRoute) { + logger.warn( + null, + `The injected route "${injectRoute.pattern}" by ${integration.name} specifies the entry point with the "entryPoint" property. This property is deprecated, please use "entrypoint" instead.` + ); + injectRoute.entrypoint = injectRoute.entryPoint as string; + } updatedSettings.injectedRoutes.push(injectRoute); }, addWatchFile: (path) => { @@ -237,10 +244,8 @@ export async function runHookConfigDone({ ); } if (!adapter.supportedAstroFeatures) { - // NOTE: throw an error in Astro 4.0 - logger.warn( - null, - `The adapter ${adapter.name} doesn't provide a feature map. From Astro 3.0, an adapter can provide a feature map. Not providing a feature map will cause an error in Astro 4.0.` + throw new Error( + `The adapter ${adapter.name} doesn't provide a feature map. It is required in Astro 4.0.` ); } else { const validationResult = validateSupportedFeatures( diff --git a/packages/astro/src/prefetch/index.ts b/packages/astro/src/prefetch/index.ts index f47cff0606f9..15f4ef0ccd95 100644 --- a/packages/astro/src/prefetch/index.ts +++ b/packages/astro/src/prefetch/index.ts @@ -56,7 +56,7 @@ function initTapStrategy() { event, (e) => { if (elMatchesStrategy(e.target, 'tap')) { - prefetch(e.target.href, { with: 'fetch' }); + prefetch(e.target.href, { with: 'fetch', ignoreSlowConnection: true }); } }, { passive: true } @@ -176,6 +176,10 @@ export interface PrefetchOptions { * - `'fetch'`: use `fetch()`, has higher loading priority. */ with?: 'link' | 'fetch'; + /** + * Should prefetch even on data saver mode or slow connection. (default `false`) + */ + ignoreSlowConnection?: boolean; } /** @@ -190,7 +194,8 @@ export interface PrefetchOptions { * @param opts Additional options for prefetching. */ export function prefetch(url: string, opts?: PrefetchOptions) { - if (!canPrefetchUrl(url)) return; + const ignoreSlowConnection = opts?.ignoreSlowConnection ?? false; + if (!canPrefetchUrl(url, ignoreSlowConnection)) return; prefetchedUrls.add(url); const priority = opts?.with ?? 'link'; @@ -211,21 +216,17 @@ export function prefetch(url: string, opts?: PrefetchOptions) { } } -function canPrefetchUrl(url: string) { +function canPrefetchUrl(url: string, ignoreSlowConnection: boolean) { // Skip prefetch if offline if (!navigator.onLine) return false; - if ('connection' in navigator) { - // Untyped Chrome-only feature: https://developer.mozilla.org/en-US/docs/Web/API/Navigator/connection - const conn = navigator.connection as any; - // Skip prefetch if using data saver mode or slow connection - if (conn.saveData || /(2|3)g/.test(conn.effectiveType)) return false; - } + // Skip prefetch if using data saver mode or slow connection + if (!ignoreSlowConnection && isSlowConnection()) return false; // Else check if URL is within the same origin, not the current page, and not already prefetched try { const urlObj = new URL(url, location.href); return ( location.origin === urlObj.origin && - location.pathname !== urlObj.pathname && + (location.pathname !== urlObj.pathname || location.search !== urlObj.search) && !prefetchedUrls.has(url) ); } catch {} @@ -241,6 +242,12 @@ function elMatchesStrategy(el: EventTarget | null, strategy: string): el is HTML if (attrValue === 'false') { return false; } + + // Fallback to tap strategy if using data saver mode or slow connection + if (strategy === 'tap' && (attrValue != null || prefetchAll) && isSlowConnection()) { + return true; + } + // If anchor has no dataset but we want to prefetch all, or has dataset but no value, // check against fallback default strategy if ((attrValue == null && prefetchAll) || attrValue === '') { @@ -254,6 +261,15 @@ function elMatchesStrategy(el: EventTarget | null, strategy: string): el is HTML return false; } +function isSlowConnection() { + if ('connection' in navigator) { + // Untyped Chrome-only feature: https://developer.mozilla.org/en-US/docs/Web/API/Navigator/connection + const conn = navigator.connection as any; + return conn.saveData || /(2|3)g/.test(conn.effectiveType); + } + return false; +} + /** * Listen to page loads and handle Astro's View Transition specific events */ diff --git a/packages/astro/src/prefetch/vite-plugin-prefetch.ts b/packages/astro/src/prefetch/vite-plugin-prefetch.ts index 73ae53f63b53..69714fd493b5 100644 --- a/packages/astro/src/prefetch/vite-plugin-prefetch.ts +++ b/packages/astro/src/prefetch/vite-plugin-prefetch.ts @@ -4,7 +4,7 @@ import type { AstroSettings } from '../@types/astro.js'; const virtualModuleId = 'astro:prefetch'; const resolvedVirtualModuleId = '\0' + virtualModuleId; const prefetchInternalModuleFsSubpath = 'astro/dist/prefetch/index.js'; -const prefetchCode = `import { init } from 'astro/prefetch';init()`; +const prefetchCode = `import { init } from 'astro/virtual-modules/prefetch.js';init()`; export default function astroPrefetch({ settings }: { settings: AstroSettings }): vite.Plugin { const prefetchOption = settings.config.prefetch; @@ -19,7 +19,7 @@ export default function astroPrefetch({ settings }: { settings: AstroSettings }) // Inject prefetch script to all pages settings.scripts.push({ stage: 'page', - content: `import { init } from 'astro/prefetch';init()`, + content: `import { init } from 'astro/virtual-modules/prefetch.js';init()`, }); } @@ -40,7 +40,7 @@ export default function astroPrefetch({ settings }: { settings: AstroSettings }) load(id) { if (id === resolvedVirtualModuleId) { if (!prefetch) throwPrefetchNotEnabledError(); - return `export { prefetch } from "astro/prefetch";`; + return `export { prefetch } from "astro/virtual-modules/prefetch.js";`; } }, transform(code, id) { diff --git a/packages/astro/src/runtime/client/dev-overlay/entrypoint.ts b/packages/astro/src/runtime/client/dev-overlay/entrypoint.ts index 65e50c98e03e..0649b0cf3422 100644 --- a/packages/astro/src/runtime/client/dev-overlay/entrypoint.ts +++ b/packages/astro/src/runtime/client/dev-overlay/entrypoint.ts @@ -14,11 +14,16 @@ document.addEventListener('DOMContentLoaded', async () => { { default: astroXrayPlugin }, { default: astroSettingsPlugin }, { AstroDevOverlay, DevOverlayCanvas }, - { DevOverlayCard }, - { DevOverlayHighlight }, - { DevOverlayTooltip }, - { DevOverlayWindow }, - { DevOverlayToggle }, + { + DevOverlayCard, + DevOverlayHighlight, + DevOverlayTooltip, + DevOverlayWindow, + DevOverlayToggle, + DevOverlayButton, + DevOverlayBadge, + DevOverlayIcon, + }, { getIconElement, isDefinedIcon }, ] = await Promise.all([ // @ts-expect-error @@ -28,11 +33,7 @@ document.addEventListener('DOMContentLoaded', async () => { import('./plugins/xray.js'), import('./plugins/settings.js'), import('./overlay.js'), - import('./ui-library/card.js'), - import('./ui-library/highlight.js'), - import('./ui-library/tooltip.js'), - import('./ui-library/window.js'), - import('./ui-library/toggle.js'), + import('./ui-library/index.js'), import('./ui-library/icons.js'), ]); @@ -44,6 +45,9 @@ document.addEventListener('DOMContentLoaded', async () => { customElements.define('astro-dev-overlay-highlight', DevOverlayHighlight); customElements.define('astro-dev-overlay-card', DevOverlayCard); customElements.define('astro-dev-overlay-toggle', DevOverlayToggle); + customElements.define('astro-dev-overlay-button', DevOverlayButton); + customElements.define('astro-dev-overlay-badge', DevOverlayBadge); + customElements.define('astro-dev-overlay-icon', DevOverlayIcon); overlay = document.createElement('astro-dev-overlay'); diff --git a/packages/astro/src/runtime/client/dev-overlay/overlay.ts b/packages/astro/src/runtime/client/dev-overlay/overlay.ts index 900c3fb0fe60..c99be9257a4c 100644 --- a/packages/astro/src/runtime/client/dev-overlay/overlay.ts +++ b/packages/astro/src/runtime/client/dev-overlay/overlay.ts @@ -35,8 +35,10 @@ export class AstroDevOverlay extends HTMLElement { async connectedCallback() { if (!this.hasBeenInitialized) { this.shadowRoot.innerHTML = ` - +
diff --git a/packages/astro/src/runtime/client/dev-overlay/plugins/astro.ts b/packages/astro/src/runtime/client/dev-overlay/plugins/astro.ts index 352a018e11e2..6707459f4c31 100644 --- a/packages/astro/src/runtime/client/dev-overlay/plugins/astro.ts +++ b/packages/astro/src/runtime/client/dev-overlay/plugins/astro.ts @@ -1,19 +1,90 @@ -import type { DevOverlayPlugin } from '../../../../@types/astro.js'; +import type { DevOverlayMetadata, DevOverlayPlugin } from '../../../../@types/astro.js'; +import { isDefinedIcon, type Icon } from '../ui-library/icons.js'; +import { colorForIntegration, iconForIntegration } from './utils/icons.js'; import { createWindowWithTransition, waitForTransition } from './utils/window.js'; +const astroLogo = + ''; + +export interface Integration { + name: string; + title: string; + description: string; + image?: string; + categories: string[]; + repoUrl: string; + npmUrl: string; + homepageUrl: string; + official: boolean; + featured: number; + downloads: number; +} + +interface IntegrationData { + data: Integration[]; +} + +let integrationData: IntegrationData; + export default { id: 'astro', name: 'Astro', icon: 'astro:logo', - init(canvas) { + async init(canvas, eventTarget) { createWindow(); document.addEventListener('astro:after-swap', createWindow); + eventTarget.addEventListener('plugin-toggled', async (event) => { + resetDebugButton(); + if (!(event instanceof CustomEvent)) return; + + if (event.detail.state === true) { + if (!integrationData) + fetch('https://astro.build/api/v1/dev-overlay/', { + cache: 'no-cache', + }) + .then((res) => res.json()) + .then((data) => { + integrationData = data; + integrationData.data = integrationData.data.map((integration) => { + return integration; + }); + refreshIntegrationList(); + }); + } + }); + function createWindow() { - const window = createWindowWithTransition( - 'Astro', - 'astro:logo', + const links: { icon: Icon; name: string; link: string }[] = [ + { + icon: 'bug', + name: 'Report a bug', + link: 'https://github.com/withastro/astro/issues/new/choose', + }, + { + icon: 'lightbulb', + name: 'Suggestions', + link: 'https://github.com/withastro/roadmap/discussions/new/choose', + }, + { + icon: 'file-search', + name: 'Docs', + link: 'https://docs.astro.build', + }, + { + icon: 'star', + name: 'Star on GitHub', + link: 'https://github.com/withastro/astro', + }, + { + icon: '', + name: 'Our Discord', + link: 'https://astro.build/chat', + }, + ]; + + const windowComponent = createWindowWithTransition( ` +
+
+ ${astroLogo} + Version ${ + (window as DevOverlayMetadata).__astro_dev_overlay__.version + } +
+ Copy debug info +
+
+
-

Welcome to Astro!

-
- Report an issue - View Astro Docs -
+

Top integrations

View all
+
+
+
+
+
+
+
+
+
- +
` ); - canvas.append(window); + const copyDebugButton = + windowComponent.querySelector('#copy-debug-button'); + + copyDebugButton?.addEventListener('click', () => { + navigator.clipboard.writeText( + '```\n' + (window as DevOverlayMetadata).__astro_dev_overlay__.debugInfo + '\n```' + ); + copyDebugButton.textContent = 'Copied to clipboard!'; + + setTimeout(() => { + resetDebugButton(); + }, 3500); + }); + + canvas.append(windowComponent); + } + + function resetDebugButton() { + const copyDebugButton = canvas.querySelector('#copy-debug-button'); + if (!copyDebugButton) return; + + copyDebugButton.innerHTML = 'Copy debug info '; + } + + function refreshIntegrationList() { + const integrationList = canvas.querySelector('#integration-list'); + + if (!integrationList) return; + integrationList.innerHTML = ''; + + const fragment = document.createDocumentFragment(); + for (const integration of integrationData.data) { + const integrationComponent = document.createElement('astro-dev-overlay-card'); + integrationComponent.link = integration.homepageUrl; + + const integrationContainer = document.createElement('div'); + integrationContainer.className = 'integration-container'; + + const integrationImage = document.createElement('div'); + integrationImage.className = 'integration-image'; + + if (integration.image) { + const img = document.createElement('img'); + img.src = integration.image; + img.alt = integration.title; + integrationImage.append(img); + } else { + const icon = document.createElement('astro-dev-overlay-icon'); + icon.icon = iconForIntegration(integration); + integrationImage.append(icon); + integrationImage.style.setProperty( + '--integration-image-background', + colorForIntegration() + ); + } + + integrationContainer.append(integrationImage); + + let integrationTitle = document.createElement('h3'); + integrationTitle.textContent = integration.title; + if (integration.official || integration.categories.includes('official')) { + integrationTitle.innerHTML += + ' '; + } + integrationContainer.append(integrationTitle); + + const integrationDescription = document.createElement('p'); + integrationDescription.textContent = + integration.description.length > 90 + ? integration.description.slice(0, 90) + '…' + : integration.description; + + integrationContainer.append(integrationDescription); + integrationComponent.append(integrationContainer); + + fragment.append(integrationComponent); + } + + integrationList.append(fragment); } }, async beforeTogglingOff(canvas) { diff --git a/packages/astro/src/runtime/client/dev-overlay/plugins/settings.ts b/packages/astro/src/runtime/client/dev-overlay/plugins/settings.ts index e0d3384463ef..9f1a279007e2 100644 --- a/packages/astro/src/runtime/client/dev-overlay/plugins/settings.ts +++ b/packages/astro/src/runtime/client/dev-overlay/plugins/settings.ts @@ -46,9 +46,11 @@ export default { function createSettingsWindow() { const window = createWindowWithTransition( - 'Settings', - 'gear', ` +
+

Settings

+
+ +
+

General

`, settingsRows.flatMap((setting) => [ diff --git a/packages/astro/src/runtime/client/dev-overlay/plugins/utils/highlight.ts b/packages/astro/src/runtime/client/dev-overlay/plugins/utils/highlight.ts index 3af467ecdc15..31c70b724e44 100644 --- a/packages/astro/src/runtime/client/dev-overlay/plugins/utils/highlight.ts +++ b/packages/astro/src/runtime/client/dev-overlay/plugins/utils/highlight.ts @@ -15,6 +15,19 @@ export function createHighlight(rect: DOMRect, icon?: Icon) { return highlight; } +export function getHighlightZIndex(el: Element) { + let highestZIndex = 0; + let current: Element | ParentNode | null = el; + while(current instanceof Element) { + let zIndex = Number(getComputedStyle(current).zIndex); + if(!Number.isNaN(zIndex) && zIndex > highestZIndex) { + highestZIndex = zIndex; + } + current = current.parentNode; + } + return highestZIndex + 1; +} + export function positionHighlight(highlight: DevOverlayHighlight, rect: DOMRect) { highlight.style.display = 'block'; // Make an highlight that is 10px bigger than the element on all sides diff --git a/packages/astro/src/runtime/client/dev-overlay/plugins/utils/icons.ts b/packages/astro/src/runtime/client/dev-overlay/plugins/utils/icons.ts new file mode 100644 index 000000000000..ec5a34ad89a1 --- /dev/null +++ b/packages/astro/src/runtime/client/dev-overlay/plugins/utils/icons.ts @@ -0,0 +1,43 @@ +import type { Integration } from '../astro.js'; + +function randomFromArray(list: T[]) { + return list[Math.floor(Math.random() * list.length)]; +} + +const categoryIcons = new Map( + Object.entries({ + frameworks: ['puzzle', 'grid'], + adapters: ['puzzle', 'grid', 'compress'], + 'css+ui': ['compress', 'grid', 'image', 'resizeImage', 'puzzle'], + 'performance+seo': ['approveUser', 'checkCircle', 'compress', 'robot', 'searchFile', 'sitemap'], + analytics: ['checkCircle', 'compress', 'searchFile'], + accessibility: ['approveUser', 'checkCircle'], + other: ['checkCircle', 'grid', 'puzzle', 'sitemap'], + }) +); + +export function iconForIntegration(integration: Integration) { + const icons = integration.categories + .filter((category: string) => categoryIcons.has(category)) + .map((category: string) => categoryIcons.get(category)!) + .flat(); + + return randomFromArray(icons); +} + +const iconColors = [ + '#BC52EE', + '#6D6AF0', + '#52EEBD', + '#52B7EE', + '#52EE55', + '#B7EE52', + '#EEBD52', + '#EE5552', + '#EE52B7', + '#858B98', +]; + +export function colorForIntegration() { + return randomFromArray(iconColors); +} diff --git a/packages/astro/src/runtime/client/dev-overlay/plugins/utils/window.ts b/packages/astro/src/runtime/client/dev-overlay/plugins/utils/window.ts index 04f09d6e6473..38055d72760d 100644 --- a/packages/astro/src/runtime/client/dev-overlay/plugins/utils/window.ts +++ b/packages/astro/src/runtime/client/dev-overlay/plugins/utils/window.ts @@ -1,48 +1,34 @@ -import type { Icon } from '../../ui-library/icons.js'; - -export function createWindowWithTransition( - title: string, - icon: Icon, - windowContent: string, - addedNodes: Node[] = [] -): DocumentFragment { - const fragment = document.createDocumentFragment(); - - const style = document.createElement('style'); - style.textContent = ` - :host { - opacity: 0; - transition: opacity 0.15s ease-in-out; - } - - :host([data-active]) { - opacity: 1; - } - - @media screen and (prefers-reduced-motion: no-preference) { - :host astro-dev-overlay-window { - transform: translateY(55px) translate(-50%, -50%); - transition: transform 0.15s ease-in-out; - transform-origin: center bottom; - } - - :host([data-active]) astro-dev-overlay-window { - transform: translateY(0) translate(-50%, -50%); - } - } +export function createWindowWithTransition(windowContent: string, addedNodes: Node[] = []) { + const windowElement = document.createElement('astro-dev-overlay-window'); + windowElement.innerHTML = ` + + ${windowContent} `; - fragment.append(style); - const window = document.createElement('astro-dev-overlay-window'); - window.windowTitle = title; - window.windowIcon = icon; - window.innerHTML = windowContent; + windowElement.append(...addedNodes); - window.append(...addedNodes); - - fragment.append(window); - - return fragment; + return windowElement; } export async function waitForTransition(canvas: ShadowRoot): Promise { diff --git a/packages/astro/src/runtime/client/dev-overlay/plugins/xray.ts b/packages/astro/src/runtime/client/dev-overlay/plugins/xray.ts index ab927bacc235..aff02fc9c11a 100644 --- a/packages/astro/src/runtime/client/dev-overlay/plugins/xray.ts +++ b/packages/astro/src/runtime/client/dev-overlay/plugins/xray.ts @@ -1,6 +1,6 @@ import type { DevOverlayMetadata, DevOverlayPlugin } from '../../../../@types/astro.js'; import type { DevOverlayHighlight } from '../ui-library/highlight.js'; -import { attachTooltipToHighlight, createHighlight, positionHighlight } from './utils/highlight.js'; +import { attachTooltipToHighlight, createHighlight, getHighlightZIndex, positionHighlight } from './utils/highlight.js'; const icon = ''; @@ -41,6 +41,10 @@ export default { const tooltip = buildIslandTooltip(island); attachTooltipToHighlight(highlight, tooltip, islandElement); + // Set the z-index to be 1 higher than the greatest z-index in the stack. + const zIndex = getHighlightZIndex(islandElement); + tooltip.style.zIndex = highlight.style.zIndex = zIndex+''; + canvas.append(highlight); islandsOverlays.push({ highlightElement: highlight, island: islandElement }); }); diff --git a/packages/astro/src/runtime/client/dev-overlay/ui-library/badge.ts b/packages/astro/src/runtime/client/dev-overlay/ui-library/badge.ts new file mode 100644 index 000000000000..06d1e5031536 --- /dev/null +++ b/packages/astro/src/runtime/client/dev-overlay/ui-library/badge.ts @@ -0,0 +1,71 @@ +type BadgeSize = 'small' | 'large'; +type BadgeStyle = 'purple' | 'gray' | 'red' | 'green' | 'yellow'; + +export class DevOverlayBadge extends HTMLElement { + size: BadgeSize = 'small'; + badgeStyle: BadgeStyle = 'purple'; + + shadowRoot: ShadowRoot; + + constructor() { + super(); + this.shadowRoot = this.attachShadow({ mode: 'open' }); + + if (this.hasAttribute('size')) this.size = this.getAttribute('size') as BadgeSize; + + if (this.hasAttribute('badge-style')) + this.badgeStyle = this.getAttribute('badge-style') as BadgeStyle; + + const classes = [`badge--${this.size}`, `badge--${this.badgeStyle}`]; + this.shadowRoot.innerHTML = ` + + +
+ +
+ `; + } +} diff --git a/packages/astro/src/runtime/client/dev-overlay/ui-library/button.ts b/packages/astro/src/runtime/client/dev-overlay/ui-library/button.ts new file mode 100644 index 000000000000..7c39fdc1d64e --- /dev/null +++ b/packages/astro/src/runtime/client/dev-overlay/ui-library/button.ts @@ -0,0 +1,88 @@ +type ButtonSize = 'small' | 'medium' | 'large'; +type ButtonStyle = 'ghost' | 'outline' | 'purple' | 'gray' | 'red'; + +export class DevOverlayButton extends HTMLElement { + size: ButtonSize = 'small'; + buttonStyle: ButtonStyle = 'purple'; + + shadowRoot: ShadowRoot; + + constructor() { + super(); + this.shadowRoot = this.attachShadow({ mode: 'open' }); + + if (this.hasAttribute('size')) this.size = this.getAttribute('size') as ButtonSize; + + if (this.hasAttribute('button-style')) + this.buttonStyle = this.getAttribute('button-style') as ButtonStyle; + + const classes = [`button--${this.size}`, `button--${this.buttonStyle}`]; + + this.shadowRoot.innerHTML = ` + + + + `; + } +} diff --git a/packages/astro/src/runtime/client/dev-overlay/ui-library/card.ts b/packages/astro/src/runtime/client/dev-overlay/ui-library/card.ts index 9d7062f8babf..90d4739f165f 100644 --- a/packages/astro/src/runtime/client/dev-overlay/ui-library/card.ts +++ b/packages/astro/src/runtime/client/dev-overlay/ui-library/card.ts @@ -1,8 +1,6 @@ -import { getIconElement, isDefinedIcon, type Icon } from './icons.js'; - export class DevOverlayCard extends HTMLElement { - icon?: Icon; link?: string | undefined | null; + clickAction?: () => void | (() => Promise); shadowRoot: ShadowRoot; constructor() { @@ -10,26 +8,30 @@ export class DevOverlayCard extends HTMLElement { this.shadowRoot = this.attachShadow({ mode: 'open' }); this.link = this.getAttribute('link'); - this.icon = this.hasAttribute('icon') ? (this.getAttribute('icon') as Icon) : undefined; } connectedCallback() { - const element = this.link ? 'a' : 'button'; + const element = this.link ? 'a' : this.clickAction ? 'button' : 'div'; this.shadowRoot.innerHTML = ` - <${element}${this.link ? ` href="${this.link}" target="_blank"` : ``}> - ${this.icon ? this.getElementForIcon(this.icon) : ''} - + <${element}${this.link ? ` href="${this.link}" target="_blank"` : ``} id="astro-overlay-card"> + `; - } - getElementForIcon(icon: Icon) { - let iconElement; - if (isDefinedIcon(icon)) { - iconElement = getIconElement(icon); - } else { - iconElement = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); - iconElement.setAttribute('viewBox', '0 0 16 16'); - iconElement.innerHTML = icon; + if (this.clickAction) { + this.shadowRoot + .getElementById('astro-overlay-card') + ?.addEventListener('click', this.clickAction); } - - iconElement?.style.setProperty('height', '24px'); - iconElement?.style.setProperty('width', '24px'); - - return iconElement?.outerHTML ?? ''; } } diff --git a/packages/astro/src/runtime/client/dev-overlay/ui-library/highlight.ts b/packages/astro/src/runtime/client/dev-overlay/ui-library/highlight.ts index 7d91535e0a40..6a1b914a8b01 100644 --- a/packages/astro/src/runtime/client/dev-overlay/ui-library/highlight.ts +++ b/packages/astro/src/runtime/client/dev-overlay/ui-library/highlight.ts @@ -26,6 +26,7 @@ export class DevOverlayHighlight extends HTMLElement { .icon { width: 24px; height: 24px; + color: white; background: linear-gradient(0deg, #B33E66, #B33E66), linear-gradient(0deg, #351722, #351722); border: 1px solid rgba(53, 23, 34, 1); border-radius: 9999px; diff --git a/packages/astro/src/runtime/client/dev-overlay/ui-library/icon.ts b/packages/astro/src/runtime/client/dev-overlay/ui-library/icon.ts new file mode 100644 index 000000000000..34cf3150db51 --- /dev/null +++ b/packages/astro/src/runtime/client/dev-overlay/ui-library/icon.ts @@ -0,0 +1,53 @@ +import { getIconElement, isDefinedIcon, type Icon } from './icons.js'; + +export class DevOverlayIcon extends HTMLElement { + _icon: Icon | undefined = undefined; + shadowRoot: ShadowRoot; + + get icon() { + return this._icon; + } + set icon(name: Icon | undefined) { + this._icon = name; + this.buildTemplate(); + } + + constructor() { + super(); + + this.shadowRoot = this.attachShadow({ mode: 'open' }); + + if (this.hasAttribute('icon')) { + this.icon = this.getAttribute('icon') as Icon; + } else { + this.buildTemplate(); + } + } + + getIconHTML(icon: Icon | undefined) { + if (icon && isDefinedIcon(icon)) { + return getIconElement(icon)?.outerHTML ?? ''; + } + + // If the icon that was passed isn't one of the predefined one, assume that they're passing it in as a slot + return ''; + } + + buildTemplate() { + this.shadowRoot.innerHTML = ` + \n${this.getIconHTML( + this._icon + )}`; + } +} diff --git a/packages/astro/src/runtime/client/dev-overlay/ui-library/icons.ts b/packages/astro/src/runtime/client/dev-overlay/ui-library/icons.ts index d9445e44acf8..d712a3d54da1 100644 --- a/packages/astro/src/runtime/client/dev-overlay/ui-library/icons.ts +++ b/packages/astro/src/runtime/client/dev-overlay/ui-library/icons.ts @@ -22,15 +22,41 @@ export function getIconElement( const icons = { 'astro:logo': ``, - warning: ``, + warning: ``, 'arrow-down': - '', - bug: '', - 'file-search': - '', + '', + bug: '', + '': '', 'check-circle': - '', - gear: '', + '', + gear: '', + lightbulb: + '', + 'file-search': + '', + star: '', + checkmark: + '', 'dots-three': '', + copy: '', + compress: + '', + grid: '', + puzzle: + '', + approveUser: + '', + checkCircle: + '', + resizeImage: + '', + searchFile: + '', + image: + '', + robot: + '', + sitemap: + '', } as const; diff --git a/packages/astro/src/runtime/client/dev-overlay/ui-library/index.ts b/packages/astro/src/runtime/client/dev-overlay/ui-library/index.ts new file mode 100644 index 000000000000..ba60ecf1e67e --- /dev/null +++ b/packages/astro/src/runtime/client/dev-overlay/ui-library/index.ts @@ -0,0 +1,8 @@ +export { DevOverlayBadge } from './badge.js'; +export { DevOverlayButton } from './button.js'; +export { DevOverlayCard } from './card.js'; +export { DevOverlayHighlight } from './highlight.js'; +export { DevOverlayTooltip } from './tooltip.js'; +export { DevOverlayWindow } from './window.js'; +export { DevOverlayToggle } from './toggle.js'; +export { DevOverlayIcon } from './icon.js'; diff --git a/packages/astro/src/runtime/client/dev-overlay/ui-library/toggle.ts b/packages/astro/src/runtime/client/dev-overlay/ui-library/toggle.ts index 63dcba65e304..1fb0b686a9d1 100644 --- a/packages/astro/src/runtime/client/dev-overlay/ui-library/toggle.ts +++ b/packages/astro/src/runtime/client/dev-overlay/ui-library/toggle.ts @@ -30,6 +30,14 @@ export class DevOverlayToggle extends HTMLElement { position: relative; } + @media (forced-colors: active) { + input::after { + border: 1px solid black; + top: 0px; + left: 0px; + } + } + input:checked { border: 1px solid rgba(213, 249, 196, 1); background-color: rgba(61, 125, 31, 1); diff --git a/packages/astro/src/runtime/client/dev-overlay/ui-library/window.ts b/packages/astro/src/runtime/client/dev-overlay/ui-library/window.ts index 18b515429ad8..00a4ace86989 100644 --- a/packages/astro/src/runtime/client/dev-overlay/ui-library/window.ts +++ b/packages/astro/src/runtime/client/dev-overlay/ui-library/window.ts @@ -1,18 +1,9 @@ -import { getIconElement, isDefinedIcon, type Icon } from './icons.js'; - export class DevOverlayWindow extends HTMLElement { - windowTitle?: string | undefined | null; - windowIcon?: Icon | undefined | null; shadowRoot: ShadowRoot; constructor() { super(); this.shadowRoot = this.attachShadow({ mode: 'open' }); - - this.windowTitle = this.getAttribute('window-title'); - this.windowIcon = this.hasAttribute('window-icon') - ? (this.getAttribute('window-icon') as Icon) - : undefined; } async connectedCallback() { @@ -32,24 +23,22 @@ export class DevOverlayWindow extends HTMLElement { color: rgba(204, 206, 216, 1); position: fixed; z-index: 999999999; - top: 55%; + /* -7.5em is a magic number that seems to keep it anchored with the dev bar */ + bottom: calc(7.5% + -150px); left: 50%; transform: translate(-50%, -50%); box-shadow: 0px 0px 0px 0px rgba(19, 21, 26, 0.30), 0px 1px 2px 0px rgba(19, 21, 26, 0.29), 0px 4px 4px 0px rgba(19, 21, 26, 0.26), 0px 10px 6px 0px rgba(19, 21, 26, 0.15), 0px 17px 7px 0px rgba(19, 21, 26, 0.04), 0px 26px 7px 0px rgba(19, 21, 26, 0.01); } - ::slotted(h1), ::slotted(h2), ::slotted(h3), ::slotted(h4), ::slotted(h5) { - font-weight: 600; - color: #fff; + @media (forced-colors: active) { + :host { + background: white; + } } - #window-title { - display: flex; - align-items: center; + ::slotted(h1), ::slotted(h2), ::slotted(h3), ::slotted(h4), ::slotted(h5) { font-weight: 600; color: #fff; - margin: 0; - font-size: 22px; } ::slotted(h1) { @@ -72,37 +61,13 @@ export class DevOverlayWindow extends HTMLElement { font-size: 14px; } - #window-title svg { - margin-right: 8px; - height: 1em; - } - hr, ::slotted(hr) { border: 1px solid rgba(27, 30, 36, 1); margin: 1em 0; } -

${this.windowIcon ? this.getElementForIcon(this.windowIcon) : ''}${ - this.windowTitle ?? '' - }

-
`; } - - getElementForIcon(icon: Icon) { - if (isDefinedIcon(icon)) { - const iconElement = getIconElement(icon); - iconElement?.style.setProperty('height', '1em'); - - return iconElement?.outerHTML; - } else { - const iconElement = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); - iconElement.setAttribute('viewBox', '0 0 16 16'); - iconElement.innerHTML = icon; - - return iconElement.outerHTML; - } - } } diff --git a/packages/astro/src/runtime/server/endpoint.ts b/packages/astro/src/runtime/server/endpoint.ts index df415ca67a47..f8fc1c071c78 100644 --- a/packages/astro/src/runtime/server/endpoint.ts +++ b/packages/astro/src/runtime/server/endpoint.ts @@ -2,35 +2,11 @@ import { bold } from 'kleur/colors'; import type { APIContext, EndpointHandler, Params } from '../../@types/astro.js'; import type { Logger } from '../../core/logger/core.js'; -function getHandlerFromModule(mod: EndpointHandler, method: string, logger: Logger) { - const lowerCaseMethod = method.toLowerCase(); - - // TODO: remove in Astro 4.0 - if (mod[lowerCaseMethod]) { - logger.warn( - null, - `Lower case endpoint names are deprecated and will not be supported in Astro 4.0. Rename the endpoint ${lowerCaseMethod} to ${method}.` - ); - } +function getHandlerFromModule(mod: EndpointHandler, method: string) { // If there was an exact match on `method`, return that function. if (mod[method]) { return mod[method]; } - - // TODO: remove in Astro 4.0 - if (mod[lowerCaseMethod]) { - return mod[lowerCaseMethod]; - } - // TODO: remove in Astro 4.0 - // Handle `del` instead of `delete`, since `delete` is a reserved word in JS. - if (method === 'delete' && mod['del']) { - return mod['del']; - } - // TODO: remove in Astro 4.0 - // If a single `all` handler was used, return that function. - if (mod['all']) { - return mod['all']; - } if (mod['ALL']) { return mod['ALL']; } @@ -48,9 +24,8 @@ export async function renderEndpoint( const { request, url } = context; const chosenMethod = request.method?.toUpperCase(); - const handler = getHandlerFromModule(mod, chosenMethod, logger); - // TODO: remove the 'get' check in Astro 4.0 - if (!ssr && ssr === false && chosenMethod && chosenMethod !== 'GET' && chosenMethod !== 'get') { + const handler = getHandlerFromModule(mod, chosenMethod); + if (!ssr && ssr === false && chosenMethod && chosenMethod !== 'GET') { logger.warn( null, `${url.pathname} ${bold( diff --git a/packages/astro/src/runtime/server/render/common.ts b/packages/astro/src/runtime/server/render/common.ts index e5a5d5e860e0..4087ef1a7ec5 100644 --- a/packages/astro/src/runtime/server/render/common.ts +++ b/packages/astro/src/runtime/server/render/common.ts @@ -67,8 +67,8 @@ function stringifyChunk( let prescriptType: PrescriptType = needsHydrationScript ? 'both' : needsDirectiveScript - ? 'directive' - : null; + ? 'directive' + : null; if (prescriptType) { let prescripts = getPrescripts(result, prescriptType, hydration.directive); return markHTMLString(prescripts); diff --git a/packages/astro/src/runtime/server/transition.ts b/packages/astro/src/runtime/server/transition.ts index 17eece1d9819..0fed017dfdc9 100644 --- a/packages/astro/src/runtime/server/transition.ts +++ b/packages/astro/src/runtime/server/transition.ts @@ -1,7 +1,9 @@ import type { SSRResult, TransitionAnimation, + TransitionAnimationPair, TransitionAnimationValue, + TransitionDirectionalAnimations, } from '../../@types/astro.js'; import { fade, slide } from '../../transitions/index.js'; import { markHTMLString } from './escape.js'; @@ -34,6 +36,19 @@ const getAnimations = (name: TransitionAnimationValue) => { if (typeof name === 'object') return name; }; +const addPairs = ( + animations: TransitionDirectionalAnimations | Record, + stylesheet: ViewTransitionStyleSheet +) => { + for (const [direction, images] of Object.entries(animations) as Entries) { + for (const [image, rules] of Object.entries(images) as Entries< + (typeof animations)[typeof direction] + >) { + stylesheet.addAnimationPair(direction, image, rules); + } + } +}; + export function renderTransition( result: SSRResult, hash: string, @@ -48,13 +63,7 @@ export function renderTransition( const animations = getAnimations(animationName); if (animations) { - for (const [direction, images] of Object.entries(animations) as Entries) { - for (const [image, rules] of Object.entries(images) as Entries< - (typeof animations)[typeof direction] - >) { - sheet.addAnimationPair(direction, image, rules); - } - } + addPairs(animations, sheet); } else if (animationName === 'none') { sheet.addFallback('old', 'animation: none; mix-blend-mode: normal;'); sheet.addModern('old', 'animation: none; opacity: 0; mix-blend-mode: normal;'); @@ -65,6 +74,19 @@ export function renderTransition( return scope; } +export function createAnimationScope( + transitionName: string, + animations: Record +) { + const hash = Math.random().toString(36).slice(2, 8); + const scope = `astro-${hash}`; + const sheet = new ViewTransitionStyleSheet(scope, transitionName); + + addPairs(animations, sheet); + + return { scope, styles: sheet.toString().replaceAll('"', '') }; +} + class ViewTransitionStyleSheet { private modern: string[] = []; private fallback: string[] = []; @@ -113,13 +135,18 @@ class ViewTransitionStyleSheet { } addAnimationPair( - direction: 'forwards' | 'backwards', + direction: 'forwards' | 'backwards' | string, image: 'old' | 'new', rules: TransitionAnimation | TransitionAnimation[] ) { const { scope, name } = this; const animation = stringifyAnimation(rules); - const prefix = direction === 'backwards' ? `[data-astro-transition=back]` : ''; + const prefix = + direction === 'backwards' + ? `[data-astro-transition=back]` + : direction === 'forwards' + ? '' + : `[data-astro-transition=${direction}]`; this.addRule('modern', `${prefix}::view-transition-${image}(${name}) { ${animation} }`); this.addRule( 'fallback', diff --git a/packages/astro/src/transitions/events.ts b/packages/astro/src/transitions/events.ts new file mode 100644 index 000000000000..b3921b31f0c9 --- /dev/null +++ b/packages/astro/src/transitions/events.ts @@ -0,0 +1,184 @@ +import { updateScrollPosition } from './router.js'; +import type { Direction, NavigationTypeString } from './types.js'; + +export const TRANSITION_BEFORE_PREPARATION = 'astro:before-preparation'; +export const TRANSITION_AFTER_PREPARATION = 'astro:after-preparation'; +export const TRANSITION_BEFORE_SWAP = 'astro:before-swap'; +export const TRANSITION_AFTER_SWAP = 'astro:after-swap'; +export const TRANSITION_PAGE_LOAD = 'astro:page-load'; + +type Events = + | typeof TRANSITION_AFTER_PREPARATION + | typeof TRANSITION_AFTER_SWAP + | typeof TRANSITION_PAGE_LOAD; +export const triggerEvent = (name: Events) => document.dispatchEvent(new Event(name)); +export const onPageLoad = () => triggerEvent(TRANSITION_PAGE_LOAD); + +/* + * Common stuff + */ +class BeforeEvent extends Event { + readonly from: URL; + to: URL; + direction: Direction | string; + readonly navigationType: NavigationTypeString; + readonly sourceElement: Element | undefined; + readonly info: any; + newDocument: Document; + + constructor( + type: string, + eventInitDict: EventInit | undefined, + from: URL, + to: URL, + direction: Direction | string, + navigationType: NavigationTypeString, + sourceElement: Element | undefined, + info: any, + newDocument: Document + ) { + super(type, eventInitDict); + this.from = from; + this.to = to; + this.direction = direction; + this.navigationType = navigationType; + this.sourceElement = sourceElement; + this.info = info; + this.newDocument = newDocument; + + Object.defineProperties(this, { + from: { enumerable: true }, + to: { enumerable: true, writable: true }, + direction: { enumerable: true, writable: true }, + navigationType: { enumerable: true }, + sourceElement: { enumerable: true }, + info: { enumerable: true }, + newDocument: { enumerable: true, writable: true }, + }); + } +} + +/* + * TransitionBeforePreparationEvent + + */ +export const isTransitionBeforePreparationEvent = ( + value: any +): value is TransitionBeforePreparationEvent => value.type === TRANSITION_BEFORE_PREPARATION; +export class TransitionBeforePreparationEvent extends BeforeEvent { + formData: FormData | undefined; + loader: () => Promise; + constructor( + from: URL, + to: URL, + direction: Direction | string, + navigationType: NavigationTypeString, + sourceElement: Element | undefined, + info: any, + newDocument: Document, + formData: FormData | undefined, + loader: (event: TransitionBeforePreparationEvent) => Promise + ) { + super( + TRANSITION_BEFORE_PREPARATION, + { cancelable: true }, + from, + to, + direction, + navigationType, + sourceElement, + info, + newDocument + ); + this.formData = formData; + this.loader = loader.bind(this, this); + Object.defineProperties(this, { + formData: { enumerable: true }, + loader: { enumerable: true, writable: true }, + }); + } +} + +/* + * TransitionBeforeSwapEvent + */ + +export const isTransitionBeforeSwapEvent = (value: any): value is TransitionBeforeSwapEvent => + value.type === TRANSITION_BEFORE_SWAP; +export class TransitionBeforeSwapEvent extends BeforeEvent { + readonly direction: Direction | string; + readonly viewTransition: ViewTransition; + swap: () => void; + + constructor( + afterPreparation: BeforeEvent, + viewTransition: ViewTransition, + swap: (event: TransitionBeforeSwapEvent) => void + ) { + super( + TRANSITION_BEFORE_SWAP, + undefined, + afterPreparation.from, + afterPreparation.to, + afterPreparation.direction, + afterPreparation.navigationType, + afterPreparation.sourceElement, + afterPreparation.info, + afterPreparation.newDocument + ); + this.direction = afterPreparation.direction; + this.viewTransition = viewTransition; + this.swap = swap.bind(this, this); + + Object.defineProperties(this, { + direction: { enumerable: true }, + viewTransition: { enumerable: true }, + swap: { enumerable: true, writable: true }, + }); + } +} + +export async function doPreparation( + from: URL, + to: URL, + direction: Direction | string, + navigationType: NavigationTypeString, + sourceElement: Element | undefined, + info: any, + formData: FormData | undefined, + defaultLoader: (event: TransitionBeforePreparationEvent) => Promise +) { + const event = new TransitionBeforePreparationEvent( + from, + to, + direction, + navigationType, + sourceElement, + info, + window.document, + formData, + defaultLoader + ); + if (document.dispatchEvent(event)) { + await event.loader(); + if (!event.defaultPrevented) { + triggerEvent(TRANSITION_AFTER_PREPARATION); + if (event.navigationType !== 'traverse') { + // save the current scroll position before we change the DOM and transition to the new page + updateScrollPosition({ scrollX, scrollY }); + } + } + } + return event; +} + +export async function doSwap( + afterPreparation: BeforeEvent, + viewTransition: ViewTransition, + defaultSwap: (event: TransitionBeforeSwapEvent) => void +) { + const event = new TransitionBeforeSwapEvent(afterPreparation, viewTransition, defaultSwap); + document.dispatchEvent(event); + event.swap(); + return event; +} diff --git a/packages/astro/src/transitions/index.ts b/packages/astro/src/transitions/index.ts index 0a58d2d4b48a..d87052f2daf2 100644 --- a/packages/astro/src/transitions/index.ts +++ b/packages/astro/src/transitions/index.ts @@ -1,4 +1,5 @@ import type { TransitionAnimationPair, TransitionDirectionalAnimations } from '../@types/astro.js'; +export { createAnimationScope } from '../runtime/server/transition.js'; const EASE_IN_OUT_QUART = 'cubic-bezier(0.76, 0, 0.24, 1)'; diff --git a/packages/astro/src/transitions/router.ts b/packages/astro/src/transitions/router.ts index c4da38c2c8be..92d8bb4a219f 100644 --- a/packages/astro/src/transitions/router.ts +++ b/packages/astro/src/transitions/router.ts @@ -1,23 +1,27 @@ -export type Fallback = 'none' | 'animate' | 'swap'; -export type Direction = 'forward' | 'back'; -export type Options = { - history?: 'auto' | 'push' | 'replace'; - formData?: FormData; -}; +import { + TRANSITION_AFTER_SWAP, + TransitionBeforeSwapEvent, + doPreparation, + doSwap, + type TransitionBeforePreparationEvent, +} from './events.js'; +import type { Direction, Fallback, Options } from './types.js'; type State = { index: number; scrollX: number; scrollY: number; - intraPage?: boolean; }; type Events = 'astro:page-load' | 'astro:after-swap'; // only update history entries that are managed by us // leave other entries alone and do not accidently add state. -const updateScrollPosition = (positions: { scrollX: number; scrollY: number }) => - history.state && history.replaceState({ ...history.state, ...positions }, ''); - +export const updateScrollPosition = (positions: { scrollX: number; scrollY: number }) => { + if (history.state) { + history.scrollRestoration = 'manual'; + history.replaceState({ ...history.state, ...positions }, ''); + } +}; const inBrowser = import.meta.env.SSR === false; export const supportsViewTransitions = inBrowser && !!document.startViewTransition; @@ -25,8 +29,21 @@ export const supportsViewTransitions = inBrowser && !!document.startViewTransiti export const transitionEnabledOnThisPage = () => inBrowser && !!document.querySelector('[name="astro-view-transitions-enabled"]'); -const samePage = (otherLocation: URL) => - location.pathname === otherLocation.pathname && location.search === otherLocation.search; +const samePage = (thisLocation: URL, otherLocation: URL) => + thisLocation.origin === otherLocation.origin && + thisLocation.pathname === otherLocation.pathname && + thisLocation.search === otherLocation.search; + +// When we traverse the history, the window.location is already set to the new location. +// This variable tells us where we came from +let originalLocation: URL; +// The result of startViewTransition (browser or simulation) +let viewTransition: ViewTransition | undefined; +// skip transition flag for fallback simulation +let skipTransition = false; +// The resolve function of the finished promise for fallback simulation +let viewTransitionFinished: () => void; + const triggerEvent = (name: Events) => document.dispatchEvent(new Event(name)); const onPageLoad = () => triggerEvent('astro:page-load'); const announce = () => { @@ -48,6 +65,9 @@ const announce = () => { }; const PERSIST_ATTR = 'data-astro-transition-persist'; +const DIRECTION_ATTR = 'data-astro-transition'; +const OLD_NEW_ATTR = 'data-astro-transition-fallback'; + const VITE_ID = 'data-vite-dev-id'; let parser: DOMParser; @@ -66,7 +86,8 @@ if (inBrowser) { } else if (transitionEnabledOnThisPage()) { // This page is loaded from the browser addressbar or via a link from extern, // it needs a state in the history - history.replaceState({ index: currentHistoryIndex, scrollX, scrollY, intraPage: false }, ''); + history.replaceState({ index: currentHistoryIndex, scrollX, scrollY }, ''); + history.scrollRestoration = 'manual'; } } @@ -147,50 +168,62 @@ function runScripts() { return wait; } -function isInfinite(animation: Animation) { - const effect = animation.effect; - if (!effect || !(effect instanceof KeyframeEffect) || !effect.target) return false; - const style = window.getComputedStyle(effect.target, effect.pseudoElement); - return style.animationIterationCount === 'infinite'; -} - // Add a new entry to the browser history. This also sets the new page in the browser addressbar. // Sets the scroll position according to the hash fragment of the new location. -const moveToLocation = (toLocation: URL, replace: boolean, intraPage: boolean) => { - const fresh = !samePage(toLocation); +const moveToLocation = (to: URL, from: URL, options: Options, historyState?: State) => { + const intraPage = samePage(from, to); + let scrolledToTop = false; - if (toLocation.href !== location.href) { - if (replace) { - history.replaceState({ ...history.state }, '', toLocation.href); + if (to.href !== location.href && !historyState) { + if (options.history === 'replace') { + const current = history.state; + history.replaceState( + { + ...options.state, + index: current.index, + scrollX: current.scrollX, + scrollY: current.scrollY, + }, + '', + to.href + ); } else { - history.replaceState({ ...history.state, intraPage }, ''); history.pushState( - { index: ++currentHistoryIndex, scrollX: 0, scrollY: 0 }, + { ...options.state, index: ++currentHistoryIndex, scrollX: 0, scrollY: 0 }, '', - toLocation.href + to.href ); } - // now we are on the new page for non-history navigations! - // (with history navigation page change happens before popstate is fired) - // freshly loaded pages start from the top - if (fresh) { - scrollTo({ left: 0, top: 0, behavior: 'instant' }); - scrolledToTop = true; - } } - if (toLocation.hash) { - // because we are already on the target page ... - // ... what comes next is a intra-page navigation - // that won't reload the page but instead scroll to the fragment - location.href = toLocation.href; + // now we are on the new page for non-history navigations! + // (with history navigation page change happens before popstate is fired) + originalLocation = to; + + // freshly loaded pages start from the top + if (!intraPage) { + scrollTo({ left: 0, top: 0, behavior: 'instant' }); + scrolledToTop = true; + } + + if (historyState) { + scrollTo(historyState.scrollX, historyState.scrollY); } else { - if (!scrolledToTop) { - scrollTo({ left: 0, top: 0, behavior: 'instant' }); + if (to.hash) { + // because we are already on the target page ... + // ... what comes next is a intra-page navigation + // that won't reload the page but instead scroll to the fragment + history.scrollRestoration = 'auto'; + location.href = to.href; + } else { + if (!scrolledToTop) { + scrollTo({ left: 0, top: 0, behavior: 'instant' }); + } } + history.scrollRestoration = 'manual'; } }; -function stylePreloadLinks(newDocument: Document) { +function preloadStyleLinks(newDocument: Document) { const links: Promise[] = []; for (const el of newDocument.querySelectorAll('head link[rel=stylesheet]')) { // Do not preload links that are already on the page. @@ -221,24 +254,23 @@ function stylePreloadLinks(newDocument: Document) { // if popState is given, this holds the scroll position for history navigation // if fallback === "animate" then simulate view transitions async function updateDOM( - newDocument: Document, - toLocation: URL, + preparationEvent: TransitionBeforePreparationEvent, options: Options, - popState?: State, + historyState?: State, fallback?: Fallback ) { // Check for a head element that should persist and returns it, // either because it has the data attribute or is a link el. // Returns null if the element is not part of the new head, undefined if it should be left alone. - const persistedHeadElement = (el: HTMLElement): Element | null => { + const persistedHeadElement = (el: HTMLElement, newDoc: Document): Element | null => { const id = el.getAttribute(PERSIST_ATTR); - const newEl = id && newDocument.head.querySelector(`[${PERSIST_ATTR}="${id}"]`); + const newEl = id && newDoc.head.querySelector(`[${PERSIST_ATTR}="${id}"]`); if (newEl) { return newEl; } if (el.matches('link[rel=stylesheet]')) { const href = el.getAttribute('href'); - return newDocument.head.querySelector(`link[rel=stylesheet][href="${href}"]`); + return newDoc.head.querySelector(`link[rel=stylesheet][href="${href}"]`); } return null; }; @@ -282,22 +314,22 @@ async function updateDOM( } }; - const swap = () => { + const defaultSwap = (beforeSwapEvent: TransitionBeforeSwapEvent) => { // swap attributes of the html element // - delete all attributes from the current document // - insert all attributes from doc // - reinsert all original attributes that are named 'data-astro-*' const html = document.documentElement; - const astro = [...html.attributes].filter( + const astroAttributes = [...html.attributes].filter( ({ name }) => (html.removeAttribute(name), name.startsWith('data-astro-')) ); - [...newDocument.documentElement.attributes, ...astro].forEach(({ name, value }) => - html.setAttribute(name, value) + [...beforeSwapEvent.newDocument.documentElement.attributes, ...astroAttributes].forEach( + ({ name, value }) => html.setAttribute(name, value) ); // Replace scripts in both the head and body. for (const s1 of document.scripts) { - for (const s2 of newDocument.scripts) { + for (const s2 of beforeSwapEvent.newDocument.scripts) { if ( // Inline (!s1.src && s1.textContent === s2.textContent) || @@ -313,7 +345,7 @@ async function updateDOM( // Swap head for (const el of Array.from(document.head.children)) { - const newEl = persistedHeadElement(el as HTMLElement); + const newEl = persistedHeadElement(el as HTMLElement, beforeSwapEvent.newDocument); // If the element exists in the document already, remove it // from the new document and leave the current node alone if (newEl) { @@ -325,7 +357,7 @@ async function updateDOM( } // Everything left in the new head is new, append it all. - document.head.append(...newDocument.head.children); + document.head.append(...beforeSwapEvent.newDocument.head.children); // Persist elements in the existing body const oldBody = document.body; @@ -333,7 +365,7 @@ async function updateDOM( const savedFocus = saveFocus(); // this will reset scroll Position - document.body.replaceWith(newDocument.body); + document.body.replaceWith(beforeSwapEvent.newDocument.body); for (const el of oldBody.querySelectorAll(`[${PERSIST_ATTR}]`)) { const id = el.getAttribute(PERSIST_ATTR); @@ -345,103 +377,187 @@ async function updateDOM( } } restoreFocus(savedFocus); - - if (popState) { - scrollTo(popState.scrollX, popState.scrollY); // usings 'auto' scrollBehavior - } else { - moveToLocation(toLocation, options.history === 'replace', false); - } - - triggerEvent('astro:after-swap'); }; - const links = stylePreloadLinks(newDocument); - links.length && (await Promise.all(links)); - - if (fallback === 'animate') { + async function animate(phase: string) { + function isInfinite(animation: Animation) { + const effect = animation.effect; + if (!effect || !(effect instanceof KeyframeEffect) || !effect.target) return false; + const style = window.getComputedStyle(effect.target, effect.pseudoElement); + return style.animationIterationCount === 'infinite'; + } // Trigger the animations const currentAnimations = document.getAnimations(); - document.documentElement.dataset.astroTransitionFallback = 'old'; - const newAnimations = document - .getAnimations() - .filter((a) => !currentAnimations.includes(a) && !isInfinite(a)); - const finished = Promise.all(newAnimations.map((a) => a.finished)); - await finished; - swap(); - document.documentElement.dataset.astroTransitionFallback = 'new'; + document.documentElement.setAttribute(OLD_NEW_ATTR, phase); + const nextAnimations = document.getAnimations(); + const newAnimations = nextAnimations.filter( + (a) => !currentAnimations.includes(a) && !isInfinite(a) + ); + return Promise.all(newAnimations.map((a) => a.finished)); + } + + if (!skipTransition) { + document.documentElement.setAttribute(DIRECTION_ATTR, preparationEvent.direction); + + if (fallback === 'animate') { + await animate('old'); + } } else { - swap(); + // that's what Chrome does + throw new DOMException('Transition was skipped'); + } + + const swapEvent = await doSwap(preparationEvent, viewTransition!, defaultSwap); + moveToLocation(swapEvent.to, swapEvent.from, options, historyState); + triggerEvent(TRANSITION_AFTER_SWAP); + + if (fallback === 'animate' && !skipTransition) { + animate('new').then(() => viewTransitionFinished()); } } async function transition( direction: Direction, - toLocation: URL, + from: URL, + to: URL, options: Options, - popState?: State + historyState?: State ) { - let finished: Promise; - const href = toLocation.href; - const init: RequestInit = {}; - if (options.formData) { - init.method = 'POST'; - init.body = options.formData; + const navigationType = historyState + ? 'traverse' + : options.history === 'replace' + ? 'replace' + : 'push'; + + if (samePage(from, to) && !options.formData /* not yet: && to.hash*/) { + if (navigationType !== 'traverse') { + updateScrollPosition({ scrollX, scrollY }); + } + moveToLocation(to, from, options, historyState); + return; } - const response = await fetchHTML(href, init); - // If there is a problem fetching the new page, just do an MPA navigation to it. - if (response === null) { - location.href = href; + + const prepEvent = await doPreparation( + from, + to, + direction, + navigationType, + options.sourceElement, + options.info, + options.formData, + defaultLoader + ); + if (prepEvent.defaultPrevented) { + location.href = to.href; return; } - // if there was a redirection, show the final URL in the browser's address bar - if (response.redirected) { - toLocation = new URL(response.redirected); + + function pageMustReload(preparationEvent: TransitionBeforePreparationEvent) { + return ( + preparationEvent.to.hash === '' || + !samePage(preparationEvent.from, preparationEvent.to) || + preparationEvent.sourceElement instanceof HTMLFormElement + ); } - parser ??= new DOMParser(); + async function defaultLoader(preparationEvent: TransitionBeforePreparationEvent) { + if (pageMustReload(preparationEvent)) { + const href = preparationEvent.to.href; + const init: RequestInit = {}; + if (preparationEvent.formData) { + init.method = 'POST'; + init.body = preparationEvent.formData; + } + const response = await fetchHTML(href, init); + // If there is a problem fetching the new page, just do an MPA navigation to it. + if (response === null) { + preparationEvent.preventDefault(); + return; + } + // if there was a redirection, show the final URL in the browser's address bar + if (response.redirected) { + preparationEvent.to = new URL(response.redirected); + } + + parser ??= new DOMParser(); - const newDocument = parser.parseFromString(response.html, response.mediaType); - // The next line might look like a hack, - // but it is actually necessary as noscript elements - // and their contents are returned as markup by the parser, - // see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString - newDocument.querySelectorAll('noscript').forEach((el) => el.remove()); + preparationEvent.newDocument = parser.parseFromString(response.html, response.mediaType); + // The next line might look like a hack, + // but it is actually necessary as noscript elements + // and their contents are returned as markup by the parser, + // see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString + preparationEvent.newDocument.querySelectorAll('noscript').forEach((el) => el.remove()); - // If ViewTransitions is not enabled on the incoming page, do a full page load to it. - // Unless this was a form submission, in which case we do not want to trigger another mutation. - if (!newDocument.querySelector('[name="astro-view-transitions-enabled"]') && !options.formData) { - location.href = href; - return; - } + // If ViewTransitions is not enabled on the incoming page, do a full page load to it. + // Unless this was a form submission, in which case we do not want to trigger another mutation. + if ( + !preparationEvent.newDocument.querySelector('[name="astro-view-transitions-enabled"]') && + !preparationEvent.formData + ) { + preparationEvent.preventDefault(); + return; + } - if (import.meta.env.DEV) await prepareForClientOnlyComponents(newDocument, toLocation); + const links = preloadStyleLinks(preparationEvent.newDocument); + links.length && (await Promise.all(links)); - if (!popState) { - // save the current scroll position before we change the DOM and transition to the new page - history.replaceState({ ...history.state, scrollX, scrollY }, ''); + if (import.meta.env.DEV) + await prepareForClientOnlyComponents(preparationEvent.newDocument, preparationEvent.to); + } else { + preparationEvent.newDocument = document; + return; + } } - document.documentElement.dataset.astroTransition = direction; + + skipTransition = false; if (supportsViewTransitions) { - finished = document.startViewTransition(() => - updateDOM(newDocument, toLocation, options, popState) - ).finished; + viewTransition = document.startViewTransition( + async () => await updateDOM(prepEvent, options, historyState) + ); } else { - finished = updateDOM(newDocument, toLocation, options, popState, getFallback()); + const updateDone = (async () => { + // immediatelly paused to setup the ViewTransition object for Fallback mode + await new Promise((r) => setTimeout(r)); + await updateDOM(prepEvent, options, historyState, getFallback()); + })(); + + // When the updateDone promise is settled, + // we have run and awaited all swap functions and the after-swap event + // This qualifies for "updateCallbackDone". + // + // For the build in ViewTransition, "ready" settles shortly after "updateCallbackDone", + // i.e. after all pseudo elements are created and the animation is about to start. + // In simulation mode the "old" animation starts before swap, + // the "new" animation starts after swap. That is not really comparable. + // Thus we go with "very, very shortly after updateCallbackDone" and make both equal. + // + // "finished" resolves after all animations are done. + + viewTransition = { + updateCallbackDone: updateDone, // this is about correct + ready: updateDone, // good enough + finished: new Promise((r) => (viewTransitionFinished = r)), // see end of updateDOM + skipTransition: () => { + skipTransition = true; + }, + }; } - try { - await finished; - } finally { - // skip this for the moment as it tends to stop fallback animations - // document.documentElement.removeAttribute('data-astro-transition'); + + viewTransition.ready.then(async () => { await runScripts(); onPageLoad(); announce(); - } + }); + viewTransition.finished.then(() => { + document.documentElement.removeAttribute(DIRECTION_ATTR); + document.documentElement.removeAttribute(OLD_NEW_ATTR); + }); + await viewTransition.ready; } let navigateOnServerWarned = false; -export function navigate(href: string, options?: Options) { +export async function navigate(href: string, options?: Options) { if (inBrowser === false) { if (!navigateOnServerWarned) { // instantiate an error for the stacktrace to show to user. @@ -461,17 +577,7 @@ export function navigate(href: string, options?: Options) { location.href = href; return; } - const toLocation = new URL(href, location.href); - // We do not have page transitions on navigations to the same page (intra-page navigation) - // *unless* they are form posts which have side-effects and so need to happen - // but we want to handle prevent reload on navigation to the same page - // Same page means same origin, path and query params (but maybe different hash) - if (location.origin === toLocation.origin && samePage(toLocation) && !options?.formData) { - moveToLocation(toLocation, options?.history === 'replace', true); - } else { - // different origin will be detected by fetch - transition('forward', toLocation, options ?? {}); - } + await transition('forward', originalLocation, new URL(href, location.href), options ?? {}); } function onPopState(ev: PopStateEvent) { @@ -479,10 +585,6 @@ function onPopState(ev: PopStateEvent) { // The current page doesn't have View Transitions enabled // but the page we navigate to does (because it set the state). // Do a full page refresh to reload the client-side router from the new page. - // Scroll restauration will then happen during the reload when the router's code is re-executed - if (history.scrollRestoration) { - history.scrollRestoration = 'manual'; - } location.reload(); return; } @@ -492,28 +594,13 @@ function onPopState(ev: PopStateEvent) { // Just ignore stateless entries. // The browser will handle navigation fine without our help if (ev.state === null) { - if (history.scrollRestoration) { - history.scrollRestoration = 'auto'; - } return; } - - // With the default "auto", the browser will jump to the old scroll position - // before the ViewTransition is complete. - if (history.scrollRestoration) { - history.scrollRestoration = 'manual'; - } - const state: State = history.state; - if (state.intraPage) { - // this is non transition intra-page scrolling - scrollTo(state.scrollX, state.scrollY); - } else { - const nextIndex = state.index; - const direction: Direction = nextIndex > currentHistoryIndex ? 'forward' : 'back'; - currentHistoryIndex = nextIndex; - transition(direction, new URL(location.href), {}, state); - } + const nextIndex = state.index; + const direction: Direction = nextIndex > currentHistoryIndex ? 'forward' : 'back'; + currentHistoryIndex = nextIndex; + transition(direction, originalLocation, new URL(location.href), {}, state); } // There's not a good way to record scroll position before a back button. @@ -522,8 +609,10 @@ const onScroll = () => { updateScrollPosition({ scrollX, scrollY }); }; +// initialization if (inBrowser) { if (supportsViewTransitions || getFallback() !== 'none') { + originalLocation = new URL(location.href); addEventListener('popstate', onPopState); addEventListener('load', onPageLoad); if ('onscrollend' in window) addEventListener('scrollend', onScroll); diff --git a/packages/astro/src/transitions/types.ts b/packages/astro/src/transitions/types.ts new file mode 100644 index 000000000000..0e70825e5967 --- /dev/null +++ b/packages/astro/src/transitions/types.ts @@ -0,0 +1,10 @@ +export type Fallback = 'none' | 'animate' | 'swap'; +export type Direction = 'forward' | 'back'; +export type NavigationTypeString = 'push' | 'replace' | 'traverse'; +export type Options = { + history?: 'auto' | 'push' | 'replace'; + info?: any; + state?: any; + formData?: FormData; + sourceElement?: Element; // more than HTMLElement, e.g. SVGAElement +}; diff --git a/packages/astro/src/transitions/vite-plugin-transitions.ts b/packages/astro/src/transitions/vite-plugin-transitions.ts index 8d5dbe553804..a3d68ade653c 100644 --- a/packages/astro/src/transitions/vite-plugin-transitions.ts +++ b/packages/astro/src/transitions/vite-plugin-transitions.ts @@ -21,13 +21,20 @@ export default function astroTransitions({ settings }: { settings: AstroSettings load(id) { if (id === resolvedVirtualModuleId) { return ` - export * from "astro/transitions"; + export * from "astro/virtual-modules/transitions.js"; export { default as ViewTransitions } from "astro/components/ViewTransitions.astro"; `; } if (id === resolvedVirtualClientModuleId) { return ` - export * from "astro/transitions/router"; + export { navigate, supportsViewTransitions, transitionEnabledOnThisPage } from "astro/virtual-modules/transitions-router.js"; + export * from "astro/virtual-modules/transitions-types.js"; + export { + TRANSITION_BEFORE_PREPARATION, isTransitionBeforePreparationEvent, TransitionBeforePreparationEvent, + TRANSITION_AFTER_PREPARATION, + TRANSITION_BEFORE_SWAP, isTransitionBeforeSwapEvent, TransitionBeforeSwapEvent, + TRANSITION_AFTER_SWAP, TRANSITION_PAGE_LOAD + } from "astro/virtual-modules/transitions-events.js"; `; } }, diff --git a/packages/astro/src/virtual-modules/README.md b/packages/astro/src/virtual-modules/README.md new file mode 100644 index 000000000000..137e2e16f59a --- /dev/null +++ b/packages/astro/src/virtual-modules/README.md @@ -0,0 +1,3 @@ +# virtual-modules + +This directory contains the entry points for Astro virtual modules. For example, `astro:foobar` would re-export or use `astro/virtual-modules/foobar.js` which maps to the internal file `astro/dist/virtual-modules/foobar.js`. diff --git a/packages/astro/src/virtual-modules/i18n.ts b/packages/astro/src/virtual-modules/i18n.ts new file mode 100644 index 000000000000..a55c1f6cfb59 --- /dev/null +++ b/packages/astro/src/virtual-modules/i18n.ts @@ -0,0 +1 @@ +export * from '../i18n/index.js'; diff --git a/packages/astro/src/virtual-modules/middleware.ts b/packages/astro/src/virtual-modules/middleware.ts new file mode 100644 index 000000000000..4874c88d00a4 --- /dev/null +++ b/packages/astro/src/virtual-modules/middleware.ts @@ -0,0 +1 @@ +export { defineMiddleware, sequence } from '../core/middleware/index.js'; diff --git a/packages/astro/src/virtual-modules/prefetch.ts b/packages/astro/src/virtual-modules/prefetch.ts new file mode 100644 index 000000000000..72bc23e2d04e --- /dev/null +++ b/packages/astro/src/virtual-modules/prefetch.ts @@ -0,0 +1 @@ +export * from '../prefetch/index.js'; diff --git a/packages/astro/src/virtual-modules/transitions-events.ts b/packages/astro/src/virtual-modules/transitions-events.ts new file mode 100644 index 000000000000..35ecaf64f897 --- /dev/null +++ b/packages/astro/src/virtual-modules/transitions-events.ts @@ -0,0 +1 @@ +export * from '../transitions/events.js'; diff --git a/packages/astro/src/virtual-modules/transitions-router.ts b/packages/astro/src/virtual-modules/transitions-router.ts new file mode 100644 index 000000000000..666089f3f6fc --- /dev/null +++ b/packages/astro/src/virtual-modules/transitions-router.ts @@ -0,0 +1 @@ +export * from '../transitions/router.js'; diff --git a/packages/astro/src/virtual-modules/transitions-types.ts b/packages/astro/src/virtual-modules/transitions-types.ts new file mode 100644 index 000000000000..66dfb1d0ef6c --- /dev/null +++ b/packages/astro/src/virtual-modules/transitions-types.ts @@ -0,0 +1 @@ +export * from '../transitions/types.js'; diff --git a/packages/astro/src/virtual-modules/transitions.ts b/packages/astro/src/virtual-modules/transitions.ts new file mode 100644 index 000000000000..84aeb3a2cfdf --- /dev/null +++ b/packages/astro/src/virtual-modules/transitions.ts @@ -0,0 +1 @@ +export * from '../transitions/index.js'; diff --git a/packages/astro/src/vite-plugin-astro-server/response.ts b/packages/astro/src/vite-plugin-astro-server/response.ts index b1c9480956b4..ac36e703b072 100644 --- a/packages/astro/src/vite-plugin-astro-server/response.ts +++ b/packages/astro/src/vite-plugin-astro-server/response.ts @@ -68,7 +68,7 @@ export async function writeWebResponse(res: http.ServerResponse, webResponse: Re // Previously, `headers.entries()` would already have these merged, but it seems like this isn't the case anymore. if (headers.has('set-cookie')) { if ('getSetCookie' in headers && typeof headers.getSetCookie === 'function') { - _headers['set-cookie'] = headers.getSetCookie(); + _headers['set-cookie'] = headers.getSetCookie().toString(); } else { _headers['set-cookie'] = headers.get('set-cookie')!; } diff --git a/packages/astro/src/vite-plugin-astro-server/route.ts b/packages/astro/src/vite-plugin-astro-server/route.ts index 0863ad1b4e06..3323749dee9c 100644 --- a/packages/astro/src/vite-plugin-astro-server/route.ts +++ b/packages/astro/src/vite-plugin-astro-server/route.ts @@ -2,12 +2,15 @@ import type http from 'node:http'; import { fileURLToPath } from 'node:url'; import type { ComponentInstance, + DevOverlayMetadata, ManifestData, - MiddlewareEndpointHandler, + MiddlewareHandler, RouteData, SSRElement, SSRManifest, } from '../@types/astro.js'; +import { getInfoOutput } from '../cli/info/index.js'; +import { ASTRO_VERSION } from '../core/constants.js'; import { AstroErrorData, isAstroError } from '../core/errors/index.js'; import { sequence } from '../core/middleware/index.js'; import { req } from '../core/messages.js'; @@ -215,6 +218,7 @@ export async function handleRoute({ segments: [], type: 'fallback', route: '', + fallbackRoutes: [], }; renderContext = await createRenderContext({ request, @@ -222,6 +226,9 @@ export async function handleRoute({ env, mod, route, + locales: manifest.i18n?.locales, + routingStrategy: manifest.i18n?.routingStrategy, + defaultLocale: manifest.i18n?.defaultLocale, }); } else { return handle404Response(origin, incomingRequest, incomingResponse); @@ -278,11 +285,13 @@ export async function handleRoute({ route: options.route, mod, env, - locales: i18n ? i18n.locales : undefined, + locales: i18n?.locales, + routingStrategy: i18n?.routingStrategy, + defaultLocale: i18n?.defaultLocale, }); } - const onRequest = middleware?.onRequest as MiddlewareEndpointHandler | undefined; + const onRequest = middleware?.onRequest as MiddlewareHandler | undefined; if (config.experimental.i18n) { const i18Middleware = createI18nMiddleware( config.experimental.i18n, @@ -384,12 +393,18 @@ async function getScriptsAndStyles({ pipeline, filePath }: GetScriptsAndStylesPa children: '', }); + const additionalMetadata: DevOverlayMetadata['__astro_dev_overlay__'] = { + root: fileURLToPath(settings.config.root), + version: ASTRO_VERSION, + debugInfo: await getInfoOutput({ userConfig: settings.config, print: false }), + }; + + settings.config; + // Additional data for the dev overlay scripts.add({ props: {}, - children: `window.__astro_dev_overlay__ = {root: ${JSON.stringify( - fileURLToPath(settings.config.root) - )}}`, + children: `window.__astro_dev_overlay__ = ${JSON.stringify(additionalMetadata)}`, }); } } diff --git a/packages/astro/src/vite-plugin-integrations-container/index.ts b/packages/astro/src/vite-plugin-integrations-container/index.ts index b18d2e5e9956..2125df857d9f 100644 --- a/packages/astro/src/vite-plugin-integrations-container/index.ts +++ b/packages/astro/src/vite-plugin-integrations-container/index.ts @@ -34,7 +34,7 @@ async function resolveEntryPoint( this: PluginContext, route: InjectedRoute ): Promise { - const resolvedId = await this.resolve(route.entryPoint) + const resolvedId = await this.resolve(route.entrypoint) .then((res) => res?.id) .catch(() => undefined); if (!resolvedId) return route; diff --git a/packages/astro/src/vite-plugin-scanner/scan.ts b/packages/astro/src/vite-plugin-scanner/scan.ts index 3eb834ea24db..6c277567d416 100644 --- a/packages/astro/src/vite-plugin-scanner/scan.ts +++ b/packages/astro/src/vite-plugin-scanner/scan.ts @@ -72,7 +72,7 @@ export async function scan( message: AstroErrorData.InvalidPrerenderExport.message( prefix, suffix, - settings?.config.output === 'hybrid' ?? false + settings?.config.output === 'hybrid' ), location: { file: id }, }); diff --git a/packages/astro/test/astro-markdown-drafts.test.js b/packages/astro/test/astro-markdown-drafts.test.js deleted file mode 100644 index 8f6c753e4c5f..000000000000 --- a/packages/astro/test/astro-markdown-drafts.test.js +++ /dev/null @@ -1,44 +0,0 @@ -import { expect } from 'chai'; -import * as cheerio from 'cheerio'; -import { loadFixture } from './test-utils.js'; - -describe('Astro Markdown with draft posts disabled', () => { - let fixture; - - before(async () => { - fixture = await loadFixture({ - root: './fixtures/astro-markdown-drafts/', - }); - await fixture.build(); - }); - it('Does not render the draft post', async () => { - let renderedDraft = false; - try { - await fixture.readFile('/wip/index.html'); - renderedDraft = true; - } catch (err) { - expect(err.code).to.equal('ENOENT'); - } - expect(renderedDraft).to.equal(false, 'Rendered a draft post'); - }); -}); - -describe('Astro Markdown with draft posts enabled', () => { - let fixture; - - before(async () => { - fixture = await loadFixture({ - root: './fixtures/astro-markdown-drafts/', - markdown: { - drafts: true, - }, - }); - await fixture.build(); - }); - it('Renders the draft post', async () => { - const html = await fixture.readFile('/wip/index.html'); - const $ = cheerio.load(html); - expect($('h1').length).to.be.ok; - expect($('h1').text()).to.equal('WIP'); - }); -}); diff --git a/packages/astro/test/astro-markdown-remarkRehype.test.js b/packages/astro/test/astro-markdown-remarkRehype.test.js index 59b0eeda6f15..17b20b51ea22 100644 --- a/packages/astro/test/astro-markdown-remarkRehype.test.js +++ b/packages/astro/test/astro-markdown-remarkRehype.test.js @@ -15,7 +15,7 @@ describe('Astro Markdown without remark-rehype config', () => { const html = await fixture.readFile('/index.html'); const $ = cheerio.load(html); expect($('#footnote-label').text()).to.equal('Footnotes'); - expect($('.data-footnote-backref').first().attr('aria-label')).to.equal('Back to content'); + expect($('.data-footnote-backref').first().attr('aria-label')).to.equal('Back to reference 1'); }); }); diff --git a/packages/astro/test/astro-markdown-shiki.test.js b/packages/astro/test/astro-markdown-shiki.test.js index 6315edbffbad..459fc646457b 100644 --- a/packages/astro/test/astro-markdown-shiki.test.js +++ b/packages/astro/test/astro-markdown-shiki.test.js @@ -95,10 +95,6 @@ describe('Astro Markdown Shiki', () => { const unknownLang = $('.astro-code').get(1); expect(unknownLang.attribs.style).to.contain('background-color:#24292e;color:#e1e4e8;'); - - const caddyLang = $('.astro-code').last(); - const caddySegments = caddyLang.find('.line'); - expect(caddySegments.get(1).children[0].attribs.style).to.contain('color:#B392F0'); }); }); diff --git a/packages/astro/test/astro-scripts.test.js b/packages/astro/test/astro-scripts.test.js index ae2268d8097f..f36e24d924d3 100644 --- a/packages/astro/test/astro-scripts.test.js +++ b/packages/astro/test/astro-scripts.test.js @@ -145,7 +145,7 @@ describe('Scripts (hoisted and not)', () => { hooks: { 'astro:config:setup': ({ injectRoute, injectScript }) => { injectScript('page', `import '/src/scripts/something.js';`); - injectRoute({ pattern: 'injected-route', entryPoint: 'src/external-page.astro' }); + injectRoute({ pattern: 'injected-route', entrypoint: 'src/external-page.astro' }); }, }, }, diff --git a/packages/astro/test/events.test.js b/packages/astro/test/events.test.js index b0732a15c61b..c0c6266d9f1e 100644 --- a/packages/astro/test/events.test.js +++ b/packages/astro/test/events.test.js @@ -105,7 +105,6 @@ describe('Events', () => { config: 'path/to/config.mjs', experimentalSsr: true, experimentalIntegrations: true, - drafts: true, }; const [{ payload }] = events.eventCliSession( { @@ -122,7 +121,6 @@ describe('Events', () => { 'config', 'experimentalSsr', 'experimentalIntegrations', - 'drafts', ]); }); }); diff --git a/packages/astro/test/featuresSupport.test.js b/packages/astro/test/featuresSupport.test.js index c25d9d5f8f08..15606b927c1d 100644 --- a/packages/astro/test/featuresSupport.test.js +++ b/packages/astro/test/featuresSupport.test.js @@ -10,14 +10,9 @@ describe('Adapter', () => { fixture = await loadFixture({ root: './fixtures/middleware space/', output: 'server', - build: { - excludeMiddleware: true, - }, adapter: testAdapter({ extendAdapter: { - supportsFeatures: { - edgeMiddleware: 'Unsupported', - }, + supportedAstroFeatures: {}, }, }), }); @@ -34,14 +29,9 @@ describe('Adapter', () => { fixture = await loadFixture({ root: './fixtures/middleware space/', output: 'server', - build: { - split: true, - }, adapter: testAdapter({ extendAdapter: { - supportsFeatures: { - functionPerPage: 'Unsupported', - }, + supportedAstroFeatures: {}, }, }), }); diff --git a/packages/astro/test/fixtures/0-css/package.json b/packages/astro/test/fixtures/0-css/package.json index 6ecfb1d9e925..fca80fd91b26 100644 --- a/packages/astro/test/fixtures/0-css/package.json +++ b/packages/astro/test/fixtures/0-css/package.json @@ -9,7 +9,7 @@ "astro": "workspace:*", "react": "^18.1.0", "react-dom": "^18.1.0", - "svelte": "^4.2.0", - "vue": "^3.3.4" + "svelte": "^4.2.5", + "vue": "^3.3.8" } } diff --git a/packages/astro/test/fixtures/alias-tsconfig-baseurl-only/package.json b/packages/astro/test/fixtures/alias-tsconfig-baseurl-only/package.json index a708628bbc15..a632b84638dc 100644 --- a/packages/astro/test/fixtures/alias-tsconfig-baseurl-only/package.json +++ b/packages/astro/test/fixtures/alias-tsconfig-baseurl-only/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/svelte": "workspace:*", "astro": "workspace:*", - "svelte": "^4.2.0" + "svelte": "^4.2.5" } } diff --git a/packages/astro/test/fixtures/alias-tsconfig/package.json b/packages/astro/test/fixtures/alias-tsconfig/package.json index e27fc9130d95..80033bdf9e01 100644 --- a/packages/astro/test/fixtures/alias-tsconfig/package.json +++ b/packages/astro/test/fixtures/alias-tsconfig/package.json @@ -6,6 +6,6 @@ "@astrojs/svelte": "workspace:*", "@test/namespace-package": "workspace:*", "astro": "workspace:*", - "svelte": "^4.2.0" + "svelte": "^4.2.5" } } diff --git a/packages/astro/test/fixtures/alias/package.json b/packages/astro/test/fixtures/alias/package.json index e23fb4d581ef..74351e6e39e6 100644 --- a/packages/astro/test/fixtures/alias/package.json +++ b/packages/astro/test/fixtures/alias/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/svelte": "workspace:*", "astro": "workspace:*", - "svelte": "^4.2.0" + "svelte": "^4.2.5" } } diff --git a/packages/astro/test/fixtures/api-routes/src/pages/context/data/[param].json.js b/packages/astro/test/fixtures/api-routes/src/pages/context/data/[param].json.js index d18eb086f9a5..cb9308ba4554 100644 --- a/packages/astro/test/fixtures/api-routes/src/pages/context/data/[param].json.js +++ b/packages/astro/test/fixtures/api-routes/src/pages/context/data/[param].json.js @@ -15,10 +15,10 @@ export function getStaticPaths() { } export function GET({ params, request }) { - return { - body: JSON.stringify({ + return new Response( + JSON.stringify({ param: params.param, pathname: new URL(request.url).pathname }) - }; + ); } diff --git a/packages/astro/test/fixtures/astro-basic/package.json b/packages/astro/test/fixtures/astro-basic/package.json index c2e0be656281..417636229c93 100644 --- a/packages/astro/test/fixtures/astro-basic/package.json +++ b/packages/astro/test/fixtures/astro-basic/package.json @@ -6,6 +6,6 @@ "@astrojs/mdx": "workspace:*", "@astrojs/preact": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/astro/test/fixtures/astro-children/package.json b/packages/astro/test/fixtures/astro-children/package.json index 5fc2951be597..1ed097ea1271 100644 --- a/packages/astro/test/fixtures/astro-children/package.json +++ b/packages/astro/test/fixtures/astro-children/package.json @@ -7,8 +7,8 @@ "@astrojs/svelte": "workspace:*", "@astrojs/vue": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1", - "svelte": "^4.2.0", - "vue": "^3.3.4" + "preact": "^10.19.2", + "svelte": "^4.2.5", + "vue": "^3.3.8" } } diff --git a/packages/astro/test/fixtures/astro-client-only/package.json b/packages/astro/test/fixtures/astro-client-only/package.json index a550b3a7b636..2d55fe99cb4c 100644 --- a/packages/astro/test/fixtures/astro-client-only/package.json +++ b/packages/astro/test/fixtures/astro-client-only/package.json @@ -9,6 +9,6 @@ "astro": "workspace:*", "react": "^18.1.0", "react-dom": "^18.1.0", - "svelte": "^4.2.0" + "svelte": "^4.2.5" } } diff --git a/packages/astro/test/fixtures/astro-dynamic/package.json b/packages/astro/test/fixtures/astro-dynamic/package.json index 2dc810458302..6209dabe9120 100644 --- a/packages/astro/test/fixtures/astro-dynamic/package.json +++ b/packages/astro/test/fixtures/astro-dynamic/package.json @@ -8,6 +8,6 @@ "astro": "workspace:*", "react": "^18.1.0", "react-dom": "^18.1.0", - "svelte": "^4.2.0" + "svelte": "^4.2.5" } } diff --git a/packages/astro/test/fixtures/astro-envs/package.json b/packages/astro/test/fixtures/astro-envs/package.json index c46f4d6814ac..86bad5a8713c 100644 --- a/packages/astro/test/fixtures/astro-envs/package.json +++ b/packages/astro/test/fixtures/astro-envs/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/vue": "workspace:*", "astro": "workspace:*", - "vue": "^3.3.4" + "vue": "^3.3.8" } } diff --git a/packages/astro/test/fixtures/astro-expr/package.json b/packages/astro/test/fixtures/astro-expr/package.json index c6dce6e21a6a..ac553abf2fe7 100644 --- a/packages/astro/test/fixtures/astro-expr/package.json +++ b/packages/astro/test/fixtures/astro-expr/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/preact": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/astro/test/fixtures/astro-fallback/package.json b/packages/astro/test/fixtures/astro-fallback/package.json index ea2281e0811d..8726d73a91aa 100644 --- a/packages/astro/test/fixtures/astro-fallback/package.json +++ b/packages/astro/test/fixtures/astro-fallback/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/preact": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/astro/test/fixtures/astro-get-static-paths/src/pages/data/[slug].json.ts b/packages/astro/test/fixtures/astro-get-static-paths/src/pages/data/[slug].json.ts index 32a0fd140f12..21df537cd4a2 100644 --- a/packages/astro/test/fixtures/astro-get-static-paths/src/pages/data/[slug].json.ts +++ b/packages/astro/test/fixtures/astro-get-static-paths/src/pages/data/[slug].json.ts @@ -1,14 +1,12 @@ export async function getStaticPaths() { - return [ + return [ { params: { slug: 'thing1' } }, { params: { slug: 'thing2' } } ]; } export async function GET() { - return { - body: JSON.stringify({ - title: '[slug]' - }, null, 4) - }; + return Response.json({ + title: '[slug]', + }); } diff --git a/packages/astro/test/fixtures/astro-markdown-drafts/package.json b/packages/astro/test/fixtures/astro-markdown-drafts/package.json deleted file mode 100644 index fa376d6f134f..000000000000 --- a/packages/astro/test/fixtures/astro-markdown-drafts/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "@test/astro-markdown-drafts", - "version": "0.0.0", - "private": true, - "dependencies": { - "astro": "workspace:*" - } -} diff --git a/packages/astro/test/fixtures/astro-markdown-drafts/src/pages/index.md b/packages/astro/test/fixtures/astro-markdown-drafts/src/pages/index.md deleted file mode 100644 index 0e06444da3cc..000000000000 --- a/packages/astro/test/fixtures/astro-markdown-drafts/src/pages/index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -foo: bar ---- - -# Hello world - -This should be visible. \ No newline at end of file diff --git a/packages/astro/test/fixtures/astro-markdown-drafts/src/pages/wip.md b/packages/astro/test/fixtures/astro-markdown-drafts/src/pages/wip.md deleted file mode 100644 index 27b8296140d7..000000000000 --- a/packages/astro/test/fixtures/astro-markdown-drafts/src/pages/wip.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -foo: bar -draft: true ---- - -# WIP - -This is a draft. Don't build me! \ No newline at end of file diff --git a/packages/astro/test/fixtures/astro-markdown-frontmatter-injection/src/pages/glob.json.js b/packages/astro/test/fixtures/astro-markdown-frontmatter-injection/src/pages/glob.json.js index 3aae6d89a8a9..1916378c93c0 100644 --- a/packages/astro/test/fixtures/astro-markdown-frontmatter-injection/src/pages/glob.json.js +++ b/packages/astro/test/fixtures/astro-markdown-frontmatter-injection/src/pages/glob.json.js @@ -1,6 +1,4 @@ export async function GET() { const docs = await import.meta.glob('./*.md', { eager: true }); - return { - body: JSON.stringify(Object.values(docs).map(doc => doc.frontmatter)), - } + return Response.json(Object.values(docs).map((doc) => doc.frontmatter)); } diff --git a/packages/astro/test/fixtures/astro-markdown-plugins/package.json b/packages/astro/test/fixtures/astro-markdown-plugins/package.json index a7953b785825..bd48d532e241 100644 --- a/packages/astro/test/fixtures/astro-markdown-plugins/package.json +++ b/packages/astro/test/fixtures/astro-markdown-plugins/package.json @@ -4,7 +4,7 @@ "private": true, "dependencies": { "astro": "workspace:*", - "hast-util-select": "^6.0.0", - "rehype-slug": "^5.0.1" + "hast-util-select": "^6.0.2", + "rehype-slug": "^6.0.0" } } diff --git a/packages/astro/test/fixtures/astro-markdown-shiki/langs/astro.config.mjs b/packages/astro/test/fixtures/astro-markdown-shiki/langs/astro.config.mjs index 9a5f2eced552..130596b0c4c5 100644 --- a/packages/astro/test/fixtures/astro-markdown-shiki/langs/astro.config.mjs +++ b/packages/astro/test/fixtures/astro-markdown-shiki/langs/astro.config.mjs @@ -13,14 +13,6 @@ export default { grammar: riGrammar, aliases: ['ri'], }, - { - id: 'caddy', - scopeName: 'source.Caddyfile', - // shiki compat: resolves from astro package directory. - // careful as astro is linked, this relative path is based on astro/packages/astro. - // it's weird but we're testing to prevent regressions. - path: './test/fixtures/astro-markdown-shiki/langs/src/caddyfile.tmLanguage.json', - }, ], }, }, diff --git a/packages/astro/test/fixtures/astro-markdown-shiki/langs/src/caddyfile.tmLanguage.json b/packages/astro/test/fixtures/astro-markdown-shiki/langs/src/caddyfile.tmLanguage.json deleted file mode 100644 index 8a9f87c870cb..000000000000 --- a/packages/astro/test/fixtures/astro-markdown-shiki/langs/src/caddyfile.tmLanguage.json +++ /dev/null @@ -1,365 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", - - "name": "Caddyfile", - "fileTypes": ["Caddyfile"], - "scopeName": "source.Caddyfile", - - "patterns": [ - { "include": "#comments" }, - { "include": "#strings" }, - { "include": "#domains" }, - { "include": "#status_codes" }, - { "include": "#path" }, - { "include": "#global_options" }, - { "include": "#matchers" }, - { "include": "#directive" }, - { "include": "#site_block_common" } - ], - - "repository": { - "comments": { - "patterns": [ - { - "name": "comment.line.Caddyfile", - "match": "\\s#.*" - }, - { - "name": "comment.line.Caddyfile", - "match": "^#.*" - } - ] - }, - - "strings": { - "patterns": [ - { - "comment": "Double Quoted Strings", - "begin": "\"", - "end": "\"", - "name": "string.quoted.double.Caddyfile", - "patterns": [ - { - "name": "constant.character.escape.Caddyfile", - "match": "\\\\\"" - } - ] - }, - { - "comment": "Backtick Strings", - "begin": "`", - "end": "`", - "name": "string.quoted.single.Caddyfile" - } - ] - }, - - "status_codes": { - "patterns": [ - { - "name": "constant.numeric.decimal", - "match": "\\s[0-9]{3}(?!\\.)" - } - ] - }, - - "path": { - "patterns": [ - { - "name": "keyword.control.caddyfile", - "match": "(unix/)*/[a-zA-Z0-9_\\-./*]+" - }, - { - "name": "variable.other.property.caddyfile", - "match": "\\*.[a-z]{1,5}" - }, - { - "name": "variable.other.property.caddyfile", - "match": "\\*/?" - }, - { - "name": "variable.other.property.caddyfile", - "match": "\\?/" - } - ] - }, - - "domains": { - "patterns": [ - { - "comment": "Domains and URLs", - "name": "keyword.control.caddyfile", - "match": "(https?://)*[a-z0-9-\\*]*(?:\\.[a-zA-Z]{2,})+(:[0-9]+)*\\S*" - }, - { - "comment": "localhost", - "name": "keyword.control.caddyfile", - "match": "localhost(:[0-9]+)*" - }, - { - "comment": "IPv4", - "name": "keyword.control.caddyfile", - "match": "((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" - }, - { - "comment": "IPv6", - "name": "keyword.control.caddyfile", - "match": "(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))" - }, - { - "comment": "Ports", - "name": "keyword.control.caddyfile", - "match": ":[0-9]+" - } - ] - }, - - "global_options": { - "patterns": [ - { - "begin": "^(\\{)$", - "end": "^(\\})$", - - "beginCaptures": { - "0": { "name": "punctuation.definition.dictionary.begin" } - }, - - "endCaptures": { - "0": { "name": "punctuation.definition.dictionary.end" } - }, - - "patterns": [ - { "include": "#comments" }, - { - "name": "support.constant.Caddyfile", - "match": "^\\s*(debug|https?_port|default_bind|order|storage|storage_clean_interval|renew_interval|ocsp_interval|admin|log|grace_period|shutdown_delay|auto_https|email|default_sni|local_certs|skip_install_trust|acme_ca|acme_ca_root|acme_eab|acme_dns|on_demand_tls|key_type|cert_issuer|ocsp_stapling|preferred_chains|servers|pki|events)" - } - ] - } - ] - }, - - "site_block_common": { - "patterns": [{ "include": "#placeholders" }, { "include": "#block" }] - }, - - "matchers": { - "patterns": [ - { - "comment": "Matchers", - "name": "support.function.Caddyfile", - "match": "@[^\\s]+(?=\\s)" - } - ] - }, - - "placeholders": { - "patterns": [ - { - "name": "keyword.control.Caddyfile", - "match": "\\{[\\[\\]\\w.\\$+-]+\\}" - } - ] - }, - - "directive": { - "patterns": [ - { - "name": "entity.name.function.Caddyfile", - "match": "^\\s*[a-zA-Z_\\-+]+" - }, - { "include": "#content_types" }, - { "include": "#heredoc" } - ] - }, - - "content_types": { - "patterns": [ - { - "comment": "Content Types", - "name": "variable.other.property.caddyfile", - "match": "(application|audio|example|font|image|message|model|multipart|text|video)/[a-zA-Z0-9*+\\-.]+;* *[a-zA-Z0-9=\\-]*" - } - ] - }, - - "block": { - "patterns": [ - { - "begin": "\\{", - "end": "\\}", - - "patterns": [{ "include": "#block_content" }] - } - ] - }, - - "block_content": { - "patterns": [ - { - "patterns": [ - { "include": "#comments" }, - { "include": "#strings" }, - { "include": "#domains" }, - { "include": "#status_codes" }, - { "include": "#path" }, - { "include": "#matchers" }, - { "include": "#placeholders" }, - { "include": "#directive" }, - { "include": "#block" } - ] - } - ] - }, - - "heredoc": { - "patterns": [ - { - "begin": "(?i)(?=<<\\s*([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)\\s*$)", - "end": "(?!\\G)", - "name": "string.unquoted.heredoc.caddyfile", - "patterns": [{ "include": "#heredoc_interior" }] - } - ] - }, - - "heredoc_interior": { - "patterns": [ - { - "comment": "CSS", - - "name": "meta.embedded.css", - "contentName": "source.css", - - "begin": "(<<)\\s*(CSS)(\\s*)$", - "beginCaptures": { - "0": { "name": "punctuation.section.embedded.begin.caddyfile" }, - "1": { "name": "punctuation.definition.string.begin" }, - "2": { "name": "keyword.operator.heredoc.caddyfile" }, - "4": { "name": "invalid.illegal.trailing-whitespace.caddyfile" } - }, - - "end": "^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])", - "endCaptures": { - "0": { "name": "punctuation.section.embedded.end.caddyfile" }, - "1": { "name": "keyword.operator.heredoc.caddyfile" } - }, - - "patterns": [{ "include": "source.css" }] - }, - - { - "comment": "HTML", - - "name": "meta.embedded.html", - "contentName": "text.html", - - "begin": "(<<)\\s*(HTML)(\\s*)$", - "beginCaptures": { - "0": { "name": "punctuation.section.embedded.begin.caddyfile" }, - "1": { "name": "punctuation.definition.string.begin" }, - "2": { "name": "keyword.operator.heredoc.caddyfile" }, - "4": { "name": "invalid.illegal.trailing-whitespace.caddyfile" } - }, - - "end": "^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])", - "endCaptures": { - "0": { "name": "punctuation.section.embedded.end.caddyfile" }, - "1": { "name": "keyword.operator.heredoc.caddyfile" } - }, - - "patterns": [{ "include": "text.html.basic" }] - }, - - { - "comment": "JavaScript", - - "name": "meta.embedded.js", - "contentName": "source.js", - - "begin": "(<<)\\s*(JAVASCRIPT|JS)(\\s*)$", - "beginCaptures": { - "0": { "name": "punctuation.section.embedded.begin.caddyfile" }, - "1": { "name": "punctuation.definition.string.begin" }, - "2": { "name": "keyword.operator.heredoc.caddyfile" }, - "4": { "name": "invalid.illegal.trailing-whitespace.caddyfile" } - }, - - "end": "^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])", - "endCaptures": { - "0": { "name": "punctuation.section.embedded.end.caddyfile" }, - "1": { "name": "keyword.operator.heredoc.caddyfile" } - }, - - "patterns": [{ "include": "source.js" }] - }, - - { - "comment": "JSON", - - "name": "meta.embedded.json", - "contentName": "source.json", - - "begin": "(<<)\\s*(JSON)(\\s*)$", - "beginCaptures": { - "0": { "name": "punctuation.section.embedded.begin.caddyfile" }, - "1": { "name": "punctuation.definition.string.begin" }, - "2": { "name": "keyword.operator.heredoc.caddyfile" }, - "4": { "name": "invalid.illegal.trailing-whitespace.caddyfile" } - }, - - "end": "^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])", - "endCaptures": { - "0": { "name": "punctuation.section.embedded.end.caddyfile" }, - "1": { "name": "keyword.operator.heredoc.caddyfile" } - }, - - "patterns": [{ "include": "source.json" }] - }, - - { - "comment": "XML", - - "name": "meta.embedded.xml", - "contentName": "text.xml", - - "begin": "(<<)\\s*(XML)(\\s*)$", - "beginCaptures": { - "0": { "name": "punctuation.section.embedded.begin.caddyfile" }, - "1": { "name": "punctuation.definition.string.begin" }, - "2": { "name": "keyword.operator.heredoc.caddyfile" }, - "4": { "name": "invalid.illegal.trailing-whitespace.caddyfile" } - }, - - "end": "^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])", - "endCaptures": { - "0": { "name": "punctuation.section.embedded.end.caddyfile" }, - "1": { "name": "keyword.operator.heredoc.caddyfile" } - }, - - "patterns": [{ "include": "text.xml" }] - }, - - { - "comment": "Any other heredoc", - - "begin": "(?i)(<<)\\s*([a-z_\\x{7f}-\\x{10ffff}]+[a-z0-9_\\x{7f}-\\x{10ffff}]*)(\\s*)", - "beginCaptures": { - "0": { "name": "punctuation.section.embedded.begin.caddyfile" }, - "1": { "name": "punctuation.definition.string.caddyfile" }, - "2": { "name": "keyword.operator.heredoc.caddyfile" }, - "4": { "name": "invalid.illegal.trailing-whitespace.caddyfile" } - }, - - "end": "^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])", - "endCaptures": { - "0": { "name": "punctuation.section.embedded.end.caddyfile" }, - "1": { "name": "keyword.operator.heredoc.caddyfile" } - }, - - "patterns": [] - } - ] - } - } -} diff --git a/packages/astro/test/fixtures/astro-markdown-shiki/langs/src/pages/index.md b/packages/astro/test/fixtures/astro-markdown-shiki/langs/src/pages/index.md index cdd74060f3a8..d2d756b95dc1 100644 --- a/packages/astro/test/fixtures/astro-markdown-shiki/langs/src/pages/index.md +++ b/packages/astro/test/fixtures/astro-markdown-shiki/langs/src/pages/index.md @@ -24,12 +24,3 @@ fin ```unknown This language does not exist ``` - -```caddy -example.com { - root * /var/www/wordpress - encode gzip - php_fastcgi unix//run/php/php-version-fpm.sock - file_server -} -``` diff --git a/packages/astro/test/fixtures/astro-markdown/src/pages/headings-glob.json.js b/packages/astro/test/fixtures/astro-markdown/src/pages/headings-glob.json.js index b2c9ea6ea25f..3cc852c6f565 100644 --- a/packages/astro/test/fixtures/astro-markdown/src/pages/headings-glob.json.js +++ b/packages/astro/test/fixtures/astro-markdown/src/pages/headings-glob.json.js @@ -1,9 +1,7 @@ import { getHeadings } from './with-layout.md'; export async function GET() { - return { - body: JSON.stringify({ - headings: getHeadings(), - }), - } + return Response.json({ + headings: getHeadings(), + }); } diff --git a/packages/astro/test/fixtures/astro-markdown/src/pages/raw-content.json.js b/packages/astro/test/fixtures/astro-markdown/src/pages/raw-content.json.js index 82977443dc11..cf499bb39c01 100644 --- a/packages/astro/test/fixtures/astro-markdown/src/pages/raw-content.json.js +++ b/packages/astro/test/fixtures/astro-markdown/src/pages/raw-content.json.js @@ -1,10 +1,8 @@ import { rawContent, compiledContent } from './basic.md'; export async function GET() { - return { - body: JSON.stringify({ - raw: rawContent(), - compiled: await compiledContent(), - }), - } + return Response.json({ + raw: rawContent(), + compiled: await compiledContent(), + }); } diff --git a/packages/astro/test/fixtures/astro-markdown/src/pages/vite-env-vars-glob.json.js b/packages/astro/test/fixtures/astro-markdown/src/pages/vite-env-vars-glob.json.js index 7a5d00f47ac0..7dfe96294701 100644 --- a/packages/astro/test/fixtures/astro-markdown/src/pages/vite-env-vars-glob.json.js +++ b/packages/astro/test/fixtures/astro-markdown/src/pages/vite-env-vars-glob.json.js @@ -1,7 +1,5 @@ import { frontmatter } from './vite-env-vars.md'; export async function GET() { - return { - body: JSON.stringify(frontmatter), - } + return Response.json(frontmatter); } diff --git a/packages/astro/test/fixtures/astro-markdown/src/pages/vite-env-vars.md b/packages/astro/test/fixtures/astro-markdown/src/pages/vite-env-vars.md index f4983af2c75b..5fac52727244 100644 --- a/packages/astro/test/fixtures/astro-markdown/src/pages/vite-env-vars.md +++ b/packages/astro/test/fixtures/astro-markdown/src/pages/vite-env-vars.md @@ -21,7 +21,7 @@ This should also work outside of code blocks: // src/pages/rss.xml.js import rss from '@astrojs/rss'; -export const get = () => rss({ +export const GET = () => rss({ // Use Vite env vars with import.meta.env site: import.meta.env.SITE, title: import.meta.env.TITLE, diff --git a/packages/astro/test/fixtures/astro-slot-with-client/package.json b/packages/astro/test/fixtures/astro-slot-with-client/package.json index 830c205cfaf9..eb88bae982ff 100644 --- a/packages/astro/test/fixtures/astro-slot-with-client/package.json +++ b/packages/astro/test/fixtures/astro-slot-with-client/package.json @@ -4,6 +4,6 @@ "dependencies": { "@astrojs/preact": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/astro/test/fixtures/astro-slots-nested/package.json b/packages/astro/test/fixtures/astro-slots-nested/package.json index e40fa03968cb..2e1a6bef901c 100644 --- a/packages/astro/test/fixtures/astro-slots-nested/package.json +++ b/packages/astro/test/fixtures/astro-slots-nested/package.json @@ -9,11 +9,11 @@ "@astrojs/svelte": "workspace:*", "@astrojs/vue": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1", + "preact": "^10.19.2", "react": "^18.2.0", "react-dom": "^18.2.0", - "solid-js": "^1.7.11", - "svelte": "^4.2.0", - "vue": "^3.3.4" + "solid-js": "^1.8.5", + "svelte": "^4.2.5", + "vue": "^3.3.8" } } diff --git a/packages/astro/test/fixtures/before-hydration/package.json b/packages/astro/test/fixtures/before-hydration/package.json index a49804cd70e5..cf419345b9af 100644 --- a/packages/astro/test/fixtures/before-hydration/package.json +++ b/packages/astro/test/fixtures/before-hydration/package.json @@ -4,6 +4,6 @@ "dependencies": { "@astrojs/preact": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/astro/test/fixtures/build-assets/package.json b/packages/astro/test/fixtures/build-assets/package.json index 3a8c744ed0f0..b09d02c66826 100644 --- a/packages/astro/test/fixtures/build-assets/package.json +++ b/packages/astro/test/fixtures/build-assets/package.json @@ -4,6 +4,6 @@ "dependencies": { "@astrojs/preact": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/astro/test/fixtures/component-library-shared/package.json b/packages/astro/test/fixtures/component-library-shared/package.json index b6d1bdfe87e9..b91ef821600d 100644 --- a/packages/astro/test/fixtures/component-library-shared/package.json +++ b/packages/astro/test/fixtures/component-library-shared/package.json @@ -18,7 +18,7 @@ "astro": "workspace:*" }, "dependencies": { - "preact": "^10.17.1", + "preact": "^10.19.2", "react": "^18.2.0" } } diff --git a/packages/astro/test/fixtures/component-library/package.json b/packages/astro/test/fixtures/component-library/package.json index 3697c7a7ef76..14a8cb44a657 100644 --- a/packages/astro/test/fixtures/component-library/package.json +++ b/packages/astro/test/fixtures/component-library/package.json @@ -8,9 +8,9 @@ "@astrojs/svelte": "workspace:*", "@test/component-library-shared": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1", + "preact": "^10.19.2", "react": "^18.1.0", "react-dom": "^18.1.0", - "svelte": "^4.2.0" + "svelte": "^4.2.5" } } diff --git a/packages/astro/test/fixtures/content-collections/src/pages/collections.json.js b/packages/astro/test/fixtures/content-collections/src/pages/collections.json.js index e335d2b05d7c..b7b7d847253e 100644 --- a/packages/astro/test/fixtures/content-collections/src/pages/collections.json.js +++ b/packages/astro/test/fixtures/content-collections/src/pages/collections.json.js @@ -8,7 +8,7 @@ export async function GET() { const withSlugConfig = stripAllRenderFn(await getCollection('with-custom-slugs')); const withUnionSchema = stripAllRenderFn(await getCollection('with-union-schema')); - return { - body: devalue.stringify({withoutConfig, withSchemaConfig, withSlugConfig, withUnionSchema}), - } + return new Response( + devalue.stringify({ withoutConfig, withSchemaConfig, withSlugConfig, withUnionSchema }) + ); } diff --git a/packages/astro/test/fixtures/content-collections/src/pages/entries.json.js b/packages/astro/test/fixtures/content-collections/src/pages/entries.json.js index 311b76cc8bca..a05a9138b1d8 100644 --- a/packages/astro/test/fixtures/content-collections/src/pages/entries.json.js +++ b/packages/astro/test/fixtures/content-collections/src/pages/entries.json.js @@ -5,10 +5,17 @@ import { stripRenderFn } from '../utils.js'; export async function GET() { const columbiaWithoutConfig = stripRenderFn(await getEntryBySlug('without-config', 'columbia')); const oneWithSchemaConfig = stripRenderFn(await getEntryBySlug('with-schema-config', 'one')); - const twoWithSlugConfig = stripRenderFn(await getEntryBySlug('with-custom-slugs', 'interesting-two')); + const twoWithSlugConfig = stripRenderFn( + await getEntryBySlug('with-custom-slugs', 'interesting-two') + ); const postWithUnionSchema = stripRenderFn(await getEntryBySlug('with-union-schema', 'post')); - return { - body: devalue.stringify({columbiaWithoutConfig, oneWithSchemaConfig, twoWithSlugConfig, postWithUnionSchema}), - } + return new Response( + devalue.stringify({ + columbiaWithoutConfig, + oneWithSchemaConfig, + twoWithSlugConfig, + postWithUnionSchema, + }) + ); } diff --git a/packages/astro/test/fixtures/core-image-ssr/src/pages/api.ts b/packages/astro/test/fixtures/core-image-ssr/src/pages/api.ts index 7847baf62cb8..261fb6bb7dc7 100644 --- a/packages/astro/test/fixtures/core-image-ssr/src/pages/api.ts +++ b/packages/astro/test/fixtures/core-image-ssr/src/pages/api.ts @@ -3,8 +3,5 @@ import type { APIRoute } from "../../../../../src/@types/astro"; export const GET = (async ({ params, request }) => { const url = new URL(request.url); const src = url.searchParams.get("src"); - - return { - body: "An image: " + JSON.stringify(src), - }; + return new Response("An image: " + JSON.stringify(src)); }) satisfies APIRoute; diff --git a/packages/astro/test/fixtures/css-dangling-references/package.json b/packages/astro/test/fixtures/css-dangling-references/package.json index 9ac28d282214..03878694edd0 100644 --- a/packages/astro/test/fixtures/css-dangling-references/package.json +++ b/packages/astro/test/fixtures/css-dangling-references/package.json @@ -1,11 +1,10 @@ { - "name": "@test/css-dangling-references", - "version": "0.0.0", - "private": true, - "dependencies": { - "astro": "workspace:*", - "@astrojs/svelte": "workspace:*", - "svelte": "4" - } + "name": "@test/css-dangling-references", + "version": "0.0.0", + "private": true, + "dependencies": { + "@astrojs/svelte": "workspace:*", + "astro": "workspace:*", + "svelte": "^4.2.5" } - \ No newline at end of file +} \ No newline at end of file diff --git a/packages/astro/test/fixtures/custom-404-injected-from-dep/astro.config.mjs b/packages/astro/test/fixtures/custom-404-injected-from-dep/astro.config.mjs index 840a9524cbdb..15a3b3e79509 100644 --- a/packages/astro/test/fixtures/custom-404-injected-from-dep/astro.config.mjs +++ b/packages/astro/test/fixtures/custom-404-injected-from-dep/astro.config.mjs @@ -9,7 +9,7 @@ export default defineConfig({ 'astro:config:setup': ({ injectRoute }) => { injectRoute({ pattern: '404', - entryPoint: '@test/custom-404-pkg/404.astro', + entrypoint: '@test/custom-404-pkg/404.astro', }); }, }, diff --git a/packages/astro/test/fixtures/custom-404-injected/astro.config.mjs b/packages/astro/test/fixtures/custom-404-injected/astro.config.mjs index d46ce7eb77c9..ae0d4e111a2e 100644 --- a/packages/astro/test/fixtures/custom-404-injected/astro.config.mjs +++ b/packages/astro/test/fixtures/custom-404-injected/astro.config.mjs @@ -9,7 +9,7 @@ export default defineConfig({ 'astro:config:setup': ({ injectRoute }) => { injectRoute({ pattern: '404', - entryPoint: 'src/404.astro', + entrypoint: 'src/404.astro', }); }, }, diff --git a/packages/astro/test/fixtures/data-collections/src/pages/authors/[id].json.js b/packages/astro/test/fixtures/data-collections/src/pages/authors/[id].json.js index 76f4d57606d2..8d5365a2eb2d 100644 --- a/packages/astro/test/fixtures/data-collections/src/pages/authors/[id].json.js +++ b/packages/astro/test/fixtures/data-collections/src/pages/authors/[id].json.js @@ -1,9 +1,9 @@ import { getEntry } from 'astro:content'; -const ids = ['Ben Holmes', 'Fred K Schott', 'Nate Moore'] +const ids = ['Ben Holmes', 'Fred K Schott', 'Nate Moore']; export function getStaticPaths() { - return ids.map(id => ({ params: { id } })) + return ids.map((id) => ({ params: { id } })); } /** @param {import('astro').APIContext} params */ @@ -11,12 +11,8 @@ export async function GET({ params }) { const { id } = params; const author = await getEntry('authors-without-config', id); if (!author) { - return { - body: JSON.stringify({ error: `Author ${id} Not found` }), - } + return Response.json({ error: `Author ${id} Not found` }); } else { - return { - body: JSON.stringify(author), - } + return Response.json(author); } } diff --git a/packages/astro/test/fixtures/data-collections/src/pages/authors/all.json.js b/packages/astro/test/fixtures/data-collections/src/pages/authors/all.json.js index 5b5007fedb70..79dd8cd9dd3c 100644 --- a/packages/astro/test/fixtures/data-collections/src/pages/authors/all.json.js +++ b/packages/astro/test/fixtures/data-collections/src/pages/authors/all.json.js @@ -2,8 +2,5 @@ import { getCollection } from 'astro:content'; export async function GET() { const authors = await getCollection('authors-without-config'); - - return { - body: JSON.stringify(authors), - } + return Response.json(authors); } diff --git a/packages/astro/test/fixtures/data-collections/src/pages/translations/[lang].json.js b/packages/astro/test/fixtures/data-collections/src/pages/translations/[lang].json.js index ab8cc764e353..c6b0cfff669b 100644 --- a/packages/astro/test/fixtures/data-collections/src/pages/translations/[lang].json.js +++ b/packages/astro/test/fixtures/data-collections/src/pages/translations/[lang].json.js @@ -1,9 +1,9 @@ import { getEntry } from 'astro:content'; -const langs = ['en', 'es', 'fr'] +const langs = ['en', 'es', 'fr']; export function getStaticPaths() { - return langs.map(lang => ({ params: { lang } })) + return langs.map((lang) => ({ params: { lang } })); } /** @param {import('astro').APIContext} params */ @@ -11,12 +11,8 @@ export async function GET({ params }) { const { lang } = params; const translations = await getEntry('i18n', lang); if (!translations) { - return { - body: JSON.stringify({ error: `Translation ${lang} Not found` }), - } + return Response.json({ error: `Translation ${lang} Not found` }); } else { - return { - body: JSON.stringify(translations), - } + return Response.json(translations); } } diff --git a/packages/astro/test/fixtures/data-collections/src/pages/translations/all.json.js b/packages/astro/test/fixtures/data-collections/src/pages/translations/all.json.js index e8a1fee92908..f1ebb15b761e 100644 --- a/packages/astro/test/fixtures/data-collections/src/pages/translations/all.json.js +++ b/packages/astro/test/fixtures/data-collections/src/pages/translations/all.json.js @@ -2,8 +2,5 @@ import { getCollection } from 'astro:content'; export async function GET() { const translations = await getCollection('i18n'); - - return { - body: JSON.stringify(translations), - } + return Response.json(translations); } diff --git a/packages/astro/test/fixtures/data-collections/src/pages/translations/by-id.json.js b/packages/astro/test/fixtures/data-collections/src/pages/translations/by-id.json.js index f7b84752dd3f..5f71c80e9f7b 100644 --- a/packages/astro/test/fixtures/data-collections/src/pages/translations/by-id.json.js +++ b/packages/astro/test/fixtures/data-collections/src/pages/translations/by-id.json.js @@ -2,8 +2,5 @@ import { getDataEntryById } from 'astro:content'; export async function GET() { const item = await getDataEntryById('i18n', 'en'); - - return { - body: JSON.stringify(item), - } + return Response.json(item); } diff --git a/packages/astro/test/fixtures/dynamic-endpoint-collision/src/pages/api/catch/[...slug].ts b/packages/astro/test/fixtures/dynamic-endpoint-collision/src/pages/api/catch/[...slug].ts index 8fccd6695a8c..96a9d56f6cb4 100644 --- a/packages/astro/test/fixtures/dynamic-endpoint-collision/src/pages/api/catch/[...slug].ts +++ b/packages/astro/test/fixtures/dynamic-endpoint-collision/src/pages/api/catch/[...slug].ts @@ -1,15 +1,13 @@ -import type { APIRoute } from "astro"; +import type { APIRoute } from 'astro'; -const slugs = ["one", undefined]; +const slugs = ['one', undefined]; export const GET: APIRoute = ({ params }) => { - return { - body: JSON.stringify({ - slug: params.slug || "index", - }), - }; + return Response.json({ + slug: params.slug || 'index', + }); }; export function getStaticPaths() { - return slugs.map((u) => ({ params: { slug: u } })); + return slugs.map((u) => ({ params: { slug: u } })); } diff --git a/packages/astro/test/fixtures/entry-file-names/package.json b/packages/astro/test/fixtures/entry-file-names/package.json index a405afb9eac8..bfd58eae787e 100644 --- a/packages/astro/test/fixtures/entry-file-names/package.json +++ b/packages/astro/test/fixtures/entry-file-names/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/preact": "workspace:", "astro": "workspace:*", - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/astro/test/fixtures/fetch/package.json b/packages/astro/test/fixtures/fetch/package.json index 2d215ec89118..60cfd4166c4b 100644 --- a/packages/astro/test/fixtures/fetch/package.json +++ b/packages/astro/test/fixtures/fetch/package.json @@ -7,8 +7,8 @@ "@astrojs/svelte": "workspace:*", "@astrojs/vue": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1", - "svelte": "^4.2.0", - "vue": "^3.3.4" + "preact": "^10.19.2", + "svelte": "^4.2.5", + "vue": "^3.3.8" } } diff --git a/packages/astro/test/fixtures/fontsource-package/package.json b/packages/astro/test/fixtures/fontsource-package/package.json index 7cfd6d26cf44..55140976cb6e 100644 --- a/packages/astro/test/fixtures/fontsource-package/package.json +++ b/packages/astro/test/fixtures/fontsource-package/package.json @@ -3,8 +3,8 @@ "version": "0.0.0", "private": true, "dependencies": { - "@fontsource/monofett": "5.0.9", - "@fontsource/montserrat": "5.0.8", + "@fontsource/monofett": "5.0.17", + "@fontsource/montserrat": "5.0.15", "astro": "workspace:*" } } diff --git a/packages/astro/test/fixtures/hydration-race/package.json b/packages/astro/test/fixtures/hydration-race/package.json index aa0a5d47ef8d..08319bc2be2c 100644 --- a/packages/astro/test/fixtures/hydration-race/package.json +++ b/packages/astro/test/fixtures/hydration-race/package.json @@ -9,6 +9,6 @@ "dependencies": { "@astrojs/preact": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/astro/test/fixtures/i18n-routing-fallback/src/pages/index.astro b/packages/astro/test/fixtures/i18n-routing-fallback/src/pages/index.astro index 05faf7b0bcce..34b39fcd6747 100644 --- a/packages/astro/test/fixtures/i18n-routing-fallback/src/pages/index.astro +++ b/packages/astro/test/fixtures/i18n-routing-fallback/src/pages/index.astro @@ -1,8 +1,13 @@ Astro + Hello + + diff --git a/packages/astro/test/fixtures/i18n-routing-prefix-always/src/pages/en/start.astro b/packages/astro/test/fixtures/i18n-routing-prefix-always/src/pages/en/start.astro index 990baecd9a8c..92e189636e78 100644 --- a/packages/astro/test/fixtures/i18n-routing-prefix-always/src/pages/en/start.astro +++ b/packages/astro/test/fixtures/i18n-routing-prefix-always/src/pages/en/start.astro @@ -1,8 +1,13 @@ +--- +const currentLocale = Astro.currentLocale; +--- Astro Start +Current Locale: {currentLocale ? currentLocale : "none"} + diff --git a/packages/astro/test/fixtures/i18n-routing-prefix-always/src/pages/pt/start.astro b/packages/astro/test/fixtures/i18n-routing-prefix-always/src/pages/pt/start.astro index 5a4a84c2cf0c..6f82c3790f44 100644 --- a/packages/astro/test/fixtures/i18n-routing-prefix-always/src/pages/pt/start.astro +++ b/packages/astro/test/fixtures/i18n-routing-prefix-always/src/pages/pt/start.astro @@ -1,8 +1,12 @@ +--- +const currentLocale = Astro.currentLocale; +--- Astro Oi essa e start +Current Locale: {currentLocale ? currentLocale : "none"} diff --git a/packages/astro/test/fixtures/i18n-routing/src/pages/current-locale.astro b/packages/astro/test/fixtures/i18n-routing/src/pages/current-locale.astro new file mode 100644 index 000000000000..64af0118bae7 --- /dev/null +++ b/packages/astro/test/fixtures/i18n-routing/src/pages/current-locale.astro @@ -0,0 +1,12 @@ +--- +const currentLocale = Astro.currentLocale; +--- + + + + Astro + + + Current Locale: {currentLocale ? currentLocale : "none"} + + diff --git a/packages/astro/test/fixtures/i18n-routing/src/pages/dynamic/[id].astro b/packages/astro/test/fixtures/i18n-routing/src/pages/dynamic/[id].astro new file mode 100644 index 000000000000..58141fec05ce --- /dev/null +++ b/packages/astro/test/fixtures/i18n-routing/src/pages/dynamic/[id].astro @@ -0,0 +1,19 @@ + +--- +export function getStaticPaths() { + return [ + { id: "lorem" } + ] +} +const currentLocale = Astro.currentLocale; + +--- + + + + Astro + + +Current Locale: {currentLocale ? currentLocale : "none"} + + diff --git a/packages/astro/test/fixtures/i18n-routing/src/pages/pt/start.astro b/packages/astro/test/fixtures/i18n-routing/src/pages/pt/start.astro index 15a63a7b87f5..9a37428ca626 100644 --- a/packages/astro/test/fixtures/i18n-routing/src/pages/pt/start.astro +++ b/packages/astro/test/fixtures/i18n-routing/src/pages/pt/start.astro @@ -1,8 +1,12 @@ +--- +const currentLocale = Astro.currentLocale; +--- Astro Hola +Current Locale: {currentLocale ? currentLocale : "none"} diff --git a/packages/astro/test/fixtures/jsx/package.json b/packages/astro/test/fixtures/jsx/package.json index 73113746da07..f4b89d76e9f6 100644 --- a/packages/astro/test/fixtures/jsx/package.json +++ b/packages/astro/test/fixtures/jsx/package.json @@ -12,11 +12,11 @@ "astro": "workspace:*" }, "dependencies": { - "preact": "^10.17.1", + "preact": "^10.19.2", "react": "^18.1.0", "react-dom": "^18.1.0", - "solid-js": "^1.7.11", - "svelte": "^4.2.0", - "vue": "^3.3.4" + "solid-js": "^1.8.5", + "svelte": "^4.2.5", + "vue": "^3.3.8" } } diff --git a/packages/astro/test/fixtures/large-array/package.json b/packages/astro/test/fixtures/large-array/package.json index e4559b4aeff6..69f74d040637 100644 --- a/packages/astro/test/fixtures/large-array/package.json +++ b/packages/astro/test/fixtures/large-array/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/solid-js": "workspace:*", "astro": "workspace:*", - "solid-js": "^1.7.11" + "solid-js": "^1.8.5" } } diff --git a/packages/astro/test/fixtures/non-html-pages/src/pages/about-object.json.ts b/packages/astro/test/fixtures/non-html-pages/src/pages/about-object.json.ts deleted file mode 100644 index 3936cbe85ba7..000000000000 --- a/packages/astro/test/fixtures/non-html-pages/src/pages/about-object.json.ts +++ /dev/null @@ -1,12 +0,0 @@ -// NOTE: test deprecated object form -// Returns the file body for this non-HTML file. -// The content type is based off of the extension in the filename, -// in this case: about.json. -export async function GET() { - return { - body: JSON.stringify({ - name: 'Astro', - url: 'https://astro.build/', - }), - }; -} diff --git a/packages/astro/test/fixtures/non-html-pages/src/pages/placeholder-object.png.ts b/packages/astro/test/fixtures/non-html-pages/src/pages/placeholder-object.png.ts deleted file mode 100644 index 11415900400c..000000000000 --- a/packages/astro/test/fixtures/non-html-pages/src/pages/placeholder-object.png.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { promises as fs } from 'node:fs'; - -import type { APIRoute } from 'astro'; - -// NOTE: test deprecated object form -export const GET: APIRoute = async function get() { - try { - // Image is in the public domain. Sourced from - // https://en.wikipedia.org/wiki/File:Portrait_placeholder.png - const buffer = await fs.readFile('./test/fixtures/non-html-pages/src/images/placeholder.png'); - return { - body: buffer.toString('binary'), - encoding: 'binary', - } as const; - } catch (error: unknown) { - throw new Error(`Something went wrong in placeholder.png route!: ${error as string}`); - } -}; diff --git a/packages/astro/test/fixtures/non-html-pages/src/pages/placeholder.png.ts b/packages/astro/test/fixtures/non-html-pages/src/pages/placeholder.png.ts index 50c6b877b09f..1ac93597e62b 100644 --- a/packages/astro/test/fixtures/non-html-pages/src/pages/placeholder.png.ts +++ b/packages/astro/test/fixtures/non-html-pages/src/pages/placeholder.png.ts @@ -2,12 +2,13 @@ import { promises as fs } from 'node:fs'; import type { APIRoute } from 'astro'; -export const GET: APIRoute = async function get({ ResponseWithEncoding }) { +export const GET: APIRoute = async function get() { try { // Image is in the public domain. Sourced from // https://en.wikipedia.org/wiki/File:Portrait_placeholder.png const buffer = await fs.readFile('./test/fixtures/non-html-pages/src/images/placeholder.png'); - return new ResponseWithEncoding(buffer.toString('binary'), undefined, 'binary') + // NOTE: SSG only so not Content-Type needed + return new Response(buffer.buffer) } catch (error: unknown) { throw new Error(`Something went wrong in placeholder.png route!: ${error as string}`); } diff --git a/packages/astro/test/fixtures/postcss/package.json b/packages/astro/test/fixtures/postcss/package.json index c9e4ba833cda..db86ba46c61c 100644 --- a/packages/astro/test/fixtures/postcss/package.json +++ b/packages/astro/test/fixtures/postcss/package.json @@ -9,11 +9,11 @@ "astro": "workspace:*", "autoprefixer": "^10.4.15", "postcss": "^8.4.28", - "solid-js": "^1.7.11", - "svelte": "^4.2.0", - "vue": "^3.3.4" + "solid-js": "^1.8.5", + "svelte": "^4.2.5", + "vue": "^3.3.8" }, "devDependencies": { - "postcss-preset-env": "^9.1.1" + "postcss-preset-env": "^9.3.0" } } diff --git a/packages/astro/test/fixtures/preact-compat-component/package.json b/packages/astro/test/fixtures/preact-compat-component/package.json index bbab4a6299a4..68de1f1b7fd9 100644 --- a/packages/astro/test/fixtures/preact-compat-component/package.json +++ b/packages/astro/test/fixtures/preact-compat-component/package.json @@ -6,6 +6,6 @@ "@astrojs/preact": "workspace:*", "@test/react-lib": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/astro/test/fixtures/preact-component/package.json b/packages/astro/test/fixtures/preact-component/package.json index bdb2524aabfa..43e8fd8f8463 100644 --- a/packages/astro/test/fixtures/preact-component/package.json +++ b/packages/astro/test/fixtures/preact-component/package.json @@ -6,6 +6,6 @@ "@astrojs/preact": "workspace:*", "@preact/signals": "1.2.1", "astro": "workspace:*", - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/astro/test/fixtures/react-and-solid/package.json b/packages/astro/test/fixtures/react-and-solid/package.json index 01ac7866e634..a585a2c95073 100644 --- a/packages/astro/test/fixtures/react-and-solid/package.json +++ b/packages/astro/test/fixtures/react-and-solid/package.json @@ -7,6 +7,6 @@ "astro": "workspace:*", "react": "^18.2.0", "react-dom": "^18.1.0", - "solid-js": "^1.7.11" + "solid-js": "^1.8.5" } } diff --git a/packages/astro/test/fixtures/reexport-astro-containing-client-component/package.json b/packages/astro/test/fixtures/reexport-astro-containing-client-component/package.json index 0a7f6e7cf6bd..1388cc07a307 100644 --- a/packages/astro/test/fixtures/reexport-astro-containing-client-component/package.json +++ b/packages/astro/test/fixtures/reexport-astro-containing-client-component/package.json @@ -4,6 +4,6 @@ "dependencies": { "@astrojs/preact": "workspace:", "astro": "workspace:", - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/astro/test/fixtures/routing-priority/integration.mjs b/packages/astro/test/fixtures/routing-priority/integration.mjs index 213812790e64..57ecc307336c 100644 --- a/packages/astro/test/fixtures/routing-priority/integration.mjs +++ b/packages/astro/test/fixtures/routing-priority/integration.mjs @@ -5,15 +5,15 @@ export default function() { 'astro:config:setup': ({ injectRoute }) => { injectRoute({ pattern: '/injected', - entryPoint: './src/to-inject.astro' + entrypoint: './src/to-inject.astro' }); injectRoute({ pattern: '/_injected', - entryPoint: './src/_to-inject.astro' + entrypoint: './src/_to-inject.astro' }); injectRoute({ pattern: '/[id]', - entryPoint: './src/[id].astro' + entrypoint: './src/[id].astro' }); } } diff --git a/packages/astro/test/fixtures/routing-priority/src/pages/api/catch/[...slug].json.ts b/packages/astro/test/fixtures/routing-priority/src/pages/api/catch/[...slug].json.ts index bc7e1b774698..4b26f41e56a0 100644 --- a/packages/astro/test/fixtures/routing-priority/src/pages/api/catch/[...slug].json.ts +++ b/packages/astro/test/fixtures/routing-priority/src/pages/api/catch/[...slug].json.ts @@ -1,11 +1,11 @@ import type { APIRoute } from 'astro'; export const GET: APIRoute = async ({ params }) => { - return { - body: JSON.stringify({ + return new Response( + JSON.stringify({ path: params.slug, - }), - }; + }) + ); }; export function getStaticPaths() { diff --git a/packages/astro/test/fixtures/routing-priority/src/pages/api/catch/[foo]-[bar].json.ts b/packages/astro/test/fixtures/routing-priority/src/pages/api/catch/[foo]-[bar].json.ts index b06efff6f213..b9d2f0cabff1 100644 --- a/packages/astro/test/fixtures/routing-priority/src/pages/api/catch/[foo]-[bar].json.ts +++ b/packages/astro/test/fixtures/routing-priority/src/pages/api/catch/[foo]-[bar].json.ts @@ -1,12 +1,12 @@ import type { APIRoute } from 'astro'; export const GET: APIRoute = async ({ params }) => { - return { - body: JSON.stringify({ + return new Response( + JSON.stringify({ foo: params.foo, - bar: params.bar, - }), - }; + bar: params.bar, + }) + ); }; export function getStaticPaths() { diff --git a/packages/astro/test/fixtures/slots-preact/package.json b/packages/astro/test/fixtures/slots-preact/package.json index 33dcf78bccec..bcd612323fd7 100644 --- a/packages/astro/test/fixtures/slots-preact/package.json +++ b/packages/astro/test/fixtures/slots-preact/package.json @@ -6,6 +6,6 @@ "@astrojs/mdx": "workspace:*", "@astrojs/preact": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/astro/test/fixtures/slots-solid/package.json b/packages/astro/test/fixtures/slots-solid/package.json index 87b0e75bf01c..688101adf72f 100644 --- a/packages/astro/test/fixtures/slots-solid/package.json +++ b/packages/astro/test/fixtures/slots-solid/package.json @@ -6,6 +6,6 @@ "@astrojs/mdx": "workspace:*", "@astrojs/solid-js": "workspace:*", "astro": "workspace:*", - "solid-js": "^1.7.11" + "solid-js": "^1.8.5" } } diff --git a/packages/astro/test/fixtures/slots-svelte/package.json b/packages/astro/test/fixtures/slots-svelte/package.json index f166a1fc9162..5335dd2add8f 100644 --- a/packages/astro/test/fixtures/slots-svelte/package.json +++ b/packages/astro/test/fixtures/slots-svelte/package.json @@ -6,6 +6,6 @@ "@astrojs/mdx": "workspace:*", "@astrojs/svelte": "workspace:*", "astro": "workspace:*", - "svelte": "^4.2.0" + "svelte": "^4.2.5" } } diff --git a/packages/astro/test/fixtures/slots-vue/package.json b/packages/astro/test/fixtures/slots-vue/package.json index e61cf2bbec64..4beb43ad927d 100644 --- a/packages/astro/test/fixtures/slots-vue/package.json +++ b/packages/astro/test/fixtures/slots-vue/package.json @@ -6,6 +6,6 @@ "@astrojs/mdx": "workspace:*", "@astrojs/vue": "workspace:*", "astro": "workspace:*", - "vue": "^3.3.4" + "vue": "^3.3.8" } } diff --git a/packages/astro/test/fixtures/solid-component/deps/solid-jsx-component/package.json b/packages/astro/test/fixtures/solid-component/deps/solid-jsx-component/package.json index e9d0ed6c027f..59568a514382 100644 --- a/packages/astro/test/fixtures/solid-component/deps/solid-jsx-component/package.json +++ b/packages/astro/test/fixtures/solid-component/deps/solid-jsx-component/package.json @@ -10,6 +10,6 @@ } }, "dependencies": { - "solid-js": "^1.7.11" + "solid-js": "^1.8.5" } } diff --git a/packages/astro/test/fixtures/solid-component/package.json b/packages/astro/test/fixtures/solid-component/package.json index 9cd5517550fe..8a8696964ace 100644 --- a/packages/astro/test/fixtures/solid-component/package.json +++ b/packages/astro/test/fixtures/solid-component/package.json @@ -4,9 +4,9 @@ "private": true, "dependencies": { "@astrojs/solid-js": "workspace:*", - "@solidjs/router": "^0.8.3", + "@solidjs/router": "^0.9.1", "@test/solid-jsx-component": "file:./deps/solid-jsx-component", "astro": "workspace:*", - "solid-js": "^1.7.11" + "solid-js": "^1.8.5" } } diff --git a/packages/astro/test/fixtures/ssr-api-route/src/pages/binary.js b/packages/astro/test/fixtures/ssr-api-route/src/pages/binary.js index 796bf4616be3..b5f1b013617e 100644 --- a/packages/astro/test/fixtures/ssr-api-route/src/pages/binary.js +++ b/packages/astro/test/fixtures/ssr-api-route/src/pages/binary.js @@ -4,7 +4,7 @@ export function GET() { return new Response('ok') } -export async function post({ request }) { +export async function POST({ request }) { const data = await request.formData(); const file = data.get('file'); diff --git a/packages/astro/test/fixtures/ssr-api-route/src/pages/context/[param].js b/packages/astro/test/fixtures/ssr-api-route/src/pages/context/[param].js index ba110ee13f4d..d5c9f4033d67 100644 --- a/packages/astro/test/fixtures/ssr-api-route/src/pages/context/[param].js +++ b/packages/astro/test/fixtures/ssr-api-route/src/pages/context/[param].js @@ -1,18 +1,16 @@ /** - * @param {import('astro').APIContext} api + * @param {import('astro').APIContext} api */ export function GET(ctx) { - return { - body: JSON.stringify({ - cookiesExist: !!ctx.cookies, - requestExist: !!ctx.request, - redirectExist: !!ctx.redirect, - propsExist: !!ctx.props, - params: ctx.params, - site: ctx.site?.toString(), - generator: ctx.generator, - url: ctx.url.toString(), - clientAddress: ctx.clientAddress, - }) - }; + return Response.json({ + cookiesExist: !!ctx.cookies, + requestExist: !!ctx.request, + redirectExist: !!ctx.redirect, + propsExist: !!ctx.props, + params: ctx.params, + site: ctx.site?.toString(), + generator: ctx.generator, + url: ctx.url.toString(), + clientAddress: ctx.clientAddress, + }); } diff --git a/packages/astro/test/fixtures/ssr-api-route/src/pages/food-object.json.js b/packages/astro/test/fixtures/ssr-api-route/src/pages/food-object.json.js deleted file mode 100644 index 7992e697aacc..000000000000 --- a/packages/astro/test/fixtures/ssr-api-route/src/pages/food-object.json.js +++ /dev/null @@ -1,10 +0,0 @@ -// NOTE: test deprecated object form -export function GET() { - return { - body: JSON.stringify([ - { name: 'lettuce' }, - { name: 'broccoli' }, - { name: 'pizza' } - ]) - }; -} diff --git a/packages/astro/test/fixtures/ssr-dynamic/src/pages/api/products/[id].js b/packages/astro/test/fixtures/ssr-dynamic/src/pages/api/products/[id].js index 8c7c393029c1..8956f0d4ccc3 100644 --- a/packages/astro/test/fixtures/ssr-dynamic/src/pages/api/products/[id].js +++ b/packages/astro/test/fixtures/ssr-dynamic/src/pages/api/products/[id].js @@ -1,6 +1,3 @@ - export function GET({ params }) { - return { - body: JSON.stringify(params) - }; + return Response.json(params); } diff --git a/packages/astro/test/fixtures/ssr-env/package.json b/packages/astro/test/fixtures/ssr-env/package.json index 9a78d42135d4..4cc5e8ea5523 100644 --- a/packages/astro/test/fixtures/ssr-env/package.json +++ b/packages/astro/test/fixtures/ssr-env/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/preact": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/astro/test/fixtures/ssr-prerender-get-static-paths/src/pages/data/[slug].json.ts b/packages/astro/test/fixtures/ssr-prerender-get-static-paths/src/pages/data/[slug].json.ts index d969873c54d1..7a1b6af28241 100644 --- a/packages/astro/test/fixtures/ssr-prerender-get-static-paths/src/pages/data/[slug].json.ts +++ b/packages/astro/test/fixtures/ssr-prerender-get-static-paths/src/pages/data/[slug].json.ts @@ -1,16 +1,14 @@ export const prerender = true; export async function getStaticPaths() { - return [ + return [ { params: { slug: 'thing1' } }, { params: { slug: 'thing2' } } ]; } export async function GET() { - return { - body: JSON.stringify({ - title: '[slug]' - }, null, 4) - }; + return Response.json({ + title: '[slug]', + }); } diff --git a/packages/astro/test/fixtures/ssr-scripts/package.json b/packages/astro/test/fixtures/ssr-scripts/package.json index 5b4a8abb7624..3489d3ba4248 100644 --- a/packages/astro/test/fixtures/ssr-scripts/package.json +++ b/packages/astro/test/fixtures/ssr-scripts/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/preact": "workspace:", "astro": "workspace:*", - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/astro/test/fixtures/static-build-frameworks/package.json b/packages/astro/test/fixtures/static-build-frameworks/package.json index 4df7c2b12642..f2ba47078a67 100644 --- a/packages/astro/test/fixtures/static-build-frameworks/package.json +++ b/packages/astro/test/fixtures/static-build-frameworks/package.json @@ -6,7 +6,7 @@ "@astrojs/preact": "workspace:*", "@astrojs/react": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1", + "preact": "^10.19.2", "react": "^18.1.0", "react-dom": "^18.1.0" } diff --git a/packages/astro/test/fixtures/static-build/package.json b/packages/astro/test/fixtures/static-build/package.json index df47dd1ef6fc..e8eaa87d3501 100644 --- a/packages/astro/test/fixtures/static-build/package.json +++ b/packages/astro/test/fixtures/static-build/package.json @@ -6,6 +6,6 @@ "@astrojs/preact": "workspace:*", "@test/static-build-pkg": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/astro/test/fixtures/static-build/src/pages/company.json.ts b/packages/astro/test/fixtures/static-build/src/pages/company.json.ts index 08f45a7b87f8..6a08cc9399bb 100644 --- a/packages/astro/test/fixtures/static-build/src/pages/company.json.ts +++ b/packages/astro/test/fixtures/static-build/src/pages/company.json.ts @@ -1,8 +1,6 @@ -export async function GET() { - return { - body: JSON.stringify({ - name: 'Astro Technology Company', - url: 'https://astro.build/' - }) - } +export function GET() { + return Response.json({ + name: 'Astro Technology Company', + url: 'https://astro.build/', + }); } diff --git a/packages/astro/test/fixtures/static-build/src/pages/data/[slug].json.ts b/packages/astro/test/fixtures/static-build/src/pages/data/[slug].json.ts index 2fa13ac1820e..2c78812ec107 100644 --- a/packages/astro/test/fixtures/static-build/src/pages/data/[slug].json.ts +++ b/packages/astro/test/fixtures/static-build/src/pages/data/[slug].json.ts @@ -6,11 +6,9 @@ export async function getStaticPaths() { } export async function GET({ params }) { - return { - body: JSON.stringify({ - slug: params.slug, - name: 'Astro Technology Company', - url: 'https://astro.build/' - }) - } + return Response.json({ + slug: params.slug, + name: 'Astro Technology Company', + url: 'https://astro.build/' + }); } diff --git a/packages/astro/test/fixtures/static-build/src/pages/posts.json.js b/packages/astro/test/fixtures/static-build/src/pages/posts.json.js index aefbbffff72c..b72a000d9638 100644 --- a/packages/astro/test/fixtures/static-build/src/pages/posts.json.js +++ b/packages/astro/test/fixtures/static-build/src/pages/posts.json.js @@ -15,8 +15,5 @@ async function fetchPosts() { export async function GET() { const posts = await fetchPosts(); - - return { - body: JSON.stringify(posts, null, 4), - }; + return Response.json(posts); } diff --git a/packages/astro/test/fixtures/svelte-component/package.json b/packages/astro/test/fixtures/svelte-component/package.json index eb6c574703a9..bc4d8b5aa6ea 100644 --- a/packages/astro/test/fixtures/svelte-component/package.json +++ b/packages/astro/test/fixtures/svelte-component/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/svelte": "workspace:*", "astro": "workspace:*", - "svelte": "^4.2.0" + "svelte": "^4.2.5" } } diff --git a/packages/astro/test/fixtures/tailwindcss-ts/package.json b/packages/astro/test/fixtures/tailwindcss-ts/package.json index a54b4779ec03..98ca7985cddb 100644 --- a/packages/astro/test/fixtures/tailwindcss-ts/package.json +++ b/packages/astro/test/fixtures/tailwindcss-ts/package.json @@ -6,6 +6,6 @@ "@astrojs/tailwind": "workspace:*", "astro": "workspace:*", "postcss": "^8.4.28", - "tailwindcss": "^3.3.3" + "tailwindcss": "^3.3.5" } } diff --git a/packages/astro/test/fixtures/tailwindcss/package.json b/packages/astro/test/fixtures/tailwindcss/package.json index 6117883a9571..7815a3b2eee2 100644 --- a/packages/astro/test/fixtures/tailwindcss/package.json +++ b/packages/astro/test/fixtures/tailwindcss/package.json @@ -8,6 +8,6 @@ "astro": "workspace:*", "autoprefixer": "^10.4.15", "postcss": "^8.4.28", - "tailwindcss": "^3.3.3" + "tailwindcss": "^3.3.5" } } diff --git a/packages/astro/test/fixtures/third-party-astro/package.json b/packages/astro/test/fixtures/third-party-astro/package.json index cd9d0743c178..01bdf2b209e6 100644 --- a/packages/astro/test/fixtures/third-party-astro/package.json +++ b/packages/astro/test/fixtures/third-party-astro/package.json @@ -4,6 +4,6 @@ "private": true, "dependencies": { "astro": "workspace:*", - "astro-embed": "^0.5.1" + "astro-embed": "^0.6.0" } } diff --git a/packages/astro/test/fixtures/vue-component/package.json b/packages/astro/test/fixtures/vue-component/package.json index b1f716dd65fc..7913b77208d0 100644 --- a/packages/astro/test/fixtures/vue-component/package.json +++ b/packages/astro/test/fixtures/vue-component/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/vue": "workspace:*", "astro": "workspace:*", - "vue": "^3.3.4" + "vue": "^3.3.8" } } diff --git a/packages/astro/test/fixtures/vue-jsx/package.json b/packages/astro/test/fixtures/vue-jsx/package.json index e04e8077d66c..76bd57acfa42 100644 --- a/packages/astro/test/fixtures/vue-jsx/package.json +++ b/packages/astro/test/fixtures/vue-jsx/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/vue": "workspace:*", "astro": "workspace:*", - "vue": "^3.3.4" + "vue": "^3.3.8" } } diff --git a/packages/astro/test/fixtures/vue-with-multi-renderer/package.json b/packages/astro/test/fixtures/vue-with-multi-renderer/package.json index 476c7f680fb6..adc755525994 100644 --- a/packages/astro/test/fixtures/vue-with-multi-renderer/package.json +++ b/packages/astro/test/fixtures/vue-with-multi-renderer/package.json @@ -6,7 +6,7 @@ "@astrojs/svelte": "workspace:*", "@astrojs/vue": "workspace:*", "astro": "workspace:*", - "svelte": "^4.2.0", - "vue": "^3.3.4" + "svelte": "^4.2.5", + "vue": "^3.3.8" } } diff --git a/packages/astro/test/fixtures/with-endpoint-routes/src/pages/[slug].json.ts b/packages/astro/test/fixtures/with-endpoint-routes/src/pages/[slug].json.ts index 783031605467..3c1408300f25 100644 --- a/packages/astro/test/fixtures/with-endpoint-routes/src/pages/[slug].json.ts +++ b/packages/astro/test/fixtures/with-endpoint-routes/src/pages/[slug].json.ts @@ -6,10 +6,8 @@ export async function getStaticPaths() { } export async function GET({ params }) { - return { - body: JSON.stringify({ - slug: params.slug, - title: '[slug]' - }) - }; + return Response.json({ + slug: params.slug, + title: '[slug]' + }); } diff --git a/packages/astro/test/fixtures/with-endpoint-routes/src/pages/data/[slug].json.ts b/packages/astro/test/fixtures/with-endpoint-routes/src/pages/data/[slug].json.ts index 707c39fa9c9c..26cd9b065c34 100644 --- a/packages/astro/test/fixtures/with-endpoint-routes/src/pages/data/[slug].json.ts +++ b/packages/astro/test/fixtures/with-endpoint-routes/src/pages/data/[slug].json.ts @@ -6,10 +6,8 @@ export async function getStaticPaths() { } export async function GET({ params }) { - return { - body: JSON.stringify({ - slug: params.slug, - title: 'data [slug]' - }) - }; + return Response.json({ + slug: params.slug, + title: 'data [slug]' + }); } diff --git a/packages/astro/test/fixtures/with-endpoint-routes/src/pages/home.json.ts b/packages/astro/test/fixtures/with-endpoint-routes/src/pages/home.json.ts index 5eaac42f1d57..2bee50a8e328 100644 --- a/packages/astro/test/fixtures/with-endpoint-routes/src/pages/home.json.ts +++ b/packages/astro/test/fixtures/with-endpoint-routes/src/pages/home.json.ts @@ -1,7 +1,3 @@ export async function GET() { - return { - body: JSON.stringify({ - title: 'home' - }) - }; + return Response.json({ title: 'home' }); } diff --git a/packages/astro/test/fixtures/with-endpoint-routes/src/pages/images/[image].svg.ts b/packages/astro/test/fixtures/with-endpoint-routes/src/pages/images/[image].svg.ts index c6fa88711671..cef9dd60855d 100644 --- a/packages/astro/test/fixtures/with-endpoint-routes/src/pages/images/[image].svg.ts +++ b/packages/astro/test/fixtures/with-endpoint-routes/src/pages/images/[image].svg.ts @@ -1,14 +1,16 @@ export async function getStaticPaths() { - return [ - { params: { image: 1 } }, - { params: { image: 2 } }, - ]; + return [{ params: { image: 1 } }, { params: { image: 2 } }]; } export async function GET({ params }) { - return { - body: ` + return new Response( + ` ${params.image} -` - }; +`, + { + headers: { + 'content-type': 'image/svg+xml', + }, + } + ); } diff --git a/packages/astro/test/fixtures/with-endpoint-routes/src/pages/images/hex.ts b/packages/astro/test/fixtures/with-endpoint-routes/src/pages/images/hex.ts index 84dd6dcaa19a..c258c3091c2d 100644 --- a/packages/astro/test/fixtures/with-endpoint-routes/src/pages/images/hex.ts +++ b/packages/astro/test/fixtures/with-endpoint-routes/src/pages/images/hex.ts @@ -1,9 +1,6 @@ -import { readFileSync } from "node:fs"; +import { readFile } from 'node:fs/promises'; -export async function GET({ params, request }) { - const buffer = readFileSync(new URL('../../astro.png', import.meta.url)); - return { - body: buffer.toString('hex'), - encoding: 'hex', - }; +export async function GET() { + const buffer = await readFile(new URL('../../astro.png', import.meta.url)); + return new Response(buffer.buffer); } diff --git a/packages/astro/test/fixtures/with-endpoint-routes/src/pages/images/static.svg.ts b/packages/astro/test/fixtures/with-endpoint-routes/src/pages/images/static.svg.ts index 93fcf40228bc..423f258f8c17 100644 --- a/packages/astro/test/fixtures/with-endpoint-routes/src/pages/images/static.svg.ts +++ b/packages/astro/test/fixtures/with-endpoint-routes/src/pages/images/static.svg.ts @@ -1,7 +1,12 @@ -export async function GET() { - return { - body: ` +export function GET() { + return new Response( + ` Static SVG -` - }; +`, + { + headers: { + 'content-type': 'image/svg+xml', + }, + } + ); } diff --git a/packages/astro/test/fixtures/with-endpoint-routes/src/pages/invalid-redirect.json.ts b/packages/astro/test/fixtures/with-endpoint-routes/src/pages/invalid-redirect.json.ts index b1b48634f145..9e8e40580ea8 100644 --- a/packages/astro/test/fixtures/with-endpoint-routes/src/pages/invalid-redirect.json.ts +++ b/packages/astro/test/fixtures/with-endpoint-routes/src/pages/invalid-redirect.json.ts @@ -1,4 +1,4 @@ -export const get = () => { +export const GET = () => { return new Response( undefined, { diff --git a/packages/astro/test/i18-routing.test.js b/packages/astro/test/i18n-routing.test.js similarity index 89% rename from packages/astro/test/i18-routing.test.js rename to packages/astro/test/i18n-routing.test.js index a7e8b318d371..52ebeda23ae1 100644 --- a/packages/astro/test/i18-routing.test.js +++ b/packages/astro/test/i18n-routing.test.js @@ -639,6 +639,71 @@ describe('[SSG] i18n routing', () => { return true; } }); + + it('should render the page with client scripts', async () => { + let html = await fixture.readFile('/index.html'); + let $ = cheerio.load(html); + expect($('script').text()).includes('console.log("this is a script")'); + }); + }); + + describe('i18n routing with fallback and [prefix-always]', () => { + /** @type {import('./test-utils').Fixture} */ + let fixture; + + before(async () => { + fixture = await loadFixture({ + root: './fixtures/i18n-routing-prefix-always/', + experimental: { + i18n: { + defaultLocale: 'en', + locales: ['en', 'pt', 'it'], + fallback: { + it: 'en', + }, + routingStrategy: 'prefix-always', + }, + }, + }); + await fixture.build(); + }); + + // TODO: enable once we fix fallback + it.skip('should render the en locale', async () => { + let html = await fixture.readFile('/it/start/index.html'); + expect(html).to.include('http-equiv="refresh'); + expect(html).to.include('url=/new-site/en/start'); + }); + }); + + describe('i18n routing with fallback and redirect', () => { + /** @type {import('./test-utils').Fixture} */ + let fixture; + + before(async () => { + fixture = await loadFixture({ + root: './fixtures/i18n-routing-fallback/', + redirects: { + '/': '/en', + }, + experimental: { + i18n: { + defaultLocale: 'en', + locales: ['en', 'pt', 'it'], + fallback: { + it: 'en', + }, + }, + }, + }); + await fixture.build(); + }); + + it('should render the en locale', async () => { + let html = await fixture.readFile('/index.html'); + expect(html).to.include('http-equiv="refresh'); + expect(html).to.include('Redirecting to: /en'); + }); }); }); describe('[SSR] i18n routing', () => { @@ -991,6 +1056,73 @@ describe('[SSR] i18n routing', () => { }); }); }); + + describe('current locale', () => { + describe('with [prefix-other-locales]', () => { + /** @type {import('./test-utils').Fixture} */ + let fixture; + + before(async () => { + fixture = await loadFixture({ + root: './fixtures/i18n-routing/', + output: 'server', + adapter: testAdapter(), + }); + await fixture.build(); + app = await fixture.loadTestAdapterApp(); + }); + + it('should return the default locale', async () => { + let request = new Request('http://example.com/current-locale', {}); + let response = await app.render(request); + expect(response.status).to.equal(200); + expect(await response.text()).includes('Current Locale: en'); + }); + + it('should return the default locale of the current URL', async () => { + let request = new Request('http://example.com/pt/start', {}); + let response = await app.render(request); + expect(response.status).to.equal(200); + expect(await response.text()).includes('Current Locale: pt'); + }); + + it('should return the default locale when a route is dynamic', async () => { + let request = new Request('http://example.com/dynamic/lorem', {}); + let response = await app.render(request); + expect(response.status).to.equal(200); + expect(await response.text()).includes('Current Locale: en'); + }); + }); + + describe('with [prefix-always]', () => { + /** @type {import('./test-utils').Fixture} */ + let fixture; + + before(async () => { + fixture = await loadFixture({ + root: './fixtures/i18n-routing-prefix-always/', + output: 'server', + adapter: testAdapter(), + }); + await fixture.build(); + app = await fixture.loadTestAdapterApp(); + }); + + it('should return the locale of the current URL (en)', async () => { + let request = new Request('http://example.com/en/start', {}); + let response = await app.render(request); + expect(response.status).to.equal(200); + expect(await response.text()).includes('Current Locale: en'); + }); + + it('should return the locale of the current URL (pt)', async () => { + let request = new Request('http://example.com/pt/start', {}); + let response = await app.render(request); + expect(response.status).to.equal(200); + expect(await response.text()).includes('Current Locale: pt'); + }); + }); + }); }); describe('i18n routing does not break assets and endpoints', () => { diff --git a/packages/astro/test/middleware.test.js b/packages/astro/test/middleware.test.js index 8332dfe41949..c858f37a826e 100644 --- a/packages/astro/test/middleware.test.js +++ b/packages/astro/test/middleware.test.js @@ -251,8 +251,8 @@ describe('Middleware API in PROD mode, SSR', () => { it('should correctly call the middleware function for 404', async () => { const request = new Request('http://example.com/funky-url'); - const routeData = app.match(request, { matchNotFound: true }); - const response = await app.render(request, routeData); + const routeData = app.match(request); + const response = await app.render(request, { routeData }); const text = await response.text(); expect(text.includes('Error')).to.be.true; expect(text.includes('bar')).to.be.true; @@ -260,7 +260,7 @@ describe('Middleware API in PROD mode, SSR', () => { it('should render 500.astro when the middleware throws an error', async () => { const request = new Request('http://example.com/throw'); - const routeData = app.match(request, { matchNotFound: true }); + const routeData = app.match(request); const response = await app.render(request, routeData); expect(response).to.deep.include({ status: 500 }); @@ -277,6 +277,11 @@ describe('Middleware API in PROD mode, SSR', () => { excludeMiddleware: true, }, adapter: testAdapter({ + extendAdapter: { + adapterFeatures: { + edgeMiddleware: true, + }, + }, setMiddlewareEntryPoint(entryPointsOrMiddleware) { middlewarePath = entryPointsOrMiddleware; }, @@ -317,7 +322,9 @@ describe('Middleware with tailwind', () => { }); }); -describe('Middleware, split middleware option', () => { +// `loadTestAdapterApp()` does not understand how to load the page with `functionPerRoute` +// since there's no `entry.mjs`. Skip for now. +describe.skip('Middleware supports functionPerRoute feature', () => { /** @type {import('./test-utils').Fixture} */ let fixture; @@ -325,10 +332,13 @@ describe('Middleware, split middleware option', () => { fixture = await loadFixture({ root: './fixtures/middleware space/', output: 'server', - build: { - excludeMiddleware: true, - }, - adapter: testAdapter({}), + adapter: testAdapter({ + extendAdapter: { + adapterFeatures: { + functionPerRoute: true, + }, + }, + }), }); await fixture.build(); }); diff --git a/packages/astro/test/non-html-pages.test.js b/packages/astro/test/non-html-pages.test.js index 2cf5811041bc..9f050ae96f35 100644 --- a/packages/astro/test/non-html-pages.test.js +++ b/packages/astro/test/non-html-pages.test.js @@ -15,12 +15,6 @@ describe('Non-HTML Pages', () => { expect(json).to.have.property('name', 'Astro'); expect(json).to.have.property('url', 'https://astro.build/'); }); - - it('should match contents (deprecated object form)', async () => { - const json = JSON.parse(await fixture.readFile('/about-object.json')); - expect(json).to.have.property('name', 'Astro'); - expect(json).to.have.property('url', 'https://astro.build/'); - }); }); describe('png', () => { @@ -40,22 +34,5 @@ describe('Non-HTML Pages', () => { 'iVBORw0KGgoAAAANSUhEUgAAAGQAAACWCAMAAAAfZt10AAAABlBMVEXd3d3+/v7B/CFgAAAA3UlEQVR42u3ZMQ7DIBQFQeb+l06bNgUbG/5eYApLFjzWNE3TNE3TNE035av9AhAQEBBQGAQEFAaFQWFQGBQGhUGCKAwKgwQpDJ6JECgCRYIEikH8YAyCRyEGyRCDvBWRIPNNBpm/8G6kUM45EhXKlQfuFSHFpbFH+jt2j/S7xwqUYvBaCRIozZy6X2km7v1K8uwQIIWBwkBAQEBg3Tyj3z4LnzRBKgwKg8KgMEgQhaEwSBCFQWBEiMIgQQqDBCkMEqQw+APixYgcsa0TERs7D/F6xGmIAxCD/Iw4AvEB92Ec3ZAPdlMAAAAASUVORK5CYII=' ); }); - - it('should not have had its encoding mangled (deprecated object form)', async () => { - const buffer = await fixture.readFile('/placeholder-object.png', 'base64'); - - // Sanity check the first byte - const hex = Buffer.from(buffer, 'base64').toString('hex'); - const firstHexByte = hex.slice(0, 2); - // If we accidentally utf8 encode the png, the first byte (in hex) will be 'c2' - expect(firstHexByte).to.not.equal('c2'); - // and if correctly encoded in binary, it should be '89' - expect(firstHexByte).to.equal('89'); - - // Make sure the whole buffer (in base64) matches this snapshot - expect(buffer).to.equal( - 'iVBORw0KGgoAAAANSUhEUgAAAGQAAACWCAMAAAAfZt10AAAABlBMVEXd3d3+/v7B/CFgAAAA3UlEQVR42u3ZMQ7DIBQFQeb+l06bNgUbG/5eYApLFjzWNE3TNE3TNE035av9AhAQEBBQGAQEFAaFQWFQGBQGhUGCKAwKgwQpDJ6JECgCRYIEikH8YAyCRyEGyRCDvBWRIPNNBpm/8G6kUM45EhXKlQfuFSHFpbFH+jt2j/S7xwqUYvBaCRIozZy6X2km7v1K8uwQIIWBwkBAQEBg3Tyj3z4LnzRBKgwKg8KgMEgQhaEwSBCFQWBEiMIgQQqDBCkMEqQw+APixYgcsa0TERs7D/F6xGmIAxCD/Iw4AvEB92Ec3ZAPdlMAAAAASUVORK5CYII=' - ); - }); }); }); diff --git a/packages/astro/test/parallel.js b/packages/astro/test/parallel.test.js similarity index 100% rename from packages/astro/test/parallel.js rename to packages/astro/test/parallel.test.js diff --git a/packages/astro/test/ssr-404-500-pages.test.js b/packages/astro/test/ssr-404-500-pages.test.js index 253f9bc1ca99..1c735e88995d 100644 --- a/packages/astro/test/ssr-404-500-pages.test.js +++ b/packages/astro/test/ssr-404-500-pages.test.js @@ -56,7 +56,7 @@ describe('404 and 500 pages', () => { it('404 page returned when a route does not match and passing routeData', async () => { const app = await fixture.loadTestAdapterApp(); const request = new Request('http://example.com/some/fake/route'); - const routeData = app.match(request, { matchNotFound: true }); + const routeData = app.match(request); const response = await app.render(request, routeData); expect(response.status).to.equal(404); const html = await response.text(); diff --git a/packages/astro/test/ssr-adapter-build-config.test.js b/packages/astro/test/ssr-adapter-build-config.test.js index d739cee3cd09..5d2221c31298 100644 --- a/packages/astro/test/ssr-adapter-build-config.test.js +++ b/packages/astro/test/ssr-adapter-build-config.test.js @@ -47,6 +47,7 @@ describe('Integration buildConfig hook', () => { name: 'my-ssr-adapter', serverEntrypoint: '@my-ssr', exports: ['manifest', 'createApp'], + supportedAstroFeatures: {}, }); }, }, diff --git a/packages/astro/test/ssr-api-route.test.js b/packages/astro/test/ssr-api-route.test.js index fbaafc82275c..e15993b88681 100644 --- a/packages/astro/test/ssr-api-route.test.js +++ b/packages/astro/test/ssr-api-route.test.js @@ -33,17 +33,6 @@ describe('API routes in SSR', () => { expect(body.length).to.equal(3); }); - it('Can load the API route too (deprecated object form)', async () => { - const app = await fixture.loadTestAdapterApp(); - const request = new Request('http://example.com/food-object.json'); - const response = await app.render(request); - expect(response.status).to.equal(200); - expect(response.headers.get('Content-Type')).to.equal('application/json;charset=utf-8'); - expect(response.headers.get('Content-Length')).to.not.be.empty; - const body = await response.json(); - expect(body.length).to.equal(3); - }); - it('Has valid api context', async () => { const app = await fixture.loadTestAdapterApp(); const request = new Request('http://example.com/context/any'); @@ -96,13 +85,6 @@ describe('API routes in SSR', () => { expect(res.status).to.equal(200); }); - it('Infer content type with charset for { body } shorthand (deprecated object form)', async () => { - const response = await fixture.fetch('/food-object.json', { - method: 'GET', - }); - expect(response.headers.get('Content-Type')).to.equal('application/json;charset=utf-8'); - }); - it('Can set multiple headers of the same type', async () => { const response = await new Promise((resolve) => { let { port } = devServer.address; diff --git a/packages/astro/test/ssr-dynamic.test.js b/packages/astro/test/ssr-dynamic.test.js index 62e67e410d32..f867ff999d71 100644 --- a/packages/astro/test/ssr-dynamic.test.js +++ b/packages/astro/test/ssr-dynamic.test.js @@ -18,7 +18,7 @@ describe('Dynamic pages in SSR', () => { 'astro:config:setup': ({ injectRoute }) => { injectRoute({ pattern: '/path-alias/[id]', - entryPoint: './src/pages/api/products/[id].js', + entrypoint: './src/pages/api/products/[id].js', }); }, }, diff --git a/packages/astro/test/ssr-locals.test.js b/packages/astro/test/ssr-locals.test.js index 41e5710fbbb8..68e628990859 100644 --- a/packages/astro/test/ssr-locals.test.js +++ b/packages/astro/test/ssr-locals.test.js @@ -20,7 +20,7 @@ describe('SSR Astro.locals from server', () => { const app = await fixture.loadTestAdapterApp(); const request = new Request('http://example.com/foo'); const locals = { foo: 'bar' }; - const response = await app.render(request, undefined, locals); + const response = await app.render(request, { locals }); const html = await response.text(); const $ = cheerio.load(html); diff --git a/packages/astro/test/ssr-split-manifest.test.js b/packages/astro/test/ssr-split-manifest.test.js index 89c8e00ef898..74d2fe74e574 100644 --- a/packages/astro/test/ssr-split-manifest.test.js +++ b/packages/astro/test/ssr-split-manifest.test.js @@ -109,7 +109,6 @@ describe('astro:ssr-manifest, split', () => { const request = new Request('http://example.com/'); const response = await app.render(request); const html = await response.text(); - console.log(html); expect(html.includes('Testing')).to.be.true; }); }); diff --git a/packages/astro/test/test-adapter.js b/packages/astro/test/test-adapter.js index 0090b6d9da92..0a30583b22e7 100644 --- a/packages/astro/test/test-adapter.js +++ b/packages/astro/test/test-adapter.js @@ -77,15 +77,7 @@ export default function ( name: 'my-ssr-adapter', serverEntrypoint: '@my-ssr', exports: ['manifest', 'createApp'], - supportedFeatures: { - assets: { - supportKind: 'Stable', - isNodeCompatible: true, - }, - serverOutput: 'Stable', - staticOutput: 'Stable', - hybridOutput: 'Stable', - }, + supportedAstroFeatures: {}, ...extendAdapter, }); }, diff --git a/packages/astro/test/units/dev/dev.test.js b/packages/astro/test/units/dev/dev.test.js index 810d8d1c3084..52fb203c3ad6 100644 --- a/packages/astro/test/units/dev/dev.test.js +++ b/packages/astro/test/units/dev/dev.test.js @@ -133,7 +133,7 @@ describe('dev container', () => { 'astro:config:setup': ({ injectRoute }) => { injectRoute({ pattern: '/another-[slug]', - entryPoint: './src/components/test.astro', + entrypoint: './src/components/test.astro', }); }, }, @@ -184,7 +184,7 @@ describe('dev container', () => { 'astro:config:setup': ({ injectRoute }) => { injectRoute({ pattern: '/404', - entryPoint: './src/components/404.astro', + entrypoint: './src/components/404.astro', }); }, }, @@ -199,7 +199,6 @@ describe('dev container', () => { container.handle(r.req, r.res); await r.done; const doc = await r.text(); - console.log(doc); expect(doc).to.match(/Regular page/); expect(r.res.statusCode).to.equal(200); } diff --git a/packages/astro/test/units/i18n/astro_i18n.js b/packages/astro/test/units/i18n/astro_i18n.test.js similarity index 99% rename from packages/astro/test/units/i18n/astro_i18n.js rename to packages/astro/test/units/i18n/astro_i18n.test.js index f90ad14e69ef..63e2df83326d 100644 --- a/packages/astro/test/units/i18n/astro_i18n.js +++ b/packages/astro/test/units/i18n/astro_i18n.test.js @@ -636,6 +636,7 @@ describe('getLocaleAbsoluteUrl', () => { ...config.experimental.i18n, trailingSlash: 'never', format: 'directory', + site: 'https://example.com', }) ).to.eq('https://example.com/blog'); expect( @@ -645,6 +646,7 @@ describe('getLocaleAbsoluteUrl', () => { ...config.experimental.i18n, trailingSlash: 'always', format: 'directory', + site: 'https://example.com', }) ).to.eq('https://example.com/blog/es/'); @@ -655,6 +657,7 @@ describe('getLocaleAbsoluteUrl', () => { ...config.experimental.i18n, trailingSlash: 'ignore', format: 'directory', + site: 'https://example.com', }) ).to.eq('https://example.com/blog/'); @@ -666,6 +669,7 @@ describe('getLocaleAbsoluteUrl', () => { ...config.experimental.i18n, trailingSlash: 'never', format: 'file', + site: 'https://example.com', }) ).to.eq('https://example.com/blog'); expect( @@ -675,6 +679,7 @@ describe('getLocaleAbsoluteUrl', () => { ...config.experimental.i18n, trailingSlash: 'always', format: 'file', + site: 'https://example.com', }) ).to.eq('https://example.com/blog/es/'); @@ -686,6 +691,7 @@ describe('getLocaleAbsoluteUrl', () => { ...config.experimental.i18n, trailingSlash: 'ignore', format: 'file', + site: 'https://example.com', }) ).to.eq('https://example.com/blog'); }); diff --git a/packages/astro/test/units/integrations/api.test.js b/packages/astro/test/units/integrations/api.test.js index a4a76975a341..8960e662dcb9 100644 --- a/packages/astro/test/units/integrations/api.test.js +++ b/packages/astro/test/units/integrations/api.test.js @@ -106,7 +106,7 @@ describe('Astro feature map', function () { it('should not support the feature when not provided', () => { let result = validateSupportedFeatures( 'test', - undefined, + {}, { output: 'hybrid', }, diff --git a/packages/create-astro/CHANGELOG.md b/packages/create-astro/CHANGELOG.md index d50bb1c7f8b1..76b53508976e 100644 --- a/packages/create-astro/CHANGELOG.md +++ b/packages/create-astro/CHANGELOG.md @@ -1,5 +1,11 @@ # create-astro +## 4.5.2-beta.0 + +### Patch Changes + +- [#9105](https://github.com/withastro/astro/pull/9105) [`6201bbe96`](https://github.com/withastro/astro/commit/6201bbe96c2a083fb201e4a43a9bd88499821a3e) Thanks [@FredKSchott](https://github.com/FredKSchott)! - Stop clearing the console on start + ## 4.5.1 ### Patch Changes diff --git a/packages/create-astro/package.json b/packages/create-astro/package.json index 7aa1b62f6e2e..2699b11948a0 100644 --- a/packages/create-astro/package.json +++ b/packages/create-astro/package.json @@ -1,6 +1,6 @@ { "name": "create-astro", - "version": "4.5.1", + "version": "4.5.2-beta.0", "type": "module", "author": "withastro", "license": "MIT", @@ -32,7 +32,7 @@ "//b": "DEPENDENCIES IS FOR UNBUNDLED PACKAGES", "dependencies": { "@astrojs/cli-kit": "^0.3.1", - "giget": "1.1.2" + "giget": "1.1.3" }, "devDependencies": { "arg": "^5.0.2", diff --git a/packages/create-astro/src/actions/dependencies.ts b/packages/create-astro/src/actions/dependencies.ts index e920fcf8e482..26557d5a2f1d 100644 --- a/packages/create-astro/src/actions/dependencies.ts +++ b/packages/create-astro/src/actions/dependencies.ts @@ -51,6 +51,14 @@ async function install({ packageManager, cwd }: { packageManager: string; cwd: s return shell(packageManager, ['install'], { cwd, timeout: 90_000, stdio: 'ignore' }); } +/** + * Yarn Berry (PnP) versions will throw an error if there isn't an existing `yarn.lock` file + * If a `yarn.lock` file doesn't exist, this function writes an empty `yarn.lock` one. + * Unfortunately this hack is required to run `yarn install`. + * + * The empty `yarn.lock` file is immediately overwritten by the installation process. + * See https://github.com/withastro/astro/pull/8028 + */ async function ensureYarnLock({ cwd }: { cwd: string }) { const yarnLock = path.join(cwd, 'yarn.lock'); if (fs.existsSync(yarnLock)) return; diff --git a/packages/create-astro/test/typescript.test.js b/packages/create-astro/test/typescript.test.js index 498d3384b8a8..461a3ed63745 100644 --- a/packages/create-astro/test/typescript.test.js +++ b/packages/create-astro/test/typescript.test.js @@ -5,7 +5,6 @@ import { fileURLToPath } from 'node:url'; import { typescript, setupTypeScript } from '../dist/index.js'; import { setup, resetFixtures } from './utils.js'; -import { describe } from 'node:test'; describe('typescript', () => { const fixture = setup(); diff --git a/packages/integrations/lit/package.json b/packages/integrations/lit/package.json index 252a412d17ef..dd29cde62b44 100644 --- a/packages/integrations/lit/package.json +++ b/packages/integrations/lit/package.json @@ -59,7 +59,7 @@ "cheerio": "1.0.0-rc.12", "lit": "^2.8.0", "mocha": "^10.2.0", - "sass": "^1.66.1" + "sass": "^1.69.5" }, "peerDependencies": { "@webcomponents/template-shadowroot": "^0.2.1", diff --git a/packages/integrations/markdoc/CHANGELOG.md b/packages/integrations/markdoc/CHANGELOG.md index 574607c2859a..57916bc436b1 100644 --- a/packages/integrations/markdoc/CHANGELOG.md +++ b/packages/integrations/markdoc/CHANGELOG.md @@ -1,5 +1,12 @@ # @astrojs/markdoc +## 1.0.0-beta.0 + +### Patch Changes + +- Updated dependencies [[`abf601233`](https://github.com/withastro/astro/commit/abf601233f8188d118a8cb063c777478d8d9f1a3), [`6201bbe96`](https://github.com/withastro/astro/commit/6201bbe96c2a083fb201e4a43a9bd88499821a3e), [`cdabf6ef0`](https://github.com/withastro/astro/commit/cdabf6ef02be7220fd2b6bdcef924ceca089381e), [`1c48ed286`](https://github.com/withastro/astro/commit/1c48ed286538ab9e354eca4e4dcd7c6385c96721), [`37697a2c5`](https://github.com/withastro/astro/commit/37697a2c5511572dc29c0a4ea46f90c2f62be8e6), [`bd0c2e9ae`](https://github.com/withastro/astro/commit/bd0c2e9ae3389a9d3085050c1e8134ae98dff299), [`0fe3a7ed5`](https://github.com/withastro/astro/commit/0fe3a7ed5d7bb1a9fce1623e84ba14104b51223c), [`710be505c`](https://github.com/withastro/astro/commit/710be505c9ddf416e77a75343d8cae9c497d72c6), [`153a5abb9`](https://github.com/withastro/astro/commit/153a5abb905042ac68b712514dc9ec387d3e6b17)]: + - astro@4.0.0-beta.0 + ## 0.7.2 ### Patch Changes diff --git a/packages/integrations/markdoc/package.json b/packages/integrations/markdoc/package.json index 19657879dff2..2254c5247359 100644 --- a/packages/integrations/markdoc/package.json +++ b/packages/integrations/markdoc/package.json @@ -1,7 +1,7 @@ { "name": "@astrojs/markdoc", "description": "Add support for Markdoc in your Astro site", - "version": "0.7.2", + "version": "1.0.0-beta.0", "type": "module", "types": "./dist/index.d.ts", "author": "withastro", @@ -65,29 +65,29 @@ "dependencies": { "@astrojs/internal-helpers": "workspace:*", "@astrojs/prism": "workspace:*", - "@markdoc/markdoc": "^0.3.0", - "esbuild": "^0.19.2", + "@markdoc/markdoc": "^0.3.5", + "esbuild": "^0.19.6", "github-slugger": "^2.0.0", "gray-matter": "^4.0.3", "htmlparser2": "^9.0.0", "kleur": "^4.1.5", - "shikiji": "^0.6.8", + "shikiji": "^0.6.13", "zod": "^3.22.4" }, "peerDependencies": { - "astro": "^3.0.0" + "astro": "^4.0.0-beta.0" }, "devDependencies": { "@astrojs/markdown-remark": "workspace:*", - "@types/chai": "^4.3.5", - "@types/html-escaper": "^3.0.0", - "@types/markdown-it": "^13.0.0", - "@types/mocha": "^10.0.1", + "@types/chai": "^4.3.10", + "@types/html-escaper": "^3.0.2", + "@types/markdown-it": "^13.0.6", + "@types/mocha": "^10.0.4", "astro": "workspace:*", "astro-scripts": "workspace:*", "chai": "^4.3.7", "devalue": "^4.3.2", - "linkedom": "^0.15.1", + "linkedom": "^0.16.4", "mocha": "^10.2.0", "vite": "^5.0.0" }, diff --git a/packages/integrations/markdoc/test/fixtures/content-collections/src/pages/collection.json.js b/packages/integrations/markdoc/test/fixtures/content-collections/src/pages/collection.json.js index 98ae36a58247..cb3c84652622 100644 --- a/packages/integrations/markdoc/test/fixtures/content-collections/src/pages/collection.json.js +++ b/packages/integrations/markdoc/test/fixtures/content-collections/src/pages/collection.json.js @@ -2,9 +2,7 @@ import { getCollection } from 'astro:content'; import { stringify } from 'devalue'; import { stripAllRenderFn } from '../../utils.js'; -export async function get() { +export async function GET() { const posts = await getCollection('blog'); - return { - body: stringify(stripAllRenderFn(posts)) - }; + return new Response(stringify(stripAllRenderFn(posts))); } diff --git a/packages/integrations/markdoc/test/fixtures/content-collections/src/pages/entry.json.js b/packages/integrations/markdoc/test/fixtures/content-collections/src/pages/entry.json.js index 7899a757a929..53dd17013ba7 100644 --- a/packages/integrations/markdoc/test/fixtures/content-collections/src/pages/entry.json.js +++ b/packages/integrations/markdoc/test/fixtures/content-collections/src/pages/entry.json.js @@ -2,9 +2,7 @@ import { getEntryBySlug } from 'astro:content'; import { stringify } from 'devalue'; import { stripRenderFn } from '../../utils.js'; -export async function get() { +export async function GET() { const post = await getEntryBySlug('blog', 'post-1'); - return { - body: stringify(stripRenderFn(post)), - }; + return new Response(stringify(stripRenderFn(post))); } diff --git a/packages/integrations/mdx/CHANGELOG.md b/packages/integrations/mdx/CHANGELOG.md index 80febcb54e0e..11632d110a1e 100644 --- a/packages/integrations/mdx/CHANGELOG.md +++ b/packages/integrations/mdx/CHANGELOG.md @@ -1,5 +1,19 @@ # @astrojs/mdx +## 2.0.0-beta.0 + +### Major Changes + +- [#9138](https://github.com/withastro/astro/pull/9138) [`abf601233`](https://github.com/withastro/astro/commit/abf601233f8188d118a8cb063c777478d8d9f1a3) Thanks [@bluwy](https://github.com/bluwy)! - Updates the unified, remark, and rehype dependencies to latest. Make sure to update your custom remark and rehype plugins as well to be compatible with the latest versions. + + **Potentially breaking change:** The default value of `markdown.remarkRehype.footnoteBackLabel` is changed from `"Back to content"` to `"Back to reference 1"`. See the `mdast-util-to-hast` [commit](https://github.com/syntax-tree/mdast-util-to-hast/commit/56c88e45690be138fad9f0bf367b939d09816863) for more information. + +### Patch Changes + +- Updated dependencies [[`abf601233`](https://github.com/withastro/astro/commit/abf601233f8188d118a8cb063c777478d8d9f1a3), [`6201bbe96`](https://github.com/withastro/astro/commit/6201bbe96c2a083fb201e4a43a9bd88499821a3e), [`cdabf6ef0`](https://github.com/withastro/astro/commit/cdabf6ef02be7220fd2b6bdcef924ceca089381e), [`addb57c8e`](https://github.com/withastro/astro/commit/addb57c8e80b7b67ec61224666f3a1db5c44410c), [`1c48ed286`](https://github.com/withastro/astro/commit/1c48ed286538ab9e354eca4e4dcd7c6385c96721), [`37697a2c5`](https://github.com/withastro/astro/commit/37697a2c5511572dc29c0a4ea46f90c2f62be8e6), [`bd0c2e9ae`](https://github.com/withastro/astro/commit/bd0c2e9ae3389a9d3085050c1e8134ae98dff299), [`c7953645e`](https://github.com/withastro/astro/commit/c7953645eeaaf9e87c6db4494b0023d2c1878ff0), [`0fe3a7ed5`](https://github.com/withastro/astro/commit/0fe3a7ed5d7bb1a9fce1623e84ba14104b51223c), [`710be505c`](https://github.com/withastro/astro/commit/710be505c9ddf416e77a75343d8cae9c497d72c6), [`153a5abb9`](https://github.com/withastro/astro/commit/153a5abb905042ac68b712514dc9ec387d3e6b17)]: + - @astrojs/markdown-remark@4.0.0-beta.0 + - astro@4.0.0-beta.0 + ## 1.1.5 ### Patch Changes diff --git a/packages/integrations/mdx/README.md b/packages/integrations/mdx/README.md index df0458ce9e27..150ada5e8da3 100644 --- a/packages/integrations/mdx/README.md +++ b/packages/integrations/mdx/README.md @@ -83,11 +83,7 @@ You can configure how your MDX is rendered with the following options: ### Options inherited from Markdown config -All [`markdown` configuration options](https://docs.astro.build/en/reference/configuration-reference/#markdown-options) except `drafts` can be configured separately in the MDX integration. This includes remark and rehype plugins, syntax highlighting, and more. Options will default to those in your Markdown config ([see the `extendMarkdownConfig` option](#extendmarkdownconfig) to modify this). - -:::note -There is no separate MDX configuration for [including pages marked as draft in the build](https://docs.astro.build/en/reference/configuration-reference/#markdowndrafts). This Markdown setting will be respected by both Markdown and MDX files and cannot be overridden for MDX files specifically. -::: +All [`markdown` configuration options](https://docs.astro.build/en/reference/configuration-reference/#markdown-options) can be configured separately in the MDX integration. This includes remark and rehype plugins, syntax highlighting, and more. Options will default to those in your Markdown config ([see the `extendMarkdownConfig` option](#extendmarkdownconfig) to modify this). ```js // astro.config.mjs diff --git a/packages/integrations/mdx/package.json b/packages/integrations/mdx/package.json index 20948fe617bc..3f5b6d559a6c 100644 --- a/packages/integrations/mdx/package.json +++ b/packages/integrations/mdx/package.json @@ -1,7 +1,7 @@ { "name": "@astrojs/mdx", "description": "Add support for MDX pages in your Astro site", - "version": "1.1.5", + "version": "2.0.0-beta.0", "type": "module", "types": "./dist/index.d.ts", "author": "withastro", @@ -35,46 +35,46 @@ }, "dependencies": { "@astrojs/markdown-remark": "workspace:*", - "@mdx-js/mdx": "^2.3.0", - "acorn": "^8.10.0", - "es-module-lexer": "^1.3.0", - "estree-util-visit": "^1.2.1", + "@mdx-js/mdx": "^3.0.0", + "acorn": "^8.11.2", + "es-module-lexer": "^1.4.1", + "estree-util-visit": "^2.0.0", "github-slugger": "^2.0.0", "gray-matter": "^4.0.3", - "hast-util-to-html": "^8.0.4", + "hast-util-to-html": "^9.0.0", "kleur": "^4.1.4", - "rehype-raw": "^6.1.1", - "remark-gfm": "^3.0.1", + "rehype-raw": "^7.0.0", + "remark-gfm": "^4.0.0", "remark-smartypants": "^2.0.0", "source-map": "^0.7.4", - "unist-util-visit": "^4.1.2", - "vfile": "^5.3.7" + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.1" }, "peerDependencies": { - "astro": "^3.0.0" + "astro": "^4.0.0-beta.0" }, "devDependencies": { - "@types/chai": "^4.3.5", - "@types/estree": "^1.0.1", - "@types/mdast": "^3.0.12", - "@types/mocha": "^10.0.1", - "@types/yargs-parser": "^21.0.0", + "@types/chai": "^4.3.10", + "@types/estree": "^1.0.5", + "@types/mdast": "^4.0.3", + "@types/mocha": "^10.0.4", + "@types/yargs-parser": "^21.0.3", "astro": "workspace:*", "astro-scripts": "workspace:*", "chai": "^4.3.7", "cheerio": "1.0.0-rc.12", - "linkedom": "^0.15.1", - "mdast-util-mdx": "^2.0.1", - "mdast-util-to-string": "^3.2.0", + "linkedom": "^0.16.4", + "mdast-util-mdx": "^3.0.0", + "mdast-util-to-string": "^4.0.0", "mocha": "^10.2.0", "reading-time": "^1.5.0", - "rehype-mathjax": "^4.0.3", - "rehype-pretty-code": "^0.10.0", - "remark-math": "^5.1.1", - "remark-rehype": "^10.1.0", + "rehype-mathjax": "^5.0.0", + "rehype-pretty-code": "^0.10.2", + "remark-math": "^6.0.0", + "remark-rehype": "^11.0.0", "remark-shiki-twoslash": "^3.1.3", - "remark-toc": "^8.0.1", - "unified": "^10.1.2", + "remark-toc": "^9.0.0", + "unified": "^11.0.4", "vite": "^5.0.0" }, "engines": { diff --git a/packages/integrations/mdx/src/index.ts b/packages/integrations/mdx/src/index.ts index fd330625e137..3fc00a7236bc 100644 --- a/packages/integrations/mdx/src/index.ts +++ b/packages/integrations/mdx/src/index.ts @@ -1,8 +1,8 @@ import { markdownConfigDefaults, setVfileFrontmatter } from '@astrojs/markdown-remark'; -import type { PluggableList } from '@mdx-js/mdx/lib/core.js'; import type { AstroIntegration, ContentEntryType, HookParameters, SSRError } from 'astro'; import astroJSXRenderer from 'astro/jsx/renderer.js'; import { parse as parseESM } from 'es-module-lexer'; +import type { PluggableList } from 'unified'; import fs from 'node:fs/promises'; import { fileURLToPath } from 'node:url'; import type { Options as RemarkRehypeOptions } from 'remark-rehype'; @@ -190,7 +190,10 @@ export default function mdx(partialMdxOptions: Partial = {}): AstroI componentsCode += ' }'; // Make `Content` the default export so we can wrap `MDXContent` and pass in `Fragment` - code = code.replace('export default MDXContent;', ''); + code = code.replace( + 'export default function MDXContent', + 'function MDXContent' + ); code += `\nexport const Content = (props = {}) => MDXContent({ ...props, components: ${componentsCode}, diff --git a/packages/integrations/mdx/src/plugins.ts b/packages/integrations/mdx/src/plugins.ts index 3286a9fd877b..e6584aacf13d 100644 --- a/packages/integrations/mdx/src/plugins.ts +++ b/packages/integrations/mdx/src/plugins.ts @@ -5,12 +5,11 @@ import { remarkShiki, } from '@astrojs/markdown-remark'; import { createProcessor, nodeTypes } from '@mdx-js/mdx'; -import type { PluggableList } from '@mdx-js/mdx/lib/core.js'; import rehypeRaw from 'rehype-raw'; import remarkGfm from 'remark-gfm'; import remarkSmartypants from 'remark-smartypants'; import { SourceMapGenerator } from 'source-map'; -import type { Processor } from 'unified'; +import type { PluggableList } from 'unified'; import type { MdxOptions } from './index.js'; import { recmaInjectImportMetaEnv } from './recma-inject-import-meta-env.js'; import { rehypeApplyFrontmatterExport } from './rehype-apply-frontmatter-export.js'; @@ -27,10 +26,7 @@ interface MdxProcessorExtraOptions { importMetaEnv: Record; } -export function createMdxProcessor( - mdxOptions: MdxOptions, - extraOptions: MdxProcessorExtraOptions -): Processor { +export function createMdxProcessor(mdxOptions: MdxOptions, extraOptions: MdxProcessorExtraOptions) { return createProcessor({ remarkPlugins: getRemarkPlugins(mdxOptions), rehypePlugins: getRehypePlugins(mdxOptions), diff --git a/packages/integrations/mdx/src/remark-images-to-component.ts b/packages/integrations/mdx/src/remark-images-to-component.ts index f83f5d76abf9..810056deff0a 100644 --- a/packages/integrations/mdx/src/remark-images-to-component.ts +++ b/packages/integrations/mdx/src/remark-images-to-component.ts @@ -15,7 +15,7 @@ export function remarkImageToComponent() { const importsStatements: MdxjsEsm[] = []; const importedImages = new Map(); - visit(tree, 'image', (node: Image, index: number | null, parent: Parent | null) => { + visit(tree, 'image', (node: Image, index: number | undefined, parent: Parent | null) => { // Use the imagePaths set from the remark-collect-images so we don't have to duplicate the logic for // checking if an image should be imported or not if (file.data.imagePaths?.has(node.url)) { diff --git a/packages/integrations/mdx/src/utils.ts b/packages/integrations/mdx/src/utils.ts index 3425c50e3484..a5b198116a9e 100644 --- a/packages/integrations/mdx/src/utils.ts +++ b/packages/integrations/mdx/src/utils.ts @@ -1,10 +1,10 @@ -import type { PluggableList } from '@mdx-js/mdx/lib/core.js'; import type { Options as AcornOpts } from 'acorn'; import { parse } from 'acorn'; import type { AstroConfig, SSRError } from 'astro'; import matter from 'gray-matter'; import { bold, yellow } from 'kleur/colors'; import type { MdxjsEsm } from 'mdast-util-mdx'; +import type { PluggableList } from 'unified'; function appendForwardSlash(path: string) { return path.endsWith('/') ? path : path + '/'; @@ -75,8 +75,8 @@ export function jsToTreeNode( type: 'mdxjsEsm', value: '', data: { + // @ts-expect-error `parse` return types is incompatible but it should work in runtime estree: { - body: [], ...parse(jsString, acornOpts), type: 'Program', sourceType: 'module', diff --git a/packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/pages/glob.json.js b/packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/pages/glob.json.js index b73cd234d75d..63248dc56f88 100644 --- a/packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/pages/glob.json.js +++ b/packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/pages/glob.json.js @@ -1,6 +1,6 @@ -export async function get() { +export async function GET() { const docs = await import.meta.glob('./*.mdx', { eager: true }); - return { - body: JSON.stringify(Object.values(docs).map(doc => doc.frontmatter)), - } + return new Response( + JSON.stringify(Object.values(docs).map(doc => doc.frontmatter)) + ); } diff --git a/packages/integrations/mdx/test/fixtures/mdx-frontmatter/src/pages/glob.json.js b/packages/integrations/mdx/test/fixtures/mdx-frontmatter/src/pages/glob.json.js index a1d6a4ac42dd..d82d9f770517 100644 --- a/packages/integrations/mdx/test/fixtures/mdx-frontmatter/src/pages/glob.json.js +++ b/packages/integrations/mdx/test/fixtures/mdx-frontmatter/src/pages/glob.json.js @@ -1,9 +1,6 @@ -export async function get() { +export async function GET() { const mdxPages = await import.meta.glob('./*.mdx', { eager: true }); - - return { - body: JSON.stringify({ - titles: Object.values(mdxPages ?? {}).map(v => v?.frontmatter?.title), - }) - } + return Response.json({ + titles: Object.values(mdxPages ?? {}).map((v) => v?.frontmatter?.title), + }); } diff --git a/packages/integrations/mdx/test/fixtures/mdx-get-headings/src/pages/pages.json.js b/packages/integrations/mdx/test/fixtures/mdx-get-headings/src/pages/pages.json.js index 940e5c141c38..e57192c6151d 100644 --- a/packages/integrations/mdx/test/fixtures/mdx-get-headings/src/pages/pages.json.js +++ b/packages/integrations/mdx/test/fixtures/mdx-get-headings/src/pages/pages.json.js @@ -1,11 +1,8 @@ -export async function get() { +export async function GET() { const mdxPages = await import.meta.glob('./*.mdx', { eager: true }); - - return { - body: JSON.stringify({ - headingsByPage: Object.fromEntries( - Object.entries(mdxPages ?? {}).map(([k, v]) => [k, v?.getHeadings()]) - ), - }), - } + return Response.json({ + headingsByPage: Object.fromEntries( + Object.entries(mdxPages ?? {}).map(([k, v]) => [k, v?.getHeadings()]) + ), + }); } diff --git a/packages/integrations/mdx/test/fixtures/mdx-infinite-loop/package.json b/packages/integrations/mdx/test/fixtures/mdx-infinite-loop/package.json index d2fb7a75d0f5..a00e19d5b220 100644 --- a/packages/integrations/mdx/test/fixtures/mdx-infinite-loop/package.json +++ b/packages/integrations/mdx/test/fixtures/mdx-infinite-loop/package.json @@ -6,6 +6,6 @@ "@astrojs/mdx": "workspace:*", "@astrojs/preact": "workspace:*", "astro": "workspace:*", - "preact": "^10.17.1" + "preact": "^10.19.2" } } diff --git a/packages/integrations/mdx/test/fixtures/mdx-url-export/src/pages/pages.json.js b/packages/integrations/mdx/test/fixtures/mdx-url-export/src/pages/pages.json.js index 36b6f7af69aa..02cff64a8af1 100644 --- a/packages/integrations/mdx/test/fixtures/mdx-url-export/src/pages/pages.json.js +++ b/packages/integrations/mdx/test/fixtures/mdx-url-export/src/pages/pages.json.js @@ -1,9 +1,6 @@ -export async function get() { +export async function GET() { const mdxPages = await import.meta.glob('./*.mdx', { eager: true }); - - return { - body: JSON.stringify({ - urls: Object.values(mdxPages ?? {}).map(v => v?.url), - }) - } + return Response.json({ + urls: Object.values(mdxPages ?? {}).map((v) => v?.url), + }); } diff --git a/packages/integrations/mdx/test/fixtures/mdx-vite-env-vars/src/pages/frontmatter.json.js b/packages/integrations/mdx/test/fixtures/mdx-vite-env-vars/src/pages/frontmatter.json.js index ce3cf81e5cf8..152285b9cf94 100644 --- a/packages/integrations/mdx/test/fixtures/mdx-vite-env-vars/src/pages/frontmatter.json.js +++ b/packages/integrations/mdx/test/fixtures/mdx-vite-env-vars/src/pages/frontmatter.json.js @@ -1,7 +1,5 @@ import { frontmatter } from './vite-env-vars.mdx'; -export function get() { - return { - body: JSON.stringify(frontmatter), - } +export function GET() { + return Response.json(frontmatter); } diff --git a/packages/integrations/mdx/test/mdx-astro-markdown-remarkRehype.test.js b/packages/integrations/mdx/test/mdx-astro-markdown-remarkRehype.test.js index ddcce4ba5976..eab2c61b089c 100644 --- a/packages/integrations/mdx/test/mdx-astro-markdown-remarkRehype.test.js +++ b/packages/integrations/mdx/test/mdx-astro-markdown-remarkRehype.test.js @@ -79,7 +79,7 @@ describe('MDX with Astro Markdown remark-rehype config', () => { expect(document.querySelector('#footnote-label').textContent).to.equal('Catatan kaki'); expect(document.querySelector('.data-footnote-backref').getAttribute('aria-label')).to.equal( - 'Back to content' + 'Back to reference 1' ); }); }); diff --git a/packages/integrations/mdx/test/mdx-math.test.js b/packages/integrations/mdx/test/mdx-math.test.js index f39ea42c8399..52ee94a46919 100644 --- a/packages/integrations/mdx/test/mdx-math.test.js +++ b/packages/integrations/mdx/test/mdx-math.test.js @@ -4,7 +4,7 @@ import { parseHTML } from 'linkedom'; import { loadFixture } from '../../../astro/test/test-utils.js'; import remarkMath from 'remark-math'; import rehypeMathjaxSvg from 'rehype-mathjax'; -import rehypeMathjaxChtml from 'rehype-mathjax/chtml.js'; +import rehypeMathjaxChtml from 'rehype-mathjax/chtml'; const FIXTURE_ROOT = new URL('./fixtures/mdx-math/', import.meta.url); diff --git a/packages/integrations/mdx/test/mdx-slots.js b/packages/integrations/mdx/test/mdx-slots.test.js similarity index 100% rename from packages/integrations/mdx/test/mdx-slots.js rename to packages/integrations/mdx/test/mdx-slots.test.js diff --git a/packages/integrations/node/CHANGELOG.md b/packages/integrations/node/CHANGELOG.md index 8ef4b80ac473..87a115fcd71c 100644 --- a/packages/integrations/node/CHANGELOG.md +++ b/packages/integrations/node/CHANGELOG.md @@ -1,5 +1,12 @@ # @astrojs/node +## 7.0.0-beta.0 + +### Patch Changes + +- Updated dependencies [[`abf601233`](https://github.com/withastro/astro/commit/abf601233f8188d118a8cb063c777478d8d9f1a3), [`6201bbe96`](https://github.com/withastro/astro/commit/6201bbe96c2a083fb201e4a43a9bd88499821a3e), [`cdabf6ef0`](https://github.com/withastro/astro/commit/cdabf6ef02be7220fd2b6bdcef924ceca089381e), [`1c48ed286`](https://github.com/withastro/astro/commit/1c48ed286538ab9e354eca4e4dcd7c6385c96721), [`37697a2c5`](https://github.com/withastro/astro/commit/37697a2c5511572dc29c0a4ea46f90c2f62be8e6), [`bd0c2e9ae`](https://github.com/withastro/astro/commit/bd0c2e9ae3389a9d3085050c1e8134ae98dff299), [`0fe3a7ed5`](https://github.com/withastro/astro/commit/0fe3a7ed5d7bb1a9fce1623e84ba14104b51223c), [`710be505c`](https://github.com/withastro/astro/commit/710be505c9ddf416e77a75343d8cae9c497d72c6), [`153a5abb9`](https://github.com/withastro/astro/commit/153a5abb905042ac68b712514dc9ec387d3e6b17)]: + - astro@4.0.0-beta.0 + ## 6.0.4 ### Patch Changes diff --git a/packages/integrations/node/package.json b/packages/integrations/node/package.json index b50b3e1757f0..babc33a8a6ca 100644 --- a/packages/integrations/node/package.json +++ b/packages/integrations/node/package.json @@ -1,7 +1,7 @@ { "name": "@astrojs/node", "description": "Deploy your site to a Node.js server", - "version": "6.0.4", + "version": "7.0.0-beta.0", "type": "module", "types": "./dist/index.d.ts", "author": "withastro", @@ -37,12 +37,12 @@ "server-destroy": "^1.0.1" }, "peerDependencies": { - "astro": "^3.0.0" + "astro": "^4.0.0-beta.0" }, "devDependencies": { "@types/node": "^18.17.8", - "@types/send": "^0.17.1", - "@types/server-destroy": "^1.0.1", + "@types/send": "^0.17.4", + "@types/server-destroy": "^1.0.3", "astro": "workspace:*", "astro-scripts": "workspace:*", "chai": "^4.3.7", diff --git a/packages/integrations/node/src/createOutgoingHttpHeaders.ts b/packages/integrations/node/src/createOutgoingHttpHeaders.ts index 781a74de6e90..44bbf81ca993 100644 --- a/packages/integrations/node/src/createOutgoingHttpHeaders.ts +++ b/packages/integrations/node/src/createOutgoingHttpHeaders.ts @@ -23,8 +23,7 @@ export const createOutgoingHttpHeaders = ( // if there is > 1 set-cookie header, we have to fix it to be an array of values if (headers.has('set-cookie')) { - // @ts-expect-error - const cookieHeaders = headers.getSetCookie() as string[]; + const cookieHeaders = headers.getSetCookie(); if (cookieHeaders.length > 1) { // the Headers.entries() API already normalized all header names to lower case so we can safely index this as 'set-cookie' nodeHeaders['set-cookie'] = cookieHeaders; diff --git a/packages/integrations/node/src/nodeMiddleware.ts b/packages/integrations/node/src/nodeMiddleware.ts index 4fd0a4bc23f5..0b9381f1d0a2 100644 --- a/packages/integrations/node/src/nodeMiddleware.ts +++ b/packages/integrations/node/src/nodeMiddleware.ts @@ -30,10 +30,10 @@ export default function (app: NodeApp, mode: Options['mode']) { } try { - const route = app.match(req); - if (route) { + const routeData = app.match(req); + if (routeData) { try { - const response = await app.render(req, route, locals); + const response = await app.render(req, { routeData, locals }); await writeWebResponse(app, res, response); } catch (err: unknown) { if (next) { diff --git a/packages/integrations/node/test/bad-urls.test.js b/packages/integrations/node/test/bad-urls.test.js index de7484b808e1..894729e3679b 100644 --- a/packages/integrations/node/test/bad-urls.test.js +++ b/packages/integrations/node/test/bad-urls.test.js @@ -2,7 +2,7 @@ import { expect } from 'chai'; import nodejs from '../dist/index.js'; import { loadFixture } from './test-utils.js'; -describe('API routes', () => { +describe('Bad URLs', () => { /** @type {import('./test-utils').Fixture} */ let fixture; let devPreview; diff --git a/packages/integrations/node/test/fixtures/node-middleware/src/pages/ssr.ts b/packages/integrations/node/test/fixtures/node-middleware/src/pages/ssr.ts index 93543190f1e2..423db341a46e 100644 --- a/packages/integrations/node/test/fixtures/node-middleware/src/pages/ssr.ts +++ b/packages/integrations/node/test/fixtures/node-middleware/src/pages/ssr.ts @@ -1,9 +1,7 @@ -export async function get() { +export async function GET() { let number = Math.random(); - return { - body: JSON.stringify({ - number, - message: `Here's a random number: ${number}`, - }), - }; + return Response.json({ + number, + message: `Here's a random number: ${number}`, + }); } diff --git a/packages/integrations/node/test/headers.test.js.js b/packages/integrations/node/test/headers.test.js similarity index 100% rename from packages/integrations/node/test/headers.test.js.js rename to packages/integrations/node/test/headers.test.js diff --git a/packages/integrations/preact/package.json b/packages/integrations/preact/package.json index 29a10439aa66..84043fb762a7 100644 --- a/packages/integrations/preact/package.json +++ b/packages/integrations/preact/package.json @@ -37,15 +37,15 @@ "dependencies": { "@babel/plugin-transform-react-jsx": "^7.22.5", "@babel/plugin-transform-react-jsx-development": "^7.22.5", - "@preact/preset-vite": "^2.5.0", + "@preact/preset-vite": "^2.7.0", "@preact/signals": "^1.2.1", "babel-plugin-transform-hook-names": "^1.0.2", - "preact-render-to-string": "^6.2.1" + "preact-render-to-string": "^6.3.1" }, "devDependencies": { "astro": "workspace:*", "astro-scripts": "workspace:*", - "preact": "^10.17.1" + "preact": "^10.19.2" }, "peerDependencies": { "preact": "^10.6.5" diff --git a/packages/integrations/prefetch/package.json b/packages/integrations/prefetch/package.json index da199b43a5b9..3291eb1a7cea 100644 --- a/packages/integrations/prefetch/package.json +++ b/packages/integrations/prefetch/package.json @@ -34,7 +34,7 @@ "test:match": "playwright test -g" }, "devDependencies": { - "@playwright/test": "^1.37.1", + "@playwright/test": "^1.40.0", "astro": "workspace:*", "astro-scripts": "workspace:*" }, diff --git a/packages/integrations/react/CHANGELOG.md b/packages/integrations/react/CHANGELOG.md index 5b127b75337e..7dcf8dc2a027 100644 --- a/packages/integrations/react/CHANGELOG.md +++ b/packages/integrations/react/CHANGELOG.md @@ -1,5 +1,17 @@ # @astrojs/react +## 3.0.7-beta.0 + +### Patch Changes + +- [#9122](https://github.com/withastro/astro/pull/9122) [`1c48ed286`](https://github.com/withastro/astro/commit/1c48ed286538ab9e354eca4e4dcd7c6385c96721) Thanks [@bluwy](https://github.com/bluwy)! - Adds Vite 5 support. There are no breaking changes from Astro. Check the [Vite migration guide](https://vitejs.dev/guide/migration.html) for details of the breaking changes from Vite instead. + +## 3.0.6 + +### Patch Changes + +- [#9141](https://github.com/withastro/astro/pull/9141) [`af43fb517`](https://github.com/withastro/astro/commit/af43fb51726fa2242cec03cb019fa4fa4a4403ef) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where slotting self-closing elements (img, br, hr) into react components with `experimentalReactChildren` enabled led to an error. + ## 3.0.5 ### Patch Changes diff --git a/packages/integrations/react/package.json b/packages/integrations/react/package.json index 21e86e8118de..0721d37f3208 100644 --- a/packages/integrations/react/package.json +++ b/packages/integrations/react/package.json @@ -1,7 +1,7 @@ { "name": "@astrojs/react", "description": "Use React components within Astro", - "version": "3.0.5", + "version": "3.0.7-beta.0", "type": "module", "types": "./dist/index.d.ts", "author": "withastro", @@ -42,22 +42,24 @@ "scripts": { "build": "astro-scripts build \"src/**/*.ts\" && tsc", "build:ci": "astro-scripts build \"src/**/*.ts\"", - "dev": "astro-scripts dev \"src/**/*.ts\"" + "dev": "astro-scripts dev \"src/**/*.ts\"", + "test": "mocha --exit --timeout 20000" }, "dependencies": { "@vitejs/plugin-react": "^4.2.0", "ultrahtml": "^1.3.0" }, "devDependencies": { - "@types/react": "^18.2.21", - "@types/react-dom": "^18.2.7", + "@types/react": "^18.2.37", + "@types/react-dom": "^18.2.15", "astro": "workspace:*", "astro-scripts": "workspace:*", "chai": "^4.3.7", "cheerio": "1.0.0-rc.12", "react": "^18.1.0", "react-dom": "^18.1.0", - "vite": "^5.0.0" + "vite": "^5.0.0", + "mocha": "^10.2.0" }, "peerDependencies": { "@types/react": "^17.0.50 || ^18.0.21", diff --git a/packages/integrations/react/test/fixtures/react-component/package.json b/packages/integrations/react/test/fixtures/react-component/package.json index cf7b2b057fce..e7b7ac5d9b5c 100644 --- a/packages/integrations/react/test/fixtures/react-component/package.json +++ b/packages/integrations/react/test/fixtures/react-component/package.json @@ -8,6 +8,6 @@ "astro": "workspace:*", "react": "^18.1.0", "react-dom": "^18.1.0", - "vue": "^3.3.4" + "vue": "^3.3.8" } } diff --git a/packages/integrations/react/test/parsed-react-children.test.js b/packages/integrations/react/test/parsed-react-children.test.js new file mode 100644 index 000000000000..1c845836f37f --- /dev/null +++ b/packages/integrations/react/test/parsed-react-children.test.js @@ -0,0 +1,15 @@ +import { expect } from 'chai'; +import convert from '../vnode-children.js'; + +describe('experimental react children', () => { + it('has undefined as children for direct children', () => { + const [imgVNode] = convert(''); + expect(imgVNode.props).to.deep.include({ children: undefined }); + }); + + it('has undefined as children for nested children', () => { + const [divVNode] = convert('
'); + const [imgVNode] = divVNode.props.children; + expect(imgVNode.props).to.deep.include({ children: undefined }); + }); +}); diff --git a/packages/integrations/react/vnode-children.js b/packages/integrations/react/vnode-children.js index cc8ec351090c..0b26ef4239af 100644 --- a/packages/integrations/react/vnode-children.js +++ b/packages/integrations/react/vnode-children.js @@ -8,24 +8,19 @@ export default function convert(children) { let key = 0; function createReactElementFromNode(node) { - const childVnodes = Array.isArray(node.children) - ? node.children - .map((child) => { - if (child.type === ELEMENT_NODE) { - return createReactElementFromNode(child); - } else if (child.type === TEXT_NODE) { - // 0-length text gets omitted in JSX - return child.value.trim() ? child.value : undefined; - } - }) - .filter((n) => !!n) - : undefined; + const childVnodes = + Array.isArray(node.children) && node.children.length + ? node.children.map((child) => createReactElementFromNode(child)).filter(Boolean) + : undefined; if (node.type === DOCUMENT_NODE) { return createElement(Fragment, {}, childVnodes); } else if (node.type === ELEMENT_NODE) { const { class: className, ...props } = node.attributes; return createElement(node.name, { ...props, className, key: `${id}-${key++}` }, childVnodes); + } else if (node.type === TEXT_NODE) { + // 0-length text gets omitted in JSX + return node.value.trim() ? node.value : undefined; } } diff --git a/packages/integrations/sitemap/test/fixtures/static/src/pages/endpoint.json.ts b/packages/integrations/sitemap/test/fixtures/static/src/pages/endpoint.json.ts index 8f9fa2c90c10..4b848f3398d3 100644 --- a/packages/integrations/sitemap/test/fixtures/static/src/pages/endpoint.json.ts +++ b/packages/integrations/sitemap/test/fixtures/static/src/pages/endpoint.json.ts @@ -1,4 +1,4 @@ -export async function get({}) { +export async function GET({}) { return { body: JSON.stringify({ name: 'Astro', diff --git a/packages/integrations/solid/package.json b/packages/integrations/solid/package.json index 7e3fcd11b267..407d5d870625 100644 --- a/packages/integrations/solid/package.json +++ b/packages/integrations/solid/package.json @@ -40,7 +40,7 @@ "devDependencies": { "astro": "workspace:*", "astro-scripts": "workspace:*", - "solid-js": "^1.7.11" + "solid-js": "^1.8.5" }, "peerDependencies": { "solid-js": "^1.4.3" diff --git a/packages/integrations/svelte/CHANGELOG.md b/packages/integrations/svelte/CHANGELOG.md index 2681a45c0461..e9ce0c2ed8ec 100644 --- a/packages/integrations/svelte/CHANGELOG.md +++ b/packages/integrations/svelte/CHANGELOG.md @@ -1,5 +1,18 @@ # @astrojs/svelte +## 5.0.0-beta.0 + +### Major Changes + +- [#9122](https://github.com/withastro/astro/pull/9122) [`1c48ed286`](https://github.com/withastro/astro/commit/1c48ed286538ab9e354eca4e4dcd7c6385c96721) Thanks [@bluwy](https://github.com/bluwy)! - Adds Vite 5 support. There are no breaking changes from Astro. Check the [Vite migration guide](https://vitejs.dev/guide/migration.html) for details of the breaking changes from Vite instead. + +- [#9122](https://github.com/withastro/astro/pull/9122) [`1c48ed286`](https://github.com/withastro/astro/commit/1c48ed286538ab9e354eca4e4dcd7c6385c96721) Thanks [@bluwy](https://github.com/bluwy)! - Drops support for Svelte 3 as `@sveltejs/vite-plugin-svelte` is updated to `3.0.0` which does not support Svelte 3 + +### Patch Changes + +- Updated dependencies [[`abf601233`](https://github.com/withastro/astro/commit/abf601233f8188d118a8cb063c777478d8d9f1a3), [`6201bbe96`](https://github.com/withastro/astro/commit/6201bbe96c2a083fb201e4a43a9bd88499821a3e), [`cdabf6ef0`](https://github.com/withastro/astro/commit/cdabf6ef02be7220fd2b6bdcef924ceca089381e), [`1c48ed286`](https://github.com/withastro/astro/commit/1c48ed286538ab9e354eca4e4dcd7c6385c96721), [`37697a2c5`](https://github.com/withastro/astro/commit/37697a2c5511572dc29c0a4ea46f90c2f62be8e6), [`bd0c2e9ae`](https://github.com/withastro/astro/commit/bd0c2e9ae3389a9d3085050c1e8134ae98dff299), [`0fe3a7ed5`](https://github.com/withastro/astro/commit/0fe3a7ed5d7bb1a9fce1623e84ba14104b51223c), [`710be505c`](https://github.com/withastro/astro/commit/710be505c9ddf416e77a75343d8cae9c497d72c6), [`153a5abb9`](https://github.com/withastro/astro/commit/153a5abb905042ac68b712514dc9ec387d3e6b17)]: + - astro@4.0.0-beta.0 + ## 4.0.4 ### Patch Changes diff --git a/packages/integrations/svelte/package.json b/packages/integrations/svelte/package.json index a29a87ffb525..9694acab64fe 100644 --- a/packages/integrations/svelte/package.json +++ b/packages/integrations/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@astrojs/svelte", - "version": "4.0.4", + "version": "5.0.0-beta.0", "description": "Use Svelte components within Astro", "type": "module", "types": "./dist/index.d.ts", @@ -43,16 +43,16 @@ }, "dependencies": { "@sveltejs/vite-plugin-svelte": "^3.0.0", - "svelte2tsx": "^0.6.20" + "svelte2tsx": "^0.6.25" }, "devDependencies": { "astro": "workspace:*", "astro-scripts": "workspace:*", - "svelte": "^4.2.0", + "svelte": "^4.2.5", "vite": "^5.0.0" }, "peerDependencies": { - "astro": "^3.0.0", + "astro": "^4.0.0-beta.0", "svelte": "^4.0.0 || ^5.0.0-next.1" }, "engines": { diff --git a/packages/integrations/tailwind/CHANGELOG.md b/packages/integrations/tailwind/CHANGELOG.md index 5810ea59b010..10b062b35057 100644 --- a/packages/integrations/tailwind/CHANGELOG.md +++ b/packages/integrations/tailwind/CHANGELOG.md @@ -1,5 +1,12 @@ # @astrojs/tailwind +## 6.0.0-beta.0 + +### Patch Changes + +- Updated dependencies [[`abf601233`](https://github.com/withastro/astro/commit/abf601233f8188d118a8cb063c777478d8d9f1a3), [`6201bbe96`](https://github.com/withastro/astro/commit/6201bbe96c2a083fb201e4a43a9bd88499821a3e), [`cdabf6ef0`](https://github.com/withastro/astro/commit/cdabf6ef02be7220fd2b6bdcef924ceca089381e), [`1c48ed286`](https://github.com/withastro/astro/commit/1c48ed286538ab9e354eca4e4dcd7c6385c96721), [`37697a2c5`](https://github.com/withastro/astro/commit/37697a2c5511572dc29c0a4ea46f90c2f62be8e6), [`bd0c2e9ae`](https://github.com/withastro/astro/commit/bd0c2e9ae3389a9d3085050c1e8134ae98dff299), [`0fe3a7ed5`](https://github.com/withastro/astro/commit/0fe3a7ed5d7bb1a9fce1623e84ba14104b51223c), [`710be505c`](https://github.com/withastro/astro/commit/710be505c9ddf416e77a75343d8cae9c497d72c6), [`153a5abb9`](https://github.com/withastro/astro/commit/153a5abb905042ac68b712514dc9ec387d3e6b17)]: + - astro@4.0.0-beta.0 + ## 5.0.2 ### Patch Changes diff --git a/packages/integrations/tailwind/package.json b/packages/integrations/tailwind/package.json index 02b3a5069599..de681aac0d4f 100644 --- a/packages/integrations/tailwind/package.json +++ b/packages/integrations/tailwind/package.json @@ -1,7 +1,7 @@ { "name": "@astrojs/tailwind", "description": "Use Tailwind CSS to style your Astro site", - "version": "5.0.2", + "version": "6.0.0-beta.0", "type": "module", "types": "./dist/index.d.ts", "author": "withastro", @@ -34,16 +34,16 @@ "dependencies": { "autoprefixer": "^10.4.15", "postcss": "^8.4.28", - "postcss-load-config": "^4.0.1" + "postcss-load-config": "^4.0.2" }, "devDependencies": { "astro": "workspace:*", "astro-scripts": "workspace:*", - "tailwindcss": "^3.3.3", + "tailwindcss": "^3.3.5", "vite": "^5.0.0" }, "peerDependencies": { - "astro": "^3.0.0", + "astro": "^4.0.0-beta.0", "tailwindcss": "^3.0.24" }, "publishConfig": { diff --git a/packages/integrations/tailwind/src/index.ts b/packages/integrations/tailwind/src/index.ts index daee5f857bcb..f0cb5feb4f4e 100644 --- a/packages/integrations/tailwind/src/index.ts +++ b/packages/integrations/tailwind/src/index.ts @@ -33,8 +33,7 @@ async function getViteConfiguration( const postcssOptions = postcssConfigResult?.options ?? {}; const postcssPlugins = postcssConfigResult?.plugins?.slice() ?? []; - // @ts-expect-error Tailwind plugin types are wrong - postcssPlugins.push(tailwindPlugin(tailwindConfigPath) as ResultPlugin); + postcssPlugins.push(tailwindPlugin(tailwindConfigPath)); postcssPlugins.push(autoprefixerPlugin()); return { diff --git a/packages/integrations/vercel/CHANGELOG.md b/packages/integrations/vercel/CHANGELOG.md index 26d26539350a..6d26f2c11ea5 100644 --- a/packages/integrations/vercel/CHANGELOG.md +++ b/packages/integrations/vercel/CHANGELOG.md @@ -1,5 +1,16 @@ # @astrojs/vercel +## 6.0.0-beta.0 + +### Major Changes + +- [#9184](https://github.com/withastro/astro/pull/9184) [`a145ac07e`](https://github.com/withastro/astro/commit/a145ac07e75927e13af62e28d13bc8217a362b8e) Thanks [@bluwy](https://github.com/bluwy)! - Removes deprecated `analytics` option. Use the `webAnalytics` option instead. + +### Patch Changes + +- Updated dependencies [[`abf601233`](https://github.com/withastro/astro/commit/abf601233f8188d118a8cb063c777478d8d9f1a3), [`6201bbe96`](https://github.com/withastro/astro/commit/6201bbe96c2a083fb201e4a43a9bd88499821a3e), [`cdabf6ef0`](https://github.com/withastro/astro/commit/cdabf6ef02be7220fd2b6bdcef924ceca089381e), [`1c48ed286`](https://github.com/withastro/astro/commit/1c48ed286538ab9e354eca4e4dcd7c6385c96721), [`37697a2c5`](https://github.com/withastro/astro/commit/37697a2c5511572dc29c0a4ea46f90c2f62be8e6), [`bd0c2e9ae`](https://github.com/withastro/astro/commit/bd0c2e9ae3389a9d3085050c1e8134ae98dff299), [`0fe3a7ed5`](https://github.com/withastro/astro/commit/0fe3a7ed5d7bb1a9fce1623e84ba14104b51223c), [`710be505c`](https://github.com/withastro/astro/commit/710be505c9ddf416e77a75343d8cae9c497d72c6), [`153a5abb9`](https://github.com/withastro/astro/commit/153a5abb905042ac68b712514dc9ec387d3e6b17)]: + - astro@4.0.0-beta.0 + ## 5.2.0 ### Minor Changes diff --git a/packages/integrations/vercel/package.json b/packages/integrations/vercel/package.json index dc9433c5a64d..c398bee2576d 100644 --- a/packages/integrations/vercel/package.json +++ b/packages/integrations/vercel/package.json @@ -1,7 +1,7 @@ { "name": "@astrojs/vercel", "description": "Deploy your site to Vercel", - "version": "5.2.0", + "version": "6.0.0-beta.0", "type": "module", "author": "withastro", "license": "MIT", @@ -54,18 +54,18 @@ "dependencies": { "@astrojs/internal-helpers": "workspace:*", "@vercel/analytics": "^1.0.2", - "@vercel/nft": "^0.23.1", - "esbuild": "^0.19.2", - "fast-glob": "^3.3.1", + "@vercel/nft": "^0.24.3", + "esbuild": "^0.19.6", + "fast-glob": "^3.3.2", "set-cookie-parser": "^2.6.0", "web-vitals": "^3.4.0" }, "peerDependencies": { - "astro": "^3.0.0" + "astro": "^4.0.0-beta.0" }, "devDependencies": { - "@types/set-cookie-parser": "^2.4.3", - "@vercel/edge": "^1.0.0", + "@types/set-cookie-parser": "^2.4.6", + "@vercel/edge": "^1.1.1", "astro": "workspace:*", "astro-scripts": "workspace:*", "chai": "^4.3.7", diff --git a/packages/integrations/vercel/src/serverless/adapter.ts b/packages/integrations/vercel/src/serverless/adapter.ts index 621849688ff3..ef2552cc173f 100644 --- a/packages/integrations/vercel/src/serverless/adapter.ts +++ b/packages/integrations/vercel/src/serverless/adapter.ts @@ -71,11 +71,6 @@ function getAdapter({ } export interface VercelServerlessConfig { - /** - * @deprecated - */ - analytics?: boolean; - /** Configuration for [Vercel Web Analytics](https://vercel.com/docs/concepts/analytics). */ webAnalytics?: VercelWebAnalyticsConfig; @@ -108,7 +103,6 @@ export interface VercelServerlessConfig { } export default function vercelServerless({ - analytics, webAnalytics, speedInsights, includeFiles, @@ -151,13 +145,7 @@ export default function vercelServerless({ ); } - if (webAnalytics?.enabled || analytics) { - if (analytics) { - logger.warn( - `The \`analytics\` property is deprecated. Please use the new \`webAnalytics\` and \`speedInsights\` properties instead.` - ); - } - + if (webAnalytics?.enabled) { injectScript( 'head-inline', await getInjectableWebAnalyticsContent({ @@ -165,7 +153,7 @@ export default function vercelServerless({ }) ); } - if (command === 'build' && (speedInsights?.enabled || analytics)) { + if (command === 'build' && speedInsights?.enabled) { injectScript('page', 'import "@astrojs/vercel/speed-insights"'); } const outDir = getVercelOutput(config.root); @@ -178,7 +166,7 @@ export default function vercelServerless({ redirects: false, }, vite: { - ...getSpeedInsightsViteConfig(speedInsights?.enabled || analytics), + ...getSpeedInsightsViteConfig(speedInsights?.enabled), ssr: { external: ['@vercel/nft'], }, diff --git a/packages/integrations/vercel/src/serverless/entrypoint.ts b/packages/integrations/vercel/src/serverless/entrypoint.ts index 7b548dc37bfa..513c34640af6 100644 --- a/packages/integrations/vercel/src/serverless/entrypoint.ts +++ b/packages/integrations/vercel/src/serverless/entrypoint.ts @@ -29,7 +29,7 @@ export const createExports = (manifest: SSRManifest) => { locals = JSON.parse(localsAsString); } } - await setResponse(app, res, await app.render(request, routeData, locals)); + await setResponse(app, res, await app.render(request, { routeData, locals })); }; return { default: handler }; diff --git a/packages/integrations/vercel/src/static/adapter.ts b/packages/integrations/vercel/src/static/adapter.ts index df2995c372ad..80b42b95d267 100644 --- a/packages/integrations/vercel/src/static/adapter.ts +++ b/packages/integrations/vercel/src/static/adapter.ts @@ -41,10 +41,6 @@ function getAdapter(): AstroAdapter { } export interface VercelStaticConfig { - /** - * @deprecated - */ - analytics?: boolean; webAnalytics?: VercelWebAnalyticsConfig; speedInsights?: VercelSpeedInsightsConfig; imageService?: boolean; @@ -53,7 +49,6 @@ export interface VercelStaticConfig { } export default function vercelStatic({ - analytics, webAnalytics, speedInsights, imageService, @@ -65,14 +60,8 @@ export default function vercelStatic({ return { name: '@astrojs/vercel', hooks: { - 'astro:config:setup': async ({ command, config, injectScript, updateConfig, logger }) => { - if (webAnalytics?.enabled || analytics) { - if (analytics) { - logger.warn( - `The \`analytics\` property is deprecated. Please use the new \`webAnalytics\` and \`speedInsights\` properties instead.` - ); - } - + 'astro:config:setup': async ({ command, config, injectScript, updateConfig }) => { + if (webAnalytics?.enabled) { injectScript( 'head-inline', await getInjectableWebAnalyticsContent({ @@ -80,7 +69,7 @@ export default function vercelStatic({ }) ); } - if (command === 'build' && (speedInsights?.enabled || analytics)) { + if (command === 'build' && speedInsights?.enabled) { injectScript('page', 'import "@astrojs/vercel/speed-insights"'); } const outDir = new URL('./static/', getVercelOutput(config.root)); @@ -91,7 +80,7 @@ export default function vercelStatic({ redirects: false, }, vite: { - ...getSpeedInsightsViteConfig(speedInsights?.enabled || analytics), + ...getSpeedInsightsViteConfig(speedInsights?.enabled), }, ...getAstroImageConfig( imageService, diff --git a/packages/integrations/vue/CHANGELOG.md b/packages/integrations/vue/CHANGELOG.md index fc54ae2ea9d3..3199fdccb16e 100644 --- a/packages/integrations/vue/CHANGELOG.md +++ b/packages/integrations/vue/CHANGELOG.md @@ -1,5 +1,14 @@ # @astrojs/vue +## 4.0.0-beta.0 + +### Patch Changes + +- [#9122](https://github.com/withastro/astro/pull/9122) [`1c48ed286`](https://github.com/withastro/astro/commit/1c48ed286538ab9e354eca4e4dcd7c6385c96721) Thanks [@bluwy](https://github.com/bluwy)! - Adds Vite 5 support. There are no breaking changes from Astro. Check the [Vite migration guide](https://vitejs.dev/guide/migration.html) for details of the breaking changes from Vite instead. + +- Updated dependencies [[`abf601233`](https://github.com/withastro/astro/commit/abf601233f8188d118a8cb063c777478d8d9f1a3), [`6201bbe96`](https://github.com/withastro/astro/commit/6201bbe96c2a083fb201e4a43a9bd88499821a3e), [`cdabf6ef0`](https://github.com/withastro/astro/commit/cdabf6ef02be7220fd2b6bdcef924ceca089381e), [`1c48ed286`](https://github.com/withastro/astro/commit/1c48ed286538ab9e354eca4e4dcd7c6385c96721), [`37697a2c5`](https://github.com/withastro/astro/commit/37697a2c5511572dc29c0a4ea46f90c2f62be8e6), [`bd0c2e9ae`](https://github.com/withastro/astro/commit/bd0c2e9ae3389a9d3085050c1e8134ae98dff299), [`0fe3a7ed5`](https://github.com/withastro/astro/commit/0fe3a7ed5d7bb1a9fce1623e84ba14104b51223c), [`710be505c`](https://github.com/withastro/astro/commit/710be505c9ddf416e77a75343d8cae9c497d72c6), [`153a5abb9`](https://github.com/withastro/astro/commit/153a5abb905042ac68b712514dc9ec387d3e6b17)]: + - astro@4.0.0-beta.0 + ## 3.0.4 ### Patch Changes diff --git a/packages/integrations/vue/package.json b/packages/integrations/vue/package.json index df29f89182ba..f220d5bf90f6 100644 --- a/packages/integrations/vue/package.json +++ b/packages/integrations/vue/package.json @@ -1,6 +1,6 @@ { "name": "@astrojs/vue", - "version": "3.0.4", + "version": "4.0.0-beta.0", "description": "Use Vue components within Astro", "type": "module", "types": "./dist/index.d.ts", @@ -43,21 +43,21 @@ "@vitejs/plugin-vue": "^4.5.0", "@vitejs/plugin-vue-jsx": "^3.1.0", "@vue/babel-plugin-jsx": "^1.1.5", - "@vue/compiler-sfc": "^3.3.4" + "@vue/compiler-sfc": "^3.3.8" }, "devDependencies": { - "@types/chai": "^4.3.5", + "@types/chai": "^4.3.10", "astro": "workspace:*", "astro-scripts": "workspace:*", "chai": "^4.3.7", "cheerio": "1.0.0-rc.12", - "linkedom": "^0.15.1", + "linkedom": "^0.16.4", "mocha": "^10.2.0", "vite": "^5.0.0", - "vue": "^3.3.4" + "vue": "^3.3.8" }, "peerDependencies": { - "astro": "^3.0.0", + "astro": "^4.0.0-beta.0", "vue": "^3.2.30" }, "engines": { diff --git a/packages/integrations/vue/test/fixtures/app-entrypoint/package.json b/packages/integrations/vue/test/fixtures/app-entrypoint/package.json index abdab9e4cbf7..0795ba955af3 100644 --- a/packages/integrations/vue/test/fixtures/app-entrypoint/package.json +++ b/packages/integrations/vue/test/fixtures/app-entrypoint/package.json @@ -3,8 +3,8 @@ "version": "0.0.0", "private": true, "dependencies": { - "astro": "workspace:*", "@astrojs/vue": "workspace:*", - "vite-svg-loader": "4.0.0" + "astro": "workspace:*", + "vite-svg-loader": "5.0.1" } } \ No newline at end of file diff --git a/packages/markdown/remark/CHANGELOG.md b/packages/markdown/remark/CHANGELOG.md index 54510d68c426..b720f5b5f2c5 100644 --- a/packages/markdown/remark/CHANGELOG.md +++ b/packages/markdown/remark/CHANGELOG.md @@ -1,5 +1,22 @@ # @astrojs/markdown-remark +## 4.0.0-beta.0 + +### Major Changes + +- [#9138](https://github.com/withastro/astro/pull/9138) [`abf601233`](https://github.com/withastro/astro/commit/abf601233f8188d118a8cb063c777478d8d9f1a3) Thanks [@bluwy](https://github.com/bluwy)! - Updates the unified, remark, and rehype dependencies to latest. Make sure to update your custom remark and rehype plugins as well to be compatible with the latest versions. + + **Potentially breaking change:** The default value of `markdown.remarkRehype.footnoteBackLabel` is changed from `"Back to content"` to `"Back to reference 1"`. See the `mdast-util-to-hast` [commit](https://github.com/syntax-tree/mdast-util-to-hast/commit/56c88e45690be138fad9f0bf367b939d09816863) for more information. + +- [#9182](https://github.com/withastro/astro/pull/9182) [`c7953645e`](https://github.com/withastro/astro/commit/c7953645eeaaf9e87c6db4494b0023d2c1878ff0) Thanks [@bluwy](https://github.com/bluwy)! - Removes deprecated APIs. All Astro packages had been refactored to not use these APIs. + +### Patch Changes + +- [#9147](https://github.com/withastro/astro/pull/9147) [`addb57c8e`](https://github.com/withastro/astro/commit/addb57c8e80b7b67ec61224666f3a1db5c44410c) Thanks [@bluwy](https://github.com/bluwy)! - Fixes `RemarkRehype` type's `handler` and `handlers` properties + +- Updated dependencies [[`abf601233`](https://github.com/withastro/astro/commit/abf601233f8188d118a8cb063c777478d8d9f1a3), [`6201bbe96`](https://github.com/withastro/astro/commit/6201bbe96c2a083fb201e4a43a9bd88499821a3e), [`cdabf6ef0`](https://github.com/withastro/astro/commit/cdabf6ef02be7220fd2b6bdcef924ceca089381e), [`1c48ed286`](https://github.com/withastro/astro/commit/1c48ed286538ab9e354eca4e4dcd7c6385c96721), [`37697a2c5`](https://github.com/withastro/astro/commit/37697a2c5511572dc29c0a4ea46f90c2f62be8e6), [`bd0c2e9ae`](https://github.com/withastro/astro/commit/bd0c2e9ae3389a9d3085050c1e8134ae98dff299), [`0fe3a7ed5`](https://github.com/withastro/astro/commit/0fe3a7ed5d7bb1a9fce1623e84ba14104b51223c), [`710be505c`](https://github.com/withastro/astro/commit/710be505c9ddf416e77a75343d8cae9c497d72c6), [`153a5abb9`](https://github.com/withastro/astro/commit/153a5abb905042ac68b712514dc9ec387d3e6b17)]: + - astro@4.0.0-beta.0 + ## 3.5.0 ### Minor Changes diff --git a/packages/markdown/remark/package.json b/packages/markdown/remark/package.json index 9f248eb32fa2..15777e10be3a 100644 --- a/packages/markdown/remark/package.json +++ b/packages/markdown/remark/package.json @@ -1,6 +1,6 @@ { "name": "@astrojs/markdown-remark", - "version": "3.5.0", + "version": "4.0.0-beta.0", "type": "module", "author": "withastro", "license": "MIT", @@ -28,34 +28,34 @@ "test": "mocha --exit --timeout 20000" }, "peerDependencies": { - "astro": "^3.0.0" + "astro": "^4.0.0-beta.0" }, "dependencies": { "@astrojs/prism": "^3.0.0", "github-slugger": "^2.0.0", - "import-meta-resolve": "^3.0.0", + "import-meta-resolve": "^4.0.0", "mdast-util-definitions": "^6.0.0", - "rehype-raw": "^6.1.1", - "rehype-stringify": "^9.0.4", - "remark-gfm": "^3.0.1", - "remark-parse": "^10.0.2", - "remark-rehype": "^10.1.0", + "rehype-raw": "^7.0.0", + "rehype-stringify": "^10.0.0", + "remark-gfm": "^4.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", "remark-smartypants": "^2.0.0", - "shikiji": "^0.6.8", - "unified": "^10.1.2", - "unist-util-visit": "^4.1.2", - "vfile": "^5.3.7" + "shikiji": "^0.6.13", + "unified": "^11.0.4", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.1" }, "devDependencies": { - "@types/chai": "^4.3.5", - "@types/estree": "^1.0.1", - "@types/hast": "^2.3.5", - "@types/mdast": "^3.0.12", - "@types/mocha": "^10.0.1", - "@types/unist": "^2.0.7", + "@types/chai": "^4.3.10", + "@types/estree": "^1.0.5", + "@types/hast": "^3.0.3", + "@types/mdast": "^4.0.3", + "@types/mocha": "^10.0.4", + "@types/unist": "^3.0.2", "astro-scripts": "workspace:*", "chai": "^4.3.7", - "mdast-util-mdx-expression": "^1.3.2", + "mdast-util-mdx-expression": "^2.0.0", "mocha": "^10.2.0" }, "publishConfig": { diff --git a/packages/markdown/remark/src/frontmatter-injection.ts b/packages/markdown/remark/src/frontmatter-injection.ts index 4828873fd2c1..91b98ebcba63 100644 --- a/packages/markdown/remark/src/frontmatter-injection.ts +++ b/packages/markdown/remark/src/frontmatter-injection.ts @@ -32,19 +32,3 @@ export function setVfileFrontmatter(vfile: VFile, frontmatter: Record; -}) { - return () => - function (tree: any, vfile: VFile) { - if (!vfile.data.astro) { - vfile.data.astro = { frontmatter: userFrontmatter }; - } - }; -} diff --git a/packages/markdown/remark/src/index.ts b/packages/markdown/remark/src/index.ts index a60ab88c0ef5..14301584793c 100644 --- a/packages/markdown/remark/src/index.ts +++ b/packages/markdown/remark/src/index.ts @@ -1,10 +1,4 @@ -import type { - AstroMarkdownOptions, - MarkdownProcessor, - MarkdownRenderingOptions, - MarkdownRenderingResult, - MarkdownVFile, -} from './types.js'; +import type { AstroMarkdownOptions, MarkdownProcessor, MarkdownVFile } from './types.js'; import { InvalidAstroDataError, @@ -35,7 +29,7 @@ export { remarkShiki } from './remark-shiki.js'; export { createShikiHighlighter, replaceCssVariables, type ShikiHighlighter } from './shiki.js'; export * from './types.js'; -export const markdownConfigDefaults: Omit, 'drafts'> = { +export const markdownConfigDefaults: Required = { syntaxHighlight: 'shiki', shikiConfig: { langs: [], @@ -102,7 +96,7 @@ export async function createMarkdownProcessor( } // Remark -> Rehype - parser.use(remarkRehype as any, { + parser.use(remarkRehype, { allowDangerousHtml: true, passThrough: [], ...remarkRehypeOptions, @@ -150,42 +144,11 @@ export async function createMarkdownProcessor( imagePaths: result.data.imagePaths ?? new Set(), frontmatter: astroData.frontmatter ?? {}, }, - // Compat for `renderMarkdown` only. Do not use! - __renderMarkdownCompat: { - result, - }, }; }, }; } -/** - * Shared utility for rendering markdown - * - * @deprecated Use `createMarkdownProcessor` instead for better performance - */ -export async function renderMarkdown( - content: string, - opts: MarkdownRenderingOptions -): Promise { - const processor = await createMarkdownProcessor(opts); - - const result = await processor.render(content, { - fileURL: opts.fileURL, - frontmatter: opts.frontmatter, - }); - - return { - code: result.code, - metadata: { - headings: result.metadata.headings, - source: content, - html: result.code, - }, - vfile: (result as any).__renderMarkdownCompat.result, - }; -} - function prefixError(err: any, prefix: string) { // If the error is an object with a `message` property, attempt to prefix the message if (err?.message) { diff --git a/packages/markdown/remark/src/internal.ts b/packages/markdown/remark/src/internal.ts index 0ab7e34bb394..6201ef62f48b 100644 --- a/packages/markdown/remark/src/internal.ts +++ b/packages/markdown/remark/src/internal.ts @@ -1,5 +1 @@ -export { - InvalidAstroDataError, - safelyGetAstroData, - toRemarkInitializeAstroData, -} from './frontmatter-injection.js'; +export { InvalidAstroDataError, safelyGetAstroData } from './frontmatter-injection.js'; diff --git a/packages/markdown/remark/src/types.ts b/packages/markdown/remark/src/types.ts index 7038e2425353..ab5af8ed134b 100644 --- a/packages/markdown/remark/src/types.ts +++ b/packages/markdown/remark/src/types.ts @@ -1,10 +1,6 @@ import type * as hast from 'hast'; import type * as mdast from 'mdast'; -import type { - one as Handler, - all as Handlers, - Options as RemarkRehypeOptions, -} from 'remark-rehype'; +import type { Options as RemarkRehypeOptions } from 'remark-rehype'; import type { BuiltinTheme, LanguageRegistration, @@ -34,10 +30,7 @@ export type RehypePlugin = unified.Plugi export type RehypePlugins = (string | [string, any] | RehypePlugin | [RehypePlugin, any])[]; -export type RemarkRehype = Omit & { - handlers?: typeof Handlers; - handler?: typeof Handler; -}; +export type RemarkRehype = RemarkRehypeOptions; export interface ShikiConfig { langs?: LanguageRegistration[]; @@ -47,7 +40,6 @@ export interface ShikiConfig { } export interface AstroMarkdownOptions { - drafts?: boolean; syntaxHighlight?: 'shiki' | 'prism' | false; shikiConfig?: ShikiConfig; remarkPlugins?: RemarkPlugins; diff --git a/packages/telemetry/package.json b/packages/telemetry/package.json index 66edc3fba603..f7708ef8b81e 100644 --- a/packages/telemetry/package.json +++ b/packages/telemetry/package.json @@ -29,19 +29,19 @@ "dist" ], "dependencies": { - "ci-info": "^3.8.0", + "ci-info": "^4.0.0", "debug": "^4.3.4", "dlv": "^1.1.3", - "dset": "^3.1.2", + "dset": "^3.1.3", "is-docker": "^3.0.0", "is-wsl": "^3.0.0", "which-pm-runs": "^1.1.0" }, "devDependencies": { - "@types/debug": "^4.1.8", - "@types/dlv": "^1.1.2", + "@types/debug": "^4.1.12", + "@types/dlv": "^1.1.4", "@types/node": "^18.17.8", - "@types/which-pm-runs": "^1.0.0", + "@types/which-pm-runs": "^1.0.2", "astro-scripts": "workspace:*", "chai": "^4.3.7", "mocha": "^10.2.0" diff --git a/packages/telemetry/src/config.ts b/packages/telemetry/src/config.ts index 6efcb7fe5bdf..dee6c1d25ae5 100644 --- a/packages/telemetry/src/config.ts +++ b/packages/telemetry/src/config.ts @@ -1,5 +1,4 @@ import dget from 'dlv'; -// @ts-expect-error `dset` is mispackaged: https://publint.dev/dset@3.1.2 import { dset } from 'dset'; import fs from 'node:fs'; import os from 'node:os'; diff --git a/packages/underscore-redirects/package.json b/packages/underscore-redirects/package.json index 17daae1a8dd5..31606be682e0 100644 --- a/packages/underscore-redirects/package.json +++ b/packages/underscore-redirects/package.json @@ -28,8 +28,8 @@ "test": "mocha --exit --timeout 20000" }, "devDependencies": { - "@types/chai": "^4.3.5", - "@types/mocha": "^10.0.1", + "@types/chai": "^4.3.10", + "@types/mocha": "^10.0.4", "astro": "workspace:*", "astro-scripts": "workspace:*", "chai": "^4.3.7", diff --git a/packages/upgrade/CHANGELOG.md b/packages/upgrade/CHANGELOG.md new file mode 100644 index 000000000000..825420dad536 --- /dev/null +++ b/packages/upgrade/CHANGELOG.md @@ -0,0 +1,29 @@ +# @astrojs/upgrade + +## 0.1.0-beta.0 + +### Minor Changes + +- [#9118](https://github.com/withastro/astro/pull/9118) [`000e8f465`](https://github.com/withastro/astro/commit/000e8f4654cae9982e21e0a858366c4844139db6) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Initial release! + + `@astrojs/upgrade` is an automated command-line tool for upgrading Astro and your official Astro integrations together. + + Inside of your existing `astro` project, run the following command to install the `latest` version of your integrations. + + **With NPM:** + + ```bash + npx @astrojs/upgrade + ``` + + **With Yarn:** + + ```bash + yarn dlx @astrojs/upgrade + ``` + + **With PNPM:** + + ```bash + pnpm dlx @astrojs/upgrade + ``` diff --git a/packages/upgrade/README.md b/packages/upgrade/README.md new file mode 100644 index 000000000000..3744671f72cb --- /dev/null +++ b/packages/upgrade/README.md @@ -0,0 +1,53 @@ +# @astrojs/upgrade + +A command-line tool for upgrading your Astro integrations and dependencies. + +You can run this command in your terminal to upgrade your official Astro integrations at the same time you upgrade your version of Astro. + +## Usage + +`@astrojs/upgrade` should not be added as a dependency to your project, but run as a temporary executable whenever you want to upgrade using [`npx`](https://docs.npmjs.com/cli/v10/commands/npx) or [`dlx`](https://pnpm.io/cli/dlx). + +**With NPM:** + +```bash +npx @astrojs/upgrade +``` + +**With Yarn:** + +```bash +yarn dlx @astrojs/upgrade +``` + +**With PNPM:** + +```bash +pnpm dlx @astrojs/upgrade +``` + +## Options + +### tag (optional) + +It is possible to pass a specific `tag` to resolve packages against. If not included, `@astrojs/upgrade` looks for the `latest` tag. + +For example, Astro often releases `beta` versions prior to an upcoming major release. Upgrade an existing Astro project and it's dependencies to the `beta` version using one of the following commands: + +**With NPM:** + +```bash +npx @astrojs/upgrade beta +``` + +**With Yarn:** + +```bash +yarn dlx @astrojs/upgrade beta +``` + +**With PNPM:** + +```bash +pnpm dlx @astrojs/upgrade beta +``` diff --git a/packages/upgrade/package.json b/packages/upgrade/package.json new file mode 100644 index 000000000000..596fe71e0f59 --- /dev/null +++ b/packages/upgrade/package.json @@ -0,0 +1,49 @@ +{ + "name": "@astrojs/upgrade", + "version": "0.1.0-beta.0", + "type": "module", + "author": "withastro", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/withastro/astro.git", + "directory": "packages/upgrade" + }, + "bugs": "https://github.com/withastro/astro/issues", + "homepage": "https://astro.build", + "exports": { + ".": "./upgrade.mjs" + }, + "main": "./upgrade.mjs", + "bin": "./upgrade.mjs", + "scripts": { + "build": "astro-scripts build \"src/index.ts\" --bundle && tsc", + "build:ci": "astro-scripts build \"src/index.ts\" --bundle", + "dev": "astro-scripts dev \"src/**/*.ts\"", + "test": "mocha --exit --timeout 20000 --parallel" + }, + "files": [ + "dist", + "upgrade.js" + ], + "//a": "MOST PACKAGES SHOULD GO IN DEV_DEPENDENCIES! THEY WILL BE BUNDLED.", + "//b": "DEPENDENCIES IS FOR UNBUNDLED PACKAGES", + "dependencies": { + "@astrojs/cli-kit": "^0.2.3", + "semver": "^7.5.4", + "which-pm-runs": "^1.1.0", + "terminal-link": "^3.0.0" + }, + "devDependencies": { + "@types/semver": "^7.5.2", + "@types/which-pm-runs": "^1.0.0", + "arg": "^5.0.2", + "astro-scripts": "workspace:*", + "chai": "^4.3.7", + "mocha": "^10.2.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18.14.1" + } +} diff --git a/packages/upgrade/src/actions/context.ts b/packages/upgrade/src/actions/context.ts new file mode 100644 index 000000000000..f821864b5ea7 --- /dev/null +++ b/packages/upgrade/src/actions/context.ts @@ -0,0 +1,56 @@ +import { prompt } from '@astrojs/cli-kit'; +import arg from 'arg'; +import { pathToFileURL } from 'node:url'; +import detectPackageManager from 'which-pm-runs'; + +export interface Context { + help: boolean; + prompt: typeof prompt; + version: string; + dryRun?: boolean; + cwd: URL; + stdin?: typeof process.stdin; + stdout?: typeof process.stdout; + packageManager: string; + packages: PackageInfo[]; + exit(code: number): never; +} + +export interface PackageInfo { + name: string; + currentVersion: string; + targetVersion: string; + tag?: string; + isDevDependency?: boolean; + isMajor?: boolean; + changelogURL?: string; + changelogTitle?: string; +} + +export async function getContext(argv: string[]): Promise { + const flags = arg( + { + '--dry-run': Boolean, + '--help': Boolean, + + '-h': '--help', + }, + { argv, permissive: true } + ); + + const packageManager = detectPackageManager()?.name ?? 'npm'; + const { _: [version = 'latest'] = [], '--help': help = false, '--dry-run': dryRun } = flags; + + return { + help, + prompt, + packageManager, + packages: [], + cwd: new URL(pathToFileURL(process.cwd()) + '/'), + dryRun, + version, + exit(code) { + process.exit(code); + }, + } satisfies Context; +} diff --git a/packages/upgrade/src/actions/help.ts b/packages/upgrade/src/actions/help.ts new file mode 100644 index 000000000000..2e25b7e8442b --- /dev/null +++ b/packages/upgrade/src/actions/help.ts @@ -0,0 +1,15 @@ +import { printHelp } from '../messages.js'; + +export function help() { + printHelp({ + commandName: '@astrojs/upgrade', + usage: '[version] [...flags]', + headline: 'Upgrade Astro dependencies.', + tables: { + Flags: [ + ['--help (-h)', 'See all available flags.'], + ['--dry-run', 'Walk through steps without executing.'], + ], + }, + }); +} diff --git a/packages/upgrade/src/actions/install.ts b/packages/upgrade/src/actions/install.ts new file mode 100644 index 000000000000..3f343463fadf --- /dev/null +++ b/packages/upgrade/src/actions/install.ts @@ -0,0 +1,187 @@ +import type { Context, PackageInfo } from './context.js'; + +import { color, say } from '@astrojs/cli-kit'; +import { random, sleep } from '@astrojs/cli-kit/utils'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { + banner, + bye, + celebrations, + changelog, + done, + error, + info, + newline, + pluralize, + spinner, + success, + title, + upgrade, + warn, +} from '../messages.js'; +import { shell } from '../shell.js'; + +export async function install( + ctx: Pick< + Context, + 'version' | 'packages' | 'packageManager' | 'prompt' | 'dryRun' | 'exit' | 'cwd' + > +) { + await banner(); + newline(); + const { current, dependencies, devDependencies } = filterPackages(ctx); + const toInstall = [...dependencies, ...devDependencies].sort(sortPackages); + for (const packageInfo of current.sort(sortPackages)) { + const tag = /^\d/.test(packageInfo.targetVersion) + ? packageInfo.targetVersion + : packageInfo.targetVersion.slice(1); + await info(`${packageInfo.name}`, `is up to date on`, `v${tag}`); + await sleep(random(50, 150)); + } + if (toInstall.length === 0 && !ctx.dryRun) { + newline(); + await success(random(celebrations), random(done)); + return; + } + const majors: PackageInfo[] = []; + for (const packageInfo of toInstall) { + const word = ctx.dryRun ? 'can' : 'will'; + await upgrade(packageInfo, `${word} be updated to`); + if (packageInfo.isMajor) { + majors.push(packageInfo); + } + } + if (majors.length > 0) { + const { proceed } = await ctx.prompt({ + name: 'proceed', + type: 'confirm', + label: title('wait'), + message: `${pluralize( + ['One package has', 'Some packages have'], + majors.length + )} breaking changes. Continue?`, + initial: true, + }); + if (!proceed) { + return ctx.exit(0); + } + + newline(); + + await warn('check', `Be sure to follow the ${pluralize('CHANGELOG', majors.length)}.`); + for (const pkg of majors.sort(sortPackages)) { + await changelog(pkg.name, pkg.changelogTitle!, pkg.changelogURL!); + } + } + + newline(); + if (ctx.dryRun) { + await info('--dry-run', `Skipping dependency installation`); + } else { + await runInstallCommand(ctx, dependencies, devDependencies); + } +} + +function filterPackages(ctx: Pick) { + const current: PackageInfo[] = []; + const dependencies: PackageInfo[] = []; + const devDependencies: PackageInfo[] = []; + for (const packageInfo of ctx.packages) { + const { currentVersion, targetVersion, isDevDependency } = packageInfo; + // Remove prefix from `currentVersion` before comparing + if (currentVersion.replace(/^\D+/, '') === targetVersion) { + current.push(packageInfo); + } else { + const arr = isDevDependency ? devDependencies : dependencies; + arr.push(packageInfo); + } + } + return { current, dependencies, devDependencies }; +} + +/** + * An `Array#sort` comparator function to normalize how packages are displayed. + * This only changes how the packages are displayed in the CLI, it is not persisted to `package.json`. + */ +function sortPackages(a: PackageInfo, b: PackageInfo): number { + if (a.isMajor && !b.isMajor) return 1; + if (b.isMajor && !a.isMajor) return -1; + if (a.name === 'astro') return -1; + if (b.name === 'astro') return 1; + if (a.name.startsWith('@astrojs') && !b.name.startsWith('@astrojs')) return -1; + if (b.name.startsWith('@astrojs') && !a.name.startsWith('@astrojs')) return 1; + return a.name.localeCompare(b.name); +} + +async function runInstallCommand( + ctx: Pick, + dependencies: PackageInfo[], + devDependencies: PackageInfo[] +) { + const cwd = fileURLToPath(ctx.cwd); + if (ctx.packageManager === 'yarn') await ensureYarnLock({ cwd }); + + await spinner({ + start: `Installing dependencies with ${ctx.packageManager}...`, + end: `Installed dependencies!`, + while: async () => { + try { + if (dependencies.length > 0) { + await shell( + ctx.packageManager, + [ + 'install', + ...dependencies.map( + ({ name, targetVersion }) => `${name}@${targetVersion.replace(/^\^/, '')}` + ), + ], + { cwd, timeout: 90_000, stdio: 'ignore' } + ); + } + if (devDependencies.length > 0) { + await shell( + ctx.packageManager, + [ + 'install', + '--save-dev', + ...devDependencies.map( + ({ name, targetVersion }) => `${name}@${targetVersion.replace(/^\^/, '')}` + ), + ], + { cwd, timeout: 90_000, stdio: 'ignore' } + ); + } + } catch { + const packages = [...dependencies, ...devDependencies] + .map(({ name, targetVersion }) => `${name}@${targetVersion}`) + .join(' '); + newline(); + error( + 'error', + `Dependencies failed to install, please run the following command manually:\n${color.bold( + `${ctx.packageManager} install ${packages}` + )}` + ); + return ctx.exit(1); + } + }, + }); + + await say([`${random(celebrations)} ${random(done)}`, random(bye)], { clear: false }); +} + +/** + * Yarn Berry (PnP) versions will throw an error if there isn't an existing `yarn.lock` file + * If a `yarn.lock` file doesn't exist, this function writes an empty `yarn.lock` one. + * Unfortunately this hack is required to run `yarn install`. + * + * The empty `yarn.lock` file is immediately overwritten by the installation process. + * See https://github.com/withastro/astro/pull/8028 + */ +async function ensureYarnLock({ cwd }: { cwd: string }) { + const yarnLock = path.join(cwd, 'yarn.lock'); + if (fs.existsSync(yarnLock)) return; + return fs.promises.writeFile(yarnLock, '', { encoding: 'utf-8' }); +} diff --git a/packages/upgrade/src/actions/verify.ts b/packages/upgrade/src/actions/verify.ts new file mode 100644 index 000000000000..82daa9a06b14 --- /dev/null +++ b/packages/upgrade/src/actions/verify.ts @@ -0,0 +1,182 @@ +import type { Context, PackageInfo } from './context.js'; + +import { color } from '@astrojs/cli-kit'; +import dns from 'node:dns/promises'; +import { existsSync } from 'node:fs'; +import { readFile } from 'node:fs/promises'; +import semverCoerce from 'semver/functions/coerce.js'; +import semverDiff from 'semver/functions/diff.js'; +import semverParse from 'semver/functions/parse.js'; +import { bannerAbort, error, getRegistry, info, newline } from '../messages.js'; + +export async function verify( + ctx: Pick +) { + const registry = await getRegistry(); + + if (!ctx.dryRun) { + const online = await isOnline(registry); + if (!online) { + bannerAbort(); + newline(); + error('error', `Unable to connect to the internet.`); + ctx.exit(1); + } + } + + await verifyAstroProject(ctx); + + const ok = await verifyVersions(ctx, registry); + if (!ok) { + bannerAbort(); + newline(); + error('error', `Version ${color.reset(ctx.version)} ${color.dim('could not be found!')}`); + await info('check', 'https://github.com/withastro/astro/releases'); + ctx.exit(1); + } +} + +function isOnline(registry: string): Promise { + const { host } = new URL(registry); + return dns.lookup(host).then( + () => true, + () => false + ); +} + +function safeJSONParse(value: string) { + try { + return JSON.parse(value); + } catch {} + return {}; +} + +async function verifyAstroProject(ctx: Pick) { + const packageJson = new URL('./package.json', ctx.cwd); + if (!existsSync(packageJson)) return false; + const contents = await readFile(packageJson, { encoding: 'utf-8' }); + if (!contents.includes('astro')) return false; + + const { dependencies = {}, devDependencies = {} } = safeJSONParse(contents); + if (dependencies['astro'] === undefined && devDependencies['astro'] === undefined) return false; + + // Side-effect! Persist dependency info to the shared context + collectPackageInfo(ctx, dependencies, devDependencies); + + return true; +} + +function isAstroPackage(name: string) { + return name === 'astro' || name.startsWith('@astrojs/'); +} + +function collectPackageInfo( + ctx: Pick, + dependencies: Record, + devDependencies: Record +) { + for (const [name, currentVersion] of Object.entries(dependencies)) { + if (!isAstroPackage(name)) continue; + ctx.packages.push({ + name, + currentVersion, + targetVersion: ctx.version, + }); + } + for (const [name, currentVersion] of Object.entries(devDependencies)) { + if (!isAstroPackage(name)) continue; + ctx.packages.push({ + name, + currentVersion, + targetVersion: ctx.version, + isDevDependency: true, + }); + } +} + +async function verifyVersions( + ctx: Pick, + registry: string +) { + const tasks: Promise[] = []; + for (const packageInfo of ctx.packages) { + tasks.push(resolveTargetVersion(packageInfo, registry)); + } + try { + await Promise.all(tasks); + } catch { + return false; + } + for (const packageInfo of ctx.packages) { + if (!packageInfo.targetVersion) { + return false; + } + } + return true; +} + +async function resolveTargetVersion(packageInfo: PackageInfo, registry: string): Promise { + const packageMetadata = await fetch(`${registry}/${packageInfo.name}`, { + headers: { accept: 'application/vnd.npm.install-v1+json' }, + }); + if (packageMetadata.status >= 400) { + throw new Error(`Unable to resolve "${packageInfo.name}"`); + } + const { 'dist-tags': distTags } = await packageMetadata.json(); + let version = distTags[packageInfo.targetVersion]; + if (version) { + packageInfo.tag = packageInfo.targetVersion; + packageInfo.targetVersion = version; + } else { + packageInfo.targetVersion = 'latest'; + version = distTags.latest; + } + if (packageInfo.currentVersion === version) { + return; + } + const prefix = packageInfo.targetVersion === 'latest' ? '^' : ''; + packageInfo.targetVersion = `${prefix}${version}`; + const fromVersion = semverCoerce(packageInfo.currentVersion)!; + const toVersion = semverParse(version)!; + const bump = semverDiff(fromVersion, toVersion); + if ((bump === 'major' && toVersion.prerelease.length === 0) || bump === 'premajor') { + packageInfo.isMajor = true; + if (packageInfo.name === 'astro') { + const upgradeGuide = `https://docs.astro.build/en/guides/upgrade-to/v${toVersion.major}/`; + const docsRes = await fetch(upgradeGuide); + // OK if this request fails, it's probably a prerelease without a public migration guide. + // In that case, we should fallback to the CHANGELOG check below. + if (docsRes.status === 200) { + packageInfo.changelogURL = upgradeGuide; + packageInfo.changelogTitle = `Upgrade to Astro v${toVersion.major}`; + return; + } + } + const latestMetadata = await fetch(`${registry}/${packageInfo.name}/latest`); + if (latestMetadata.status >= 400) { + throw new Error(`Unable to resolve "${packageInfo.name}"`); + } + const { repository } = await latestMetadata.json(); + const branch = bump === 'premajor' ? 'next' : 'main'; + packageInfo.changelogURL = extractChangelogURLFromRepository(repository, version, branch); + packageInfo.changelogTitle = 'CHANGELOG'; + } else { + // Dependency updates should not include the specific dist-tag + // since they are just for compatability + packageInfo.tag = undefined; + } +} + +function extractChangelogURLFromRepository( + repository: Record, + version: string, + branch = 'main' +) { + return ( + repository.url.replace('git+', '').replace('.git', '') + + `/blob/${branch}/` + + repository.directory + + '/CHANGELOG.md#' + + version.replace(/\./g, '') + ); +} diff --git a/packages/upgrade/src/index.ts b/packages/upgrade/src/index.ts new file mode 100644 index 000000000000..8131e6eb3d8d --- /dev/null +++ b/packages/upgrade/src/index.ts @@ -0,0 +1,32 @@ +import { getContext } from './actions/context.js'; + +import { help } from './actions/help.js'; +import { install } from './actions/install.js'; +import { verify } from './actions/verify.js'; +import { setStdout } from './messages.js'; + +const exit = () => process.exit(0); +process.on('SIGINT', exit); +process.on('SIGTERM', exit); + +export async function main() { + // NOTE: In the v7.x version of npm, the default behavior of `npm init` was changed + // to no longer require `--` to pass args and instead pass `--` directly to us. This + // broke our arg parser, since `--` is a special kind of flag. Filtering for `--` here + // fixes the issue so that create-astro now works on all npm versions. + const cleanArgv = process.argv.slice(2).filter((arg) => arg !== '--'); + const ctx = await getContext(cleanArgv); + if (ctx.help) { + help(); + return; + } + + const steps = [verify, install]; + + for (const step of steps) { + await step(ctx); + } + process.exit(0); +} + +export { getContext, install, setStdout, verify }; diff --git a/packages/upgrade/src/messages.ts b/packages/upgrade/src/messages.ts new file mode 100644 index 000000000000..e159a6f0631e --- /dev/null +++ b/packages/upgrade/src/messages.ts @@ -0,0 +1,212 @@ +/* eslint no-console: 'off' */ +import { color, label, spinner as load } from '@astrojs/cli-kit'; +import { align } from '@astrojs/cli-kit/utils'; +import semverParse from 'semver/functions/parse.js'; +import terminalLink from 'terminal-link'; +import detectPackageManager from 'which-pm-runs'; +import type { PackageInfo } from './actions/context.js'; +import { shell } from './shell.js'; + +// Users might lack access to the global npm registry, this function +// checks the user's project type and will return the proper npm registry +// +// A copy of this function also exists in the astro package +export async function getRegistry(): Promise { + const packageManager = detectPackageManager()?.name || 'npm'; + try { + const { stdout } = await shell(packageManager, ['config', 'get', 'registry']); + return stdout?.trim()?.replace(/\/$/, '') || 'https://registry.npmjs.org'; + } catch (e) { + return 'https://registry.npmjs.org'; + } +} + +let stdout = process.stdout; +/** @internal Used to mock `process.stdout.write` for testing purposes */ +export function setStdout(writable: typeof process.stdout) { + stdout = writable; +} + +export async function spinner(args: { + start: string; + end: string; + while: (...args: any) => Promise; +}) { + await load(args, { stdout }); +} + +export function pluralize(word: string | [string, string], n: number) { + const [singular, plural] = Array.isArray(word) ? word : [word, word + 's']; + if (n === 1) return singular; + return plural; +} + +export const celebrations = [ + 'Beautiful.', + 'Excellent!', + 'Sweet!', + 'Nice!', + 'Huzzah!', + 'Success.', + 'Nice.', + 'Wonderful.', + 'Lovely!', + "Lookin' good.", + 'Awesome.', +]; + +export const done = [ + "You're on the latest and greatest.", + 'Your integrations are up-to-date.', + 'Everything is current.', + 'Everything is up to date.', + 'Integrations are all up to date.', + 'Everything is on the latest and greatest.', + 'Integrations are up to date.', +]; + +export const bye = [ + 'Thanks for using Astro!', + 'Have fun building!', + 'Take it easy, astronaut!', + "Can't wait to see what you build.", + 'Good luck out there.', + 'See you around, astronaut.', +]; + +export const log = (message: string) => stdout.write(message + '\n'); + +export const newline = () => stdout.write('\n'); + +export const banner = async () => + log( + `\n${label('astro', color.bgGreen, color.black)} ${color.bold( + 'Integration upgrade in progress.' + )}` + ); + +export const bannerAbort = () => + log(`\n${label('astro', color.bgRed)} ${color.bold('Integration upgrade aborted.')}`); + +export const warn = async (prefix: string, text: string) => { + log(`${label(prefix, color.bgCyan, color.black)} ${text}`); +}; + +export const info = async (prefix: string, text: string, version = '') => { + const length = 11 + prefix.length + text.length + version?.length; + const symbol = 'â—Ľ'; + if (length > stdout.columns) { + log(`${' '.repeat(5)} ${color.cyan(symbol)} ${prefix}`); + log(`${' '.repeat(9)}${color.dim(text)} ${color.reset(version)}`); + } else { + log( + `${' '.repeat(5)} ${color.cyan(symbol)} ${prefix} ${color.dim(text)} ${color.reset(version)}` + ); + } +}; +export const upgrade = async (packageInfo: PackageInfo, text: string) => { + const { name, isMajor = false, targetVersion } = packageInfo; + + const bg = isMajor ? (v: string) => color.bgYellow(color.black(` ${v} `)) : color.green; + const style = isMajor ? color.yellow : color.green; + const symbol = isMajor ? 'â–˛' : 'â—Ź'; + const toVersion = semverParse(targetVersion)!; + const version = `v${toVersion.version}`; + + const length = 12 + name.length + text.length + version.length; + if (length > stdout.columns) { + log(`${' '.repeat(5)} ${style(symbol)} ${name}`); + log(`${' '.repeat(9)}${color.dim(text)} ${bg(version)}`); + } else { + log(`${' '.repeat(5)} ${style(symbol)} ${name} ${color.dim(text)} ${bg(version)}`); + } +}; + +export const title = (text: string) => + align(label(text, color.bgYellow, color.black), 'end', 7) + ' '; + +export const success = async (prefix: string, text: string) => { + const length = 10 + prefix.length + text.length; + if (length > stdout.columns) { + log(`${' '.repeat(5)} ${color.green('âś”')} ${prefix}`); + log(`${' '.repeat(9)}${color.dim(text)}`); + } else { + log(`${' '.repeat(5)} ${color.green('âś”')} ${prefix} ${color.dim(text)}`); + } +}; + +export const error = async (prefix: string, text: string) => { + if (stdout.columns < 80) { + log(`${' '.repeat(5)} ${color.red('â–˛')} ${color.red(prefix)}`); + log(`${' '.repeat(9)}${color.dim(text)}`); + } else { + log(`${' '.repeat(5)} ${color.red('â–˛')} ${color.red(prefix)} ${color.dim(text)}`); + } +}; + +export const changelog = async (name: string, text: string, url: string) => { + const link = terminalLink(text, url, { fallback: () => url }); + const linkLength = terminalLink.isSupported ? text.length : url.length; + const symbol = ' '; + + const length = 12 + name.length + linkLength; + if (length > stdout.columns) { + log(`${' '.repeat(5)} ${symbol} ${name}`); + log(`${' '.repeat(9)}${color.cyan(color.underline(link))}`); + } else { + log(`${' '.repeat(5)} ${symbol} ${name} ${color.cyan(color.underline(link))}`); + } +}; + +export function printHelp({ + commandName, + usage, + tables, + description, +}: { + commandName: string; + headline?: string; + usage?: string; + tables?: Record; + description?: string; +}) { + const linebreak = () => ''; + const table = (rows: [string, string][], { padding }: { padding: number }) => { + const split = stdout.columns < 60; + let raw = ''; + + for (const row of rows) { + if (split) { + raw += ` ${row[0]}\n `; + } else { + raw += `${`${row[0]}`.padStart(padding)}`; + } + raw += ' ' + color.dim(row[1]) + '\n'; + } + + return raw.slice(0, -1); // remove latest \n + }; + + let message = []; + + if (usage) { + message.push(linebreak(), `${color.green(commandName)} ${color.bold(usage)}`); + } + + if (tables) { + function calculateTablePadding(rows: [string, string][]) { + return rows.reduce((val, [first]) => Math.max(val, first.length), 0); + } + const tableEntries = Object.entries(tables); + const padding = Math.max(...tableEntries.map(([, rows]) => calculateTablePadding(rows))); + for (const [, tableRows] of tableEntries) { + message.push(linebreak(), table(tableRows, { padding })); + } + } + + if (description) { + message.push(linebreak(), `${description}`); + } + + log(message.join('\n') + '\n'); +} diff --git a/packages/upgrade/src/shell.ts b/packages/upgrade/src/shell.ts new file mode 100644 index 000000000000..65a83327d8b8 --- /dev/null +++ b/packages/upgrade/src/shell.ts @@ -0,0 +1,60 @@ +// This is an extremely simplified version of [`execa`](https://github.com/sindresorhus/execa) +// intended to keep our dependency size down +import type { ChildProcess, StdioOptions } from 'node:child_process'; +import type { Readable } from 'node:stream'; + +import { spawn } from 'node:child_process'; +import { text as textFromStream } from 'node:stream/consumers'; + +export interface ExecaOptions { + cwd?: string | URL; + stdio?: StdioOptions; + timeout?: number; +} +export interface Output { + stdout: string; + stderr: string; + exitCode: number; +} +const text = (stream: NodeJS.ReadableStream | Readable | null) => + stream ? textFromStream(stream).then((t) => t.trimEnd()) : ''; + +let signal: AbortSignal; +export async function shell( + command: string, + flags: string[], + opts: ExecaOptions = {} +): Promise { + let child: ChildProcess; + let stdout = ''; + let stderr = ''; + if (!signal) { + const controller = new AbortController(); + // Ensure spawned process is cancelled on exit + process.once('beforeexit', () => controller.abort()); + process.once('exit', () => controller.abort()); + signal = controller.signal; + } + try { + child = spawn(command, flags, { + cwd: opts.cwd, + shell: true, + stdio: opts.stdio, + timeout: opts.timeout, + signal, + }); + const done = new Promise((resolve) => child.on('close', resolve)); + [stdout, stderr] = await Promise.all([text(child.stdout), text(child.stderr)]); + await done; + } catch (e) { + throw { stdout, stderr, exitCode: 1 }; + } + const { exitCode } = child; + if (exitCode === null) { + throw new Error('Timeout'); + } + if (exitCode !== 0) { + throw new Error(stderr); + } + return { stdout, stderr, exitCode }; +} diff --git a/packages/upgrade/test/context.test.js b/packages/upgrade/test/context.test.js new file mode 100644 index 000000000000..5b6b8c6b2201 --- /dev/null +++ b/packages/upgrade/test/context.test.js @@ -0,0 +1,19 @@ +import { expect } from 'chai'; +import { getContext } from '../dist/index.js'; + +describe('context', () => { + it('no arguments', async () => { + const ctx = await getContext([]); + expect(ctx.version).to.eq('latest'); + expect(ctx.dryRun).to.be.undefined; + }); + it('tag', async () => { + const ctx = await getContext(['beta']); + expect(ctx.version).to.eq('beta'); + expect(ctx.dryRun).to.be.undefined; + }); + it('dry run', async () => { + const ctx = await getContext(['--dry-run']); + expect(ctx.dryRun).to.eq(true); + }); +}); diff --git a/packages/upgrade/test/fixtures/basic/package.json b/packages/upgrade/test/fixtures/basic/package.json new file mode 100644 index 000000000000..6e1aa2cd1e30 --- /dev/null +++ b/packages/upgrade/test/fixtures/basic/package.json @@ -0,0 +1,7 @@ +{ + "name": "@test/astro-upgrade-basic", + "private": true, + "dependencies": { + "astro": "1.0.0" + } +} diff --git a/packages/upgrade/test/install.test.js b/packages/upgrade/test/install.test.js new file mode 100644 index 000000000000..05c46cdce9ef --- /dev/null +++ b/packages/upgrade/test/install.test.js @@ -0,0 +1,211 @@ +import { expect } from 'chai'; +import { setup } from './utils.js'; +import { install } from '../dist/index.js'; + +describe('install', () => { + const fixture = setup(); + const ctx = { + cwd: '', + version: 'latest', + packageManager: 'npm', + dryRun: true, + }; + + it('up to date', async () => { + const context = { + ...ctx, + packages: [ + { + name: 'astro', + currentVersion: '1.0.0', + targetVersion: '1.0.0', + }, + ], + }; + await install(context); + expect(fixture.hasMessage('â—Ľ astro is up to date on v1.0.0')).to.be.true; + }); + + it('patch', async () => { + const context = { + ...ctx, + packages: [ + { + name: 'astro', + currentVersion: '1.0.0', + targetVersion: '1.0.1', + }, + ], + }; + await install(context); + expect(fixture.hasMessage('â—Ź astro can be updated to v1.0.1')).to.be.true; + }); + + it('minor', async () => { + const context = { + ...ctx, + packages: [ + { + name: 'astro', + currentVersion: '1.0.0', + targetVersion: '1.2.0', + }, + ], + }; + await install(context); + expect(fixture.hasMessage('â—Ź astro can be updated to v1.2.0')).to.be.true; + }); + + it('major (reject)', async () => { + let prompted = false; + let exitCode; + const context = { + ...ctx, + prompt: () => { + prompted = true; + return { proceed: false }; + }, + exit: (code) => { + exitCode = code; + }, + packages: [ + { + name: 'astro', + currentVersion: '1.0.0', + targetVersion: '2.0.0', + isMajor: true, + changelogTitle: 'CHANGELOG', + changelogURL: 'https://example.com', + }, + ], + }; + await install(context); + expect(fixture.hasMessage('â–˛ astro can be updated to v2.0.0')).to.be.true; + expect(prompted).to.be.true; + expect(exitCode).to.eq(0); + expect(fixture.hasMessage('check Be sure to follow the CHANGELOG.')).to.be.false; + }); + + it('major (accept)', async () => { + let prompted = false; + let exitCode; + const context = { + ...ctx, + prompt: () => { + prompted = true; + return { proceed: true }; + }, + exit: (code) => { + exitCode = code; + }, + packages: [ + { + name: 'astro', + currentVersion: '1.0.0', + targetVersion: '2.0.0', + isMajor: true, + changelogTitle: 'CHANGELOG', + changelogURL: 'https://example.com', + }, + ], + }; + await install(context); + expect(fixture.hasMessage('â–˛ astro can be updated to v2.0.0')).to.be.true; + expect(prompted).to.be.true; + expect(exitCode).to.be.undefined; + expect(fixture.hasMessage('check Be sure to follow the CHANGELOG.')).to.be.true; + }); + + it('multiple major', async () => { + let prompted = false; + let exitCode; + const context = { + ...ctx, + prompt: () => { + prompted = true; + return { proceed: true }; + }, + exit: (code) => { + exitCode = code; + }, + packages: [ + { + name: 'a', + currentVersion: '1.0.0', + targetVersion: '2.0.0', + isMajor: true, + changelogTitle: 'CHANGELOG', + changelogURL: 'https://example.com', + }, + { + name: 'b', + currentVersion: '6.0.0', + targetVersion: '7.0.0', + isMajor: true, + changelogTitle: 'CHANGELOG', + changelogURL: 'https://example.com', + }, + ], + }; + await install(context); + expect(fixture.hasMessage('â–˛ a can be updated to v2.0.0')).to.be.true; + expect(fixture.hasMessage('â–˛ b can be updated to v7.0.0')).to.be.true; + expect(prompted).to.be.true; + expect(exitCode).to.be.undefined; + const [changelog, a, b] = fixture.messages().slice(-5); + expect(changelog).to.match(/^check/); + expect(a).to.match(/^a/); + expect(b).to.match(/^b/); + }); + + it('current patch minor major', async () => { + let prompted = false; + let exitCode; + const context = { + ...ctx, + prompt: () => { + prompted = true; + return { proceed: true }; + }, + exit: (code) => { + exitCode = code; + }, + packages: [ + { + name: 'current', + currentVersion: '1.0.0', + targetVersion: '1.0.0', + }, + { + name: 'patch', + currentVersion: '1.0.0', + targetVersion: '1.0.1', + }, + { + name: 'minor', + currentVersion: '1.0.0', + targetVersion: '1.2.0', + }, + { + name: 'major', + currentVersion: '1.0.0', + targetVersion: '3.0.0', + isMajor: true, + changelogTitle: 'CHANGELOG', + changelogURL: 'https://example.com', + }, + ], + }; + await install(context); + expect(fixture.hasMessage('â—Ľ current is up to date on v1.0.0')).to.be.true; + expect(fixture.hasMessage('â—Ź patch can be updated to v1.0.1')).to.be.true; + expect(fixture.hasMessage('â—Ź minor can be updated to v1.2.0')).to.be.true; + expect(fixture.hasMessage('â–˛ major can be updated to v3.0.0')).to.be.true; + expect(prompted).to.be.true; + expect(exitCode).to.be.undefined; + expect(fixture.hasMessage('check Be sure to follow the CHANGELOG.')).to.be.true; + const [changelog, major] = fixture.messages().slice(-4); + expect(changelog).to.match(/^check/); + expect(major).to.match(/^major/); + }); +}); diff --git a/packages/upgrade/test/utils.js b/packages/upgrade/test/utils.js new file mode 100644 index 000000000000..d57ceacd3ab3 --- /dev/null +++ b/packages/upgrade/test/utils.js @@ -0,0 +1,52 @@ +import fs from 'node:fs'; +import { setStdout } from '../dist/index.js'; +import stripAnsi from 'strip-ansi'; + +export function setup() { + const ctx = { messages: [] }; + before(() => { + setStdout( + Object.assign({}, process.stdout, { + write(buf) { + ctx.messages.push(stripAnsi(String(buf)).trim()); + return true; + }, + }) + ); + }); + beforeEach(() => { + ctx.messages = []; + }); + + return { + messages() { + return ctx.messages; + }, + length() { + return ctx.messages.length; + }, + hasMessage(content) { + return !!ctx.messages.find((msg) => msg.includes(content)); + }, + }; +} + +const resetBasicFixture = async () => { + const packagePath = new URL('./fixtures/basic/package.json', import.meta.url); + const packageJsonData = JSON.parse( + await fs.promises.readFile(packagePath, { encoding: 'utf-8' }) + ); + const overriddenPackageJson = Object.assign(packageJsonData, { + dependencies: { + astro: '1.0.0', + }, + }); + + return Promise.all([ + fs.promises.writeFile(packagePath, JSON.stringify(overriddenPackageJson, null, 2), { + encoding: 'utf-8', + }), + ]); +}; + +export const resetFixtures = () => Promise.allSettled([resetBasicFixture()]); diff --git a/packages/upgrade/tsconfig.json b/packages/upgrade/tsconfig.json new file mode 100644 index 000000000000..d15ade00ff80 --- /dev/null +++ b/packages/upgrade/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../tsconfig.base.json", + "include": ["src", "index.d.ts"], + "compilerOptions": { + "allowJs": true, + "emitDeclarationOnly": false, + "noEmit": true, + "target": "ES2022", + "module": "ES2022", + "moduleResolution": "Bundler", + "outDir": "./dist", + "declarationDir": "./dist/types" + } +} diff --git a/packages/upgrade/upgrade.mjs b/packages/upgrade/upgrade.mjs new file mode 100755 index 000000000000..f9df779d871c --- /dev/null +++ b/packages/upgrade/upgrade.mjs @@ -0,0 +1,15 @@ +#!/usr/bin/env node +/* eslint-disable no-console */ +'use strict'; + +const currentVersion = process.versions.node; +const requiredMajorVersion = parseInt(currentVersion.split('.')[0], 10); +const minimumMajorVersion = 18; + +if (requiredMajorVersion < minimumMajorVersion) { + console.error(`Node.js v${currentVersion} is out of date and unsupported!`); + console.error(`Please use Node.js v${minimumMajorVersion} or higher.`); + process.exit(1); +} + +import('./dist/index.js').then(({ main }) => main()); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 175ecf7b6d4d..ede4937053a3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,8 +19,8 @@ importers: version: link:benchmark devDependencies: '@astrojs/check': - specifier: ^0.1.0 - version: 0.1.0(prettier-plugin-astro@0.12.0)(prettier@3.0.3)(typescript@5.1.6) + specifier: ^0.3.1 + version: 0.3.1(prettier-plugin-astro@0.12.2)(prettier@3.1.0)(typescript@5.2.2) '@changesets/changelog-github': specifier: ^0.4.8 version: 0.4.8 @@ -31,26 +31,26 @@ importers: specifier: ^18.17.8 version: 18.18.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.4.1 - version: 6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.52.0)(typescript@5.1.6) + specifier: ^6.11.0 + version: 6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.54.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: ^6.4.1 - version: 6.8.0(eslint@8.52.0)(typescript@5.1.6) + specifier: ^6.11.0 + version: 6.11.0(eslint@8.54.0)(typescript@5.2.2) esbuild: - specifier: ^0.19.2 - version: 0.19.5 + specifier: ^0.19.6 + version: 0.19.6 eslint: - specifier: ^8.47.0 - version: 8.52.0 + specifier: ^8.54.0 + version: 8.54.0 eslint-config-prettier: specifier: ^9.0.0 - version: 9.0.0(eslint@8.52.0) + version: 9.0.0(eslint@8.54.0) eslint-plugin-no-only-tests: specifier: ^3.1.0 version: 3.1.0 eslint-plugin-prettier: specifier: ^5.0.0 - version: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.52.0)(prettier@3.0.3) + version: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.54.0)(prettier@3.1.0) only-allow: specifier: ^1.1.1 version: 1.2.1 @@ -58,11 +58,11 @@ importers: specifier: ^0.10.0 version: 0.10.0 prettier: - specifier: ^3.0.3 - version: 3.0.3 + specifier: ^3.1.0 + version: 3.1.0 prettier-plugin-astro: - specifier: ^0.12.0 - version: 0.12.0 + specifier: ^0.12.2 + version: 0.12.2 tiny-glob: specifier: ^0.2.9 version: 0.2.9 @@ -70,8 +70,8 @@ importers: specifier: ^1.10.12 version: 1.10.16 typescript: - specifier: ~5.1.6 - version: 5.1.6 + specifier: ~5.2.2 + version: 5.2.2 benchmark: dependencies: @@ -113,8 +113,8 @@ importers: version: 1.0.1 devDependencies: '@types/server-destroy': - specifier: ^1.0.1 - version: 1.0.2 + specifier: ^1.0.3 + version: 1.0.3 astro: specifier: workspace:* version: link:../../../packages/astro @@ -125,28 +125,28 @@ importers: examples/basics: dependencies: astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro examples/blog: dependencies: '@astrojs/mdx': - specifier: ^1.1.5 + specifier: ^2.0.0-beta.0 version: link:../../packages/integrations/mdx '@astrojs/rss': - specifier: ^3.0.0 + specifier: ^4.0.0-beta.0 version: link:../../packages/astro-rss '@astrojs/sitemap': specifier: ^3.0.3 version: link:../../packages/integrations/sitemap astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro examples/component: devDependencies: astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro examples/framework-alpine: @@ -155,13 +155,13 @@ importers: specifier: ^0.3.1 version: link:../../packages/integrations/alpinejs '@types/alpinejs': - specifier: ^3.7.2 - version: 3.13.3 + specifier: ^3.13.5 + version: 3.13.5 alpinejs: - specifier: ^3.12.3 - version: 3.13.2 + specifier: ^3.13.3 + version: 3.13.3 astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro examples/framework-lit: @@ -173,7 +173,7 @@ importers: specifier: ^0.2.1 version: 0.2.1 astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro lit: specifier: ^2.8.0 @@ -185,23 +185,23 @@ importers: specifier: ^3.0.1 version: link:../../packages/integrations/preact '@astrojs/react': - specifier: ^3.0.5 + specifier: ^3.0.7-beta.0 version: link:../../packages/integrations/react '@astrojs/solid-js': specifier: ^3.0.2 version: link:../../packages/integrations/solid '@astrojs/svelte': - specifier: ^4.0.4 + specifier: ^5.0.0-beta.0 version: link:../../packages/integrations/svelte '@astrojs/vue': - specifier: ^3.0.4 + specifier: ^4.0.0-beta.0 version: link:../../packages/integrations/vue astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 react: specifier: ^18.2.0 version: 18.2.0 @@ -209,14 +209,14 @@ importers: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) examples/framework-preact: dependencies: @@ -225,27 +225,27 @@ importers: version: link:../../packages/integrations/preact '@preact/signals': specifier: ^1.2.1 - version: 1.2.1(preact@10.18.1) + version: 1.2.1(preact@10.19.2) astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 examples/framework-react: dependencies: '@astrojs/react': - specifier: ^3.0.5 + specifier: ^3.0.7-beta.0 version: link:../../packages/integrations/react '@types/react': - specifier: ^18.2.21 - version: 18.2.31 + specifier: ^18.2.37 + version: 18.2.37 '@types/react-dom': - specifier: ^18.2.7 - version: 18.2.14 + specifier: ^18.2.15 + version: 18.2.15 astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro react: specifier: ^18.2.0 @@ -260,58 +260,58 @@ importers: specifier: ^3.0.2 version: link:../../packages/integrations/solid astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 examples/framework-svelte: dependencies: '@astrojs/svelte': - specifier: ^4.0.4 + specifier: ^5.0.0-beta.0 version: link:../../packages/integrations/svelte astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 examples/framework-vue: dependencies: '@astrojs/vue': - specifier: ^3.0.4 + specifier: ^4.0.0-beta.0 version: link:../../packages/integrations/vue astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) examples/hackernews: dependencies: '@astrojs/node': - specifier: ^6.0.4 + specifier: ^7.0.0-beta.0 version: link:../../packages/integrations/node astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro examples/integration: devDependencies: astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro examples/middleware: dependencies: '@astrojs/node': - specifier: ^6.0.4 + specifier: ^7.0.0-beta.0 version: link:../../packages/integrations/node astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro html-minifier: specifier: ^4.0.0 @@ -320,74 +320,74 @@ importers: examples/minimal: dependencies: astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro examples/non-html-pages: dependencies: astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro examples/portfolio: dependencies: astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro examples/ssr: dependencies: '@astrojs/node': - specifier: ^6.0.4 + specifier: ^7.0.0-beta.0 version: link:../../packages/integrations/node '@astrojs/svelte': - specifier: ^4.0.4 + specifier: ^5.0.0-beta.0 version: link:../../packages/integrations/svelte astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 examples/view-transitions: devDependencies: '@astrojs/node': - specifier: ^6.0.4 + specifier: ^7.0.0-beta.0 version: link:../../packages/integrations/node '@astrojs/tailwind': - specifier: ^5.0.2 + specifier: ^6.0.0-beta.0 version: link:../../packages/integrations/tailwind astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro examples/with-markdoc: dependencies: '@astrojs/markdoc': - specifier: ^0.7.2 + specifier: ^1.0.0-beta.0 version: link:../../packages/integrations/markdoc astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro examples/with-markdown-plugins: dependencies: '@astrojs/markdown-remark': - specifier: ^3.5.0 + specifier: ^4.0.0-beta.0 version: link:../../packages/markdown/remark astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro hast-util-select: - specifier: ^5.0.5 - version: 5.0.5 + specifier: ^6.0.2 + version: 6.0.2 rehype-autolink-headings: - specifier: ^6.1.1 - version: 6.1.1 + specifier: ^7.1.0 + version: 7.1.0 rehype-slug: - specifier: ^5.1.0 - version: 5.1.0 + specifier: ^6.0.0 + version: 6.0.0 rehype-toc: specifier: ^3.0.2 version: 3.0.2 @@ -398,23 +398,23 @@ importers: examples/with-markdown-shiki: dependencies: astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro examples/with-mdx: dependencies: '@astrojs/mdx': - specifier: ^1.1.5 + specifier: ^2.0.0-beta.0 version: link:../../packages/integrations/mdx '@astrojs/preact': specifier: ^3.0.1 version: link:../../packages/integrations/preact astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 examples/with-nanostores: dependencies: @@ -423,52 +423,52 @@ importers: version: link:../../packages/integrations/preact '@nanostores/preact': specifier: ^0.5.0 - version: 0.5.0(nanostores@0.9.4)(preact@10.18.1) + version: 0.5.0(nanostores@0.9.5)(preact@10.19.2) astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro nanostores: - specifier: ^0.9.3 - version: 0.9.4 + specifier: ^0.9.5 + version: 0.9.5 preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 examples/with-tailwindcss: dependencies: '@astrojs/mdx': - specifier: ^1.1.5 + specifier: ^2.0.0-beta.0 version: link:../../packages/integrations/mdx '@astrojs/tailwind': - specifier: ^5.0.2 + specifier: ^6.0.0-beta.0 version: link:../../packages/integrations/tailwind '@types/canvas-confetti': - specifier: ^1.6.0 - version: 1.6.2 + specifier: ^1.6.3 + version: 1.6.3 astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro autoprefixer: specifier: ^10.4.15 version: 10.4.16(postcss@8.4.31) canvas-confetti: - specifier: ^1.6.0 - version: 1.9.0 + specifier: ^1.9.1 + version: 1.9.1 postcss: specifier: ^8.4.28 version: 8.4.31 tailwindcss: - specifier: ^3.3.3 - version: 3.3.3 + specifier: ^3.3.5 + version: 3.3.5 examples/with-vite-plugin-pwa: dependencies: astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro vite-plugin-pwa: - specifier: 0.16.4 - version: 0.16.4(workbox-window@7.0.0) + specifier: 0.17.0 + version: 0.17.0(workbox-window@7.0.0) workbox-window: specifier: ^7.0.0 version: 7.0.0 @@ -476,7 +476,7 @@ importers: examples/with-vitest: dependencies: astro: - specifier: ^3.5.5 + specifier: ^4.0.0-beta.1 version: link:../../packages/astro vitest: specifier: ^0.34.2 @@ -485,8 +485,8 @@ importers: packages/astro: dependencies: '@astrojs/compiler': - specifier: ^2.3.0 - version: 2.3.0 + specifier: ^2.3.2 + version: 2.3.2 '@astrojs/internal-helpers': specifier: workspace:* version: link:../internal-helpers @@ -497,29 +497,29 @@ importers: specifier: workspace:* version: link:../telemetry '@babel/core': - specifier: ^7.22.10 - version: 7.23.2 + specifier: ^7.23.3 + version: 7.23.3 '@babel/generator': - specifier: ^7.22.10 - version: 7.23.0 + specifier: ^7.23.3 + version: 7.23.3 '@babel/parser': - specifier: ^7.22.10 - version: 7.23.0 + specifier: ^7.23.3 + version: 7.23.3 '@babel/plugin-transform-react-jsx': specifier: ^7.22.5 - version: 7.22.15(@babel/core@7.23.2) + version: 7.22.15(@babel/core@7.23.3) '@babel/traverse': - specifier: ^7.22.10 - version: 7.23.2 + specifier: ^7.23.3 + version: 7.23.3 '@babel/types': - specifier: ^7.22.10 - version: 7.23.0 + specifier: ^7.23.3 + version: 7.23.3 '@types/babel__core': - specifier: ^7.20.1 - version: 7.20.3 + specifier: ^7.20.4 + version: 7.20.4 acorn: - specifier: ^8.10.0 - version: 8.10.0 + specifier: ^8.11.2 + version: 8.11.2 boxen: specifier: ^7.1.1 version: 7.1.1 @@ -527,8 +527,8 @@ importers: specifier: ^3.5.3 version: 3.5.3 ci-info: - specifier: ^3.8.0 - version: 3.9.0 + specifier: ^4.0.0 + version: 4.0.0 clsx: specifier: ^2.0.0 version: 2.0.0 @@ -536,14 +536,14 @@ importers: specifier: ^1.0.1 version: 1.0.1 cookie: - specifier: ^0.5.0 - version: 0.5.0 + specifier: ^0.6.0 + version: 0.6.0 debug: specifier: ^4.3.4 version: 4.3.4(supports-color@8.1.1) deterministic-object-hash: - specifier: ^1.3.1 - version: 1.3.1 + specifier: ^2.0.1 + version: 2.0.1 devalue: specifier: ^4.3.2 version: 4.3.2 @@ -551,11 +551,11 @@ importers: specifier: ^5.1.0 version: 5.1.0 es-module-lexer: - specifier: ^1.3.0 - version: 1.3.1 + specifier: ^1.4.1 + version: 1.4.1 esbuild: - specifier: ^0.19.2 - version: 0.19.5 + specifier: ^0.19.6 + version: 0.19.6 estree-walker: specifier: ^3.0.3 version: 3.0.3 @@ -563,8 +563,8 @@ importers: specifier: ^8.0.1 version: 8.0.1 fast-glob: - specifier: ^3.3.1 - version: 3.3.1 + specifier: ^3.3.2 + version: 3.3.2 github-slugger: specifier: ^2.0.0 version: 2.0.0 @@ -587,8 +587,8 @@ importers: specifier: ^0.30.3 version: 0.30.5 mdast-util-to-hast: - specifier: 12.3.0 - version: 12.3.0 + specifier: 13.0.2 + version: 13.0.2 mime: specifier: ^3.0.0 version: 3.0.0 @@ -596,8 +596,8 @@ importers: specifier: ^7.0.1 version: 7.0.1 p-limit: - specifier: ^4.0.0 - version: 4.0.0 + specifier: ^5.0.0 + version: 5.0.0 p-queue: specifier: ^7.4.1 version: 7.4.1 @@ -614,8 +614,8 @@ importers: specifier: ^2.4.2 version: 2.4.2 rehype: - specifier: ^12.0.1 - version: 12.0.1 + specifier: ^13.0.1 + version: 13.0.1 resolve: specifier: ^1.22.4 version: 1.22.8 @@ -626,26 +626,26 @@ importers: specifier: ^1.0.1 version: 1.0.1 shikiji: - specifier: ^0.6.8 - version: 0.6.10 + specifier: ^0.6.13 + version: 0.6.13 string-width: - specifier: ^6.1.0 - version: 6.1.0 + specifier: ^7.0.0 + version: 7.0.0 strip-ansi: specifier: ^7.1.0 version: 7.1.0 tsconfck: specifier: ^3.0.0 - version: 3.0.0 + version: 3.0.0(typescript@5.2.2) unist-util-visit: - specifier: ^4.1.2 - version: 4.1.2 + specifier: ^5.0.0 + version: 5.0.0 vfile: - specifier: ^5.3.7 - version: 5.3.7 + specifier: ^6.0.1 + version: 6.0.1 vite: specifier: ^5.0.0 - version: 5.0.0(sass@1.69.4) + version: 5.0.0(@types/node@18.18.6)(sass@1.69.5) vitefu: specifier: ^0.2.4 version: 0.2.5(vite@5.0.0) @@ -664,80 +664,80 @@ importers: version: 0.32.6 devDependencies: '@astrojs/check': - specifier: ^0.1.0 - version: 0.1.0 + specifier: ^0.3.1 + version: 0.3.1(prettier-plugin-astro@0.12.2)(prettier@3.1.0)(typescript@5.2.2) '@playwright/test': - specifier: 1.40.0-alpha-nov-13-2023 - version: 1.40.0-alpha-nov-13-2023 + specifier: 1.40.0 + version: 1.40.0 '@types/babel__generator': - specifier: ^7.6.4 - version: 7.6.6 + specifier: ^7.6.7 + version: 7.6.7 '@types/babel__traverse': - specifier: ^7.20.1 - version: 7.20.3 + specifier: ^7.20.4 + version: 7.20.4 '@types/chai': - specifier: ^4.3.5 - version: 4.3.9 + specifier: ^4.3.10 + version: 4.3.10 '@types/common-ancestor-path': - specifier: ^1.0.0 - version: 1.0.1 + specifier: ^1.0.2 + version: 1.0.2 '@types/connect': - specifier: ^3.4.35 - version: 3.4.37 + specifier: ^3.4.38 + version: 3.4.38 '@types/cookie': - specifier: ^0.5.1 - version: 0.5.3 + specifier: ^0.5.4 + version: 0.5.4 '@types/debug': - specifier: ^4.1.8 - version: 4.1.10 + specifier: ^4.1.12 + version: 4.1.12 '@types/diff': - specifier: ^5.0.3 - version: 5.0.7 + specifier: ^5.0.8 + version: 5.0.8 '@types/dom-view-transitions': - specifier: ^1.0.1 - version: 1.0.3 + specifier: ^1.0.4 + version: 1.0.4 '@types/estree': - specifier: ^1.0.1 - version: 1.0.3 + specifier: ^1.0.5 + version: 1.0.5 '@types/hast': - specifier: ^2.3.5 - version: 2.3.7 + specifier: ^3.0.3 + version: 3.0.3 '@types/html-escaper': - specifier: ^3.0.0 - version: 3.0.1 + specifier: ^3.0.2 + version: 3.0.2 '@types/http-cache-semantics': - specifier: ^4.0.1 - version: 4.0.3 + specifier: ^4.0.4 + version: 4.0.4 '@types/js-yaml': - specifier: ^4.0.5 - version: 4.0.8 + specifier: ^4.0.9 + version: 4.0.9 '@types/mime': - specifier: ^3.0.1 - version: 3.0.3 + specifier: ^3.0.4 + version: 3.0.4 '@types/mocha': - specifier: ^10.0.1 - version: 10.0.3 + specifier: ^10.0.4 + version: 10.0.4 '@types/probe-image-size': - specifier: ^7.2.0 - version: 7.2.2 + specifier: ^7.2.3 + version: 7.2.3 '@types/prompts': - specifier: ^2.4.4 - version: 2.4.7 + specifier: ^2.4.8 + version: 2.4.8 '@types/resolve': - specifier: ^1.20.2 - version: 1.20.4 + specifier: ^1.20.5 + version: 1.20.5 '@types/send': - specifier: ^0.17.1 - version: 0.17.3 + specifier: ^0.17.4 + version: 0.17.4 '@types/server-destroy': - specifier: ^1.0.1 - version: 1.0.2 + specifier: ^1.0.3 + version: 1.0.3 '@types/unist': - specifier: ^2.0.7 - version: 2.0.9 + specifier: ^3.0.2 + version: 3.0.2 '@types/yargs-parser': - specifier: ^21.0.0 - version: 21.0.2 + specifier: ^21.0.3 + version: 21.0.3 astro-scripts: specifier: workspace:* version: link:../../scripts @@ -763,11 +763,11 @@ importers: specifier: ^1.0.2 version: 1.0.2 rehype-autolink-headings: - specifier: ^6.1.1 - version: 6.1.1 + specifier: ^7.1.0 + version: 7.1.0 rehype-slug: - specifier: ^5.0.1 - version: 5.1.0 + specifier: ^6.0.0 + version: 6.0.0 rehype-toc: specifier: ^3.0.2 version: 3.0.2 @@ -775,17 +775,17 @@ importers: specifier: ^0.1.2 version: 0.1.2 rollup: - specifier: ^4.4.1 - version: 4.4.1 + specifier: ^4.5.0 + version: 4.5.0 sass: - specifier: ^1.66.1 - version: 1.69.4 + specifier: ^1.69.5 + version: 1.69.5 srcset-parse: specifier: ^1.1.0 version: 1.1.0 unified: - specifier: ^10.1.2 - version: 10.1.2 + specifier: ^11.0.4 + version: 11.0.4 packages/astro-prism: dependencies: @@ -794,8 +794,8 @@ importers: version: 1.29.0 devDependencies: '@types/prismjs': - specifier: 1.26.0 - version: 1.26.0 + specifier: 1.26.3 + version: 1.26.3 astro-scripts: specifier: workspace:* version: link:../../scripts @@ -810,14 +810,14 @@ importers: version: 4.1.5 devDependencies: '@types/chai': - specifier: ^4.3.5 - version: 4.3.9 + specifier: ^4.3.10 + version: 4.3.10 '@types/chai-as-promised': - specifier: ^7.1.5 - version: 7.1.7 + specifier: ^7.1.8 + version: 7.1.8 '@types/mocha': - specifier: ^10.0.1 - version: 10.0.3 + specifier: ^10.0.4 + version: 10.0.4 astro: specifier: workspace:* version: link:../astro @@ -855,8 +855,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/astro/e2e/fixtures/astro-envs: dependencies: @@ -867,14 +867,14 @@ importers: specifier: workspace:* version: link:../../.. vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) packages/astro/e2e/fixtures/client-only: dependencies: preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 react: specifier: ^18.1.0 version: 18.2.0 @@ -882,14 +882,14 @@ importers: specifier: ^18.1.0 version: 18.2.0(react@18.2.0) solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -940,8 +940,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/astro/e2e/fixtures/error-cyclic: dependencies: @@ -952,8 +952,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/astro/e2e/fixtures/error-sass: dependencies: @@ -961,8 +961,8 @@ importers: specifier: workspace:* version: link:../../.. sass: - specifier: ^1.66.1 - version: 1.69.4 + specifier: ^1.69.5 + version: 1.69.5 packages/astro/e2e/fixtures/errors: dependencies: @@ -985,8 +985,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 react: specifier: ^18.1.0 version: 18.2.0 @@ -994,17 +994,17 @@ importers: specifier: ^18.1.0 version: 18.2.0(react@18.2.0) sass: - specifier: ^1.66.1 - version: 1.69.4 + specifier: ^1.69.5 + version: 1.69.5 solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) packages/astro/e2e/fixtures/hmr: devDependencies: @@ -1012,8 +1012,8 @@ importers: specifier: workspace:* version: link:../../.. sass: - specifier: ^1.66.1 - version: 1.69.4 + specifier: ^1.69.5 + version: 1.69.5 packages/astro/e2e/fixtures/hydration-race: dependencies: @@ -1024,8 +1024,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/astro/e2e/fixtures/lit-component: dependencies: @@ -1051,8 +1051,8 @@ importers: specifier: ^2.8.0 version: 2.8.0 preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 react: specifier: ^18.1.0 version: 18.2.0 @@ -1060,14 +1060,14 @@ importers: specifier: ^18.1.0 version: 18.2.0(react@18.2.0) solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) devDependencies: '@astrojs/lit': specifier: workspace:* @@ -1094,8 +1094,8 @@ importers: packages/astro/e2e/fixtures/namespaced-component: dependencies: preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 devDependencies: '@astrojs/mdx': specifier: workspace:* @@ -1110,8 +1110,8 @@ importers: packages/astro/e2e/fixtures/nested-in-preact: dependencies: preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 react: specifier: ^18.1.0 version: 18.2.0 @@ -1119,14 +1119,14 @@ importers: specifier: ^18.1.0 version: 18.2.0(react@18.2.0) solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1150,8 +1150,8 @@ importers: packages/astro/e2e/fixtures/nested-in-react: dependencies: preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 react: specifier: ^18.1.0 version: 18.2.0 @@ -1159,14 +1159,14 @@ importers: specifier: ^18.1.0 version: 18.2.0(react@18.2.0) solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1190,8 +1190,8 @@ importers: packages/astro/e2e/fixtures/nested-in-solid: dependencies: preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 react: specifier: ^18.1.0 version: 18.2.0 @@ -1199,14 +1199,14 @@ importers: specifier: ^18.1.0 version: 18.2.0(react@18.2.0) solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1230,8 +1230,8 @@ importers: packages/astro/e2e/fixtures/nested-in-svelte: dependencies: preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 react: specifier: ^18.1.0 version: 18.2.0 @@ -1239,14 +1239,14 @@ importers: specifier: ^18.1.0 version: 18.2.0(react@18.2.0) solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1270,8 +1270,8 @@ importers: packages/astro/e2e/fixtures/nested-in-vue: dependencies: preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 react: specifier: ^18.1.0 version: 18.2.0 @@ -1279,14 +1279,14 @@ importers: specifier: ^18.1.0 version: 18.2.0(react@18.2.0) solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1310,8 +1310,8 @@ importers: packages/astro/e2e/fixtures/nested-recursive: dependencies: preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 react: specifier: ^18.1.0 version: 18.2.0 @@ -1319,14 +1319,14 @@ importers: specifier: ^18.1.0 version: 18.2.0(react@18.2.0) solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1378,8 +1378,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/astro/e2e/fixtures/preact-component: dependencies: @@ -1393,8 +1393,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/astro/e2e/fixtures/prefetch: dependencies: @@ -1430,8 +1430,8 @@ importers: version: link:../../.. devDependencies: solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 packages/astro/e2e/fixtures/solid-component: dependencies: @@ -1445,8 +1445,8 @@ importers: specifier: workspace:* version: link:../../.. solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 packages/astro/e2e/fixtures/solid-recurse: dependencies: @@ -1458,8 +1458,8 @@ importers: version: link:../../.. devDependencies: solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 packages/astro/e2e/fixtures/svelte-component: dependencies: @@ -1473,8 +1473,8 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 packages/astro/e2e/fixtures/tailwindcss: dependencies: @@ -1491,8 +1491,8 @@ importers: specifier: ^8.4.28 version: 8.4.31 tailwindcss: - specifier: ^3.3.3 - version: 3.3.3 + specifier: ^3.3.5 + version: 3.3.5 packages/astro/e2e/fixtures/ts-resolution: dependencies: @@ -1533,11 +1533,11 @@ importers: specifier: ^18.1.0 version: 18.2.0(react@18.2.0) svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) packages/astro/e2e/fixtures/vue-component: dependencies: @@ -1551,14 +1551,14 @@ importers: specifier: workspace:* version: link:../../.. vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) packages/astro/performance: devDependencies: '@types/yargs-parser': - specifier: ^21.0.0 - version: 21.0.2 + specifier: ^21.0.3 + version: 21.0.3 cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -1581,11 +1581,11 @@ importers: specifier: workspace:* version: link:../utils '@types/react': - specifier: ^18.2.21 - version: 18.2.31 + specifier: ^18.2.37 + version: 18.2.37 '@types/react-dom': - specifier: ^18.2.7 - version: 18.2.14 + specifier: ^18.2.15 + version: 18.2.15 astro: specifier: workspace:* version: link:../../.. @@ -1608,11 +1608,11 @@ importers: specifier: workspace:* version: link:../utils '@types/react': - specifier: ^18.2.21 - version: 18.2.31 + specifier: ^18.2.37 + version: 18.2.37 '@types/react-dom': - specifier: ^18.2.7 - version: 18.2.14 + specifier: ^18.2.15 + version: 18.2.15 astro: specifier: workspace:* version: link:../../.. @@ -1635,11 +1635,11 @@ importers: specifier: workspace:* version: link:../utils '@types/react': - specifier: ^18.2.21 - version: 18.2.31 + specifier: ^18.2.37 + version: 18.2.37 '@types/react-dom': - specifier: ^18.2.7 - version: 18.2.14 + specifier: ^18.2.15 + version: 18.2.15 astro: specifier: workspace:* version: link:../../.. @@ -1683,11 +1683,11 @@ importers: specifier: ^18.1.0 version: 18.2.0(react@18.2.0) svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) packages/astro/test/fixtures/alias: dependencies: @@ -1698,8 +1698,8 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 packages/astro/test/fixtures/alias-tsconfig: dependencies: @@ -1713,8 +1713,8 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 packages/astro/test/fixtures/alias-tsconfig-baseurl-only: dependencies: @@ -1725,8 +1725,8 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 packages/astro/test/fixtures/alias-tsconfig/deps/namespace-package: {} @@ -1796,8 +1796,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/astro/test/fixtures/astro-check-errors: dependencies: @@ -1832,14 +1832,14 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) packages/astro/test/fixtures/astro-class-list: dependencies: @@ -1868,8 +1868,8 @@ importers: specifier: ^18.1.0 version: 18.2.0(react@18.2.0) svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 packages/astro/test/fixtures/astro-client-only/pkg: {} @@ -1954,8 +1954,8 @@ importers: specifier: ^18.1.0 version: 18.2.0(react@18.2.0) svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 packages/astro/test/fixtures/astro-envs: dependencies: @@ -1966,8 +1966,8 @@ importers: specifier: workspace:* version: link:../../.. vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) packages/astro/test/fixtures/astro-expr: dependencies: @@ -1978,8 +1978,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/astro/test/fixtures/astro-external-files: dependencies: @@ -1996,8 +1996,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/astro/test/fixtures/astro-generator: dependencies: @@ -2038,12 +2038,6 @@ importers: specifier: workspace:* version: link:../../.. - packages/astro/test/fixtures/astro-markdown-drafts: - dependencies: - astro: - specifier: workspace:* - version: link:../../.. - packages/astro/test/fixtures/astro-markdown-frontmatter-injection: dependencies: astro: @@ -2065,11 +2059,11 @@ importers: specifier: workspace:* version: link:../../.. hast-util-select: - specifier: ^6.0.0 - version: 6.0.1 + specifier: ^6.0.2 + version: 6.0.2 rehype-slug: - specifier: ^5.0.1 - version: 5.1.0 + specifier: ^6.0.0 + version: 6.0.0 packages/astro/test/fixtures/astro-markdown-remarkRehype: dependencies: @@ -2212,8 +2206,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/astro/test/fixtures/astro-slots: dependencies: @@ -2242,8 +2236,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 react: specifier: ^18.2.0 version: 18.2.0 @@ -2251,14 +2245,14 @@ importers: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) packages/astro/test/fixtures/before-hydration: dependencies: @@ -2269,8 +2263,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/astro/test/fixtures/build-assets: dependencies: @@ -2281,8 +2275,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/astro/test/fixtures/client-address: dependencies: @@ -2314,8 +2308,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 react: specifier: ^18.1.0 version: 18.2.0 @@ -2323,14 +2317,14 @@ importers: specifier: ^18.1.0 version: 18.2.0(react@18.2.0) svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 packages/astro/test/fixtures/component-library-shared: dependencies: preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 react: specifier: ^18.2.0 version: 18.2.0 @@ -2503,8 +2497,8 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: '4' - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 packages/astro/test/fixtures/css-import-as-inline: dependencies: @@ -2674,8 +2668,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/astro/test/fixtures/error-bad-js: dependencies: @@ -2710,23 +2704,23 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) packages/astro/test/fixtures/fontsource-package: dependencies: '@fontsource/monofett': - specifier: 5.0.9 - version: 5.0.9 + specifier: 5.0.17 + version: 5.0.17 '@fontsource/montserrat': - specifier: 5.0.8 - version: 5.0.8 + specifier: 5.0.15 + version: 5.0.15 astro: specifier: workspace:* version: link:../../.. @@ -2794,8 +2788,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/astro/test/fixtures/i18n-routing: dependencies: @@ -2869,8 +2863,8 @@ importers: packages/astro/test/fixtures/jsx: dependencies: preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 react: specifier: ^18.1.0 version: 18.2.0 @@ -2878,14 +2872,14 @@ importers: specifier: ^18.1.0 version: 18.2.0(react@18.2.0) solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) devDependencies: '@astrojs/mdx': specifier: workspace:* @@ -2918,8 +2912,8 @@ importers: specifier: workspace:* version: link:../../.. solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 packages/astro/test/fixtures/lazy-layout: dependencies: @@ -3060,18 +3054,18 @@ importers: specifier: ^8.4.28 version: 8.4.31 solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) devDependencies: postcss-preset-env: - specifier: ^9.1.1 - version: 9.2.0(postcss@8.4.31) + specifier: ^9.3.0 + version: 9.3.0(postcss@8.4.31) packages/astro/test/fixtures/preact-compat-component: dependencies: @@ -3085,8 +3079,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/astro/test/fixtures/preact-compat-component/packages/react-lib: dependencies: @@ -3101,13 +3095,13 @@ importers: version: link:../../../../integrations/preact '@preact/signals': specifier: 1.2.1 - version: 1.2.1(preact@10.18.1) + version: 1.2.1(preact@10.19.2) astro: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/astro/test/fixtures/public-base-404: dependencies: @@ -3133,8 +3127,8 @@ importers: specifier: ^18.1.0 version: 18.2.0(react@18.2.0) solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 packages/astro/test/fixtures/react-jsx-export: dependencies: @@ -3167,8 +3161,8 @@ importers: specifier: 'workspace:' version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/astro/test/fixtures/remote-css: dependencies: @@ -3218,8 +3212,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/astro/test/fixtures/slots-react: dependencies: @@ -3251,8 +3245,8 @@ importers: specifier: workspace:* version: link:../../.. solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 packages/astro/test/fixtures/slots-svelte: dependencies: @@ -3266,8 +3260,8 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 packages/astro/test/fixtures/slots-vue: dependencies: @@ -3281,8 +3275,8 @@ importers: specifier: workspace:* version: link:../../.. vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) packages/astro/test/fixtures/solid-component: dependencies: @@ -3290,8 +3284,8 @@ importers: specifier: workspace:* version: link:../../../../integrations/solid '@solidjs/router': - specifier: ^0.8.3 - version: 0.8.3(solid-js@1.8.3) + specifier: ^0.9.1 + version: 0.9.1(solid-js@1.8.5) '@test/solid-jsx-component': specifier: file:./deps/solid-jsx-component version: file:packages/astro/test/fixtures/solid-component/deps/solid-jsx-component @@ -3299,14 +3293,14 @@ importers: specifier: workspace:* version: link:../../.. solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 packages/astro/test/fixtures/solid-component/deps/solid-jsx-component: dependencies: solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 packages/astro/test/fixtures/sourcemap: dependencies: @@ -3383,8 +3377,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/astro/test/fixtures/ssr-hoisted-script: dependencies: @@ -3464,8 +3458,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/astro/test/fixtures/ssr-split-manifest: dependencies: @@ -3485,8 +3479,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/astro/test/fixtures/static-build-code-component: dependencies: @@ -3512,8 +3506,8 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 react: specifier: ^18.1.0 version: 18.2.0 @@ -3562,8 +3556,8 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 packages/astro/test/fixtures/tailwindcss: dependencies: @@ -3583,8 +3577,8 @@ importers: specifier: ^8.4.28 version: 8.4.31 tailwindcss: - specifier: ^3.3.3 - version: 3.3.3 + specifier: ^3.3.5 + version: 3.3.5 packages/astro/test/fixtures/tailwindcss-ts: dependencies: @@ -3598,8 +3592,8 @@ importers: specifier: ^8.4.28 version: 8.4.31 tailwindcss: - specifier: ^3.3.3 - version: 3.3.3 + specifier: ^3.3.5 + version: 3.3.5 packages/astro/test/fixtures/third-party-astro: dependencies: @@ -3607,8 +3601,8 @@ importers: specifier: workspace:* version: link:../../.. astro-embed: - specifier: ^0.5.1 - version: 0.5.1(astro@packages+astro) + specifier: ^0.6.0 + version: 0.6.0(astro@packages+astro) packages/astro/test/fixtures/type-imports: dependencies: @@ -3652,8 +3646,8 @@ importers: specifier: workspace:* version: link:../../.. vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) packages/astro/test/fixtures/vue-jsx: dependencies: @@ -3664,8 +3658,8 @@ importers: specifier: workspace:* version: link:../../.. vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) packages/astro/test/fixtures/vue-with-multi-renderer: dependencies: @@ -3679,11 +3673,11 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) packages/astro/test/fixtures/with-endpoint-routes: dependencies: @@ -3709,8 +3703,8 @@ importers: specifier: ^0.3.1 version: 0.3.1 giget: - specifier: 1.1.2 - version: 1.1.2 + specifier: 1.1.3 + version: 1.1.3 devDependencies: arg: specifier: ^5.0.2 @@ -3778,8 +3772,8 @@ importers: specifier: ^10.2.0 version: 10.2.0 sass: - specifier: ^1.66.1 - version: 1.69.4 + specifier: ^1.69.5 + version: 1.69.5 packages/integrations/markdoc: dependencies: @@ -3790,11 +3784,11 @@ importers: specifier: workspace:* version: link:../../astro-prism '@markdoc/markdoc': - specifier: ^0.3.0 - version: 0.3.4 + specifier: ^0.3.5 + version: 0.3.5 esbuild: - specifier: ^0.19.2 - version: 0.19.5 + specifier: ^0.19.6 + version: 0.19.6 github-slugger: specifier: ^2.0.0 version: 2.0.0 @@ -3808,8 +3802,8 @@ importers: specifier: ^4.1.5 version: 4.1.5 shikiji: - specifier: ^0.6.8 - version: 0.6.10 + specifier: ^0.6.13 + version: 0.6.13 zod: specifier: ^3.22.4 version: 3.22.4 @@ -3818,17 +3812,17 @@ importers: specifier: workspace:* version: link:../../markdown/remark '@types/chai': - specifier: ^4.3.5 - version: 4.3.9 + specifier: ^4.3.10 + version: 4.3.10 '@types/html-escaper': - specifier: ^3.0.0 - version: 3.0.1 + specifier: ^3.0.2 + version: 3.0.2 '@types/markdown-it': - specifier: ^13.0.0 - version: 13.0.4 + specifier: ^13.0.6 + version: 13.0.6 '@types/mocha': - specifier: ^10.0.1 - version: 10.0.3 + specifier: ^10.0.4 + version: 10.0.4 astro: specifier: workspace:* version: link:../../astro @@ -3842,14 +3836,14 @@ importers: specifier: ^4.3.2 version: 4.3.2 linkedom: - specifier: ^0.15.1 - version: 0.15.6 + specifier: ^0.16.4 + version: 0.16.4 mocha: specifier: ^10.2.0 version: 10.2.0 vite: specifier: ^5.0.0 - version: 5.0.0(@types/node@18.18.6)(sass@1.69.4) + version: 5.0.0(@types/node@18.18.6)(sass@1.69.5) packages/integrations/markdoc/test/fixtures/content-collections: dependencies: @@ -3974,17 +3968,17 @@ importers: specifier: workspace:* version: link:../../markdown/remark '@mdx-js/mdx': - specifier: ^2.3.0 - version: 2.3.0 + specifier: ^3.0.0 + version: 3.0.0 acorn: - specifier: ^8.10.0 - version: 8.10.0 + specifier: ^8.11.2 + version: 8.11.2 es-module-lexer: - specifier: ^1.3.0 - version: 1.3.1 + specifier: ^1.4.1 + version: 1.4.1 estree-util-visit: - specifier: ^1.2.1 - version: 1.2.1 + specifier: ^2.0.0 + version: 2.0.0 github-slugger: specifier: ^2.0.0 version: 2.0.0 @@ -3992,17 +3986,17 @@ importers: specifier: ^4.0.3 version: 4.0.3 hast-util-to-html: - specifier: ^8.0.4 - version: 8.0.4 + specifier: ^9.0.0 + version: 9.0.0 kleur: specifier: ^4.1.4 version: 4.1.5 rehype-raw: - specifier: ^6.1.1 - version: 6.1.1 + specifier: ^7.0.0 + version: 7.0.0 remark-gfm: - specifier: ^3.0.1 - version: 3.0.1 + specifier: ^4.0.0 + version: 4.0.0 remark-smartypants: specifier: ^2.0.0 version: 2.0.0 @@ -4010,27 +4004,27 @@ importers: specifier: ^0.7.4 version: 0.7.4 unist-util-visit: - specifier: ^4.1.2 - version: 4.1.2 + specifier: ^5.0.0 + version: 5.0.0 vfile: - specifier: ^5.3.7 - version: 5.3.7 + specifier: ^6.0.1 + version: 6.0.1 devDependencies: '@types/chai': - specifier: ^4.3.5 - version: 4.3.9 + specifier: ^4.3.10 + version: 4.3.10 '@types/estree': - specifier: ^1.0.1 - version: 1.0.3 + specifier: ^1.0.5 + version: 1.0.5 '@types/mdast': - specifier: ^3.0.12 - version: 3.0.14 + specifier: ^4.0.3 + version: 4.0.3 '@types/mocha': - specifier: ^10.0.1 - version: 10.0.3 + specifier: ^10.0.4 + version: 10.0.4 '@types/yargs-parser': - specifier: ^21.0.0 - version: 21.0.2 + specifier: ^21.0.3 + version: 21.0.3 astro: specifier: workspace:* version: link:../../astro @@ -4044,14 +4038,14 @@ importers: specifier: 1.0.0-rc.12 version: 1.0.0-rc.12 linkedom: - specifier: ^0.15.1 - version: 0.15.6 + specifier: ^0.16.4 + version: 0.16.4 mdast-util-mdx: - specifier: ^2.0.1 - version: 2.0.1 + specifier: ^3.0.0 + version: 3.0.0 mdast-util-to-string: - specifier: ^3.2.0 - version: 3.2.0 + specifier: ^4.0.0 + version: 4.0.0 mocha: specifier: ^10.2.0 version: 10.2.0 @@ -4059,29 +4053,29 @@ importers: specifier: ^1.5.0 version: 1.5.0 rehype-mathjax: - specifier: ^4.0.3 - version: 4.0.3 + specifier: ^5.0.0 + version: 5.0.0 rehype-pretty-code: - specifier: ^0.10.0 - version: 0.10.1 + specifier: ^0.10.2 + version: 0.10.2 remark-math: - specifier: ^5.1.1 - version: 5.1.1 + specifier: ^6.0.0 + version: 6.0.0 remark-rehype: - specifier: ^10.1.0 - version: 10.1.0 + specifier: ^11.0.0 + version: 11.0.0 remark-shiki-twoslash: specifier: ^3.1.3 - version: 3.1.3(typescript@5.1.6) + version: 3.1.3(typescript@5.2.2) remark-toc: - specifier: ^8.0.1 - version: 8.0.1 + specifier: ^9.0.0 + version: 9.0.0 unified: - specifier: ^10.1.2 - version: 10.1.2 + specifier: ^11.0.4 + version: 11.0.4 vite: specifier: ^5.0.0 - version: 5.0.0(@types/node@18.18.6)(sass@1.69.4) + version: 5.0.0(@types/node@18.18.6)(sass@1.69.5) packages/integrations/mdx/test/fixtures/css-head-mdx: dependencies: @@ -4140,8 +4134,8 @@ importers: specifier: workspace:* version: link:../../../../../astro preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/integrations/mdx/test/fixtures/mdx-namespace: dependencies: @@ -4227,11 +4221,11 @@ importers: specifier: ^18.17.8 version: 18.18.6 '@types/send': - specifier: ^0.17.1 - version: 0.17.3 + specifier: ^0.17.4 + version: 0.17.4 '@types/server-destroy': - specifier: ^1.0.1 - version: 1.0.2 + specifier: ^1.0.3 + version: 1.0.3 astro: specifier: workspace:* version: link:../../astro @@ -4382,22 +4376,22 @@ importers: dependencies: '@babel/plugin-transform-react-jsx': specifier: ^7.22.5 - version: 7.22.15 + version: 7.22.15(@babel/core@7.23.3) '@babel/plugin-transform-react-jsx-development': specifier: ^7.22.5 version: 7.22.5 '@preact/preset-vite': - specifier: ^2.5.0 - version: 2.6.0(preact@10.18.1) + specifier: ^2.7.0 + version: 2.7.0(preact@10.19.2) '@preact/signals': specifier: ^1.2.1 - version: 1.2.1(preact@10.18.1) + version: 1.2.1(preact@10.19.2) babel-plugin-transform-hook-names: specifier: ^1.0.2 version: 1.0.2 preact-render-to-string: - specifier: ^6.2.1 - version: 6.2.2(preact@10.18.1) + specifier: ^6.3.1 + version: 6.3.1(preact@10.19.2) devDependencies: astro: specifier: workspace:* @@ -4406,8 +4400,8 @@ importers: specifier: workspace:* version: link:../../../scripts preact: - specifier: ^10.17.1 - version: 10.18.1 + specifier: ^10.19.2 + version: 10.19.2 packages/integrations/prefetch: dependencies: @@ -4416,8 +4410,8 @@ importers: version: 1.0.1 devDependencies: '@playwright/test': - specifier: ^1.37.1 - version: 1.39.0 + specifier: ^1.40.0 + version: 1.40.0 astro: specifier: workspace:* version: link:../../astro @@ -4453,11 +4447,11 @@ importers: version: 1.5.2 devDependencies: '@types/react': - specifier: ^18.2.21 - version: 18.2.31 + specifier: ^18.2.37 + version: 18.2.37 '@types/react-dom': - specifier: ^18.2.7 - version: 18.2.14 + specifier: ^18.2.15 + version: 18.2.15 astro: specifier: workspace:* version: link:../../astro @@ -4470,6 +4464,9 @@ importers: cheerio: specifier: 1.0.0-rc.12 version: 1.0.0-rc.12 + mocha: + specifier: ^10.2.0 + version: 10.2.0 react: specifier: ^18.1.0 version: 18.2.0 @@ -4478,7 +4475,7 @@ importers: version: 18.2.0(react@18.2.0) vite: specifier: ^5.0.0 - version: 5.0.0(@types/node@18.18.6)(sass@1.69.4) + version: 5.0.0(@types/node@18.18.6)(sass@1.69.5) packages/integrations/react/test/fixtures/react-component: dependencies: @@ -4498,8 +4495,8 @@ importers: specifier: ^18.1.0 version: 18.2.0(react@18.2.0) vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) packages/integrations/sitemap: dependencies: @@ -4560,7 +4557,7 @@ importers: dependencies: vite-plugin-solid: specifier: ^2.7.0 - version: 2.7.2(solid-js@1.8.3) + version: 2.7.2(solid-js@1.8.5) devDependencies: astro: specifier: workspace:* @@ -4569,17 +4566,17 @@ importers: specifier: workspace:* version: link:../../../scripts solid-js: - specifier: ^1.7.11 - version: 1.8.3 + specifier: ^1.8.5 + version: 1.8.5 packages/integrations/svelte: dependencies: '@sveltejs/vite-plugin-svelte': specifier: ^3.0.0 - version: 3.0.0(svelte@4.2.2)(vite@5.0.0) + version: 3.0.0(svelte@4.2.5)(vite@5.0.0) svelte2tsx: - specifier: ^0.6.20 - version: 0.6.23(svelte@4.2.2)(typescript@5.1.6) + specifier: ^0.6.25 + version: 0.6.25(svelte@4.2.5)(typescript@5.2.2) devDependencies: astro: specifier: workspace:* @@ -4588,11 +4585,11 @@ importers: specifier: workspace:* version: link:../../../scripts svelte: - specifier: ^4.2.0 - version: 4.2.2 + specifier: ^4.2.5 + version: 4.2.5 vite: specifier: ^5.0.0 - version: 5.0.0(@types/node@18.18.6)(sass@1.69.4) + version: 5.0.0(@types/node@18.18.6)(sass@1.69.5) packages/integrations/tailwind: dependencies: @@ -4603,8 +4600,8 @@ importers: specifier: ^8.4.28 version: 8.4.31 postcss-load-config: - specifier: ^4.0.1 - version: 4.0.1(postcss@8.4.31) + specifier: ^4.0.2 + version: 4.0.2(postcss@8.4.31) devDependencies: astro: specifier: workspace:* @@ -4613,11 +4610,11 @@ importers: specifier: workspace:* version: link:../../../scripts tailwindcss: - specifier: ^3.3.3 - version: 3.3.3 + specifier: ^3.3.5 + version: 3.3.5 vite: specifier: ^5.0.0 - version: 5.0.0(@types/node@18.18.6)(sass@1.69.4) + version: 5.0.0(@types/node@18.18.6)(sass@1.69.5) packages/integrations/vercel: dependencies: @@ -4628,14 +4625,14 @@ importers: specifier: ^1.0.2 version: 1.1.1 '@vercel/nft': - specifier: ^0.23.1 - version: 0.23.1 + specifier: ^0.24.3 + version: 0.24.3 esbuild: - specifier: ^0.19.2 - version: 0.19.5 + specifier: ^0.19.6 + version: 0.19.6 fast-glob: - specifier: ^3.3.1 - version: 3.3.1 + specifier: ^3.3.2 + version: 3.3.2 set-cookie-parser: specifier: ^2.6.0 version: 2.6.0 @@ -4644,11 +4641,11 @@ importers: version: 3.5.0 devDependencies: '@types/set-cookie-parser': - specifier: ^2.4.3 - version: 2.4.5 + specifier: ^2.4.6 + version: 2.4.6 '@vercel/edge': - specifier: ^1.0.0 - version: 1.1.0 + specifier: ^1.1.1 + version: 1.1.1 astro: specifier: workspace:* version: link:../../astro @@ -4825,20 +4822,20 @@ importers: dependencies: '@vitejs/plugin-vue': specifier: ^4.5.0 - version: 4.5.0(vite@5.0.0)(vue@3.3.6) + version: 4.5.0(vite@5.0.0)(vue@3.3.8) '@vitejs/plugin-vue-jsx': specifier: ^3.1.0 - version: 3.1.0(vite@5.0.0)(vue@3.3.6) + version: 3.1.0(vite@5.0.0)(vue@3.3.8) '@vue/babel-plugin-jsx': specifier: ^1.1.5 version: 1.1.5(@babel/core@7.23.3) '@vue/compiler-sfc': - specifier: ^3.3.4 - version: 3.3.6 + specifier: ^3.3.8 + version: 3.3.8 devDependencies: '@types/chai': - specifier: ^4.3.5 - version: 4.3.9 + specifier: ^4.3.10 + version: 4.3.10 astro: specifier: workspace:* version: link:../../astro @@ -4852,17 +4849,17 @@ importers: specifier: 1.0.0-rc.12 version: 1.0.0-rc.12 linkedom: - specifier: ^0.15.1 - version: 0.15.6 + specifier: ^0.16.4 + version: 0.16.4 mocha: specifier: ^10.2.0 version: 10.2.0 vite: specifier: ^5.0.0 - version: 5.0.0(@types/node@18.18.6)(sass@1.69.4) + version: 5.0.0(@types/node@18.18.6)(sass@1.69.5) vue: - specifier: ^3.3.4 - version: 3.3.6(typescript@5.1.6) + specifier: ^3.3.8 + version: 3.3.8(typescript@5.2.2) packages/integrations/vue/test/fixtures/app-entrypoint: dependencies: @@ -4873,8 +4870,8 @@ importers: specifier: workspace:* version: link:../../../../../astro vite-svg-loader: - specifier: 4.0.0 - version: 4.0.0 + specifier: 5.0.1 + version: 5.0.1 packages/integrations/vue/test/fixtures/basics: dependencies: @@ -4900,60 +4897,60 @@ importers: specifier: ^2.0.0 version: 2.0.0 import-meta-resolve: - specifier: ^3.0.0 - version: 3.0.0 + specifier: ^4.0.0 + version: 4.0.0 mdast-util-definitions: specifier: ^6.0.0 version: 6.0.0 rehype-raw: - specifier: ^6.1.1 - version: 6.1.1 + specifier: ^7.0.0 + version: 7.0.0 rehype-stringify: - specifier: ^9.0.4 - version: 9.0.4 + specifier: ^10.0.0 + version: 10.0.0 remark-gfm: - specifier: ^3.0.1 - version: 3.0.1 + specifier: ^4.0.0 + version: 4.0.0 remark-parse: - specifier: ^10.0.2 - version: 10.0.2 + specifier: ^11.0.0 + version: 11.0.0 remark-rehype: - specifier: ^10.1.0 - version: 10.1.0 + specifier: ^11.0.0 + version: 11.0.0 remark-smartypants: specifier: ^2.0.0 version: 2.0.0 shikiji: - specifier: ^0.6.8 - version: 0.6.10 + specifier: ^0.6.13 + version: 0.6.13 unified: - specifier: ^10.1.2 - version: 10.1.2 + specifier: ^11.0.4 + version: 11.0.4 unist-util-visit: - specifier: ^4.1.2 - version: 4.1.2 + specifier: ^5.0.0 + version: 5.0.0 vfile: - specifier: ^5.3.7 - version: 5.3.7 + specifier: ^6.0.1 + version: 6.0.1 devDependencies: '@types/chai': - specifier: ^4.3.5 - version: 4.3.9 + specifier: ^4.3.10 + version: 4.3.10 '@types/estree': - specifier: ^1.0.1 - version: 1.0.3 + specifier: ^1.0.5 + version: 1.0.5 '@types/hast': - specifier: ^2.3.5 - version: 2.3.7 + specifier: ^3.0.3 + version: 3.0.3 '@types/mdast': - specifier: ^3.0.12 - version: 3.0.14 + specifier: ^4.0.3 + version: 4.0.3 '@types/mocha': - specifier: ^10.0.1 - version: 10.0.3 + specifier: ^10.0.4 + version: 10.0.4 '@types/unist': - specifier: ^2.0.7 - version: 2.0.9 + specifier: ^3.0.2 + version: 3.0.2 astro-scripts: specifier: workspace:* version: link:../../../scripts @@ -4961,8 +4958,8 @@ importers: specifier: ^4.3.7 version: 4.3.10 mdast-util-mdx-expression: - specifier: ^1.3.2 - version: 1.3.2 + specifier: ^2.0.0 + version: 2.0.0 mocha: specifier: ^10.2.0 version: 10.2.0 @@ -4970,8 +4967,8 @@ importers: packages/telemetry: dependencies: ci-info: - specifier: ^3.8.0 - version: 3.9.0 + specifier: ^4.0.0 + version: 4.0.0 debug: specifier: ^4.3.4 version: 4.3.4(supports-color@8.1.1) @@ -4979,8 +4976,8 @@ importers: specifier: ^1.1.3 version: 1.1.3 dset: - specifier: ^3.1.2 - version: 3.1.2 + specifier: ^3.1.3 + version: 3.1.3 is-docker: specifier: ^3.0.0 version: 3.0.0 @@ -4992,17 +4989,17 @@ importers: version: 1.1.0 devDependencies: '@types/debug': - specifier: ^4.1.8 - version: 4.1.10 + specifier: ^4.1.12 + version: 4.1.12 '@types/dlv': - specifier: ^1.1.2 - version: 1.1.3 + specifier: ^1.1.4 + version: 1.1.4 '@types/node': specifier: ^18.17.8 version: 18.18.6 '@types/which-pm-runs': - specifier: ^1.0.0 - version: 1.0.1 + specifier: ^1.0.2 + version: 1.0.2 astro-scripts: specifier: workspace:* version: link:../../scripts @@ -5016,11 +5013,11 @@ importers: packages/underscore-redirects: devDependencies: '@types/chai': - specifier: ^4.3.5 - version: 4.3.9 + specifier: ^4.3.10 + version: 4.3.10 '@types/mocha': - specifier: ^10.0.1 - version: 10.0.3 + specifier: ^10.0.4 + version: 10.0.4 astro: specifier: workspace:* version: link:../astro @@ -5034,28 +5031,71 @@ importers: specifier: ^10.2.0 version: 10.2.0 - scripts: + packages/upgrade: dependencies: + '@astrojs/cli-kit': + specifier: ^0.2.3 + version: 0.2.3 + semver: + specifier: ^7.5.4 + version: 7.5.4 + terminal-link: + specifier: ^3.0.0 + version: 3.0.0 + which-pm-runs: + specifier: ^1.1.0 + version: 1.1.0 + devDependencies: + '@types/semver': + specifier: ^7.5.2 + version: 7.5.4 + '@types/which-pm-runs': + specifier: ^1.0.0 + version: 1.0.2 arg: specifier: ^5.0.2 version: 5.0.2 - esbuild: - specifier: ^0.19.2 - version: 0.19.5 - globby: - specifier: ^13.2.2 - version: 13.2.2 - kleur: - specifier: ^4.1.4 - version: 4.1.5 - p-limit: - specifier: ^4.0.0 - version: 4.0.0 - svelte: - specifier: ^4.2.0 - version: 4.2.2 - tar: - specifier: ^6.1.15 + astro-scripts: + specifier: workspace:* + version: link:../../scripts + chai: + specifier: ^4.3.7 + version: 4.3.10 + mocha: + specifier: ^10.2.0 + version: 10.2.0 + strip-ansi: + specifier: ^7.1.0 + version: 7.1.0 + + packages/upgrade/test/fixtures/basic: + dependencies: + astro: + specifier: 1.0.0 + version: 1.0.0 + + scripts: + dependencies: + arg: + specifier: ^5.0.2 + version: 5.0.2 + esbuild: + specifier: ^0.19.6 + version: 0.19.6 + globby: + specifier: ^14.0.0 + version: 14.0.0 + kleur: + specifier: ^4.1.4 + version: 4.1.5 + p-limit: + specifier: ^5.0.0 + version: 5.0.0 + svelte: + specifier: ^4.2.5 + version: 4.2.5 + tar: + specifier: ^6.1.15 version: 6.2.0 devDependencies: '@octokit/action': @@ -5066,7 +5106,7 @@ importers: version: 7.1.0 esbuild-plugin-copy: specifier: ^2.1.1 - version: 2.1.1(esbuild@0.19.5) + version: 2.1.1(esbuild@0.19.6) execa: specifier: ^8.0.1 version: 8.0.1 @@ -5108,17 +5148,17 @@ packages: resolution: {integrity: sha512-ulkCYfFbYj01ie1MDOyxv2F6SpRN1TOj7fQxbP07D6HmeR+gr2JLSmINKjga2emB+b1L2KGrFKBTc+e00p54nw==} dev: false - /@astro-community/astro-embed-integration@0.5.1(astro@packages+astro): - resolution: {integrity: sha512-K1mJHRs0GGAwn2VmOR9JhXFOoCgW2G4GjjdJDqPncfT+BxeoTa/6IP7EMdRlHetIxNliPETVbleRUTV04ztrTA==} + /@astro-community/astro-embed-integration@0.6.0(astro@packages+astro): + resolution: {integrity: sha512-PQGtMLfZ1t0znrY/ElPu3gAT/up9rJVyEDaoqvhoUcEmhp7e99EiuTZNKNKIkeH+biWyKJoKTSClu300i91Kzw==} peerDependencies: astro: '*' dependencies: '@astro-community/astro-embed-twitter': 0.5.2(astro@packages+astro) '@astro-community/astro-embed-vimeo': 0.3.1(astro@packages+astro) '@astro-community/astro-embed-youtube': 0.4.1(astro@packages+astro) - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 astro: link:packages/astro - astro-auto-import: 0.3.1(astro@packages+astro) + astro-auto-import: 0.3.2(astro@packages+astro) unist-util-select: 4.0.3 dev: false @@ -5152,38 +5192,30 @@ packages: lite-youtube-embed: 0.2.0 dev: false - /@astrojs/check@0.1.0: - resolution: {integrity: sha512-tgjq+Vehgv0dwdsRlT4ai3QgT3etn8W5C4E4dvQ0Xe9ccwjKdMTWmpty5exfBtHLLAAOvwe5/OkYQsQ9OyKoVw==} + /@astrojs/check@0.3.1(prettier-plugin-astro@0.12.2)(prettier@3.1.0)(typescript@5.2.2): + resolution: {integrity: sha512-3LjEUvh7Z4v9NPokaqKMXQ0DwnSXfmtcyAuWVTjNt9yzjv54SxykobV5CTOB3TIko+Rqg59ejamJBxaJN6fvkw==} hasBin: true peerDependencies: typescript: ^5.0.0 dependencies: - '@astrojs/language-server': 2.4.0 + '@astrojs/language-server': 2.5.2(prettier-plugin-astro@0.12.2)(prettier@3.1.0)(typescript@5.2.2) chokidar: 3.5.3 - fast-glob: 3.3.1 + fast-glob: 3.3.2 kleur: 4.1.5 + typescript: 5.2.2 yargs: 17.7.2 transitivePeerDependencies: - prettier - prettier-plugin-astro dev: true - /@astrojs/check@0.1.0(prettier-plugin-astro@0.12.0)(prettier@3.0.3)(typescript@5.1.6): - resolution: {integrity: sha512-tgjq+Vehgv0dwdsRlT4ai3QgT3etn8W5C4E4dvQ0Xe9ccwjKdMTWmpty5exfBtHLLAAOvwe5/OkYQsQ9OyKoVw==} - hasBin: true - peerDependencies: - typescript: ^5.0.0 + /@astrojs/cli-kit@0.2.3: + resolution: {integrity: sha512-MjB42mpIG/F2rFtdp4f3NylFCILuFSib2yITSq65fRaDFn8+UC8EMh6T7Jr3YqHAbUY5r8V8QWNgH4keOEO2BA==} dependencies: - '@astrojs/language-server': 2.4.0(prettier-plugin-astro@0.12.0)(prettier@3.0.3)(typescript@5.1.6) - chokidar: 3.5.3 - fast-glob: 3.3.1 - kleur: 4.1.5 - typescript: 5.1.6 - yargs: 17.7.2 - transitivePeerDependencies: - - prettier - - prettier-plugin-astro - dev: true + chalk: 5.3.0 + log-update: 5.0.1 + sisteransi: 1.0.5 + dev: false /@astrojs/cli-kit@0.3.1: resolution: {integrity: sha512-BEzf3gudr4XrrrInJKD+GSS5O+GXRTukLUpOfgqdTSq6d48EWVhigNHobmlQGbpa9FEAw+sZmvmHmhS29QhnwA==} @@ -5194,54 +5226,35 @@ packages: sisteransi: 1.0.5 dev: false - /@astrojs/compiler@1.5.7: - resolution: {integrity: sha512-dFU7GAMbpTUGPkRoCoMQrGFlTe3qIiQMSOxIXp/nB1Do4My9uogjEmBHdR5Cwr4i6rc5/1R3Od9v8kU/pkHXGQ==} - dev: true + /@astrojs/compiler@0.23.5: + resolution: {integrity: sha512-vBMPy9ok4iLapSyCCT1qsZ9dK7LkVFl9mObtLEmWiec9myGHS9h2kQY2xzPeFNJiWXUf9O6tSyQpQTy5As/p3g==} + dev: false /@astrojs/compiler@1.8.2: resolution: {integrity: sha512-o/ObKgtMzl8SlpIdzaxFnt7SATKPxu4oIP/1NL+HDJRzxfJcAkOTAb/ZKMRyULbz4q+1t2/DAebs2Z1QairkZw==} dev: true - /@astrojs/compiler@2.3.0: - resolution: {integrity: sha512-pxYRAaRdMS6XUll8lbFM+Lr0DI1HKIDT+VpiC+S+9di5H/nmm3znZOgdMlLiMxADot+56eps+M1BvtKfQremXA==} - dev: false + /@astrojs/compiler@2.3.2: + resolution: {integrity: sha512-jkY7bCVxl27KeZsSxIZ+pqACe+g8VQUdTiSJRj/sXYdIaZlW3ZMq4qF2M17P/oDt3LBq0zLNwQr4Cb7fSpRGxQ==} - /@astrojs/language-server@2.4.0: - resolution: {integrity: sha512-L5lbTt1zZiCYGxahGhbJ1m2THaZxBBuA3MrwvhwZ+xVy6/k13W0Xy4nVe0gUBoCizZdKEDL3puoW615waJaTBQ==} + /@astrojs/language-server@0.20.3: + resolution: {integrity: sha512-MuzTsSpUjtmMXfrBThtZwgO39Jc+Bbl5hLevumkp01N/YCKE+Iipd3ELSdbk7+TPiuBV+/SKrVmaQPvJBnWPkA==} hasBin: true - peerDependencies: - prettier: ^3.0.0 - prettier-plugin-astro: '>=0.11.0' - peerDependenciesMeta: - prettier: - optional: true - prettier-plugin-astro: - optional: true dependencies: - '@astrojs/compiler': 1.5.7 - '@jridgewell/sourcemap-codec': 1.4.15 - '@volar/kit': 1.10.4 - '@volar/language-core': 1.10.4 - '@volar/language-server': 1.10.4 - '@volar/language-service': 1.10.4 - '@volar/source-map': 1.10.4 - '@volar/typescript': 1.10.4 - fast-glob: 3.3.1 - muggle-string: 0.3.1 - volar-service-css: 0.0.14(@volar/language-service@1.10.4) - volar-service-emmet: 0.0.14(@volar/language-service@1.10.4) - volar-service-html: 0.0.14(@volar/language-service@1.10.4) - volar-service-prettier: 0.0.14(@volar/language-service@1.10.4) - volar-service-typescript: 0.0.14(@volar/language-service@1.10.4)(@volar/typescript@1.10.4) - volar-service-typescript-twoslash-queries: 0.0.14(@volar/language-service@1.10.4) - vscode-html-languageservice: 5.1.0 + '@vscode/emmet-helper': 2.9.2 + source-map: 0.7.4 + typescript: 4.6.4 + vscode-css-languageservice: 6.2.10 + vscode-html-languageservice: 5.1.1 + vscode-languageserver: 8.1.0 + vscode-languageserver-protocol: 3.17.5 + vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-types: 3.17.5 vscode-uri: 3.0.8 - transitivePeerDependencies: - - typescript - dev: true + dev: false - /@astrojs/language-server@2.4.0(prettier-plugin-astro@0.12.0)(prettier@3.0.3)(typescript@5.1.6): - resolution: {integrity: sha512-L5lbTt1zZiCYGxahGhbJ1m2THaZxBBuA3MrwvhwZ+xVy6/k13W0Xy4nVe0gUBoCizZdKEDL3puoW615waJaTBQ==} + /@astrojs/language-server@2.5.2(prettier-plugin-astro@0.12.2)(prettier@3.1.0)(typescript@5.2.2): + resolution: {integrity: sha512-O5SMzoQ65wSxA1KygreI9UJYmHpgt15bSYBxceHwqX7OCDM4Ek8mr6mZn45LGDtwM3dp1uup7kp8exfRPwIFbA==} hasBin: true peerDependencies: prettier: ^3.0.0 @@ -5252,65 +5265,117 @@ packages: prettier-plugin-astro: optional: true dependencies: - '@astrojs/compiler': 1.5.7 + '@astrojs/compiler': 2.3.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@volar/kit': 1.10.4(typescript@5.1.6) - '@volar/language-core': 1.10.4 - '@volar/language-server': 1.10.4 - '@volar/language-service': 1.10.4 - '@volar/source-map': 1.10.4 - '@volar/typescript': 1.10.4 - fast-glob: 3.3.1 + '@volar/kit': 1.10.10(typescript@5.2.2) + '@volar/language-core': 1.10.10 + '@volar/language-server': 1.10.10 + '@volar/language-service': 1.10.10 + '@volar/source-map': 1.10.10 + '@volar/typescript': 1.10.10 + fast-glob: 3.3.2 muggle-string: 0.3.1 - prettier: 3.0.3 - prettier-plugin-astro: 0.12.0 - volar-service-css: 0.0.14(@volar/language-service@1.10.4) - volar-service-emmet: 0.0.14(@volar/language-service@1.10.4) - volar-service-html: 0.0.14(@volar/language-service@1.10.4) - volar-service-prettier: 0.0.14(@volar/language-service@1.10.4)(prettier@3.0.3) - volar-service-typescript: 0.0.14(@volar/language-service@1.10.4)(@volar/typescript@1.10.4) - volar-service-typescript-twoslash-queries: 0.0.14(@volar/language-service@1.10.4) - vscode-html-languageservice: 5.1.0 + prettier: 3.1.0 + prettier-plugin-astro: 0.12.2 + volar-service-css: 0.0.16(@volar/language-service@1.10.10) + volar-service-emmet: 0.0.16(@volar/language-service@1.10.10) + volar-service-html: 0.0.16(@volar/language-service@1.10.10) + volar-service-prettier: 0.0.16(@volar/language-service@1.10.10)(prettier@3.1.0) + volar-service-typescript: 0.0.16(@volar/language-service@1.10.10)(@volar/typescript@1.10.10) + volar-service-typescript-twoslash-queries: 0.0.16(@volar/language-service@1.10.10) + vscode-html-languageservice: 5.1.1 vscode-uri: 3.0.8 transitivePeerDependencies: - typescript dev: true - /@babel/code-frame@7.22.13: - resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} - engines: {node: '>=6.9.0'} + /@astrojs/markdown-remark@1.2.0: + resolution: {integrity: sha512-Cb+uhSuukyfERknfJ8K4iJLeKJaiZWi1BTwPS4fzw0bc9kGKe5VeTRzd2E25+vaMnRTk0tN/y6QfYEMMN3Q97g==} dependencies: - '@babel/highlight': 7.22.20 - chalk: 2.4.2 + '@astrojs/micromark-extension-mdx-jsx': 1.0.3 + '@astrojs/prism': 1.0.2 + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + github-slugger: 1.5.0 + hast-util-to-html: 8.0.4 + import-meta-resolve: 2.2.2 + mdast-util-from-markdown: 1.3.1 + mdast-util-mdx-expression: 1.3.2 + mdast-util-mdx-jsx: 1.2.0 + micromark-extension-mdx-expression: 1.0.8 + micromark-extension-mdx-md: 1.0.1 + micromark-util-combine-extensions: 1.1.0 + rehype-raw: 6.1.1 + rehype-stringify: 9.0.4 + remark-gfm: 3.0.1 + remark-parse: 10.0.2 + remark-rehype: 10.1.0 + remark-smartypants: 2.0.0 + shiki: 0.11.1 + unified: 10.1.2 + unist-util-map: 3.1.3 + unist-util-visit: 4.1.2 + vfile: 5.3.7 + transitivePeerDependencies: + - supports-color + dev: false - /@babel/compat-data@7.23.2: - resolution: {integrity: sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==} - engines: {node: '>=6.9.0'} + /@astrojs/micromark-extension-mdx-jsx@1.0.3: + resolution: {integrity: sha512-O15+i2DGG0qb1R/1SYbFXgOKDGbYdV8iJMtuboVb1S9YFQfMOJxaCMco0bhXQI7PmZcQ4pZWIjT5oZ64dXUtRA==} + dependencies: + '@types/acorn': 4.0.6 + estree-util-is-identifier-name: 2.1.0 + micromark-factory-mdx-expression: 1.0.9 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + vfile-message: 3.1.4 dev: false - /@babel/core@7.23.2: - resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} - engines: {node: '>=6.9.0'} + /@astrojs/prism@1.0.2: + resolution: {integrity: sha512-o3cUVoAuALDqdN5puNlsN2eO4Yi1kDh68YO8V7o6U4Ts+J/mMayzlJ7JsgYAmob0xrf/XnADVgu8khfMv/w3uA==} + engines: {node: ^14.18.0 || >=16.12.0} dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.23.0 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) - '@babel/helpers': 7.23.2 - '@babel/parser': 7.23.0 - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.2 - '@babel/types': 7.23.0 - convert-source-map: 2.0.0 + prismjs: 1.29.0 + dev: false + + /@astrojs/telemetry@1.0.1: + resolution: {integrity: sha512-SJVfZHp00f8VZsT1fsx1+6acJGUNt/84xZytV5znPzzNE8RXjlE0rv03llgTsEeUHYZc6uJah91jNojS7RldFg==} + engines: {node: ^14.18.0 || >=16.12.0} + dependencies: + ci-info: 3.9.0 debug: 4.3.4(supports-color@8.1.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 + dlv: 1.1.3 + dset: 3.1.3 + is-docker: 3.0.0 + is-wsl: 2.2.0 + node-fetch: 3.3.2 + which-pm-runs: 1.1.0 transitivePeerDependencies: - supports-color dev: false + /@astrojs/webapi@1.1.1: + resolution: {integrity: sha512-yeUvP27PoiBK/WCxyQzC4HLYZo4Hg6dzRd/dTsL50WGlAQVCwWcqzVJrIZKvzNDNaW/fIXutZTmdj6nec0PIGg==} + dependencies: + global-agent: 3.0.0 + node-fetch: 3.3.2 + dev: false + + /@babel/code-frame@7.22.13: + resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.22.20 + chalk: 2.4.2 + + /@babel/compat-data@7.23.3: + resolution: {integrity: sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==} + engines: {node: '>=6.9.0'} + dev: false + /@babel/core@7.23.3: resolution: {integrity: sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==} engines: {node: '>=6.9.0'} @@ -5334,16 +5399,6 @@ packages: - supports-color dev: false - /@babel/generator@7.23.0: - resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.0 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - jsesc: 2.5.2 - dev: false - /@babel/generator@7.23.3: resolution: {integrity: sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==} engines: {node: '>=6.9.0'} @@ -5358,48 +5413,27 @@ packages: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.3 dev: false /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.3 dev: false /@babel/helper-compilation-targets@7.22.15: resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.23.2 + '@babel/compat-data': 7.23.3 '@babel/helper-validator-option': 7.22.15 browserslist: 4.22.1 lru-cache: 5.1.1 semver: 6.3.1 dev: false - /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.2): - resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - peerDependenciesMeta: - '@babel/core': - optional: true - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - semver: 6.3.1 - dev: false - /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.3): resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} engines: {node: '>=6.9.0'} @@ -5421,7 +5455,7 @@ packages: semver: 6.3.1 dev: false - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.2): + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.3): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: @@ -5430,13 +5464,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 dev: false - /@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.23.2): + /@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.23.3): resolution: {integrity: sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -5444,7 +5478,7 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4(supports-color@8.1.1) @@ -5464,52 +5498,35 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/types': 7.23.0 + '@babel/types': 7.23.3 dev: false /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.3 dev: false /@babel/helper-member-expression-to-functions@7.23.0: resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.3 dev: false /@babel/helper-module-imports@7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.3 dev: false /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 - dev: false - - /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.2): - resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - peerDependenciesMeta: - '@babel/core': - optional: true - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/types': 7.23.3 dev: false /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.3): @@ -5533,7 +5550,7 @@ packages: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.3 dev: false /@babel/helper-plugin-utils@7.22.5: @@ -5541,7 +5558,7 @@ packages: engines: {node: '>=6.9.0'} dev: false - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.2): + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.3): resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -5550,27 +5567,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 dev: false - /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.2): - resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - peerDependenciesMeta: - '@babel/core': - optional: true - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - dev: false - /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.3): resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} @@ -5590,21 +5592,21 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.3 dev: false /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.3 dev: false /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.3 dev: false /@babel/helper-string-parser@7.22.5: @@ -5626,7 +5628,7 @@ packages: dependencies: '@babel/helper-function-name': 7.23.0 '@babel/template': 7.22.15 - '@babel/types': 7.23.0 + '@babel/types': 7.23.3 dev: false /@babel/helpers@7.23.2: @@ -5634,8 +5636,8 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/traverse': 7.23.2 - '@babel/types': 7.23.0 + '@babel/traverse': 7.23.3 + '@babel/types': 7.23.3 transitivePeerDependencies: - supports-color dev: false @@ -5648,23 +5650,15 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser@7.23.0: - resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.23.0 - /@babel/parser@7.23.3: resolution: {integrity: sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==} engines: {node: '>=6.0.0'} hasBin: true dependencies: '@babel/types': 7.23.3 - dev: false - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.15(@babel/core@7.23.2): - resolution: {integrity: sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==} + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -5672,12 +5666,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.15(@babel/core@7.23.2): - resolution: {integrity: sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 @@ -5685,13 +5679,27 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.23.3) + dev: false + + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + peerDependenciesMeta: + '@babel/core': + optional: true + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.2): + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.3): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: @@ -5700,10 +5708,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 dev: false - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.2): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.3): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5711,11 +5719,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.2): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.3): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5723,11 +5731,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.2): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.3): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -5736,11 +5744,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.2): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5748,11 +5756,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.2): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5760,12 +5768,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} + /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5773,12 +5781,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} + /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5786,11 +5794,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.2): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.3): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5798,11 +5806,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.2): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5810,20 +5818,7 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: false - - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true - dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -5840,7 +5835,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.2): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.3): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5848,11 +5843,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.2): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5860,11 +5855,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.2): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.3): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5872,11 +5867,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.2): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5884,11 +5879,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.2): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5896,11 +5891,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.2): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5908,11 +5903,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.2): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.3): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -5921,11 +5916,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.2): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.3): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -5934,11 +5929,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.2): + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -5947,24 +5942,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - dev: false - - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.2): + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.3): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -5973,13 +5955,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/core': 7.23.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} + /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5987,12 +5969,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-async-generator-functions@7.23.2(@babel/core@7.23.2): - resolution: {integrity: sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==} + /@babel/plugin-transform-async-generator-functions@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-59GsVNavGxAXCDDbakWSMJhajASb4kBCqDjqJsv+p5nKdbz7istmZ3HrX3L2LuiI80+zsOADCvooqQH3qGCucQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6000,15 +5982,15 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.3) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.3) dev: false - /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} + /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6016,14 +5998,14 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.2) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.3) dev: false - /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} + /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6031,12 +6013,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-block-scoping@7.23.0(@babel/core@7.23.2): - resolution: {integrity: sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==} + /@babel/plugin-transform-block-scoping@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-QPZxHrThbQia7UdvfpaRRlq/J9ciz1J4go0k+lPBXbgaNeY7IQrBj/9ceWjvMMI07/ZBzHl/F0R/2K0qH7jCVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6044,12 +6026,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} + /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6057,13 +6039,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/core': 7.23.3 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-class-static-block@7.22.11(@babel/core@7.23.2): - resolution: {integrity: sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==} + /@babel/plugin-transform-class-static-block@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-PENDVxdr7ZxKPyi5Ffc0LjXdnJyrJxyqF5T5YjlVg4a0VFfQHW0r8iAtRiDXkfHlu1wwcvdtnndGYIeJLSuRMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 @@ -6071,14 +6053,14 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/core': 7.23.3 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.2) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.3) dev: false - /@babel/plugin-transform-classes@7.22.15(@babel/core@7.23.2): - resolution: {integrity: sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==} + /@babel/plugin-transform-classes@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6086,20 +6068,20 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.3) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 dev: false - /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} + /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6107,13 +6089,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.15 dev: false - /@babel/plugin-transform-destructuring@7.23.0(@babel/core@7.23.2): - resolution: {integrity: sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==} + /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6121,12 +6103,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} + /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6134,13 +6116,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/core': 7.23.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} + /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6148,12 +6130,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-dynamic-import@7.22.11(@babel/core@7.23.2): - resolution: {integrity: sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==} + /@babel/plugin-transform-dynamic-import@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-vTG+cTGxPFou12Rj7ll+eD5yWeNl5/8xvQvF08y5Gv3v4mZQoyFf8/n9zg4q5vvCWt5jmgymfzMAldO7orBn7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6161,13 +6143,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.3) dev: false - /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} + /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6175,13 +6157,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-export-namespace-from@7.22.11(@babel/core@7.23.2): - resolution: {integrity: sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==} + /@babel/plugin-transform-export-namespace-from@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-yCLhW34wpJWRdTxxWtFZASJisihrfyMOTOQexhVzA78jlU+dH7Dw+zQgcPepQ5F3C6bAIiblZZ+qBggJdHiBAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6189,13 +6171,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.3) dev: false - /@babel/plugin-transform-for-of@7.22.15(@babel/core@7.23.2): - resolution: {integrity: sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==} + /@babel/plugin-transform-for-of@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6203,12 +6185,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} + /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6216,14 +6198,14 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-json-strings@7.22.11(@babel/core@7.23.2): - resolution: {integrity: sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==} + /@babel/plugin-transform-json-strings@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-H9Ej2OiISIZowZHaBwF0tsJOih1PftXJtE8EWqlEIwpc7LMTGq0rPOrywKLQ4nefzx8/HMR0D3JGXoMHYvhi0A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6231,13 +6213,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.3) dev: false - /@babel/plugin-transform-literals@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} + /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6245,12 +6227,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-logical-assignment-operators@7.22.11(@babel/core@7.23.2): - resolution: {integrity: sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==} + /@babel/plugin-transform-logical-assignment-operators@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-+pD5ZbxofyOygEp+zZAfujY2ShNCXRpDRIPOiBmTO693hhyOEteZgl876Xs9SAHPQpcV0vz8LvA/T+w8AzyX8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6258,13 +6240,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.3) dev: false - /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} + /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6272,12 +6254,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-modules-amd@7.23.0(@babel/core@7.23.2): - resolution: {integrity: sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==} + /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6285,12 +6267,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 - '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/core': 7.23.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-modules-commonjs@7.23.0(@babel/core@7.23.2): + /@babel/plugin-transform-modules-commonjs@7.23.0(@babel/core@7.23.3): resolution: {integrity: sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -6299,14 +6281,29 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 - '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/core': 7.23.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + dev: false + + /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 dev: false - /@babel/plugin-transform-modules-systemjs@7.23.0(@babel/core@7.23.2): - resolution: {integrity: sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==} + /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6314,15 +6311,15 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-identifier': 7.22.20 dev: false - /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} + /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6330,12 +6327,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 - '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/core': 7.23.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.2): + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.3): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -6344,13 +6341,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/core': 7.23.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} + /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6358,12 +6355,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-nullish-coalescing-operator@7.22.11(@babel/core@7.23.2): - resolution: {integrity: sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==} + /@babel/plugin-transform-nullish-coalescing-operator@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-xzg24Lnld4DYIdysyf07zJ1P+iIfJpxtVFOzX4g+bsJ3Ng5Le7rXx9KwqKzuyaUeRnt+I1EICwQITqc0E2PmpA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6371,13 +6368,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.3) dev: false - /@babel/plugin-transform-numeric-separator@7.22.11(@babel/core@7.23.2): - resolution: {integrity: sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==} + /@babel/plugin-transform-numeric-separator@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-s9GO7fIBi/BLsZ0v3Rftr6Oe4t0ctJ8h4CCXfPoEJwmvAPMyNrfkOOJzm6b9PX9YXcCJWWQd/sBF/N26eBiMVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6385,13 +6382,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.3) dev: false - /@babel/plugin-transform-object-rest-spread@7.22.15(@babel/core@7.23.2): - resolution: {integrity: sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==} + /@babel/plugin-transform-object-rest-spread@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-VxHt0ANkDmu8TANdE9Kc0rndo/ccsmfe2Cx2y5sI4hu3AukHQ5wAu4cM7j3ba8B9548ijVyclBU+nuDQftZsog==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6399,16 +6396,16 @@ packages: '@babel/core': optional: true dependencies: - '@babel/compat-data': 7.23.2 - '@babel/core': 7.23.2 + '@babel/compat-data': 7.23.3 + '@babel/core': 7.23.3 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) - '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.3) dev: false - /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} + /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6416,13 +6413,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.3) dev: false - /@babel/plugin-transform-optional-catch-binding@7.22.11(@babel/core@7.23.2): - resolution: {integrity: sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==} + /@babel/plugin-transform-optional-catch-binding@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-LxYSb0iLjUamfm7f1D7GpiS4j0UAC8AOiehnsGAP8BEsIX8EOi3qV6bbctw8M7ZvLtcoZfZX5Z7rN9PlWk0m5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6430,13 +6427,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.3) dev: false - /@babel/plugin-transform-optional-chaining@7.23.0(@babel/core@7.23.2): - resolution: {integrity: sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==} + /@babel/plugin-transform-optional-chaining@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-zvL8vIfIUgMccIAK1lxjvNv572JHFJIKb4MWBz5OGdBQA0fB0Xluix5rmOby48exiJc987neOmP/m9Fnpkz3Tg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6444,14 +6441,14 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.3) dev: false - /@babel/plugin-transform-parameters@7.22.15(@babel/core@7.23.2): - resolution: {integrity: sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==} + /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6459,12 +6456,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} + /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6472,13 +6469,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/core': 7.23.3 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-private-property-in-object@7.22.11(@babel/core@7.23.2): - resolution: {integrity: sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==} + /@babel/plugin-transform-private-property-in-object@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-a5m2oLNFyje2e/rGKjVfAELTVI5mbA0FeZpBnkOWWV7eSmKQ+T/XW0Vf+29ScLzSxX+rnsarvU0oie/4m6hkxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6486,15 +6483,15 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.2) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.3) dev: false - /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} + /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6502,7 +6499,7 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -6515,7 +6512,7 @@ packages: '@babel/core': optional: true dependencies: - '@babel/plugin-transform-react-jsx': 7.22.15 + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.3) dev: false /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.3): @@ -6544,7 +6541,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-react-jsx@7.22.15: + /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.23.3): resolution: {integrity: sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -6553,32 +6550,16 @@ packages: '@babel/core': optional: true dependencies: + '@babel/core': 7.23.3 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.3) - '@babel/types': 7.23.0 - dev: false - - /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.23.2): - resolution: {integrity: sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2) - '@babel/types': 7.23.0 + '@babel/types': 7.23.3 dev: false - /@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.23.2): - resolution: {integrity: sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==} + /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6586,13 +6567,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.2 dev: false - /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} + /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6600,12 +6581,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} + /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6613,12 +6594,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-spread@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} + /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6626,26 +6607,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: false - /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: false - - /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} + /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6653,12 +6621,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} + /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6666,12 +6634,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-typescript@7.23.3(@babel/core@7.23.2): - resolution: {integrity: sha512-ogV0yWnq38CFwH20l2Afz0dfKuZBx9o/Y2Rmh5vuSS0YD1hswgEgTfyTzuSrT2q9btmHRSqYoSfwFUVaC1M1Jw==} + /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6679,11 +6647,8 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.2) dev: false /@babel/plugin-transform-typescript@7.23.3(@babel/core@7.23.3): @@ -6702,8 +6667,8 @@ packages: '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.3) dev: false - /@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.23.2): - resolution: {integrity: sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==} + /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6711,12 +6676,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} + /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6724,13 +6689,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/core': 7.23.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} + /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6738,13 +6703,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/core': 7.23.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} + /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -6752,13 +6717,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/core': 7.23.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/preset-env@7.23.2(@babel/core@7.23.2): - resolution: {integrity: sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ==} + /@babel/preset-env@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6766,92 +6731,92 @@ packages: '@babel/core': optional: true dependencies: - '@babel/compat-data': 7.23.2 - '@babel/core': 7.23.2 + '@babel/compat-data': 7.23.3 + '@babel/core': 7.23.3 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.15(@babel/core@7.23.2) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.15(@babel/core@7.23.2) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.2) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.2) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.2) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.2) - '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.2) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.2) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.2) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.2) - '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-async-generator-functions': 7.23.2(@babel/core@7.23.2) - '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-block-scoping': 7.23.0(@babel/core@7.23.2) - '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-class-static-block': 7.22.11(@babel/core@7.23.2) - '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.23.2) - '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-destructuring': 7.23.0(@babel/core@7.23.2) - '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-dynamic-import': 7.22.11(@babel/core@7.23.2) - '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-export-namespace-from': 7.22.11(@babel/core@7.23.2) - '@babel/plugin-transform-for-of': 7.22.15(@babel/core@7.23.2) - '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-json-strings': 7.22.11(@babel/core@7.23.2) - '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-logical-assignment-operators': 7.22.11(@babel/core@7.23.2) - '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-modules-amd': 7.23.0(@babel/core@7.23.2) - '@babel/plugin-transform-modules-commonjs': 7.23.0(@babel/core@7.23.2) - '@babel/plugin-transform-modules-systemjs': 7.23.0(@babel/core@7.23.2) - '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-nullish-coalescing-operator': 7.22.11(@babel/core@7.23.2) - '@babel/plugin-transform-numeric-separator': 7.22.11(@babel/core@7.23.2) - '@babel/plugin-transform-object-rest-spread': 7.22.15(@babel/core@7.23.2) - '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-optional-catch-binding': 7.22.11(@babel/core@7.23.2) - '@babel/plugin-transform-optional-chaining': 7.23.0(@babel/core@7.23.2) - '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.23.2) - '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-private-property-in-object': 7.22.11(@babel/core@7.23.2) - '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.23.2) - '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.23.2) - '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.23.2) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.2) - '@babel/types': 7.23.0 - babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.2) - babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.2) - babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.2) - core-js-compat: 3.33.1 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.3) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.3) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.3) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.3) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.3) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.3) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.3) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.3) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.3) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.3) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-async-generator-functions': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-block-scoping': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-class-static-block': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-classes': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-dynamic-import': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-export-namespace-from': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-for-of': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-json-strings': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-logical-assignment-operators': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.3) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-numeric-separator': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-object-rest-spread': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-optional-catch-binding': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-private-property-in-object': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.3) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.3) + babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.3) + babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.3) + babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.3) + core-js-compat: 3.33.3 semver: 6.3.1 transitivePeerDependencies: - supports-color dev: false - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.2): + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.3): resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 @@ -6859,13 +6824,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/types': 7.23.0 + '@babel/types': 7.23.3 esutils: 2.0.3 dev: false - /@babel/preset-typescript@7.23.2(@babel/core@7.23.2): + /@babel/preset-typescript@7.23.2(@babel/core@7.23.3): resolution: {integrity: sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -6874,12 +6839,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-modules-commonjs': 7.23.0(@babel/core@7.23.2) - '@babel/plugin-transform-typescript': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.3) + '@babel/plugin-transform-modules-commonjs': 7.23.0(@babel/core@7.23.3) + '@babel/plugin-transform-typescript': 7.23.3(@babel/core@7.23.3) dev: false /@babel/regjsgen@0.8.0: @@ -6897,26 +6862,8 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.22.13 - '@babel/parser': 7.23.0 - '@babel/types': 7.23.0 - dev: false - - /@babel/traverse@7.23.2: - resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.23.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.0 - '@babel/types': 7.23.0 - debug: 4.3.4(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@babel/parser': 7.23.3 + '@babel/types': 7.23.3 dev: false /@babel/traverse@7.23.3: @@ -6937,14 +6884,6 @@ packages: - supports-color dev: false - /@babel/types@7.23.0: - resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - /@babel/types@7.23.3: resolution: {integrity: sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==} engines: {node: '>=6.9.0'} @@ -6952,7 +6891,6 @@ packages: '@babel/helper-string-parser': 7.22.5 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 - dev: false /@builder.io/partytown@0.8.1: resolution: {integrity: sha512-p4xhEtQCPe8YFJ8e7KT9RptnT+f4lvtbmXymbp1t0bLp+USkNMTxrRMNc3Dlr2w2fpxyX7uA0CyAeU3ju84O4A==} @@ -7235,8 +7173,8 @@ packages: '@csstools/css-tokenizer': 2.2.1 dev: true - /@csstools/postcss-cascade-layers@4.0.0(postcss@8.4.31): - resolution: {integrity: sha512-dVPVVqQG0FixjM9CG/+8eHTsCAxRKqmNh6H69IpruolPlnEF1611f2AoLK8TijTSAsqBSclKd4WHs1KUb/LdJw==} + /@csstools/postcss-cascade-layers@4.0.1(postcss@8.4.31): + resolution: {integrity: sha512-UYFuFL9GgVnftg9v7tBvVEBRLaBeAD66euD+yYy5fYCUld9ZIWTJNCE30hm6STMEdt6FL5xzeVw1lAZ1tpvUEg==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 @@ -7371,6 +7309,24 @@ packages: postcss: 8.4.31 dev: true + /@csstools/postcss-logical-overflow@1.0.0(postcss@8.4.31): + resolution: {integrity: sha512-cIrZ8f7bGGvr+W53nEuMspcwaeaI2YTmz6LZ4yiAO5z14/PQgOOv+Pn+qjvPOPoadeY2BmpaoTzZKvdAQuM17w==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.31 + dev: true + + /@csstools/postcss-logical-overscroll-behavior@1.0.0(postcss@8.4.31): + resolution: {integrity: sha512-e89S2LWjnxf0SB2wNUAbqDyFb/Fow/tlOe1XqOLbNx4rf3LrQokM9qldVx7sarnddml3ORE5LDUmlKpPOOeJTA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.31 + dev: true + /@csstools/postcss-logical-resize@2.0.0(postcss@8.4.31): resolution: {integrity: sha512-lCQ1aX8c5+WI4t5EoYf3alTzJNNocMqTb+u1J9CINdDhFh1fjovqK+0aHalUHsNstZmzFPNzIkU4Mb3eM9U8SA==} engines: {node: ^14 || ^16 || >=18} @@ -7539,17 +7495,14 @@ packages: resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==} dependencies: '@emmetio/scanner': 1.0.4 - dev: true /@emmetio/css-abbreviation@2.1.8: resolution: {integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==} dependencies: '@emmetio/scanner': 1.0.4 - dev: true /@emmetio/scanner@1.0.4: resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==} - dev: true /@esbuild/android-arm64@0.18.20: resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} @@ -7560,14 +7513,23 @@ packages: dev: false optional: true - /@esbuild/android-arm64@0.19.5: - resolution: {integrity: sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ==} + /@esbuild/android-arm64@0.19.6: + resolution: {integrity: sha512-KQ/hbe9SJvIJ4sR+2PcZ41IBV+LPJyYp6V1K1P1xcMRup9iYsBoQn4MzE3mhMLOld27Au2eDcLlIREeKGUXpHQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] requiresBuild: true optional: true + /@esbuild/android-arm@0.15.18: + resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: false + optional: true + /@esbuild/android-arm@0.18.20: resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} @@ -7577,8 +7539,8 @@ packages: dev: false optional: true - /@esbuild/android-arm@0.19.5: - resolution: {integrity: sha512-bhvbzWFF3CwMs5tbjf3ObfGqbl/17ict2/uwOSfr3wmxDE6VdS2GqY/FuzIPe0q0bdhj65zQsvqfArI9MY6+AA==} + /@esbuild/android-arm@0.19.6: + resolution: {integrity: sha512-muPzBqXJKCbMYoNbb1JpZh/ynl0xS6/+pLjrofcR3Nad82SbsCogYzUE6Aq9QT3cLP0jR/IVK/NHC9b90mSHtg==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -7594,8 +7556,8 @@ packages: dev: false optional: true - /@esbuild/android-x64@0.19.5: - resolution: {integrity: sha512-9t+28jHGL7uBdkBjL90QFxe7DVA+KGqWlHCF8ChTKyaKO//VLuoBricQCgwhOjA1/qOczsw843Fy4cbs4H3DVA==} + /@esbuild/android-x64@0.19.6: + resolution: {integrity: sha512-VVJVZQ7p5BBOKoNxd0Ly3xUM78Y4DyOoFKdkdAe2m11jbh0LEU4bPles4e/72EMl4tapko8o915UalN/5zhspg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -7611,8 +7573,8 @@ packages: dev: false optional: true - /@esbuild/darwin-arm64@0.19.5: - resolution: {integrity: sha512-mvXGcKqqIqyKoxq26qEDPHJuBYUA5KizJncKOAf9eJQez+L9O+KfvNFu6nl7SCZ/gFb2QPaRqqmG0doSWlgkqw==} + /@esbuild/darwin-arm64@0.19.6: + resolution: {integrity: sha512-91LoRp/uZAKx6ESNspL3I46ypwzdqyDLXZH7x2QYCLgtnaU08+AXEbabY2yExIz03/am0DivsTtbdxzGejfXpA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -7628,8 +7590,8 @@ packages: dev: false optional: true - /@esbuild/darwin-x64@0.19.5: - resolution: {integrity: sha512-Ly8cn6fGLNet19s0X4unjcniX24I0RqjPv+kurpXabZYSXGM4Pwpmf85WHJN3lAgB8GSth7s5A0r856S+4DyiA==} + /@esbuild/darwin-x64@0.19.6: + resolution: {integrity: sha512-QCGHw770ubjBU1J3ZkFJh671MFajGTYMZumPs9E/rqU52md6lIil97BR0CbPq6U+vTh3xnTNDHKRdR8ggHnmxQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -7645,8 +7607,8 @@ packages: dev: false optional: true - /@esbuild/freebsd-arm64@0.19.5: - resolution: {integrity: sha512-GGDNnPWTmWE+DMchq1W8Sd0mUkL+APvJg3b11klSGUDvRXh70JqLAO56tubmq1s2cgpVCSKYywEiKBfju8JztQ==} + /@esbuild/freebsd-arm64@0.19.6: + resolution: {integrity: sha512-J53d0jGsDcLzWk9d9SPmlyF+wzVxjXpOH7jVW5ae7PvrDst4kiAz6sX+E8btz0GB6oH12zC+aHRD945jdjF2Vg==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -7662,8 +7624,8 @@ packages: dev: false optional: true - /@esbuild/freebsd-x64@0.19.5: - resolution: {integrity: sha512-1CCwDHnSSoA0HNwdfoNY0jLfJpd7ygaLAp5EHFos3VWJCRX9DMwWODf96s9TSse39Br7oOTLryRVmBoFwXbuuQ==} + /@esbuild/freebsd-x64@0.19.6: + resolution: {integrity: sha512-hn9qvkjHSIB5Z9JgCCjED6YYVGCNpqB7dEGavBdG6EjBD8S/UcNUIlGcB35NCkMETkdYwfZSvD9VoDJX6VeUVA==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -7679,8 +7641,8 @@ packages: dev: false optional: true - /@esbuild/linux-arm64@0.19.5: - resolution: {integrity: sha512-o3vYippBmSrjjQUCEEiTZ2l+4yC0pVJD/Dl57WfPwwlvFkrxoSO7rmBZFii6kQB3Wrn/6GwJUPLU5t52eq2meA==} + /@esbuild/linux-arm64@0.19.6: + resolution: {integrity: sha512-HQCOrk9XlH3KngASLaBfHpcoYEGUt829A9MyxaI8RMkfRA8SakG6YQEITAuwmtzFdEu5GU4eyhKcpv27dFaOBg==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -7696,8 +7658,8 @@ packages: dev: false optional: true - /@esbuild/linux-arm@0.19.5: - resolution: {integrity: sha512-lrWXLY/vJBzCPC51QN0HM71uWgIEpGSjSZZADQhq7DKhPcI6NH1IdzjfHkDQws2oNpJKpR13kv7/pFHBbDQDwQ==} + /@esbuild/linux-arm@0.19.6: + resolution: {integrity: sha512-G8IR5zFgpXad/Zp7gr7ZyTKyqZuThU6z1JjmRyN1vSF8j0bOlGzUwFSMTbctLAdd7QHpeyu0cRiuKrqK1ZTwvQ==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -7713,14 +7675,32 @@ packages: dev: false optional: true - /@esbuild/linux-ia32@0.19.5: - resolution: {integrity: sha512-MkjHXS03AXAkNp1KKkhSKPOCYztRtK+KXDNkBa6P78F8Bw0ynknCSClO/ztGszILZtyO/lVKpa7MolbBZ6oJtQ==} + /@esbuild/linux-ia32@0.19.6: + resolution: {integrity: sha512-22eOR08zL/OXkmEhxOfshfOGo8P69k8oKHkwkDrUlcB12S/sw/+COM4PhAPT0cAYW/gpqY2uXp3TpjQVJitz7w==} engines: {node: '>=12'} cpu: [ia32] os: [linux] requiresBuild: true optional: true + /@esbuild/linux-loong64@0.14.54: + resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-loong64@0.15.18: + resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@esbuild/linux-loong64@0.18.20: resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} @@ -7730,8 +7710,8 @@ packages: dev: false optional: true - /@esbuild/linux-loong64@0.19.5: - resolution: {integrity: sha512-42GwZMm5oYOD/JHqHska3Jg0r+XFb/fdZRX+WjADm3nLWLcIsN27YKtqxzQmGNJgu0AyXg4HtcSK9HuOk3v1Dw==} + /@esbuild/linux-loong64@0.19.6: + resolution: {integrity: sha512-82RvaYAh/SUJyjWA8jDpyZCHQjmEggL//sC7F3VKYcBMumQjUL3C5WDl/tJpEiKtt7XrWmgjaLkrk205zfvwTA==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -7747,8 +7727,8 @@ packages: dev: false optional: true - /@esbuild/linux-mips64el@0.19.5: - resolution: {integrity: sha512-kcjndCSMitUuPJobWCnwQ9lLjiLZUR3QLQmlgaBfMX23UEa7ZOrtufnRds+6WZtIS9HdTXqND4yH8NLoVVIkcg==} + /@esbuild/linux-mips64el@0.19.6: + resolution: {integrity: sha512-8tvnwyYJpR618vboIv2l8tK2SuK/RqUIGMfMENkeDGo3hsEIrpGldMGYFcWxWeEILe5Fi72zoXLmhZ7PR23oQA==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -7764,8 +7744,8 @@ packages: dev: false optional: true - /@esbuild/linux-ppc64@0.19.5: - resolution: {integrity: sha512-yJAxJfHVm0ZbsiljbtFFP1BQKLc8kUF6+17tjQ78QjqjAQDnhULWiTA6u0FCDmYT1oOKS9PzZ2z0aBI+Mcyj7Q==} + /@esbuild/linux-ppc64@0.19.6: + resolution: {integrity: sha512-Qt+D7xiPajxVNk5tQiEJwhmarNnLPdjXAoA5uWMpbfStZB0+YU6a3CtbWYSy+sgAsnyx4IGZjWsTzBzrvg/fMA==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -7781,8 +7761,8 @@ packages: dev: false optional: true - /@esbuild/linux-riscv64@0.19.5: - resolution: {integrity: sha512-5u8cIR/t3gaD6ad3wNt1MNRstAZO+aNyBxu2We8X31bA8XUNyamTVQwLDA1SLoPCUehNCymhBhK3Qim1433Zag==} + /@esbuild/linux-riscv64@0.19.6: + resolution: {integrity: sha512-lxRdk0iJ9CWYDH1Wpnnnc640ajF4RmQ+w6oHFZmAIYu577meE9Ka/DCtpOrwr9McMY11ocbp4jirgGgCi7Ls/g==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -7798,8 +7778,8 @@ packages: dev: false optional: true - /@esbuild/linux-s390x@0.19.5: - resolution: {integrity: sha512-Z6JrMyEw/EmZBD/OFEFpb+gao9xJ59ATsoTNlj39jVBbXqoZm4Xntu6wVmGPB/OATi1uk/DB+yeDPv2E8PqZGw==} + /@esbuild/linux-s390x@0.19.6: + resolution: {integrity: sha512-MopyYV39vnfuykHanRWHGRcRC3AwU7b0QY4TI8ISLfAGfK+tMkXyFuyT1epw/lM0pflQlS53JoD22yN83DHZgA==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -7815,8 +7795,8 @@ packages: dev: false optional: true - /@esbuild/linux-x64@0.19.5: - resolution: {integrity: sha512-psagl+2RlK1z8zWZOmVdImisMtrUxvwereIdyJTmtmHahJTKb64pAcqoPlx6CewPdvGvUKe2Jw+0Z/0qhSbG1A==} + /@esbuild/linux-x64@0.19.6: + resolution: {integrity: sha512-UWcieaBzsN8WYbzFF5Jq7QULETPcQvlX7KL4xWGIB54OknXJjBO37sPqk7N82WU13JGWvmDzFBi1weVBajPovg==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -7832,8 +7812,8 @@ packages: dev: false optional: true - /@esbuild/netbsd-x64@0.19.5: - resolution: {integrity: sha512-kL2l+xScnAy/E/3119OggX8SrWyBEcqAh8aOY1gr4gPvw76la2GlD4Ymf832UCVbmuWeTf2adkZDK+h0Z/fB4g==} + /@esbuild/netbsd-x64@0.19.6: + resolution: {integrity: sha512-EpWiLX0fzvZn1wxtLxZrEW+oQED9Pwpnh+w4Ffv8ZLuMhUoqR9q9rL4+qHW8F4Mg5oQEKxAoT0G+8JYNqCiR6g==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -7849,8 +7829,8 @@ packages: dev: false optional: true - /@esbuild/openbsd-x64@0.19.5: - resolution: {integrity: sha512-sPOfhtzFufQfTBgRnE1DIJjzsXukKSvZxloZbkJDG383q0awVAq600pc1nfqBcl0ice/WN9p4qLc39WhBShRTA==} + /@esbuild/openbsd-x64@0.19.6: + resolution: {integrity: sha512-fFqTVEktM1PGs2sLKH4M5mhAVEzGpeZJuasAMRnvDZNCV0Cjvm1Hu35moL2vC0DOrAQjNTvj4zWrol/lwQ8Deg==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -7866,8 +7846,8 @@ packages: dev: false optional: true - /@esbuild/sunos-x64@0.19.5: - resolution: {integrity: sha512-dGZkBXaafuKLpDSjKcB0ax0FL36YXCvJNnztjKV+6CO82tTYVDSH2lifitJ29jxRMoUhgkg9a+VA/B03WK5lcg==} + /@esbuild/sunos-x64@0.19.6: + resolution: {integrity: sha512-M+XIAnBpaNvaVAhbe3uBXtgWyWynSdlww/JNZws0FlMPSBy+EpatPXNIlKAdtbFVII9OpX91ZfMb17TU3JKTBA==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -7883,8 +7863,8 @@ packages: dev: false optional: true - /@esbuild/win32-arm64@0.19.5: - resolution: {integrity: sha512-dWVjD9y03ilhdRQ6Xig1NWNgfLtf2o/STKTS+eZuF90fI2BhbwD6WlaiCGKptlqXlURVB5AUOxUj09LuwKGDTg==} + /@esbuild/win32-arm64@0.19.6: + resolution: {integrity: sha512-2DchFXn7vp/B6Tc2eKdTsLzE0ygqKkNUhUBCNtMx2Llk4POIVMUq5rUYjdcedFlGLeRe1uLCpVvCmE+G8XYybA==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -7900,8 +7880,8 @@ packages: dev: false optional: true - /@esbuild/win32-ia32@0.19.5: - resolution: {integrity: sha512-4liggWIA4oDgUxqpZwrDhmEfAH4d0iljanDOK7AnVU89T6CzHon/ony8C5LeOdfgx60x5cnQJFZwEydVlYx4iw==} + /@esbuild/win32-ia32@0.19.6: + resolution: {integrity: sha512-PBo/HPDQllyWdjwAVX+Gl2hH0dfBydL97BAH/grHKC8fubqp02aL4S63otZ25q3sBdINtOBbz1qTZQfXbP4VBg==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -7917,38 +7897,38 @@ packages: dev: false optional: true - /@esbuild/win32-x64@0.19.5: - resolution: {integrity: sha512-czTrygUsB/jlM8qEW5MD8bgYU2Xg14lo6kBDXW6HdxKjh8M5PzETGiSHaz9MtbXBYDloHNUAUW2tMiKW4KM9Mw==} + /@esbuild/win32-x64@0.19.6: + resolution: {integrity: sha512-OE7yIdbDif2kKfrGa+V0vx/B3FJv2L4KnIiLlvtibPyO9UkgO3rzYE0HhpREo2vmJ1Ixq1zwm9/0er+3VOSZJA==} engines: {node: '>=12'} cpu: [x64] os: [win32] requiresBuild: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.52.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.54.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.52.0 + eslint: 8.54.0 eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.9.1: - resolution: {integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==} + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.2: - resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} + /@eslint/eslintrc@2.1.3: + resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4(supports-color@8.1.1) espree: 9.6.1 globals: 13.23.0 - ignore: 5.2.4 + ignore: 5.3.0 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -7957,8 +7937,8 @@ packages: - supports-color dev: true - /@eslint/js@8.52.0: - resolution: {integrity: sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==} + /@eslint/js@8.54.0: + resolution: {integrity: sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -7967,12 +7947,12 @@ packages: engines: {node: '>=14'} dev: true - /@fontsource/monofett@5.0.9: - resolution: {integrity: sha512-huRzEMeEuZE5LuiDqGQdcvtOKEIOYnIpfz9g/IeZn06sdRbVu8HEjJgRnJvtdT4NYV7U/XGnB3LL/LYQb1F0hg==} + /@fontsource/monofett@5.0.17: + resolution: {integrity: sha512-MTSxMPkTXeqEVeaugMh9nUbSqL/0tm0KlwdTInRv3s1JY3S7rzM1hnue+m8p1ZU89viNNjeCBTLaE77MosKdjQ==} dev: false - /@fontsource/montserrat@5.0.8: - resolution: {integrity: sha512-bNj6wfiWXXbsxb2ffatjpX+GBv30cWZ1lwNXW9qTeX2FnzPomsGRV4HdPrf3TqyTiVqX6fLo80zrQcMi7r8+fA==} + /@fontsource/montserrat@5.0.15: + resolution: {integrity: sha512-ZJbsCIJp6VHL1wYQUPpyBjXMzwGdfFedrmrw4r5sFi7WrMpnfJv+el1uVO6yDPIqnVqkPvjJ+xeKgJwnj2LuQQ==} dev: false /@humanwhocodes/config-array@0.11.13: @@ -8057,7 +8037,7 @@ packages: '@lit-labs/ssr-dom-shim': 1.1.2 '@lit/reactive-element': 1.6.3 '@parse5/tools': 0.3.0 - '@types/node': 16.18.59 + '@types/node': 16.18.61 enhanced-resolve: 5.15.0 lit: 2.8.0 lit-element: 3.3.3 @@ -8071,6 +8051,10 @@ packages: dependencies: '@lit-labs/ssr-dom-shim': 1.1.2 + /@ljharb/has-package-exports-patterns@0.0.2: + resolution: {integrity: sha512-4/RWEeXDO6bocPONheFe6gX/oQdP/bEpv0oL4HqjPP5DCenBSt0mHgahppY49N0CpsaqffdwPq+TlX9CYOq2Dw==} + dev: false + /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: @@ -8109,8 +8093,8 @@ packages: - supports-color dev: false - /@markdoc/markdoc@0.3.4: - resolution: {integrity: sha512-cTyucw4YcQL3JfKMjjjszuTuR97nELN0mvPQhYLvVR/flvYaZUZUNBs8O3lv0vf7g0bfM2ZTUezBq0u8+1hTdg==} + /@markdoc/markdoc@0.3.5: + resolution: {integrity: sha512-Z3agu2wnodoOYd5kzKbtwZduSfX19Kbsg/FlK0TeMn29cTTEEVPJtjfgKSMTN/Wq+kUQXnPtOEhHRgke5d/Xiw==} engines: {node: '>=14.7.0'} peerDependencies: '@types/react': '*' @@ -8124,39 +8108,45 @@ packages: '@types/markdown-it': 12.2.3 dev: false - /@mdx-js/mdx@2.3.0: - resolution: {integrity: sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==} + /@mdx-js/mdx@3.0.0: + resolution: {integrity: sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==} dependencies: - '@types/estree-jsx': 1.0.2 - '@types/mdx': 2.0.9 - estree-util-build-jsx: 2.2.2 - estree-util-is-identifier-name: 2.1.0 - estree-util-to-js: 1.2.0 + '@types/estree': 1.0.5 + '@types/estree-jsx': 1.0.3 + '@types/hast': 3.0.3 + '@types/mdx': 2.0.10 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-build-jsx: 3.0.1 + estree-util-is-identifier-name: 3.0.0 + estree-util-to-js: 2.0.0 estree-walker: 3.0.3 - hast-util-to-estree: 2.3.3 - markdown-extensions: 1.1.1 + hast-util-to-estree: 3.1.0 + hast-util-to-jsx-runtime: 2.2.0 + markdown-extensions: 2.0.0 periscopic: 3.1.0 - remark-mdx: 2.3.0 - remark-parse: 10.0.2 - remark-rehype: 10.1.0 - unified: 10.1.2 - unist-util-position-from-estree: 1.1.2 - unist-util-stringify-position: 3.0.3 - unist-util-visit: 4.1.2 - vfile: 5.3.7 + remark-mdx: 3.0.0 + remark-parse: 11.0.0 + remark-rehype: 11.0.0 + source-map: 0.7.4 + unified: 11.0.4 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 transitivePeerDependencies: - supports-color dev: false - /@nanostores/preact@0.5.0(nanostores@0.9.4)(preact@10.18.1): + /@nanostores/preact@0.5.0(nanostores@0.9.5)(preact@10.19.2): resolution: {integrity: sha512-Zq5DEAY+kIfwJ1NPd43D1mpsbISuiD6N/SuTHrt/8jUoifLwXaReaZMAnvkvbIGOgcB1Hy++A9jZix2taNNYxQ==} engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} peerDependencies: nanostores: ^0.9.0 preact: '>=10.0.0' dependencies: - nanostores: 0.9.4 - preact: 10.18.1 + nanostores: 0.9.5 + preact: 10.19.2 dev: false /@nodelib/fs.scandir@2.1.5: @@ -8294,43 +8284,39 @@ packages: engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dependencies: cross-spawn: 7.0.3 - fast-glob: 3.3.1 + fast-glob: 3.3.2 is-glob: 4.0.3 open: 9.1.0 picocolors: 1.0.0 tslib: 2.6.2 dev: true - /@playwright/test@1.39.0: - resolution: {integrity: sha512-3u1iFqgzl7zr004bGPYiN/5EZpRUSFddQBra8Rqll5N0/vfpqlP9I9EXqAoGacuAbX6c9Ulg/Cjqglp5VkK6UQ==} + /@playwright/test@1.40.0: + resolution: {integrity: sha512-PdW+kn4eV99iP5gxWNSDQCbhMaDVej+RXL5xr6t04nbKLCBwYtA046t7ofoczHOm8u6c+45hpDKQVZqtqwkeQg==} engines: {node: '>=16'} hasBin: true dependencies: - playwright: 1.39.0 + playwright: 1.40.0 dev: true - /@playwright/test@1.40.0-alpha-nov-13-2023: - resolution: {integrity: sha512-qb5AzKN2pf14C4AT90ps3VGbDhx1/9LnzzT+D2TBZQ/vRUUvacvxxhjieelFKvw+FN4BIXFnEs2bNecc37Jyww==} - engines: {node: '>=16'} - hasBin: true - dependencies: - playwright: 1.40.0-alpha-nov-13-2023 - dev: true + /@polka/url@1.0.0-next.23: + resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==} + dev: false - /@preact/preset-vite@2.6.0(preact@10.18.1): - resolution: {integrity: sha512-5nztNzXbCpqyVum/K94nB2YQ5PTnvWdz4u7/X0jc8+kLyskSSpkNUxLQJeI90zfGSFIX1Ibj2G2JIS/mySHWYQ==} + /@preact/preset-vite@2.7.0(preact@10.19.2): + resolution: {integrity: sha512-m5N0FVtxbCCDxNk55NGhsRpKJChYcupcuQHzMJc/Bll07IKZKn8amwYciyKFS9haU6AgzDAJ/ewvApr6Qg1DHw==} peerDependencies: '@babel/core': 7.x - vite: 2.x || 3.x || 4.x + vite: 2.x || 3.x || 4.x || 5.x peerDependenciesMeta: '@babel/core': optional: true vite: optional: true dependencies: - '@babel/plugin-transform-react-jsx': 7.22.15 + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.3) '@babel/plugin-transform-react-jsx-development': 7.22.5 - '@prefresh/vite': 2.4.1(preact@10.18.1) + '@prefresh/vite': 2.4.4(preact@10.19.2) '@rollup/pluginutils': 4.2.1 babel-plugin-transform-hook-names: 1.0.2 debug: 4.3.4(supports-color@8.1.1) @@ -8345,33 +8331,33 @@ packages: resolution: {integrity: sha512-U2diO1Z4i1n2IoFgMYmRdHWGObNrcuTRxyNEn7deSq2cru0vj0583HYQZHsAqcs7FE+hQyX3mjIV7LAfHCvy8w==} dev: false - /@preact/signals@1.2.1(preact@10.18.1): + /@preact/signals@1.2.1(preact@10.19.2): resolution: {integrity: sha512-hRPvp1C2ooDzOHqfnhdpHgoIFDbYFAXLhoid3+jSItuPPD/J0r/UsiWKv/8ZO/oEhjRaP0M5niuRYsWqmY2GEA==} peerDependencies: preact: 10.x dependencies: '@preact/signals-core': 1.5.0 - preact: 10.18.1 + preact: 10.19.2 dev: false - /@prefresh/babel-plugin@0.5.0: - resolution: {integrity: sha512-joAwpkUDwo7ZqJnufXRGzUb+udk20RBgfA8oLPBh5aJH2LeStmV1luBfeJTztPdyCscC2j2SmZ/tVxFRMIxAEw==} + /@prefresh/babel-plugin@0.5.1: + resolution: {integrity: sha512-uG3jGEAysxWoyG3XkYfjYHgaySFrSsaEb4GagLzYaxlydbuREtaX+FTxuIidp241RaLl85XoHg9Ej6E4+V1pcg==} dev: false - /@prefresh/core@1.5.2(preact@10.18.1): + /@prefresh/core@1.5.2(preact@10.19.2): resolution: {integrity: sha512-A/08vkaM1FogrCII5PZKCrygxSsc11obExBScm3JF1CryK2uDS3ZXeni7FeKCx1nYdUkj4UcJxzPzc1WliMzZA==} peerDependencies: preact: ^10.0.0 dependencies: - preact: 10.18.1 + preact: 10.19.2 dev: false /@prefresh/utils@1.2.0: resolution: {integrity: sha512-KtC/fZw+oqtwOLUFM9UtiitB0JsVX0zLKNyRTA332sqREqSALIIQQxdUCS1P3xR/jT1e2e8/5rwH6gdcMLEmsQ==} dev: false - /@prefresh/vite@2.4.1(preact@10.18.1): - resolution: {integrity: sha512-vthWmEqu8TZFeyrBNc9YE5SiC3DVSzPgsOCp/WQ7FqdHpOIJi7Z8XvCK06rBPOtG4914S52MjG9Ls22eVAiuqQ==} + /@prefresh/vite@2.4.4(preact@10.19.2): + resolution: {integrity: sha512-7jcz3j5pXufOWTjl31n0Lc3BcU8oGoacoaWx/Ur1QJ+fd4Xu0G7g/ER1xV02x7DCiVoFi7xtSgaophOXoJvpmA==} peerDependencies: preact: ^10.4.0 vite: '>=2.0.0' @@ -8380,16 +8366,32 @@ packages: optional: true dependencies: '@babel/core': 7.23.3 - '@prefresh/babel-plugin': 0.5.0 - '@prefresh/core': 1.5.2(preact@10.18.1) + '@prefresh/babel-plugin': 0.5.1 + '@prefresh/core': 1.5.2(preact@10.19.2) '@prefresh/utils': 1.2.0 '@rollup/pluginutils': 4.2.1 - preact: 10.18.1 + preact: 10.19.2 transitivePeerDependencies: - supports-color dev: false - /@rollup/plugin-babel@5.3.1(@babel/core@7.23.2)(rollup@2.79.1): + /@proload/core@0.3.3: + resolution: {integrity: sha512-7dAFWsIK84C90AMl24+N/ProHKm4iw0akcnoKjRvbfHifJZBLhaDsDus1QJmhG12lXj4e/uB/8mB/0aduCW+NQ==} + dependencies: + deepmerge: 4.3.1 + escalade: 3.1.1 + dev: false + + /@proload/plugin-tsm@0.2.1(@proload/core@0.3.3): + resolution: {integrity: sha512-Ex1sL2BxU+g8MHdAdq9SZKz+pU34o8Zcl9PHWo2WaG9hrnlZme607PU6gnpoAYsDBpHX327+eu60wWUk+d/b+A==} + peerDependencies: + '@proload/core': ^0.3.2 + dependencies: + '@proload/core': 0.3.3 + tsm: 2.3.0 + dev: false + + /@rollup/plugin-babel@5.3.1(@babel/core@7.23.3)(rollup@2.79.1): resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} engines: {node: '>= 10.0.0'} peerDependencies: @@ -8404,7 +8406,7 @@ packages: rollup: optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-module-imports': 7.22.15 '@rollup/pluginutils': 3.1.0(rollup@2.79.1) rollup: 2.79.1 @@ -8464,85 +8466,85 @@ packages: picomatch: 2.3.1 dev: false - /@rollup/rollup-android-arm-eabi@4.4.1: - resolution: {integrity: sha512-Ss4suS/sd+6xLRu+MLCkED2mUrAyqHmmvZB+zpzZ9Znn9S8wCkTQCJaQ8P8aHofnvG5L16u9MVnJjCqioPErwQ==} + /@rollup/rollup-android-arm-eabi@4.5.0: + resolution: {integrity: sha512-OINaBGY+Wc++U0rdr7BLuFClxcoWaVW3vQYqmQq6B3bqQ/2olkaoz+K8+af/Mmka/C2yN5j+L9scBkv4BtKsDA==} cpu: [arm] os: [android] requiresBuild: true optional: true - /@rollup/rollup-android-arm64@4.4.1: - resolution: {integrity: sha512-sRSkGTvGsARwWd7TzC8LKRf8FiPn7257vd/edzmvG4RIr9x68KBN0/Ek48CkuUJ5Pj/Dp9vKWv6PEupjKWjTYA==} + /@rollup/rollup-android-arm64@4.5.0: + resolution: {integrity: sha512-UdMf1pOQc4ZmUA/NTmKhgJTBimbSKnhPS2zJqucqFyBRFPnPDtwA8MzrGNTjDeQbIAWfpJVAlxejw+/lQyBK/w==} cpu: [arm64] os: [android] requiresBuild: true optional: true - /@rollup/rollup-darwin-arm64@4.4.1: - resolution: {integrity: sha512-nz0AiGrrXyaWpsmBXUGOBiRDU0wyfSXbFuF98pPvIO8O6auQsPG6riWsfQqmCCC5FNd8zKQ4JhgugRNAkBJ8mQ==} + /@rollup/rollup-darwin-arm64@4.5.0: + resolution: {integrity: sha512-L0/CA5p/idVKI+c9PcAPGorH6CwXn6+J0Ys7Gg1axCbTPgI8MeMlhA6fLM9fK+ssFhqogMHFC8HDvZuetOii7w==} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-darwin-x64@4.4.1: - resolution: {integrity: sha512-Ogqvf4/Ve/faMaiPRvzsJEqajbqs00LO+8vtrPBVvLgdw4wBg6ZDXdkDAZO+4MLnrc8mhGV6VJAzYScZdPLtJg==} + /@rollup/rollup-darwin-x64@4.5.0: + resolution: {integrity: sha512-QZCbVqU26mNlLn8zi/XDDquNmvcr4ON5FYAHQQsyhrHx8q+sQi/6xduoznYXwk/KmKIXG5dLfR0CvY+NAWpFYQ==} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.4.1: - resolution: {integrity: sha512-9zc2tqlr6HfO+hx9+wktUlWTRdje7Ub15iJqKcqg5uJZ+iKqmd2CMxlgPpXi7+bU7bjfDIuvCvnGk7wewFEhCg==} + /@rollup/rollup-linux-arm-gnueabihf@4.5.0: + resolution: {integrity: sha512-VpSQ+xm93AeV33QbYslgf44wc5eJGYfYitlQzAi3OObu9iwrGXEnmu5S3ilkqE3Pr/FkgOiJKV/2p0ewf4Hrtg==} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.4.1: - resolution: {integrity: sha512-phLb1fN3rq2o1j1v+nKxXUTSJnAhzhU0hLrl7Qzb0fLpwkGMHDem+o6d+ZI8+/BlTXfMU4kVWGvy6g9k/B8L6Q==} + /@rollup/rollup-linux-arm64-gnu@4.5.0: + resolution: {integrity: sha512-OrEyIfpxSsMal44JpEVx9AEcGpdBQG1ZuWISAanaQTSMeStBW+oHWwOkoqR54bw3x8heP8gBOyoJiGg+fLY8qQ==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-musl@4.4.1: - resolution: {integrity: sha512-M2sDtw4tf57VPSjbTAN/lz1doWUqO2CbQuX3L9K6GWIR5uw9j+ROKCvvUNBY8WUbMxwaoc8mH9HmmBKsLht7+w==} + /@rollup/rollup-linux-arm64-musl@4.5.0: + resolution: {integrity: sha512-1H7wBbQuE6igQdxMSTjtFfD+DGAudcYWhp106z/9zBA8OQhsJRnemO4XGavdzHpGhRtRxbgmUGdO3YQgrWf2RA==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-gnu@4.4.1: - resolution: {integrity: sha512-mHIlRLX+hx+30cD6c4BaBOsSqdnCE4ok7/KDvjHYAHoSuveoMMxIisZFvcLhUnyZcPBXDGZTuBoalcuh43UfQQ==} + /@rollup/rollup-linux-x64-gnu@4.5.0: + resolution: {integrity: sha512-FVyFI13tXw5aE65sZdBpNjPVIi4Q5mARnL/39UIkxvSgRAIqCo5sCpCELk0JtXHGee2owZz5aNLbWNfBHzr71Q==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-musl@4.4.1: - resolution: {integrity: sha512-tB+RZuDi3zxFx7vDrjTNGVLu2KNyzYv+UY8jz7e4TMEoAj7iEt8Qk6xVu6mo3pgjnsHj6jnq3uuRsHp97DLwOA==} + /@rollup/rollup-linux-x64-musl@4.5.0: + resolution: {integrity: sha512-eBPYl2sLpH/o8qbSz6vPwWlDyThnQjJfcDOGFbNjmjb44XKC1F5dQfakOsADRVrXCNzM6ZsSIPDG5dc6HHLNFg==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.4.1: - resolution: {integrity: sha512-Hdn39PzOQowK/HZzYpCuZdJC91PE6EaGbTe2VCA9oq2u18evkisQfws0Smh9QQGNNRa/T7MOuGNQoLeXhhE3PQ==} + /@rollup/rollup-win32-arm64-msvc@4.5.0: + resolution: {integrity: sha512-xaOHIfLOZypoQ5U2I6rEaugS4IYtTgP030xzvrBf5js7p9WI9wik07iHmsKaej8Z83ZDxN5GyypfoyKV5O5TJA==} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.4.1: - resolution: {integrity: sha512-tLpKb1Elm9fM8c5w3nl4N1eLTP4bCqTYw9tqUBxX8/hsxqHO3dxc2qPbZ9PNkdK4tg4iLEYn0pOUnVByRd2CbA==} + /@rollup/rollup-win32-ia32-msvc@4.5.0: + resolution: {integrity: sha512-Al6quztQUrHwcOoU2TuFblUQ5L+/AmPBXFR6dUvyo4nRj2yQRK0WIUaGMF/uwKulvRcXkpHe3k9A8Vf93VDktA==} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-x64-msvc@4.4.1: - resolution: {integrity: sha512-eAhItDX9yQtZVM3yvXS/VR3qPqcnXvnLyx1pLXl4JzyNMBNO3KC986t/iAg2zcMzpAp9JSvxB5VZGnBiNoA98w==} + /@rollup/rollup-win32-x64-msvc@4.5.0: + resolution: {integrity: sha512-8kdW+brNhI/NzJ4fxDufuJUjepzINqJKLGHuxyAtpPG9bMbn8P5mtaCcbOm0EzLJ+atg+kF9dwg8jpclkVqx5w==} cpu: [x64] os: [win32] requiresBuild: true @@ -8552,12 +8554,17 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: false - /@solidjs/router@0.8.3(solid-js@1.8.3): - resolution: {integrity: sha512-oJuqQo10rVTiQYhe1qXIG1NyZIZ2YOwHnlLc8Xx+g/iJhFCJo1saLOIrD/Dkh2fpIaIny5ZMkz1cYYqoTYGJbg==} + /@sindresorhus/merge-streams@1.0.0: + resolution: {integrity: sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==} + engines: {node: '>=18'} + dev: false + + /@solidjs/router@0.9.1(solid-js@1.8.5): + resolution: {integrity: sha512-kRY75piOQsyoH75E/RP6lr7uVGFCjeeCCCJx7Z2D1Vc6+I1yFQjLCvE+6agXGwqDoWi6vbETP1g7gmp/L1mNLg==} peerDependencies: - solid-js: ^1.5.3 + solid-js: ^1.8.4 dependencies: - solid-js: 1.8.3 + solid-js: 1.8.5 dev: false /@surma/rollup-plugin-off-main-thread@2.2.3: @@ -8569,7 +8576,7 @@ packages: string.prototype.matchall: 4.0.10 dev: false - /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.0)(svelte@4.2.2)(vite@5.0.0): + /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.0)(svelte@4.2.5)(vite@5.0.0): resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==} engines: {node: ^18.0.0 || >=20} peerDependencies: @@ -8580,15 +8587,15 @@ packages: vite: optional: true dependencies: - '@sveltejs/vite-plugin-svelte': 3.0.0(svelte@4.2.2)(vite@5.0.0) + '@sveltejs/vite-plugin-svelte': 3.0.0(svelte@4.2.5)(vite@5.0.0) debug: 4.3.4(supports-color@8.1.1) - svelte: 4.2.2 - vite: 5.0.0(@types/node@18.18.6)(sass@1.69.4) + svelte: 4.2.5 + vite: 5.0.0(@types/node@18.18.6)(sass@1.69.5) transitivePeerDependencies: - supports-color dev: false - /@sveltejs/vite-plugin-svelte@3.0.0(svelte@4.2.2)(vite@5.0.0): + /@sveltejs/vite-plugin-svelte@3.0.0(svelte@4.2.5)(vite@5.0.0): resolution: {integrity: sha512-Th0nupxk8hl5Rcg9jm+1xWylwco4bSUAvutWxM4W4bjOAollpXLmrYqSSnYo9pPbZOO6ZGRm6sSqYa/v1d/Saw==} engines: {node: ^18.0.0 || >=20} peerDependencies: @@ -8598,14 +8605,14 @@ packages: vite: optional: true dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.0)(svelte@4.2.2)(vite@5.0.0) + '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.0)(svelte@4.2.5)(vite@5.0.0) debug: 4.3.4(supports-color@8.1.1) deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.5 - svelte: 4.2.2 - svelte-hmr: 0.15.3(svelte@4.2.2) - vite: 5.0.0(@types/node@18.18.6)(sass@1.69.4) + svelte: 4.2.5 + svelte-hmr: 0.15.3(svelte@4.2.5) + vite: 5.0.0(@types/node@18.18.6)(sass@1.69.5) vitefu: 0.2.5(vite@5.0.0) transitivePeerDependencies: - supports-color @@ -8624,7 +8631,7 @@ packages: /@ts-morph/common@0.20.0: resolution: {integrity: sha512-7uKjByfbPpwuzkstL3L5MQyuXPSKdoNG93Fmi2JoDcTf3pEP731JdRFAduRVkOs8oqxPsXKA+ScrWkdQ8t/I+Q==} dependencies: - fast-glob: 3.3.1 + fast-glob: 3.3.2 minimatch: 7.4.6 mkdirp: 2.1.6 path-browserify: 1.0.1 @@ -8633,21 +8640,11 @@ packages: /@types/acorn@4.0.6: resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} dependencies: - '@types/estree': 1.0.3 + '@types/estree': 1.0.5 dev: false - /@types/alpinejs@3.13.3: - resolution: {integrity: sha512-ZMxJlDxDDqn94gBWOkeGulVw3nUOy/rPGXlyQksnlzwzuipl4kW0E/tFzAiU4uKSu6UXZL94wReRorln+2FStg==} - dev: false - - /@types/babel__core@7.20.3: - resolution: {integrity: sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA==} - dependencies: - '@babel/parser': 7.23.0 - '@babel/types': 7.23.0 - '@types/babel__generator': 7.6.6 - '@types/babel__template': 7.4.3 - '@types/babel__traverse': 7.20.3 + /@types/alpinejs@3.13.5: + resolution: {integrity: sha512-BSNTroRhmBkNiyd7ELK/5Boja92hnQMST6H4z1BqXKeMVzHjp9o1j5poqd5Tyhjd8oMFwxYC4I00eghfg2xrTA==} dev: false /@types/babel__core@7.20.4: @@ -8660,23 +8657,10 @@ packages: '@types/babel__traverse': 7.20.4 dev: false - /@types/babel__generator@7.6.6: - resolution: {integrity: sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w==} - dependencies: - '@babel/types': 7.23.0 - /@types/babel__generator@7.6.7: resolution: {integrity: sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==} dependencies: '@babel/types': 7.23.3 - dev: false - - /@types/babel__template@7.4.3: - resolution: {integrity: sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ==} - dependencies: - '@babel/parser': 7.23.0 - '@babel/types': 7.23.0 - dev: false /@types/babel__template@7.4.4: resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} @@ -8685,25 +8669,19 @@ packages: '@babel/types': 7.23.3 dev: false - /@types/babel__traverse@7.20.3: - resolution: {integrity: sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw==} - dependencies: - '@babel/types': 7.23.0 - /@types/babel__traverse@7.20.4: resolution: {integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==} dependencies: '@babel/types': 7.23.3 - dev: false - /@types/canvas-confetti@1.6.2: - resolution: {integrity: sha512-ozy7d+7AmYnPEgzdGwwAIA0/yLHnT9YBUQAOm5Ucu+P2ptxq2P464SZDVzYp71wD10ZPYckyeC665bPxQM78kw==} + /@types/canvas-confetti@1.6.3: + resolution: {integrity: sha512-yKVMDzWJ6g0s8TDI3VERfLMCOh0oHqZUnfK+o3VVjR2mFsLynUgb2lR+3IRaEJMza3BKbV9pkoirmM23YhKozA==} dev: false - /@types/chai-as-promised@7.1.7: - resolution: {integrity: sha512-APucaP5rlmTRYKtRA6FE5QPP87x76ejw5t5guRJ4y5OgMnwtsvigw7HHhKZlx2MGXLeZd6R/GNZR/IqDHcbtQw==} + /@types/chai-as-promised@7.1.8: + resolution: {integrity: sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==} dependencies: - '@types/chai': 4.3.9 + '@types/chai': 4.3.10 dev: true /@types/chai-subset@1.3.4: @@ -8712,73 +8690,79 @@ packages: '@types/chai': 4.3.9 dev: false + /@types/chai@4.3.10: + resolution: {integrity: sha512-of+ICnbqjmFCiixUnqRulbylyXQrPqIGf/B3Jax1wIF3DvSheysQxAWvqHhZiW3IQrycvokcLcFQlveGp+vyNg==} + dev: true + /@types/chai@4.3.9: resolution: {integrity: sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==} + dev: false - /@types/common-ancestor-path@1.0.1: - resolution: {integrity: sha512-qkUbNjvDLOlW9PuI4k1w9MkHaWM0/qffQCxWLTfulY5jIijvMpI9PIt0pL+aKzQBz8o8B1kRnBAhBiUBS9NdUA==} + /@types/common-ancestor-path@1.0.2: + resolution: {integrity: sha512-8llyULydTb7nM9yfiW78n6id3cet+qnATPV3R44yIywxgBaa8QXFSM9QTMf4OH64QOB45BlgZ3/oL4mmFLztQw==} dev: true - /@types/connect@3.4.37: - resolution: {integrity: sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q==} + /@types/connect@3.4.38: + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 18.18.6 + '@types/node': 20.9.1 dev: true - /@types/cookie@0.5.3: - resolution: {integrity: sha512-SLg07AS9z1Ab2LU+QxzU8RCmzsja80ywjf/t5oqw+4NSH20gIGlhLOrBDm1L3PBWzPa4+wkgFQVZAjE6Ioj2ug==} + /@types/cookie@0.5.4: + resolution: {integrity: sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA==} dev: true - /@types/debug@4.1.10: - resolution: {integrity: sha512-tOSCru6s732pofZ+sMv9o4o3Zc+Sa8l3bxd/tweTQudFn06vAzb13ZX46Zi6m6EJ+RUbRTHvgQJ1gBtSgkaUYA==} + /@types/debug@4.1.12: + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} dependencies: - '@types/ms': 0.7.33 + '@types/ms': 0.7.34 - /@types/diff@5.0.7: - resolution: {integrity: sha512-adBosR2GntaQQiuHnfRN9HtxYpoHHJBcdyz7VSXhjpSAmtvIfu/S1fjTqwuIx/Ypba6LCZdfWIqPYx2BR5TneQ==} + /@types/diff@5.0.8: + resolution: {integrity: sha512-kR0gRf0wMwpxQq6ME5s+tWk9zVCfJUl98eRkD05HWWRbhPB/eu4V1IbyZAsvzC1Gn4znBJ0HN01M4DGXdBEV8Q==} dev: true - /@types/dlv@1.1.3: - resolution: {integrity: sha512-u6JdAm9wje4n7vqkK9F6nQI18xSO+MVfXz6RMgN4acJmSZMlV7ZRrEQg4d1wmiQ2txg2xArpc68RS6p4JecVNg==} + /@types/dlv@1.1.4: + resolution: {integrity: sha512-m8KmImw4Jt+4rIgupwfivrWEOnj1LzkmKkqbh075uG13eTQ1ZxHWT6T0vIdSQhLIjQCiR0n0lZdtyDOPO1x2Mw==} dev: true - /@types/dom-view-transitions@1.0.3: - resolution: {integrity: sha512-1X/BUVdo9pKho8SFWVNcIz0fasBAqwcAvWGMt0Z57LUN68I4AtdrgTUXFryZW/OHUSO+9OH9KtSgCTMrzOZdRg==} + /@types/dom-view-transitions@1.0.4: + resolution: {integrity: sha512-oDuagM6G+xPLrLU4KeCKlr1oalMF5mJqV5pDPMDVIEaa8AkUW00i6u+5P02XCjdEEUQJC9dpnxqSLsZeAciSLQ==} dev: true - /@types/estree-jsx@1.0.2: - resolution: {integrity: sha512-GNBWlGBMjiiiL5TSkvPtOteuXsiVitw5MYGY1UYlrAq0SKyczsls6sCD7TZ8fsjRsvCVxml7EbyjJezPb3DrSA==} + /@types/estree-jsx@0.0.1: + resolution: {integrity: sha512-gcLAYiMfQklDCPjQegGn0TBAn9it05ISEsEhlKQUddIk7o2XDokOcTN7HBO8tznM0D9dGezvHEfRZBfZf6me0A==} + dependencies: + '@types/estree': 1.0.5 + dev: false + + /@types/estree-jsx@1.0.3: + resolution: {integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==} dependencies: - '@types/estree': 1.0.3 + '@types/estree': 1.0.5 /@types/estree@0.0.39: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} dev: false - /@types/estree@1.0.3: - resolution: {integrity: sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==} + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - /@types/extend@3.0.3: - resolution: {integrity: sha512-1Hz9SFYIkslmAt4R5WCpJBzCX9Cn+flMDgKbBXV3c47VyhLOOGYo52SIeoW00VBiUCI/dqKbnfM/8IC7Cm0h6g==} - dev: true - - /@types/hast@2.3.7: - resolution: {integrity: sha512-EVLigw5zInURhzfXUM65eixfadfsHKomGKUakToXo84t8gGIJuTcD2xooM2See7GyQ7DRtYjhCHnSUQez8JaLw==} + /@types/hast@2.3.8: + resolution: {integrity: sha512-aMIqAlFd2wTIDZuvLbhUT+TGvMxrNC8ECUIVtH6xxy0sQLs3iu6NO8Kp/VT5je7i5ufnebXzdV1dNDMnvaH6IQ==} dependencies: - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 - /@types/hast@3.0.2: - resolution: {integrity: sha512-B5hZHgHsXvfCoO3xgNJvBnX7N8p86TqQeGKXcokW4XXi+qY4vxxPSFYofytvVmpFxzPv7oxDQzjg5Un5m2/xiw==} + /@types/hast@3.0.3: + resolution: {integrity: sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==} dependencies: - '@types/unist': 2.0.9 - dev: false + '@types/unist': 3.0.2 - /@types/html-escaper@3.0.1: - resolution: {integrity: sha512-lVnoTUR09iECkTInzCzFEasZKs11VuCTIdo8hnLXwCU40UUbSl8boPsy6MNJ9+HbJQ/jxju8nSZxSHPVIbmCbg==} + /@types/html-escaper@3.0.2: + resolution: {integrity: sha512-A8vk09eyYzk8J/lFO4OUMKCmRN0rRzfZf4n3Olwapgox/PtTiU8zPYlL1UEkJ/WeHvV6v9Xnj3o/705PKz9r4Q==} dev: true - /@types/http-cache-semantics@4.0.3: - resolution: {integrity: sha512-V46MYLFp08Wf2mmaBhvgjStM3tPa+2GAdy/iqoX+noX1//zje2x4XmrIU0cAwyClATsTmahbtoQ2EwP7I5WSiA==} + /@types/http-cache-semantics@4.0.4: + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} dev: true /@types/is-ci@3.0.3: @@ -8787,100 +8771,99 @@ packages: ci-info: 3.9.0 dev: true - /@types/js-yaml@4.0.8: - resolution: {integrity: sha512-m6jnPk1VhlYRiLFm3f8X9Uep761f+CK8mHyS65LutH2OhmBF0BeMEjHgg05usH8PLZMWWc/BUR9RPmkvpWnyRA==} + /@types/js-yaml@4.0.9: + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} dev: true - /@types/json-schema@7.0.14: - resolution: {integrity: sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==} + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} dev: true /@types/json5@0.0.30: resolution: {integrity: sha512-sqm9g7mHlPY/43fcSNrCYfOeX9zkTTK+euO5E6+CVijSMm5tTjkVdwdqRkY3ljjIAf8679vps5jKUoJBCLsMDA==} - dev: true - /@types/katex@0.16.5: - resolution: {integrity: sha512-DD2Y3xMlTQvAnN6d8803xdgnOeYZ+HwMglb7/9YCf49J9RkJL53azf9qKa40MkEYhqVwxZ1GS2+VlShnz4Z1Bw==} + /@types/katex@0.16.6: + resolution: {integrity: sha512-rZYO1HInM99rAFYNwGqbYPxHZHxu2IwZYKj4bJ4oh6edVrm1UId8mmbHIZLBtG253qU6y3piag0XYe/joNnwzQ==} dev: true - /@types/linkify-it@3.0.4: - resolution: {integrity: sha512-hPpIeeHb/2UuCw06kSNAOVWgehBLXEo0/fUs0mw3W2qhqX89PI2yvok83MnuctYGCPrabGIoi0fFso4DQ+sNUQ==} + /@types/linkify-it@3.0.5: + resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} /@types/markdown-it@12.2.3: resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} requiresBuild: true dependencies: - '@types/linkify-it': 3.0.4 - '@types/mdurl': 1.0.4 + '@types/linkify-it': 3.0.5 + '@types/mdurl': 1.0.5 dev: false optional: true - /@types/markdown-it@13.0.4: - resolution: {integrity: sha512-FAIUdEXrCDnQmAAmJC+UeW/3p0eCI4QZ/+W0lX/h83VD3v78IgTFYftjnAeXS8H0g4PFQCgipc51cQDA8tjgLw==} + /@types/markdown-it@13.0.6: + resolution: {integrity: sha512-0VqpvusJn1/lwRegCxcHVdmLfF+wIsprsKMC9xW8UPcTxhFcQtoN/fBU1zMe8pH7D/RuueMh2CaBaNv+GrLqTw==} dependencies: - '@types/linkify-it': 3.0.4 - '@types/mdurl': 1.0.4 + '@types/linkify-it': 3.0.5 + '@types/mdurl': 1.0.5 dev: true /@types/mathjax@0.0.37: resolution: {integrity: sha512-y0WSZBtBNQwcYipTU/BhgeFu1EZNlFvUNCmkMXV9kBQZq7/o5z82dNVyH3yy2Xv5zzeNeQoHSL4Xm06+EQiH+g==} dev: true - /@types/mdast@3.0.14: - resolution: {integrity: sha512-gVZ04PGgw1qLZKsnWnyFv4ORnaJ+DXLdHTVSFbU8yX6xZ34Bjg4Q32yPkmveUP1yItXReKfB0Aknlh/3zxTKAw==} + /@types/mdast@3.0.15: + resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} dependencies: - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 + dev: false - /@types/mdast@4.0.2: - resolution: {integrity: sha512-tYR83EignvhYO9iU3kDg8V28M0jqyh9zzp5GV+EO+AYnyUl3P5ltkTeJuTiFZQFz670FSb3EwT/6LQdX+UdKfw==} + /@types/mdast@4.0.3: + resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} dependencies: - '@types/unist': 2.0.9 - dev: false + '@types/unist': 3.0.2 - /@types/mdurl@1.0.4: - resolution: {integrity: sha512-ARVxjAEX5TARFRzpDRVC6cEk0hUIXCCwaMhz8y7S1/PxU6zZS1UMjyobz7q4w/D/R552r4++EhwmXK1N2rAy0A==} + /@types/mdurl@1.0.5: + resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} - /@types/mdx@2.0.9: - resolution: {integrity: sha512-OKMdj17y8Cs+k1r0XFyp59ChSOwf8ODGtMQ4mnpfz5eFDk1aO41yN3pSKGuvVzmWAkFp37seubY1tzOVpwfWwg==} + /@types/mdx@2.0.10: + resolution: {integrity: sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==} dev: false - /@types/mime@1.3.4: - resolution: {integrity: sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw==} + /@types/mime@1.3.5: + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} dev: true - /@types/mime@3.0.3: - resolution: {integrity: sha512-i8MBln35l856k5iOhKk2XJ4SeAWg75mLIpZB4v6imOagKL6twsukBZGDMNhdOVk7yRFTMPpfILocMos59Q1otQ==} + /@types/mime@3.0.4: + resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} dev: true /@types/minimist@1.2.4: resolution: {integrity: sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ==} dev: true - /@types/mocha@10.0.3: - resolution: {integrity: sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ==} + /@types/mocha@10.0.4: + resolution: {integrity: sha512-xKU7bUjiFTIttpWaIZ9qvgg+22O1nmbA+HRxdlR+u6TWsGfmFdXrheJoK4fFxrHNVIOBDvDNKZG+LYBpMHpX3w==} dev: true - /@types/ms@0.7.33: - resolution: {integrity: sha512-AuHIyzR5Hea7ij0P9q7vx7xu4z0C28ucwjAZC0ja7JhINyCnOw8/DnvAPQQ9TfOlCtZAmCERKQX9+o1mgQhuOQ==} + /@types/ms@0.7.34: + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - /@types/needle@3.2.2: - resolution: {integrity: sha512-xUKAjFjDcucpgfyTvnbaqN+WBKyM9UehBuVRI/1AoPbaXrCScADqeTgTM1ZBYnS3Ovs9IEQt813IcJNyac7dNQ==} + /@types/needle@3.2.3: + resolution: {integrity: sha512-aUtoZUGROl654rDZlZYPRYaysAOBaVgjnbmYKq3n32afuqFvEts31YGixTebSOCJt7B7qKnHzCzcjbMig5LcQg==} dependencies: - '@types/node': 18.18.6 + '@types/node': 20.9.1 dev: true /@types/nlcst@1.0.3: resolution: {integrity: sha512-cpO6PPMz4E++zxP2Vhp/3KVl2Nbtj+Iksb25rlRinG7mphu2zmCIKWWlqdsx1NwJEISogR2eeZTD7JqLOCzaiw==} dependencies: - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 dev: false /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true - /@types/node@16.18.59: - resolution: {integrity: sha512-PJ1w2cNeKUEdey4LiPra0ZuxZFOGvetswE8qHRriV/sUkL5Al4tTmPV9D2+Y/TPIxTHHgxTfRjZVKWhPw/ORhQ==} + /@types/node@16.18.61: + resolution: {integrity: sha512-k0N7BqGhJoJzdh6MuQg1V1ragJiXTh8VUBAZTWjJ9cUq23SG0F0xavOwZbhiP4J3y20xd6jxKx+xNUhkMAi76Q==} dev: false /@types/node@17.0.45: @@ -8890,6 +8873,24 @@ packages: /@types/node@18.18.6: resolution: {integrity: sha512-wf3Vz+jCmOQ2HV1YUJuCWdL64adYxumkrxtc+H1VUQlnQI04+5HtH+qZCOE21lBE7gIrt+CwX2Wv8Acrw5Ak6w==} + /@types/node@18.18.9: + resolution: {integrity: sha512-0f5klcuImLnG4Qreu9hPj/rEfFq6YRc5n2mAjSsH+ec/mJL+3voBH0+8T7o8RpFjH7ovc+TRsL/c7OYIQsPTfQ==} + dependencies: + undici-types: 5.26.5 + dev: false + + /@types/node@20.9.1: + resolution: {integrity: sha512-HhmzZh5LSJNS5O8jQKpJ/3ZcrrlG6L70hpGqMIAoM9YVD0YBRNWYsfwcXq8VnSjlNpCpgLzMXdiPo+dxcvSmiA==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/node@20.9.2: + resolution: {integrity: sha512-WHZXKFCEyIUJzAwh3NyyTHYSR35SevJ6mZ1nWwJafKtiQbqRTIKSRcw3Ma3acqgsent3RRDqeVwpHntMk+9irg==} + dependencies: + undici-types: 5.26.5 + dev: false + /@types/normalize-package-data@2.4.3: resolution: {integrity: sha512-ehPtgRgaULsFG8x0NeYJvmyH1hmlfsNLujHe9dQEia/7MAJYdzMSi19JtchUHjmBA6XC/75dK55mzZH+RyieSg==} dev: true @@ -8898,48 +8899,47 @@ packages: resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} dev: false - /@types/prismjs@1.26.0: - resolution: {integrity: sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==} + /@types/prismjs@1.26.3: + resolution: {integrity: sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw==} dev: true - /@types/probe-image-size@7.2.2: - resolution: {integrity: sha512-rNWbJLj3XdCfiHsaDVTkPgvTtxlVMgNEpGpJYU/d2pVwzIpjumZguQzlnOQPWF7ajPOpX00rmPQGerRlB3tL+g==} + /@types/probe-image-size@7.2.3: + resolution: {integrity: sha512-6OJa/Tj7OjiahwdcfLWvrzGpXLSjLfbfjqdpth2Oy9YKI58A6Ec5YvFcqfVXOSaJPkA3W+nZx6cPheMQrdtz1w==} dependencies: - '@types/needle': 3.2.2 - '@types/node': 18.18.6 + '@types/needle': 3.2.3 + '@types/node': 20.9.1 dev: true - /@types/prompts@2.4.7: - resolution: {integrity: sha512-5zTamE+QQM4nR6Ab3yHK+ovWuhLJXaa2ZLt3mT1en8U3ubWtjVT1vXDaVFC2+cL89uVn7Y+gIq5B3IcVvBl5xQ==} + /@types/prompts@2.4.8: + resolution: {integrity: sha512-fPOEzviubkEVCiLduO45h+zFHB0RZX8tFt3C783sO5cT7fUXf3EEECpD26djtYdh4Isa9Z9tasMQuZnYPtvYzw==} dependencies: - '@types/node': 18.18.6 + '@types/node': 20.9.1 kleur: 3.0.3 dev: true - /@types/prop-types@15.7.9: - resolution: {integrity: sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==} + /@types/prop-types@15.7.10: + resolution: {integrity: sha512-mxSnDQxPqsZxmeShFH+uwQ4kO4gcJcGahjjMFeLbKE95IAZiiZyiEepGZjtXJ7hN/yfu0bu9xN2ajcU0JcxX6A==} - /@types/react-dom@18.2.14: - resolution: {integrity: sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ==} + /@types/react-dom@18.2.15: + resolution: {integrity: sha512-HWMdW+7r7MR5+PZqJF6YFNSCtjz1T0dsvo/f1BV6HkV+6erD/nA7wd9NM00KVG83zf2nJ7uATPO9ttdIPvi3gg==} dependencies: - '@types/react': 18.2.31 + '@types/react': 18.2.37 - /@types/react@18.2.31: - resolution: {integrity: sha512-c2UnPv548q+5DFh03y8lEDeMfDwBn9G3dRwfkrxQMo/dOtRHUUO57k6pHvBIfH/VF4Nh+98mZ5aaSe+2echD5g==} + /@types/react@18.2.37: + resolution: {integrity: sha512-RGAYMi2bhRgEXT3f4B92WTohopH6bIXw05FuGlmJEnv/omEn190+QYEIYxIAuIBdKgboYYdVved2p1AxZVQnaw==} dependencies: - '@types/prop-types': 15.7.9 - '@types/scheduler': 0.16.5 + '@types/prop-types': 15.7.10 + '@types/scheduler': 0.16.6 csstype: 3.1.2 /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 18.18.6 + '@types/node': 20.9.2 dev: false - /@types/resolve@1.20.4: - resolution: {integrity: sha512-BKGK0T1VgB1zD+PwQR4RRf0ais3NyvH1qjLUrHI5SEiccYaJrhLstLuoXFWJ+2Op9whGizSPUMGPJY/Qtb/A2w==} - dev: true + /@types/resolve@1.20.5: + resolution: {integrity: sha512-aten5YPFp8G+cMpkTK5MCcUW5GlwZUby+qlt0/3oFgOCooFgzqvZQ9/0tROY49sUYmhEybBBj3jwpkQ/R3rjjw==} /@types/sax@1.2.6: resolution: {integrity: sha512-A1mpYCYu1aHFayy8XKN57ebXeAbh9oQIZ1wXcno6b1ESUAfMBDMx7mf/QGlYwcMRaFryh9YBuH03i/3FlPGDkQ==} @@ -8947,30 +8947,34 @@ packages: '@types/node': 18.18.6 dev: false - /@types/scheduler@0.16.5: - resolution: {integrity: sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw==} + /@types/scheduler@0.16.6: + resolution: {integrity: sha512-Vlktnchmkylvc9SnwwwozTv04L/e1NykF5vgoQ0XTmI8DD+wxfjQuHuvHS3p0r2jz2x2ghPs2h1FVeDirIteWA==} /@types/semver@7.5.4: resolution: {integrity: sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==} dev: true - /@types/send@0.17.3: - resolution: {integrity: sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug==} + /@types/semver@7.5.5: + resolution: {integrity: sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg==} + dev: true + + /@types/send@0.17.4: + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: - '@types/mime': 1.3.4 - '@types/node': 18.18.6 + '@types/mime': 1.3.5 + '@types/node': 20.9.1 dev: true - /@types/server-destroy@1.0.2: - resolution: {integrity: sha512-Ac4skQzgViPGKqWU89yrtDDfZHvwDxQOzGnd4aS6Tab9IL3VatvfYk2LScKGNS/EML21yvF/9Zy4lMl74tXkPw==} + /@types/server-destroy@1.0.3: + resolution: {integrity: sha512-Qq0fn70C7TLDG1W9FCblKufNWW1OckQ41dVKV2Dku5KdZF7bexezG4e2WBaBKhdwL3HZ+cYCEIKwg2BRgzrWmA==} dependencies: - '@types/node': 18.18.6 + '@types/node': 20.9.1 dev: true - /@types/set-cookie-parser@2.4.5: - resolution: {integrity: sha512-ZPmztaAQ4rbnW/WTUnT1dwSENQo4bjGqxCSeyK+gZxmd+zJl/QAeF6dpEXcS5UEJX22HwiggFSaY8nE1nRmkbg==} + /@types/set-cookie-parser@2.4.6: + resolution: {integrity: sha512-tjIRMxGztGfIbW2/d20MdJmAPZbabtdW051cKfU+nvZXUnKKifHbY2CyL/C0EGabUB8ahIRjanYzTqJUQR8TAQ==} dependencies: - '@types/node': 18.18.6 + '@types/node': 20.9.1 dev: true /@types/strip-bom@3.0.0: @@ -8984,23 +8988,26 @@ packages: /@types/trusted-types@2.0.5: resolution: {integrity: sha512-I3pkr8j/6tmQtKV/ZzHtuaqYSQvyjGRKH4go60Rr0IDLlFxuRT5V32uvB1mecM5G1EVAUyF/4r4QZ1GHgz+mxA==} - /@types/unist@2.0.9: - resolution: {integrity: sha512-zC0iXxAv1C1ERURduJueYzkzZ2zaGyc+P2c95hgkikHPr3z8EdUZOlgEQ5X0DRmwDZn+hekycQnoeiiRVrmilQ==} + /@types/ungap__structured-clone@0.3.2: + resolution: {integrity: sha512-a7oBPz4/IurTfw0/+R4F315npapBXlSimrQlmDfr0lo1Pv0BeHNADgbHXdDP8LCjnCiRne4jRSr/5UnQitX2og==} + dev: true + + /@types/unist@2.0.10: + resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} - /@types/unist@3.0.1: - resolution: {integrity: sha512-ue/hDUpPjC85m+PM9OQDMZr3LywT+CT6mPsQq8OJtCLiERkGRcQUFvu9XASF5XWqyZFXbf15lvb3JFJ4dRLWPg==} - dev: false + /@types/unist@3.0.2: + resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} - /@types/which-pm-runs@1.0.1: - resolution: {integrity: sha512-RMI8GIL1+Ky7+dRuAfJgOyEWo7ss0lKPwi3VyircV32lUoLjiEDhemt7YuTxbXaxa1XXd+F0xrUaxHdh7gr52A==} + /@types/which-pm-runs@1.0.2: + resolution: {integrity: sha512-M0ZefeDApctHbjqtATOiixiwafG7pXD3exxnjku4XmX9+2DmONGghv5Z8Pnm0lNLBZKvDQyuG+4pLkH2UkP5gg==} dev: true - /@types/yargs-parser@21.0.2: - resolution: {integrity: sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw==} + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} dev: true - /@typescript-eslint/eslint-plugin@6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.52.0)(typescript@5.1.6): - resolution: {integrity: sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==} + /@typescript-eslint/eslint-plugin@6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.54.0)(typescript@5.2.2): + resolution: {integrity: sha512-uXnpZDc4VRjY4iuypDBKzW1rz9T5YBBK0snMn8MaTSNd2kMlj50LnLBABELjJiOL5YHk7ZD8hbSpI9ubzqYI0w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -9010,26 +9017,26 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.9.1 - '@typescript-eslint/parser': 6.8.0(eslint@8.52.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 6.8.0 - '@typescript-eslint/type-utils': 6.8.0(eslint@8.52.0)(typescript@5.1.6) - '@typescript-eslint/utils': 6.8.0(eslint@8.52.0)(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.8.0 + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 6.11.0(eslint@8.54.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.11.0 + '@typescript-eslint/type-utils': 6.11.0(eslint@8.54.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.11.0(eslint@8.54.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.11.0 debug: 4.3.4(supports-color@8.1.1) - eslint: 8.52.0 + eslint: 8.54.0 graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.0 natural-compare: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.1.6) - typescript: 5.1.6 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.8.0(eslint@8.52.0)(typescript@5.1.6): - resolution: {integrity: sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==} + /@typescript-eslint/parser@6.11.0(eslint@8.54.0)(typescript@5.2.2): + resolution: {integrity: sha512-+whEdjk+d5do5nxfxx73oanLL9ghKO3EwM9kBCkUtWMRwWuPaFv9ScuqlYfQ6pAD6ZiJhky7TZ2ZYhrMsfMxVQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -9038,27 +9045,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.8.0 - '@typescript-eslint/types': 6.8.0 - '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.8.0 + '@typescript-eslint/scope-manager': 6.11.0 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.11.0 debug: 4.3.4(supports-color@8.1.1) - eslint: 8.52.0 - typescript: 5.1.6 + eslint: 8.54.0 + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@6.8.0: - resolution: {integrity: sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==} + /@typescript-eslint/scope-manager@6.11.0: + resolution: {integrity: sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.8.0 - '@typescript-eslint/visitor-keys': 6.8.0 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/visitor-keys': 6.11.0 dev: true - /@typescript-eslint/type-utils@6.8.0(eslint@8.52.0)(typescript@5.1.6): - resolution: {integrity: sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==} + /@typescript-eslint/type-utils@6.11.0(eslint@8.54.0)(typescript@5.2.2): + resolution: {integrity: sha512-nA4IOXwZtqBjIoYrJcYxLRO+F9ri+leVGoJcMW1uqr4r1Hq7vW5cyWrA43lFbpRvQ9XgNrnfLpIkO3i1emDBIA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -9067,23 +9074,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.1.6) - '@typescript-eslint/utils': 6.8.0(eslint@8.52.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.11.0(eslint@8.54.0)(typescript@5.2.2) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.52.0 - ts-api-utils: 1.0.3(typescript@5.1.6) - typescript: 5.1.6 + eslint: 8.54.0 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@6.8.0: - resolution: {integrity: sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==} + /@typescript-eslint/types@6.11.0: + resolution: {integrity: sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.8.0(typescript@5.1.6): - resolution: {integrity: sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==} + /@typescript-eslint/typescript-estree@6.11.0(typescript@5.2.2): + resolution: {integrity: sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -9091,42 +9098,42 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.8.0 - '@typescript-eslint/visitor-keys': 6.8.0 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/visitor-keys': 6.11.0 debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.1.6) - typescript: 5.1.6 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@6.8.0(eslint@8.52.0)(typescript@5.1.6): - resolution: {integrity: sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==} + /@typescript-eslint/utils@6.11.0(eslint@8.54.0)(typescript@5.2.2): + resolution: {integrity: sha512-p23ibf68fxoZy605dc0dQAEoUsoiNoP3MD9WQGiHLDuTSOuqoTsa4oAy+h3KDkTcxbbfOtUjb9h3Ta0gT4ug2g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) - '@types/json-schema': 7.0.14 - '@types/semver': 7.5.4 - '@typescript-eslint/scope-manager': 6.8.0 - '@typescript-eslint/types': 6.8.0 - '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.1.6) - eslint: 8.52.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.5 + '@typescript-eslint/scope-manager': 6.11.0 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) + eslint: 8.54.0 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@6.8.0: - resolution: {integrity: sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==} + /@typescript-eslint/visitor-keys@6.11.0: + resolution: {integrity: sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/types': 6.11.0 eslint-visitor-keys: 3.4.3 dev: true @@ -9165,25 +9172,25 @@ packages: server-only: 0.0.1 dev: false - /@vercel/edge@1.1.0: - resolution: {integrity: sha512-84H2EavY5Kul9Ef1DnTH0XEG5vChqcXjyqoRLVPjjZjLWw47sMapzXXQH09pybcshR+8AKqULGvFqPTWuRh3Rw==} + /@vercel/edge@1.1.1: + resolution: {integrity: sha512-NtKiIbn9Cq6HWGy+qRudz28mz5nxfOJWls5Pnckjw1yCfSX8rhXdvY/il3Sy3Zd5n/sKCM2h7VSCCpJF/oaDrQ==} dev: true - /@vercel/nft@0.23.1: - resolution: {integrity: sha512-NE0xSmGWVhgHF1OIoir71XAd0W0C1UE3nzFyhpFiMr3rVhetww7NvM1kc41trBsPG37Bh+dE5FYCTMzM/gBu0w==} - engines: {node: '>=14'} + /@vercel/nft@0.24.3: + resolution: {integrity: sha512-IyBdIxmFAeGZnEfMgt4QrGK7XX4lWazlQj34HEi9dw04/WeDBJ7r1yaOIO5tTf9pbfvwUFodj9b0H+NDGGoOMg==} + engines: {node: '>=16'} hasBin: true dependencies: '@mapbox/node-pre-gyp': 1.0.11 '@rollup/pluginutils': 4.2.1 - acorn: 8.10.0 + acorn: 8.11.2 async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 glob: 7.2.3 graceful-fs: 4.2.11 micromatch: 4.0.5 - node-gyp-build: 4.6.1 + node-gyp-build: 4.7.0 resolve-from: 5.0.0 transitivePeerDependencies: - encoding @@ -9204,12 +9211,12 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.3) '@types/babel__core': 7.20.4 react-refresh: 0.14.0 - vite: 5.0.0(@types/node@18.18.6)(sass@1.69.4) + vite: 5.0.0(@types/node@18.18.6)(sass@1.69.5) transitivePeerDependencies: - supports-color dev: false - /@vitejs/plugin-vue-jsx@3.1.0(vite@5.0.0)(vue@3.3.6): + /@vitejs/plugin-vue-jsx@3.1.0(vite@5.0.0)(vue@3.3.8): resolution: {integrity: sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -9222,13 +9229,13 @@ packages: '@babel/core': 7.23.3 '@babel/plugin-transform-typescript': 7.23.3(@babel/core@7.23.3) '@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.23.3) - vite: 5.0.0(@types/node@18.18.6)(sass@1.69.4) - vue: 3.3.6(typescript@5.1.6) + vite: 5.0.0(@types/node@18.18.6)(sass@1.69.5) + vue: 3.3.8(typescript@5.2.2) transitivePeerDependencies: - supports-color dev: false - /@vitejs/plugin-vue@4.5.0(vite@5.0.0)(vue@3.3.6): + /@vitejs/plugin-vue@4.5.0(vite@5.0.0)(vue@3.3.8): resolution: {integrity: sha512-a2WSpP8X8HTEww/U00bU4mX1QpLINNuz/2KMNpLsdu3BzOpak3AGI1CJYBTXcc4SPhaD0eNRUp7IyQK405L5dQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -9238,8 +9245,8 @@ packages: vite: optional: true dependencies: - vite: 5.0.0(@types/node@18.18.6)(sass@1.69.4) - vue: 3.3.6(typescript@5.1.6) + vite: 5.0.0(@types/node@18.18.6)(sass@1.69.5) + vue: 3.3.8(typescript@5.2.2) dev: false /@vitest/expect@0.34.6: @@ -9280,70 +9287,60 @@ packages: pretty-format: 29.7.0 dev: false - /@volar/kit@1.10.4: - resolution: {integrity: sha512-ha6xNFwkLoRysR90JqJ05xKhjZ3vUMkxjOBif6MaS1eF4sVip2579fygSPsAXviT81gA+oyWJeKBWD8nhdnxIg==} - peerDependencies: - typescript: '*' - dependencies: - '@volar/language-service': 1.10.4 - typesafe-path: 0.2.2 - vscode-languageserver-textdocument: 1.0.11 - vscode-uri: 3.0.8 - dev: true - - /@volar/kit@1.10.4(typescript@5.1.6): - resolution: {integrity: sha512-ha6xNFwkLoRysR90JqJ05xKhjZ3vUMkxjOBif6MaS1eF4sVip2579fygSPsAXviT81gA+oyWJeKBWD8nhdnxIg==} + /@volar/kit@1.10.10(typescript@5.2.2): + resolution: {integrity: sha512-V2SyUPCPUhueqH8j5t48LJ0QsjExGSXzTv/XOdkUHV7hJ/ekyRGFqKxcfBtMq/nK6Tgu2G1ba+6u0d7e6wKcQw==} peerDependencies: typescript: '*' dependencies: - '@volar/language-service': 1.10.4 + '@volar/language-service': 1.10.10 typesafe-path: 0.2.2 - typescript: 5.1.6 + typescript: 5.2.2 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 dev: true - /@volar/language-core@1.10.4: - resolution: {integrity: sha512-Na69qA6uwVIdA0rHuOc2W3pHtVQQO8hCNim7FOaKNpRJh0oAFnu5r9i7Oopo5C4cnELZkPNjTrbmpcCTiW+CMQ==} + /@volar/language-core@1.10.10: + resolution: {integrity: sha512-nsV1o3AZ5n5jaEAObrS3MWLBWaGwUj/vAsc15FVNIv+DbpizQRISg9wzygsHBr56ELRH8r4K75vkYNMtsSNNWw==} dependencies: - '@volar/source-map': 1.10.4 + '@volar/source-map': 1.10.10 dev: true - /@volar/language-server@1.10.4: - resolution: {integrity: sha512-LhCz5GTdA6nRy35GIqCnYRljWC+C+sPT/AF5FNZnSjUn9I/Ug5io2LI2RnMLCKFQM1v9VFePHMiHBl639Rf6Kw==} + /@volar/language-server@1.10.10: + resolution: {integrity: sha512-F2PRBU+CRjT7L9qe8bjof/uz/LbAXVmgwNU2gOSX2y1bUl3E8DHmD0dB6pwIVublvkx+Ivg/0r3Z6oyxfPPruQ==} dependencies: - '@volar/language-core': 1.10.4 - '@volar/language-service': 1.10.4 - '@volar/typescript': 1.10.4 + '@volar/language-core': 1.10.10 + '@volar/language-service': 1.10.10 + '@volar/typescript': 1.10.10 '@vscode/l10n': 0.0.16 + path-browserify: 1.0.1 request-light: 0.7.0 - typesafe-path: 0.2.2 vscode-languageserver: 9.0.1 vscode-languageserver-protocol: 3.17.5 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 dev: true - /@volar/language-service@1.10.4: - resolution: {integrity: sha512-SGDsmGojVJi7RiHM9WON4O2Ed7PbjU+3gzEn0lODxK5qa+PDGzzSaFWIQeCp8Av+ef5uhZ4gJcTUR3AmD/29HQ==} + /@volar/language-service@1.10.10: + resolution: {integrity: sha512-P4fiPWDI6fLGO6BghlksCVHs1nr9gvWAMDyma3Bca4aowxXusxjUVTsnJq0EVorIN5uIr1Xel4B/tNdXt/IKyw==} dependencies: - '@volar/language-core': 1.10.4 - '@volar/source-map': 1.10.4 + '@volar/language-core': 1.10.10 + '@volar/source-map': 1.10.10 vscode-languageserver-protocol: 3.17.5 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 dev: true - /@volar/source-map@1.10.4: - resolution: {integrity: sha512-RxZdUEL+pV8p+SMqnhVjzy5zpb1QRZTlcwSk4bdcBO7yOu4rtEWqDGahVCEj4CcXour+0yJUMrMczfSCpP9Uxg==} + /@volar/source-map@1.10.10: + resolution: {integrity: sha512-GVKjLnifV4voJ9F0vhP56p4+F3WGf+gXlRtjFZsv6v3WxBTWU3ZVeaRaEHJmWrcv5LXmoYYpk/SC25BKemPRkg==} dependencies: muggle-string: 0.3.1 dev: true - /@volar/typescript@1.10.4: - resolution: {integrity: sha512-BCCUEBASBEMCrz7qmNSi2hBEWYsXD0doaktRKpmmhvb6XntM2sAWYu6gbyK/MluLDgluGLFiFRpWgobgzUqolg==} + /@volar/typescript@1.10.10: + resolution: {integrity: sha512-4a2r5bdUub2m+mYVnLu2wt59fuoYWe7nf0uXtGHU8QQ5LDNfzAR0wK7NgDiQ9rcl2WT3fxT2AA9AylAwFtj50A==} dependencies: - '@volar/language-core': 1.10.4 + '@volar/language-core': 1.10.10 + path-browserify: 1.0.1 dev: true /@vscode/emmet-helper@2.9.2: @@ -9354,11 +9351,9 @@ packages: vscode-languageserver-textdocument: 1.0.11 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 /@vue/babel-helper-vue-transform-on@1.1.5: resolution: {integrity: sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==} @@ -9376,8 +9371,8 @@ packages: '@babel/helper-module-imports': 7.22.15 '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.3) '@babel/template': 7.22.15 - '@babel/traverse': 7.23.2 - '@babel/types': 7.23.0 + '@babel/traverse': 7.23.3 + '@babel/types': 7.23.3 '@vue/babel-helper-vue-transform-on': 1.1.5 camelcase: 6.3.0 html-tags: 3.3.1 @@ -9386,46 +9381,46 @@ packages: - supports-color dev: false - /@vue/compiler-core@3.3.6: - resolution: {integrity: sha512-2JNjemwaNwf+MkkatATVZi7oAH1Hx0B04DdPH3ZoZ8vKC1xZVP7nl4HIsk8XYd3r+/52sqqoz9TWzYc3yE9dqA==} + /@vue/compiler-core@3.3.8: + resolution: {integrity: sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g==} dependencies: - '@babel/parser': 7.23.0 - '@vue/shared': 3.3.6 + '@babel/parser': 7.23.3 + '@vue/shared': 3.3.8 estree-walker: 2.0.2 source-map-js: 1.0.2 - /@vue/compiler-dom@3.3.6: - resolution: {integrity: sha512-1MxXcJYMHiTPexjLAJUkNs/Tw2eDf2tY3a0rL+LfuWyiKN2s6jvSwywH3PWD8bKICjfebX3GWx2Os8jkRDq3Ng==} + /@vue/compiler-dom@3.3.8: + resolution: {integrity: sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ==} dependencies: - '@vue/compiler-core': 3.3.6 - '@vue/shared': 3.3.6 + '@vue/compiler-core': 3.3.8 + '@vue/shared': 3.3.8 - /@vue/compiler-sfc@3.3.6: - resolution: {integrity: sha512-/Kms6du2h1VrXFreuZmlvQej8B1zenBqIohP0690IUBkJjsFvJxY0crcvVRJ0UhMgSR9dewB+khdR1DfbpArJA==} + /@vue/compiler-sfc@3.3.8: + resolution: {integrity: sha512-WMzbUrlTjfYF8joyT84HfwwXo+8WPALuPxhy+BZ6R4Aafls+jDBnSz8PDz60uFhuqFbl3HxRfxvDzrUf3THwpA==} dependencies: - '@babel/parser': 7.23.0 - '@vue/compiler-core': 3.3.6 - '@vue/compiler-dom': 3.3.6 - '@vue/compiler-ssr': 3.3.6 - '@vue/reactivity-transform': 3.3.6 - '@vue/shared': 3.3.6 + '@babel/parser': 7.23.3 + '@vue/compiler-core': 3.3.8 + '@vue/compiler-dom': 3.3.8 + '@vue/compiler-ssr': 3.3.8 + '@vue/reactivity-transform': 3.3.8 + '@vue/shared': 3.3.8 estree-walker: 2.0.2 magic-string: 0.30.5 postcss: 8.4.31 source-map-js: 1.0.2 - /@vue/compiler-ssr@3.3.6: - resolution: {integrity: sha512-QTIHAfDCHhjXlYGkUg5KH7YwYtdUM1vcFl/FxFDlD6d0nXAmnjizka3HITp8DGudzHndv2PjKVS44vqqy0vP4w==} + /@vue/compiler-ssr@3.3.8: + resolution: {integrity: sha512-hXCqQL/15kMVDBuoBYpUnSYT8doDNwsjvm3jTefnXr+ytn294ySnT8NlsFHmTgKNjwpuFy7XVV8yTeLtNl/P6w==} dependencies: - '@vue/compiler-dom': 3.3.6 - '@vue/shared': 3.3.6 + '@vue/compiler-dom': 3.3.8 + '@vue/shared': 3.3.8 - /@vue/reactivity-transform@3.3.6: - resolution: {integrity: sha512-RlJl4dHfeO7EuzU1iJOsrlqWyJfHTkJbvYz/IOJWqu8dlCNWtxWX377WI0VsbAgBizjwD+3ZjdnvSyyFW1YVng==} + /@vue/reactivity-transform@3.3.8: + resolution: {integrity: sha512-49CvBzmZNtcHua0XJ7GdGifM8GOXoUMOX4dD40Y5DxI3R8OUhMlvf2nvgUAcPxaXiV5MQQ1Nwy09ADpnLQUqRw==} dependencies: - '@babel/parser': 7.23.0 - '@vue/compiler-core': 3.3.6 - '@vue/shared': 3.3.6 + '@babel/parser': 7.23.3 + '@vue/compiler-core': 3.3.8 + '@vue/shared': 3.3.8 estree-walker: 2.0.2 magic-string: 0.30.5 @@ -9435,39 +9430,39 @@ packages: '@vue/shared': 3.1.5 dev: false - /@vue/reactivity@3.3.6: - resolution: {integrity: sha512-gtChAumfQz5lSy5jZXfyXbKrIYPf9XEOrIr6rxwVyeWVjFhJwmwPLtV6Yis+M9onzX++I5AVE9j+iPH60U+B8Q==} + /@vue/reactivity@3.3.8: + resolution: {integrity: sha512-ctLWitmFBu6mtddPyOKpHg8+5ahouoTCRtmAHZAXmolDtuZXfjL2T3OJ6DL6ezBPQB1SmMnpzjiWjCiMYmpIuw==} dependencies: - '@vue/shared': 3.3.6 + '@vue/shared': 3.3.8 - /@vue/runtime-core@3.3.6: - resolution: {integrity: sha512-qp7HTP1iw1UW2ZGJ8L3zpqlngrBKvLsDAcq5lA6JvEXHmpoEmjKju7ahM9W2p/h51h0OT5F2fGlP/gMhHOmbUA==} + /@vue/runtime-core@3.3.8: + resolution: {integrity: sha512-qurzOlb6q26KWQ/8IShHkMDOuJkQnQcTIp1sdP4I9MbCf9FJeGVRXJFr2mF+6bXh/3Zjr9TDgURXrsCr9bfjUw==} dependencies: - '@vue/reactivity': 3.3.6 - '@vue/shared': 3.3.6 + '@vue/reactivity': 3.3.8 + '@vue/shared': 3.3.8 - /@vue/runtime-dom@3.3.6: - resolution: {integrity: sha512-AoX3Cp8NqMXjLbIG9YR6n/pPLWE9TiDdk6wTJHFnl2GpHzDFH1HLBC9wlqqQ7RlnvN3bVLpzPGAAH00SAtOxHg==} + /@vue/runtime-dom@3.3.8: + resolution: {integrity: sha512-Noy5yM5UIf9UeFoowBVgghyGGPIDPy1Qlqt0yVsUdAVbqI8eeMSsTqBtauaEoT2UFXUk5S64aWVNJN4MJ2vRdA==} dependencies: - '@vue/runtime-core': 3.3.6 - '@vue/shared': 3.3.6 + '@vue/runtime-core': 3.3.8 + '@vue/shared': 3.3.8 csstype: 3.1.2 - /@vue/server-renderer@3.3.6(vue@3.3.6): - resolution: {integrity: sha512-kgLoN43W4ERdZ6dpyy+gnk2ZHtcOaIr5Uc/WUP5DRwutgvluzu2pudsZGoD2b7AEJHByUVMa9k6Sho5lLRCykw==} + /@vue/server-renderer@3.3.8(vue@3.3.8): + resolution: {integrity: sha512-zVCUw7RFskvPuNlPn/8xISbrf0zTWsTSdYTsUTN1ERGGZGVnRxM2QZ3x1OR32+vwkkCm0IW6HmJ49IsPm7ilLg==} peerDependencies: - vue: 3.3.6 + vue: 3.3.8 dependencies: - '@vue/compiler-ssr': 3.3.6 - '@vue/shared': 3.3.6 - vue: 3.3.6(typescript@5.1.6) + '@vue/compiler-ssr': 3.3.8 + '@vue/shared': 3.3.8 + vue: 3.3.8(typescript@5.2.2) /@vue/shared@3.1.5: resolution: {integrity: sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==} dev: false - /@vue/shared@3.3.6: - resolution: {integrity: sha512-Xno5pEqg8SVhomD0kTSmfh30ZEmV/+jZtyh39q6QflrjdJCXah5lrnOLi9KB6a5k5aAHXMXjoMnxlzUkCNfWLQ==} + /@vue/shared@3.3.8: + resolution: {integrity: sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw==} /@webcomponents/template-shadowroot@0.2.1: resolution: {integrity: sha512-fXL/vIUakyZL62hyvUh+EMwbVoTc0hksublmRz6ai6et8znHkJa6gtqMUZo1oc7dIz46exHSIImml9QTdknMHg==} @@ -9489,28 +9484,36 @@ packages: negotiator: 0.6.3 dev: true - /acorn-globals@7.0.1: - resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} + /acorn-jsx@5.3.2(acorn@8.10.0): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.10.0 - acorn-walk: 8.2.0 - dev: true + dev: false - /acorn-jsx@5.3.2(acorn@8.10.0): + /acorn-jsx@5.3.2(acorn@8.11.2): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.10.0 + acorn: 8.11.2 /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} + dev: false /acorn@8.10.0: resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true + dev: false + + /acorn@8.11.2: + resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} + engines: {node: '>=0.4.0'} + hasBin: true /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} @@ -9520,6 +9523,15 @@ packages: transitivePeerDependencies: - supports-color + /agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} + dependencies: + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + dev: false + /aggregate-error@4.0.1: resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} engines: {node: '>=12'} @@ -9546,8 +9558,8 @@ packages: uri-js: 4.4.1 dev: false - /alpinejs@3.13.2: - resolution: {integrity: sha512-WzojeeN082kLZznGI1HAuP8yFJSWqJ1fGdz2mUjj45H4y0XwToE7fFqtI3mCPRR+BpcSbxT/NL+FyPnYAWSltw==} + /alpinejs@3.13.3: + resolution: {integrity: sha512-WZ6WQjkAOl+WdW/jukzNHq9zHFDNKmkk/x6WF7WdyNDD6woinrfXCVsZXm0galjbco+pEpYmJLtwlZwcOfIVdg==} dependencies: '@vue/reactivity': 3.1.5 dev: false @@ -9697,28 +9709,35 @@ packages: /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + /ast-types@0.14.2: + resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} + engines: {node: '>=4'} + dependencies: + tslib: 2.6.2 + dev: false + /astring@1.8.6: resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} hasBin: true dev: false - /astro-auto-import@0.3.1(astro@packages+astro): - resolution: {integrity: sha512-4kXZMlZFiq3dqT6fcfPbCjHTABQ279eKbIqZAb6qktBhGlmHwpHr1spOUFj/RQFilaWVgfjzOBmuZnoydZb5Vg==} + /astro-auto-import@0.3.2(astro@packages+astro): + resolution: {integrity: sha512-xnr56geVyqJTu5qicJzvxqSnkhktq7SulWIzme1Vs5mrrcMkH/N1s7TEYkgJCN2b5qSeltqqZ7UUSD3xXrXamA==} engines: {node: '>=16.0.0'} peerDependencies: astro: '*' dependencies: - '@types/node': 18.18.6 - acorn: 8.10.0 + '@types/node': 18.18.9 + acorn: 8.11.2 astro: link:packages/astro dev: false - /astro-embed@0.5.1(astro@packages+astro): - resolution: {integrity: sha512-ucrikhD3KwuTLNJUbZmAYddGakf9Tmw4TBr43YseGPfpZrKk1rMOD70d6ehj7Ai3kkTziab1vGXA56dAWf9bVg==} + /astro-embed@0.6.0(astro@packages+astro): + resolution: {integrity: sha512-KE1cBjQvCdqNv1C/oXG5sMfH+bbovu7F88pK1J/iZRaoaRqH2sNe5ZT1G25PDlzvcPYzK6KNB2aUm8jBRNQJfg==} peerDependencies: astro: '*' dependencies: - '@astro-community/astro-embed-integration': 0.5.1(astro@packages+astro) + '@astro-community/astro-embed-integration': 0.6.0(astro@packages+astro) '@astro-community/astro-embed-twitter': 0.5.2(astro@packages+astro) '@astro-community/astro-embed-vimeo': 0.3.1(astro@packages+astro) '@astro-community/astro-embed-youtube': 0.4.1(astro@packages+astro) @@ -9733,12 +9752,81 @@ packages: ultrahtml: 0.1.3 dev: false + /astro@1.0.0: + resolution: {integrity: sha512-mk7/2iY0k0uSZX6eK6770vLZ0535XgmYxLKzKBVsM+W/nYwH96qJugC6PFvdKONyLceSicoULUsy+GYbKRuv1w==} + engines: {node: ^14.18.0 || >=16.12.0, npm: '>=6.14.0'} + hasBin: true + dependencies: + '@astrojs/compiler': 0.23.5 + '@astrojs/language-server': 0.20.3 + '@astrojs/markdown-remark': 1.2.0 + '@astrojs/telemetry': 1.0.1 + '@astrojs/webapi': 1.1.1 + '@babel/core': 7.23.3 + '@babel/generator': 7.23.3 + '@babel/parser': 7.23.3 + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.3) + '@babel/traverse': 7.23.3 + '@babel/types': 7.23.3 + '@proload/core': 0.3.3 + '@proload/plugin-tsm': 0.2.1(@proload/core@0.3.3) + ast-types: 0.14.2 + boxen: 6.2.1 + ci-info: 3.9.0 + common-ancestor-path: 1.0.1 + debug: 4.3.4(supports-color@8.1.1) + diff: 5.1.0 + eol: 0.9.1 + es-module-lexer: 0.10.5 + esbuild: 0.14.54 + execa: 6.1.0 + fast-glob: 3.3.2 + github-slugger: 1.5.0 + gray-matter: 4.0.3 + html-entities: 2.3.3 + html-escaper: 3.0.3 + kleur: 4.1.5 + magic-string: 0.25.9 + mime: 3.0.0 + ora: 6.3.1 + path-browserify: 1.0.1 + path-to-regexp: 6.2.1 + postcss: 8.4.31 + postcss-load-config: 3.1.4(postcss@8.4.31) + preferred-pm: 3.1.2 + prompts: 2.4.2 + recast: 0.20.5 + rehype: 12.0.1 + resolve: 1.22.8 + rollup: 2.79.1 + semver: 7.5.4 + shiki: 0.10.1 + sirv: 2.0.3 + slash: 4.0.0 + string-width: 5.1.2 + strip-ansi: 7.1.0 + supports-esm: 1.0.0 + tsconfig-resolver: 3.0.1 + unist-util-visit: 4.1.2 + vfile: 5.3.7 + vite: 3.0.4 + yargs-parser: 21.1.1 + zod: 3.22.4 + transitivePeerDependencies: + - less + - sass + - stylus + - supports-color + - terser + - ts-node + dev: false + /async-sema@3.1.1: resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} dev: false - /async@3.2.4: - resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + /async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} dev: false /asynckit@0.4.0: @@ -9808,7 +9896,7 @@ packages: dev: false optional: true - /babel-plugin-jsx-dom-expressions@0.37.2(@babel/core@7.23.2): + /babel-plugin-jsx-dom-expressions@0.37.2(@babel/core@7.23.3): resolution: {integrity: sha512-u3VKB+On86cYSLAbw9j0m0X8ZejL4MR7oG7TRlrMQ/y1mauR/ZpM2xkiOPZEUlzHLo1GYGlTdP9s5D3XuA6iSQ==} peerDependencies: '@babel/core': ^7.20.12 @@ -9816,15 +9904,15 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2) - '@babel/types': 7.23.0 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.3) + '@babel/types': 7.23.3 html-entities: 2.3.3 validate-html-nesting: 1.2.2 dev: false - /babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.23.2): + /babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.23.3): resolution: {integrity: sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -9832,15 +9920,15 @@ packages: '@babel/core': optional: true dependencies: - '@babel/compat-data': 7.23.2 - '@babel/core': 7.23.2 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.2) + '@babel/compat-data': 7.23.3 + '@babel/core': 7.23.3 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.3) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: false - /babel-plugin-polyfill-corejs3@0.8.6(@babel/core@7.23.2): + /babel-plugin-polyfill-corejs3@0.8.6(@babel/core@7.23.3): resolution: {integrity: sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -9848,14 +9936,14 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.2) - core-js-compat: 3.33.1 + '@babel/core': 7.23.3 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.3) + core-js-compat: 3.33.3 transitivePeerDependencies: - supports-color dev: false - /babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.23.2): + /babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.23.3): resolution: {integrity: sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -9863,8 +9951,8 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.2) + '@babel/core': 7.23.3 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.3) transitivePeerDependencies: - supports-color dev: false @@ -9878,7 +9966,7 @@ packages: optional: true dev: false - /babel-preset-solid@1.8.2(@babel/core@7.23.2): + /babel-preset-solid@1.8.2(@babel/core@7.23.3): resolution: {integrity: sha512-hEIy4K1CGPQwCekFJ9NV3T92fezS4GQV0SQXEGVe9dyo+7iI7Fjuu6OKIdE5z/S4IfMEL6gCU+1AZ3yK6PnGMg==} peerDependencies: '@babel/core': ^7.0.0 @@ -9886,8 +9974,8 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.23.2 - babel-plugin-jsx-dom-expressions: 0.37.2(@babel/core@7.23.2) + '@babel/core': 7.23.3 + babel-plugin-jsx-dom-expressions: 0.37.2(@babel/core@7.23.3) dev: false /bail@2.0.2: @@ -9896,6 +9984,10 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + /base-64@1.0.0: + resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} + dev: false + /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: false @@ -9971,6 +10063,24 @@ packages: /boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + /boolean@3.2.0: + resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} + dev: false + + /boxen@6.2.1: + resolution: {integrity: sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 + dev: false + /boxen@7.1.1: resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} engines: {node: '>=14.16'} @@ -10120,8 +10230,8 @@ packages: /caniuse-lite@1.0.30001553: resolution: {integrity: sha512-N0ttd6TrFfuqKNi+pMgWJTb9qrdJu4JSpgPFLe/lrD19ugC6fZgF0pUewRowDwzdDnb9V41mFcdlYgl/PyKf4A==} - /canvas-confetti@1.9.0: - resolution: {integrity: sha512-0UGU/T5Un/Cd4Aj4fu/p/oVQm8Il+brK5xcmY+y77u7PXuyNJD4ODUWe01A5o3GUI9Bb8lOBlQ10VdaDsY1FBA==} + /canvas-confetti@1.9.1: + resolution: {integrity: sha512-jieDCn9OnPgFu5q+rbOGUmIGOjzgOnecW1/6KH07kAFAMwOczcTc4clde9pdyUPIAd/2wxZ8C5u7mBAcOpGK8Q==} dev: false /ccount@2.0.1: @@ -10266,6 +10376,11 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + /ci-info@4.0.0: + resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} + engines: {node: '>=8'} + dev: false + /clean-css@4.2.4: resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==} engines: {node: '>= 4.0'} @@ -10334,7 +10449,6 @@ packages: /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} - dev: true /clsx@2.0.0: resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} @@ -10349,11 +10463,15 @@ packages: resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - '@types/estree': 1.0.3 - acorn: 8.10.0 + '@types/estree': 1.0.5 + acorn: 8.11.2 estree-walker: 3.0.3 periscopic: 3.1.0 + /collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + dev: false + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -10470,9 +10588,15 @@ packages: /cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} + dev: true - /core-js-compat@3.33.1: - resolution: {integrity: sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ==} + /cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + dev: false + + /core-js-compat@3.33.3: + resolution: {integrity: sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==} dependencies: browserslist: 4.22.1 dev: false @@ -10565,8 +10689,8 @@ packages: resolution: {integrity: sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==} dev: false - /css-selector-parser@2.3.2: - resolution: {integrity: sha512-JjnG6/pdLJh3iqipq7kteNVtbIczsU2A1cNxb+VAiniSuNmrB/NI3us4rSCfArvlwRXYly+jZhUUfEoInSH9Qg==} + /css-selector-parser@3.0.0: + resolution: {integrity: sha512-ITsFspnTOObbNv81tXX+7QK/MtxciSBDAWQCKnmWIuwDSDDvfJD+YSPEpC7TMVhi1N2llzHHMz7xCX8AoC0L6w==} dev: false /css-tree@2.2.1: @@ -10588,8 +10712,8 @@ packages: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} - /cssdb@7.8.0: - resolution: {integrity: sha512-SkeezZOQr5AHt9MgJgSFNyiuJwg1p8AwoVln6JwaQJsyxduRW9QJ+HP/gAQzbsz8SIqINtYvpJKjxTRI67zxLg==} + /cssdb@7.9.0: + resolution: {integrity: sha512-WPMT9seTQq6fPAa1yN4zjgZZeoTriSN2LqW9C+otjar12DQIWA4LuSfFrvFJiKp4oD0xIk1vumDLw8K9ur4NBw==} dev: true /cssesc@3.0.0: @@ -10604,19 +10728,15 @@ packages: css-tree: 2.2.1 dev: false - /cssom@0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - dev: true - /cssom@0.5.0: resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} dev: true - /cssstyle@2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} + /cssstyle@3.0.0: + resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} + engines: {node: '>=14'} dependencies: - cssom: 0.3.8 + rrweb-cssom: 0.6.0 dev: true /csstype@3.1.2: @@ -10649,13 +10769,13 @@ packages: engines: {node: '>= 12'} dev: false - /data-urls@3.0.2: - resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} - engines: {node: '>=12'} + /data-urls@4.0.0: + resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} + engines: {node: '>=14'} dependencies: abab: 2.0.6 whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 + whatwg-url: 12.0.1 dev: true /dataloader@1.4.0: @@ -10779,7 +10899,6 @@ packages: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 - dev: true /define-data-property@1.1.1: resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} @@ -10802,8 +10921,8 @@ packages: has-property-descriptors: 1.0.1 object-keys: 1.1.1 - /defu@6.1.2: - resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==} + /defu@6.1.3: + resolution: {integrity: sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==} dev: false /del@7.1.0: @@ -10860,8 +10979,15 @@ packages: requiresBuild: true dev: false - /deterministic-object-hash@1.3.1: - resolution: {integrity: sha512-kQDIieBUreEgY+akq0N7o4FzZCr27dPG1xr3wq267vPwDlSXQ3UMcBXHqTGUBaM/5WDS1jwTYjxRhUzHeuiAvw==} + /detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + dev: false + + /deterministic-object-hash@2.0.1: + resolution: {integrity: sha512-8HuU2kMCPzMwxa86oBoFQ5xwmwRrPAqWdyhS89RSYjsr2b6k7NIMlDwZRzRI/rHAm3Ip8KNy76cWWuprreJSyg==} + engines: {node: '>=18'} + dependencies: + base-64: 1.0.0 dev: false /devalue@4.3.2: @@ -10871,7 +10997,6 @@ packages: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} dependencies: dequal: 2.0.3 - dev: false /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -10894,12 +11019,14 @@ packages: /diff@5.1.0: resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} engines: {node: '>=0.3.1'} + dev: false /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dependencies: path-type: 4.0.0 + dev: true /direction@2.0.1: resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} @@ -10951,8 +11078,8 @@ packages: engines: {node: '>=10'} dev: true - /dset@3.1.2: - resolution: {integrity: sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==} + /dset@3.1.3: + resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==} engines: {node: '>=4'} dev: false @@ -10989,7 +11116,6 @@ packages: dependencies: '@emmetio/abbreviation': 2.3.3 '@emmetio/css-abbreviation': 2.1.8 - dev: true /emoji-regex@10.3.0: resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} @@ -11036,7 +11162,6 @@ packages: /eol@0.9.1: resolution: {integrity: sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==} - dev: true /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -11088,8 +11213,12 @@ packages: unbox-primitive: 1.0.2 which-typed-array: 1.1.13 - /es-module-lexer@1.3.1: - resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==} + /es-module-lexer@0.10.5: + resolution: {integrity: sha512-+7IwY/kiGAacQfY+YBhKMvEmyAJnw5grTUgjG85Pe7vcUI/6b7pZjZG8nQ7+48YhzEAEqrEgD2dCz/JIK+AYvw==} + dev: false + + /es-module-lexer@1.4.1: + resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} dev: false /es-set-tostringtag@2.0.2: @@ -11114,17 +11243,440 @@ packages: is-date-object: 1.0.5 is-symbol: 1.0.4 - /esbuild-plugin-copy@2.1.1(esbuild@0.19.5): - resolution: {integrity: sha512-Bk66jpevTcV8KMFzZI1P7MZKZ+uDcrZm2G2egZ2jNIvVnivDpodZI+/KnpL3Jnap0PBdIHU7HwFGB8r+vV5CVw==} - peerDependencies: - esbuild: '>= 0.14.0' - dependencies: - chalk: 4.1.2 - chokidar: 3.5.3 - esbuild: 0.19.5 - fs-extra: 10.1.0 - globby: 11.1.0 - dev: true + /es6-error@4.1.1: + resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + dev: false + + /esbuild-android-64@0.14.54: + resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /esbuild-android-64@0.15.18: + resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /esbuild-android-arm64@0.14.54: + resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /esbuild-android-arm64@0.15.18: + resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /esbuild-darwin-64@0.14.54: + resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /esbuild-darwin-64@0.15.18: + resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /esbuild-darwin-arm64@0.14.54: + resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /esbuild-darwin-arm64@0.15.18: + resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /esbuild-freebsd-64@0.14.54: + resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /esbuild-freebsd-64@0.15.18: + resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /esbuild-freebsd-arm64@0.14.54: + resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /esbuild-freebsd-arm64@0.15.18: + resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-32@0.14.54: + resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-32@0.15.18: + resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-64@0.14.54: + resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-64@0.15.18: + resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-arm64@0.14.54: + resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-arm64@0.15.18: + resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-arm@0.14.54: + resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-arm@0.15.18: + resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-mips64le@0.14.54: + resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-mips64le@0.15.18: + resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-ppc64le@0.14.54: + resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-ppc64le@0.15.18: + resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-riscv64@0.14.54: + resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-riscv64@0.15.18: + resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-s390x@0.14.54: + resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-s390x@0.15.18: + resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-netbsd-64@0.14.54: + resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: false + optional: true + + /esbuild-netbsd-64@0.15.18: + resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: false + optional: true + + /esbuild-openbsd-64@0.14.54: + resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: false + optional: true + + /esbuild-openbsd-64@0.15.18: + resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: false + optional: true + + /esbuild-plugin-copy@2.1.1(esbuild@0.19.6): + resolution: {integrity: sha512-Bk66jpevTcV8KMFzZI1P7MZKZ+uDcrZm2G2egZ2jNIvVnivDpodZI+/KnpL3Jnap0PBdIHU7HwFGB8r+vV5CVw==} + peerDependencies: + esbuild: '>= 0.14.0' + dependencies: + chalk: 4.1.2 + chokidar: 3.5.3 + esbuild: 0.19.6 + fs-extra: 10.1.0 + globby: 11.1.0 + dev: true + + /esbuild-sunos-64@0.14.54: + resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: false + optional: true + + /esbuild-sunos-64@0.15.18: + resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: false + optional: true + + /esbuild-windows-32@0.14.54: + resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /esbuild-windows-32@0.15.18: + resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /esbuild-windows-64@0.14.54: + resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /esbuild-windows-64@0.15.18: + resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /esbuild-windows-arm64@0.14.54: + resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /esbuild-windows-arm64@0.15.18: + resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /esbuild@0.14.54: + resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/linux-loong64': 0.14.54 + esbuild-android-64: 0.14.54 + esbuild-android-arm64: 0.14.54 + esbuild-darwin-64: 0.14.54 + esbuild-darwin-arm64: 0.14.54 + esbuild-freebsd-64: 0.14.54 + esbuild-freebsd-arm64: 0.14.54 + esbuild-linux-32: 0.14.54 + esbuild-linux-64: 0.14.54 + esbuild-linux-arm: 0.14.54 + esbuild-linux-arm64: 0.14.54 + esbuild-linux-mips64le: 0.14.54 + esbuild-linux-ppc64le: 0.14.54 + esbuild-linux-riscv64: 0.14.54 + esbuild-linux-s390x: 0.14.54 + esbuild-netbsd-64: 0.14.54 + esbuild-openbsd-64: 0.14.54 + esbuild-sunos-64: 0.14.54 + esbuild-windows-32: 0.14.54 + esbuild-windows-64: 0.14.54 + esbuild-windows-arm64: 0.14.54 + dev: false + + /esbuild@0.15.18: + resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.15.18 + '@esbuild/linux-loong64': 0.15.18 + esbuild-android-64: 0.15.18 + esbuild-android-arm64: 0.15.18 + esbuild-darwin-64: 0.15.18 + esbuild-darwin-arm64: 0.15.18 + esbuild-freebsd-64: 0.15.18 + esbuild-freebsd-arm64: 0.15.18 + esbuild-linux-32: 0.15.18 + esbuild-linux-64: 0.15.18 + esbuild-linux-arm: 0.15.18 + esbuild-linux-arm64: 0.15.18 + esbuild-linux-mips64le: 0.15.18 + esbuild-linux-ppc64le: 0.15.18 + esbuild-linux-riscv64: 0.15.18 + esbuild-linux-s390x: 0.15.18 + esbuild-netbsd-64: 0.15.18 + esbuild-openbsd-64: 0.15.18 + esbuild-sunos-64: 0.15.18 + esbuild-windows-32: 0.15.18 + esbuild-windows-64: 0.15.18 + esbuild-windows-arm64: 0.15.18 + dev: false /esbuild@0.18.20: resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} @@ -11156,34 +11708,34 @@ packages: '@esbuild/win32-x64': 0.18.20 dev: false - /esbuild@0.19.5: - resolution: {integrity: sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ==} + /esbuild@0.19.6: + resolution: {integrity: sha512-Xl7dntjA2OEIvpr9j0DVxxnog2fyTGnyVoQXAMQI6eR3mf9zCQds7VIKUDCotDgE/p4ncTgeRqgX8t5d6oP4Gw==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.19.5 - '@esbuild/android-arm64': 0.19.5 - '@esbuild/android-x64': 0.19.5 - '@esbuild/darwin-arm64': 0.19.5 - '@esbuild/darwin-x64': 0.19.5 - '@esbuild/freebsd-arm64': 0.19.5 - '@esbuild/freebsd-x64': 0.19.5 - '@esbuild/linux-arm': 0.19.5 - '@esbuild/linux-arm64': 0.19.5 - '@esbuild/linux-ia32': 0.19.5 - '@esbuild/linux-loong64': 0.19.5 - '@esbuild/linux-mips64el': 0.19.5 - '@esbuild/linux-ppc64': 0.19.5 - '@esbuild/linux-riscv64': 0.19.5 - '@esbuild/linux-s390x': 0.19.5 - '@esbuild/linux-x64': 0.19.5 - '@esbuild/netbsd-x64': 0.19.5 - '@esbuild/openbsd-x64': 0.19.5 - '@esbuild/sunos-x64': 0.19.5 - '@esbuild/win32-arm64': 0.19.5 - '@esbuild/win32-ia32': 0.19.5 - '@esbuild/win32-x64': 0.19.5 + '@esbuild/android-arm': 0.19.6 + '@esbuild/android-arm64': 0.19.6 + '@esbuild/android-x64': 0.19.6 + '@esbuild/darwin-arm64': 0.19.6 + '@esbuild/darwin-x64': 0.19.6 + '@esbuild/freebsd-arm64': 0.19.6 + '@esbuild/freebsd-x64': 0.19.6 + '@esbuild/linux-arm': 0.19.6 + '@esbuild/linux-arm64': 0.19.6 + '@esbuild/linux-ia32': 0.19.6 + '@esbuild/linux-loong64': 0.19.6 + '@esbuild/linux-mips64el': 0.19.6 + '@esbuild/linux-ppc64': 0.19.6 + '@esbuild/linux-riscv64': 0.19.6 + '@esbuild/linux-s390x': 0.19.6 + '@esbuild/linux-x64': 0.19.6 + '@esbuild/netbsd-x64': 0.19.6 + '@esbuild/openbsd-x64': 0.19.6 + '@esbuild/sunos-x64': 0.19.6 + '@esbuild/win32-arm64': 0.19.6 + '@esbuild/win32-ia32': 0.19.6 + '@esbuild/win32-x64': 0.19.6 /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -11199,31 +11751,18 @@ packages: /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - dev: true /escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - /escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - dev: true - - /eslint-config-prettier@9.0.0(eslint@8.52.0): + /eslint-config-prettier@9.0.0(eslint@8.54.0): resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.52.0 + eslint: 8.54.0 dev: true /eslint-plugin-no-only-tests@3.1.0: @@ -11231,7 +11770,7 @@ packages: engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.0.0)(eslint@8.52.0)(prettier@3.0.3): + /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.0.0)(eslint@8.54.0)(prettier@3.1.0): resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -11245,9 +11784,9 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.52.0 - eslint-config-prettier: 9.0.0(eslint@8.52.0) - prettier: 3.0.3 + eslint: 8.54.0 + eslint-config-prettier: 9.0.0(eslint@8.54.0) + prettier: 3.1.0 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 dev: true @@ -11265,15 +11804,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.52.0: - resolution: {integrity: sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==} + /eslint@8.54.0: + resolution: {integrity: sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) - '@eslint-community/regexpp': 4.9.1 - '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.52.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.3 + '@eslint/js': 8.54.0 '@humanwhocodes/config-array': 0.11.13 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -11295,7 +11834,7 @@ packages: glob-parent: 6.0.2 globals: 13.23.0 graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -11321,8 +11860,8 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.10.0 - acorn-jsx: 5.3.2(acorn@8.10.0) + acorn: 8.11.2 + acorn-jsx: 5.3.2(acorn@8.11.2) eslint-visitor-keys: 3.4.3 dev: true @@ -11350,17 +11889,18 @@ packages: engines: {node: '>=4.0'} dev: true - /estree-util-attach-comments@2.1.1: - resolution: {integrity: sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==} + /estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} dependencies: - '@types/estree': 1.0.3 + '@types/estree': 1.0.5 dev: false - /estree-util-build-jsx@2.2.2: - resolution: {integrity: sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==} + /estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} dependencies: - '@types/estree-jsx': 1.0.2 - estree-util-is-identifier-name: 2.1.0 + '@types/estree-jsx': 1.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 estree-walker: 3.0.3 dev: false @@ -11368,10 +11908,14 @@ packages: resolution: {integrity: sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==} dev: false - /estree-util-to-js@1.2.0: - resolution: {integrity: sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==} + /estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + dev: false + + /estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} dependencies: - '@types/estree-jsx': 1.0.2 + '@types/estree-jsx': 1.0.3 astring: 1.8.6 source-map: 0.7.4 dev: false @@ -11379,8 +11923,15 @@ packages: /estree-util-visit@1.2.1: resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==} dependencies: - '@types/estree-jsx': 1.0.2 - '@types/unist': 2.0.9 + '@types/estree-jsx': 1.0.3 + '@types/unist': 2.0.10 + dev: false + + /estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + dependencies: + '@types/estree-jsx': 1.0.3 + '@types/unist': 3.0.2 dev: false /estree-walker@1.0.1: @@ -11393,7 +11944,7 @@ packages: /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: - '@types/estree': 1.0.3 + '@types/estree': 1.0.5 /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} @@ -11422,6 +11973,21 @@ packages: strip-final-newline: 2.0.0 dev: true + /execa@6.1.0: + resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 3.0.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + dev: false + /execa@7.2.0: resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} @@ -11533,8 +12099,8 @@ packages: dev: false optional: true - /fast-glob@3.3.1: - resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -11579,7 +12145,7 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.1.1 + flat-cache: 3.2.0 dev: true /file-uri-to-path@1.0.0: @@ -11633,9 +12199,9 @@ packages: micromatch: 4.0.5 pkg-dir: 4.2.0 - /flat-cache@3.1.1: - resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} - engines: {node: '>=12.0.0'} + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: flatted: 3.2.9 keyv: 4.5.4 @@ -11723,7 +12289,7 @@ packages: at-least-node: 1.0.0 graceful-fs: 4.2.11 jsonfile: 6.1.0 - universalify: 2.0.0 + universalify: 2.0.1 dev: false /fs-minipass@2.1.0: @@ -11791,6 +12357,11 @@ packages: engines: {node: 6.* || 8.* || >= 10.*} dev: true + /get-east-asian-width@1.2.0: + resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} + engines: {node: '>=18'} + dev: false + /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} @@ -11809,7 +12380,6 @@ packages: /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - dev: true /get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} @@ -11822,15 +12392,15 @@ packages: call-bind: 1.0.5 get-intrinsic: 1.2.2 - /giget@1.1.2: - resolution: {integrity: sha512-HsLoS07HiQ5oqvObOI+Qb2tyZH4Gj5nYGfF9qQcZNrPw+uEFhdXtgJr01aO2pWadGHucajYDLxxbtQkm97ON2A==} + /giget@1.1.3: + resolution: {integrity: sha512-zHuCeqtfgqgDwvXlR84UNgnJDuUHQcNI5OqWqFxxuk2BshuKbYhJWdxBsEo4PvKqoGh23lUAIvBNpChMLv7/9Q==} hasBin: true dependencies: colorette: 2.0.20 - defu: 6.1.2 - https-proxy-agent: 5.0.1 + defu: 6.1.3 + https-proxy-agent: 7.0.2 mri: 1.2.0 - node-fetch-native: 1.4.0 + node-fetch-native: 1.4.1 pathe: 1.1.1 tar: 6.2.0 transitivePeerDependencies: @@ -11843,6 +12413,10 @@ packages: dev: false optional: true + /github-slugger@1.5.0: + resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} + dev: false + /github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -11889,6 +12463,18 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 + /global-agent@3.0.0: + resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} + engines: {node: '>=10.0'} + dependencies: + boolean: 3.2.0 + es6-error: 4.1.1 + matcher: 3.0.0 + roarr: 2.15.4 + semver: 7.5.4 + serialize-error: 7.0.1 + dev: false + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -11917,8 +12503,8 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.1 - ignore: 5.2.4 + fast-glob: 3.3.2 + ignore: 5.3.0 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -11928,10 +12514,23 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 - fast-glob: 3.3.1 - ignore: 5.2.4 + fast-glob: 3.3.2 + ignore: 5.3.0 merge2: 1.4.1 slash: 4.0.0 + dev: true + + /globby@14.0.0: + resolution: {integrity: sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==} + engines: {node: '>=18'} + dependencies: + '@sindresorhus/merge-streams': 1.0.0 + fast-glob: 3.3.2 + ignore: 5.3.0 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 + dev: false /globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} @@ -11983,6 +12582,12 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + /has-package-exports@1.3.0: + resolution: {integrity: sha512-e9OeXPQnmPhYoJ63lXC4wWe34TxEGZDZ3OQX9XRqp2VwsfLl3bQBy7VehLnd34g3ef8CmYlBLGqEMKXuz8YazQ==} + dependencies: + '@ljharb/has-package-exports-patterns': 0.0.2 + dev: false + /has-property-descriptors@1.0.1: resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} dependencies: @@ -12021,73 +12626,79 @@ packages: dependencies: function-bind: 1.1.2 - /hast-util-from-dom@4.2.0: - resolution: {integrity: sha512-t1RJW/OpJbCAJQeKi3Qrj1cAOLA0+av/iPFori112+0X7R3wng+jxLA+kXec8K4szqPRGI8vPxbbpEYvvpwaeQ==} + /hast-util-from-dom@5.0.0: + resolution: {integrity: sha512-d6235voAp/XR3Hh5uy7aGLbM3S4KamdW0WEgOaU1YoewnuYw4HXb5eRtv9g65m/RFGEfUY1Mw4UqCc5Y8L4Stg==} dependencies: - hastscript: 7.2.0 + '@types/hast': 3.0.3 + hastscript: 8.0.0 web-namespaces: 2.0.1 dev: true + /hast-util-from-html@2.0.1: + resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} + dependencies: + '@types/hast': 3.0.3 + devlop: 1.1.0 + hast-util-from-parse5: 8.0.1 + parse5: 7.1.2 + vfile: 6.0.1 + vfile-message: 4.0.2 + dev: false + /hast-util-from-parse5@7.1.2: resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} dependencies: - '@types/hast': 2.3.7 - '@types/unist': 2.0.9 + '@types/hast': 2.3.8 + '@types/unist': 2.0.10 hastscript: 7.2.0 - property-information: 6.3.0 + property-information: 6.4.0 vfile: 5.3.7 vfile-location: 4.1.0 web-namespaces: 2.0.1 - dev: false /hast-util-from-parse5@8.0.1: resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} dependencies: - '@types/hast': 3.0.2 - '@types/unist': 3.0.1 + '@types/hast': 3.0.3 + '@types/unist': 3.0.2 devlop: 1.1.0 hastscript: 8.0.0 - property-information: 6.3.0 + property-information: 6.4.0 vfile: 6.0.1 vfile-location: 5.0.2 web-namespaces: 2.0.1 dev: false - /hast-util-has-property@2.0.1: - resolution: {integrity: sha512-X2+RwZIMTMKpXUzlotatPzWj8bspCymtXH3cfG3iQKV+wPF53Vgaqxi/eLqGck0wKq1kS9nvoB1wchbCPEL8sg==} - /hast-util-has-property@3.0.0: resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} dependencies: - '@types/hast': 3.0.2 + '@types/hast': 3.0.3 dev: false - /hast-util-heading-rank@2.1.1: - resolution: {integrity: sha512-iAuRp+ESgJoRFJbSyaqsfvJDY6zzmFoEnL1gtz1+U8gKtGGj1p0CVlysuUAUjq95qlZESHINLThwJzNGmgGZxA==} + /hast-util-heading-rank@3.0.0: + resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} dependencies: - '@types/hast': 2.3.7 + '@types/hast': 3.0.3 - /hast-util-is-element@2.1.3: - resolution: {integrity: sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==} + /hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} dependencies: - '@types/hast': 2.3.7 - '@types/unist': 2.0.9 + '@types/hast': 3.0.3 /hast-util-parse-selector@3.1.1: resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} dependencies: - '@types/hast': 2.3.7 + '@types/hast': 2.3.8 /hast-util-parse-selector@4.0.0: resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} dependencies: - '@types/hast': 3.0.2 - dev: false + '@types/hast': 3.0.3 /hast-util-raw@7.2.3: resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} dependencies: - '@types/hast': 2.3.7 + '@types/hast': 2.3.8 '@types/parse5': 6.0.3 hast-util-from-parse5: 7.1.2 hast-util-to-parse5: 7.1.0 @@ -12103,8 +12714,8 @@ packages: /hast-util-raw@9.0.1: resolution: {integrity: sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==} dependencies: - '@types/hast': 3.0.2 - '@types/unist': 3.0.1 + '@types/hast': 3.0.3 + '@types/unist': 3.0.2 '@ungap/structured-clone': 1.2.0 hast-util-from-parse5: 8.0.1 hast-util-to-parse5: 8.0.0 @@ -12118,34 +12729,14 @@ packages: zwitch: 2.0.4 dev: false - /hast-util-select@5.0.5: - resolution: {integrity: sha512-QQhWMhgTFRhCaQdgTKzZ5g31GLQ9qRb1hZtDPMqQaOhpLBziWcshUS0uCR5IJ0U1jrK/mxg35fmcq+Dp/Cy2Aw==} - dependencies: - '@types/hast': 2.3.7 - '@types/unist': 2.0.9 - bcp-47-match: 2.0.3 - comma-separated-tokens: 2.0.3 - css-selector-parser: 1.4.1 - direction: 2.0.1 - hast-util-has-property: 2.0.1 - hast-util-to-string: 2.0.0 - hast-util-whitespace: 2.0.1 - not: 0.1.0 - nth-check: 2.1.1 - property-information: 6.3.0 - space-separated-tokens: 2.0.2 - unist-util-visit: 4.1.2 - zwitch: 2.0.4 - dev: false - - /hast-util-select@6.0.1: - resolution: {integrity: sha512-KPNOtLqeJCcFRyxQm9BakO3bdIQfremXraw4mh9jxsJ+L593v/VdP3G9Dfjahacl/bw8PPvIFseaXzElKOYRpA==} + /hast-util-select@6.0.2: + resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} dependencies: - '@types/hast': 3.0.2 - '@types/unist': 3.0.1 + '@types/hast': 3.0.3 + '@types/unist': 3.0.2 bcp-47-match: 2.0.3 comma-separated-tokens: 2.0.3 - css-selector-parser: 2.3.2 + css-selector-parser: 3.0.0 devlop: 1.1.0 direction: 2.0.1 hast-util-has-property: 3.0.0 @@ -12153,29 +12744,30 @@ packages: hast-util-whitespace: 3.0.0 not: 0.1.0 nth-check: 2.1.1 - property-information: 6.3.0 + property-information: 6.4.0 space-separated-tokens: 2.0.2 unist-util-visit: 5.0.0 zwitch: 2.0.4 dev: false - /hast-util-to-estree@2.3.3: - resolution: {integrity: sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==} + /hast-util-to-estree@3.1.0: + resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} dependencies: - '@types/estree': 1.0.3 - '@types/estree-jsx': 1.0.2 - '@types/hast': 2.3.7 - '@types/unist': 2.0.9 + '@types/estree': 1.0.5 + '@types/estree-jsx': 1.0.3 + '@types/hast': 3.0.3 comma-separated-tokens: 2.0.3 - estree-util-attach-comments: 2.1.1 - estree-util-is-identifier-name: 2.1.0 - hast-util-whitespace: 2.0.1 - mdast-util-mdx-expression: 1.3.2 - mdast-util-mdxjs-esm: 1.3.1 - property-information: 6.3.0 + 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-mdxjs-esm: 2.0.1 + property-information: 6.4.0 space-separated-tokens: 2.0.2 style-to-object: 0.4.4 - unist-util-position: 4.0.4 + unist-util-position: 5.0.0 zwitch: 2.0.4 transitivePeerDependencies: - supports-color @@ -12184,14 +12776,14 @@ packages: /hast-util-to-html@8.0.4: resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==} dependencies: - '@types/hast': 2.3.7 - '@types/unist': 2.0.9 + '@types/hast': 2.3.8 + '@types/unist': 2.0.10 ccount: 2.0.1 comma-separated-tokens: 2.0.3 hast-util-raw: 7.2.3 hast-util-whitespace: 2.0.1 html-void-elements: 2.0.1 - property-information: 6.3.0 + property-information: 6.4.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.3 zwitch: 2.0.4 @@ -12200,26 +12792,40 @@ packages: /hast-util-to-html@9.0.0: resolution: {integrity: sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==} dependencies: - '@types/hast': 3.0.2 - '@types/unist': 3.0.1 + '@types/hast': 3.0.3 + '@types/unist': 3.0.2 ccount: 2.0.1 comma-separated-tokens: 2.0.3 hast-util-raw: 9.0.1 hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 mdast-util-to-hast: 13.0.2 - property-information: 6.3.0 + property-information: 6.4.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.3 zwitch: 2.0.4 dev: false + /hast-util-to-jsx-runtime@2.2.0: + resolution: {integrity: sha512-wSlp23N45CMjDg/BPW8zvhEi3R+8eRE1qFbjEyAUzMCzu2l1Wzwakq+Tlia9nkCtEl5mDxa7nKHsvYJ6Gfn21A==} + dependencies: + '@types/hast': 3.0.3 + '@types/unist': 3.0.2 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + property-information: 6.4.0 + space-separated-tokens: 2.0.2 + style-to-object: 0.4.4 + unist-util-position: 5.0.0 + vfile-message: 4.0.2 + dev: false + /hast-util-to-parse5@7.1.0: resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==} dependencies: - '@types/hast': 2.3.7 + '@types/hast': 2.3.8 comma-separated-tokens: 2.0.3 - property-information: 6.3.0 + property-information: 6.4.0 space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 @@ -12228,10 +12834,10 @@ packages: /hast-util-to-parse5@8.0.0: resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} dependencies: - '@types/hast': 3.0.2 + '@types/hast': 3.0.3 comma-separated-tokens: 2.0.3 devlop: 1.1.0 - property-information: 6.3.0 + property-information: 6.4.0 space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 @@ -12240,21 +12846,21 @@ packages: /hast-util-to-string@2.0.0: resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} dependencies: - '@types/hast': 2.3.7 + '@types/hast': 2.3.8 + dev: true /hast-util-to-string@3.0.0: resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} dependencies: - '@types/hast': 3.0.2 - dev: false + '@types/hast': 3.0.3 - /hast-util-to-text@3.1.2: - resolution: {integrity: sha512-tcllLfp23dJJ+ju5wCCZHVpzsQQ43+moJbqVX3jNWPB7z/KFC4FyZD6R7y94cHL6MQ33YtMZL8Z0aIXXI4XFTw==} + /hast-util-to-text@4.0.0: + resolution: {integrity: sha512-EWiE1FSArNBPUo1cKWtzqgnuRQwEeQbQtnFJRYV1hb1BWDgrAlBU0ExptvZMM/KSA82cDpm2sFGf3Dmc5Mza3w==} dependencies: - '@types/hast': 2.3.7 - '@types/unist': 2.0.9 - hast-util-is-element: 2.1.3 - unist-util-find-after: 4.0.1 + '@types/hast': 3.0.3 + '@types/unist': 3.0.2 + hast-util-is-element: 3.0.0 + unist-util-find-after: 5.0.0 dev: true /hast-util-whitespace@2.0.1: @@ -12264,27 +12870,26 @@ packages: /hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} dependencies: - '@types/hast': 3.0.2 + '@types/hast': 3.0.3 dev: false /hastscript@7.2.0: resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} dependencies: - '@types/hast': 2.3.7 + '@types/hast': 2.3.8 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 3.1.1 - property-information: 6.3.0 + property-information: 6.4.0 space-separated-tokens: 2.0.2 /hastscript@8.0.0: resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} dependencies: - '@types/hast': 3.0.2 + '@types/hast': 3.0.3 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 - property-information: 6.3.0 + property-information: 6.4.0 space-separated-tokens: 2.0.2 - dev: false /hdr-histogram-js@3.0.0: resolution: {integrity: sha512-/EpvQI2/Z98mNFYEnlqJ8Ogful8OpArLG/6Tf2bPnkutBVLIeMVNHjk1ZDfshF2BUweipzbk+dB1hgSB7SIakw==} @@ -12364,7 +12969,6 @@ packages: domhandler: 5.0.3 domutils: 3.1.0 entities: 4.5.0 - dev: false /http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} @@ -12404,6 +13008,16 @@ packages: transitivePeerDependencies: - supports-color + /https-proxy-agent@7.0.2: + resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + dev: false + /human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} dev: true @@ -12413,6 +13027,11 @@ packages: engines: {node: '>=10.17.0'} dev: true + /human-signals@3.0.1: + resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} + engines: {node: '>=12.20.0'} + dev: false + /human-signals@4.3.1: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} engines: {node: '>=14.18.0'} @@ -12455,8 +13074,8 @@ packages: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: false - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + /ignore@5.3.0: + resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} engines: {node: '>= 4'} /immutable@4.3.4: @@ -12470,8 +13089,12 @@ packages: resolve-from: 4.0.0 dev: true - /import-meta-resolve@3.0.0: - resolution: {integrity: sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==} + /import-meta-resolve@2.2.2: + resolution: {integrity: sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==} + dev: false + + /import-meta-resolve@4.0.0: + resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} dev: false /imurmurhash@0.1.4: @@ -12598,7 +13221,6 @@ packages: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true - dev: true /is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} @@ -12713,7 +13335,7 @@ packages: /is-reference@3.0.2: resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} dependencies: - '@types/estree': 1.0.3 + '@types/estree': 1.0.5 /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} @@ -12795,7 +13417,6 @@ packages: engines: {node: '>=8'} dependencies: is-docker: 2.2.1 - dev: true /is-wsl@3.1.0: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} @@ -12815,7 +13436,7 @@ packages: engines: {node: '>=10'} hasBin: true dependencies: - async: 3.2.4 + async: 3.2.5 chalk: 4.1.2 filelist: 1.0.4 minimatch: 3.1.2 @@ -12857,13 +13478,13 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.18.6 + '@types/node': 20.9.2 merge-stream: 2.0.0 supports-color: 7.2.0 dev: false - /jiti@1.20.0: - resolution: {integrity: sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==} + /jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true /js-tokens@4.0.0: @@ -12882,9 +13503,9 @@ packages: dependencies: argparse: 2.0.1 - /jsdom@20.0.3: - resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} - engines: {node: '>=14'} + /jsdom@22.1.0: + resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} + engines: {node: '>=16'} peerDependencies: canvas: ^2.5.0 peerDependenciesMeta: @@ -12892,14 +13513,10 @@ packages: optional: true dependencies: abab: 2.0.6 - acorn: 8.10.0 - acorn-globals: 7.0.1 - cssom: 0.5.0 - cssstyle: 2.3.0 - data-urls: 3.0.2 + cssstyle: 3.0.0 + data-urls: 4.0.0 decimal.js: 10.4.3 domexception: 4.0.0 - escodegen: 2.1.0 form-data: 4.0.0 html-encoding-sniffer: 3.0.0 http-proxy-agent: 5.0.0 @@ -12907,6 +13524,7 @@ packages: is-potential-custom-element-name: 1.0.1 nwsapi: 2.2.7 parse5: 7.1.2 + rrweb-cssom: 0.6.0 saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 4.1.3 @@ -12914,7 +13532,7 @@ packages: webidl-conversions: 7.0.0 whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 + whatwg-url: 12.0.1 ws: 8.14.2 xml-name-validator: 4.0.0 transitivePeerDependencies: @@ -12975,6 +13593,10 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true + /json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + dev: false + /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -12982,7 +13604,6 @@ packages: /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==} @@ -13051,16 +13672,20 @@ packages: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} + /lilconfig@3.0.0: + resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} + engines: {node: '>=14'} + /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /linkedom@0.15.6: - resolution: {integrity: sha512-2Vt8fdP5BNWeIiV8B3ZxfY2Z8zB0u2nVP4JPS+cgeqUlNbY26IFdDot4FYM+pZ6dA2fTVrP6bi8Z4VNTlyurvA==} + /linkedom@0.16.4: + resolution: {integrity: sha512-SykvDVh/jAnaO+WiPqH5vX3QpZrIRImuppzYhIHons3RXPhDwqN2dOyfopOVaHleqWtoS+3vWCqen+m8M3HToQ==} dependencies: css-select: 5.1.0 cssom: 0.5.0 html-escaper: 3.0.3 - htmlparser2: 8.0.2 + htmlparser2: 9.0.0 uhyphen: 0.2.0 dev: true @@ -13269,9 +13894,9 @@ packages: engines: {node: '>=8'} dev: true - /markdown-extensions@1.1.1: - resolution: {integrity: sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==} - engines: {node: '>=0.10.0'} + /markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} dev: false /markdown-table@3.0.3: @@ -13284,6 +13909,13 @@ packages: hasBin: true dev: false + /matcher@3.0.0: + resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 4.0.0 + dev: false + /mathjax-full@3.2.2: resolution: {integrity: sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==} dependencies: @@ -13296,32 +13928,42 @@ packages: /mdast-util-definitions@5.1.2: resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} dependencies: - '@types/mdast': 3.0.14 - '@types/unist': 2.0.9 + '@types/mdast': 3.0.15 + '@types/unist': 2.0.10 unist-util-visit: 4.1.2 + dev: false /mdast-util-definitions@6.0.0: resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} dependencies: - '@types/mdast': 4.0.2 - '@types/unist': 3.0.1 + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 unist-util-visit: 5.0.0 dev: false /mdast-util-find-and-replace@2.2.2: resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==} dependencies: - '@types/mdast': 3.0.14 + '@types/mdast': 3.0.15 escape-string-regexp: 5.0.0 unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 dev: false + /mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + dependencies: + '@types/mdast': 4.0.3 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + dev: false + /mdast-util-from-markdown@1.3.1: resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} dependencies: - '@types/mdast': 3.0.14 - '@types/unist': 2.0.9 + '@types/mdast': 3.0.15 + '@types/unist': 2.0.10 decode-named-character-reference: 1.0.2 mdast-util-to-string: 3.2.0 micromark: 3.2.0 @@ -13334,35 +13976,86 @@ packages: uvu: 0.5.6 transitivePeerDependencies: - supports-color + dev: false + + /mdast-util-from-markdown@2.0.0: + resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-decode-string: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color /mdast-util-gfm-autolink-literal@1.0.3: resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==} dependencies: - '@types/mdast': 3.0.14 + '@types/mdast': 3.0.15 ccount: 2.0.1 mdast-util-find-and-replace: 2.2.2 micromark-util-character: 1.2.0 dev: false + /mdast-util-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} + dependencies: + '@types/mdast': 4.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.1 + micromark-util-character: 2.0.1 + dev: false + /mdast-util-gfm-footnote@1.0.2: resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==} dependencies: - '@types/mdast': 3.0.14 + '@types/mdast': 3.0.15 mdast-util-to-markdown: 1.5.0 micromark-util-normalize-identifier: 1.1.0 dev: false + /mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: false + /mdast-util-gfm-strikethrough@1.0.3: resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==} dependencies: - '@types/mdast': 3.0.14 + '@types/mdast': 3.0.15 mdast-util-to-markdown: 1.5.0 dev: false + /mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + /mdast-util-gfm-table@1.0.7: resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==} dependencies: - '@types/mdast': 3.0.14 + '@types/mdast': 3.0.15 markdown-table: 3.0.3 mdast-util-from-markdown: 1.3.1 mdast-util-to-markdown: 1.5.0 @@ -13370,13 +14063,36 @@ packages: - supports-color dev: false + /mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + markdown-table: 3.0.3 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + /mdast-util-gfm-task-list-item@1.0.2: resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==} dependencies: - '@types/mdast': 3.0.14 + '@types/mdast': 3.0.15 mdast-util-to-markdown: 1.5.0 dev: false + /mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + /mdast-util-gfm@2.0.2: resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==} dependencies: @@ -13391,129 +14107,197 @@ packages: - supports-color dev: false - /mdast-util-math@2.0.2: - resolution: {integrity: sha512-8gmkKVp9v6+Tgjtq6SYx9kGPpTf6FVYRa53/DLh479aldR9AyP48qeVOgNZ5X7QUK7nOy4yw7vg6mbiGcs9jWQ==} + /mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + dependencies: + mdast-util-from-markdown: 2.0.0 + mdast-util-gfm-autolink-literal: 2.0.0 + mdast-util-gfm-footnote: 2.0.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-math@3.0.0: + resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==} dependencies: - '@types/mdast': 3.0.14 + '@types/hast': 3.0.3 + '@types/mdast': 4.0.3 + devlop: 1.1.0 longest-streak: 3.1.0 - mdast-util-to-markdown: 1.5.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + unist-util-remove-position: 5.0.0 + transitivePeerDependencies: + - supports-color dev: true /mdast-util-mdx-expression@1.3.2: resolution: {integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==} dependencies: - '@types/estree-jsx': 1.0.2 - '@types/hast': 2.3.7 - '@types/mdast': 3.0.14 + '@types/estree-jsx': 1.0.3 + '@types/hast': 2.3.8 + '@types/mdast': 3.0.15 mdast-util-from-markdown: 1.3.1 mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: - supports-color + dev: false + + /mdast-util-mdx-expression@2.0.0: + resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} + dependencies: + '@types/estree-jsx': 1.0.3 + '@types/hast': 3.0.3 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color - /mdast-util-mdx-jsx@2.1.4: - resolution: {integrity: sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==} + /mdast-util-mdx-jsx@1.2.0: + resolution: {integrity: sha512-5+ot/kfxYd3ChgEMwsMUO71oAfYjyRI3pADEK4I7xTmWLGQ8Y7ghm1CG36zUoUvDPxMlIYwQV/9DYHAUWdG4dA==} dependencies: - '@types/estree-jsx': 1.0.2 - '@types/hast': 2.3.7 - '@types/mdast': 3.0.14 - '@types/unist': 2.0.9 - ccount: 2.0.1 - mdast-util-from-markdown: 1.3.1 + '@types/estree-jsx': 0.0.1 + '@types/mdast': 3.0.15 mdast-util-to-markdown: 1.5.0 parse-entities: 4.0.1 stringify-entities: 4.0.3 unist-util-remove-position: 4.0.2 unist-util-stringify-position: 3.0.3 vfile-message: 3.1.4 + dev: false + + /mdast-util-mdx-jsx@3.0.0: + resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==} + dependencies: + '@types/estree-jsx': 1.0.3 + '@types/hast': 3.0.3 + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + 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: - supports-color - /mdast-util-mdx@2.0.1: - resolution: {integrity: sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==} + /mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} dependencies: - mdast-util-from-markdown: 1.3.1 - mdast-util-mdx-expression: 1.3.2 - mdast-util-mdx-jsx: 2.1.4 - mdast-util-mdxjs-esm: 1.3.1 - mdast-util-to-markdown: 1.5.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.0.0 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - /mdast-util-mdxjs-esm@1.3.1: - resolution: {integrity: sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==} + /mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} dependencies: - '@types/estree-jsx': 1.0.2 - '@types/hast': 2.3.7 - '@types/mdast': 3.0.14 - mdast-util-from-markdown: 1.3.1 - mdast-util-to-markdown: 1.5.0 + '@types/estree-jsx': 1.0.3 + '@types/hast': 3.0.3 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color /mdast-util-phrasing@3.0.1: resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} dependencies: - '@types/mdast': 3.0.14 + '@types/mdast': 3.0.15 unist-util-is: 5.2.1 + dev: false + + /mdast-util-phrasing@4.0.0: + resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} + dependencies: + '@types/mdast': 4.0.3 + unist-util-is: 6.0.0 /mdast-util-to-hast@12.3.0: resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} dependencies: - '@types/hast': 2.3.7 - '@types/mdast': 3.0.14 + '@types/hast': 2.3.8 + '@types/mdast': 3.0.15 mdast-util-definitions: 5.1.2 micromark-util-sanitize-uri: 1.2.0 trim-lines: 3.0.1 unist-util-generated: 2.0.1 unist-util-position: 4.0.4 unist-util-visit: 4.1.2 + dev: false /mdast-util-to-hast@13.0.2: resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==} dependencies: - '@types/hast': 3.0.2 - '@types/mdast': 4.0.2 + '@types/hast': 3.0.3 + '@types/mdast': 4.0.3 '@ungap/structured-clone': 1.2.0 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.0 trim-lines: 3.0.1 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 - dev: false /mdast-util-to-markdown@1.5.0: resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} dependencies: - '@types/mdast': 3.0.14 - '@types/unist': 2.0.9 + '@types/mdast': 3.0.15 + '@types/unist': 2.0.10 longest-streak: 3.1.0 mdast-util-phrasing: 3.0.1 mdast-util-to-string: 3.2.0 micromark-util-decode-string: 1.1.0 unist-util-visit: 4.1.2 zwitch: 2.0.4 + dev: false + + /mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.0.0 + mdast-util-to-string: 4.0.0 + micromark-util-decode-string: 2.0.0 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 /mdast-util-to-string@3.2.0: resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} dependencies: - '@types/mdast': 3.0.14 + '@types/mdast': 3.0.15 + dev: false /mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} dependencies: - '@types/mdast': 4.0.2 - dev: false + '@types/mdast': 4.0.3 - /mdast-util-toc@6.1.1: - resolution: {integrity: sha512-Er21728Kow8hehecK2GZtb7Ny3omcoPUVrmObiSUwmoRYVZaXLR751QROEFjR8W/vAQdHMLj49Lz20J55XaNpw==} + /mdast-util-toc@7.0.0: + resolution: {integrity: sha512-C28UcSqjmnWuvgT8d97qpaItHKvySqVPAECUzqQ51xuMyNFFJwcFoKW77KoMjtXrclTidLQFDzLUmTmrshRweA==} dependencies: - '@types/extend': 3.0.3 - '@types/mdast': 3.0.14 - extend: 3.0.2 + '@types/mdast': 4.0.3 + '@types/ungap__structured-clone': 0.3.2 + '@ungap/structured-clone': 1.2.0 github-slugger: 2.0.0 - mdast-util-to-string: 3.2.0 - unist-util-is: 5.2.1 - unist-util-visit: 4.1.2 + mdast-util-to-string: 4.0.0 + unist-util-is: 6.0.0 + unist-util-visit: 5.0.0 dev: true /mdn-data@2.0.28: @@ -13609,6 +14393,27 @@ packages: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 uvu: 0.5.6 + dev: false + + /micromark-core-commonmark@2.0.0: + resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} + dependencies: + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.0 + micromark-factory-label: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-factory-title: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-html-tag-name: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-subtokenize: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 /micromark-extension-gfm-autolink-literal@1.0.5: resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==} @@ -13619,6 +14424,15 @@ packages: micromark-util-types: 1.1.0 dev: false + /micromark-extension-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} + dependencies: + micromark-util-character: 2.0.1 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-extension-gfm-footnote@1.1.2: resolution: {integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==} dependencies: @@ -13632,6 +14446,19 @@ packages: uvu: 0.5.6 dev: false + /micromark-extension-gfm-footnote@2.0.0: + resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-extension-gfm-strikethrough@1.0.7: resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==} dependencies: @@ -13643,6 +14470,17 @@ packages: uvu: 0.5.6 dev: false + /micromark-extension-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-extension-gfm-table@1.0.7: resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==} dependencies: @@ -13653,12 +14491,28 @@ packages: uvu: 0.5.6 dev: false + /micromark-extension-gfm-table@2.0.0: + resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-extension-gfm-tagfilter@1.0.2: resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==} dependencies: micromark-util-types: 1.1.0 dev: false + /micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + dependencies: + micromark-util-types: 2.0.0 + dev: false + /micromark-extension-gfm-task-list-item@1.0.5: resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==} dependencies: @@ -13669,6 +14523,16 @@ packages: uvu: 0.5.6 dev: false + /micromark-extension-gfm-task-list-item@2.0.1: + resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-extension-gfm@2.0.3: resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==} dependencies: @@ -13682,22 +14546,35 @@ packages: micromark-util-types: 1.1.0 dev: false - /micromark-extension-math@2.1.2: - resolution: {integrity: sha512-es0CcOV89VNS9wFmyn+wyFTKweXGW4CEvdaAca6SWRWPyYCbBisnjaHLjWO4Nszuiud84jCpkHsqAJoa768Pvg==} + /micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + dependencies: + micromark-extension-gfm-autolink-literal: 2.0.0 + micromark-extension-gfm-footnote: 2.0.0 + micromark-extension-gfm-strikethrough: 2.0.0 + micromark-extension-gfm-table: 2.0.0 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.0.1 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-math@3.0.0: + resolution: {integrity: sha512-iJ2Q28vBoEovLN5o3GO12CpqorQRYDPT+p4zW50tGwTfJB+iv/VnB6Ini+gqa24K97DwptMBBIvVX6Bjk49oyQ==} dependencies: - '@types/katex': 0.16.5 + '@types/katex': 0.16.6 + devlop: 1.1.0 katex: 0.16.9 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 dev: true /micromark-extension-mdx-expression@1.0.8: resolution: {integrity: sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==} dependencies: - '@types/estree': 1.0.3 + '@types/estree': 1.0.5 micromark-factory-mdx-expression: 1.0.9 micromark-factory-space: 1.1.0 micromark-util-character: 1.2.0 @@ -13707,19 +14584,32 @@ packages: uvu: 0.5.6 dev: false - /micromark-extension-mdx-jsx@1.0.5: - resolution: {integrity: sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==} + /micromark-extension-mdx-expression@3.0.0: + resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.1 + 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 + dev: false + + /micromark-extension-mdx-jsx@3.0.0: + resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} dependencies: '@types/acorn': 4.0.6 - '@types/estree': 1.0.3 - estree-util-is-identifier-name: 2.1.0 - micromark-factory-mdx-expression: 1.0.9 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - vfile-message: 3.1.4 + '@types/estree': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 dev: false /micromark-extension-mdx-md@1.0.1: @@ -13728,31 +14618,37 @@ packages: micromark-util-types: 1.1.0 dev: false - /micromark-extension-mdxjs-esm@1.0.5: - resolution: {integrity: sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==} + /micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} dependencies: - '@types/estree': 1.0.3 - micromark-core-commonmark: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-events-to-acorn: 1.2.3 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - unist-util-position-from-estree: 1.1.2 - uvu: 0.5.6 - vfile-message: 3.1.4 + micromark-util-types: 2.0.0 dev: false - /micromark-extension-mdxjs@1.0.1: - resolution: {integrity: sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==} + /micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} dependencies: - acorn: 8.10.0 - acorn-jsx: 5.3.2(acorn@8.10.0) - micromark-extension-mdx-expression: 1.0.8 - micromark-extension-mdx-jsx: 1.0.5 - micromark-extension-mdx-md: 1.0.1 - micromark-extension-mdxjs-esm: 1.0.5 - micromark-util-combine-extensions: 1.1.0 - micromark-util-types: 1.1.0 + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-core-commonmark: 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 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + dev: false + + /micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + dependencies: + acorn: 8.11.2 + acorn-jsx: 5.3.2(acorn@8.11.2) + micromark-extension-mdx-expression: 3.0.0 + micromark-extension-mdx-jsx: 3.0.0 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 dev: false /micromark-factory-destination@1.1.0: @@ -13761,6 +14657,14 @@ packages: micromark-util-character: 1.2.0 micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + dev: false + + /micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + dependencies: + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 /micromark-factory-label@1.1.0: resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} @@ -13769,11 +14673,20 @@ packages: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 uvu: 0.5.6 + dev: false + + /micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 /micromark-factory-mdx-expression@1.0.9: resolution: {integrity: sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==} dependencies: - '@types/estree': 1.0.3 + '@types/estree': 1.0.5 micromark-util-character: 1.2.0 micromark-util-events-to-acorn: 1.2.3 micromark-util-symbol: 1.1.0 @@ -13783,11 +14696,31 @@ packages: vfile-message: 3.1.4 dev: false + /micromark-factory-mdx-expression@2.0.1: + resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.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 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + dev: false + /micromark-factory-space@1.1.0: resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} dependencies: micromark-util-character: 1.2.0 micromark-util-types: 1.1.0 + dev: false + + /micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + dependencies: + micromark-util-character: 2.0.1 + micromark-util-types: 2.0.0 /micromark-factory-title@1.1.0: resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} @@ -13796,6 +14729,15 @@ packages: micromark-util-character: 1.2.0 micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + dev: false + + /micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 /micromark-factory-whitespace@1.1.0: resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} @@ -13804,24 +14746,39 @@ packages: micromark-util-character: 1.2.0 micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + dev: false + + /micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 /micromark-util-character@1.2.0: resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} dependencies: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + dev: false /micromark-util-character@2.0.1: resolution: {integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==} dependencies: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false /micromark-util-chunked@1.1.0: resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} dependencies: micromark-util-symbol: 1.1.0 + dev: false + + /micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + dependencies: + micromark-util-symbol: 2.0.0 /micromark-util-classify-character@1.1.0: resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} @@ -13829,17 +14786,38 @@ packages: micromark-util-character: 1.2.0 micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + dev: false + + /micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + dependencies: + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 /micromark-util-combine-extensions@1.1.0: resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} dependencies: micromark-util-chunked: 1.1.0 micromark-util-types: 1.1.0 + dev: false + + /micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + dependencies: + micromark-util-chunked: 2.0.0 + micromark-util-types: 2.0.0 /micromark-util-decode-numeric-character-reference@1.1.0: resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} dependencies: micromark-util-symbol: 1.1.0 + dev: false + + /micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + dependencies: + micromark-util-symbol: 2.0.0 /micromark-util-decode-string@1.1.0: resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} @@ -13848,20 +14826,29 @@ packages: micromark-util-character: 1.2.0 micromark-util-decode-numeric-character-reference: 1.1.0 micromark-util-symbol: 1.1.0 + dev: false + + /micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-symbol: 2.0.0 /micromark-util-encode@1.1.0: resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} + dev: false /micromark-util-encode@2.0.0: resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} - dev: false /micromark-util-events-to-acorn@1.2.3: resolution: {integrity: sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==} dependencies: '@types/acorn': 4.0.6 - '@types/estree': 1.0.3 - '@types/unist': 2.0.9 + '@types/estree': 1.0.5 + '@types/unist': 2.0.10 estree-util-visit: 1.2.1 micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 @@ -13869,18 +14856,47 @@ packages: vfile-message: 3.1.4 dev: false + /micromark-util-events-to-acorn@2.0.2: + resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.5 + '@types/unist': 3.0.2 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 + dev: false + /micromark-util-html-tag-name@1.2.0: resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} + dev: false + + /micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} /micromark-util-normalize-identifier@1.1.0: resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} dependencies: micromark-util-symbol: 1.1.0 + dev: false + + /micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + dependencies: + micromark-util-symbol: 2.0.0 /micromark-util-resolve-all@1.1.0: resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} dependencies: micromark-util-types: 1.1.0 + dev: false + + /micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + dependencies: + micromark-util-types: 2.0.0 /micromark-util-sanitize-uri@1.2.0: resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} @@ -13888,6 +14904,7 @@ packages: micromark-util-character: 1.2.0 micromark-util-encode: 1.1.0 micromark-util-symbol: 1.1.0 + dev: false /micromark-util-sanitize-uri@2.0.0: resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} @@ -13895,7 +14912,6 @@ packages: micromark-util-character: 2.0.1 micromark-util-encode: 2.0.0 micromark-util-symbol: 2.0.0 - dev: false /micromark-util-subtokenize@1.1.0: resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} @@ -13904,25 +14920,34 @@ packages: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 uvu: 0.5.6 + dev: false + + /micromark-util-subtokenize@2.0.0: + resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 /micromark-util-symbol@1.1.0: resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} + dev: false /micromark-util-symbol@2.0.0: resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} - dev: false /micromark-util-types@1.1.0: resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} + dev: false /micromark-util-types@2.0.0: resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} - dev: false /micromark@3.2.0: resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} dependencies: - '@types/debug': 4.1.10 + '@types/debug': 4.1.12 debug: 4.3.4(supports-color@8.1.1) decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.1.0 @@ -13941,6 +14966,30 @@ packages: uvu: 0.5.6 transitivePeerDependencies: - supports-color + dev: false + + /micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + dependencies: + '@types/debug': 4.1.12 + debug: 4.3.4(supports-color@8.1.1) + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-chunked: 2.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-subtokenize: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + transitivePeerDependencies: + - supports-color /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} @@ -14123,6 +15172,7 @@ packages: /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} + dev: false /mrmime@1.0.1: resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} @@ -14160,8 +15210,8 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /nanostores@0.9.4: - resolution: {integrity: sha512-BVFzKt6K5P8tYQLL7MItqcev7jpspA5pIjv+Ck3k6wBnUlwCJcpkGTIinj4APvx8SvdP9fXDGoMRCTY6DO/9QA==} + /nanostores@0.9.5: + resolution: {integrity: sha512-Z+p+g8E7yzaWwOe5gEUB2Ox0rCEeXWYIZWmYvw/ajNYX8DlXdMvMDj8DWfM/subqPAcsf8l8Td4iAwO1DeIIRQ==} engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} dev: false @@ -14235,8 +15285,8 @@ packages: engines: {node: '>=10.5.0'} dev: false - /node-fetch-native@1.4.0: - resolution: {integrity: sha512-F5kfEj95kX8tkDhUCYdV8dg3/8Olx/94zB8+ZNthFs6Bz31UpUi8Xh40TN3thLwXgrwXry1pEg9lJ++tLWTcqA==} + /node-fetch-native@1.4.1: + resolution: {integrity: sha512-NsXBU0UgBxo2rQLOeWNZqS3fvflWePMECr8CoSWoSTqCqGbVVsvl9vZu1HfQicYN0g5piV9Gh8RTEvo/uP752w==} dev: false /node-fetch@2.7.0: @@ -14259,8 +15309,8 @@ packages: formdata-polyfill: 4.0.10 dev: false - /node-gyp-build@4.6.1: - resolution: {integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==} + /node-gyp-build@4.7.0: + resolution: {integrity: sha512-PbZERfeFdrHQOOXiAKOY0VPbykZy90ndPKk0d+CFDegTKmWp1VgOTz2xACVbr1BjCWxrQp68CXtvNsveFhqDJg==} hasBin: true dev: false @@ -14440,6 +15490,21 @@ packages: type-check: 0.4.0 dev: true + /ora@6.3.1: + resolution: {integrity: sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + chalk: 5.3.0 + cli-cursor: 4.0.0 + cli-spinners: 2.9.1 + is-interactive: 2.0.0 + is-unicode-supported: 1.3.0 + log-symbols: 5.1.0 + stdin-discarder: 0.1.0 + strip-ansi: 7.1.0 + wcwidth: 1.0.1 + dev: false + /ora@7.0.1: resolution: {integrity: sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==} engines: {node: '>=16'} @@ -14500,6 +15565,13 @@ packages: yocto-queue: 1.0.0 dev: false + /p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + dependencies: + yocto-queue: 1.0.0 + dev: false + /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -14561,7 +15633,7 @@ packages: /parse-entities@4.0.1: resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} dependencies: - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 character-entities: 2.0.2 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 @@ -14613,7 +15685,6 @@ packages: /parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - dev: false /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} @@ -14634,7 +15705,6 @@ packages: /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - dev: true /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} @@ -14678,6 +15748,12 @@ packages: /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + dev: true + + /path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + dev: false /pathe@1.1.1: resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} @@ -14689,7 +15765,7 @@ packages: /periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} dependencies: - '@types/estree': 1.0.3 + '@types/estree': 1.0.5 estree-walker: 3.0.3 is-reference: 3.0.2 @@ -14737,34 +15813,18 @@ packages: pathe: 1.1.1 dev: false - /playwright-core@1.39.0: - resolution: {integrity: sha512-+k4pdZgs1qiM+OUkSjx96YiKsXsmb59evFoqv8SKO067qBA+Z2s/dCzJij/ZhdQcs2zlTAgRKfeiiLm8PQ2qvw==} - engines: {node: '>=16'} - hasBin: true - dev: true - - /playwright-core@1.40.0-alpha-nov-13-2023: - resolution: {integrity: sha512-EVClUNNwgSh7y161ACuTQ6ULzb51dgBVbvLSGBd6lBtcb5DZ3gwG6TZLU6UrE4KNSeMxZTBsXlFlrasR6L6G3w==} - engines: {node: '>=16'} - hasBin: true - dev: true - - /playwright@1.39.0: - resolution: {integrity: sha512-naE5QT11uC/Oiq0BwZ50gDmy8c8WLPRTEWuSSFVG2egBka/1qMoSqYQcROMT9zLwJ86oPofcTH2jBY/5wWOgIw==} + /playwright-core@1.40.0: + resolution: {integrity: sha512-fvKewVJpGeca8t0ipM56jkVSU6Eo0RmFvQ/MaCQNDYm+sdvKkMBBWTE1FdeMqIdumRaXXjZChWHvIzCGM/tA/Q==} engines: {node: '>=16'} hasBin: true - dependencies: - playwright-core: 1.39.0 - optionalDependencies: - fsevents: 2.3.2 dev: true - /playwright@1.40.0-alpha-nov-13-2023: - resolution: {integrity: sha512-/jHChcF6JXbFaL1YpZvNlXaFDfCJiXPyzooNo4TTp4yUG0vtq0b7r8jSOwmC1AcByIr4tIYkC0nOjn2TjvPlYw==} + /playwright@1.40.0: + resolution: {integrity: sha512-gyHAgQjiDf1m34Xpwzaqb76KgfzYrhK7iih+2IzcOCoZWr/8ZqmdBw+t0RU85ZmfJMgtgAiNtBQ/KS2325INXw==} engines: {node: '>=16'} hasBin: true dependencies: - playwright-core: 1.40.0-alpha-nov-13-2023 + playwright-core: 1.40.0 optionalDependencies: fsevents: 2.3.2 dev: true @@ -14957,15 +16017,32 @@ packages: peerDependencies: postcss: ^8.4 dependencies: - '@csstools/css-color-parser': 1.4.0(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1) - '@csstools/css-parser-algorithms': 2.3.2(@csstools/css-tokenizer@2.2.1) - '@csstools/css-tokenizer': 2.2.1 - '@csstools/postcss-progressive-custom-properties': 3.0.2(postcss@8.4.31) + '@csstools/css-color-parser': 1.4.0(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1) + '@csstools/css-parser-algorithms': 2.3.2(@csstools/css-tokenizer@2.2.1) + '@csstools/css-tokenizer': 2.2.1 + '@csstools/postcss-progressive-custom-properties': 3.0.2(postcss@8.4.31) + postcss: 8.4.31 + dev: true + + /postcss-load-config@3.1.4(postcss@8.4.31): + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.1.0 postcss: 8.4.31 - dev: true + yaml: 1.10.2 + dev: false - /postcss-load-config@4.0.1(postcss@8.4.31): - resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} + /postcss-load-config@4.0.2(postcss@8.4.31): + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} engines: {node: '>= 14'} peerDependencies: postcss: '>=8.0.9' @@ -14976,9 +16053,9 @@ packages: ts-node: optional: true dependencies: - lilconfig: 2.1.0 + lilconfig: 3.0.0 postcss: 8.4.31 - yaml: 2.3.3 + yaml: 2.3.4 /postcss-logical@7.0.0(postcss@8.4.31): resolution: {integrity: sha512-zYf3vHkoW82f5UZTEXChTJvH49Yl9X37axTZsJGxrCG2kOUwtaAoz9E7tqYg0lsIoJLybaL8fk/2mOi81zVIUw==} @@ -15047,13 +16124,13 @@ packages: postcss-value-parser: 4.2.0 dev: true - /postcss-preset-env@9.2.0(postcss@8.4.31): - resolution: {integrity: sha512-Lnr4C5gb7t5Cc8akQMJzNdJkqw7s7s7BHUaQSgsuf+CTY9Lsz5lqQTft5yNZr59JyCLz0aFNSAqSLm/xRtcTpg==} + /postcss-preset-env@9.3.0(postcss@8.4.31): + resolution: {integrity: sha512-ycw6doPrqV6QxDCtgiyGDef61bEfiSc59HGM4gOw/wxQxmKnhuEery61oOC/5ViENz/ycpRsuhTexs1kUBTvVw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/postcss-cascade-layers': 4.0.0(postcss@8.4.31) + '@csstools/postcss-cascade-layers': 4.0.1(postcss@8.4.31) '@csstools/postcss-color-function': 3.0.7(postcss@8.4.31) '@csstools/postcss-color-mix-function': 2.0.7(postcss@8.4.31) '@csstools/postcss-exponential-functions': 1.0.1(postcss@8.4.31) @@ -15065,6 +16142,8 @@ packages: '@csstools/postcss-initial': 1.0.0(postcss@8.4.31) '@csstools/postcss-is-pseudo-class': 4.0.3(postcss@8.4.31) '@csstools/postcss-logical-float-and-clear': 2.0.0(postcss@8.4.31) + '@csstools/postcss-logical-overflow': 1.0.0(postcss@8.4.31) + '@csstools/postcss-logical-overscroll-behavior': 1.0.0(postcss@8.4.31) '@csstools/postcss-logical-resize': 2.0.0(postcss@8.4.31) '@csstools/postcss-logical-viewport-units': 2.0.3(postcss@8.4.31) '@csstools/postcss-media-minmax': 1.1.0(postcss@8.4.31) @@ -15084,7 +16163,7 @@ packages: css-blank-pseudo: 6.0.0(postcss@8.4.31) css-has-pseudo: 6.0.0(postcss@8.4.31) css-prefers-color-scheme: 9.0.0(postcss@8.4.31) - cssdb: 7.8.0 + cssdb: 7.9.0 postcss: 8.4.31 postcss-attribute-case-insensitive: 6.0.2(postcss@8.4.31) postcss-clamp: 4.1.0(postcss@8.4.31) @@ -15160,17 +16239,17 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /preact-render-to-string@6.2.2(preact@10.18.1): - resolution: {integrity: sha512-YDfXQiVeYZutFR8/DpxLSbW3W6b7GgjBExRBxOOqcjrGq5rA9cziitQdNPMZe4RVMSdfBnf4hYqyeLs/KvtIuA==} + /preact-render-to-string@6.3.1(preact@10.19.2): + resolution: {integrity: sha512-NQ28WrjLtWY6lKDlTxnFpKHZdpjfF+oE6V4tZ0rTrunHrtZp6Dm0oFrcJalt/5PNeqJz4j1DuZDS0Y6rCBoqDA==} peerDependencies: preact: '>=10' dependencies: - preact: 10.18.1 + preact: 10.19.2 pretty-format: 3.8.0 dev: false - /preact@10.18.1: - resolution: {integrity: sha512-mKUD7RRkQQM6s7Rkmi7IFkoEHjuFqRQUaXamO61E6Nn7vqF/bo7EZCmSyrUnp2UWHw0O7XjZ2eeXis+m7tf4lg==} + /preact@10.19.2: + resolution: {integrity: sha512-UA9DX/OJwv6YwP9Vn7Ti/vF80XL+YA5H2l7BpCtUr3ya8LWHFzpiO5R+N7dN16ujpIxhekRFuOOF82bXX7K/lg==} /prebuild-install@7.1.1: resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} @@ -15214,12 +16293,12 @@ packages: fast-diff: 1.3.0 dev: true - /prettier-plugin-astro@0.12.0: - resolution: {integrity: sha512-8E+9YQR6/5CPZJs8XsfBw579zrwZkc0Wb7x0fRVm/51JC8Iys4lBw4ecV8fHwpbQnzve86TUa4fJ08BJzqfWnA==} + /prettier-plugin-astro@0.12.2: + resolution: {integrity: sha512-1OXSEht27zrnX7rCa0bEpLdspeumFW4hnj4+JzPuG5bRlSOAhD0rbXBNZfRD9q0Qbr00EcCcnjd6k6M8q+GfTA==} engines: {node: ^14.15.0 || >=16.0.0} dependencies: '@astrojs/compiler': 1.8.2 - prettier: 3.0.3 + prettier: 3.1.0 sass-formatter: 0.7.8 dev: true @@ -15229,8 +16308,8 @@ packages: hasBin: true dev: true - /prettier@3.0.3: - resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} + /prettier@3.1.0: + resolution: {integrity: sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==} engines: {node: '>=14'} hasBin: true dev: true @@ -15293,8 +16372,8 @@ packages: sisteransi: 1.0.5 dev: false - /property-information@6.3.0: - resolution: {integrity: sha512-gVNZ74nqhRMiIUYWGQdosYetaKc83x8oT41a0LlV3AAFCAZwCpg4vmGkq8t34+cUhp3cnM4XDiU/7xlgK7HGrg==} + /property-information@6.4.0: + resolution: {integrity: sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==} /proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} @@ -15321,8 +16400,8 @@ packages: dev: false optional: true - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} /qs@6.11.0: @@ -15469,6 +16548,16 @@ packages: /reading-time@1.5.0: resolution: {integrity: sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==} + /recast@0.20.5: + resolution: {integrity: sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==} + engines: {node: '>= 4'} + dependencies: + ast-types: 0.14.2 + esprima: 4.0.1 + source-map: 0.6.1 + tslib: 2.6.2 + dev: false + /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -15528,28 +16617,27 @@ packages: jsesc: 0.5.0 dev: false - /rehype-autolink-headings@6.1.1: - resolution: {integrity: sha512-NMYzZIsHM3sA14nC5rAFuUPIOfg+DFmf9EY1YMhaNlB7+3kK/ZlE6kqPfuxr1tsJ1XWkTrMtMoyHosU70d35mA==} + /rehype-autolink-headings@7.1.0: + resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} dependencies: - '@types/hast': 2.3.7 - extend: 3.0.2 - hast-util-has-property: 2.0.1 - hast-util-heading-rank: 2.1.1 - hast-util-is-element: 2.1.3 - unified: 10.1.2 - unist-util-visit: 4.1.2 + '@types/hast': 3.0.3 + '@ungap/structured-clone': 1.2.0 + hast-util-heading-rank: 3.0.0 + hast-util-is-element: 3.0.0 + unified: 11.0.4 + unist-util-visit: 5.0.0 - /rehype-mathjax@4.0.3: - resolution: {integrity: sha512-QIwWH9U+r54nMQklVkT1qluxhKyzdPWz9dFwgel3BrseQsWZafRTDTUj8VR8/14nFuRIV2ChuCMz4zpACPoYvg==} + /rehype-mathjax@5.0.0: + resolution: {integrity: sha512-IRPgpSpwOq4JNn3efeTrbYDMmzjOKCTJtu1Wyo/+6nenyqwqIvlojYDczRILOeHa1HyCMYmqpdvfOovOVzDIGg==} dependencies: - '@types/hast': 2.3.7 + '@types/hast': 3.0.3 '@types/mathjax': 0.0.37 - hast-util-from-dom: 4.2.0 - hast-util-to-text: 3.1.2 - jsdom: 20.0.3 + hast-util-from-dom: 5.0.0 + hast-util-to-text: 4.0.0 + jsdom: 22.1.0 mathjax-full: 3.2.2 - unified: 10.1.2 - unist-util-visit: 4.1.2 + unified: 11.0.4 + unist-util-visit-parents: 6.0.1 transitivePeerDependencies: - bufferutil - canvas @@ -15560,46 +16648,70 @@ packages: /rehype-parse@8.0.5: resolution: {integrity: sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==} dependencies: - '@types/hast': 2.3.7 + '@types/hast': 2.3.8 hast-util-from-parse5: 7.1.2 parse5: 6.0.1 unified: 10.1.2 + + /rehype-parse@9.0.0: + resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} + dependencies: + '@types/hast': 3.0.3 + hast-util-from-html: 2.0.1 + unified: 11.0.4 dev: false - /rehype-pretty-code@0.10.1: - resolution: {integrity: sha512-WHjRvGlqPXG8BVRB9mK0255WvIOnzvHivAWhFkA2OG+NTkQWtTbCULZMokOHLf3Yy8q8I8/F8QNjDSQBhjMK5w==} + /rehype-pretty-code@0.10.2: + resolution: {integrity: sha512-yBgk3S4yXtkAWVrkoN1DqDihjsaP0ReuN9Du4Dtkl/wsgwyqGNGuIUGi2etVHAOsi40e2KRHoOulQqnKPuscPA==} engines: {node: '>=16'} peerDependencies: shiki: 0.x dependencies: - '@types/hast': 2.3.7 hash-obj: 4.0.0 + hast-util-to-string: 2.0.0 parse-numeric-range: 1.3.0 + rehype-parse: 8.0.5 + unified: 10.1.2 + unist-util-visit: 4.1.2 dev: true /rehype-raw@6.1.1: resolution: {integrity: sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==} dependencies: - '@types/hast': 2.3.7 + '@types/hast': 2.3.8 hast-util-raw: 7.2.3 unified: 10.1.2 dev: false - /rehype-slug@5.1.0: - resolution: {integrity: sha512-Gf91dJoXneiorNEnn+Phx97CO7oRMrpi+6r155tTxzGuLtm+QrI4cTwCa9e1rtePdL4i9tSO58PeSS6HWfgsiw==} + /rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + dependencies: + '@types/hast': 3.0.3 + hast-util-raw: 9.0.1 + vfile: 6.0.1 + dev: false + + /rehype-slug@6.0.0: + resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} dependencies: - '@types/hast': 2.3.7 + '@types/hast': 3.0.3 github-slugger: 2.0.0 - hast-util-has-property: 2.0.1 - hast-util-heading-rank: 2.1.1 - hast-util-to-string: 2.0.0 - unified: 10.1.2 - unist-util-visit: 4.1.2 + hast-util-heading-rank: 3.0.0 + hast-util-to-string: 3.0.0 + unist-util-visit: 5.0.0 + + /rehype-stringify@10.0.0: + resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} + dependencies: + '@types/hast': 3.0.3 + hast-util-to-html: 9.0.0 + unified: 11.0.4 + dev: false /rehype-stringify@9.0.4: resolution: {integrity: sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ==} dependencies: - '@types/hast': 2.3.7 + '@types/hast': 2.3.8 hast-util-to-html: 8.0.4 unified: 10.1.2 dev: false @@ -15613,12 +16725,21 @@ packages: /rehype@12.0.1: resolution: {integrity: sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw==} dependencies: - '@types/hast': 2.3.7 + '@types/hast': 2.3.8 rehype-parse: 8.0.5 rehype-stringify: 9.0.4 unified: 10.1.2 dev: false + /rehype@13.0.1: + resolution: {integrity: sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==} + dependencies: + '@types/hast': 3.0.3 + rehype-parse: 9.0.0 + rehype-stringify: 10.0.0 + unified: 11.0.4 + dev: false + /reinterval@1.1.0: resolution: {integrity: sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ==} dev: false @@ -15636,7 +16757,7 @@ packages: /remark-gfm@3.0.1: resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} dependencies: - '@types/mdast': 3.0.14 + '@types/mdast': 3.0.15 mdast-util-gfm: 2.0.2 micromark-extension-gfm: 2.0.3 unified: 10.1.2 @@ -15644,20 +16765,35 @@ packages: - supports-color dev: false - /remark-math@5.1.1: - resolution: {integrity: sha512-cE5T2R/xLVtfFI4cCePtiRn+e6jKMtFDR3P8V3qpv8wpKjwvHoBA4eJzvX+nVrnlNy0911bdGmuspCSwetfYHw==} + /remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} dependencies: - '@types/mdast': 3.0.14 - mdast-util-math: 2.0.2 - micromark-extension-math: 2.1.2 - unified: 10.1.2 + '@types/mdast': 4.0.3 + mdast-util-gfm: 3.0.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-math@6.0.0: + resolution: {integrity: sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-math: 3.0.0 + micromark-extension-math: 3.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color dev: true - /remark-mdx@2.3.0: - resolution: {integrity: sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==} + /remark-mdx@3.0.0: + resolution: {integrity: sha512-O7yfjuC6ra3NHPbRVxfflafAj3LTwx3b73aBvkEFU5z4PsD6FD4vrqJAkE5iNGLz71GdjXfgRqm3SQ0h0VuE7g==} dependencies: - mdast-util-mdx: 2.0.1 - micromark-extension-mdxjs: 1.0.1 + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 transitivePeerDependencies: - supports-color dev: false @@ -15665,35 +16801,56 @@ packages: /remark-parse@10.0.2: resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} dependencies: - '@types/mdast': 3.0.14 + '@types/mdast': 3.0.15 mdast-util-from-markdown: 1.3.1 unified: 10.1.2 transitivePeerDependencies: - supports-color dev: false + /remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-from-markdown: 2.0.0 + micromark-util-types: 2.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + dev: false + /remark-rehype@10.1.0: resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} dependencies: - '@types/hast': 2.3.7 - '@types/mdast': 3.0.14 + '@types/hast': 2.3.8 + '@types/mdast': 3.0.15 mdast-util-to-hast: 12.3.0 unified: 10.1.2 + dev: false + + /remark-rehype@11.0.0: + resolution: {integrity: sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==} + dependencies: + '@types/hast': 3.0.3 + '@types/mdast': 4.0.3 + mdast-util-to-hast: 13.0.2 + unified: 11.0.4 + vfile: 6.0.1 - /remark-shiki-twoslash@3.1.3(typescript@5.1.6): + /remark-shiki-twoslash@3.1.3(typescript@5.2.2): resolution: {integrity: sha512-4e8OH3ySOCw5wUbDcPszokOKjKuebOqlP2WlySvC7ITBOq27BiGsFlq+FNWhxppZ+JzhTWah4gQrnMjX3KDbAQ==} peerDependencies: typescript: '>3' dependencies: - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 '@typescript/twoslash': 3.1.0 '@typescript/vfs': 1.3.4 fenceparser: 1.1.1 regenerator-runtime: 0.13.11 shiki: 0.10.1 - shiki-twoslash: 3.1.2(typescript@5.1.6) + shiki-twoslash: 3.1.2(typescript@5.2.2) tslib: 2.1.0 - typescript: 5.1.6 + typescript: 5.2.2 unist-util-visit: 2.0.3 transitivePeerDependencies: - supports-color @@ -15708,12 +16865,19 @@ packages: unist-util-visit: 4.1.2 dev: false - /remark-toc@8.0.1: - resolution: {integrity: sha512-7he2VOm/cy13zilnOTZcyAoyoolV26ULlon6XyCFU+vG54Z/LWJnwphj/xKIDLOt66QmJUgTyUvLVHi2aAElyg==} + /remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} dependencies: - '@types/mdast': 3.0.14 - mdast-util-toc: 6.1.1 - unified: 10.1.2 + '@types/mdast': 4.0.3 + mdast-util-to-markdown: 2.1.0 + unified: 11.0.4 + dev: false + + /remark-toc@9.0.0: + resolution: {integrity: sha512-KJ9txbo33GjDAV1baHFze7ij4G8c7SGYoY8Kzsm2gzFpbhL/bSoVpMMzGa3vrNDSWASNd/3ppAqL7cP2zD6JIA==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-toc: 7.0.0 dev: true /request-light@0.7.0: @@ -15812,6 +16976,18 @@ packages: dependencies: glob: 7.2.3 + /roarr@2.15.4: + resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} + engines: {node: '>=8.0'} + dependencies: + boolean: 3.2.0 + detect-node: 2.1.0 + globalthis: 1.0.3 + json-stringify-safe: 5.0.1 + semver-compare: 1.0.0 + sprintf-js: 1.1.3 + dev: false + /rollup-plugin-terser@7.0.2(rollup@2.79.1): resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser @@ -15825,7 +17001,7 @@ packages: jest-worker: 26.6.2 rollup: 2.79.1 serialize-javascript: 4.0.0 - terser: 5.22.0 + terser: 5.24.0 dev: false /rollup@2.79.1: @@ -15844,25 +17020,29 @@ packages: fsevents: 2.3.3 dev: false - /rollup@4.4.1: - resolution: {integrity: sha512-idZzrUpWSblPJX66i+GzrpjKE3vbYrlWirUHteoAbjKReZwa0cohAErOYA5efoMmNCdvG9yrJS+w9Kl6csaH4w==} + /rollup@4.5.0: + resolution: {integrity: sha512-41xsWhzxqjMDASCxH5ibw1mXk+3c4TNI2UjKbLxe6iEzrSQnqOzmmK8/3mufCPbzHNJ2e04Fc1ddI35hHy+8zg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.4.1 - '@rollup/rollup-android-arm64': 4.4.1 - '@rollup/rollup-darwin-arm64': 4.4.1 - '@rollup/rollup-darwin-x64': 4.4.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.4.1 - '@rollup/rollup-linux-arm64-gnu': 4.4.1 - '@rollup/rollup-linux-arm64-musl': 4.4.1 - '@rollup/rollup-linux-x64-gnu': 4.4.1 - '@rollup/rollup-linux-x64-musl': 4.4.1 - '@rollup/rollup-win32-arm64-msvc': 4.4.1 - '@rollup/rollup-win32-ia32-msvc': 4.4.1 - '@rollup/rollup-win32-x64-msvc': 4.4.1 + '@rollup/rollup-android-arm-eabi': 4.5.0 + '@rollup/rollup-android-arm64': 4.5.0 + '@rollup/rollup-darwin-arm64': 4.5.0 + '@rollup/rollup-darwin-x64': 4.5.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.5.0 + '@rollup/rollup-linux-arm64-gnu': 4.5.0 + '@rollup/rollup-linux-arm64-musl': 4.5.0 + '@rollup/rollup-linux-x64-gnu': 4.5.0 + '@rollup/rollup-linux-x64-musl': 4.5.0 + '@rollup/rollup-win32-arm64-msvc': 4.5.0 + '@rollup/rollup-win32-ia32-msvc': 4.5.0 + '@rollup/rollup-win32-x64-msvc': 4.5.0 fsevents: 2.3.3 + /rrweb-cssom@0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + dev: true + /run-applescript@5.0.0: resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} engines: {node: '>=12'} @@ -15884,6 +17064,7 @@ packages: engines: {node: '>=6'} dependencies: mri: 1.2.0 + dev: false /safe-array-concat@1.0.1: resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} @@ -15913,8 +17094,8 @@ packages: suf-log: 2.5.3 dev: true - /sass@1.69.4: - resolution: {integrity: sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==} + /sass@1.69.5: + resolution: {integrity: sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -15945,6 +17126,10 @@ packages: kind-of: 6.0.3 dev: false + /semver-compare@1.0.0: + resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + dev: false + /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -15982,6 +17167,13 @@ packages: transitivePeerDependencies: - supports-color + /serialize-error@7.0.1: + resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} + engines: {node: '>=10'} + dependencies: + type-fest: 0.13.1 + dev: false + /serialize-javascript@4.0.0: resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} dependencies: @@ -15994,8 +17186,8 @@ packages: randombytes: 2.1.0 dev: true - /seroval@0.11.6: - resolution: {integrity: sha512-Lhy+94CNcNza6d0vM4sQKLsaLaX39q0ELqIBc7DkdiFljI8Q387Yb+xKgLxRWXs7uuHRu/ZcJ64xfVJ0Bj4LPg==} + /seroval@0.12.4: + resolution: {integrity: sha512-JIsZHp98o+okpYN8HEPyI9Blr0gxAUPIGvg3waXrEMFjPz9obiLYMz0uFiUGezKiCK8loosYbn8WsqO8WtAJUA==} engines: {node: '>=10'} /serve-static@1.15.0: @@ -16087,7 +17279,7 @@ packages: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} dev: true - /shiki-twoslash@3.1.2(typescript@5.1.6): + /shiki-twoslash@3.1.2(typescript@5.2.2): resolution: {integrity: sha512-JBcRIIizi+exIA/OUhYkV6jtyeZco0ykCkIRd5sgwIt1Pm4pz+maoaRZpm6SkhPwvif4fCA7xOtJOykhpIV64Q==} peerDependencies: typescript: '>3' @@ -16096,7 +17288,7 @@ packages: '@typescript/vfs': 1.3.4 fenceparser: 1.1.1 shiki: 0.10.1 - typescript: 5.1.6 + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true @@ -16107,10 +17299,17 @@ packages: jsonc-parser: 3.2.0 vscode-oniguruma: 1.7.0 vscode-textmate: 5.2.0 - dev: true - /shikiji@0.6.10: - resolution: {integrity: sha512-WE+A5Y2ntM5hL3iJQujk97qr5Uj7PSIRXpQfrZ6h+JWPXZ8KBEDhFXc4lqNriaRq1WGOVPUT83XMOzmHiH3W8A==} + /shiki@0.11.1: + resolution: {integrity: sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==} + dependencies: + jsonc-parser: 3.2.0 + vscode-oniguruma: 1.7.0 + vscode-textmate: 6.0.0 + dev: false + + /shikiji@0.6.13: + resolution: {integrity: sha512-4T7X39csvhT0p7GDnq9vysWddf2b6BeioiN3Ymhnt3xcy9tXmDcnsEFVxX18Z4YcQgEE/w48dLJ4pPPUcG9KkA==} dependencies: hast-util-to-html: 9.0.0 dev: false @@ -16161,6 +17360,15 @@ packages: dev: false optional: true + /sirv@2.0.3: + resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.23 + mrmime: 1.0.1 + totalist: 3.0.1 + dev: false + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: false @@ -16185,6 +17393,11 @@ packages: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} + /slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + dev: false + /slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -16206,21 +17419,21 @@ packages: yargs: 15.4.1 dev: true - /solid-js@1.8.3: - resolution: {integrity: sha512-S7ztgPI6X4tUaWmhZe3aDx0E9F6FGxXVU8NsocrPqqUbxHoFi8eTPlDMcenOlXuo2ITQ97j2URaj0StfJci4KQ==} + /solid-js@1.8.5: + resolution: {integrity: sha512-xvtJvzJzWbsn35oKFhW9kNwaxG1Z/YLMsDp4tLVcYZTMPzvzQ8vEZuyDQ6nt7xDArVgZJ7TUFrJUwrui/oq53A==} dependencies: csstype: 3.1.2 - seroval: 0.11.6 + seroval: 0.12.4 - /solid-refresh@0.5.3(solid-js@1.8.3): + /solid-refresh@0.5.3(solid-js@1.8.5): resolution: {integrity: sha512-Otg5it5sjOdZbQZJnvo99TEBAr6J7PQ5AubZLNU6szZzg3RQQ5MX04oteBIIGDs0y2Qv8aXKm9e44V8z+UnFdw==} peerDependencies: solid-js: ^1.3 dependencies: - '@babel/generator': 7.23.0 + '@babel/generator': 7.23.3 '@babel/helper-module-imports': 7.22.15 - '@babel/types': 7.23.0 - solid-js: 1.8.3 + '@babel/types': 7.23.3 + solid-js: 1.8.5 dev: false /sort-keys@5.0.0: @@ -16244,6 +17457,7 @@ packages: /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + dev: false /source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} @@ -16306,6 +17520,10 @@ packages: /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + /sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + dev: false + /srcset-parse@1.1.0: resolution: {integrity: sha512-JWp4cG2eybkvKA1QUHGoNK6JDEYcOnSuhzNGjZuYUPqXreDl/VkkvP2sZW7Rmh+icuCttrR9ccb2WPIazyM/Cw==} dev: true @@ -16378,6 +17596,15 @@ packages: strip-ansi: 7.1.0 dev: false + /string-width@7.0.0: + resolution: {integrity: sha512-GPQHj7row82Hjo9hKZieKcHIhaAIKOJvFSIZXuCU9OASVZrMNUaZuz++SPVrBjnLsnk4k+z9f2EIypgxf2vNFw==} + engines: {node: '>=18'} + dependencies: + emoji-regex: 10.3.0 + get-east-asian-width: 1.2.0 + strip-ansi: 7.1.0 + dev: false + /string.prototype.matchall@4.0.10: resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} dependencies: @@ -16425,6 +17652,7 @@ packages: /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + requiresBuild: true dependencies: safe-buffer: 5.2.1 dev: false @@ -16468,7 +17696,6 @@ packages: /strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} - dev: true /strip-comments@2.0.1: resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} @@ -16565,23 +17792,37 @@ packages: dependencies: has-flag: 4.0.0 + /supports-esm@1.0.0: + resolution: {integrity: sha512-96Am8CDqUaC0I2+C/swJ0yEvM8ZnGn4unoers/LSdE4umhX7mELzqyLzx3HnZAluq5PXIsGMKqa7NkqaeHMPcg==} + dependencies: + has-package-exports: 1.3.0 + dev: false + + /supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + dev: false + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /svelte-hmr@0.15.3(svelte@4.2.2): + /svelte-hmr@0.15.3(svelte@4.2.5): resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} engines: {node: ^12.20 || ^14.13.1 || >= 16} peerDependencies: svelte: ^3.19.0 || ^4.0.0 dependencies: - svelte: 4.2.2 + svelte: 4.2.5 dev: false - /svelte2tsx@0.6.23(svelte@4.2.2)(typescript@5.1.6): - resolution: {integrity: sha512-3bwd1PuWUA3oEXy8+85zrLDnmJOsVpShpKVAehGWeYsz/66zMihTpRpUN97VVAKTZbO5tP4wnchHUXYs0zOwdw==} + /svelte2tsx@0.6.25(svelte@4.2.5)(typescript@5.2.2): + resolution: {integrity: sha512-hhBKL5X9gGvKQAZ9xLoHnbE9Yb00HxEZJlxcj2drxWK+Tpqcs/bnodjSfCGbqEhvNaUXYNbVL7s4dEXT+o0f6w==} peerDependencies: - svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 + svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 peerDependenciesMeta: typescript: @@ -16589,18 +17830,18 @@ packages: dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 4.2.2 - typescript: 5.1.6 + svelte: 4.2.5 + typescript: 5.2.2 dev: false - /svelte@4.2.2: - resolution: {integrity: sha512-My2tytF2e2NnHSpn2M7/3VdXT4JdTglYVUuSuK/mXL2XtulPYbeBfl8Dm1QiaKRn0zoULRnL+EtfZHHP0k4H3A==} + /svelte@4.2.5: + resolution: {integrity: sha512-P9YPKsGkNdw4OJbtpd1uzimQHPj7Ai2sPcOHmmD6VgkFhFDmcYevQi7vE4cQ1g8/Vs64aL2TwMoCNFAzv7TPaQ==} engines: {node: '>=16'} dependencies: '@ampproject/remapping': 2.2.1 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.20 - acorn: 8.10.0 + acorn: 8.11.2 aria-query: 5.3.0 axobject-query: 3.2.1 code-red: 1.0.4 @@ -16615,8 +17856,8 @@ packages: resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} dev: false - /svgo@3.0.2: - resolution: {integrity: sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==} + /svgo@3.0.4: + resolution: {integrity: sha512-T+Xul3JwuJ6VGXKo/p2ndqx1ibxNKnLTvRc1ZTWKCfyKS/GgNjRZcYsK84fxTsy/izr91g/Rwx6fGnVgaFSI5g==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -16624,6 +17865,7 @@ packages: commander: 7.2.0 css-select: 5.1.0 css-tree: 2.3.1 + css-what: 6.1.0 csso: 5.0.5 picocolors: 1.0.0 dev: false @@ -16640,8 +17882,8 @@ packages: tslib: 2.6.2 dev: true - /tailwindcss@3.3.3: - resolution: {integrity: sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==} + /tailwindcss@3.3.5: + resolution: {integrity: sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -16650,10 +17892,10 @@ packages: chokidar: 3.5.3 didyoumean: 1.2.2 dlv: 1.1.3 - fast-glob: 3.3.1 + fast-glob: 3.3.2 glob-parent: 6.0.2 is-glob: 4.0.3 - jiti: 1.20.0 + jiti: 1.21.0 lilconfig: 2.1.0 micromatch: 4.0.5 normalize-path: 3.0.0 @@ -16662,7 +17904,7 @@ packages: postcss: 8.4.31 postcss-import: 15.1.0(postcss@8.4.31) postcss-js: 4.0.1(postcss@8.4.31) - postcss-load-config: 4.0.1(postcss@8.4.31) + postcss-load-config: 4.0.2(postcss@8.4.31) postcss-nested: 6.0.1(postcss@8.4.31) postcss-selector-parser: 6.0.13 resolve: 1.22.8 @@ -16751,13 +17993,21 @@ packages: engines: {node: '>=8'} dev: true - /terser@5.22.0: - resolution: {integrity: sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw==} + /terminal-link@3.0.0: + resolution: {integrity: sha512-flFL3m4wuixmf6IfhFJd1YPiLiMuxEc8uHRM1buzIeZPm22Au2pDqBJQgdo7n1WfPU1ONFGv7YDwpFBmHGF6lg==} + engines: {node: '>=12'} + dependencies: + ansi-escapes: 5.0.0 + supports-hyperlinks: 2.3.0 + dev: false + + /terser@5.24.0: + resolution: {integrity: sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==} engines: {node: '>=10'} hasBin: true dependencies: '@jridgewell/source-map': 0.3.5 - acorn: 8.10.0 + acorn: 8.11.2 commander: 2.20.3 source-map-support: 0.5.21 dev: false @@ -16841,12 +18091,17 @@ packages: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: false + /tough-cookie@4.1.3: resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} engines: {node: '>=6'} dependencies: psl: 1.9.0 - punycode: 2.3.0 + punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 dev: true @@ -16857,14 +18112,14 @@ packages: /tr46@1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} dependencies: - punycode: 2.3.0 + punycode: 2.3.1 dev: false - /tr46@3.0.0: - resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} - engines: {node: '>=12'} + /tr46@4.1.1: + resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} + engines: {node: '>=14'} dependencies: - punycode: 2.3.0 + punycode: 2.3.1 dev: true /trim-lines@3.0.1: @@ -16878,13 +18133,13 @@ packages: /trough@2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} - /ts-api-utils@1.0.3(typescript@5.1.6): + /ts-api-utils@1.0.3(typescript@5.2.2): resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.1.6 + typescript: 5.2.2 dev: true /ts-interface-checker@0.1.13: @@ -16897,7 +18152,7 @@ packages: code-block-writer: 12.0.0 dev: true - /tsconfck@3.0.0: + /tsconfck@3.0.0(typescript@5.2.2): resolution: {integrity: sha512-w3wnsIrJNi7avf4Zb0VjOoodoO0woEqGgZGQm+LHH9przdUI+XDKsWAXwxHA1DaRTjeuZNcregSzr7RaA8zG9A==} engines: {node: ^18 || >=20} hasBin: true @@ -16906,18 +18161,19 @@ packages: peerDependenciesMeta: typescript: optional: true + dependencies: + typescript: 5.2.2 dev: false /tsconfig-resolver@3.0.1: resolution: {integrity: sha512-ZHqlstlQF449v8glscGRXzL6l2dZvASPCdXJRWG4gHEZlUVx2Jtmr+a2zeVG4LCsKhDXKRj5R3h0C/98UcVAQg==} dependencies: '@types/json5': 0.0.30 - '@types/resolve': 1.20.4 + '@types/resolve': 1.20.5 json5: 2.2.3 resolve: 1.22.8 strip-bom: 4.0.0 type-fest: 3.0.0 - dev: true /tsconfig@7.0.0: resolution: {integrity: sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==} @@ -16935,6 +18191,14 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + /tsm@2.3.0: + resolution: {integrity: sha512-++0HFnmmR+gMpDtKTnW3XJ4yv9kVGi20n+NfyQWB9qwJvTaIWY9kBmzek2YUQK5APTQ/1DTrXmm4QtFPmW9Rzw==} + engines: {node: '>=12'} + hasBin: true + dependencies: + esbuild: 0.15.18 + dev: false + /tty-table@4.2.2: resolution: {integrity: sha512-2gvCArMZLxgvpZ2NvQKdnYWIFLe7I/z5JClMuhrDXunmKgSZcQKcZRjN9XjAFiToMz2pUo1dEIXyrm0AwgV5Tw==} engines: {node: '>=8.0.0'} @@ -17031,7 +18295,6 @@ packages: /type-fest@0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} - dev: true /type-fest@0.16.0: resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} @@ -17065,7 +18328,6 @@ packages: /type-fest@3.0.0: resolution: {integrity: sha512-MINvUN5ug9u+0hJDzSZNSnuKXI8M4F5Yvb6SQZ2CYqe7SgKXKOosEcU5R7tRgo85I6eAVBbkVF7TCvB4AUK2xQ==} engines: {node: '>=14.16'} - dev: true /type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} @@ -17119,8 +18381,14 @@ packages: semver: 7.5.4 dev: true - /typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + /typescript@4.6.4: + resolution: {integrity: sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: false + + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} hasBin: true @@ -17154,6 +18422,9 @@ packages: has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + /undici@5.26.5: resolution: {integrity: sha512-cSb4bPFd5qgR7qr2jYAi0hlX9n5YKK2ONKkLFkxl+v/9BvC0sOpZjBHDBSXc5lWAf5ty9oZdRXytBIHzgUcerw==} engines: {node: '>=14.0'} @@ -17188,10 +18459,15 @@ packages: engines: {node: '>=4'} dev: false + /unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + dev: false + /unified@10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} dependencies: - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 bail: 2.0.2 extend: 3.0.2 is-buffer: 2.0.5 @@ -17199,6 +18475,17 @@ packages: trough: 2.1.0 vfile: 5.3.7 + /unified@11.0.4: + resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} + dependencies: + '@types/unist': 3.0.2 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.1.0 + vfile: 6.0.1 + /unique-string@2.0.0: resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} engines: {node: '>=8'} @@ -17206,15 +18493,16 @@ packages: crypto-random-string: 2.0.0 dev: false - /unist-util-find-after@4.0.1: - resolution: {integrity: sha512-QO/PuPMm2ERxC6vFXEPtmAutOopy5PknD+Oq64gGwxKtk4xwo9Z97t9Av1obPmGU0IyTa6EKYUfTrK2QJS3Ozw==} + /unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} dependencies: - '@types/unist': 2.0.9 - unist-util-is: 5.2.1 + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 dev: true /unist-util-generated@2.0.1: resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} + dev: false /unist-util-is@3.0.0: resolution: {integrity: sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==} @@ -17226,48 +18514,66 @@ packages: /unist-util-is@5.2.1: resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} dependencies: - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 /unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 + + /unist-util-map@3.1.3: + resolution: {integrity: sha512-4/mDauoxqZ6geK97lJ6n2kDk6JK88Vh+hWMSJqyaaP/7eqN1dDhjcjnNxKNm3YU6Sw7PVJtcFMUbnmHvYzb6Vg==} + dependencies: + '@types/unist': 2.0.10 dev: false /unist-util-modify-children@3.1.1: resolution: {integrity: sha512-yXi4Lm+TG5VG+qvokP6tpnk+r1EPwyYL04JWDxLvgvPV40jANh7nm3udk65OOWquvbMDe+PL9+LmkxDpTv/7BA==} dependencies: - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 array-iterate: 2.0.1 dev: false /unist-util-position-from-estree@1.1.2: resolution: {integrity: sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==} dependencies: - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 + dev: false + + /unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + dependencies: + '@types/unist': 3.0.2 dev: false /unist-util-position@4.0.4: resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} dependencies: - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 + dev: false /unist-util-position@5.0.0: resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} dependencies: - '@types/unist': 3.0.1 - dev: false + '@types/unist': 3.0.2 /unist-util-remove-position@4.0.2: resolution: {integrity: sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==} dependencies: - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 unist-util-visit: 4.1.2 + dev: false + + /unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + dependencies: + '@types/unist': 3.0.2 + unist-util-visit: 5.0.0 /unist-util-select@4.0.3: resolution: {integrity: sha512-1074+K9VyR3NyUz3lgNtHKm7ln+jSZXtLJM4E22uVuoFn88a/Go2pX8dusrt/W+KWH1ncn8jcd8uCQuvXb/fXA==} dependencies: - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 css-selector-parser: 1.4.1 nth-check: 2.1.1 zwitch: 2.0.4 @@ -17276,18 +18582,17 @@ packages: /unist-util-stringify-position@3.0.3: resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} dependencies: - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 /unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} dependencies: - '@types/unist': 3.0.1 - dev: false + '@types/unist': 3.0.2 /unist-util-visit-children@2.0.2: resolution: {integrity: sha512-+LWpMFqyUwLGpsQxpumsQ9o9DG2VGLFrpz+rpVXYIEdPy57GSy5HioC0g3bg/8WP9oCLlapQtklOzQ8uLS496Q==} dependencies: - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 dev: false /unist-util-visit-parents@2.1.2: @@ -17298,22 +18603,21 @@ packages: /unist-util-visit-parents@3.1.1: resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} dependencies: - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 unist-util-is: 4.1.0 dev: true /unist-util-visit-parents@5.1.3: resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} dependencies: - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 unist-util-is: 5.2.1 /unist-util-visit-parents@6.0.1: resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 unist-util-is: 6.0.0 - dev: false /unist-util-visit@1.4.1: resolution: {integrity: sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==} @@ -17323,7 +18627,7 @@ packages: /unist-util-visit@2.0.3: resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} dependencies: - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 unist-util-is: 4.1.0 unist-util-visit-parents: 3.1.1 dev: true @@ -17331,17 +18635,16 @@ packages: /unist-util-visit@4.1.2: resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} dependencies: - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 /unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - dev: false /universal-user-agent@6.0.0: resolution: {integrity: sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==} @@ -17361,6 +18664,11 @@ packages: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + dev: false + /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} @@ -17393,7 +18701,7 @@ packages: /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: - punycode: 2.3.0 + punycode: 2.3.1 /url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} @@ -17428,6 +18736,7 @@ packages: diff: 5.1.0 kleur: 4.1.5 sade: 1.8.1 + dev: false /validate-html-nesting@1.2.2: resolution: {integrity: sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==} @@ -17448,34 +18757,32 @@ packages: /vfile-location@4.1.0: resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} dependencies: - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 vfile: 5.3.7 - dev: false /vfile-location@5.0.2: resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 vfile: 6.0.1 dev: false /vfile-message@3.1.4: resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} dependencies: - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 unist-util-stringify-position: 3.0.3 /vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 - dev: false /vfile@5.3.7: resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} dependencies: - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 is-buffer: 2.0.5 unist-util-stringify-position: 3.0.3 vfile-message: 3.1.4 @@ -17483,10 +18790,9 @@ packages: /vfile@6.0.1: resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - dev: false /vite-node@0.34.6(@types/node@18.18.6): resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} @@ -17510,18 +18816,18 @@ packages: - terser dev: false - /vite-plugin-pwa@0.16.4(workbox-window@7.0.0): - resolution: {integrity: sha512-lmwHFIs9zI2H9bXJld/zVTbCqCQHZ9WrpyDMqosICDV0FVnCJwniX1NMDB79HGTIZzOQkY4gSZaVTJTw6maz/Q==} + /vite-plugin-pwa@0.17.0(workbox-window@7.0.0): + resolution: {integrity: sha512-cOyEG8EEc7JHmyMapTnjK2j0g2BIC3ErlmOHyGzVu8hqjyF9Jt6yWMmVNFtpA6v/NNyzP28ARf3vwzIAzR1kaw==} engines: {node: '>=16.0.0'} peerDependencies: - vite: ^3.1.0 || ^4.0.0 + vite: ^3.1.0 || ^4.0.0 || ^5.0.0 workbox-window: ^7.0.0 peerDependenciesMeta: vite: optional: true dependencies: debug: 4.3.4(supports-color@8.1.1) - fast-glob: 3.3.1 + fast-glob: 3.3.2 pretty-bytes: 6.1.1 workbox-build: 7.0.0 workbox-window: 7.0.0 @@ -17530,7 +18836,7 @@ packages: - supports-color dev: false - /vite-plugin-solid@2.7.2(solid-js@1.8.3): + /vite-plugin-solid@2.7.2(solid-js@1.8.5): resolution: {integrity: sha512-GV2SMLAibOoXe76i02AsjAg7sbm/0lngBlERvJKVN67HOrJsHcWgkt0R6sfGLDJuFkv2aBe14Zm4vJcNME+7zw==} peerDependencies: solid-js: ^1.7.2 @@ -17539,67 +18845,59 @@ packages: vite: optional: true dependencies: - '@babel/core': 7.23.2 - '@babel/preset-typescript': 7.23.2(@babel/core@7.23.2) - '@types/babel__core': 7.20.3 - babel-preset-solid: 1.8.2(@babel/core@7.23.2) + '@babel/core': 7.23.3 + '@babel/preset-typescript': 7.23.2(@babel/core@7.23.3) + '@types/babel__core': 7.20.4 + babel-preset-solid: 1.8.2(@babel/core@7.23.3) merge-anything: 5.1.7 - solid-js: 1.8.3 - solid-refresh: 0.5.3(solid-js@1.8.3) + solid-js: 1.8.5 + solid-refresh: 0.5.3(solid-js@1.8.5) vitefu: 0.2.5(vite@5.0.0) transitivePeerDependencies: - supports-color dev: false - /vite-svg-loader@4.0.0: - resolution: {integrity: sha512-0MMf1yzzSYlV4MGePsLVAOqXsbF5IVxbn4EEzqRnWxTQl8BJg/cfwIzfQNmNQxZp5XXwd4kyRKF1LytuHZTnqA==} + /vite-svg-loader@5.0.1: + resolution: {integrity: sha512-EUfcuqk1NomuacwiuL3mvCfinkm4XN0AHN8BXG737eDlhC0jnp5jxdCxakV+juP/YhhjV5tq/c/bLcm3waWv4Q==} + peerDependencies: + vue: '>=3.2.13' dependencies: - '@vue/compiler-sfc': 3.3.6 - svgo: 3.0.2 + svgo: 3.0.4 dev: false - /vite@4.5.0(@types/node@18.18.6): - resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} + /vite@3.0.4: + resolution: {integrity: sha512-NU304nqnBeOx2MkQnskBQxVsa0pRAH5FphokTGmyy8M3oxbvw7qAXts2GORxs+h/2vKsD+osMhZ7An6yK6F1dA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: - '@types/node': '>= 14' less: '*' - lightningcss: ^1.21.0 sass: '*' stylus: '*' - sugarss: '*' terser: ^5.4.0 peerDependenciesMeta: - '@types/node': - optional: true less: optional: true - lightningcss: - optional: true sass: optional: true stylus: optional: true - sugarss: - optional: true terser: optional: true dependencies: - '@types/node': 18.18.6 - esbuild: 0.18.20 + esbuild: 0.14.54 postcss: 8.4.31 - rollup: 3.29.4 + resolve: 1.22.8 + rollup: 2.79.1 optionalDependencies: fsevents: 2.3.3 dev: false - /vite@5.0.0(@types/node@18.18.6)(sass@1.69.4): - resolution: {integrity: sha512-ESJVM59mdyGpsiNAeHQOR/0fqNoOyWPYesFto8FFZugfmhdHx8Fzd8sF3Q/xkVhZsyOxHfdM7ieiVAorI9RjFw==} - engines: {node: ^18.0.0 || >=20.0.0} + /vite@4.5.0(@types/node@18.18.6): + resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} + engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 + '@types/node': '>= 14' less: '*' lightningcss: ^1.21.0 sass: '*' @@ -17623,14 +18921,14 @@ packages: optional: true dependencies: '@types/node': 18.18.6 - esbuild: 0.19.5 + esbuild: 0.18.20 postcss: 8.4.31 - rollup: 4.4.1 - sass: 1.69.4 + rollup: 3.29.4 optionalDependencies: fsevents: 2.3.3 + dev: false - /vite@5.0.0(sass@1.69.4): + /vite@5.0.0(@types/node@18.18.6)(sass@1.69.5): resolution: {integrity: sha512-ESJVM59mdyGpsiNAeHQOR/0fqNoOyWPYesFto8FFZugfmhdHx8Fzd8sF3Q/xkVhZsyOxHfdM7ieiVAorI9RjFw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -17658,13 +18956,13 @@ packages: terser: optional: true dependencies: - esbuild: 0.19.5 + '@types/node': 18.18.6 + esbuild: 0.19.6 postcss: 8.4.31 - rollup: 4.4.1 - sass: 1.69.4 + rollup: 4.5.0 + sass: 1.69.5 optionalDependencies: fsevents: 2.3.3 - dev: false /vitefu@0.2.5(vite@5.0.0): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} @@ -17674,7 +18972,7 @@ packages: vite: optional: true dependencies: - vite: 5.0.0(sass@1.69.4) + vite: 5.0.0(@types/node@18.18.6)(sass@1.69.5) dev: false /vitest@0.34.6: @@ -17742,61 +19040,47 @@ packages: - terser dev: false - /volar-service-css@0.0.14(@volar/language-service@1.10.4): - resolution: {integrity: sha512-xmyKoyWpbgM0u7mGA1ogyj5ol7CfQADm5eXNpeJeX3Rp79rFEtz1DuuaIjcgRvhSYsjJfPBOtOvHBwTRf4HaEQ==} + /volar-service-css@0.0.16(@volar/language-service@1.10.10): + resolution: {integrity: sha512-gK/XD35t/P3SQrUuS8LMlCnE2ItIk+kXI6gPvBYl1NZ7O+tLH8rUWXA32YgpwNoITxYrm/G1seaq08zs4aiPvg==} peerDependencies: '@volar/language-service': ~1.10.0 peerDependenciesMeta: '@volar/language-service': optional: true dependencies: - '@volar/language-service': 1.10.4 + '@volar/language-service': 1.10.10 vscode-css-languageservice: 6.2.10 vscode-uri: 3.0.8 dev: true - /volar-service-emmet@0.0.14(@volar/language-service@1.10.4): - resolution: {integrity: sha512-0meSKjQ93j5iSYl6Y+qtARfAYr3J2wNSr6wlKr/V9KULAy+8/me8q9l8wkTQqdRMujZAv2j/LzgQ65Yc9mnA1w==} + /volar-service-emmet@0.0.16(@volar/language-service@1.10.10): + resolution: {integrity: sha512-8sWWywzVJOD+PWDArOXDWbiRlM7+peydFhXJT71i4X1WPW32RyPxn6FypvciO+amqpfZP2rXfB9eibIJ+EofSQ==} peerDependencies: '@volar/language-service': ~1.10.0 peerDependenciesMeta: '@volar/language-service': optional: true dependencies: - '@volar/language-service': 1.10.4 + '@volar/language-service': 1.10.10 '@vscode/emmet-helper': 2.9.2 - volar-service-html: 0.0.14(@volar/language-service@1.10.4) + volar-service-html: 0.0.16(@volar/language-service@1.10.10) dev: true - /volar-service-html@0.0.14(@volar/language-service@1.10.4): - resolution: {integrity: sha512-PQb97QICxXhXD7AJFU/S/Vexd1L4IP2Sa5SzxYyKnApcx0GNdxaIbFHlev9wazrTgtCtSnaVXJBxY05pZzTKPw==} + /volar-service-html@0.0.16(@volar/language-service@1.10.10): + resolution: {integrity: sha512-/oEXXgry++1CnTXQBUNf9B8MZfTlYZuJfZA7Zx9MN7WS4ZPxk3BFOdal/cXH6RNR2ruNEYr5QTW9rsqtoUscag==} peerDependencies: '@volar/language-service': ~1.10.0 peerDependenciesMeta: '@volar/language-service': optional: true dependencies: - '@volar/language-service': 1.10.4 - vscode-html-languageservice: 5.1.0 + '@volar/language-service': 1.10.10 + vscode-html-languageservice: 5.1.1 vscode-uri: 3.0.8 dev: true - /volar-service-prettier@0.0.14(@volar/language-service@1.10.4): - resolution: {integrity: sha512-woZLBikvv8u0jUAq10ZTtuo9hmnQ1RHZubMhzyJbWwkr6L7wT7bPZkscdyaCGrzBT3Pz4zbS0bnpAC5GLAILTA==} - peerDependencies: - '@volar/language-service': ~1.10.0 - prettier: ^2.2 || ^3.0 - peerDependenciesMeta: - '@volar/language-service': - optional: true - prettier: - optional: true - dependencies: - '@volar/language-service': 1.10.4 - dev: true - - /volar-service-prettier@0.0.14(@volar/language-service@1.10.4)(prettier@3.0.3): - resolution: {integrity: sha512-woZLBikvv8u0jUAq10ZTtuo9hmnQ1RHZubMhzyJbWwkr6L7wT7bPZkscdyaCGrzBT3Pz4zbS0bnpAC5GLAILTA==} + /volar-service-prettier@0.0.16(@volar/language-service@1.10.10)(prettier@3.1.0): + resolution: {integrity: sha512-Kj2ZdwJGEvfYbsHW8Sjrew/7EB4PgRoas4f8yAJzUUVxIC/kvhUwLDxQc8+N2IibomN76asJGWe+i6VZZvgIkw==} peerDependencies: '@volar/language-service': ~1.10.0 prettier: ^2.2 || ^3.0 @@ -17806,23 +19090,23 @@ packages: prettier: optional: true dependencies: - '@volar/language-service': 1.10.4 - prettier: 3.0.3 + '@volar/language-service': 1.10.10 + prettier: 3.1.0 dev: true - /volar-service-typescript-twoslash-queries@0.0.14(@volar/language-service@1.10.4): - resolution: {integrity: sha512-Lg/AcacxyBmVbZhHZwnwvt+MEn/5YlbLiJ7DJG6Dt3xiuQmpXwZmM+JE7/ZMvPt4gxW6AL9zHz21M6JSPCkJ+g==} + /volar-service-typescript-twoslash-queries@0.0.16(@volar/language-service@1.10.10): + resolution: {integrity: sha512-0gPrkDTD2bMj2AnSNykOKhfmPnBFE2LS1lF3LWA7qu1ChRnJF0sodwCCbbeNYJ9+yth956ApoU1BVQ8UrMg+yw==} peerDependencies: '@volar/language-service': ~1.10.0 peerDependenciesMeta: '@volar/language-service': optional: true dependencies: - '@volar/language-service': 1.10.4 + '@volar/language-service': 1.10.10 dev: true - /volar-service-typescript@0.0.14(@volar/language-service@1.10.4)(@volar/typescript@1.10.4): - resolution: {integrity: sha512-PGHFUbGPLE6/8ldNPO7FxwZdvRLlWBZ26RnJPCM48DBaGTc7qHGkXMtPQq5YCD10d8VwpZirz0eno8K0z+8bpg==} + /volar-service-typescript@0.0.16(@volar/language-service@1.10.10)(@volar/typescript@1.10.10): + resolution: {integrity: sha512-k/qFKM2oxs/3fhbr/vcBSHnCLZ1HN3Aeh+bGvV9Lc9qIhrNyCVsDFOUJN1Qp4dI72+Y+eFSIDCLHmFEZdsP2EA==} peerDependencies: '@volar/language-service': ~1.10.0 '@volar/typescript': ~1.10.0 @@ -17830,8 +19114,9 @@ packages: '@volar/language-service': optional: true dependencies: - '@volar/language-service': 1.10.4 - '@volar/typescript': 1.10.4 + '@volar/language-service': 1.10.10 + '@volar/typescript': 1.10.10 + path-browserify: 1.0.1 semver: 7.5.4 typescript-auto-import-cache: 0.3.0 vscode-languageserver-textdocument: 1.0.11 @@ -17846,36 +19131,53 @@ packages: vscode-languageserver-textdocument: 1.0.11 vscode-languageserver-types: 3.17.5 vscode-uri: 3.0.8 - dev: true - /vscode-html-languageservice@5.1.0: - resolution: {integrity: sha512-cGOu5+lrz+2dDXSGS15y24lDtPaML1T8K/SfqgFbLmCZ1btYOxceFieR+ybTS2es/A67kRc62m2cKFLUQPWG5g==} + /vscode-html-languageservice@5.1.1: + resolution: {integrity: sha512-JenrspIIG/Q+93R6G3L6HdK96itSisMynE0glURqHpQbL3dKAKzdm8L40lAHNkwJeBg+BBPpAshZKv/38onrTQ==} dependencies: '@vscode/l10n': 0.0.16 vscode-languageserver-textdocument: 1.0.11 vscode-languageserver-types: 3.17.5 vscode-uri: 3.0.8 - dev: true + + /vscode-jsonrpc@8.1.0: + resolution: {integrity: sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==} + engines: {node: '>=14.0.0'} + dev: false /vscode-jsonrpc@8.2.0: resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} engines: {node: '>=14.0.0'} - dev: true + + /vscode-languageserver-protocol@3.17.3: + resolution: {integrity: sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==} + dependencies: + vscode-jsonrpc: 8.1.0 + vscode-languageserver-types: 3.17.3 + dev: false /vscode-languageserver-protocol@3.17.5: resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} dependencies: vscode-jsonrpc: 8.2.0 vscode-languageserver-types: 3.17.5 - dev: true /vscode-languageserver-textdocument@1.0.11: resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} - dev: true + + /vscode-languageserver-types@3.17.3: + resolution: {integrity: sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==} + dev: false /vscode-languageserver-types@3.17.5: resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} - dev: true + + /vscode-languageserver@8.1.0: + resolution: {integrity: sha512-eUt8f1z2N2IEUDBsKaNapkz7jl5QpskN2Y0G01T/ItMxBxw1fJwvtySGB9QMecatne8jFIWJGWI61dWjyTLQsw==} + hasBin: true + dependencies: + vscode-languageserver-protocol: 3.17.3 + dev: false /vscode-languageserver@9.0.1: resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} @@ -17890,34 +19192,34 @@ packages: /vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} - dev: true /vscode-textmate@5.2.0: resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} - dev: true + + /vscode-textmate@6.0.0: + resolution: {integrity: sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==} + dev: false /vscode-uri@2.1.2: resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} - dev: true /vscode-uri@3.0.8: resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - dev: true - /vue@3.3.6(typescript@5.1.6): - resolution: {integrity: sha512-jJIDETeWJnoY+gfn4ZtMPMS5KtbP4ax+CT4dcQFhTnWEk8xMupFyQ0JxL28nvT/M4+p4a0ptxaV2WY0LiIxvRg==} + /vue@3.3.8(typescript@5.2.2): + resolution: {integrity: sha512-5VSX/3DabBikOXMsxzlW8JyfeLKlG9mzqnWgLQLty88vdZL7ZJgrdgBOmrArwxiLtmS+lNNpPcBYqrhE6TQW5w==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@vue/compiler-dom': 3.3.6 - '@vue/compiler-sfc': 3.3.6 - '@vue/runtime-dom': 3.3.6 - '@vue/server-renderer': 3.3.6(vue@3.3.6) - '@vue/shared': 3.3.6 - typescript: 5.1.6 + '@vue/compiler-dom': 3.3.8 + '@vue/compiler-sfc': 3.3.8 + '@vue/runtime-dom': 3.3.8 + '@vue/server-renderer': 3.3.8(vue@3.3.8) + '@vue/shared': 3.3.8 + typescript: 5.2.2 /w3c-xmlserializer@4.0.0: resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} @@ -17930,7 +19232,6 @@ packages: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 - dev: true /web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} @@ -17968,11 +19269,11 @@ packages: engines: {node: '>=12'} dev: true - /whatwg-url@11.0.0: - resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} - engines: {node: '>=12'} + /whatwg-url@12.0.1: + resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} + engines: {node: '>=14'} dependencies: - tr46: 3.0.0 + tr46: 4.1.1 webidl-conversions: 7.0.0 dev: true @@ -18090,10 +19391,10 @@ packages: engines: {node: '>=16.0.0'} dependencies: '@apideck/better-ajv-errors': 0.3.6(ajv@8.12.0) - '@babel/core': 7.23.2 - '@babel/preset-env': 7.23.2(@babel/core@7.23.2) + '@babel/core': 7.23.3 + '@babel/preset-env': 7.23.3(@babel/core@7.23.3) '@babel/runtime': 7.23.2 - '@rollup/plugin-babel': 5.3.1(@babel/core@7.23.2)(rollup@2.79.1) + '@rollup/plugin-babel': 5.3.1(@babel/core@7.23.3)(rollup@2.79.1) '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.1) '@rollup/plugin-replace': 2.4.2(rollup@2.79.1) '@surma/rollup-plugin-off-main-thread': 2.2.3 @@ -18320,8 +19621,13 @@ packages: /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - /yaml@2.3.3: - resolution: {integrity: sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==} + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: false + + /yaml@2.3.4: + resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} engines: {node: '>= 14'} /yargs-parser@18.1.3: @@ -18434,5 +19740,5 @@ packages: resolution: {directory: packages/astro/test/fixtures/solid-component/deps/solid-jsx-component, type: directory} name: '@test/solid-jsx-component' dependencies: - solid-js: 1.8.3 + solid-js: 1.8.5 dev: false diff --git a/scripts/package.json b/scripts/package.json index 8e89fb97cc86..2365867f5bac 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -9,11 +9,11 @@ }, "dependencies": { "arg": "^5.0.2", - "esbuild": "^0.19.2", - "globby": "^13.2.2", + "esbuild": "^0.19.6", + "globby": "^14.0.0", "kleur": "^4.1.4", - "p-limit": "^4.0.0", - "svelte": "^4.2.0", + "p-limit": "^5.0.0", + "svelte": "^4.2.5", "tar": "^6.1.15" }, "devDependencies": {