diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 2937cd44..9d495650 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -15,7 +15,7 @@ jobs: strategy: matrix: - node-version: [18.x, 20.x] + node-version: [18.x, 20.x, 22.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: @@ -32,5 +32,7 @@ jobs: run: pnpm run build:all - name: Typecheck run: pnpm run typecheck:all + - name: Lint + run: pnpm lint - name: Test run: pnpm test diff --git a/.husky/pre-commit b/.husky/pre-commit deleted file mode 100755 index 6d73d224..00000000 --- a/.husky/pre-commit +++ /dev/null @@ -1 +0,0 @@ -pnpm run precommit -- diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 98fee578..00000000 --- a/.prettierignore +++ /dev/null @@ -1,140 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* -.pnpm-debug.log* - -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Snowpack dependency directory (https://snowpack.dev/) -web_modules/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional stylelint cache -.stylelintcache - -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variable files -.env -.env.development.local -.env.test.local -.env.production.local -.env.local - -# parcel-bundler cache (https://parceljs.org/) -.cache -.parcel-cache - -# Next.js build output -.next -out - -# Nuxt.js build / generate output -.nuxt -dist - -# Vercel -.output -.vercel - -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and not Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# vuepress v2.x temp and cache directory -.temp - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port - -# Stores VSCode versions used for testing VSCode extensions -.vscode-test - -# yarn v2 -.yarn/cache -.yarn/unplugged -.yarn/build-state.yml -.yarn/install-state.gz -.pnp.* - -# pnpm -pnpm-lock.yaml - -# Local files -*.local.* - -# IDE -.idea - diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 31c19fda..00000000 --- a/.prettierrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "trailingComma": "all", - "singleQuote": true, - "tabWidth": 2 -} diff --git a/biome.json b/biome.json new file mode 100644 index 00000000..1c7547fe --- /dev/null +++ b/biome.json @@ -0,0 +1,29 @@ +{ + "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", + "files": { + "ignore": ["dist/", "package.json"] + }, + "formatter": { + "indentWidth": 2, + "indentStyle": "space" + }, + "javascript": { + "formatter": { + "lineWidth": 120 + } + }, + "vcs": { + "enabled": true, + "clientKind": "git" + }, + "overrides": [ + { + "include": ["**/*.test.ts"], + "linter": { + "rules": { + "suspicious": { "noExplicitAny": "off" } + } + } + } + ] +} diff --git a/examples/demo/_api/name/[name].ts b/examples/demo/_api/name/[name].ts index ad82350a..cb48e79b 100644 --- a/examples/demo/_api/name/[name].ts +++ b/examples/demo/_api/name/[name].ts @@ -1,8 +1,5 @@ -import type { VercelRequest, VercelResponse } from '@vercel/node'; +import type { VercelRequest, VercelResponse } from "@vercel/node"; -export default async function handler( - request: VercelRequest, - response: VercelResponse, -) { - return response.send('Name: ' + request.query.name); +export default async function handler(request: VercelRequest, response: VercelResponse) { + return response.send(`Name: ${request.query.name}`); } diff --git a/examples/demo/_api/page.ts b/examples/demo/_api/page.ts index fb8752da..9a7b3a5b 100644 --- a/examples/demo/_api/page.ts +++ b/examples/demo/_api/page.ts @@ -1,12 +1,9 @@ -import type { VercelRequest, VercelResponse } from '@vercel/node'; +import type { VercelRequest, VercelResponse } from "@vercel/node"; export const headers = { - 'X-VitePluginVercel-Test': 'test', + "X-VitePluginVercel-Test": "test", }; -export default async function handler( - request: VercelRequest, - response: VercelResponse, -) { - return response.send('OK'); +export default async function handler(request: VercelRequest, response: VercelResponse) { + return response.send("OK"); } diff --git a/examples/demo/_api/post.ts b/examples/demo/_api/post.ts index 0c55a5eb..304aa326 100644 --- a/examples/demo/_api/post.ts +++ b/examples/demo/_api/post.ts @@ -1,8 +1,5 @@ -import type { VercelRequest, VercelResponse } from '@vercel/node'; +import type { VercelRequest, VercelResponse } from "@vercel/node"; -export default async function handler( - request: VercelRequest, - response: VercelResponse, -) { - return response.send('OK'); +export default async function handler(request: VercelRequest, response: VercelResponse) { + return response.send("OK"); } diff --git a/examples/demo/endpoints/edge.ts b/examples/demo/endpoints/edge.ts index 301fc75c..22022dac 100644 --- a/examples/demo/endpoints/edge.ts +++ b/examples/demo/endpoints/edge.ts @@ -1,11 +1,11 @@ -import { get } from '@vercel/edge-config'; +import { get } from "@vercel/edge-config"; export const edge = true; export default async function handler() { - await get('someKey'); + await get("someKey"); - return new Response('Edge Function: OK', { + return new Response("Edge Function: OK", { status: 200, }); } diff --git a/examples/demo/endpoints/og-edge.tsx b/examples/demo/endpoints/og-edge.tsx index 6e26fdb9..6733b3be 100644 --- a/examples/demo/endpoints/og-edge.tsx +++ b/examples/demo/endpoints/og-edge.tsx @@ -1,32 +1,27 @@ -import React from 'react'; -import { ImageResponse } from '@vercel/og'; +import React from "react"; +import { ImageResponse } from "@vercel/og"; -import type { VercelRequest, VercelResponse } from '@vercel/node'; +import type { VercelRequest, VercelResponse } from "@vercel/node"; export const edge = true; -export default async function handler( - request: VercelRequest, - response: VercelResponse, -) { +export default async function handler(request: VercelRequest, response: VercelResponse) { return new ImageResponse( - ( -
- 👋 Hello -
- ), +
+ 👋 Hello +
, { width: 1200, height: 630, diff --git a/examples/demo/endpoints/og-node.tsx b/examples/demo/endpoints/og-node.tsx index 3cbcca0e..396cc6fc 100644 --- a/examples/demo/endpoints/og-node.tsx +++ b/examples/demo/endpoints/og-node.tsx @@ -1,52 +1,45 @@ -import React from 'react'; -import { ImageResponse } from '@vercel/og'; +import { readFileSync } from "node:fs"; +import { join } from "node:path"; +import { Readable } from "node:stream"; +import type { ReadableStream } from "node:stream/web"; +import type { VercelRequest, VercelResponse } from "@vercel/node"; +import { ImageResponse } from "@vercel/og"; +import React from "react"; -import type { VercelRequest, VercelResponse } from '@vercel/node'; -import { Readable } from 'node:stream'; -import type { ReadableStream } from 'node:stream/web'; +const font = readFileSync(join(__dirname, "./Roboto-Regular.ttf")); -import { readFileSync } from 'node:fs'; -import { join } from 'node:path'; - -const font = readFileSync(join(__dirname, './Roboto-Regular.ttf')); - -export default async function handler( - request: VercelRequest, - response: VercelResponse, -) { +export default async function handler(request: VercelRequest, response: VercelResponse) { const resp = new ImageResponse( - ( -
- 👋 Hello -
- ), +
+ 👋 Hello +
, { width: 1200, height: 630, fonts: [ { - name: 'Roboto', + name: "Roboto", // Use `fs` (Node.js only) or `fetch` to read the font as Buffer/ArrayBuffer and provide `data` here. data: font, weight: 400, - style: 'normal', + style: "normal", }, ], }, ); - Readable.fromWeb(resp.body as ReadableStream).pipe(response); + Readable.fromWeb(resp.body as ReadableStream).pipe(response); } diff --git a/examples/demo/package.json b/examples/demo/package.json index 884114d0..98aae87d 100644 --- a/examples/demo/package.json +++ b/examples/demo/package.json @@ -17,29 +17,29 @@ "@mdx-js/mdx": "^3.0.1", "@mdx-js/react": "^3.0.1", "@mdx-js/rollup": "^3.0.1", - "@vercel/edge-config": "^1.1.0", + "@vercel/edge-config": "^1.2.1", "@vercel/og": "^0.6.2", "@vite-plugin-vercel/vike": "workspace:*", - "@vitejs/plugin-react-swc": "^3.6.0", + "@vitejs/plugin-react-swc": "^3.7.0", "cross-fetch": "^4.0.0", "node-fetch": "^3.3.2", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", "typescript": "^5.4.5", - "vike": "^0.4.178", - "vite": "^5.2.9", + "vike": "^0.4.188", + "vite": "^5.4.1", "vite-plugin-vercel": "workspace:*" }, "type": "module", "version": null, "devDependencies": { - "@types/node": "^18.19.31", + "@types/node": "^18.19.45", "@types/node-fetch": "^2.6.11", - "@types/react": "^18.2.79", - "@types/react-dom": "^18.2.25", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", "@vercel/node": "^3.0.26", "fast-glob": "^3.3.2", - "vitest": "^1.5.0", + "vitest": "^2.0.5", "zod": "^3.22.4" } } diff --git a/examples/demo/pages/_error/+Page.tsx b/examples/demo/pages/_error/+Page.tsx index 8838c466..a02c25f4 100644 --- a/examples/demo/pages/_error/+Page.tsx +++ b/examples/demo/pages/_error/+Page.tsx @@ -1,30 +1,30 @@ -import React from 'react'; -import { usePageContext } from '../../renderer/usePageContext'; +import type React from "react"; +import { usePageContext } from "../../renderer/usePageContext"; export default function Page() { const ctx = usePageContext(); let { is404, abortReason } = ctx; if (!abortReason) { - abortReason = is404 ? 'Page not found.' : 'Something went wrong.'; + abortReason = is404 ? "Page not found." : "Something went wrong."; } return (
-

{abortReason}

+

{abortReason}

); } -function Center({ style, ...props }: any) { +function Center({ style, ...props }: React.HTMLAttributes) { return (
+ /> ); } diff --git a/examples/demo/pages/catch-all/+Page.tsx b/examples/demo/pages/catch-all/+Page.tsx index 95adbc3c..eb0fd650 100644 --- a/examples/demo/pages/catch-all/+Page.tsx +++ b/examples/demo/pages/catch-all/+Page.tsx @@ -1,5 +1,5 @@ -import React from 'react'; -import { Link } from '../../renderer/Link'; +import React from "react"; +import { Link } from "../../renderer/Link"; export default function Page(props: { d: string }) { return ( diff --git a/examples/demo/pages/catch-all/+config.ts b/examples/demo/pages/catch-all/+config.ts index 8a22e03f..cd4a03e0 100644 --- a/examples/demo/pages/catch-all/+config.ts +++ b/examples/demo/pages/catch-all/+config.ts @@ -1,4 +1,4 @@ -import { Config } from 'vike/types'; +import type { Config } from "vike/types"; export default { isr: { expiration: 15 }, diff --git a/examples/demo/pages/catch-all/+onBeforePrerenderStart.ts b/examples/demo/pages/catch-all/+onBeforePrerenderStart.ts index 31db10d2..d4e4dea1 100644 --- a/examples/demo/pages/catch-all/+onBeforePrerenderStart.ts +++ b/examples/demo/pages/catch-all/+onBeforePrerenderStart.ts @@ -1,3 +1,3 @@ export default function prerender() { - return ['/catch-all/a/b/c', '/catch-all/a/d']; + return ["/catch-all/a/b/c", "/catch-all/a/d"]; } diff --git a/examples/demo/pages/catch-all/+onBeforeRender.ts b/examples/demo/pages/catch-all/+onBeforeRender.ts index f31c47ad..1294f4d7 100644 --- a/examples/demo/pages/catch-all/+onBeforeRender.ts +++ b/examples/demo/pages/catch-all/+onBeforeRender.ts @@ -1,4 +1,4 @@ -import { PageContextBuiltInServer } from 'vike/types'; +import { PageContextBuiltInServer } from "vike/types"; // https://vike.dev/onBeforeRender export default function onBeforeRender() { diff --git a/examples/demo/pages/catch-all/+route.ts b/examples/demo/pages/catch-all/+route.ts index 8079e934..6abe2ef2 100644 --- a/examples/demo/pages/catch-all/+route.ts +++ b/examples/demo/pages/catch-all/+route.ts @@ -1 +1 @@ -export default '/catch-all/*'; +export default "/catch-all/*"; diff --git a/examples/demo/pages/dynamic/+Page.tsx b/examples/demo/pages/dynamic/+Page.tsx index 6dccdd93..c485fb11 100644 --- a/examples/demo/pages/dynamic/+Page.tsx +++ b/examples/demo/pages/dynamic/+Page.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React from "react"; export default function Page(props: { d: string }) { return ( diff --git a/examples/demo/pages/dynamic/+onBeforeRender.ts b/examples/demo/pages/dynamic/+onBeforeRender.ts index f31c47ad..1294f4d7 100644 --- a/examples/demo/pages/dynamic/+onBeforeRender.ts +++ b/examples/demo/pages/dynamic/+onBeforeRender.ts @@ -1,4 +1,4 @@ -import { PageContextBuiltInServer } from 'vike/types'; +import { PageContextBuiltInServer } from "vike/types"; // https://vike.dev/onBeforeRender export default function onBeforeRender() { diff --git a/examples/demo/pages/function/+Page.tsx b/examples/demo/pages/function/+Page.tsx index dd8e1dea..f00a09da 100644 --- a/examples/demo/pages/function/+Page.tsx +++ b/examples/demo/pages/function/+Page.tsx @@ -1,5 +1,5 @@ -import React from 'react'; -import { Link } from '../../renderer/Link'; +import React from "react"; +import { Link } from "../../renderer/Link"; export default function Page(props: { d: string }) { return ( diff --git a/examples/demo/pages/function/+config.ts b/examples/demo/pages/function/+config.ts index 831a19fb..d38c660e 100644 --- a/examples/demo/pages/function/+config.ts +++ b/examples/demo/pages/function/+config.ts @@ -1,4 +1,4 @@ -import { Config } from 'vike/types'; +import type { Config } from "vike/types"; export default { // Should warn when building because it's incompatible with route function diff --git a/examples/demo/pages/function/+onBeforePrerenderStart.ts b/examples/demo/pages/function/+onBeforePrerenderStart.ts index 2a72dcd4..f17478d9 100644 --- a/examples/demo/pages/function/+onBeforePrerenderStart.ts +++ b/examples/demo/pages/function/+onBeforePrerenderStart.ts @@ -1,3 +1,3 @@ export default function prerender() { - return ['/function/a']; + return ["/function/a"]; } diff --git a/examples/demo/pages/function/+onBeforeRender.ts b/examples/demo/pages/function/+onBeforeRender.ts index f31c47ad..1294f4d7 100644 --- a/examples/demo/pages/function/+onBeforeRender.ts +++ b/examples/demo/pages/function/+onBeforeRender.ts @@ -1,4 +1,4 @@ -import { PageContextBuiltInServer } from 'vike/types'; +import { PageContextBuiltInServer } from "vike/types"; // https://vike.dev/onBeforeRender export default function onBeforeRender() { diff --git a/examples/demo/pages/function/+route.ts b/examples/demo/pages/function/+route.ts index 4f384258..b7ac8bcc 100644 --- a/examples/demo/pages/function/+route.ts +++ b/examples/demo/pages/function/+route.ts @@ -1,7 +1,7 @@ -import { PageContextBuiltInServer } from 'vike/types'; +import type { PageContextBuiltInServer } from "vike/types"; export default function (pageContext: PageContextBuiltInServer) { - if (!pageContext.urlPathname.startsWith('/function/')) return false; + if (!pageContext.urlPathname.startsWith("/function/")) return false; return { precedence: -1, }; diff --git a/examples/demo/pages/index/+Page.tsx b/examples/demo/pages/index/+Page.tsx index ce09e2eb..a5b5d778 100644 --- a/examples/demo/pages/index/+Page.tsx +++ b/examples/demo/pages/index/+Page.tsx @@ -1,5 +1,5 @@ -import React from 'react'; -import { Counter } from './Counter.js'; +import React from "react"; +import { Counter } from "./Counter.js"; export default function Page() { return ( diff --git a/examples/demo/pages/index/Counter.tsx b/examples/demo/pages/index/Counter.tsx index 46393a1e..9245aaca 100644 --- a/examples/demo/pages/index/Counter.tsx +++ b/examples/demo/pages/index/Counter.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React, { useState } from "react"; export { Counter }; diff --git a/examples/demo/pages/isr/+Page.tsx b/examples/demo/pages/isr/+Page.tsx index a7efe22f..387704e5 100644 --- a/examples/demo/pages/isr/+Page.tsx +++ b/examples/demo/pages/isr/+Page.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React from "react"; export default function Page(props: { d: string }) { return ( diff --git a/examples/demo/pages/isr/+config.ts b/examples/demo/pages/isr/+config.ts index 8a22e03f..cd4a03e0 100644 --- a/examples/demo/pages/isr/+config.ts +++ b/examples/demo/pages/isr/+config.ts @@ -1,4 +1,4 @@ -import { Config } from 'vike/types'; +import type { Config } from "vike/types"; export default { isr: { expiration: 15 }, diff --git a/examples/demo/pages/named/+Page.tsx b/examples/demo/pages/named/+Page.tsx index 73be06a3..3ed48bb2 100644 --- a/examples/demo/pages/named/+Page.tsx +++ b/examples/demo/pages/named/+Page.tsx @@ -1,8 +1,8 @@ -import React from 'react'; -import { Link } from '../../renderer/Link'; +import React from "react"; +import { Link } from "../../renderer/Link"; function isISR(someId: string) { - return someId !== 'id-1' && someId !== 'id-2'; + return someId !== "id-1" && someId !== "id-2"; } export default function Page(props: { d: string; someId: string }) { @@ -45,7 +45,7 @@ export default function Page(props: { d: string; someId: string }) { -
  • {isISR(props.someId) ? 'ISR' : 'Static'}
  • +
  • {isISR(props.someId) ? "ISR" : "Static"}
  • {props.d}
  • diff --git a/examples/demo/pages/named/+config.ts b/examples/demo/pages/named/+config.ts index 3176521f..0ec3e0d6 100644 --- a/examples/demo/pages/named/+config.ts +++ b/examples/demo/pages/named/+config.ts @@ -1,4 +1,4 @@ -import { Config } from 'vike/types'; +import type { Config } from "vike/types"; export default { isr: true, diff --git a/examples/demo/pages/named/+onBeforePrerenderStart.ts b/examples/demo/pages/named/+onBeforePrerenderStart.ts index 84b89bd8..f2012280 100644 --- a/examples/demo/pages/named/+onBeforePrerenderStart.ts +++ b/examples/demo/pages/named/+onBeforePrerenderStart.ts @@ -1,3 +1,3 @@ export default function prerender() { - return ['/named/id-1', '/named/id-2']; + return ["/named/id-1", "/named/id-2"]; } diff --git a/examples/demo/pages/named/+onBeforeRender.ts b/examples/demo/pages/named/+onBeforeRender.ts index ced6158f..2aa5d273 100644 --- a/examples/demo/pages/named/+onBeforeRender.ts +++ b/examples/demo/pages/named/+onBeforeRender.ts @@ -1,4 +1,4 @@ -import { PageContextBuiltInServer } from 'vike/types'; +import type { PageContextBuiltInServer } from "vike/types"; // https://vike.dev/onBeforeRender export default function onBeforeRender(pageContext: PageContextBuiltInServer) { diff --git a/examples/demo/pages/named/+route.ts b/examples/demo/pages/named/+route.ts index b07d9b48..cae48d06 100644 --- a/examples/demo/pages/named/+route.ts +++ b/examples/demo/pages/named/+route.ts @@ -1 +1 @@ -export default '/named/@someId'; +export default "/named/@someId"; diff --git a/examples/demo/pages/static/+Page.tsx b/examples/demo/pages/static/+Page.tsx index d66dd5cd..b5249728 100644 --- a/examples/demo/pages/static/+Page.tsx +++ b/examples/demo/pages/static/+Page.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React from "react"; export default function Page(props: { d: string }) { return ( diff --git a/examples/demo/renderer/+config.ts b/examples/demo/renderer/+config.ts index e919ff2f..cc80dfe2 100644 --- a/examples/demo/renderer/+config.ts +++ b/examples/demo/renderer/+config.ts @@ -1,9 +1,9 @@ -import type { Config } from 'vike/types'; -import config from '@vite-plugin-vercel/vike/config'; +import type { Config } from "vike/types"; +import config from "@vite-plugin-vercel/vike/config"; // https://vike.dev/config export default { - passToClient: ['pageProps', 'title', 'someAsyncProps'], + passToClient: ["pageProps", "title", "someAsyncProps"], clientRouting: true, hydrationCanBeAborted: true, // https://vike.dev/meta @@ -16,7 +16,7 @@ export default { onBeforeRenderIsomorph: { env: { config: true }, effect({ configDefinedAt, configValue }) { - if (typeof configValue !== 'boolean') { + if (typeof configValue !== "boolean") { throw new Error(`${configDefinedAt} should be a boolean`); } if (configValue) { diff --git a/examples/demo/renderer/+onHydrationEnd.ts b/examples/demo/renderer/+onHydrationEnd.ts index e832b841..ff8a8c6c 100644 --- a/examples/demo/renderer/+onHydrationEnd.ts +++ b/examples/demo/renderer/+onHydrationEnd.ts @@ -1,5 +1,5 @@ export default onHydrationEnd; function onHydrationEnd() { - console.log('Hydration finished; page is now interactive.'); + console.log("Hydration finished; page is now interactive."); } diff --git a/examples/demo/renderer/+onPageTransitionEnd.ts b/examples/demo/renderer/+onPageTransitionEnd.ts index be1e8ac1..eb58c361 100644 --- a/examples/demo/renderer/+onPageTransitionEnd.ts +++ b/examples/demo/renderer/+onPageTransitionEnd.ts @@ -1,6 +1,6 @@ export default onPageTransitionEnd; function onPageTransitionEnd() { - console.log('Page transition end'); - document.querySelector('body')!.classList.remove('page-is-transitioning'); + console.log("Page transition end"); + document.querySelector("body")?.classList.remove("page-is-transitioning"); } diff --git a/examples/demo/renderer/+onPageTransitionStart.ts b/examples/demo/renderer/+onPageTransitionStart.ts index 9a88494a..71c05284 100644 --- a/examples/demo/renderer/+onPageTransitionStart.ts +++ b/examples/demo/renderer/+onPageTransitionStart.ts @@ -1,6 +1,6 @@ export default onPageTransitionStart; function onPageTransitionStart() { - console.log('Page transition start'); - document.querySelector('body')!.classList.add('page-is-transitioning'); + console.log("Page transition start"); + document.querySelector("body")?.classList.add("page-is-transitioning"); } diff --git a/examples/demo/renderer/+onRenderClient.tsx b/examples/demo/renderer/+onRenderClient.tsx index 6c77e5e3..5eeaf5c6 100644 --- a/examples/demo/renderer/+onRenderClient.tsx +++ b/examples/demo/renderer/+onRenderClient.tsx @@ -1,12 +1,12 @@ // https://vike.dev/onRenderClient export default onRenderClient; -import './css/index.css'; -import React from 'react'; -import ReactDOM from 'react-dom/client'; -import { PageShell } from './PageShell'; -import { getPageTitle } from './getPageTitle'; -import type { PageContextClient } from './types'; +import "./css/index.css"; +import React from "react"; +import ReactDOM from "react-dom/client"; +import { PageShell } from "./PageShell"; +import { getPageTitle } from "./getPageTitle"; +import type { PageContextClient } from "./types"; let root: ReactDOM.Root; async function onRenderClient(pageContext: PageContextClient) { @@ -16,7 +16,8 @@ async function onRenderClient(pageContext: PageContextClient) { ); - const container = document.getElementById('page-view')!; + // biome-ignore lint/style/noNonNullAssertion: + const container = document.getElementById("page-view")!; if (pageContext.isHydration) { root = ReactDOM.hydrateRoot(container, page); } else { diff --git a/examples/demo/renderer/+onRenderHtml.tsx b/examples/demo/renderer/+onRenderHtml.tsx index 4d47cbf4..a5ea549d 100644 --- a/examples/demo/renderer/+onRenderHtml.tsx +++ b/examples/demo/renderer/+onRenderHtml.tsx @@ -1,12 +1,12 @@ // https://vike.dev/onRenderHtml export default onRenderHtml; -import ReactDOMServer from 'react-dom/server'; -import React from 'react'; -import { escapeInject } from 'vike/server'; -import { PageShell } from './PageShell'; -import { getPageTitle } from './getPageTitle'; -import type { PageContextServer } from './types'; +import ReactDOMServer from "react-dom/server"; +import React from "react"; +import { escapeInject } from "vike/server"; +import { PageShell } from "./PageShell"; +import { getPageTitle } from "./getPageTitle"; +import type { PageContextServer } from "./types"; async function onRenderHtml(pageContext: PageContextServer) { const { Page, pageProps } = pageContext; diff --git a/examples/demo/renderer/Link.tsx b/examples/demo/renderer/Link.tsx index 5da79981..5d523905 100644 --- a/examples/demo/renderer/Link.tsx +++ b/examples/demo/renderer/Link.tsx @@ -1,15 +1,14 @@ export { Link }; -import { usePageContext } from './usePageContext'; -import React from 'react'; +import { usePageContext } from "./usePageContext"; +import React from "react"; function Link({ href, children }: { href: string; children: string }) { const pageContext = usePageContext() as { urlPathname: string }; // TODO const { urlPathname } = pageContext; - const isActive = - href === '/' ? urlPathname === href : urlPathname.startsWith(href); + const isActive = href === "/" ? urlPathname === href : urlPathname.startsWith(href); return ( - + {children} ); diff --git a/examples/demo/renderer/PageShell.tsx b/examples/demo/renderer/PageShell.tsx index 69234c78..7d8a0129 100644 --- a/examples/demo/renderer/PageShell.tsx +++ b/examples/demo/renderer/PageShell.tsx @@ -1,8 +1,8 @@ -import React from 'react'; -import logoUrl from './logo.svg'; -import { PageContextProvider } from './usePageContext'; -import { Link } from './Link'; -import type { PageContext } from './types'; +import React from "react"; +import { Link } from "./Link"; +import logoUrl from "./logo.svg"; +import type { PageContext } from "./types"; +import { PageContextProvider } from "./usePageContext"; export { PageShell }; @@ -41,9 +41,9 @@ function Layout({ children }: { children: React.ReactNode }) { return (
    {children} @@ -58,10 +58,10 @@ function Sidebar({ children }: { children: React.ReactNode }) { style={{ padding: 20, flexShrink: 0, - display: 'flex', - flexDirection: 'column', - lineHeight: '1.8em', - borderRight: '2px solid #eee', + display: "flex", + flexDirection: "column", + lineHeight: "1.8em", + borderRight: "2px solid #eee", }} > {children} @@ -77,7 +77,7 @@ function Content({ children }: { children: React.ReactNode }) { style={{ padding: 20, paddingBottom: 50, - minHeight: '100vh', + minHeight: "100vh", }} > {children} @@ -95,7 +95,7 @@ function Logo() { }} > - + Logo
    ); diff --git a/examples/demo/renderer/getPageTitle.ts b/examples/demo/renderer/getPageTitle.ts index 69a3bba8..bdf845df 100644 --- a/examples/demo/renderer/getPageTitle.ts +++ b/examples/demo/renderer/getPageTitle.ts @@ -1,6 +1,6 @@ export { getPageTitle }; -import type { PageContext } from './types'; +import type { PageContext } from "./types"; function getPageTitle(pageContext: PageContext): string { const title = @@ -9,6 +9,6 @@ function getPageTitle(pageContext: PageContext): string { // Title defined statically by /pages/some-page/+title.js (or by `export default { title }` in /pages/some-page/+config.js) // The config 'pageContext.config.title' is a custom config we defined at ./+config.ts pageContext.config.title || - 'Demo'; + "Demo"; return title; } diff --git a/examples/demo/renderer/types.ts b/examples/demo/renderer/types.ts index e32a424f..317b2681 100644 --- a/examples/demo/renderer/types.ts +++ b/examples/demo/renderer/types.ts @@ -12,7 +12,7 @@ import type { // When using Server Routing PageContextBuiltInClientWithServerRouting as PageContextBuiltInClient //*/ -} from 'vike/types'; +} from "vike/types"; type Page = (pageProps: PageProps) => React.ReactElement; type PageProps = Record; diff --git a/examples/demo/renderer/usePageContext.tsx b/examples/demo/renderer/usePageContext.tsx index 6b85162b..2a1b969d 100644 --- a/examples/demo/renderer/usePageContext.tsx +++ b/examples/demo/renderer/usePageContext.tsx @@ -1,10 +1,10 @@ -import React, { useContext } from 'react'; -import type { PageContext } from './types'; +import React, { useContext } from "react"; +import type { PageContext } from "./types"; export { PageContextProvider }; export { usePageContext }; -const Context = React.createContext(undefined as any); +const Context = React.createContext(undefined as unknown as PageContext); function PageContextProvider({ pageContext, diff --git a/examples/demo/tests/01-minimal/config.test.ts b/examples/demo/tests/01-minimal/config.test.ts index 6bcee973..d9a9d138 100644 --- a/examples/demo/tests/01-minimal/config.test.ts +++ b/examples/demo/tests/01-minimal/config.test.ts @@ -1,58 +1,52 @@ -import path from 'path'; -import { vercelOutputConfigSchema } from '../../../../packages/vercel/src/schemas/config/config'; -import { expect, it } from 'vitest'; -import { prepareTestJsonFileContent, testSchema } from '../common/helpers'; +import path from "node:path"; +import { vercelOutputConfigSchema } from "../../../../packages/vercel/src/schemas/config/config"; +import { expect, it } from "vitest"; +import { prepareTestJsonFileContent, testSchema } from "../common/helpers"; -prepareTestJsonFileContent( - path.basename(__dirname), - 'config.json', - (context) => { - testSchema(context, vercelOutputConfigSchema); +prepareTestJsonFileContent(path.basename(__dirname), "config.json", (context) => { + testSchema(context, vercelOutputConfigSchema); - it('should have defaults routes only', function () { - console.log(context.file); - expect(context.file).toHaveProperty('routes', [ - { - src: '^/api/page$', - headers: { 'X-VitePluginVercel-Test': 'test' }, - continue: true, - }, - { - headers: { Location: '/$1' }, - src: '^/(?:(.+)/)?index(?:\\.html)?/?$', - status: 308, - }, - { - headers: { Location: '/$1' }, - src: '^/(.*)\\.html/?$', - status: 308, - }, - { handle: 'filesystem' }, - { - src: '^/edge(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?$', - dest: '/edge/$1', - check: true, - }, - { - check: true, - src: '^/api/page$', - dest: '/api/page', - }, - { - check: true, - src: '^/api/post$', - dest: '/api/post', - }, - { - check: true, - src: '^/api/name(?:/([^/]+?))$', - dest: '/api/name/[name]?name=$1', - }, - ]); - expect(context.file).toHaveProperty('overrides', {}); - expect(Object.keys(context.file as any).sort()).toMatchObject( - ['version', 'overrides', 'routes'].sort(), - ); - }); - }, -); + it("should have defaults routes only", () => { + console.log(context.file); + expect(context.file).toHaveProperty("routes", [ + { + src: "^/api/page$", + headers: { "X-VitePluginVercel-Test": "test" }, + continue: true, + }, + { + headers: { Location: "/$1" }, + src: "^/(?:(.+)/)?index(?:\\.html)?/?$", + status: 308, + }, + { + headers: { Location: "/$1" }, + src: "^/(.*)\\.html/?$", + status: 308, + }, + { handle: "filesystem" }, + { + src: "^/edge(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?$", + dest: "/edge/$1", + check: true, + }, + { + check: true, + src: "^/api/page$", + dest: "/api/page", + }, + { + check: true, + src: "^/api/post$", + dest: "/api/post", + }, + { + check: true, + src: "^/api/name(?:/([^/]+?))$", + dest: "/api/name/[name]?name=$1", + }, + ]); + expect(context.file).toHaveProperty("overrides", {}); + expect(Object.keys(context.file as any).sort()).toMatchObject(["version", "overrides", "routes"].sort()); + }); +}); diff --git a/examples/demo/tests/01-minimal/fs.test.ts b/examples/demo/tests/01-minimal/fs.test.ts index bca8f6f3..273c53b6 100644 --- a/examples/demo/tests/01-minimal/fs.test.ts +++ b/examples/demo/tests/01-minimal/fs.test.ts @@ -1,19 +1,19 @@ -import { testFs } from '../common/helpers'; -import { describe } from 'vitest'; -import path from 'path'; +import { testFs } from "../common/helpers"; +import { describe } from "vitest"; +import path from "node:path"; -describe('fs', function () { +describe("fs", () => { testFs(path.basename(__dirname), [ - '/config.json', - '/functions/api/name/[name].func/.vc-config.json', - '/functions/api/name/[name].func/index.mjs', - '/functions/api/page.func/index.mjs', - '/functions/api/page.func/.vc-config.json', - '/functions/api/post.func/index.mjs', - '/functions/api/post.func/.vc-config.json', - '/functions/edge.func/index.js', - '/functions/edge.func/.vc-config.json', - '/static/test.html', - '/static/tests/common/index.html', + "/config.json", + "/functions/api/name/[name].func/.vc-config.json", + "/functions/api/name/[name].func/index.mjs", + "/functions/api/page.func/index.mjs", + "/functions/api/page.func/.vc-config.json", + "/functions/api/post.func/index.mjs", + "/functions/api/post.func/.vc-config.json", + "/functions/edge.func/index.js", + "/functions/edge.func/.vc-config.json", + "/static/test.html", + "/static/tests/common/index.html", ]); }); diff --git a/examples/demo/tests/01-minimal/globalSetup.ts b/examples/demo/tests/01-minimal/globalSetup.ts index b105a6de..59a9db3d 100644 --- a/examples/demo/tests/01-minimal/globalSetup.ts +++ b/examples/demo/tests/01-minimal/globalSetup.ts @@ -1,12 +1,12 @@ -import path from 'path'; -import { setup as _setup } from '../common/setup'; -import { teardown as _teardown } from '../common/teardown'; -import react from '@vitejs/plugin-react-swc'; -import vercel from 'vite-plugin-vercel'; +import path from "node:path"; +import { setup as _setup } from "../common/setup"; +import { teardown as _teardown } from "../common/teardown"; +import react from "@vitejs/plugin-react-swc"; +import vercel from "vite-plugin-vercel"; export const setup = _setup(path.basename(__dirname), { configFile: false, - mode: 'production', + mode: "production", root: process.cwd(), plugins: [ react(), diff --git a/examples/demo/tests/01-minimal/vc-config.test.ts b/examples/demo/tests/01-minimal/vc-config.test.ts index e1bfe31a..4365ceec 100644 --- a/examples/demo/tests/01-minimal/vc-config.test.ts +++ b/examples/demo/tests/01-minimal/vc-config.test.ts @@ -1,39 +1,32 @@ -import path from 'path'; -import { expect, it } from 'vitest'; -import { vercelOutputVcConfigSchema } from '../../../../packages/vercel/src/schemas/config/vc-config'; -import { prepareTestJsonFilesContent, testSchema } from '../common/helpers'; +import path from "node:path"; +import { expect, it } from "vitest"; +import { vercelOutputVcConfigSchema } from "../../../../packages/vercel/src/schemas/config/vc-config"; +import { prepareTestJsonFilesContent, testSchema } from "../common/helpers"; prepareTestJsonFilesContent( path.basename(__dirname), - [ - '/functions/api/page.func/.vc-config.json', - '/functions/api/post.func/.vc-config.json', - ], + ["/functions/api/page.func/.vc-config.json", "/functions/api/post.func/.vc-config.json"], (context) => { testSchema(context, vercelOutputVcConfigSchema); - it('should have only necessary properties', function () { + it("should have only necessary properties", () => { expect(context.file).toStrictEqual({ - handler: 'index.mjs', - launcherType: 'Nodejs', - runtime: 'nodejs20.x', + handler: "index.mjs", + launcherType: "Nodejs", + runtime: "nodejs20.x", shouldAddHelpers: true, }); }); }, ); -prepareTestJsonFilesContent( - path.basename(__dirname), - ['/functions/edge.func/.vc-config.json'], - (context) => { - testSchema(context, vercelOutputVcConfigSchema); +prepareTestJsonFilesContent(path.basename(__dirname), ["/functions/edge.func/.vc-config.json"], (context) => { + testSchema(context, vercelOutputVcConfigSchema); - it('should have only necessary properties', function () { - expect(context.file).toStrictEqual({ - runtime: 'edge', - entrypoint: 'index.js', - }); + it("should have only necessary properties", () => { + expect(context.file).toStrictEqual({ + runtime: "edge", + entrypoint: "index.js", }); - }, -); + }); +}); diff --git a/examples/demo/tests/01-minimal/vitest.config.ts b/examples/demo/tests/01-minimal/vitest.config.ts index 8419e134..ac783576 100644 --- a/examples/demo/tests/01-minimal/vitest.config.ts +++ b/examples/demo/tests/01-minimal/vitest.config.ts @@ -1,8 +1,8 @@ -import { defineConfig } from 'vitest/config'; +import { defineConfig } from "vitest/config"; export default defineConfig({ test: { - globalSetup: 'tests/01-minimal/globalSetup.ts', + globalSetup: "tests/01-minimal/globalSetup.ts", coverage: { enabled: false, }, diff --git a/examples/demo/tests/02-additional-endpoints/config.test.ts b/examples/demo/tests/02-additional-endpoints/config.test.ts index 235d0490..bec1b8f4 100644 --- a/examples/demo/tests/02-additional-endpoints/config.test.ts +++ b/examples/demo/tests/02-additional-endpoints/config.test.ts @@ -1,68 +1,62 @@ -import { vercelOutputConfigSchema } from '../../../../packages/vercel/src/schemas/config/config'; -import { prepareTestJsonFileContent, testSchema } from '../common/helpers'; -import { expect, it } from 'vitest'; +import { expect, it } from "vitest"; +import { vercelOutputConfigSchema } from "../../../../packages/vercel/src/schemas/config/config"; +import { prepareTestJsonFileContent, testSchema } from "../common/helpers"; -import path from 'path'; +import path from "node:path"; -prepareTestJsonFileContent( - path.basename(__dirname), - 'config.json', - (context) => { - testSchema(context, vercelOutputConfigSchema); +prepareTestJsonFileContent(path.basename(__dirname), "config.json", (context) => { + testSchema(context, vercelOutputConfigSchema); - it('should have defaults routes only', function () { - expect(context.file).toHaveProperty('routes', [ - { - src: '^/api/page$', - headers: { 'X-VitePluginVercel-Test': 'test' }, - continue: true, - }, - { - headers: { Location: '/$1' }, - src: '^/(?:(.+)/)?index(?:\\.html)?/?$', - status: 308, - }, - { - headers: { Location: '/$1' }, - src: '^/(.*)\\.html/?$', - status: 308, - }, - { handle: 'filesystem' }, - { - src: '^/edge(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?$', - dest: '/edge/$1', - check: true, - }, - { - check: true, - src: '^/index2(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?$', - dest: '/index2/$1', - }, - { - check: true, - src: '^/index3(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?$', - dest: '/index3/$1', - }, - { - check: true, - src: '^/api/page$', - dest: '/api/page', - }, - { - check: true, - src: '^/api/post$', - dest: '/api/post', - }, - { - check: true, - src: '^/api/name(?:/([^/]+?))$', - dest: '/api/name/[name]?name=$1', - }, - ]); - expect(context.file).toHaveProperty('overrides', {}); - expect(Object.keys(context.file as any).sort()).toEqual( - ['version', 'overrides', 'routes'].sort(), - ); - }); - }, -); + it("should have defaults routes only", () => { + expect(context.file).toHaveProperty("routes", [ + { + src: "^/api/page$", + headers: { "X-VitePluginVercel-Test": "test" }, + continue: true, + }, + { + headers: { Location: "/$1" }, + src: "^/(?:(.+)/)?index(?:\\.html)?/?$", + status: 308, + }, + { + headers: { Location: "/$1" }, + src: "^/(.*)\\.html/?$", + status: 308, + }, + { handle: "filesystem" }, + { + src: "^/edge(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?$", + dest: "/edge/$1", + check: true, + }, + { + check: true, + src: "^/index2(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?$", + dest: "/index2/$1", + }, + { + check: true, + src: "^/index3(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?$", + dest: "/index3/$1", + }, + { + check: true, + src: "^/api/page$", + dest: "/api/page", + }, + { + check: true, + src: "^/api/post$", + dest: "/api/post", + }, + { + check: true, + src: "^/api/name(?:/([^/]+?))$", + dest: "/api/name/[name]?name=$1", + }, + ]); + expect(context.file).toHaveProperty("overrides", {}); + expect(Object.keys(context.file as any).sort()).toEqual(["version", "overrides", "routes"].sort()); + }); +}); diff --git a/examples/demo/tests/02-additional-endpoints/fs.test.ts b/examples/demo/tests/02-additional-endpoints/fs.test.ts index 7a611566..cd12eec8 100644 --- a/examples/demo/tests/02-additional-endpoints/fs.test.ts +++ b/examples/demo/tests/02-additional-endpoints/fs.test.ts @@ -1,23 +1,23 @@ -import { testFs } from '../common/helpers'; -import { describe } from 'vitest'; -import path from 'path'; +import { testFs } from "../common/helpers"; +import { describe } from "vitest"; +import path from "node:path"; -describe('fs', function () { +describe("fs", () => { testFs(path.basename(__dirname), [ - '/config.json', - '/functions/api/name/[name].func/.vc-config.json', - '/functions/api/name/[name].func/index.mjs', - '/functions/api/page.func/index.mjs', - '/functions/api/page.func/.vc-config.json', - '/functions/api/post.func/index.mjs', - '/functions/api/post.func/.vc-config.json', - '/functions/edge.func/index.js', - '/functions/edge.func/.vc-config.json', - '/functions/index2.func/index.mjs', - '/functions/index2.func/.vc-config.json', - '/functions/index3.func/index.mjs', - '/functions/index3.func/.vc-config.json', - '/static/test.html', - '/static/tests/common/index.html', + "/config.json", + "/functions/api/name/[name].func/.vc-config.json", + "/functions/api/name/[name].func/index.mjs", + "/functions/api/page.func/index.mjs", + "/functions/api/page.func/.vc-config.json", + "/functions/api/post.func/index.mjs", + "/functions/api/post.func/.vc-config.json", + "/functions/edge.func/index.js", + "/functions/edge.func/.vc-config.json", + "/functions/index2.func/index.mjs", + "/functions/index2.func/.vc-config.json", + "/functions/index3.func/index.mjs", + "/functions/index3.func/.vc-config.json", + "/static/test.html", + "/static/tests/common/index.html", ]); }); diff --git a/examples/demo/tests/02-additional-endpoints/globalSetup.ts b/examples/demo/tests/02-additional-endpoints/globalSetup.ts index 713c64d7..7723d6bc 100644 --- a/examples/demo/tests/02-additional-endpoints/globalSetup.ts +++ b/examples/demo/tests/02-additional-endpoints/globalSetup.ts @@ -1,12 +1,13 @@ -import path from 'path'; -import { setup as _setup } from '../common/setup'; -import { teardown as _teardown } from '../common/teardown'; -import react from '@vitejs/plugin-react-swc'; -import vercel from 'vite-plugin-vercel'; +/// +import path from "node:path"; +import react from "@vitejs/plugin-react-swc"; +import vercel from "vite-plugin-vercel"; +import { setup as _setup } from "../common/setup"; +import { teardown as _teardown } from "../common/teardown"; export const setup = _setup(path.basename(__dirname), { configFile: false, - mode: 'production', + mode: "production", root: process.cwd(), plugins: [ react(), @@ -17,16 +18,16 @@ export const setup = _setup(path.basename(__dirname), { vercel: { additionalEndpoints: [ { - source: './tests/common/index2.ts', - destination: 'index2', + source: "./tests/common/index2.ts", + destination: "index2", }, { source: { contents: 'console.log("hi");', - sourcefile: 'hi.ts', - loader: 'ts', + sourcefile: "hi.ts", + loader: "ts", }, - destination: 'index3', + destination: "index3", }, ], }, diff --git a/examples/demo/tests/02-additional-endpoints/vc-config.test.ts b/examples/demo/tests/02-additional-endpoints/vc-config.test.ts index 40bec5c2..ad39fee3 100644 --- a/examples/demo/tests/02-additional-endpoints/vc-config.test.ts +++ b/examples/demo/tests/02-additional-endpoints/vc-config.test.ts @@ -1,41 +1,37 @@ -import path from 'path'; -import { expect, it } from 'vitest'; -import { vercelOutputVcConfigSchema } from '../../../../packages/vercel/src/schemas/config/vc-config'; -import { prepareTestJsonFilesContent, testSchema } from '../common/helpers'; +import path from "node:path"; +import { expect, it } from "vitest"; +import { vercelOutputVcConfigSchema } from "../../../../packages/vercel/src/schemas/config/vc-config"; +import { prepareTestJsonFilesContent, testSchema } from "../common/helpers"; prepareTestJsonFilesContent( path.basename(__dirname), [ - '/functions/api/page.func/.vc-config.json', - '/functions/api/post.func/.vc-config.json', - '/functions/index2.func/.vc-config.json', - '/functions/index3.func/.vc-config.json', + "/functions/api/page.func/.vc-config.json", + "/functions/api/post.func/.vc-config.json", + "/functions/index2.func/.vc-config.json", + "/functions/index3.func/.vc-config.json", ], (context) => { testSchema(context, vercelOutputVcConfigSchema); - it('should have only necessary properties', function () { + it("should have only necessary properties", () => { expect(context.file).toStrictEqual({ - handler: 'index.mjs', - launcherType: 'Nodejs', - runtime: 'nodejs20.x', + handler: "index.mjs", + launcherType: "Nodejs", + runtime: "nodejs20.x", shouldAddHelpers: true, }); }); }, ); -prepareTestJsonFilesContent( - path.basename(__dirname), - ['/functions/edge.func/.vc-config.json'], - (context) => { - testSchema(context, vercelOutputVcConfigSchema); +prepareTestJsonFilesContent(path.basename(__dirname), ["/functions/edge.func/.vc-config.json"], (context) => { + testSchema(context, vercelOutputVcConfigSchema); - it('should have only necessary properties', function () { - expect(context.file).toStrictEqual({ - runtime: 'edge', - entrypoint: 'index.js', - }); + it("should have only necessary properties", () => { + expect(context.file).toStrictEqual({ + runtime: "edge", + entrypoint: "index.js", }); - }, -); + }); +}); diff --git a/examples/demo/tests/02-additional-endpoints/vitest.config.ts b/examples/demo/tests/02-additional-endpoints/vitest.config.ts index 20ddc4d0..599aa769 100644 --- a/examples/demo/tests/02-additional-endpoints/vitest.config.ts +++ b/examples/demo/tests/02-additional-endpoints/vitest.config.ts @@ -1,8 +1,8 @@ -import { defineConfig } from 'vitest/config'; +import { defineConfig } from "vitest/config"; export default defineConfig({ test: { - globalSetup: 'tests/02-additional-endpoints/globalSetup.ts', + globalSetup: "tests/02-additional-endpoints/globalSetup.ts", coverage: { enabled: false, }, diff --git a/examples/demo/tests/03-prerender/config.test.ts b/examples/demo/tests/03-prerender/config.test.ts index 17ac0ee7..a30ff1aa 100644 --- a/examples/demo/tests/03-prerender/config.test.ts +++ b/examples/demo/tests/03-prerender/config.test.ts @@ -1,59 +1,53 @@ -import path from 'path'; -import { expect, it } from 'vitest'; -import { vercelOutputConfigSchema } from '../../../../packages/vercel/src/schemas/config/config'; -import { prepareTestJsonFileContent, testSchema } from '../common/helpers'; +import path from "node:path"; +import { expect, it } from "vitest"; +import { vercelOutputConfigSchema } from "../../../../packages/vercel/src/schemas/config/config"; +import { prepareTestJsonFileContent, testSchema } from "../common/helpers"; -prepareTestJsonFileContent( - path.basename(__dirname), - 'config.json', - (context) => { - testSchema(context, vercelOutputConfigSchema); +prepareTestJsonFileContent(path.basename(__dirname), "config.json", (context) => { + testSchema(context, vercelOutputConfigSchema); - it('should have defaults routes only', function () { - expect(context.file).toHaveProperty('routes', [ - { - src: '^/api/page$', - headers: { 'X-VitePluginVercel-Test': 'test' }, - continue: true, - }, - { - headers: { Location: '/$1' }, - src: '^/(?:(.+)/)?index(?:\\.html)?/?$', - status: 308, - }, - { - headers: { Location: '/$1' }, - src: '^/(.*)\\.html/?$', - status: 308, - }, - { handle: 'filesystem' }, - { - src: '^/edge(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?$', - dest: '/edge/$1', - check: true, - }, - { - check: true, - src: '^/api/page$', - dest: '/api/page', - }, - { - check: true, - src: '^/api/post$', - dest: '/api/post', - }, - { - check: true, - src: '^/api/name(?:/([^/]+?))$', - dest: '/api/name/[name]?name=$1', - }, - ]); - expect(context.file).toHaveProperty('overrides', { - ssr: { path: 'ssr_' }, - }); - expect(Object.keys(context.file as any).sort()).toEqual( - ['version', 'overrides', 'routes'].sort(), - ); + it("should have defaults routes only", () => { + expect(context.file).toHaveProperty("routes", [ + { + src: "^/api/page$", + headers: { "X-VitePluginVercel-Test": "test" }, + continue: true, + }, + { + headers: { Location: "/$1" }, + src: "^/(?:(.+)/)?index(?:\\.html)?/?$", + status: 308, + }, + { + headers: { Location: "/$1" }, + src: "^/(.*)\\.html/?$", + status: 308, + }, + { handle: "filesystem" }, + { + src: "^/edge(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?$", + dest: "/edge/$1", + check: true, + }, + { + check: true, + src: "^/api/page$", + dest: "/api/page", + }, + { + check: true, + src: "^/api/post$", + dest: "/api/post", + }, + { + check: true, + src: "^/api/name(?:/([^/]+?))$", + dest: "/api/name/[name]?name=$1", + }, + ]); + expect(context.file).toHaveProperty("overrides", { + ssr: { path: "ssr_" }, }); - }, -); + expect(Object.keys(context.file as any).sort()).toEqual(["version", "overrides", "routes"].sort()); + }); +}); diff --git a/examples/demo/tests/03-prerender/fs.test.ts b/examples/demo/tests/03-prerender/fs.test.ts index 82500cd7..1abdaa64 100644 --- a/examples/demo/tests/03-prerender/fs.test.ts +++ b/examples/demo/tests/03-prerender/fs.test.ts @@ -1,17 +1,17 @@ -import { testFs } from '../common/helpers'; -import { describe } from 'vitest'; -import path from 'path'; +import { testFs } from "../common/helpers"; +import { describe } from "vitest"; +import path from "node:path"; -describe('fs', function () { +describe("fs", () => { testFs(path.basename(__dirname), [ - '/config.json', - '/functions/api/name/[name].func/.vc-config.json', - '/functions/api/name/[name].func/index.mjs', - '/functions/api/page.func/index.mjs', - '/functions/api/page.func/.vc-config.json', - '/functions/api/post.func/index.mjs', - '/functions/api/post.func/.vc-config.json', - '/functions/edge.func/index.js', - '/functions/edge.func/.vc-config.json', + "/config.json", + "/functions/api/name/[name].func/.vc-config.json", + "/functions/api/name/[name].func/index.mjs", + "/functions/api/page.func/index.mjs", + "/functions/api/page.func/.vc-config.json", + "/functions/api/post.func/index.mjs", + "/functions/api/post.func/.vc-config.json", + "/functions/edge.func/index.js", + "/functions/edge.func/.vc-config.json", ]); }); diff --git a/examples/demo/tests/03-prerender/globalSetup.ts b/examples/demo/tests/03-prerender/globalSetup.ts index b4ad15e6..85863307 100644 --- a/examples/demo/tests/03-prerender/globalSetup.ts +++ b/examples/demo/tests/03-prerender/globalSetup.ts @@ -1,12 +1,12 @@ -import path from 'path'; -import { setup as _setup } from '../common/setup'; -import { teardown as _teardown } from '../common/teardown'; -import react from '@vitejs/plugin-react-swc'; -import vercel from 'vite-plugin-vercel'; +import path from "node:path"; +import { setup as _setup } from "../common/setup"; +import { teardown as _teardown } from "../common/teardown"; +import react from "@vitejs/plugin-react-swc"; +import vercel from "vite-plugin-vercel"; export const setup = _setup(path.basename(__dirname), { configFile: false, - mode: 'production', + mode: "production", root: process.cwd(), plugins: [ react(), @@ -18,7 +18,7 @@ export const setup = _setup(path.basename(__dirname), { prerender() { return { ssr: { - path: 'ssr_', + path: "ssr_", }, }; }, diff --git a/examples/demo/tests/03-prerender/vc-config.test.ts b/examples/demo/tests/03-prerender/vc-config.test.ts index e1bfe31a..4365ceec 100644 --- a/examples/demo/tests/03-prerender/vc-config.test.ts +++ b/examples/demo/tests/03-prerender/vc-config.test.ts @@ -1,39 +1,32 @@ -import path from 'path'; -import { expect, it } from 'vitest'; -import { vercelOutputVcConfigSchema } from '../../../../packages/vercel/src/schemas/config/vc-config'; -import { prepareTestJsonFilesContent, testSchema } from '../common/helpers'; +import path from "node:path"; +import { expect, it } from "vitest"; +import { vercelOutputVcConfigSchema } from "../../../../packages/vercel/src/schemas/config/vc-config"; +import { prepareTestJsonFilesContent, testSchema } from "../common/helpers"; prepareTestJsonFilesContent( path.basename(__dirname), - [ - '/functions/api/page.func/.vc-config.json', - '/functions/api/post.func/.vc-config.json', - ], + ["/functions/api/page.func/.vc-config.json", "/functions/api/post.func/.vc-config.json"], (context) => { testSchema(context, vercelOutputVcConfigSchema); - it('should have only necessary properties', function () { + it("should have only necessary properties", () => { expect(context.file).toStrictEqual({ - handler: 'index.mjs', - launcherType: 'Nodejs', - runtime: 'nodejs20.x', + handler: "index.mjs", + launcherType: "Nodejs", + runtime: "nodejs20.x", shouldAddHelpers: true, }); }); }, ); -prepareTestJsonFilesContent( - path.basename(__dirname), - ['/functions/edge.func/.vc-config.json'], - (context) => { - testSchema(context, vercelOutputVcConfigSchema); +prepareTestJsonFilesContent(path.basename(__dirname), ["/functions/edge.func/.vc-config.json"], (context) => { + testSchema(context, vercelOutputVcConfigSchema); - it('should have only necessary properties', function () { - expect(context.file).toStrictEqual({ - runtime: 'edge', - entrypoint: 'index.js', - }); + it("should have only necessary properties", () => { + expect(context.file).toStrictEqual({ + runtime: "edge", + entrypoint: "index.js", }); - }, -); + }); +}); diff --git a/examples/demo/tests/03-prerender/vitest.config.ts b/examples/demo/tests/03-prerender/vitest.config.ts index 80f750f9..64a22d33 100644 --- a/examples/demo/tests/03-prerender/vitest.config.ts +++ b/examples/demo/tests/03-prerender/vitest.config.ts @@ -1,8 +1,8 @@ -import { defineConfig } from 'vitest/config'; +import { defineConfig } from "vitest/config"; export default defineConfig({ test: { - globalSetup: 'tests/03-prerender/globalSetup.ts', + globalSetup: "tests/03-prerender/globalSetup.ts", coverage: { enabled: false, }, diff --git a/examples/demo/tests/04-isr/config.test.ts b/examples/demo/tests/04-isr/config.test.ts index 0b2f6ef8..9c725f86 100644 --- a/examples/demo/tests/04-isr/config.test.ts +++ b/examples/demo/tests/04-isr/config.test.ts @@ -1,58 +1,52 @@ -import path from 'path'; -import { expect, it } from 'vitest'; -import { vercelOutputConfigSchema } from '../../../../packages/vercel/src/schemas/config/config'; -import { prepareTestJsonFileContent, testSchema } from '../common/helpers'; +import path from "node:path"; +import { expect, it } from "vitest"; +import { vercelOutputConfigSchema } from "../../../../packages/vercel/src/schemas/config/config"; +import { prepareTestJsonFileContent, testSchema } from "../common/helpers"; -prepareTestJsonFileContent( - path.basename(__dirname), - 'config.json', - (context) => { - testSchema(context, vercelOutputConfigSchema); +prepareTestJsonFileContent(path.basename(__dirname), "config.json", (context) => { + testSchema(context, vercelOutputConfigSchema); - it('should have defaults routes only', function () { - expect(context.file).toHaveProperty('routes', [ - { - src: '^/api/page$', - headers: { 'X-VitePluginVercel-Test': 'test' }, - continue: true, - }, - { - headers: { Location: '/$1' }, - src: '^/(?:(.+)/)?index(?:\\.html)?/?$', - status: 308, - }, - { - headers: { Location: '/$1' }, - src: '^/(.*)\\.html/?$', - status: 308, - }, - { handle: 'filesystem' }, - { - src: '^/edge(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?$', - dest: '/edge/$1', - check: true, - }, - { - check: true, - src: '^/api/page$', - dest: '/api/page', - }, - { - check: true, - src: '^/api/post$', - dest: '/api/post', - }, - { - check: true, - src: '^/api/name(?:/([^/]+?))$', - dest: '/api/name/[name]?name=$1', - }, - { check: true, dest: 'page1/?__original_path=$1', src: '^(/page1)$' }, - ]); - expect(context.file).toHaveProperty('overrides', {}); - expect(Object.keys(context.file as any).sort()).toEqual( - ['version', 'overrides', 'routes'].sort(), - ); - }); - }, -); + it("should have defaults routes only", () => { + expect(context.file).toHaveProperty("routes", [ + { + src: "^/api/page$", + headers: { "X-VitePluginVercel-Test": "test" }, + continue: true, + }, + { + headers: { Location: "/$1" }, + src: "^/(?:(.+)/)?index(?:\\.html)?/?$", + status: 308, + }, + { + headers: { Location: "/$1" }, + src: "^/(.*)\\.html/?$", + status: 308, + }, + { handle: "filesystem" }, + { + src: "^/edge(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?$", + dest: "/edge/$1", + check: true, + }, + { + check: true, + src: "^/api/page$", + dest: "/api/page", + }, + { + check: true, + src: "^/api/post$", + dest: "/api/post", + }, + { + check: true, + src: "^/api/name(?:/([^/]+?))$", + dest: "/api/name/[name]?name=$1", + }, + { check: true, dest: "page1/?__original_path=$1", src: "^(/page1)$" }, + ]); + expect(context.file).toHaveProperty("overrides", {}); + expect(Object.keys(context.file as any).sort()).toEqual(["version", "overrides", "routes"].sort()); + }); +}); diff --git a/examples/demo/tests/04-isr/fs.test.ts b/examples/demo/tests/04-isr/fs.test.ts index 7bb54539..445e9753 100644 --- a/examples/demo/tests/04-isr/fs.test.ts +++ b/examples/demo/tests/04-isr/fs.test.ts @@ -1,20 +1,20 @@ -import { testFs } from '../common/helpers'; -import { describe } from 'vitest'; -import path from 'path'; +import { testFs } from "../common/helpers"; +import { describe } from "vitest"; +import path from "node:path"; -describe('fs', function () { +describe("fs", () => { testFs(path.basename(__dirname), [ - '/config.json', - '/functions/api/name/[name].func/.vc-config.json', - '/functions/api/name/[name].func/index.mjs', - '/functions/api/page.func/index.mjs', - '/functions/api/page.func/.vc-config.json', - '/functions/api/post.func/index.mjs', - '/functions/api/post.func/.vc-config.json', - '/functions/edge.func/index.js', - '/functions/edge.func/.vc-config.json', - '/functions/page1.func/index.mjs', - '/functions/page1.func/.vc-config.json', - '/functions/page1.prerender-config.json', + "/config.json", + "/functions/api/name/[name].func/.vc-config.json", + "/functions/api/name/[name].func/index.mjs", + "/functions/api/page.func/index.mjs", + "/functions/api/page.func/.vc-config.json", + "/functions/api/post.func/index.mjs", + "/functions/api/post.func/.vc-config.json", + "/functions/edge.func/index.js", + "/functions/edge.func/.vc-config.json", + "/functions/page1.func/index.mjs", + "/functions/page1.func/.vc-config.json", + "/functions/page1.prerender-config.json", ]); }); diff --git a/examples/demo/tests/04-isr/globalSetup.ts b/examples/demo/tests/04-isr/globalSetup.ts index e92fa627..47d49676 100644 --- a/examples/demo/tests/04-isr/globalSetup.ts +++ b/examples/demo/tests/04-isr/globalSetup.ts @@ -1,12 +1,12 @@ -import path from 'path'; -import { setup as _setup } from '../common/setup'; -import { teardown as _teardown } from '../common/teardown'; -import react from '@vitejs/plugin-react-swc'; -import vercel from 'vite-plugin-vercel'; +import path from "node:path"; +import { setup as _setup } from "../common/setup"; +import { teardown as _teardown } from "../common/teardown"; +import react from "@vitejs/plugin-react-swc"; +import vercel from "vite-plugin-vercel"; export const setup = _setup(path.basename(__dirname), { configFile: false, - mode: 'production', + mode: "production", root: process.cwd(), plugins: [ react(), @@ -18,8 +18,8 @@ export const setup = _setup(path.basename(__dirname), { isr: { page1: { expiration: 42, - route: '/page1', - symlink: 'api/page', + route: "/page1", + symlink: "api/page", }, }, distContainsOnlyStatic: false, diff --git a/examples/demo/tests/04-isr/prerender.test.ts b/examples/demo/tests/04-isr/prerender.test.ts index efec7ab7..f0e0ecf9 100644 --- a/examples/demo/tests/04-isr/prerender.test.ts +++ b/examples/demo/tests/04-isr/prerender.test.ts @@ -1,19 +1,15 @@ -import path from 'path'; -import { expect, it } from 'vitest'; -import { vercelOutputPrerenderConfigSchema } from '../../../../packages/vercel/src/schemas/config/prerender-config'; -import { prepareTestJsonFileContent, testSchema } from '../common/helpers'; +import path from "node:path"; +import { expect, it } from "vitest"; +import { vercelOutputPrerenderConfigSchema } from "../../../../packages/vercel/src/schemas/config/prerender-config"; +import { prepareTestJsonFileContent, testSchema } from "../common/helpers"; -prepareTestJsonFileContent( - path.basename(__dirname), - '/functions/page1.prerender-config.json', - (context) => { - testSchema(context, vercelOutputPrerenderConfigSchema); +prepareTestJsonFileContent(path.basename(__dirname), "/functions/page1.prerender-config.json", (context) => { + testSchema(context, vercelOutputPrerenderConfigSchema); - it('should have only necessary properties', function () { - expect(Object.keys(context.file as any)).toHaveLength(2); - expect(context.file).toHaveProperty('expiration', 42); - expect(context.file).toHaveProperty('group'); - expect((context.file as any).group).toBeTypeOf('number'); - }); - }, -); + it("should have only necessary properties", () => { + expect(Object.keys(context.file as any)).toHaveLength(2); + expect(context.file).toHaveProperty("expiration", 42); + expect(context.file).toHaveProperty("group"); + expect((context.file as any).group).toBeTypeOf("number"); + }); +}); diff --git a/examples/demo/tests/04-isr/vc-config.test.ts b/examples/demo/tests/04-isr/vc-config.test.ts index c9ba39a3..4123f8a2 100644 --- a/examples/demo/tests/04-isr/vc-config.test.ts +++ b/examples/demo/tests/04-isr/vc-config.test.ts @@ -1,40 +1,36 @@ -import path from 'path'; -import { expect, it } from 'vitest'; -import { vercelOutputVcConfigSchema } from '../../../../packages/vercel/src/schemas/config/vc-config'; -import { prepareTestJsonFilesContent, testSchema } from '../common/helpers'; +import path from "node:path"; +import { expect, it } from "vitest"; +import { vercelOutputVcConfigSchema } from "../../../../packages/vercel/src/schemas/config/vc-config"; +import { prepareTestJsonFilesContent, testSchema } from "../common/helpers"; prepareTestJsonFilesContent( path.basename(__dirname), [ - '/functions/api/page.func/.vc-config.json', - '/functions/api/post.func/.vc-config.json', - '/functions/page1.func/.vc-config.json', + "/functions/api/page.func/.vc-config.json", + "/functions/api/post.func/.vc-config.json", + "/functions/page1.func/.vc-config.json", ], (context) => { testSchema(context, vercelOutputVcConfigSchema); - it('should have only necessary properties', function () { + it("should have only necessary properties", () => { expect(context.file).toStrictEqual({ - handler: 'index.mjs', - launcherType: 'Nodejs', - runtime: 'nodejs20.x', + handler: "index.mjs", + launcherType: "Nodejs", + runtime: "nodejs20.x", shouldAddHelpers: true, }); }); }, ); -prepareTestJsonFilesContent( - path.basename(__dirname), - ['/functions/edge.func/.vc-config.json'], - (context) => { - testSchema(context, vercelOutputVcConfigSchema); +prepareTestJsonFilesContent(path.basename(__dirname), ["/functions/edge.func/.vc-config.json"], (context) => { + testSchema(context, vercelOutputVcConfigSchema); - it('should have only necessary properties', function () { - expect(context.file).toStrictEqual({ - runtime: 'edge', - entrypoint: 'index.js', - }); + it("should have only necessary properties", () => { + expect(context.file).toStrictEqual({ + runtime: "edge", + entrypoint: "index.js", }); - }, -); + }); +}); diff --git a/examples/demo/tests/04-isr/vitest.config.ts b/examples/demo/tests/04-isr/vitest.config.ts index 1d16a46c..c7e17096 100644 --- a/examples/demo/tests/04-isr/vitest.config.ts +++ b/examples/demo/tests/04-isr/vitest.config.ts @@ -1,8 +1,8 @@ -import { defineConfig } from 'vitest/config'; +import { defineConfig } from "vitest/config"; export default defineConfig({ test: { - globalSetup: 'tests/04-isr/globalSetup.ts', + globalSetup: "tests/04-isr/globalSetup.ts", coverage: { enabled: false, }, diff --git a/examples/demo/tests/05-vike/config.test.ts b/examples/demo/tests/05-vike/config.test.ts index 81d599c6..fb724813 100644 --- a/examples/demo/tests/05-vike/config.test.ts +++ b/examples/demo/tests/05-vike/config.test.ts @@ -1,81 +1,75 @@ -import { beforeAll, describe, expect, it } from 'vitest'; -import { vercelOutputConfigSchema } from '../../../../packages/vercel/src/schemas/config/config'; -import { testSchema } from '../common/helpers'; -import { prepareTestJsonFileContent } from './utils'; +import { beforeAll, describe, expect, it } from "vitest"; +import { vercelOutputConfigSchema } from "../../../../packages/vercel/src/schemas/config/config"; +import { testSchema } from "../common/helpers"; +import { prepareTestJsonFileContent } from "./utils"; -prepareTestJsonFileContent('config.json', (context) => { +prepareTestJsonFileContent("config.json", (context) => { testSchema(context, vercelOutputConfigSchema); - it('should have defaults routes only', function () { + it("should have defaults routes only", () => { const expected = [ { - src: '^/api/page$', - headers: { 'X-VitePluginVercel-Test': 'test' }, + src: "^/api/page$", + headers: { "X-VitePluginVercel-Test": "test" }, continue: true, }, { - headers: { Location: '/$1' }, - src: '^/(?:(.+)/)?index(?:\\.html)?/?$', + headers: { Location: "/$1" }, + src: "^/(?:(.+)/)?index(?:\\.html)?/?$", status: 308, }, { - headers: { Location: '/$1' }, - src: '^/(.*)\\.html/?$', + headers: { Location: "/$1" }, + src: "^/(.*)\\.html/?$", status: 308, }, - { handle: 'filesystem' }, + { handle: "filesystem" }, { - src: '^/edge(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?$', - dest: '/edge/$1', + src: "^/edge(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?$", + dest: "/edge/$1", check: true, }, { - src: '^/og-node(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?$', - dest: '/og-node/$1', + src: "^/og-node(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?$", + dest: "/og-node/$1", check: true, }, { - src: '^/og-edge(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?$', - dest: '/og-edge/$1', + src: "^/og-edge(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?$", + dest: "/og-edge/$1", check: true, }, { check: true, - src: '^/api/page$', - dest: '/api/page', + src: "^/api/page$", + dest: "/api/page", }, { check: true, - src: '^/api/post$', - dest: '/api/post', + src: "^/api/post$", + dest: "/api/post", }, { check: true, - src: '^/api/name(?:/([^/]+?))$', - dest: '/api/name/[name]?name=$1', + src: "^/api/name(?:/([^/]+?))$", + dest: "/api/name/[name]?name=$1", }, { check: true, - src: '^(/catch-all/.+?(?:/index\\.pageContext\\.json)?)$', - dest: expect.stringMatching( - '/pages/catch-all-([^/]+?)/\\?__original_path=\\$1', - ), + src: "^(/catch-all/.+?(?:/index\\.pageContext\\.json)?)$", + dest: expect.stringMatching("/pages/catch-all-([^/]+?)/\\?__original_path=\\$1"), }, { check: true, - src: '^(/isr(?:/index\\.pageContext\\.json)?)$', - dest: expect.stringMatching( - '/pages/isr-([^/]+?)/\\?__original_path=\\$1', - ), + src: "^(/isr(?:/index\\.pageContext\\.json)?)$", + dest: expect.stringMatching("/pages/isr-([^/]+?)/\\?__original_path=\\$1"), }, { check: true, - src: '^(/named/[^/]+(?:/index\\.pageContext\\.json)?)$', - dest: expect.stringMatching( - '/pages/named-([^/]+?)/\\?__original_path=\\$1', - ), + src: "^(/named/[^/]+(?:/index\\.pageContext\\.json)?)$", + dest: expect.stringMatching("/pages/named-([^/]+?)/\\?__original_path=\\$1"), }, - { check: true, dest: '/ssr_/?__original_path=$1', src: '^((?!/api).*)$' }, + { check: true, dest: "/ssr_/?__original_path=$1", src: "^((?!/api).*)$" }, ]; expect((context.file as any).routes).toHaveLength(expected.length); @@ -86,30 +80,28 @@ prepareTestJsonFileContent('config.json', (context) => { // '404.html': { // path: '404', // }, - 'catch-all/a/b/c/index.html': { - path: 'catch-all/a/b/c', + "catch-all/a/b/c/index.html": { + path: "catch-all/a/b/c", }, - 'catch-all/a/d/index.html': { - path: 'catch-all/a/d', + "catch-all/a/d/index.html": { + path: "catch-all/a/d", }, - 'function/a/index.html': { - path: 'function/a', + "function/a/index.html": { + path: "function/a", }, - 'index.html': { - path: '', + "index.html": { + path: "", }, - 'named/id-1/index.html': { - path: 'named/id-1', + "named/id-1/index.html": { + path: "named/id-1", }, - 'named/id-2/index.html': { - path: 'named/id-2', + "named/id-2/index.html": { + path: "named/id-2", }, - 'static/index.html': { - path: 'static', + "static/index.html": { + path: "static", }, }); - expect(Object.keys(context.file as any).sort()).toEqual( - ['version', 'overrides', 'routes'].sort(), - ); + expect(Object.keys(context.file as any).sort()).toEqual(["version", "overrides", "routes"].sort()); }); }); diff --git a/examples/demo/tests/05-vike/fs.test.ts b/examples/demo/tests/05-vike/fs.test.ts index f37a067f..577a2bfa 100644 --- a/examples/demo/tests/05-vike/fs.test.ts +++ b/examples/demo/tests/05-vike/fs.test.ts @@ -1,97 +1,92 @@ -import path from 'path'; -import glob from 'fast-glob'; -import { describe, expect, it } from 'vitest'; +import path from "node:path"; +import glob from "fast-glob"; +import { describe, expect, it } from "vitest"; -describe('fs', function () { - const buildManifest = require('../../dist/assets.json'); +describe("fs", () => { + const buildManifest = require("../../dist/assets.json"); const generatedFiles = Array.from( new Set( Object.values(buildManifest) .filter((e: any): e is any => Boolean(e.file)) - .map((e) => [e.file, ...(e.assets ?? []), ...(e.css ?? [])]) - .flat(1) - .filter((f) => f.startsWith('assets/')), + .flatMap((e) => [e.file, ...(e.assets ?? []), ...(e.css ?? [])]) + .filter((f) => f.startsWith("assets/")), ), ); const expected = [ - '/config.json', - '/functions/api/name/[name].func/.vc-config.json', - '/functions/api/name/[name].func/index.mjs', - '/functions/api/page.func/index.mjs', - '/functions/api/page.func/.vc-config.json', - '/functions/api/post.func/index.mjs', - '/functions/api/post.func/.vc-config.json', - '/functions/edge.func/index.js', - '/functions/edge.func/.vc-config.json', - '/functions/og-node.func/index.mjs', - '/functions/og-node.func/.vc-config.json', - '/functions/og-node.func/noto-sans-v27-latin-regular.ttf', - '/functions/og-node.func/Roboto-Regular.ttf', - '/functions/og-node.func/resvg.wasm', - '/functions/og-node.func/yoga.wasm', - '/functions/og-edge.func/index.js', - '/functions/og-edge.func/.vc-config.json', - '/functions/og-edge.func/noto-sans-v27-latin-regular.ttf', - '/functions/og-edge.func/resvg.wasm', - '/functions/og-edge.func/yoga.wasm', + "/config.json", + "/functions/api/name/[name].func/.vc-config.json", + "/functions/api/name/[name].func/index.mjs", + "/functions/api/page.func/index.mjs", + "/functions/api/page.func/.vc-config.json", + "/functions/api/post.func/index.mjs", + "/functions/api/post.func/.vc-config.json", + "/functions/edge.func/index.js", + "/functions/edge.func/.vc-config.json", + "/functions/og-node.func/index.mjs", + "/functions/og-node.func/.vc-config.json", + "/functions/og-node.func/noto-sans-v27-latin-regular.ttf", + "/functions/og-node.func/Roboto-Regular.ttf", + "/functions/og-node.func/resvg.wasm", + "/functions/og-node.func/yoga.wasm", + "/functions/og-edge.func/index.js", + "/functions/og-edge.func/.vc-config.json", + "/functions/og-edge.func/noto-sans-v27-latin-regular.ttf", + "/functions/og-edge.func/resvg.wasm", + "/functions/og-edge.func/yoga.wasm", // ISR + Static pages - '/functions/ssr_.func/index.mjs', - '/functions/ssr_.func/.vc-config.json', - '/static/404.html', - '/static/index.html', - '/static/index.pageContext.json', - '/static/static/index.html', - '/static/static/index.pageContext.json', - '/static/catch-all/a/b/c/index.html', - '/static/catch-all/a/b/c/index.pageContext.json', - '/static/catch-all/a/d/index.html', - '/static/catch-all/a/d/index.pageContext.json', - '/static/function/a/index.html', - '/static/function/a/index.pageContext.json', - '/static/named/id-1/index.html', - '/static/named/id-1/index.pageContext.json', - '/static/named/id-2/index.html', - '/static/named/id-2/index.pageContext.json', - '/static/test.html', - new RegExp('/functions/pages/catch-all-([^/]+?)\\.prerender-config\\.json'), - new RegExp('/functions/pages/catch-all-([^/]+?)\\.func/index\\.mjs'), - new RegExp( - '/functions/pages/catch-all-([^/]+?)\\.func/\\.vc-config\\.json', - ), - new RegExp('/functions/pages/isr-([^/]+?)\\.prerender-config\\.json'), - new RegExp('/functions/pages/isr-([^/]+?)\\.func/index\\.mjs'), - new RegExp('/functions/pages/isr-([^/]+?)\\.func/\\.vc-config\\.json'), - new RegExp('/functions/pages/named-([^/]+?)\\.prerender-config\\.json'), - new RegExp('/functions/pages/named-([^/]+?)\\.func/index\\.mjs'), - new RegExp('/functions/pages/named-([^/]+?)\\.func/\\.vc-config\\.json'), - ...generatedFiles.map((f) => '/static/' + f), + "/functions/ssr_.func/index.mjs", + "/functions/ssr_.func/.vc-config.json", + "/static/404.html", + "/static/index.html", + "/static/index.pageContext.json", + "/static/static/index.html", + "/static/static/index.pageContext.json", + "/static/catch-all/a/b/c/index.html", + "/static/catch-all/a/b/c/index.pageContext.json", + "/static/catch-all/a/d/index.html", + "/static/catch-all/a/d/index.pageContext.json", + "/static/function/a/index.html", + "/static/function/a/index.pageContext.json", + "/static/named/id-1/index.html", + "/static/named/id-1/index.pageContext.json", + "/static/named/id-2/index.html", + "/static/named/id-2/index.pageContext.json", + "/static/test.html", + /\/functions\/pages\/catch-all-([^\/]+?)\.prerender-config\.json/, + /\/functions\/pages\/catch-all-([^\/]+?)\.func\/index\.mjs/, + /\/functions\/pages\/catch-all-([^\/]+?)\.func\/\.vc-config\.json/, + /\/functions\/pages\/isr-([^\/]+?)\.prerender-config\.json/, + /\/functions\/pages\/isr-([^\/]+?)\.func\/index\.mjs/, + /\/functions\/pages\/isr-([^\/]+?)\.func\/\.vc-config\.json/, + /\/functions\/pages\/named-([^\/]+?)\.prerender-config\.json/, + /\/functions\/pages\/named-([^\/]+?)\.func\/index\.mjs/, + /\/functions\/pages\/named-([^\/]+?)\.func\/\.vc-config\.json/, + ...generatedFiles.map((f) => `/static/${f}`), ]; - it(`should generate the right files`, async function () { - const dir = path.join(__dirname, '../../.vercel/output'); - const entries = await glob(dir + '/**', { dot: true }); - let mappedEntries = entries - .map((e) => e.replace(dir, '')) - .filter((e) => !e.startsWith('/_ignore')); + it("should generate the right files", async () => { + const dir = path.join(__dirname, "../../.vercel/output"); + const entries = await glob(`${dir}/**`, { dot: true }); + let mappedEntries = entries.map((e) => e.replace(dir, "")).filter((e) => !e.startsWith("/_ignore")); mappedEntries = Array.from(new Set(mappedEntries)); expect(entries).toHaveLength(expected.length); - mappedEntries.forEach((entry) => { + for (const entry of mappedEntries) { expect(entry).toSatisfy((elt: string) => { for (const exp of expected) { - if (typeof exp === 'string') { + if (typeof exp === "string") { if (exp === elt) return true; } else { const match = elt.match(exp); if (match) return true; } } - console.error('no match found for', elt); + console.error("no match found for", elt); return false; }); - }); + } }); }); diff --git a/examples/demo/tests/05-vike/prerender.test.ts b/examples/demo/tests/05-vike/prerender.test.ts index 1202eaab..470e801f 100644 --- a/examples/demo/tests/05-vike/prerender.test.ts +++ b/examples/demo/tests/05-vike/prerender.test.ts @@ -1,46 +1,37 @@ -import { expect, it } from 'vitest'; -import { vercelOutputPrerenderConfigSchema } from '../../../../packages/vercel/src/schemas/config/prerender-config'; -import { testSchema } from '../common/helpers'; -import { prepareTestJsonFileContent } from './utils'; +import { expect, it } from "vitest"; +import { vercelOutputPrerenderConfigSchema } from "../../../../packages/vercel/src/schemas/config/prerender-config"; +import { testSchema } from "../common/helpers"; +import { prepareTestJsonFileContent } from "./utils"; -prepareTestJsonFileContent( - '/functions/pages/catch-all-*.prerender-config.json', - (context) => { - testSchema(context, vercelOutputPrerenderConfigSchema); +prepareTestJsonFileContent("/functions/pages/catch-all-*.prerender-config.json", (context) => { + testSchema(context, vercelOutputPrerenderConfigSchema); - it('should have only necessary properties', function () { - expect(Object.keys(context.file as any)).toHaveLength(2); - expect(context.file).toHaveProperty('expiration', 15); - expect(context.file).toHaveProperty('group'); - expect((context.file as any).group).toBeTypeOf('number'); - }); - }, -); + it("should have only necessary properties", () => { + expect(Object.keys(context.file as any)).toHaveLength(2); + expect(context.file).toHaveProperty("expiration", 15); + expect(context.file).toHaveProperty("group"); + expect((context.file as any).group).toBeTypeOf("number"); + }); +}); -prepareTestJsonFileContent( - '/functions/pages/isr-*.prerender-config.json', - (context) => { - testSchema(context, vercelOutputPrerenderConfigSchema); +prepareTestJsonFileContent("/functions/pages/isr-*.prerender-config.json", (context) => { + testSchema(context, vercelOutputPrerenderConfigSchema); - it('should have only necessary properties', function () { - expect(Object.keys(context.file as any)).toHaveLength(2); - expect(context.file).toHaveProperty('expiration', 15); - expect(context.file).toHaveProperty('group'); - expect((context.file as any).group).toBeTypeOf('number'); - }); - }, -); + it("should have only necessary properties", () => { + expect(Object.keys(context.file as any)).toHaveLength(2); + expect(context.file).toHaveProperty("expiration", 15); + expect(context.file).toHaveProperty("group"); + expect((context.file as any).group).toBeTypeOf("number"); + }); +}); -prepareTestJsonFileContent( - '/functions/pages/named-*.prerender-config.json', - (context) => { - testSchema(context, vercelOutputPrerenderConfigSchema); +prepareTestJsonFileContent("/functions/pages/named-*.prerender-config.json", (context) => { + testSchema(context, vercelOutputPrerenderConfigSchema); - it('should have only necessary properties', function () { - expect(Object.keys(context.file as any)).toHaveLength(2); - expect(context.file).toHaveProperty('expiration', 25); - expect(context.file).toHaveProperty('group'); - expect((context.file as any).group).toBeTypeOf('number'); - }); - }, -); + it("should have only necessary properties", () => { + expect(Object.keys(context.file as any)).toHaveLength(2); + expect(context.file).toHaveProperty("expiration", 25); + expect(context.file).toHaveProperty("group"); + expect((context.file as any).group).toBeTypeOf("number"); + }); +}); diff --git a/examples/demo/tests/05-vike/utils.ts b/examples/demo/tests/05-vike/utils.ts index 614e0590..e848860d 100644 --- a/examples/demo/tests/05-vike/utils.ts +++ b/examples/demo/tests/05-vike/utils.ts @@ -1,19 +1,16 @@ -import path from 'path'; -import glob from 'fast-glob'; -import fs from 'fs/promises'; -import { beforeAll, describe } from 'vitest'; -import { TestContext } from '../common/helpers'; +import fs from "node:fs/promises"; +import path from "node:path"; +import glob from "fast-glob"; +import { beforeAll, describe } from "vitest"; +import type { TestContext } from "../common/helpers"; -export function prepareTestJsonFileContent( - file: string, - callback: (context: T) => void, -) { +export function prepareTestJsonFileContent(file: string, callback: (context: T) => void) { const context = { file: undefined, } as T; beforeAll(async () => { - const dest = path.join(__dirname, '../../.vercel/output', file); + const dest = path.join(__dirname, "../../.vercel/output", file); const entries = await glob(dest); if (entries.length !== 1) { @@ -21,20 +18,19 @@ export function prepareTestJsonFileContent( } const fileContent = await fs.readFile(entries[0], { - encoding: 'utf-8', + encoding: "utf-8", }); context.file = JSON.parse(fileContent); }); - describe(file, function () { + describe(file, () => { callback(context); }); } -export function prepareTestJsonFilesContent( - files: string[], - callback: (context: T) => void, -) { - files.forEach((f) => prepareTestJsonFileContent(f, callback)); +export function prepareTestJsonFilesContent(files: string[], callback: (context: T) => void) { + for (const f of files) { + prepareTestJsonFileContent(f, callback); + } } diff --git a/examples/demo/tests/05-vike/vc-config.test.ts b/examples/demo/tests/05-vike/vc-config.test.ts index 552a7e02..8cddb2d9 100644 --- a/examples/demo/tests/05-vike/vc-config.test.ts +++ b/examples/demo/tests/05-vike/vc-config.test.ts @@ -1,26 +1,26 @@ -import path from 'path'; -import { expect, it } from 'vitest'; -import { vercelOutputVcConfigSchema } from '../../../../packages/vercel/src/schemas/config/vc-config'; -import { testSchema } from '../common/helpers'; -import { prepareTestJsonFilesContent } from './utils'; +import path from "node:path"; +import { expect, it } from "vitest"; +import { vercelOutputVcConfigSchema } from "../../../../packages/vercel/src/schemas/config/vc-config"; +import { testSchema } from "../common/helpers"; +import { prepareTestJsonFilesContent } from "./utils"; prepareTestJsonFilesContent( [ - '/functions/api/page.func/.vc-config.json', - '/functions/api/post.func/.vc-config.json', - '/functions/ssr_.func/.vc-config.json', - '/functions/pages/catch-all-*.func/.vc-config.json', - '/functions/pages/isr-*.func/.vc-config.json', - '/functions/pages/named-*.func/.vc-config.json', + "/functions/api/page.func/.vc-config.json", + "/functions/api/post.func/.vc-config.json", + "/functions/ssr_.func/.vc-config.json", + "/functions/pages/catch-all-*.func/.vc-config.json", + "/functions/pages/isr-*.func/.vc-config.json", + "/functions/pages/named-*.func/.vc-config.json", ], (context) => { testSchema(context, vercelOutputVcConfigSchema); - it('should have only necessary properties', function () { + it("should have only necessary properties", () => { expect(context.file).toStrictEqual({ - handler: 'index.mjs', - launcherType: 'Nodejs', - runtime: 'nodejs20.x', + handler: "index.mjs", + launcherType: "Nodejs", + runtime: "nodejs20.x", shouldAddHelpers: true, supportsResponseStreaming: true, }); @@ -28,16 +28,13 @@ prepareTestJsonFilesContent( }, ); -prepareTestJsonFilesContent( - ['/functions/edge.func/.vc-config.json'], - (context) => { - testSchema(context, vercelOutputVcConfigSchema); +prepareTestJsonFilesContent(["/functions/edge.func/.vc-config.json"], (context) => { + testSchema(context, vercelOutputVcConfigSchema); - it('should have only necessary properties', function () { - expect(context.file).toStrictEqual({ - runtime: 'edge', - entrypoint: 'index.js', - }); + it("should have only necessary properties", () => { + expect(context.file).toStrictEqual({ + runtime: "edge", + entrypoint: "index.js", }); - }, -); + }); +}); diff --git a/examples/demo/tests/05-vike/vite.config._test_.js b/examples/demo/tests/05-vike/vite.config._test_.js index 98997a95..b97429ce 100644 --- a/examples/demo/tests/05-vike/vite.config._test_.js +++ b/examples/demo/tests/05-vike/vite.config._test_.js @@ -1,9 +1,9 @@ -import react from '@vitejs/plugin-react'; -import ssr from 'vike/plugin'; -import vercel from 'vite-plugin-vercel'; +import react from "@vitejs/plugin-react"; +import ssr from "vike/plugin"; +import vercel from "vite-plugin-vercel"; export default { - mode: 'production', + mode: "production", root: process.cwd(), plugins: [ react(), @@ -18,8 +18,8 @@ export default { rewrites: [], additionalEndpoints: [ { - source: 'endpoints/edge.ts', - destination: `edge`, + source: "endpoints/edge.ts", + destination: "edge", edge: true, addRoute: true, }, diff --git a/examples/demo/tests/05-vike/vitest.config.ts b/examples/demo/tests/05-vike/vitest.config.ts index 90a72895..4b6a7fe7 100644 --- a/examples/demo/tests/05-vike/vitest.config.ts +++ b/examples/demo/tests/05-vike/vitest.config.ts @@ -1,4 +1,4 @@ -import { defineConfig } from 'vitest/config'; +import { defineConfig } from "vitest/config"; export default defineConfig({ test: { diff --git a/examples/demo/tests/common/helpers.ts b/examples/demo/tests/common/helpers.ts index 7f1e7a7e..6aaffea4 100644 --- a/examples/demo/tests/common/helpers.ts +++ b/examples/demo/tests/common/helpers.ts @@ -1,40 +1,33 @@ -import glob from 'fast-glob'; -import fs from 'fs/promises'; -import path from 'path'; -import { beforeAll, describe, expect, it } from 'vitest'; -import { ZodSchema } from 'zod'; -import { getTmpDir } from './utils'; +import fs from "node:fs/promises"; +import path from "node:path"; +import glob from "fast-glob"; +import { beforeAll, describe, expect, it } from "vitest"; +import type { ZodSchema } from "zod"; +import { getTmpDir } from "./utils"; export interface TestContext { file: unknown; } -export function testFs( - dirname: string, - filesOrCallback: Iterable | ((entries: string[]) => void), -) { - it(`should generate the right files`, async function () { +export function testFs(dirname: string, filesOrCallback: Iterable | ((entries: string[]) => void)) { + it("should generate the right files", async () => { const tmpdir = getTmpDir(dirname); - const entries = await glob(tmpdir + '/**', { dot: true }); - let mappedEntries = entries - .map((e) => e.replace(tmpdir, '')) - .filter((e) => !e.startsWith('/_ignore')); + const entries = await glob(`${tmpdir}/**`, { dot: true }); + let mappedEntries = entries.map((e) => e.replace(tmpdir, "")).filter((e) => !e.startsWith("/_ignore")); mappedEntries = Array.from(new Set(mappedEntries)); - if (typeof filesOrCallback === 'function') { + if (typeof filesOrCallback === "function") { filesOrCallback(mappedEntries); } else { - expect(mappedEntries.sort()).toMatchObject( - Array.from(filesOrCallback).sort(), - ); + expect(mappedEntries.sort()).toMatchObject(Array.from(filesOrCallback).sort()); } }); } export function testSchema(context: TestContext, schema: ZodSchema) { - it('should respect schema', function () { - expect(schema.safeParse(context.file)).not.toHaveProperty('error'); + it("should respect schema", () => { + expect(schema.safeParse(context.file)).not.toHaveProperty("error"); }); } @@ -43,7 +36,9 @@ export function prepareTestJsonFilesContent( files: string[], callback: (context: T) => void, ) { - files.forEach((f) => prepareTestJsonFileContent(dirname, f, callback)); + for (const f of files) { + prepareTestJsonFileContent(dirname, f, callback); + } } export function prepareTestJsonFileContent( @@ -64,13 +59,13 @@ export function prepareTestJsonFileContent( } const fileContent = await fs.readFile(entries[0], { - encoding: 'utf-8', + encoding: "utf-8", }); context.file = JSON.parse(fileContent); }); - describe(file, function () { + describe(file, () => { callback(context); }); } diff --git a/examples/demo/tests/common/index2.ts b/examples/demo/tests/common/index2.ts index 024d2edb..68f4b0f9 100644 --- a/examples/demo/tests/common/index2.ts +++ b/examples/demo/tests/common/index2.ts @@ -1,2 +1,2 @@ // SSR entrypoint -console.log('hello'); +console.log("hello"); diff --git a/examples/demo/tests/common/setup.ts b/examples/demo/tests/common/setup.ts index ecc4589b..e4a67be3 100644 --- a/examples/demo/tests/common/setup.ts +++ b/examples/demo/tests/common/setup.ts @@ -1,12 +1,12 @@ -import fs from 'fs/promises'; -import os from 'os'; -import path from 'path'; -import type { InlineConfig } from 'vite'; -import { callBuild } from './utils'; +import fs from "node:fs/promises"; +import os from "node:os"; +import path from "node:path"; +import type { InlineConfig } from "vite"; +import { callBuild } from "./utils"; export function setup(displayName: string, inlineConfig: InlineConfig) { return async () => { - const tmpdir = path.join(os.tmpdir(), 'vpv-demo-' + displayName); + const tmpdir = path.join(os.tmpdir(), `vpv-demo-${displayName}`); await fs.rm(tmpdir, { recursive: true, diff --git a/examples/demo/tests/common/teardown.ts b/examples/demo/tests/common/teardown.ts index 028e7fde..fc9234d3 100644 --- a/examples/demo/tests/common/teardown.ts +++ b/examples/demo/tests/common/teardown.ts @@ -1,10 +1,10 @@ -import path from 'path'; -import os from 'os'; -import fs from 'fs/promises'; +import path from "node:path"; +import os from "node:os"; +import fs from "node:fs/promises"; export function teardown(displayName: string) { return async () => { - const tmpdir = path.join(os.tmpdir(), 'vpv-demo-' + displayName); + const tmpdir = path.join(os.tmpdir(), `vpv-demo-${displayName}`); await fs.rm(tmpdir, { recursive: true, diff --git a/examples/demo/tests/common/utils.ts b/examples/demo/tests/common/utils.ts index 31aaa2f3..aa1ad227 100644 --- a/examples/demo/tests/common/utils.ts +++ b/examples/demo/tests/common/utils.ts @@ -1,12 +1,12 @@ -import os from 'os'; -import path from 'path'; -import { build, InlineConfig } from 'vite'; +import os from "node:os"; +import path from "node:path"; +import { build, type InlineConfig } from "vite"; export function getTmpDir(displayName: string) { - return path.join(os.tmpdir(), 'vpv-demo-' + displayName); + return path.join(os.tmpdir(), `vpv-demo-${displayName}`); } -declare module 'vite' { +declare module "vite" { interface BuildOptions { vitePluginSsr?: { prerender?: @@ -34,8 +34,8 @@ export async function callBuild(dirname: string, config: InlineConfig) { ...config.vercel, additionalEndpoints: [ { - source: 'endpoints/edge.ts', - destination: `edge`, + source: "endpoints/edge.ts", + destination: "edge", addRoute: true, }, ...(config.vercel?.additionalEndpoints ?? []), @@ -47,10 +47,10 @@ export async function callBuild(dirname: string, config: InlineConfig) { ...config.build, rollupOptions: { input: { - 'index.html': 'tests/common/index.html', + "index.html": "tests/common/index.html", }, }, }, - logLevel: 'info', + logLevel: "info", }); } diff --git a/examples/demo/tsconfig.json b/examples/demo/tsconfig.json index 389e5b40..f066f3f3 100644 --- a/examples/demo/tsconfig.json +++ b/examples/demo/tsconfig.json @@ -2,11 +2,11 @@ "compilerOptions": { "strict": true, "module": "ES2022", - "moduleResolution": "Node", + "moduleResolution": "Bundler", "target": "ES2022", "lib": ["DOM", "DOM.Iterable", "ESNext"], "types": ["vite/client"], - "jsx": "react", + "jsx": "react-jsx", "skipLibCheck": true, "esModuleInterop": true } diff --git a/examples/demo/vite.config.ts b/examples/demo/vite.config.ts index 8269e68e..4bb65f86 100644 --- a/examples/demo/vite.config.ts +++ b/examples/demo/vite.config.ts @@ -1,7 +1,7 @@ -import react from '@vitejs/plugin-react-swc'; -import ssr from 'vike/plugin'; -import vercel from 'vite-plugin-vercel'; -import { UserConfig } from 'vite'; +import react from "@vitejs/plugin-react-swc"; +import ssr from "vike/plugin"; +import vercel from "vite-plugin-vercel"; +import type { UserConfig } from "vite"; export default { plugins: [ @@ -15,23 +15,23 @@ export default { expiration: 25, additionalEndpoints: [ { - source: 'endpoints/edge.ts', - destination: `edge`, + source: "endpoints/edge.ts", + destination: "edge", addRoute: true, }, { - source: 'endpoints/og-node.tsx', - destination: `og-node`, + source: "endpoints/og-node.tsx", + destination: "og-node", addRoute: true, }, { - source: 'endpoints/og-edge.tsx', - destination: `og-edge`, + source: "endpoints/og-edge.tsx", + destination: "og-edge", addRoute: true, }, ], }, // We manually add a list of dependencies to be pre-bundled, in order to avoid a page reload at dev start which breaks vike's CI // (The 'react/jsx-runtime' entry is not needed in Vite 3 anymore.) - optimizeDeps: { include: ['cross-fetch', 'react/jsx-runtime'] }, + optimizeDeps: { include: ["cross-fetch", "react/jsx-runtime"] }, } as UserConfig; diff --git a/examples/express/express-entry.ts b/examples/express/express-entry.ts index bebb9b78..7528c1be 100644 --- a/examples/express/express-entry.ts +++ b/examples/express/express-entry.ts @@ -1,69 +1,28 @@ -import { dirname } from 'node:path'; -import { fileURLToPath } from 'node:url'; +import { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; -import { vikeHandler } from './server/vike-handler'; -import { createMiddleware } from '@universal-middleware/express'; -import express from 'express'; +import { createHandler, createMiddleware } from "@universal-middleware/express"; +import express from "express"; +import { vikeHandler } from "./server/vike-handler"; const __filename = globalThis.__filename ?? fileURLToPath(import.meta.url); const __dirname = globalThis.__dirname ?? dirname(__filename); const root = __dirname; -const port = process.env.PORT ? parseInt(process.env.PORT, 10) : 3000; -const hmrPort = process.env.HMR_PORT - ? parseInt(process.env.HMR_PORT, 10) - : 24678; - -interface Middleware< - Context extends Record, -> { - ( - request: Request, - context: Context, - ): Response | void | Promise | Promise; -} - -export function handlerAdapter< - Context extends Record, ->(handler: Middleware) { - return createMiddleware( - async (context) => { - const rawRequest = context.platform.request as unknown as Record< - string, - unknown - >; - rawRequest.context ??= {}; - const response = await handler( - context.request, - rawRequest.context as Context, - ); - - if (!response) { - context.passThrough(); - return new Response('', { - status: 404, - }); - } - - return response; - }, - { - alwaysCallNext: false, - }, - ); -} +const port = process.env.PORT ? Number.parseInt(process.env.PORT, 10) : 3000; +const hmrPort = process.env.HMR_PORT ? Number.parseInt(process.env.HMR_PORT, 10) : 24678; export default await startServer(); async function startServer() { const app = express(); - if (process.env.NODE_ENV === 'production') { + if (process.env.NODE_ENV === "production") { app.use(express.static(`${root}/dist/client`)); } else { // Instantiate Vite's development server and integrate its middleware to our server. - // ⚠️ We should instantiate it *only* in development. (It isn't needed in production + // ! We should instantiate it *only* in development. (It isn't needed in production // and would unnecessarily bloat our server in production.) - const vite = await import('vite'); + const vite = await import("vite"); const viteDevMiddleware = ( await vite.createServer({ root, @@ -74,11 +33,11 @@ async function startServer() { } app.get( - '/hello', - handlerAdapter(() => { - console.log('HELLO'); - return new Response('Hello'); - }), + "/hello", + createMiddleware(() => () => { + console.log("HELLO"); + return new Response("Hello"); + })(), ); /** @@ -86,7 +45,7 @@ async function startServer() { * * @link {@see https://vike.dev} **/ - app.all('*', handlerAdapter(vikeHandler)); + app.all("*", createHandler(() => vikeHandler)()); app.listen(port, () => { console.log(`Server listening on http://localhost:${port}`); diff --git a/examples/express/package.json b/examples/express/package.json index 8314d4d2..1bb60775 100755 --- a/examples/express/package.json +++ b/examples/express/package.json @@ -13,19 +13,19 @@ "author": "", "devDependencies": { "@types/express": "^4.17.21", - "@types/node": "^18.19.31", - "@types/react": "^18.2.79", - "@types/react-dom": "^18.2.25", - "@universal-middleware/express": "^0.0.2", + "@types/node": "^18.19.45", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@universal-middleware/express": "^0.2.1", "@vercel/node": "^3.0.26", - "@vitejs/plugin-react-swc": "^3.6.0", + "@vitejs/plugin-react-swc": "^3.7.0", "express": "^4.19.2", - "react": "^18.2.0", - "tsx": "^4.16.2", + "react": "^18.3.1", + "tsx": "^4.17.0", "typescript": "^5.4.5", - "vike": "^0.4.178", - "vike-react": "^0.4.16", - "vite": "^5.2.9" + "vike": "^0.4.188", + "vike-react": "^0.5.3", + "vite": "^5.4.1" }, "dependencies": { "vite-plugin-vercel": "workspace:*" diff --git a/examples/express/pages/+config.ts b/examples/express/pages/+config.ts index 228e864c..3a2b0a04 100644 --- a/examples/express/pages/+config.ts +++ b/examples/express/pages/+config.ts @@ -1,8 +1,8 @@ -import vikeReact from 'vike-react/config'; -import type { Config } from 'vike/types'; +import vikeReact from "vike-react/config"; +import type { Config } from "vike/types"; // Default config (can be overridden by pages) export default { - title: 'My Vike App', + title: "My Vike App", extends: vikeReact, } satisfies Config; diff --git a/examples/express/pages/index/+Page.tsx b/examples/express/pages/index/+Page.tsx index ce09e2eb..a5b5d778 100644 --- a/examples/express/pages/index/+Page.tsx +++ b/examples/express/pages/index/+Page.tsx @@ -1,5 +1,5 @@ -import React from 'react'; -import { Counter } from './Counter.js'; +import React from "react"; +import { Counter } from "./Counter.js"; export default function Page() { return ( diff --git a/examples/express/pages/index/Counter.tsx b/examples/express/pages/index/Counter.tsx index 46393a1e..9245aaca 100644 --- a/examples/express/pages/index/Counter.tsx +++ b/examples/express/pages/index/Counter.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React, { useState } from "react"; export { Counter }; diff --git a/examples/express/server/vike-handler.ts b/examples/express/server/vike-handler.ts index 3153f9ba..60d71aae 100644 --- a/examples/express/server/vike-handler.ts +++ b/examples/express/server/vike-handler.ts @@ -1,9 +1,10 @@ /// -import { renderPage } from 'vike/server'; +import { renderPage } from "vike/server"; -export async function vikeHandler< - Context extends Record, ->(request: Request, context?: Context): Promise { +export async function vikeHandler>( + request: Request, + context?: Context, +): Promise { const pageContextInit = { ...context, urlOriginal: request.url }; const pageContext = await renderPage(pageContextInit); const response = pageContext.httpResponse; diff --git a/examples/express/tsconfig.json b/examples/express/tsconfig.json index d0c4a18a..1708c8c3 100755 --- a/examples/express/tsconfig.json +++ b/examples/express/tsconfig.json @@ -8,10 +8,10 @@ "sourceMap": true, "module": "ESNext", "noEmit": true, - "moduleResolution": "node", + "moduleResolution": "Bundler", "target": "ES2022", "lib": ["DOM", "DOM.Iterable", "ESNext"], "types": ["vite/client"], - "jsx": "react" + "jsx": "react-jsx" } } diff --git a/examples/express/vite.config.ts b/examples/express/vite.config.ts index 00702e47..ab323dbf 100755 --- a/examples/express/vite.config.ts +++ b/examples/express/vite.config.ts @@ -1,28 +1,27 @@ -import { defineConfig } from 'vite'; -import react from '@vitejs/plugin-react-swc'; +import react from "@vitejs/plugin-react-swc"; +import vike from "vike/plugin"; +import type { UserConfig } from "vite"; +import vercel from "vite-plugin-vercel"; -import vike from 'vike/plugin'; -import vercel from 'vite-plugin-vercel'; - -export default defineConfig({ +export default { plugins: [ react(), vike(), vercel({ // You usually want the server to handle all routes - source: '/.*', + source: "/.*", }), ], vercel: { additionalEndpoints: [ { // entry file to the server. Default export must be a node server or a function - source: 'express-entry.ts', + source: "express-entry.ts", // replaces default Vike target - destination: 'ssr_', + destination: "ssr_", // already added by default Vike route addRoute: false, }, ], }, -}); +} as UserConfig; diff --git a/examples/simple/_api/edge.ts b/examples/simple/_api/edge.ts index 3c838045..5d7ad85d 100644 --- a/examples/simple/_api/edge.ts +++ b/examples/simple/_api/edge.ts @@ -1,10 +1,7 @@ -import type { VercelRequest, VercelResponse } from '@vercel/node'; +import type { VercelRequest, VercelResponse } from "@vercel/node"; export const edge = true; -export default async function handler( - request: VercelRequest, - response: VercelResponse, -) { - return response.send('OK'); +export default async function handler(request: VercelRequest, response: VercelResponse) { + return response.send("OK"); } diff --git a/examples/simple/_api/endpoint.ts b/examples/simple/_api/endpoint.ts index 0c55a5eb..304aa326 100644 --- a/examples/simple/_api/endpoint.ts +++ b/examples/simple/_api/endpoint.ts @@ -1,8 +1,5 @@ -import type { VercelRequest, VercelResponse } from '@vercel/node'; +import type { VercelRequest, VercelResponse } from "@vercel/node"; -export default async function handler( - request: VercelRequest, - response: VercelResponse, -) { - return response.send('OK'); +export default async function handler(request: VercelRequest, response: VercelResponse) { + return response.send("OK"); } diff --git a/examples/simple/_api/headers.ts b/examples/simple/_api/headers.ts index b1c55074..e22ba5e7 100644 --- a/examples/simple/_api/headers.ts +++ b/examples/simple/_api/headers.ts @@ -1,10 +1,7 @@ -import type { VercelRequest, VercelResponse } from '@vercel/node'; +import type { VercelRequest, VercelResponse } from "@vercel/node"; -export const headers = { 'X-VitePluginVercel-Test': 'test' }; +export const headers = { "X-VitePluginVercel-Test": "test" }; -export default async function handler( - request: VercelRequest, - response: VercelResponse, -) { - return response.send('OK'); +export default async function handler(request: VercelRequest, response: VercelResponse) { + return response.send("OK"); } diff --git a/examples/simple/_api/isr.ts b/examples/simple/_api/isr.ts index c37999f6..374e2a8b 100644 --- a/examples/simple/_api/isr.ts +++ b/examples/simple/_api/isr.ts @@ -1,10 +1,7 @@ -import type { VercelRequest, VercelResponse } from '@vercel/node'; +import type { VercelRequest, VercelResponse } from "@vercel/node"; export const isr = { expiration: 10 }; -export default async function handler( - request: VercelRequest, - response: VercelResponse, -) { - return response.send('OK'); +export default async function handler(request: VercelRequest, response: VercelResponse) { + return response.send("OK"); } diff --git a/examples/simple/package.json b/examples/simple/package.json index 66892aa4..59197005 100644 --- a/examples/simple/package.json +++ b/examples/simple/package.json @@ -11,10 +11,10 @@ "keywords": [], "author": "", "devDependencies": { - "@types/node": "^18.19.31", + "@types/node": "^18.19.45", "@vercel/node": "^3.0.26", "typescript": "^5.4.5", - "vite": "^5.2.9" + "vite": "^5.4.1" }, "dependencies": { "vite-plugin-vercel": "workspace:*" diff --git a/examples/simple/tsconfig.json b/examples/simple/tsconfig.json index 84050321..e0c6c91d 100644 --- a/examples/simple/tsconfig.json +++ b/examples/simple/tsconfig.json @@ -10,7 +10,7 @@ "sourceMap": true, "module": "ESNext", "noEmit": true, - "moduleResolution": "node", + "moduleResolution": "Bundler", "target": "ES2022", "lib": ["DOM", "DOM.Iterable", "ESNext"], "types": ["vite/client"] diff --git a/examples/simple/vite.config.ts b/examples/simple/vite.config.ts index 495ef020..af315856 100644 --- a/examples/simple/vite.config.ts +++ b/examples/simple/vite.config.ts @@ -1,5 +1,5 @@ -import { defineConfig } from 'vite'; -import vercel from 'vite-plugin-vercel'; +import { defineConfig } from "vite"; +import vercel from "vite-plugin-vercel"; export default defineConfig({ plugins: [ diff --git a/lint-staged.config.js b/lint-staged.config.js deleted file mode 100644 index 042a328d..00000000 --- a/lint-staged.config.js +++ /dev/null @@ -1,3 +0,0 @@ -export default { - '*': 'prettier --ignore-unknown --write', -}; diff --git a/package.json b/package.json index 53c24842..bb6220aa 100644 --- a/package.json +++ b/package.json @@ -10,20 +10,18 @@ "build:all": "pnpm -r --filter \"./packages/vercel\" build && pnpm -r --filter \"./packages/vike-integration\" build && pnpm -r --filter \"./examples/*\" build", "build:demo": "pnpm run build:all && cp -rf examples/demo/public examples/demo/.vercel .", "typecheck:all": "pnpm -r typecheck", - "prepare": "husky", - "precommit": "lint-staged", "test": "pnpm run build:all && pnpm run -r test", + "format": "biome format --write .", + "lint": "biome lint .", "prepublishOnly": "pnpm run test && changeset version", "publish:beta": "changeset pre enter beta && pnpm run prepublishOnly && changeset publish -r --tag beta && changeset pre exit", "publish:stable": "pnpm run prepublishOnly && changeset publish -r" }, "devDependencies": { + "@biomejs/biome": "^1.8.3", "@changesets/cli": "^2.27.7", - "@types/node": "^18.19.31", + "@types/node": "^18.19.45", "cross-env": "^7.0.3", - "husky": "^9.1.4", - "lint-staged": "^15.2.8", - "prettier": "^3.3.3", "typescript": "^5.5.4" } } diff --git a/packages/vercel/.eslintrc.cjs b/packages/vercel/.eslintrc.cjs deleted file mode 100644 index 1f60a507..00000000 --- a/packages/vercel/.eslintrc.cjs +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - root: true, - parser: '@typescript-eslint/parser', - plugins: ['@typescript-eslint'], - extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended'], - ignorePatterns: ['dist'], -}; diff --git a/packages/vercel/index.d.ts b/packages/vercel/index.d.ts index 928c790d..f637e50a 100644 --- a/packages/vercel/index.d.ts +++ b/packages/vercel/index.d.ts @@ -1,9 +1,9 @@ -import { ViteVercelConfig } from './dist'; +import type { ViteVercelConfig } from "./dist"; -export * from './dist'; -export { default } from './dist'; +export * from "./dist"; +export { default } from "./dist"; -declare module 'vite' { +declare module "vite" { export interface UserConfig { vercel?: ViteVercelConfig; } diff --git a/packages/vercel/lint-staged.config.js b/packages/vercel/lint-staged.config.js deleted file mode 100644 index 58de9fd4..00000000 --- a/packages/vercel/lint-staged.config.js +++ /dev/null @@ -1,7 +0,0 @@ -export default { - '**/*.ts?(x)': [ - () => 'tsc -p tsconfig.json --noEmit', - 'eslint --max-warnings 0 --ignore-pattern dist', - ], - '*': 'prettier --ignore-unknown --write', -}; diff --git a/packages/vercel/package.json b/packages/vercel/package.json index 9ea415cd..79ae18ea 100644 --- a/packages/vercel/package.json +++ b/packages/vercel/package.json @@ -11,7 +11,8 @@ "exports": { ".": { "import": "./dist/index.js", - "require": "./dist/index.cjs" + "require": "./dist/index.cjs", + "types": "./index.d.ts" }, "./types": { "types": "./index.d.ts" @@ -26,8 +27,7 @@ "build": "tsup", "dev": "tsup --watch", "prepack": "rm -rf dist && pnpm build", - "typecheck": "tsc -p tsconfig.json --noEmit", - "lint:ts": "eslint . --max-warnings 0 --ignore-pattern dist" + "typecheck": "tsc -p tsconfig.json --noEmit" }, "peerDependencies": { "@vite-plugin-vercel/vike": "workspace:*", @@ -43,23 +43,20 @@ } }, "devDependencies": { - "@types/node": "^18.19.31", - "@typescript-eslint/eslint-plugin": "^7.18.0", - "@typescript-eslint/parser": "^7.18.0", + "@types/node": "^18.19.45", "@vite-plugin-vercel/vike": "workspace:*", - "eslint": "^8.57.0", "tsup": "^8.2.4", "typescript": "^5.5.4", - "vike": "^0.4.183", - "vite": "^5.4.0" + "vike": "^0.4.188", + "vite": "^5.4.1" }, "dependencies": { "@brillout/libassert": "^0.5.8", - "@manypkg/find-root": "^2.2.2", + "@manypkg/find-root": "^2.2.3", "@vercel/build-utils": "^8.3.6", "@vercel/nft": "^0.27.3", "@vercel/routing-utils": "^3.1.0", - "esbuild": "^0.23.0", + "esbuild": "^0.23.1", "fast-glob": "^3.3.2", "magicast": "^0.3.4", "zod": "^3.23.8" diff --git a/packages/vercel/src/assert.ts b/packages/vercel/src/assert.ts index 252153dc..14f8cf45 100644 --- a/packages/vercel/src/assert.ts +++ b/packages/vercel/src/assert.ts @@ -1,11 +1,9 @@ -import { newError } from '@brillout/libassert'; +// @ts-ignore +import { newError } from "@brillout/libassert"; -const libName = 'vite-plugin-vercel'; +const libName = "vite-plugin-vercel"; -export function assert( - condition: unknown, - errorMessage: string, -): asserts condition { +export function assert(condition: unknown, errorMessage: string): asserts condition { if (condition) { return; } diff --git a/packages/vercel/src/build.ts b/packages/vercel/src/build.ts index 42de2fba..79fb992d 100644 --- a/packages/vercel/src/build.ts +++ b/packages/vercel/src/build.ts @@ -1,56 +1,50 @@ -import { ResolvedConfig } from 'vite'; -import glob from 'fast-glob'; -import { builtinModules } from 'module' -import path, { basename } from 'path'; -import { getOutput, getRoot, pathRelativeTo } from './utils'; -import { build, BuildOptions, type Plugin } from 'esbuild'; -import { VercelOutputIsr, ViteVercelApiEntry } from './types'; -import { assert } from './assert'; -import { vercelOutputVcConfigSchema } from './schemas/config/vc-config'; -import fs, { copyFile } from 'fs/promises'; -import type { Header, Rewrite } from '@vercel/routing-utils'; -import { vercelEndpointExports } from './schemas/exports'; -import { generateCode, loadFile, type ASTNode } from 'magicast'; -import { getNodeVersion } from '@vercel/build-utils'; -import { nodeFileTrace } from '@vercel/nft'; -import { findRoot } from '@manypkg/find-root'; +import fs, { copyFile } from "node:fs/promises"; +import { builtinModules } from "node:module"; +import path, { basename } from "node:path"; +import { findRoot } from "@manypkg/find-root"; +import { getNodeVersion } from "@vercel/build-utils"; +import { nodeFileTrace } from "@vercel/nft"; +import type { Header, Rewrite } from "@vercel/routing-utils"; +import { type BuildOptions, type Plugin, build } from "esbuild"; +import glob from "fast-glob"; +import { type ASTNode, generateCode, loadFile } from "magicast"; +import type { ResolvedConfig } from "vite"; +import { assert } from "./assert"; +import { vercelOutputVcConfigSchema } from "./schemas/config/vc-config"; +import { vercelEndpointExports } from "./schemas/exports"; +import type { VercelOutputIsr, ViteVercelApiEntry } from "./types"; +import { getOutput, getRoot, pathRelativeTo } from "./utils"; export function getAdditionalEndpoints(resolvedConfig: ResolvedConfig) { return (resolvedConfig.vercel?.additionalEndpoints ?? []).map((e) => ({ ...e, addRoute: e.addRoute ?? true, // path.resolve removes the trailing slash if any - destination: path.posix.resolve('/', e.destination) + '.func', + destination: `${path.posix.resolve("/", e.destination)}.func`, })); } -export function getEntries( - resolvedConfig: ResolvedConfig, -): ViteVercelApiEntry[] { +export function getEntries(resolvedConfig: ResolvedConfig): ViteVercelApiEntry[] { const apiEntries = glob .sync(`${getRoot(resolvedConfig)}/api/**/*.*([a-zA-Z0-9])`) // from Vercel doc: Files with the underscore prefix are not turned into Serverless Functions. - .filter((filepath) => !path.basename(filepath).startsWith('_')); + .filter((filepath) => !path.basename(filepath).startsWith("_")); if (apiEntries.length > 0) { console.warn( - '@vercel/build is currently force building /api files itself, with no way to disable it. ' + - 'In order to avoid double compilation, you should temporarily rename /api to /_api while using this plugin. ' + - '/_api functions are compiled under .vercel/output/functions/api/*.func as if they were in /api.', + "@vercel/build is currently force building /api files itself, with no way to disable it. " + + "In order to avoid double compilation, you should temporarily rename /api to /_api while using this plugin. " + + "/_api functions are compiled under .vercel/output/functions/api/*.func as if they were in /api.", ); } const otherApiEntries = glob .sync(`${getRoot(resolvedConfig)}/_api/**/*.*([a-zA-Z0-9])`) // from Vercel doc: Files with the underscore prefix are not turned into Serverless Functions. - .filter((filepath) => !path.basename(filepath).startsWith('_')); + .filter((filepath) => !path.basename(filepath).startsWith("_")); return [...apiEntries, ...otherApiEntries].reduce((entryPoints, filePath) => { - const outFilePath = pathRelativeTo( - filePath, - resolvedConfig, - filePath.includes('/_api/') ? '_api' : 'api', - ); + const outFilePath = pathRelativeTo(filePath, resolvedConfig, filePath.includes("/_api/") ? "_api" : "api"); const parsed = path.posix.parse(outFilePath); entryPoints.push({ @@ -64,11 +58,11 @@ export function getEntries( } const edgeWasmPlugin: Plugin = { - name: 'edge-wasm-vercel', + name: "edge-wasm-vercel", setup(build) { build.onResolve({ filter: /\.wasm/ }, (args) => { return { - path: args.path.replace(/\.wasm\?module$/i, '.wasm'), + path: args.path.replace(/\.wasm\?module$/i, ".wasm"), external: true, }; }); @@ -77,7 +71,7 @@ const edgeWasmPlugin: Plugin = { const vercelOgPlugin = (ctx: { found: boolean; index: string }): Plugin => { return { - name: 'vercel-og', + name: "vercel-og", setup(build) { build.onResolve({ filter: /@vercel\/og/ }, () => { ctx.found = true; @@ -94,32 +88,26 @@ const vercelOgPlugin = (ctx: { found: boolean; index: string }): Plugin => { const standardBuildOptions: BuildOptions = { bundle: true, - target: 'es2022', - format: 'esm', - platform: 'node', - logLevel: 'info', + target: "es2022", + format: "esm", + platform: "node", + logLevel: "info", logOverride: { - 'ignored-bare-import': 'verbose', - 'require-resolve-not-external': 'verbose', + "ignored-bare-import": "verbose", + "require-resolve-not-external": "verbose", }, minify: false, plugins: [], define: { - 'process.env.NODE_ENV': '"production"', - 'import.meta.env.NODE_ENV': '"production"', + "process.env.NODE_ENV": '"production"', + "import.meta.env.NODE_ENV": '"production"', }, }; -export async function buildFn( - resolvedConfig: ResolvedConfig, - entry: ViteVercelApiEntry, - buildOptions?: BuildOptions, -) { +export async function buildFn(resolvedConfig: ResolvedConfig, entry: ViteVercelApiEntry, buildOptions?: BuildOptions) { assert( entry.destination.length > 0, - `Endpoint ${ - typeof entry.source === 'string' ? entry.source : '-' - } does not have build destination`, + `Endpoint ${typeof entry.source === "string" ? entry.source : "-"} does not have build destination`, ); const options = Object.assign({}, standardBuildOptions); @@ -128,46 +116,28 @@ export async function buildFn( Object.assign(options, buildOptions); } - const filename = - entry.edge || options.format === 'cjs' ? 'index.js' : 'index.mjs'; - const outfile = path.join( - getOutput(resolvedConfig, 'functions'), - entry.destination, - filename, - ); + const filename = entry.edge || options.format === "cjs" ? "index.js" : "index.mjs"; + const outfile = path.join(getOutput(resolvedConfig, "functions"), entry.destination, filename); Object.assign(options, { outfile }); if (!options.stdin) { - if (typeof entry.source === 'string') { + if (typeof entry.source === "string") { options.entryPoints = [entry.source]; } else { - assert( - typeof entry.source === 'object', - `\`{ source }\` must be a string or an object`, - ); - assert( - typeof entry.source.contents === 'string', - `\`{ contents }\` must be a string`, - ); + assert(typeof entry.source === "object", "`{ source }` must be a string or an object"); + assert(typeof entry.source.contents === "string", "`{ contents }` must be a string"); options.stdin = entry.source; } } if (entry.edge) { - delete options.platform; - options.external = [...builtinModules, ...builtinModules.map((m) => `node:${m}`)] - options.conditions = [ - 'edge-light', - 'worker', - 'browser', - 'module', - 'import', - 'require', - ]; + options.platform = undefined; + options.external = [...builtinModules, ...builtinModules.map((m) => `node:${m}`)]; + options.conditions = ["edge-light", "worker", "browser", "module", "import", "require"]; options.plugins?.push(edgeWasmPlugin); - options.format = 'esm'; - } else if (options.format === 'esm') { + options.format = "esm"; + } else if (options.format === "esm") { options.banner = { js: `import { createRequire as VPV_createRequire } from "node:module"; import { fileURLToPath as VPV_fileURLToPath } from "node:url"; @@ -179,13 +149,13 @@ const __dirname = VPV_dirname(__filename); }; } - const ctx = { found: false, index: '' }; - options.plugins!.push(vercelOgPlugin(ctx)); + const ctx = { found: false, index: "" }; + options.plugins?.push(vercelOgPlugin(ctx)); const output = await build(options); // guess some assets dependencies - if (typeof entry.source == 'string') { + if (typeof entry.source === "string") { let base = resolvedConfig.root; try { const dir = await findRoot(resolvedConfig.root); @@ -198,13 +168,13 @@ const __dirname = VPV_dirname(__filename); processCwd: resolvedConfig.root, mixedModules: true, ignore: [ - '**/node_modules/react{,-dom,-dom-server-turbopack}/**/*.development.js', - '**/*.d.ts', - '**/*.map', - '**/node_modules/webpack5/**/*', + "**/node_modules/react{,-dom,-dom-server-turbopack}/**/*.development.js", + "**/*.d.ts", + "**/*.map", + "**/node_modules/webpack5/**/*", ], async readFile(filepath) { - if (filepath.endsWith('.ts') || filepath.endsWith('.tsx')) { + if (filepath.endsWith(".ts") || filepath.endsWith(".tsx")) { const result = await build({ ...standardBuildOptions, entryPoints: [entry.source as string], @@ -215,26 +185,22 @@ const __dirname = VPV_dirname(__filename); return result.outputFiles[0].text; } - return fs.readFile(filepath, 'utf-8'); + return fs.readFile(filepath, "utf-8"); }, }); for (const file of fileList) { if ( reasons.has(file) && - reasons.get(file)!.type.includes('asset') && - !file.endsWith('.js') && - !file.endsWith('.cjs') && - !file.endsWith('.mjs') && - !file.endsWith('package.json') + reasons.get(file)?.type.includes("asset") && + !file.endsWith(".js") && + !file.endsWith(".cjs") && + !file.endsWith(".mjs") && + !file.endsWith("package.json") ) { await copyFile( path.join(base, file), - path.join( - getOutput(resolvedConfig, 'functions'), - entry.destination, - basename(file), - ), + path.join(getOutput(resolvedConfig, "functions"), entry.destination, basename(file)), ); } } @@ -257,11 +223,7 @@ export async function writeVcConfig( streaming?: boolean; }, ): Promise { - const vcConfig = path.join( - getOutput(resolvedConfig, 'functions'), - destination, - '.vc-config.json', - ); + const vcConfig = path.join(getOutput(resolvedConfig, "functions"), destination, ".vc-config.json"); const nodeVersion = await getNodeVersion(getOutput(resolvedConfig)); @@ -271,40 +233,38 @@ export async function writeVcConfig( vercelOutputVcConfigSchema.parse( options.edge ? { - runtime: 'edge', + runtime: "edge", entrypoint: filename, } : { runtime: nodeVersion.runtime, handler: filename, maxDuration: resolvedConfig.vercel?.defaultMaxDuration, - launcherType: 'Nodejs', + launcherType: "Nodejs", shouldAddHelpers: true, - supportsResponseStreaming: - options.streaming ?? - resolvedConfig.vercel?.defaultSupportsResponseStreaming, + supportsResponseStreaming: options.streaming ?? resolvedConfig.vercel?.defaultSupportsResponseStreaming, }, ), undefined, 2, ), - 'utf-8', + "utf-8", ); } function getSourceAndDestination(destination: string) { - if (destination.startsWith('api/')) { - return path.posix.resolve('/', destination); + if (destination.startsWith("api/")) { + return path.posix.resolve("/", destination); } - return path.posix.resolve('/', destination, ':match*'); + return path.posix.resolve("/", destination, ":match*"); } const RE_BRACKETS = /^\[([^/]+)\]$/gm; function replaceBrackets(source: string) { return source - .split('/') - .map((segment) => segment.replace(RE_BRACKETS, ':$1')) - .join('/'); + .split("/") + .map((segment) => segment.replace(RE_BRACKETS, ":$1")) + .join("/"); } function isPrimitive(test: unknown) { @@ -349,7 +309,7 @@ export async function buildEndpoints(resolvedConfig: ResolvedConfig): Promise<{ const entries = getEntries(resolvedConfig); for (const entry of entries) { - if (typeof entry.source === 'string') { + if (typeof entry.source === "string") { const exports = await extractExports(entry.source); if (exports) { @@ -380,7 +340,7 @@ export async function buildEndpoints(resolvedConfig: ResolvedConfig): Promise<{ entry.isr = exports.isr; } - if (typeof exports.streaming === 'boolean') { + if (typeof exports.streaming === "boolean") { entry.streaming = exports.streaming; } } @@ -391,28 +351,22 @@ export async function buildEndpoints(resolvedConfig: ResolvedConfig): Promise<{ const isrEntries = entries .filter((e) => e.isr) - .map( - (e) => - [ - e.destination.replace(/\.func$/, ''), - { expiration: e.isr!.expiration }, - ] as const, - ); + .map((e) => [e.destination.replace(/\.func$/, ""), { expiration: e.isr?.expiration }] as const); return { rewrites: entries .filter((e) => e.addRoute !== false) - .map((e) => e.destination.replace(/\.func$/, '')) + .map((e) => e.destination.replace(/\.func$/, "")) .map((destination) => ({ source: replaceBrackets(getSourceAndDestination(destination)), destination: getSourceAndDestination(destination), })), - isr: Object.fromEntries(isrEntries), + isr: Object.fromEntries(isrEntries) as Record, headers: entries .filter((e) => e.headers) .map((e) => ({ - source: '/' + e.destination.replace(/\.func$/, ''), - headers: Object.entries(e.headers!).map(([key, value]) => ({ + source: `/${e.destination.replace(/\.func$/, "")}`, + headers: Object.entries(e.headers ?? {}).map(([key, value]) => ({ key, value, })), diff --git a/packages/vercel/src/config.ts b/packages/vercel/src/config.ts index 6f72d3c2..ea154fad 100644 --- a/packages/vercel/src/config.ts +++ b/packages/vercel/src/config.ts @@ -1,33 +1,30 @@ -import { ResolvedConfig } from 'vite'; -import path from 'path'; -import { getOutput } from './utils'; -import { - VercelOutputConfig, - vercelOutputConfigSchema, -} from './schemas/config/config'; -import fs from 'fs/promises'; +import type { ResolvedConfig } from "vite"; +import path from "node:path"; +import { getOutput } from "./utils"; +import { type VercelOutputConfig, vercelOutputConfigSchema } from "./schemas/config/config"; +import fs from "node:fs/promises"; import { getTransformedRoutes, - Header, + type Header, mergeRoutes, normalizeRoutes, - Rewrite, - Route, -} from '@vercel/routing-utils'; -import { ViteVercelRewrite } from './types'; + type Rewrite, + type Route, +} from "@vercel/routing-utils"; +import type { ViteVercelRewrite } from "./types"; -function reorderEnforce(arr: T[]) { +function reorderEnforce(arr: T[]) { return [ - ...arr.filter((r) => r.enforce === 'pre'), + ...arr.filter((r) => r.enforce === "pre"), ...arr.filter((r) => !r.enforce), - ...arr.filter((r) => r.enforce === 'post'), + ...arr.filter((r) => r.enforce === "post"), ]; } export function getConfig( resolvedConfig: ResolvedConfig, rewrites?: ViteVercelRewrite[], - overrides?: VercelOutputConfig['overrides'], + overrides?: VercelOutputConfig["overrides"], headers?: Header[], ): VercelOutputConfig { const _rewrites: ViteVercelRewrite[] = [ @@ -40,9 +37,7 @@ export function getConfig( cleanUrls: resolvedConfig.vercel?.cleanUrls ?? true, trailingSlash: resolvedConfig.vercel?.trailingSlash, rewrites: reorderEnforce(_rewrites), - redirects: resolvedConfig.vercel?.redirects - ? reorderEnforce(resolvedConfig.vercel?.redirects) - : undefined, + redirects: resolvedConfig.vercel?.redirects ? reorderEnforce(resolvedConfig.vercel?.redirects) : undefined, headers, }); @@ -53,14 +48,12 @@ export function getConfig( if ( resolvedConfig.vercel?.config?.routes && resolvedConfig.vercel.config.routes.length > 0 && - !resolvedConfig.vercel.config.routes.every( - (r) => 'continue' in r && r.continue, - ) + !resolvedConfig.vercel.config.routes.every((r) => "continue" in r && r.continue) ) { console.warn( 'Did you forget to add `"continue": true` to your routes? See https://vercel.com/docs/build-output-api/v3/configuration#source-route\n' + - 'If not, it is discouraged to use `vercel.config.routes` to override routes. ' + - 'Prefer using `vercel.rewrites` and `vercel.redirects`.', + "If not, it is discouraged to use `vercel.config.routes` to override routes. " + + "Prefer using `vercel.rewrites` and `vercel.redirects`.", ); } @@ -91,8 +84,8 @@ export function getConfig( userRoutes, builds: [ { - use: '@vercel/node', - entrypoint: 'index.js', + use: "@vercel/node", + entrypoint: "index.js", routes: buildRoutes, }, ], @@ -110,22 +103,18 @@ export function getConfig( } export function getConfigDestination(resolvedConfig: ResolvedConfig) { - return path.join(getOutput(resolvedConfig), 'config.json'); + return path.join(getOutput(resolvedConfig), "config.json"); } export async function writeConfig( resolvedConfig: ResolvedConfig, rewrites?: Rewrite[], - overrides?: VercelOutputConfig['overrides'], + overrides?: VercelOutputConfig["overrides"], headers?: Header[], ): Promise { await fs.writeFile( getConfigDestination(resolvedConfig), - JSON.stringify( - getConfig(resolvedConfig, rewrites, overrides, headers), - undefined, - 2, - ), - 'utf-8', + JSON.stringify(getConfig(resolvedConfig, rewrites, overrides, headers), undefined, 2), + "utf-8", ); } diff --git a/packages/vercel/src/helpers.ts b/packages/vercel/src/helpers.ts index 6d33c1e7..31c8bad6 100644 --- a/packages/vercel/src/helpers.ts +++ b/packages/vercel/src/helpers.ts @@ -1,5 +1,5 @@ -import fs from 'fs/promises'; -import path from 'path'; +import fs from "node:fs/promises"; +import path from "node:path"; export async function copyDir(src: string, dest: string) { await fs.mkdir(dest, { recursive: true }); @@ -9,8 +9,6 @@ export async function copyDir(src: string, dest: string) { const srcPath = path.join(src, entry.name); const destPath = path.join(dest, entry.name); - entry.isDirectory() - ? await copyDir(srcPath, destPath) - : await fs.copyFile(srcPath, destPath); + entry.isDirectory() ? await copyDir(srcPath, destPath) : await fs.copyFile(srcPath, destPath); } } diff --git a/packages/vercel/src/index.ts b/packages/vercel/src/index.ts index 7d48bfff..e3acb984 100644 --- a/packages/vercel/src/index.ts +++ b/packages/vercel/src/index.ts @@ -1,28 +1,28 @@ -import fs from 'fs/promises'; -import type { Plugin, PluginOption, ResolvedConfig } from 'vite'; -import { getOutput, getPublic } from './utils'; -import { writeConfig } from './config'; -import { buildEndpoints } from './build'; -import { buildPrerenderConfigs, execPrerender } from './prerender'; -import path from 'path'; -import type { ViteVercelPrerenderRoute } from './types'; -import { copyDir } from './helpers'; - -export * from './types'; +import fs from "node:fs/promises"; +import path from "node:path"; +import type { Plugin, PluginOption, ResolvedConfig } from "vite"; +import { buildEndpoints } from "./build"; +import { writeConfig } from "./config"; +import { copyDir } from "./helpers"; +import { buildPrerenderConfigs, execPrerender } from "./prerender"; +import type { ViteVercelPrerenderRoute } from "./types"; +import { getOutput, getPublic } from "./utils"; + +export * from "./types"; function vercelPluginCleanup(): Plugin { let resolvedConfig: ResolvedConfig; return { - apply: 'build', - name: 'vite-plugin-vercel:cleanup', - enforce: 'pre', + apply: "build", + name: "vite-plugin-vercel:cleanup", + enforce: "pre", configResolved(config) { resolvedConfig = config; }, writeBundle: { - order: 'pre', + order: "pre", sequential: true, async handler() { if (!resolvedConfig.build?.ssr) { @@ -34,31 +34,28 @@ function vercelPluginCleanup(): Plugin { }; } +type Writeable = { -readonly [P in keyof T]: T[P] }; + function vercelPlugin(): Plugin { - let resolvedConfig: ResolvedConfig; + let resolvedConfig: Writeable; let vikeFound = false; return { - apply: 'build', - name: 'vite-plugin-vercel', - enforce: 'post', + apply: "build", + name: "vite-plugin-vercel", + enforce: "post", configResolved(config) { resolvedConfig = config; - vikeFound = resolvedConfig.plugins.some((p) => - p.name.match('^vite-plugin-ssr:|^vike:'), - ); - - if ( - typeof resolvedConfig.vercel?.distContainsOnlyStatic === 'undefined' - ) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (resolvedConfig as any).vercel ??= {}; - resolvedConfig.vercel!.distContainsOnlyStatic = !vikeFound; + vikeFound = resolvedConfig.plugins.some((p) => p.name.match("^vite-plugin-ssr:|^vike:")); + + if (typeof resolvedConfig.vercel?.distContainsOnlyStatic === "undefined") { + resolvedConfig.vercel ??= {}; + resolvedConfig.vercel.distContainsOnlyStatic = !vikeFound; } }, writeBundle: { - order: 'post', + order: "post", sequential: true, async handler() { if (!resolvedConfig.build?.ssr) { @@ -110,35 +107,33 @@ async function cleanOutputDirectory(resolvedConfig: ResolvedConfig) { async function copyDistToStatic(resolvedConfig: ResolvedConfig) { if (resolvedConfig.vercel?.distContainsOnlyStatic) { - await copyDir( - resolvedConfig.build.outDir, - getOutput(resolvedConfig, 'static'), - ); + await copyDir(resolvedConfig.build.outDir, getOutput(resolvedConfig, "static")); } } async function computeStaticHtmlOverrides( resolvedConfig: ResolvedConfig, ): Promise> { - const staticAbsolutePath = getOutput(resolvedConfig, 'static'); + const staticAbsolutePath = getOutput(resolvedConfig, "static"); const files = await getStaticHtmlFiles(staticAbsolutePath); // public files copied by vite by default https://vitejs.dev/guide/assets.html#the-public-directory const publicDir = getPublic(resolvedConfig); const publicFiles = await getStaticHtmlFiles(publicDir); - files.push( - ...publicFiles.map((f) => f.replace(publicDir, staticAbsolutePath)), + files.push(...publicFiles.map((f) => f.replace(publicDir, staticAbsolutePath))); + + return files.reduce( + (acc, curr) => { + const relPath = path.relative(staticAbsolutePath, curr); + const parsed = path.parse(relPath); + const pathJoined = path.join(parsed.dir, parsed.name); + acc[relPath] = { + path: pathJoined, + }; + return acc; + }, + {} as NonNullable, ); - - return files.reduce((acc, curr) => { - const relPath = path.relative(staticAbsolutePath, curr); - const parsed = path.parse(relPath); - const pathJoined = path.join(parsed.dir, parsed.name); - acc[relPath] = { - path: pathJoined, - }; - return acc; - }, {} as NonNullable); } async function getStaticHtmlFiles(src: string) { @@ -156,7 +151,7 @@ async function getStaticHtmlFiles(src: string) { entry.isDirectory() ? htmlFiles.push(...(await getStaticHtmlFiles(srcPath))) - : srcPath.endsWith('.html') + : srcPath.endsWith(".html") ? htmlFiles.push(srcPath) : undefined; } @@ -168,24 +163,21 @@ async function getStaticHtmlFiles(src: string) { * Auto import `@vite-plugin-vercel/vike` if it is part of dependencies. * Ensures that `vike/plugin` is also present to ensure predictable behavior */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any + +// biome-ignore lint/suspicious/noExplicitAny: async function tryImportVpvv(options: any) { try { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore - await import('vike/plugin'); - // eslint-disable-next-line @typescript-eslint/ban-ts-comment + await import("vike/plugin"); // @ts-ignore - const vpvv = await import('@vite-plugin-vercel/vike'); + const vpvv = await import("@vite-plugin-vercel/vike"); return vpvv.default(options); } catch (e) { try { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore - await import('vite-plugin-ssr/plugin'); - // eslint-disable-next-line @typescript-eslint/ban-ts-comment + await import("vite-plugin-ssr/plugin"); // @ts-ignore - const vpvv = await import('@vite-plugin-vercel/vike'); + const vpvv = await import("@vite-plugin-vercel/vike"); return vpvv.default(options); } catch (e) { return null; @@ -198,12 +190,8 @@ async function tryImportVpvv(options: any) { // FIXME: Could be fixed by: // - shared-workspace-lockfile=false in .npmrc. See https://pnpm.io/npmrc#shared-workspace-lockfile // - Moving demo test in dedicated repo, with each a correct package.json -// eslint-disable-next-line @typescript-eslint/no-explicit-any +// biome-ignore lint/suspicious/noExplicitAny: export default function allPlugins(options: any = {}): PluginOption[] { const { smart, ...rest } = options; - return [ - vercelPluginCleanup(), - vercelPlugin(), - smart !== false ? tryImportVpvv(rest) : null, - ]; + return [vercelPluginCleanup(), vercelPlugin(), smart !== false ? tryImportVpvv(rest) : null]; } diff --git a/packages/vercel/src/prerender.ts b/packages/vercel/src/prerender.ts index 7e6de2a4..6e26408c 100644 --- a/packages/vercel/src/prerender.ts +++ b/packages/vercel/src/prerender.ts @@ -1,14 +1,11 @@ -import type { ResolvedConfig } from 'vite'; -import path from 'path'; -import { getOutput } from './utils'; -import { - VercelOutputPrerenderConfig, - vercelOutputPrerenderConfigSchema, -} from './schemas/config/prerender-config'; -import fs from 'fs/promises'; -import type { VercelOutputIsr, ViteVercelPrerenderRoute } from './types'; -import type { Rewrite } from '@vercel/routing-utils'; -import { copyDir } from './helpers'; +import type { ResolvedConfig } from "vite"; +import path from "node:path"; +import { getOutput } from "./utils"; +import { type VercelOutputPrerenderConfig, vercelOutputPrerenderConfigSchema } from "./schemas/config/prerender-config"; +import fs from "node:fs/promises"; +import type { VercelOutputIsr, ViteVercelPrerenderRoute } from "./types"; +import type { Rewrite } from "@vercel/routing-utils"; +import { copyDir } from "./helpers"; export function execPrerender( resolvedConfig: ResolvedConfig, @@ -32,16 +29,9 @@ export async function writePrerenderConfig( ): Promise { const parsed = path.parse(destination); - const outfile = path.join( - getOutput(resolvedConfig, 'functions'), - parsed.dir, - parsed.name + '.prerender-config.json', - ); + const outfile = path.join(getOutput(resolvedConfig, "functions"), parsed.dir, `${parsed.name}.prerender-config.json`); - await fs.mkdir( - path.join(getOutput(resolvedConfig, 'functions'), parsed.dir), - { recursive: true }, - ); + await fs.mkdir(path.join(getOutput(resolvedConfig, "functions"), parsed.dir), { recursive: true }); await fs.writeFile( outfile, @@ -53,29 +43,17 @@ export async function writePrerenderConfig( undefined, 2, ), - 'utf-8', + "utf-8", ); } -export function getPrerenderSymlinkInfo( - resolvedConfig: ResolvedConfig, - destination: string, - target: string, -) { +export function getPrerenderSymlinkInfo(resolvedConfig: ResolvedConfig, destination: string, target: string) { const parsed = path.parse(destination); const targetParsed = path.parse(target); return { - target: path.join( - getOutput(resolvedConfig, 'functions'), - targetParsed.dir, - targetParsed.name + '.func', - ), - link: path.join( - getOutput(resolvedConfig, 'functions'), - parsed.dir, - parsed.name + '.func', - ), + target: path.join(getOutput(resolvedConfig, "functions"), targetParsed.dir, `${targetParsed.name}.func`), + link: path.join(getOutput(resolvedConfig, "functions"), parsed.dir, `${parsed.name}.func`), }; } @@ -83,11 +61,7 @@ export async function buildPrerenderConfigs( resolvedConfig: ResolvedConfig, extractedIsr: Record, ): Promise> { - const isr = Object.assign( - {}, - extractedIsr, - await getIsrConfig(resolvedConfig), - ); + const isr = Object.assign({}, extractedIsr, await getIsrConfig(resolvedConfig)); const entries = Object.entries(isr); const rewrites: Rewrite[] = []; @@ -95,11 +69,7 @@ export async function buildPrerenderConfigs( for (const [destination, { symlink, route, ...isr }] of entries) { await writePrerenderConfig(resolvedConfig, destination, isr); if (symlink) { - const info = getPrerenderSymlinkInfo( - resolvedConfig, - destination, - symlink, - ); + const info = getPrerenderSymlinkInfo(resolvedConfig, destination, symlink); // FIXME symlinks are currently broken https://github.com/orgs/vercel/discussions/577#discussioncomment-2767120 // await fs.symlink( // path.relative(path.dirname(info.link), info.target), @@ -118,11 +88,9 @@ export async function buildPrerenderConfigs( return rewrites; } -async function getIsrConfig( - resolvedConfig: ResolvedConfig, -): Promise> { +async function getIsrConfig(resolvedConfig: ResolvedConfig): Promise> { const isr = resolvedConfig.vercel?.isr ?? {}; - if (typeof isr === 'function') { + if (typeof isr === "function") { return await isr(); } return isr; diff --git a/packages/vercel/src/schemas/config/config.ts b/packages/vercel/src/schemas/config/config.ts index 820432d3..ad614682 100644 --- a/packages/vercel/src/schemas/config/config.ts +++ b/packages/vercel/src/schemas/config/config.ts @@ -3,34 +3,34 @@ * @see {@link https://vercel.com/docs/build-output-api/v3#build-output-configuration} */ -import { z } from 'zod'; +import { z } from "zod"; const HasOrMissing = z .array( z.union([ z .object({ - type: z.literal('host'), + type: z.literal("host"), value: z.string(), }) .strict(), z .object({ - type: z.literal('header'), + type: z.literal("header"), key: z.string(), value: z.string().optional(), }) .strict(), z .object({ - type: z.literal('cookie'), + type: z.literal("cookie"), key: z.string(), value: z.string().optional(), }) .strict(), z .object({ - type: z.literal('query'), + type: z.literal("query"), key: z.string(), value: z.string().optional(), }) @@ -69,12 +69,12 @@ export const vercelOutputConfigSchema = z z .object({ handle: z.union([ - z.literal('rewrite'), - z.literal('filesystem'), - z.literal('resource'), - z.literal('miss'), - z.literal('hit'), - z.literal('error'), + z.literal("rewrite"), + z.literal("filesystem"), + z.literal("resource"), + z.literal("miss"), + z.literal("hit"), + z.literal("error"), ]), src: z.string().optional(), dest: z.string().optional(), @@ -86,14 +86,11 @@ export const vercelOutputConfigSchema = z .optional(), images: z .object({ - sizes: z.tuple([ - z.number().int().positive(), - z.number().int().positive(), - ]), + sizes: z.tuple([z.number().int().positive(), z.number().int().positive()]), domains: z.array(z.string()).nonempty().optional(), minimumCacheTTL: z.number().int().positive().optional(), formats: z - .union([z.literal('image/avif'), z.literal('image/webp')]) + .union([z.literal("image/avif"), z.literal("image/webp")]) .array() .nonempty() .optional(), diff --git a/packages/vercel/src/schemas/config/prerender-config.ts b/packages/vercel/src/schemas/config/prerender-config.ts index aa74fb6f..1f898aba 100644 --- a/packages/vercel/src/schemas/config/prerender-config.ts +++ b/packages/vercel/src/schemas/config/prerender-config.ts @@ -3,7 +3,7 @@ * @see {@link https://vercel.com/docs/build-output-api/v3#build-output-configuration} */ -import { z } from 'zod'; +import { z } from "zod"; export const vercelOutputPrerenderConfigSchema = z .object({ @@ -15,6 +15,4 @@ export const vercelOutputPrerenderConfigSchema = z }) .strict(); -export type VercelOutputPrerenderConfig = z.infer< - typeof vercelOutputPrerenderConfigSchema ->; +export type VercelOutputPrerenderConfig = z.infer; diff --git a/packages/vercel/src/schemas/config/vc-config.ts b/packages/vercel/src/schemas/config/vc-config.ts index f61bc254..db754265 100644 --- a/packages/vercel/src/schemas/config/vc-config.ts +++ b/packages/vercel/src/schemas/config/vc-config.ts @@ -3,11 +3,11 @@ * @see {@link https://vercel.com/docs/build-output-api/v3/primitives#serverless-function-configuration} */ -import { z } from 'zod'; +import { z } from "zod"; export const vercelOutputEdgeVcConfigSchema = z .object({ - runtime: z.literal('edge'), + runtime: z.literal("edge"), entrypoint: z.string(), envVarsInUse: z.array(z.string()).optional(), }) @@ -26,15 +26,14 @@ export const vercelOutputServerlessVcConfigSchema = z }) .strict(); -export const vercelOutputServerlessNodeVcConfigSchema = - vercelOutputServerlessVcConfigSchema - .extend({ - launcherType: z.literal('Nodejs'), - shouldAddHelpers: z.boolean().optional(), - shouldAddSourcemapSupport: z.boolean().optional(), - awsLambdaHandler: z.string().optional(), - }) - .strict(); +export const vercelOutputServerlessNodeVcConfigSchema = vercelOutputServerlessVcConfigSchema + .extend({ + launcherType: z.literal("Nodejs"), + shouldAddHelpers: z.boolean().optional(), + shouldAddSourcemapSupport: z.boolean().optional(), + awsLambdaHandler: z.string().optional(), + }) + .strict(); export const vercelOutputVcConfigSchema = z.union([ vercelOutputEdgeVcConfigSchema, diff --git a/packages/vercel/src/schemas/exports.ts b/packages/vercel/src/schemas/exports.ts index eef03af2..1ce49477 100644 --- a/packages/vercel/src/schemas/exports.ts +++ b/packages/vercel/src/schemas/exports.ts @@ -1,4 +1,4 @@ -import { z } from 'zod'; +import { z } from "zod"; export const vercelEndpointExports = z.object({ edge: z.boolean().optional(), diff --git a/packages/vercel/src/types.ts b/packages/vercel/src/types.ts index 57f4cf99..ddb0ee4d 100644 --- a/packages/vercel/src/types.ts +++ b/packages/vercel/src/types.ts @@ -1,18 +1,14 @@ -import type { ResolvedConfig } from 'vite'; -import type { BuildOptions, StdinOptions } from 'esbuild'; -import type { VercelOutputConfig } from './schemas/config/config'; -import type { VercelOutputVcConfig } from './schemas/config/vc-config'; -import type { VercelOutputPrerenderConfig } from './schemas/config/prerender-config'; -import type { Rewrite, Redirect } from '@vercel/routing-utils'; +import type { ResolvedConfig } from "vite"; +import type { BuildOptions, StdinOptions } from "esbuild"; +import type { VercelOutputConfig } from "./schemas/config/config"; +import type { VercelOutputVcConfig } from "./schemas/config/vc-config"; +import type { VercelOutputPrerenderConfig } from "./schemas/config/prerender-config"; +import type { Rewrite, Redirect } from "@vercel/routing-utils"; -export type { - VercelOutputConfig, - VercelOutputVcConfig, - VercelOutputPrerenderConfig, -}; +export type { VercelOutputConfig, VercelOutputVcConfig, VercelOutputPrerenderConfig }; -export type ViteVercelRewrite = Rewrite & { enforce?: 'pre' | 'post' }; -export type ViteVercelRedirect = Redirect & { enforce?: 'pre' | 'post' }; +export type ViteVercelRewrite = Rewrite & { enforce?: "pre" | "post" }; +export type ViteVercelRedirect = Redirect & { enforce?: "pre" | "post" }; // Vite config for Vercel @@ -82,7 +78,7 @@ export interface ViteVercelConfig { * @see {@link https://vercel.com/docs/build-output-api/v3/configuration#configuration} * @protected */ - config?: Partial>; + config?: Partial>; /** * ISR and SSG pages are mutually exclusive. If a page is found in both, ISR prevails. * Keys are path relative to .vercel/output/functions directory, either without extension, @@ -105,9 +101,7 @@ export interface ViteVercelConfig { */ isr?: | Record - | (() => - | Promise> - | Record); + | (() => Promise> | Record); /** * Defaults to `.vercel/output`. Mostly useful for testing purpose * @protected @@ -130,7 +124,7 @@ export interface VercelOutputIsr extends VercelOutputPrerenderConfig { /** * Keys are path relative to .vercel/output/static directory */ -export type ViteVercelPrerenderRoute = VercelOutputConfig['overrides']; +export type ViteVercelPrerenderRoute = VercelOutputConfig["overrides"]; export type ViteVercelPrerenderFn = ( resolvedConfig: ResolvedConfig, ) => ViteVercelPrerenderRoute | Promise; diff --git a/packages/vercel/src/utils.ts b/packages/vercel/src/utils.ts index c54460a1..2273874e 100644 --- a/packages/vercel/src/utils.ts +++ b/packages/vercel/src/utils.ts @@ -1,5 +1,5 @@ -import { normalizePath, ResolvedConfig, UserConfig } from 'vite'; -import path from 'path'; +import { normalizePath, type ResolvedConfig, type UserConfig } from "vite"; +import path from "node:path"; export function getRoot(config: UserConfig | ResolvedConfig): string { return normalizePath(config.root || process.cwd()); @@ -7,26 +7,20 @@ export function getRoot(config: UserConfig | ResolvedConfig): string { export function getOutput( config: ResolvedConfig, - suffix?: 'functions' | `functions/${string}.func` | 'static', + suffix?: "functions" | `functions/${string}.func` | "static", ): string { return path.join( - config.vercel?.outDir ? '' : getRoot(config), - config.vercel?.outDir ?? '.vercel/output', - suffix ?? '', + config.vercel?.outDir ? "" : getRoot(config), + config.vercel?.outDir ?? ".vercel/output", + suffix ?? "", ); } export function getPublic(config: ResolvedConfig): string { - return path.join(getRoot(config), config.publicDir || 'public'); + return path.join(getRoot(config), config.publicDir || "public"); } -export function pathRelativeTo( - filePath: string, - config: UserConfig | ResolvedConfig, - rel: string, -): string { +export function pathRelativeTo(filePath: string, config: UserConfig | ResolvedConfig, rel: string): string { const root = getRoot(config); - return normalizePath( - path.relative(normalizePath(path.join(root, rel)), filePath), - ); + return normalizePath(path.relative(normalizePath(path.join(root, rel)), filePath)); } diff --git a/packages/vercel/tsconfig.json b/packages/vercel/tsconfig.json index f08dd4e3..a403cde2 100644 --- a/packages/vercel/tsconfig.json +++ b/packages/vercel/tsconfig.json @@ -7,6 +7,6 @@ "forceConsistentCasingInFileNames": true, "strict": true, "skipLibCheck": true, - "moduleResolution": "Node" + "moduleResolution": "Bundler" } } diff --git a/packages/vercel/tsup.config.ts b/packages/vercel/tsup.config.ts index c299f6cc..6fc5cd0a 100644 --- a/packages/vercel/tsup.config.ts +++ b/packages/vercel/tsup.config.ts @@ -1,14 +1,14 @@ -import { defineConfig } from 'tsup'; +import { defineConfig } from "tsup"; export default defineConfig([ { - entry: ['./src/index.ts'], - external: ['esbuild', 'vike'], - format: ['esm', 'cjs'], - platform: 'node', - target: 'node18', + entry: ["./src/index.ts"], + external: ["esbuild", "vike"], + format: ["esm", "cjs"], + platform: "node", + target: "node18", dts: { - entry: './src/index.ts', + entry: "./src/index.ts", }, }, ]); diff --git a/packages/vike-integration/+config.ts b/packages/vike-integration/+config.ts index b717258d..134856ba 100644 --- a/packages/vike-integration/+config.ts +++ b/packages/vike-integration/+config.ts @@ -1,7 +1,7 @@ -import type { Config } from 'vike/types'; +import type { Config } from "vike/types"; export default { - name: '@vite-plugin-vercel/vike', + name: "@vite-plugin-vercel/vike", meta: { isr: { env: { server: true }, diff --git a/packages/vike-integration/config.d.ts b/packages/vike-integration/config.d.ts index 1dbd50a3..f365f93b 100644 --- a/packages/vike-integration/config.d.ts +++ b/packages/vike-integration/config.d.ts @@ -1,4 +1,4 @@ -import 'vike/types'; +import "vike/types"; // When this is imported by a projet -> // import config from '@vite-plugin-vercel/vike/config' @@ -15,4 +15,4 @@ declare global { } // Help TS's resolver for node10 target -export * from './dist/+config.h'; +export * from "./dist/+config.h"; diff --git a/packages/vike-integration/config.js b/packages/vike-integration/config.js index 19724b60..b93cac7e 100644 --- a/packages/vike-integration/config.js +++ b/packages/vike-integration/config.js @@ -1 +1 @@ -export default from './dist/+config.h'; +export * from "./dist/+config.js"; diff --git a/packages/vike-integration/helpers.d.ts b/packages/vike-integration/helpers.d.ts index 28867682..ca298f94 100644 --- a/packages/vike-integration/helpers.d.ts +++ b/packages/vike-integration/helpers.d.ts @@ -1,2 +1,2 @@ // Help TS's resolver for node10 target -export * from './dist/templates/helpers'; +export * from "./dist/templates/helpers"; diff --git a/packages/vike-integration/helpers.js b/packages/vike-integration/helpers.js index 33ee5b9b..93eb619e 100644 --- a/packages/vike-integration/helpers.js +++ b/packages/vike-integration/helpers.js @@ -1 +1 @@ -export * from './dist/templates/helpers'; +export * from "./dist/templates/helpers.js"; diff --git a/packages/vike-integration/package.json b/packages/vike-integration/package.json index 585c31ba..ef841866 100644 --- a/packages/vike-integration/package.json +++ b/packages/vike-integration/package.json @@ -30,12 +30,12 @@ "lint:ts": "eslint . --max-warnings 0 --ignore-pattern dist" }, "devDependencies": { - "@types/node": "^18.19.31", + "@types/node": "^18.19.45", "@vercel/node": "^3.2.8", "tsup": "^8.2.4", "typescript": "^5.5.4", - "vike": "^0.4.183", - "vite": "^5.4.0", + "vike": "^0.4.188", + "vite": "^5.4.1", "vite-plugin-vercel": "workspace:*" }, "dependencies": { diff --git a/packages/vike-integration/route-regex.ts b/packages/vike-integration/route-regex.ts index dfe5e5f4..ec77e990 100644 --- a/packages/vike-integration/route-regex.ts +++ b/packages/vike-integration/route-regex.ts @@ -1,36 +1,35 @@ export function escapeStringRegexp(str: string) { - return str.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&'); + return str.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&"); } function getSegmentRegex(segment: string): string { - if (segment.startsWith('@')) { - return '/[^/]+'; - } else if (segment === '*') { - return '/.+?'; + if (segment.startsWith("@")) { + return "/[^/]+"; } - return `/` + segment; + if (segment === "*") { + return "/.+?"; + } + return `/${segment}`; } export function getParametrizedRoute(route: string): string { - const segments = (route.replace(/\/$/, '') || '/').slice(1).split('/'); - return segments.map(getSegmentRegex).join(''); + const segments = (route.replace(/\/$/, "") || "/").slice(1).split("/"); + return segments.map(getSegmentRegex).join(""); } export function getRoutesRegex(normalizedRoutes: string[]): string { const results = normalizedRoutes.map(getParametrizedRoute); - return `^(${results.join('|')})(?:/)?$`; + return `^(${results.join("|")})(?:/)?$`; } -export function getComplementaryRoutesRegex( - normalizedRoutes: string[], -): string { +export function getComplementaryRoutesRegex(normalizedRoutes: string[]): string { const results = normalizedRoutes.map(getParametrizedRoute); - return results.map((r) => `(?!${r})`).join(''); + return results.map((r) => `(?!${r})`).join(""); } export function getVercelPattern(route: string): string { - if (route.endsWith('/*')) { - return route.replace(/\/\*/g, '/:any*'); + if (route.endsWith("/*")) { + return route.replace(/\/\*/g, "/:any*"); } return route; } diff --git a/packages/vike-integration/templates/helpers.ts b/packages/vike-integration/templates/helpers.ts index 0d4b02ee..b05ade19 100644 --- a/packages/vike-integration/templates/helpers.ts +++ b/packages/vike-integration/templates/helpers.ts @@ -1,10 +1,8 @@ -import { VercelRequest, VercelResponse } from '@vercel/node'; -import { parse } from 'querystring'; -import type { renderPage } from 'vike'; +import { parse } from "node:querystring"; +import type { VercelRequest, VercelResponse } from "@vercel/node"; +import type { renderPage } from "vike"; -type HttpResponse = NonNullable< - Awaited>['httpResponse'] ->; +type HttpResponse = NonNullable>["httpResponse"]>; /** * Extract useful pageContext from request to give to renderPage(...). @@ -16,15 +14,13 @@ export function getDefaultPageContextInit(request: VercelRequest) { const query: Record = request.query ?? {}; const matches = // FIXME x-now-route-matches is not definitive https://github.com/orgs/vercel/discussions/577#discussioncomment-2769478 - typeof request.headers['x-now-route-matches'] === 'string' - ? parse(request.headers['x-now-route-matches']) - : null; + typeof request.headers["x-now-route-matches"] === "string" ? parse(request.headers["x-now-route-matches"]) : null; const url: string = - typeof query.__original_path === 'string' + typeof query.__original_path === "string" ? query.__original_path - : matches && typeof matches!['1'] === 'string' - ? matches['1'] - : request.url!; + : matches && typeof matches?.["1"] === "string" + ? matches["1"] + : request.url ?? ""; return { url, urlOriginal: url, @@ -39,8 +35,8 @@ export function getDefaultPageContextInit(request: VercelRequest) { */ export function getDefaultEmptyResponseHandler(response: VercelResponse) { response.statusCode = 200; - response.setHeader('content-type', 'text/html; charset=UTF-8'); - return response.end(''); + response.setHeader("content-type", "text/html; charset=UTF-8"); + return response.end(""); } /** @@ -48,13 +44,10 @@ export function getDefaultEmptyResponseHandler(response: VercelResponse) { * @param response * @param httpResponse */ -export function getDefaultResponseHandler( - response: VercelResponse, - httpResponse: HttpResponse, -) { +export function getDefaultResponseHandler(response: VercelResponse, httpResponse: HttpResponse) { const { statusCode, body, contentType } = httpResponse; response.statusCode = statusCode; - response.setHeader('content-type', contentType); + response.setHeader("content-type", contentType); return response.end(body); } diff --git a/packages/vike-integration/templates/ssr_.template.ts b/packages/vike-integration/templates/ssr_.template.ts index eefb3a36..a8a2068f 100644 --- a/packages/vike-integration/templates/ssr_.template.ts +++ b/packages/vike-integration/templates/ssr_.template.ts @@ -1,18 +1,11 @@ -import type { VercelRequest, VercelResponse } from '@vercel/node'; -import { renderPage } from 'vike/server'; -import { - getDefaultEmptyResponseHandler, - getDefaultPageContextInit, - getDefaultResponseHandler, -} from './helpers'; +import type { VercelRequest, VercelResponse } from "@vercel/node"; +import { renderPage } from "vike/server"; +import { getDefaultEmptyResponseHandler, getDefaultPageContextInit, getDefaultResponseHandler } from "./helpers"; -export default async function handler( - request: VercelRequest, - response: VercelResponse, -) { - console.debug('query', request.query); - console.debug('url', request.url); - console.debug('headers', request.headers); +export default async function handler(request: VercelRequest, response: VercelResponse) { + console.debug("query", request.query); + console.debug("url", request.url); + console.debug("headers", request.headers); const pageContextInit = getDefaultPageContextInit(request); const pageContext = await renderPage(pageContextInit); const { httpResponse } = pageContext; diff --git a/packages/vike-integration/tsconfig.json b/packages/vike-integration/tsconfig.json index 7561a934..00f32fa2 100644 --- a/packages/vike-integration/tsconfig.json +++ b/packages/vike-integration/tsconfig.json @@ -7,6 +7,6 @@ "forceConsistentCasingInFileNames": true, "strict": true, "skipLibCheck": true, - "moduleResolution": "Node" + "moduleResolution": "Bundler" } } diff --git a/packages/vike-integration/tsup.config.ts b/packages/vike-integration/tsup.config.ts index 88da8172..c73d864d 100644 --- a/packages/vike-integration/tsup.config.ts +++ b/packages/vike-integration/tsup.config.ts @@ -1,18 +1,18 @@ -import { defineConfig } from 'tsup'; -import { rename } from 'node:fs/promises'; -import { existsSync } from 'node:fs'; +import { defineConfig } from "tsup"; +import { rename } from "node:fs/promises"; +import { existsSync } from "node:fs"; export default defineConfig([ { clean: true, - entry: ['./vike.ts', './templates/helpers.ts', './+config.ts'], - external: ['esbuild', 'rollup', 'vite', 'vike'], - format: ['esm'], + entry: ["./vike.ts", "./templates/helpers.ts", "./+config.ts"], + external: ["esbuild", "rollup", "vite", "vike"], + format: ["esm"], - platform: 'node', - target: 'node18', + platform: "node", + target: "node18", dts: { - entry: ['./vike.ts', './templates/helpers.ts', './+config.ts'], + entry: ["./vike.ts", "./templates/helpers.ts", "./+config.ts"], }, async onSuccess() { // rollup-plugin-dts chooses to rename things its way @@ -23,7 +23,7 @@ export default defineConfig([ // timeout after 5 seconds while (start + 5000 > Date.now()) { - if (existsSync('./dist/_config.d.ts')) { + if (existsSync("./dist/_config.d.ts")) { break; } await new Promise((resolve) => { @@ -31,7 +31,7 @@ export default defineConfig([ }); } - await rename('./dist/_config.d.ts', './dist/+config.d.ts'); + await rename("./dist/_config.d.ts", "./dist/+config.d.ts"); }, }, ]); diff --git a/packages/vike-integration/vike.ts b/packages/vike-integration/vike.ts index be446458..a659e284 100644 --- a/packages/vike-integration/vike.ts +++ b/packages/vike-integration/vike.ts @@ -1,35 +1,35 @@ -import { prerender as prerenderCli } from 'vike/prerender'; -import fs from 'fs/promises'; -import path from 'path'; -import { fileURLToPath } from 'url'; -import { normalizePath, Plugin, ResolvedConfig, UserConfig } from 'vite'; -import type { PageContextServer } from 'vike/types'; +import fs from "node:fs/promises"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import { prerender as prerenderCli } from "vike/prerender"; +import type { PageContextServer } from "vike/types"; +import { type Plugin, type ResolvedConfig, type UserConfig, normalizePath } from "vite"; import type { VercelOutputIsr, ViteVercelApiEntry, ViteVercelPrerenderFn, ViteVercelPrerenderRoute, -} from 'vite-plugin-vercel'; -import 'vike/__internal/setup'; -import { - getPagesAndRoutes, - PageFile, - PageRoutes, - route, -} from 'vike/__internal'; -import { nanoid } from 'nanoid'; -import { getParametrizedRoute } from './route-regex'; -import { newError } from '@brillout/libassert'; - -const libName = 'vite-plugin-vercel:vike'; -const rendererDestination = 'ssr_'; +} from "vite-plugin-vercel"; +import "vike/__internal/setup"; +// @ts-ignore +import { newError } from "@brillout/libassert"; +import { nanoid } from "nanoid"; +import { type PageFile, type PageRoutes, getPagesAndRoutes, route } from "vike/__internal"; +import type { ViteVercelConfig } from "vite-plugin-vercel"; +import { getParametrizedRoute } from "./route-regex"; + +declare module "vite" { + export interface UserConfig { + vercel?: ViteVercelConfig; + } +} + +const libName = "vite-plugin-vercel:vike"; +const rendererDestination = "ssr_"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); -export function assert( - condition: unknown, - errorMessage: string, -): asserts condition { +export function assert(condition: unknown, errorMessage: string): asserts condition { if (condition) { return; } @@ -55,9 +55,7 @@ interface MissingPageContextOverrides { type PageContextForRoute = Parameters[0]; -type PageContext = PageContextServer & - MissingPageContextOverrides & - PageContextForRoute; +type PageContext = PageContextServer & MissingPageContextOverrides & PageContextForRoute; export function getRoot(config: UserConfig | ResolvedConfig): string { return normalizePath(config.root || process.cwd()); @@ -66,26 +64,21 @@ export function getRoot(config: UserConfig | ResolvedConfig): string { function getOutDirRoot(config: ResolvedConfig) { const outDir = config.build.outDir; - return outDir.endsWith('/server') || outDir.endsWith('/client') - ? path.normalize(path.join(outDir, '..')) - : outDir; + return outDir.endsWith("/server") || outDir.endsWith("/client") ? path.normalize(path.join(outDir, "..")) : outDir; } export function getOutput( config: ResolvedConfig, - suffix?: 'functions' | `functions/${string}.func` | 'static', + suffix?: "functions" | `functions/${string}.func` | "static", ): string { return path.join( - config.vercel?.outDir ? '' : getRoot(config), - config.vercel?.outDir ?? '.vercel/output', - suffix ?? '', + config.vercel?.outDir ? "" : getRoot(config), + config.vercel?.outDir ?? ".vercel/output", + suffix ?? "", ); } -export function getOutDir( - config: ResolvedConfig, - force?: 'client' | 'server', -): string { +export function getOutDir(config: ResolvedConfig, force?: "client" | "server"): string { const p = path.join(config.root, normalizePath(config.build.outDir)); if (!force) return p; return path.join(path.dirname(p), force); @@ -107,31 +100,27 @@ async function copyDir(src: string, dest: string) { } } -function assertIsr( - resolvedConfig: UserConfig | ResolvedConfig, - exports: unknown, -): number | null { - if (exports === null || typeof exports !== 'object') return null; - if (!('isr' in exports)) return null; +function assertIsr(resolvedConfig: UserConfig | ResolvedConfig, exports: unknown): number | null { + if (exports === null || typeof exports !== "object") return null; + if (!("isr" in exports)) return null; const isr = (exports as { isr: unknown }).isr; assert( - typeof isr === 'boolean' || - (typeof isr === 'object' && - typeof (isr as Record).expiration === 'number' && + typeof isr === "boolean" || + (typeof isr === "object" && + typeof (isr as Record).expiration === "number" && ( isr as { expiration: number; } ).expiration > 0), - ` \`{ expiration }\` must be a positive number`, + " `{ expiration }` must be a positive number", ); if (isr === true) { assert( - typeof resolvedConfig.vercel?.expiration === 'number' && - resolvedConfig.vercel?.expiration > 0, - '`export const isr = true;` requires a default positive value for `expiration` in vite config', + typeof resolvedConfig.vercel?.expiration === "number" && resolvedConfig.vercel?.expiration > 0, + "`export const isr = true;` requires a default positive value for `expiration` in vite config", ); return resolvedConfig.vercel?.expiration; @@ -144,16 +133,16 @@ function assertIsr( ).expiration; } -function getRouteMatch(myroute: Awaited>): any { - let routeMatch: any = null; +function getRouteMatch(myroute: Awaited>): unknown { + let routeMatch: unknown = null; - if ('_routeMatch' in myroute.pageContextAddendum) { + if ("_routeMatch" in myroute.pageContextAddendum) { // Since 0.4.157 routeMatch = myroute.pageContextAddendum._routeMatch; - } else if ('_routeMatches' in myroute.pageContextAddendum) { + } else if ("_routeMatches" in myroute.pageContextAddendum) { // Before 0.4.145 - routeMatch = (myroute.pageContextAddendum._routeMatches as any[])?.[0]; - } else if ('_debugRouteMatches' in myroute.pageContextAddendum) { + routeMatch = (myroute.pageContextAddendum._routeMatches as unknown[])?.[0]; + } else if ("_debugRouteMatches" in myroute.pageContextAddendum) { // Between 0.4.145 and 0.4.157 (still in place but prefer using _routeMatch) routeMatch = myroute.pageContextAddendum._debugRouteMatches?.[0]; } @@ -187,33 +176,24 @@ export const prerender: ViteVercelPrerenderFn = async ( // if ISR + Filesystem routing -> ISR prevails if ( - typeof isr === 'number' && + typeof isr === "number" && routeMatch && - typeof routeMatch !== 'string' && - routeMatch.routeType === 'FILESYSTEM' + typeof routeMatch !== "string" && + (routeMatch as { routeType: string }).routeType === "FILESYSTEM" ) { return; } } - const relPath = path.relative( - getOutDir(resolvedConfig, 'client'), - filePath, - ); - const newFilePath = path.join( - getOutput(resolvedConfig, 'static'), - relPath, - ); + const relPath = path.relative(getOutDir(resolvedConfig, "client"), filePath); + const newFilePath = path.join(getOutput(resolvedConfig, "static"), relPath); const parsed = path.parse(relPath); - const pathJoined = - parsed.name === 'index' - ? parsed.dir - : path.join(parsed.dir, parsed.name); + const pathJoined = parsed.name === "index" ? parsed.dir : path.join(parsed.dir, parsed.name); - if (relPath.endsWith('.html')) { + if (relPath.endsWith(".html")) { routes[relPath] = { - path: pathJoined === 'index' ? '' : pathJoined, + path: pathJoined === "index" ? "" : pathJoined, }; } @@ -228,9 +208,10 @@ export const prerender: ViteVercelPrerenderFn = async ( function getRouteDynamicRoute(pageRoutes: PageRoutes, pageId: string) { for (const route of pageRoutes) { if (route.pageId === pageId) { - if (route.routeType === 'STRING') { + if (route.routeType === "STRING") { return getParametrizedRoute(route.routeString); - } else if (route.routeType === 'FUNCTION') { + } + if (route.routeType === "FUNCTION") { // route.routeType === 'FUNCTION' return () => {}; } @@ -242,7 +223,7 @@ function getRouteDynamicRoute(pageRoutes: PageRoutes, pageId: string) { function getRouteFsRoute(pageRoutes: PageRoutes, pageId: string) { for (const route of pageRoutes) { - if (route.pageId === pageId && route.routeType === 'FILESYSTEM') { + if (route.pageId === pageId && route.routeType === "FILESYSTEM") { return route.routeString; } } @@ -250,28 +231,24 @@ function getRouteFsRoute(pageRoutes: PageRoutes, pageId: string) { return null; } -export async function getSsrEndpoint( - userConfig: UserConfig, - source?: string, -): Promise { - const sourcefile = - source ?? path.join(__dirname, '..', 'templates', 'ssr_.template.ts'); - const contents = await fs.readFile(sourcefile, 'utf-8'); +export async function getSsrEndpoint(userConfig: UserConfig, source?: string): Promise { + const sourcefile = source ?? path.join(__dirname, "..", "templates", "ssr_.template.ts"); + const contents = await fs.readFile(sourcefile, "utf-8"); const resolveDir = path.dirname(sourcefile); return { source: { contents: contents, sourcefile, - loader: sourcefile.endsWith('.ts') - ? 'ts' - : sourcefile.endsWith('.tsx') - ? 'tsx' - : sourcefile.endsWith('.js') - ? 'js' - : sourcefile.endsWith('.jsx') - ? 'jsx' - : 'default', + loader: sourcefile.endsWith(".ts") + ? "ts" + : sourcefile.endsWith(".tsx") + ? "tsx" + : sourcefile.endsWith(".js") + ? "js" + : sourcefile.endsWith(".jsx") + ? "jsx" + : "default", resolveDir, }, destination: rendererDestination, @@ -292,7 +269,7 @@ export interface Options { export function vikeVercelPlugin(options: Options = {}): Plugin { return { name: libName, - apply: 'build', + apply: "build", async config(userConfig): Promise { // wait for vike second build step with `ssr` flag if (!userConfig.build?.ssr) return {}; @@ -315,13 +292,13 @@ export function vikeVercelPlugin(options: Options = {}): Plugin { defaultSupportsResponseStreaming: true, rewrites: [ { - source: options.source ? `(${options.source})` : '((?!/api).*)', + source: options.source ? `(${options.source})` : "((?!/api).*)", destination: `/${rendererDestination}/?__original_path=$1`, - enforce: 'post', + enforce: "post", }, ], }, - } as any; + } as UserConfig; }, } as Plugin; } @@ -333,19 +310,16 @@ export function vikeVercelPlugin(options: Options = {}): Plugin { * @param pageFilesAll */ function findPageFile(pageId: string, pageFilesAll: PageFile[]) { - return pageFilesAll.find( - (p) => p.pageId === pageId && p.fileType === '.page', - ); + return pageFilesAll.find((p) => p.pageId === pageId && p.fileType === ".page"); } export function vitePluginVercelVikeIsrPlugin(): Plugin { return { - name: 'vite-plugin-vercel:vike-isr', - apply: 'build', + name: "vite-plugin-vercel:vike-isr", + apply: "build", async config(userConfig): Promise { async function getPagesWithConfigs() { - const { pageFilesAll, allPageIds, pageRoutes, pageConfigs } = - await getPagesAndRoutes(); + const { pageFilesAll, allPageIds, pageRoutes, pageConfigs } = await getPagesAndRoutes(); const isLegacy = pageFilesAll.length > 0; @@ -392,13 +366,11 @@ export function vitePluginVercelVikeIsrPlugin(): Plugin { }; } - const route = - getRouteDynamicRoute(pageRoutes, pageId) ?? - getRouteFsRoute(pageRoutes, pageId); + const route = getRouteDynamicRoute(pageRoutes, pageId) ?? getRouteFsRoute(pageRoutes, pageId); let isr = assertIsr(userConfig, page.config); // if ISR + Function routing -> warn because ISR is not unsupported in this case - if (typeof route === 'function' && isr) { + if (typeof route === "function" && isr) { console.warn( `Page ${pageId}: ISR is not supported when using route function. Remove \`{ isr }\` export or use a route string if possible.`, ); @@ -410,8 +382,7 @@ export function vitePluginVercelVikeIsrPlugin(): Plugin { // used for debug purpose filePath: page.filePath, isr, - route: - typeof route === 'string' ? getParametrizedRoute(route) : null, + route: typeof route === "string" ? getParametrizedRoute(route) : null, }; }), ); @@ -422,7 +393,7 @@ export function vitePluginVercelVikeIsrPlugin(): Plugin { isr: async () => { let userIsr: Record = {}; if (userConfig.vercel?.isr) { - if (typeof userConfig.vercel.isr === 'function') { + if (typeof userConfig.vercel.isr === "function") { userIsr = await userConfig.vercel.isr(); } else { userIsr = userConfig.vercel.isr; @@ -432,16 +403,14 @@ export function vitePluginVercelVikeIsrPlugin(): Plugin { const pagesWithConfigs = await getPagesWithConfigs(); return pagesWithConfigs - .filter((p) => typeof p.isr === 'number') + .filter((p) => typeof p.isr === "number") .reduce((acc, cur) => { - const path = - cur._pageId.replace(/\/index$/g, '') + '-' + nanoid(); + const path = `${cur._pageId.replace(/\/index$/g, "")}-${nanoid()}`; acc[path] = { + // biome-ignore lint/style/noNonNullAssertion: expiration: cur.isr!, symlink: rendererDestination, - route: cur.route - ? cur.route + '(?:\\/index\\.pageContext\\.json)?' - : undefined, + route: cur.route ? `${cur.route}(?:\\/index\\.pageContext\\.json)?` : undefined, }; return acc; }, userIsr); @@ -456,9 +425,9 @@ export function vitePluginVercelVikeCopyStaticAssetsPlugins(): Plugin { let resolvedConfig: ResolvedConfig; return { - apply: 'build', - name: 'vite-plugin-vercel:vike-copy-static-assets', - enforce: 'post', + apply: "build", + name: "vite-plugin-vercel:vike-copy-static-assets", + enforce: "post", configResolved(config) { resolvedConfig = config; }, @@ -470,16 +439,9 @@ export function vitePluginVercelVikeCopyStaticAssetsPlugins(): Plugin { } async function copyDistClientToOutputStatic(resolvedConfig: ResolvedConfig) { - await copyDir( - getOutDir(resolvedConfig, 'client'), - getOutput(resolvedConfig, 'static'), - ); + await copyDir(getOutDir(resolvedConfig, "client"), getOutput(resolvedConfig, "static")); } export default function allPlugins(options: Options = {}): Plugin[] { - return [ - vitePluginVercelVikeIsrPlugin(), - vikeVercelPlugin(options), - vitePluginVercelVikeCopyStaticAssetsPlugins(), - ]; + return [vitePluginVercelVikeIsrPlugin(), vikeVercelPlugin(options), vitePluginVercelVikeCopyStaticAssetsPlugins()]; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d7eddcb3..5b10b987 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,24 +8,18 @@ importers: .: devDependencies: + '@biomejs/biome': + specifier: ^1.8.3 + version: 1.8.3 '@changesets/cli': specifier: ^2.27.7 version: 2.27.7 '@types/node': - specifier: ^18.19.31 - version: 18.19.31 + specifier: ^18.19.45 + version: 18.19.45 cross-env: specifier: ^7.0.3 version: 7.0.3 - husky: - specifier: ^9.1.4 - version: 9.1.4 - lint-staged: - specifier: ^15.2.8 - version: 15.2.8 - prettier: - specifier: ^3.3.3 - version: 3.3.3 typescript: specifier: ^5.5.4 version: 5.5.4 @@ -37,13 +31,13 @@ importers: version: 3.0.1 '@mdx-js/react': specifier: ^3.0.1 - version: 3.0.1(@types/react@18.2.79)(react@18.2.0) + version: 3.0.1(@types/react@18.3.3)(react@18.3.1) '@mdx-js/rollup': specifier: ^3.0.1 - version: 3.0.1(rollup@4.19.0) + version: 3.0.1(rollup@4.21.0) '@vercel/edge-config': - specifier: ^1.1.0 - version: 1.1.0(typescript@5.5.4) + specifier: ^1.2.1 + version: 1.2.1 '@vercel/og': specifier: ^0.6.2 version: 0.6.2 @@ -51,8 +45,8 @@ importers: specifier: workspace:* version: link:../../packages/vike-integration '@vitejs/plugin-react-swc': - specifier: ^3.6.0 - version: 3.6.0(vite@5.4.0(@types/node@18.19.31)) + specifier: ^3.7.0 + version: 3.7.0(vite@5.4.1(@types/node@18.19.45)) cross-fetch: specifier: ^4.0.0 version: 4.0.0 @@ -60,45 +54,45 @@ importers: specifier: ^3.3.2 version: 3.3.2 react: - specifier: ^18.2.0 - version: 18.2.0 + specifier: ^18.3.1 + version: 18.3.1 react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) typescript: specifier: ^5.4.5 version: 5.5.4 vike: - specifier: ^0.4.178 - version: 0.4.183(vite@5.4.0(@types/node@18.19.31)) + specifier: ^0.4.188 + version: 0.4.188(react-streaming@0.3.43(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@5.4.1(@types/node@18.19.45)) vite: - specifier: ^5.2.9 - version: 5.4.0(@types/node@18.19.31) + specifier: ^5.4.1 + version: 5.4.1(@types/node@18.19.45) vite-plugin-vercel: specifier: workspace:* version: link:../../packages/vercel devDependencies: '@types/node': - specifier: ^18.19.31 - version: 18.19.31 + specifier: ^18.19.45 + version: 18.19.45 '@types/node-fetch': specifier: ^2.6.11 version: 2.6.11 '@types/react': - specifier: ^18.2.79 - version: 18.2.79 + specifier: ^18.3.3 + version: 18.3.3 '@types/react-dom': - specifier: ^18.2.25 - version: 18.2.25 + specifier: ^18.3.0 + version: 18.3.0 '@vercel/node': specifier: ^3.0.26 - version: 3.2.8(@swc/core@1.4.16) + version: 3.2.8(@swc/core@1.7.14) fast-glob: specifier: ^3.3.2 version: 3.3.2 vitest: - specifier: ^1.5.0 - version: 1.5.0(@edge-runtime/vm@3.2.0)(@types/node@18.19.31) + specifier: ^2.0.5 + version: 2.0.5(@edge-runtime/vm@4.0.2)(@types/node@18.19.45) zod: specifier: ^3.22.4 version: 3.23.8 @@ -113,44 +107,44 @@ importers: specifier: ^4.17.21 version: 4.17.21 '@types/node': - specifier: ^18.19.31 - version: 18.19.31 + specifier: ^18.19.45 + version: 18.19.45 '@types/react': - specifier: ^18.2.79 - version: 18.2.79 + specifier: ^18.3.3 + version: 18.3.3 '@types/react-dom': - specifier: ^18.2.25 - version: 18.2.25 + specifier: ^18.3.0 + version: 18.3.0 '@universal-middleware/express': - specifier: ^0.0.2 - version: 0.0.2 + specifier: ^0.2.1 + version: 0.2.1 '@vercel/node': specifier: ^3.0.26 - version: 3.2.8(@swc/core@1.4.16) + version: 3.2.8(@swc/core@1.7.14) '@vitejs/plugin-react-swc': - specifier: ^3.6.0 - version: 3.6.0(vite@5.4.0(@types/node@18.19.31)) + specifier: ^3.7.0 + version: 3.7.0(vite@5.4.1(@types/node@18.19.45)) express: specifier: ^4.19.2 version: 4.19.2 react: - specifier: ^18.2.0 - version: 18.2.0 + specifier: ^18.3.1 + version: 18.3.1 tsx: - specifier: ^4.16.2 - version: 4.16.2 + specifier: ^4.17.0 + version: 4.17.0 typescript: specifier: ^5.4.5 version: 5.5.4 vike: - specifier: ^0.4.178 - version: 0.4.183(vite@5.4.0(@types/node@18.19.31)) + specifier: ^0.4.188 + version: 0.4.188(react-streaming@0.3.43(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@5.4.1(@types/node@18.19.45)) vike-react: - specifier: ^0.4.16 - version: 0.4.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(vike@0.4.183(vite@5.4.0(@types/node@18.19.31)))(vite@5.4.0(@types/node@18.19.31)) + specifier: ^0.5.3 + version: 0.5.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vike@0.4.188(react-streaming@0.3.43(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@5.4.1(@types/node@18.19.45))) vite: - specifier: ^5.2.9 - version: 5.4.0(@types/node@18.19.31) + specifier: ^5.4.1 + version: 5.4.1(@types/node@18.19.45) examples/simple: dependencies: @@ -159,17 +153,17 @@ importers: version: link:../../packages/vercel devDependencies: '@types/node': - specifier: ^18.19.31 - version: 18.19.31 + specifier: ^18.19.45 + version: 18.19.45 '@vercel/node': specifier: ^3.0.26 - version: 3.2.8(@swc/core@1.4.16) + version: 3.2.8(@swc/core@1.7.14) typescript: specifier: ^5.4.5 version: 5.5.4 vite: - specifier: ^5.2.9 - version: 5.4.0(@types/node@18.19.31) + specifier: ^5.4.1 + version: 5.4.1(@types/node@18.19.45) packages/vercel: dependencies: @@ -177,8 +171,8 @@ importers: specifier: ^0.5.8 version: 0.5.8 '@manypkg/find-root': - specifier: ^2.2.2 - version: 2.2.2 + specifier: ^2.2.3 + version: 2.2.3 '@vercel/build-utils': specifier: ^8.3.6 version: 8.3.6 @@ -189,8 +183,8 @@ importers: specifier: ^3.1.0 version: 3.1.0 esbuild: - specifier: ^0.23.0 - version: 0.23.0 + specifier: ^0.23.1 + version: 0.23.1 fast-glob: specifier: ^3.3.2 version: 3.3.2 @@ -202,32 +196,23 @@ importers: version: 3.23.8 devDependencies: '@types/node': - specifier: ^18.19.31 - version: 18.19.31 - '@typescript-eslint/eslint-plugin': - specifier: ^7.18.0 - version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/parser': - specifier: ^7.18.0 - version: 7.18.0(eslint@8.57.0)(typescript@5.5.4) + specifier: ^18.19.45 + version: 18.19.45 '@vite-plugin-vercel/vike': specifier: workspace:* version: link:../vike-integration - eslint: - specifier: ^8.57.0 - version: 8.57.0 tsup: specifier: ^8.2.4 - version: 8.2.4(@swc/core@1.4.16)(postcss@8.4.41)(tsx@4.16.2)(typescript@5.5.4)(yaml@2.5.0) + version: 8.2.4(@swc/core@1.7.14)(postcss@8.4.41)(tsx@4.17.0)(typescript@5.5.4)(yaml@2.5.0) typescript: specifier: ^5.5.4 version: 5.5.4 vike: - specifier: ^0.4.183 - version: 0.4.183(vite@5.4.0(@types/node@18.19.31)) + specifier: ^0.4.188 + version: 0.4.188(react-streaming@0.3.43(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@5.4.1(@types/node@18.19.45)) vite: - specifier: ^5.4.0 - version: 5.4.0(@types/node@18.19.31) + specifier: ^5.4.1 + version: 5.4.1(@types/node@18.19.45) packages/vike-integration: dependencies: @@ -239,32 +224,32 @@ importers: version: 5.0.7 devDependencies: '@types/node': - specifier: ^18.19.31 - version: 18.19.31 + specifier: ^18.19.45 + version: 18.19.45 '@vercel/node': specifier: ^3.2.8 - version: 3.2.8(@swc/core@1.4.16) + version: 3.2.8(@swc/core@1.7.14) tsup: specifier: ^8.2.4 - version: 8.2.4(@swc/core@1.4.16)(postcss@8.4.41)(tsx@4.16.2)(typescript@5.5.4)(yaml@2.5.0) + version: 8.2.4(@swc/core@1.7.14)(postcss@8.4.41)(tsx@4.17.0)(typescript@5.5.4)(yaml@2.5.0) typescript: specifier: ^5.5.4 version: 5.5.4 vike: - specifier: ^0.4.183 - version: 0.4.183(vite@5.4.0(@types/node@18.19.31)) + specifier: ^0.4.188 + version: 0.4.188(react-streaming@0.3.43(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@5.4.1(@types/node@18.19.45)) vite: - specifier: ^5.4.0 - version: 5.4.0(@types/node@18.19.31) + specifier: ^5.4.1 + version: 5.4.1(@types/node@18.19.45) vite-plugin-vercel: specifier: workspace:* version: link:../vercel packages: - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} '@babel/helper-string-parser@7.24.1': resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} @@ -287,6 +272,59 @@ packages: resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} engines: {node: '>=6.9.0'} + '@biomejs/biome@1.8.3': + resolution: {integrity: sha512-/uUV3MV+vyAczO+vKrPdOW0Iaet7UnJMU4bNMinggGJTAnBPjCoLEYcyYtYHNnUNYlv4xZMH6hVIQCAozq8d5w==} + engines: {node: '>=14.21.3'} + hasBin: true + + '@biomejs/cli-darwin-arm64@1.8.3': + resolution: {integrity: sha512-9DYOjclFpKrH/m1Oz75SSExR8VKvNSSsLnVIqdnKexj6NwmiMlKk94Wa1kZEdv6MCOHGHgyyoV57Cw8WzL5n3A==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [darwin] + + '@biomejs/cli-darwin-x64@1.8.3': + resolution: {integrity: sha512-UeW44L/AtbmOF7KXLCoM+9PSgPo0IDcyEUfIoOXYeANaNXXf9mLUwV1GeF2OWjyic5zj6CnAJ9uzk2LT3v/wAw==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [darwin] + + '@biomejs/cli-linux-arm64-musl@1.8.3': + resolution: {integrity: sha512-9yjUfOFN7wrYsXt/T/gEWfvVxKlnh3yBpnScw98IF+oOeCYb5/b/+K7YNqKROV2i1DlMjg9g/EcN9wvj+NkMuQ==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-arm64@1.8.3': + resolution: {integrity: sha512-fed2ji8s+I/m8upWpTJGanqiJ0rnlHOK3DdxsyVLZQ8ClY6qLuPc9uehCREBifRJLl/iJyQpHIRufLDeotsPtw==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-x64-musl@1.8.3': + resolution: {integrity: sha512-UHrGJX7PrKMKzPGoEsooKC9jXJMa28TUSMjcIlbDnIO4EAavCoVmNQaIuUSH0Ls2mpGMwUIf+aZJv657zfWWjA==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-linux-x64@1.8.3': + resolution: {integrity: sha512-I8G2QmuE1teISyT8ie1HXsjFRz9L1m5n83U1O6m30Kw+kPMPSKjag6QGUn+sXT8V+XWIZxFFBoTDEDZW2KPDDw==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-win32-arm64@1.8.3': + resolution: {integrity: sha512-J+Hu9WvrBevfy06eU1Na0lpc7uR9tibm9maHynLIoAjLZpQU3IW+OKHUtyL8p6/3pT2Ju5t5emReeIS2SAxhkQ==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [win32] + + '@biomejs/cli-win32-x64@1.8.3': + resolution: {integrity: sha512-/PJ59vA1pnQeKahemaQf4Nyj7IKUvGQSc3Ze1uIGi+Wvr1xF7rGobSrAAG01T/gUDG21vkDsZYM03NAmPiVkqg==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [win32] + '@brillout/import@0.2.3': resolution: {integrity: sha512-1T8WlD75eeFSMrptGy8jiLHmfHgMmSjWvLOIUvHmSVZt+6k0eQqYUoK4KbmE4T9pVLIfxvZSOm2D68VEqKRHRw==} @@ -302,8 +340,8 @@ packages: '@brillout/require-shim@0.1.2': resolution: {integrity: sha512-3I4LRHnVZXoSAsEoni5mosq9l6eiJED58d9V954W4CIZ88AUfYBanWGBGbJG3NztaRTpFHEA6wB3Hn93BmmJdg==} - '@brillout/vite-plugin-server-entry@0.4.6': - resolution: {integrity: sha512-VmnbkEVNY9pGnr2ICu+5lFnT3Zz4oblWxKZ1D4kutkzljxDOOBld8oWQI1RVup7c5OiG7XOHFJYYZS38BAXiLw==} + '@brillout/vite-plugin-server-entry@0.4.8': + resolution: {integrity: sha512-bwsQx5y6LYDjDFK8B/ruEbywAR4DI1zrv8zWAPllAAZZWawwxBBgstrxTs/rUjlmqf1hHI2kYOVbO0lt8uHnyA==} '@changesets/apply-release-plan@7.0.4': resolution: {integrity: sha512-HLFwhKWayKinWAul0Vj+76jVx1Pc2v55MGPVjZ924Y/ROeSsBMFutv9heHmCUj48lJyRfOTJG5+ar+29FUky/A==} @@ -380,15 +418,17 @@ packages: resolution: {integrity: sha512-Vw0lbJ2lvRUqc7/soqygUX216Xb8T3WBZ987oywz6aJqRxcwSVWwr9e+Nqo2m9bxobA9mdbWNNoRY6S9eko1EQ==} engines: {node: '>=16'} + '@edge-runtime/primitives@5.1.0': + resolution: {integrity: sha512-bs379S/qL7b9B1fXM3xYe+g2orW7Uy0m8oIudiXLcHQyZLsdd0Gfw9STngFDnaAfAcRN5g+/YEMPSsDqiPm0TQ==} + engines: {node: '>=16'} + '@edge-runtime/vm@3.2.0': resolution: {integrity: sha512-0dEVyRLM/lG4gp1R/Ik5bfPl/1wX00xFwd5KcNH602tzBa09oF7pbTKETEhR1GjZ75K6OJnYFu8II2dyMhONMw==} engines: {node: '>=16'} - '@esbuild/aix-ppc64@0.19.12': - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] + '@edge-runtime/vm@4.0.2': + resolution: {integrity: sha512-hhawzuXYjGFtE2gvoeh0ke4ulLCWnaS3e1G/UsNI3BAxDRVxsZkzZhyrp9OM6VMi3bAOgN/de/Zvs/8OMa0Nmg==} + engines: {node: '>=16'} '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} @@ -396,470 +436,290 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.23.0': - resolution: {integrity: sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==} + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.19.12': - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.21.5': resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.23.0': - resolution: {integrity: sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==} + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.19.12': - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] - '@esbuild/android-arm@0.23.0': - resolution: {integrity: sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==} + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.19.12': - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.21.5': resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] - '@esbuild/android-x64@0.23.0': - resolution: {integrity: sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==} + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.19.12': - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.21.5': resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.23.0': - resolution: {integrity: sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==} + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.19.12': - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.21.5': resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.23.0': - resolution: {integrity: sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==} + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.19.12': - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.21.5': resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.23.0': - resolution: {integrity: sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==} + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.19.12': - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.23.0': - resolution: {integrity: sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==} + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.19.12': - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.21.5': resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.23.0': - resolution: {integrity: sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==} + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.19.12': - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.21.5': resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.23.0': - resolution: {integrity: sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==} + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.19.12': - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.21.5': resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.23.0': - resolution: {integrity: sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==} + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.19.12': - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.23.0': - resolution: {integrity: sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==} + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.19.12': - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.21.5': resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.23.0': - resolution: {integrity: sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==} + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.19.12': - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.21.5': resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.23.0': - resolution: {integrity: sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==} + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.19.12': - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.21.5': resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.23.0': - resolution: {integrity: sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==} + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.19.12': - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.21.5': resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.23.0': - resolution: {integrity: sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==} + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.19.12': - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.21.5': resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.23.0': - resolution: {integrity: sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==} + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.19.12': - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.21.5': resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.23.0': - resolution: {integrity: sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==} + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.23.0': - resolution: {integrity: sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==} + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.19.12': - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.21.5': resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.23.0': - resolution: {integrity: sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==} + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.19.12': - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.23.0': - resolution: {integrity: sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==} + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.19.12': - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.21.5': resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.23.0': - resolution: {integrity: sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==} + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.19.12': - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.21.5': resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.23.0': - resolution: {integrity: sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==} + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.19.12': - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.21.5': resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.23.0': - resolution: {integrity: sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==} + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.4.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 - - '@eslint-community/regexpp@4.10.0': - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@eslint/js@8.57.0': - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@fastify/busboy@2.1.1': resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} - '@hattip/core@0.0.45': - resolution: {integrity: sha512-4BK9dPU7sLvmP9sUq048uSaKFvQY2Qa6D0xQteQBIiDYuTdbopcUQLETM1sdkUeUtFxHPwPu/NclfJAC5INarw==} - - '@hattip/headers@0.0.45': - resolution: {integrity: sha512-owgxAt1jdhEcAdDfnlpPa8iQx/swItReYUlo8UFZ0GUCMiWJvnpl6rTdUsS6bCwMK9IJOliivN4dHEY8VKdGQw==} - - '@hattip/polyfills@0.0.45': - resolution: {integrity: sha512-H8a+NVu/rAspycnkLSLVvWu3ei/ndFhA+3KQS1p2YjCcuf4Wuj4EWfScrwgL4d6CR0J+FxqX1P9NDGa4tdJQmQ==} - - '@hattip/walk@0.0.45': - resolution: {integrity: sha512-GYEQN5n2JUzjLl9hdMJ+0mbsfwvldRKMBdxx+l29SxmRhOwyWURDyaSfX7UEkEmmxjbg4YqEoWyYgaAtxeW7Jw==} - hasBin: true - - '@humanwhocodes/config-array@0.11.14': - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead - '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -872,8 +732,8 @@ packages: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} @@ -881,21 +741,18 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@kamilkisiela/fast-url-parser@1.1.4': - resolution: {integrity: sha512-gbkePEBupNydxCelHCESvFSFM8XPh1Zs/OAVRW/rKpEqPAl5PbOM90Si8mv9bvnR53uPD2s/FiRxdvSejpRJew==} - '@manypkg/find-root@1.1.0': resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} - '@manypkg/find-root@2.2.2': - resolution: {integrity: sha512-guhclSR8MCzjRHrFdhDBppjqofGbcv5St5PM4DITT9s0mEsxFbsAusp+L5UCsed+Pd6qTi73Sr7EdQS23nmBHA==} + '@manypkg/find-root@2.2.3': + resolution: {integrity: sha512-jtEZKczWTueJYHjGpxU3KJQ08Gsrf4r6Q2GjmPp/RGk5leeYAA1eyDADSAF+KVCsQ6EwZd/FMcOFCoMhtqdCtQ==} engines: {node: '>=14.18.0'} '@manypkg/get-packages@1.1.3': resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - '@manypkg/tools@1.1.1': - resolution: {integrity: sha512-lpqC/HVb/fWljyphkEdifkr7vSfxHURnwLwKbJma7KvAkX2dl6xTsKLxwt4EpfxxuHhX7gaFOCCcs9Gqj//lEA==} + '@manypkg/tools@1.1.2': + resolution: {integrity: sha512-3lBouSuF7CqlseLB+FKES0K4FQ02JrbEoRtJhxnsyB1s5v4AP03gsoohN8jp7DcOImhaR9scYdztq3/sLfk/qQ==} engines: {node: '>=14.18.0'} '@mapbox/node-pre-gyp@1.0.11': @@ -952,83 +809,83 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.19.0': - resolution: {integrity: sha512-JlPfZ/C7yn5S5p0yKk7uhHTTnFlvTgLetl2VxqE518QgyM7C9bSfFTYvB/Q/ftkq0RIPY4ySxTz+/wKJ/dXC0w==} + '@rollup/rollup-android-arm-eabi@4.21.0': + resolution: {integrity: sha512-WTWD8PfoSAJ+qL87lE7votj3syLavxunWhzCnx3XFxFiI/BA/r3X7MUM8dVrH8rb2r4AiO8jJsr3ZjdaftmnfA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.19.0': - resolution: {integrity: sha512-RDxUSY8D1tWYfn00DDi5myxKgOk6RvWPxhmWexcICt/MEC6yEMr4HNCu1sXXYLw8iAsg0D44NuU+qNq7zVWCrw==} + '@rollup/rollup-android-arm64@4.21.0': + resolution: {integrity: sha512-a1sR2zSK1B4eYkiZu17ZUZhmUQcKjk2/j9Me2IDjk1GHW7LB5Z35LEzj9iJch6gtUfsnvZs1ZNyDW2oZSThrkA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.19.0': - resolution: {integrity: sha512-emvKHL4B15x6nlNTBMtIaC9tLPRpeA5jMvRLXVbl/W9Ie7HhkrE7KQjvgS9uxgatL1HmHWDXk5TTS4IaNJxbAA==} + '@rollup/rollup-darwin-arm64@4.21.0': + resolution: {integrity: sha512-zOnKWLgDld/svhKO5PD9ozmL6roy5OQ5T4ThvdYZLpiOhEGY+dp2NwUmxK0Ld91LrbjrvtNAE0ERBwjqhZTRAA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.19.0': - resolution: {integrity: sha512-fO28cWA1dC57qCd+D0rfLC4VPbh6EOJXrreBmFLWPGI9dpMlER2YwSPZzSGfq11XgcEpPukPTfEVFtw2q2nYJg==} + '@rollup/rollup-darwin-x64@4.21.0': + resolution: {integrity: sha512-7doS8br0xAkg48SKE2QNtMSFPFUlRdw9+votl27MvT46vo44ATBmdZdGysOevNELmZlfd+NEa0UYOA8f01WSrg==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.19.0': - resolution: {integrity: sha512-2Rn36Ubxdv32NUcfm0wB1tgKqkQuft00PtM23VqLuCUR4N5jcNWDoV5iBC9jeGdgS38WK66ElncprqgMUOyomw==} + '@rollup/rollup-linux-arm-gnueabihf@4.21.0': + resolution: {integrity: sha512-pWJsfQjNWNGsoCq53KjMtwdJDmh/6NubwQcz52aEwLEuvx08bzcy6tOUuawAOncPnxz/3siRtd8hiQ32G1y8VA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.19.0': - resolution: {integrity: sha512-gJuzIVdq/X1ZA2bHeCGCISe0VWqCoNT8BvkQ+BfsixXwTOndhtLUpOg0A1Fcx/+eA6ei6rMBzlOz4JzmiDw7JQ==} + '@rollup/rollup-linux-arm-musleabihf@4.21.0': + resolution: {integrity: sha512-efRIANsz3UHZrnZXuEvxS9LoCOWMGD1rweciD6uJQIx2myN3a8Im1FafZBzh7zk1RJ6oKcR16dU3UPldaKd83w==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.19.0': - resolution: {integrity: sha512-0EkX2HYPkSADo9cfeGFoQ7R0/wTKb7q6DdwI4Yn/ULFE1wuRRCHybxpl2goQrx4c/yzK3I8OlgtBu4xvted0ug==} + '@rollup/rollup-linux-arm64-gnu@4.21.0': + resolution: {integrity: sha512-ZrPhydkTVhyeGTW94WJ8pnl1uroqVHM3j3hjdquwAcWnmivjAwOYjTEAuEDeJvGX7xv3Z9GAvrBkEzCgHq9U1w==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.19.0': - resolution: {integrity: sha512-GlIQRj9px52ISomIOEUq/IojLZqzkvRpdP3cLgIE1wUWaiU5Takwlzpz002q0Nxxr1y2ZgxC2obWxjr13lvxNQ==} + '@rollup/rollup-linux-arm64-musl@4.21.0': + resolution: {integrity: sha512-cfaupqd+UEFeURmqNP2eEvXqgbSox/LHOyN9/d2pSdV8xTrjdg3NgOFJCtc1vQ/jEke1qD0IejbBfxleBPHnPw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.19.0': - resolution: {integrity: sha512-N6cFJzssruDLUOKfEKeovCKiHcdwVYOT1Hs6dovDQ61+Y9n3Ek4zXvtghPPelt6U0AH4aDGnDLb83uiJMkWYzQ==} + '@rollup/rollup-linux-powerpc64le-gnu@4.21.0': + resolution: {integrity: sha512-ZKPan1/RvAhrUylwBXC9t7B2hXdpb/ufeu22pG2psV7RN8roOfGurEghw1ySmX/CmDDHNTDDjY3lo9hRlgtaHg==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.19.0': - resolution: {integrity: sha512-2DnD3mkS2uuam/alF+I7M84koGwvn3ZVD7uG+LEWpyzo/bq8+kKnus2EVCkcvh6PlNB8QPNFOz6fWd5N8o1CYg==} + '@rollup/rollup-linux-riscv64-gnu@4.21.0': + resolution: {integrity: sha512-H1eRaCwd5E8eS8leiS+o/NqMdljkcb1d6r2h4fKSsCXQilLKArq6WS7XBLDu80Yz+nMqHVFDquwcVrQmGr28rg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.19.0': - resolution: {integrity: sha512-D6pkaF7OpE7lzlTOFCB2m3Ngzu2ykw40Nka9WmKGUOTS3xcIieHe82slQlNq69sVB04ch73thKYIWz/Ian8DUA==} + '@rollup/rollup-linux-s390x-gnu@4.21.0': + resolution: {integrity: sha512-zJ4hA+3b5tu8u7L58CCSI0A9N1vkfwPhWd/puGXwtZlsB5bTkwDNW/+JCU84+3QYmKpLi+XvHdmrlwUwDA6kqw==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.19.0': - resolution: {integrity: sha512-HBndjQLP8OsdJNSxpNIN0einbDmRFg9+UQeZV1eiYupIRuZsDEoeGU43NQsS34Pp166DtwQOnpcbV/zQxM+rWA==} + '@rollup/rollup-linux-x64-gnu@4.21.0': + resolution: {integrity: sha512-e2hrvElFIh6kW/UNBQK/kzqMNY5mO+67YtEh9OA65RM5IJXYTWiXjX6fjIiPaqOkBthYF1EqgiZ6OXKcQsM0hg==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.19.0': - resolution: {integrity: sha512-HxfbvfCKJe/RMYJJn0a12eiOI9OOtAUF4G6ozrFUK95BNyoJaSiBjIOHjZskTUffUrB84IPKkFG9H9nEvJGW6A==} + '@rollup/rollup-linux-x64-musl@4.21.0': + resolution: {integrity: sha512-1vvmgDdUSebVGXWX2lIcgRebqfQSff0hMEkLJyakQ9JQUbLDkEaMsPTLOmyccyC6IJ/l3FZuJbmrBw/u0A0uCQ==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.19.0': - resolution: {integrity: sha512-HxDMKIhmcguGTiP5TsLNolwBUK3nGGUEoV/BO9ldUBoMLBssvh4J0X8pf11i1fTV7WShWItB1bKAKjX4RQeYmg==} + '@rollup/rollup-win32-arm64-msvc@4.21.0': + resolution: {integrity: sha512-s5oFkZ/hFcrlAyBTONFY1TWndfyre1wOMwU+6KCpm/iatybvrRgmZVM+vCFwxmC5ZhdlgfE0N4XorsDpi7/4XQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.19.0': - resolution: {integrity: sha512-xItlIAZZaiG/u0wooGzRsx11rokP4qyc/79LkAOdznGRAbOFc+SfEdfUOszG1odsHNgwippUJavag/+W/Etc6Q==} + '@rollup/rollup-win32-ia32-msvc@4.21.0': + resolution: {integrity: sha512-G9+TEqRnAA6nbpqyUqgTiopmnfgnMkR3kMukFBDsiyy23LZvUCpiUwjTRx6ezYCjJODXrh52rBR9oXvm+Fp5wg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.19.0': - resolution: {integrity: sha512-xNo5fV5ycvCCKqiZcpB65VMR11NJB+StnxHz20jdqRAktfdfzhgjTiJ2doTDQE/7dqGaV5I7ZGqKpgph6lCIag==} + '@rollup/rollup-win32-x64-msvc@4.21.0': + resolution: {integrity: sha512-2jsCDZwtQvRhejHLfZ1JY6w6kEuEtfF9nzYsZxzSlNVKDX+DpsDJ+Rbjkm74nvg2rdx0gwBS+IMdvwJuq3S9pQ==} cpu: [x64] os: [win32] @@ -1037,74 +894,71 @@ packages: engines: {node: '>= 8.0.0'} hasBin: true - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - - '@swc/core-darwin-arm64@1.4.16': - resolution: {integrity: sha512-UOCcH1GvjRnnM/LWT6VCGpIk0OhHRq6v1U6QXuPt5wVsgXnXQwnf5k3sG5Cm56hQHDvhRPY6HCsHi/p0oek8oQ==} + '@swc/core-darwin-arm64@1.7.14': + resolution: {integrity: sha512-V0OUXjOH+hdGxDYG8NkQzy25mKOpcNKFpqtZEzLe5V/CpLJPnpg1+pMz70m14s9ZFda9OxsjlvPbg1FLUwhgIQ==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.4.16': - resolution: {integrity: sha512-t3bgqFoYLWvyVtVL6KkFNCINEoOrIlyggT/kJRgi1y0aXSr0oVgcrQ4ezJpdeahZZ4N+Q6vT3ffM30yIunELNA==} + '@swc/core-darwin-x64@1.7.14': + resolution: {integrity: sha512-9iFvUnxG6FC3An5ogp5jbBfQuUmTTwy8KMB+ZddUoPB3NR1eV+Y9vOh/tfWcenSJbgOKDLgYC5D/b1mHAprsrQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.4.16': - resolution: {integrity: sha512-DvHuwvEF86YvSd0lwnzVcjOTZ0jcxewIbsN0vc/0fqm9qBdMMjr9ox6VCam1n3yYeRtj4VFgrjeNFksqbUejdQ==} + '@swc/core-linux-arm-gnueabihf@1.7.14': + resolution: {integrity: sha512-zGJsef9qPivKSH8Vv4F/HiBXBTHZ5Hs3ZjVGo/UIdWPJF8fTL9OVADiRrl34Q7zOZEtGXRwEKLUW1SCQcbDvZA==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.4.16': - resolution: {integrity: sha512-9Uu5YlPbyCvbidjKtYEsPpyZlu16roOZ5c2tP1vHfnU9bgf5Tz5q5VovSduNxPHx+ed2iC1b1URODHvDzbbDuQ==} + '@swc/core-linux-arm64-gnu@1.7.14': + resolution: {integrity: sha512-AxV3MPsoI7i4B8FXOew3dx3N8y00YoJYvIPfxelw07RegeCEH3aHp2U2DtgbP/NV1ugZMx0TL2Z2DEvocmA51g==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.4.16': - resolution: {integrity: sha512-/YZq/qB1CHpeoL0eMzyqK5/tYZn/rzKoCYDviFU4uduSUIJsDJQuQA/skdqUzqbheOXKAd4mnJ1hT04RbJ8FPQ==} + '@swc/core-linux-arm64-musl@1.7.14': + resolution: {integrity: sha512-JDLdNjUj3zPehd4+DrQD8Ltb3B5lD8D05IwePyDWw+uR/YPc7w/TX1FUVci5h3giJnlMCJRvi1IQYV7K1n7KtQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.4.16': - resolution: {integrity: sha512-UUjaW5VTngZYDcA8yQlrFmqs1tLi1TxbKlnaJwoNhel9zRQ0yG1YEVGrzTvv4YApSuIiDK18t+Ip927bwucuVQ==} + '@swc/core-linux-x64-gnu@1.7.14': + resolution: {integrity: sha512-Siy5OvPCLLWmMdx4msnEs8HvEVUEigSn0+3pbLjv78iwzXd0qSBNHUPZyC1xeurVaUbpNDxZTpPRIwpqNE2+Og==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.4.16': - resolution: {integrity: sha512-aFhxPifevDTwEDKPi4eRYWzC0p/WYJeiFkkpNU5Uc7a7M5iMWPAbPFUbHesdlb9Jfqs5c07oyz86u+/HySBNPQ==} + '@swc/core-linux-x64-musl@1.7.14': + resolution: {integrity: sha512-FtEGm9mwtRYQNK43WMtUIadxHs/ja2rnDurB99os0ZoFTGG2IHuht2zD97W0wB8JbqEabT1XwSG9Y5wmN+ciEQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.4.16': - resolution: {integrity: sha512-bTD43MbhIHL2s5QgCwyleaGwl96Gk/scF2TaVKdUe4QlJCDV/YK9h5oIBAp63ckHtE8GHlH4c8dZNBiAXn4Org==} + '@swc/core-win32-arm64-msvc@1.7.14': + resolution: {integrity: sha512-Jp8KDlfq7Ntt2/BXr0y344cYgB1zf0DaLzDZ1ZJR6rYlAzWYSccLYcxHa97VGnsYhhPspMpmCvHid97oe2hl4A==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.4.16': - resolution: {integrity: sha512-/lmZeAN/qV5XbK2SEvi8e2RkIg8FQNYiSA8y2/Zb4gTUMKVO5JMLH0BSWMiIKMstKDPDSxMWgwJaQHF8UMyPmQ==} + '@swc/core-win32-ia32-msvc@1.7.14': + resolution: {integrity: sha512-I+cFsXF0OU0J9J4zdWiQKKLURO5dvCujH9Jr8N0cErdy54l9d4gfIxdctfTF+7FyXtWKLTCkp+oby9BQhkFGWA==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.4.16': - resolution: {integrity: sha512-BPAfFfODWXtUu6SwaTTftDHvcbDyWBSI/oanUeRbQR5vVWkXoQ3cxLTsDluc3H74IqXS5z1Uyoe0vNo2hB1opA==} + '@swc/core-win32-x64-msvc@1.7.14': + resolution: {integrity: sha512-NNrprQCK6d28mG436jVo2TD+vACHseUECacEBGZ9Ef0qfOIWS1XIt2MisQKG0Oea2VvLFl6tF/V4Lnx/H0Sn3Q==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.4.16': - resolution: {integrity: sha512-Xaf+UBvW6JNuV131uvSNyMXHn+bh6LyKN4tbv7tOUFQpXyz/t9YWRE04emtlUW9Y0qrm/GKFCbY8n3z6BpZbTA==} + '@swc/core@1.7.14': + resolution: {integrity: sha512-9aeXeifnyuvc2pcuuhPQgVUwdpGEzZ+9nJu0W8/hNl/aESFsJGR5i9uQJRGu0atoNr01gK092fvmqMmQAPcKow==} engines: {node: '>=10'} peerDependencies: - '@swc/helpers': ^0.5.0 + '@swc/helpers': '*' peerDependenciesMeta: '@swc/helpers': optional: true @@ -1112,8 +966,8 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/types@0.1.6': - resolution: {integrity: sha512-/JLo/l2JsT/LRd80C3HfbmVpxOAJ11FO2RCEslFrgzLltoP9j8XIbsyDcfCt2WWyX+CM96rBoNM+IToAkFOugg==} + '@swc/types@0.1.12': + resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==} '@ts-morph/common@0.11.1': resolution: {integrity: sha512-7hWZS0NRpEsNV8vWJzg7FEz6V8MaLNeJOmwmghqUXTpzk16V1LLZhdo+4QvE/+zv4cVci0OviuJFnqhEfoV3+g==} @@ -1184,8 +1038,8 @@ packages: '@types/node@16.18.11': resolution: {integrity: sha512-3oJbGBUWuS6ahSnEq1eN2XrCyf4YsWI8OyCvo7c64zQJNplk3mO84t53o8lfTk+2ji59g5ycfc6qQ3fdHliHuA==} - '@types/node@18.19.31': - resolution: {integrity: sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==} + '@types/node@18.19.45': + resolution: {integrity: sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==} '@types/prop-types@15.7.12': resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} @@ -1196,11 +1050,11 @@ packages: '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - '@types/react-dom@18.2.25': - resolution: {integrity: sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA==} + '@types/react-dom@18.3.0': + resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} - '@types/react@18.2.79': - resolution: {integrity: sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==} + '@types/react@18.3.3': + resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} '@types/semver@7.5.8': resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} @@ -1217,69 +1071,14 @@ packages: '@types/unist@3.0.2': resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} - '@typescript-eslint/eslint-plugin@7.18.0': - resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@7.18.0': - resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/scope-manager@7.18.0': - resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/type-utils@7.18.0': - resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/types@7.18.0': - resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/typescript-estree@7.18.0': - resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/utils@7.18.0': - resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - - '@typescript-eslint/visitor-keys@7.18.0': - resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} - engines: {node: ^18.18.0 || >=20.0.0} - '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@universal-middleware/express@0.0.2': - resolution: {integrity: sha512-qw9v/OOpmfcz69369xeDq3u8ZRJhd8l+0B6qo5uCcgUh7zWt5mOl6gPVciIxXuyrlgcHVW86hNoyf7pPLIQGlg==} + '@universal-middleware/core@0.2.3': + resolution: {integrity: sha512-7dQTpMMApyK1AJ3m+PoZTWOYSUvUDSeOpQYO7yszaF9Wg9YzsAHuy3un0SuvZcxPImho4C/zez7Cd5Ah/cBZwQ==} + + '@universal-middleware/express@0.2.1': + resolution: {integrity: sha512-2jJPTviLbFRj5sywjKbVc8q9emdp2gY2GCkZfwN9ZcwrsgUjWSqFS+f1VmI7sdoB/r6LX3oZ4cOoCjuzB59ndw==} '@vercel/build-utils@8.3.6': resolution: {integrity: sha512-EPwr8tXu41aoXg9QBiF98clu5AHbKtwbp3SeX/W6c8L0fhLwiT+H/s3WDuOL/UMz0TT3B8JAdY4PZioWNEAf6g==} @@ -1287,8 +1086,8 @@ packages: '@vercel/edge-config-fs@0.1.0': resolution: {integrity: sha512-NRIBwfcS0bUoUbRWlNGetqjvLSwgYH/BqKqDN7vK1g32p7dN96k0712COgaz6VFizAm9b0g6IG6hR6+hc0KCPg==} - '@vercel/edge-config@1.1.0': - resolution: {integrity: sha512-es/4BzzKfyUilL5E1knR42MZHJqHMRfqitrnv18gVZZUha9ywrX3qNoCrPsNMJ1HS8xAAz/FJEyel7YFIDfKoQ==} + '@vercel/edge-config@1.2.1': + resolution: {integrity: sha512-SsRHAe22GfVXsEVJggvTdwsvAWZTrLNuy6lqb4dNE4IibHKKZplnt2s5aCdeVpLTM45xvj/6xaTYkkXCZsqSrw==} engines: {node: '>=14.6'} peerDependencies: '@opentelemetry/api': ^1.7.0 @@ -1317,37 +1116,28 @@ packages: '@vercel/static-config@3.0.0': resolution: {integrity: sha512-2qtvcBJ1bGY0dYGYh3iM7yGKkk971FujLEDXzuW5wcZsPr1GSEjO/w2iSr3qve6nDDtBImsGoDEnus5FI4+fIw==} - '@vitejs/plugin-react-swc@3.6.0': - resolution: {integrity: sha512-XFRbsGgpGxGzEV5i5+vRiro1bwcIaZDIdBRP16qwm+jP68ue/S8FJTBEgOeojtVDYrbSua3XFp71kC8VJE6v+g==} + '@vitejs/plugin-react-swc@3.7.0': + resolution: {integrity: sha512-yrknSb3Dci6svCd/qhHqhFPDSw0QtjumcqdKMoNNzmOl5lMXTTiqzjWtG4Qask2HdvvzaNgSunbQGet8/GrKdA==} peerDependencies: vite: ^4 || ^5 - '@vitest/expect@1.5.0': - resolution: {integrity: sha512-0pzuCI6KYi2SIC3LQezmxujU9RK/vwC1U9R0rLuGlNGcOuDWxqWKu6nUdFsX9tH1WU0SXtAxToOsEjeUn1s3hA==} - - '@vitest/runner@1.5.0': - resolution: {integrity: sha512-7HWwdxXP5yDoe7DTpbif9l6ZmDwCzcSIK38kTSIt6CFEpMjX4EpCgT6wUmS0xTXqMI6E/ONmfgRKmaujpabjZQ==} - - '@vitest/snapshot@1.5.0': - resolution: {integrity: sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==} + '@vitest/expect@2.0.5': + resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} - '@vitest/spy@1.5.0': - resolution: {integrity: sha512-vu6vi6ew5N5MMHJjD5PoakMRKYdmIrNJmyfkhRpQt5d9Ewhw9nZ5Aqynbi3N61bvk9UvZ5UysMT6ayIrZ8GA9w==} + '@vitest/pretty-format@2.0.5': + resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} - '@vitest/utils@1.5.0': - resolution: {integrity: sha512-BDU0GNL8MWkRkSRdNFvCUCAVOeHaUlVJ9Tx0TYBZyXaaOTmGtUFObzchCivIBrIwKzvZA7A9sCejVhXM2aY98A==} + '@vitest/runner@2.0.5': + resolution: {integrity: sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==} - '@whatwg-node/events@0.1.1': - resolution: {integrity: sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==} - engines: {node: '>=16.0.0'} + '@vitest/snapshot@2.0.5': + resolution: {integrity: sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==} - '@whatwg-node/fetch@0.9.18': - resolution: {integrity: sha512-hqoz6StCW+AjV/3N+vg0s1ah82ptdVUb9nH2ttj3UbySOXUvytWw2yqy8c1cKzyRk6mDD00G47qS3fZI9/gMjg==} - engines: {node: '>=16.0.0'} + '@vitest/spy@2.0.5': + resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} - '@whatwg-node/node-fetch@0.5.11': - resolution: {integrity: sha512-LS8tSomZa3YHnntpWt3PP43iFEEl6YeIsvDakczHBKlay5LdkXFr8w7v8H6akpG5nRrzydyB0k1iE2eoL6aKIQ==} - engines: {node: '>=16.0.0'} + '@vitest/utils@2.0.5': + resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} @@ -1370,8 +1160,8 @@ packages: resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} hasBin: true @@ -1389,10 +1179,6 @@ packages: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} - ansi-escapes@7.0.0: - resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} - engines: {node: '>=18'} - ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -1409,10 +1195,6 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} @@ -1448,8 +1230,9 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} astring@1.8.6: resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} @@ -1513,10 +1296,6 @@ packages: peerDependencies: esbuild: '>=0.18' - busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -1529,32 +1308,20 @@ packages: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@4.4.1: - resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} - engines: {node: '>=4'} + chai@5.1.1: + resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} + engines: {node: '>=12'} chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} @@ -1570,8 +1337,9 @@ packages: chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} @@ -1588,14 +1356,6 @@ packages: cjs-module-lexer@1.2.3: resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} - cli-cursor@5.0.0: - resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} - engines: {node: '>=18'} - - cli-truncate@4.0.0: - resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} - engines: {node: '>=18'} - code-block-writer@10.1.1: resolution: {integrity: sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==} @@ -1619,9 +1379,6 @@ packages: resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} hasBin: true - colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -1629,10 +1386,6 @@ packages: comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} - engines: {node: '>=18'} - commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} @@ -1640,9 +1393,6 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - confbox@0.1.7: - resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} - consola@3.2.3: resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} engines: {node: ^14.18.0 || >=16.10.0} @@ -1727,13 +1477,10 @@ packages: decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} - deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -1768,10 +1515,6 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -1780,10 +1523,6 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -1812,10 +1551,6 @@ packages: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} - environment@1.1.0: - resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} - engines: {node: '>=18'} - es-define-property@1.0.0: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} @@ -1827,8 +1562,8 @@ packages: es-module-lexer@1.4.1: resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} - es-module-lexer@1.5.0: - resolution: {integrity: sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==} + es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} esbuild-android-64@0.14.47: resolution: {integrity: sha512-R13Bd9+tqLVFndncMHssZrPWe6/0Kpv2/dt4aA69soX4PRxlzsVpCvoJeFE8sOEoeVEiBkI0myjlkDodXlHa0g==} @@ -1955,18 +1690,13 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} - engines: {node: '>=12'} - hasBin: true - esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} hasBin: true - esbuild@0.23.0: - resolution: {integrity: sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==} + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} engines: {node: '>=18'} hasBin: true @@ -1977,44 +1707,11 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - estree-util-attach-comments@3.0.0: resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} @@ -2036,17 +1733,10 @@ packages: estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -2069,9 +1759,6 @@ packages: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} - fast-decode-uri-component@1.0.1: - resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -2082,12 +1769,6 @@ packages: fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fast-querystring@1.1.2: - resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} - fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} @@ -2098,10 +1779,6 @@ packages: fflate@0.7.4: resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==} - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} @@ -2124,13 +1801,6 @@ packages: find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - - flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - foreground-child@3.1.1: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} engines: {node: '>=14'} @@ -2179,10 +1849,6 @@ packages: engines: {node: '>=10'} deprecated: This package is no longer supported. - get-east-asian-width@1.2.0: - resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} - engines: {node: '>=18'} - get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} @@ -2198,17 +1864,13 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - get-tsconfig@4.7.5: - resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} + get-tsconfig@4.7.6: + resolution: {integrity: sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==} glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - glob@10.3.12: resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} engines: {node: '>=16 || 14 >=14.17'} @@ -2218,10 +1880,6 @@ packages: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -2232,17 +1890,10 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} @@ -2293,11 +1944,6 @@ packages: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} - husky@9.1.4: - resolution: {integrity: sha512-bho94YyReb4JV7LYWRWxZ/xr6TtOTt8cMfmQ39MQYJ7f/YE268s3GdghGwi+y4zAeqewE5zYLvuhV0M0ijsDEA==} - engines: {node: '>=18'} - hasBin: true - iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -2306,14 +1952,6 @@ packages: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -2352,14 +1990,6 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - - is-fullwidth-code-point@5.0.0: - resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} - engines: {node: '>=18'} - is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -2371,10 +2001,6 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -2419,9 +2045,6 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@9.0.0: - resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} - js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -2430,9 +2053,6 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - json-schema-to-ts@1.6.4: resolution: {integrity: sha512-pR4yQ9DHz6itqswtHCm26mw45FSNfQ9rEQjosaZErhn5J3J2sIViQiz8rDaezjKAhFGpmsoczYVBgGHzFw/stA==} @@ -2442,19 +2062,9 @@ packages: json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - lilconfig@3.1.2: resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} engines: {node: '>=14'} @@ -2465,15 +2075,6 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - lint-staged@15.2.8: - resolution: {integrity: sha512-PUWFf2zQzsd9EFU+kM1d7UP+AZDbKFKuj+9JNVTBkhUFhbg4MAt6WfyMMwBfM4lYqd4D2Jwac5iuTu9rVj4zCQ==} - engines: {node: '>=18.12.0'} - hasBin: true - - listr2@8.2.4: - resolution: {integrity: sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==} - engines: {node: '>=18.0.0'} - load-tsconfig@0.2.5: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2482,10 +2083,6 @@ packages: resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} engines: {node: '>=6'} - local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} - engines: {node: '>=14'} - locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -2494,19 +2091,12 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.sortby@4.7.0: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - log-update@6.1.0: - resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} - engines: {node: '>=18'} - longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -2514,8 +2104,8 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + loupe@3.1.1: + resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} lru-cache@10.2.0: resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} @@ -2524,8 +2114,8 @@ packages: lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - magic-string@0.30.10: - resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} magicast@0.3.4: resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} @@ -2695,10 +2285,6 @@ packages: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} - mimic-function@5.0.1: - resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} - engines: {node: '>=18'} - minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -2727,9 +2313,6 @@ packages: engines: {node: '>=10'} hasBin: true - mlly@1.6.1: - resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} - mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -2760,9 +2343,6 @@ packages: engines: {node: ^18 || >=20} hasBin: true - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -2771,9 +2351,6 @@ packages: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} - node-fetch-native@1.6.4: - resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} - node-fetch@2.6.9: resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} engines: {node: 4.x || >=6.0.0} @@ -2844,14 +2421,6 @@ packages: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} - onetime@7.0.0: - resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} - engines: {node: '>=18'} - - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} - os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -2871,10 +2440,6 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} - p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -2894,10 +2459,6 @@ packages: pako@0.2.9: resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - parse-css-color@0.2.1: resolution: {integrity: sha512-bwS/GGIFV3b6KS4uwpzCFj4w297Yl3uqnSgIPsoQkx7GMLROXfMnWvxfNkL0oh8HVhZA4hvJoEoEIqonfJ3BWg==} @@ -2951,8 +2512,9 @@ packages: pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} @@ -2967,11 +2529,6 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true - pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} @@ -2984,9 +2541,6 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} - pkg-types@1.1.0: - resolution: {integrity: sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA==} - postcss-load-config@6.0.1: resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} engines: {node: '>= 18'} @@ -3016,24 +2570,11 @@ packages: resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==} engines: {node: '>=10'} - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} hasBin: true - prettier@3.3.3: - resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} - engines: {node: '>=14'} - hasBin: true - - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - pretty-ms@7.0.1: resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} engines: {node: '>=10'} @@ -3067,22 +2608,19 @@ packages: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} - react-dom@18.2.0: - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} peerDependencies: - react: ^18.2.0 - - react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + react: ^18.3.1 - react-streaming@0.3.37: - resolution: {integrity: sha512-DPYfmyDZsjSJX0jc27bCAWbKR3z1Bh5olu6kDkL8ghL2cg55MtojicDh4Xpn3OwpWIS5RxVX/ss99/pOkAOfIg==} + react-streaming@0.3.43: + resolution: {integrity: sha512-ULRCEEJu9bhMiupIR96dmE7i1j1+y7K/InE5uuF3AcP0iFFzsqdKLltGqB72ktOhfwn++iyWnzh1PHnKqR/xNw==} peerDependencies: react: '>=18' react-dom: '>=18' - react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} read-yaml-file@1.1.0: @@ -3113,10 +2651,6 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} @@ -3124,24 +2658,17 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - restore-cursor@5.1.0: - resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} - engines: {node: '>=18'} - reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rollup@4.19.0: - resolution: {integrity: sha512-5r7EYSQIowHsK4eTZ0Y81qpZuJz+MUuYeqmmYmRMl1nwhdmbiYqt5jwzf6u7wyOzJgYqtCRMtVRKOtHANBz7rA==} + rollup@4.21.0: + resolution: {integrity: sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3158,15 +2685,15 @@ packages: resolution: {integrity: sha512-XU9EELUEZuioT4acLIpCXxHcFzrsC8muvg0MY28d+TlqwxbkTzBmWbw+3+hnCzXT7YZ0Qm8k3eXktDaEu+qmEw==} engines: {node: '>=16'} - scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.2: - resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} hasBin: true @@ -3230,14 +2757,6 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} - - slice-ansi@7.1.0: - resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} - engines: {node: '>=18'} - source-map-js@1.2.0: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} @@ -3276,14 +2795,6 @@ packages: std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - - string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -3292,10 +2803,6 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} - string-width@7.1.0: - resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==} - engines: {node: '>=18'} - string.prototype.codepointat@0.2.1: resolution: {integrity: sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==} @@ -3325,13 +2832,6 @@ packages: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - strip-literal@2.1.0: - resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} - style-to-object@0.4.4: resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} @@ -3347,10 +2847,6 @@ packages: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - tar@6.2.1: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} @@ -3359,9 +2855,6 @@ packages: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -3376,15 +2869,19 @@ packages: tiny-inflate@1.0.3: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} - tinybench@2.8.0: - resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinypool@1.0.1: + resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} + engines: {node: ^18.0.0 || >=20.0.0} - tinypool@0.8.4: - resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} engines: {node: '>=14.0.0'} - tinyspy@2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + tinyspy@3.0.0: + resolution: {integrity: sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==} engines: {node: '>=14.0.0'} tmp@0.0.33: @@ -3423,20 +2920,6 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - ts-api-utils@1.3.0: - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - - ts-essentials@9.4.1: - resolution: {integrity: sha512-oke0rI2EN9pzHsesdmrOrnqv1eQODmJpd/noJjwj2ZPC3Z4N2wbjrOEqnsEgmvlO2+4fBb0a794DCna2elEVIQ==} - peerDependencies: - typescript: '>=4.1.0' - peerDependenciesMeta: - typescript: - optional: true - ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} @@ -3460,9 +2943,6 @@ packages: ts-toolbelt@6.15.5: resolution: {integrity: sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A==} - tslib@2.6.3: - resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} - tsup@8.2.4: resolution: {integrity: sha512-akpCPePnBnC/CXgRrcy72ZSntgIEUa1jN0oJbbvpALWKNOz1B7aM+UVDWGRGIO/T/PZugAESWDJUAb5FD48o8Q==} engines: {node: '>=18'} @@ -3482,23 +2962,11 @@ packages: typescript: optional: true - tsx@4.16.2: - resolution: {integrity: sha512-C1uWweJDgdtX2x600HjaFaucXTilT7tgUZHbOE4+ypskZ1OP8CRCSDkCxG6Vya9EwaFIVagWwpaVAn5wzypaqQ==} + tsx@4.17.0: + resolution: {integrity: sha512-eN4mnDA5UMKDt4YZixo9tBioibaMBpoxBkD+rIPAjVmYERSG0/dWEY1CEFuV89CgASlKL499q8AhmkMnnjtOJg==} engines: {node: '>=18.0.0'} hasBin: true - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -3513,9 +2981,6 @@ packages: engines: {node: '>=14.17'} hasBin: true - ufo@1.5.3: - resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} - undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} @@ -3561,9 +3026,6 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - urlpattern-polyfill@10.0.0: - resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} - util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -3584,32 +3046,31 @@ packages: vfile@6.0.1: resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} - vike-react@0.4.16: - resolution: {integrity: sha512-lawyL8HHjVgDNwPRp21qsmOLHokGdjElm6zgKaVg0ul5Dcv6JxglaTfqq5P8NU6V8MW4vYd7WqxSpv64iscu4Q==} + vike-react@0.5.3: + resolution: {integrity: sha512-qiV+Jrn79QBNZfxcyEO7xIfqfXSs3A5T7btfDyq9bUVo7OfKHuI6qHXHDghbUlVujEf/Kn84kYwLIoQhk1JRLQ==} peerDependencies: react: '>=18.0.0' react-dom: '>=18.0.0' - vike: '>=0.4.178' - vite: '>=4.3.8' + vike: '>=0.4.182' - vike@0.4.183: - resolution: {integrity: sha512-582bqksbXiC64UHac6cth0RyovhPySevEqICB5bFBa5PzuqW5t9Q7dnmpeqN1/GNHO8q15Qztn51pcTp0j+U8Q==} + vike@0.4.188: + resolution: {integrity: sha512-1gY2hNFSPiiDS4FvRcv7Gn5pxjYw7kQbbVhVuncP36RiszOuIkGUqjaATvVK3t2NeULvaLId4rDgV83dda7XEw==} engines: {node: '>=18.0.0'} hasBin: true peerDependencies: react-streaming: '>=0.3.42' - vite: '>=4.4.0' + vite: '>=5.1.0' peerDependenciesMeta: react-streaming: optional: true - vite-node@1.5.0: - resolution: {integrity: sha512-tV8h6gMj6vPzVCa7l+VGq9lwoJjW8Y79vst8QZZGiuRAfijU+EEWuc0kFpmndQrWhMMhet1jdSF+40KSZUqIIw==} + vite-node@2.0.5: + resolution: {integrity: sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite@5.4.0: - resolution: {integrity: sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==} + vite@5.4.1: + resolution: {integrity: sha512-1oE6yuNXssjrZdblI9AfBbHCC41nnyoVoEZxQnID6yvQZAFBzxxkqoFLtHUMkYunL8hwOLEjgTuxpkRxvba3kA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -3639,15 +3100,15 @@ packages: terser: optional: true - vitest@1.5.0: - resolution: {integrity: sha512-d8UKgR0m2kjdxDWX6911uwxout6GHS0XaGH1cksSIVVG8kRlE7G7aBw7myKQCvDI5dT4j7ZMa+l706BIORMDLw==} + vitest@2.0.5: + resolution: {integrity: sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.5.0 - '@vitest/ui': 1.5.0 + '@vitest/browser': 2.0.5 + '@vitest/ui': 2.0.5 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -3693,8 +3154,8 @@ packages: engines: {node: '>= 8'} hasBin: true - why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} hasBin: true @@ -3709,10 +3170,6 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} - wrap-ansi@9.0.0: - resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} - engines: {node: '>=18'} - wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -3735,10 +3192,6 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - yoga-wasm-web@0.3.3: resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==} @@ -3750,7 +3203,10 @@ packages: snapshots: - '@aashutoshrathi/word-wrap@1.2.6': {} + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 '@babel/helper-string-parser@7.24.1': {} @@ -3770,6 +3226,41 @@ snapshots: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + '@biomejs/biome@1.8.3': + optionalDependencies: + '@biomejs/cli-darwin-arm64': 1.8.3 + '@biomejs/cli-darwin-x64': 1.8.3 + '@biomejs/cli-linux-arm64': 1.8.3 + '@biomejs/cli-linux-arm64-musl': 1.8.3 + '@biomejs/cli-linux-x64': 1.8.3 + '@biomejs/cli-linux-x64-musl': 1.8.3 + '@biomejs/cli-win32-arm64': 1.8.3 + '@biomejs/cli-win32-x64': 1.8.3 + + '@biomejs/cli-darwin-arm64@1.8.3': + optional: true + + '@biomejs/cli-darwin-x64@1.8.3': + optional: true + + '@biomejs/cli-linux-arm64-musl@1.8.3': + optional: true + + '@biomejs/cli-linux-arm64@1.8.3': + optional: true + + '@biomejs/cli-linux-x64-musl@1.8.3': + optional: true + + '@biomejs/cli-linux-x64@1.8.3': + optional: true + + '@biomejs/cli-win32-arm64@1.8.3': + optional: true + + '@biomejs/cli-win32-x64@1.8.3': + optional: true + '@brillout/import@0.2.3': {} '@brillout/json-serializer@0.5.13': {} @@ -3780,7 +3271,7 @@ snapshots: '@brillout/require-shim@0.1.2': {} - '@brillout/vite-plugin-server-entry@0.4.6': + '@brillout/vite-plugin-server-entry@0.4.8': dependencies: '@brillout/import': 0.2.3 @@ -3799,7 +3290,7 @@ snapshots: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.6.2 + semver: 7.6.3 '@changesets/assemble-release-plan@6.0.3': dependencies: @@ -3809,7 +3300,7 @@ snapshots: '@changesets/should-skip-package': 0.1.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - semver: 7.6.2 + semver: 7.6.3 '@changesets/changelog-git@0.2.0': dependencies: @@ -3846,7 +3337,7 @@ snapshots: p-limit: 2.3.0 preferred-pm: 3.1.3 resolve-from: 5.0.0 - semver: 7.6.2 + semver: 7.6.3 spawndamnit: 2.0.0 term-size: 2.2.1 @@ -3870,7 +3361,7 @@ snapshots: '@manypkg/get-packages': 1.1.3 chalk: 2.4.2 fs-extra: 7.0.1 - semver: 7.6.2 + semver: 7.6.3 '@changesets/get-release-plan@4.0.3': dependencies: @@ -3952,274 +3443,160 @@ snapshots: '@edge-runtime/primitives@4.1.0': {} + '@edge-runtime/primitives@5.1.0': + optional: true + '@edge-runtime/vm@3.2.0': dependencies: '@edge-runtime/primitives': 4.1.0 - '@esbuild/aix-ppc64@0.19.12': + '@edge-runtime/vm@4.0.2': + dependencies: + '@edge-runtime/primitives': 5.1.0 optional: true '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/aix-ppc64@0.23.0': - optional: true - - '@esbuild/android-arm64@0.19.12': + '@esbuild/aix-ppc64@0.23.1': optional: true '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm64@0.23.0': - optional: true - - '@esbuild/android-arm@0.19.12': + '@esbuild/android-arm64@0.23.1': optional: true '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-arm@0.23.0': - optional: true - - '@esbuild/android-x64@0.19.12': + '@esbuild/android-arm@0.23.1': optional: true '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/android-x64@0.23.0': - optional: true - - '@esbuild/darwin-arm64@0.19.12': + '@esbuild/android-x64@0.23.1': optional: true '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.23.0': - optional: true - - '@esbuild/darwin-x64@0.19.12': + '@esbuild/darwin-arm64@0.23.1': optional: true '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/darwin-x64@0.23.0': - optional: true - - '@esbuild/freebsd-arm64@0.19.12': + '@esbuild/darwin-x64@0.23.1': optional: true '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.23.0': - optional: true - - '@esbuild/freebsd-x64@0.19.12': + '@esbuild/freebsd-arm64@0.23.1': optional: true '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.23.0': - optional: true - - '@esbuild/linux-arm64@0.19.12': + '@esbuild/freebsd-x64@0.23.1': optional: true '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm64@0.23.0': - optional: true - - '@esbuild/linux-arm@0.19.12': + '@esbuild/linux-arm64@0.23.1': optional: true '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-arm@0.23.0': - optional: true - - '@esbuild/linux-ia32@0.19.12': + '@esbuild/linux-arm@0.23.1': optional: true '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-ia32@0.23.0': - optional: true - - '@esbuild/linux-loong64@0.19.12': + '@esbuild/linux-ia32@0.23.1': optional: true '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-loong64@0.23.0': - optional: true - - '@esbuild/linux-mips64el@0.19.12': + '@esbuild/linux-loong64@0.23.1': optional: true '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-mips64el@0.23.0': - optional: true - - '@esbuild/linux-ppc64@0.19.12': + '@esbuild/linux-mips64el@0.23.1': optional: true '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-ppc64@0.23.0': - optional: true - - '@esbuild/linux-riscv64@0.19.12': + '@esbuild/linux-ppc64@0.23.1': optional: true '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.23.0': - optional: true - - '@esbuild/linux-s390x@0.19.12': + '@esbuild/linux-riscv64@0.23.1': optional: true '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-s390x@0.23.0': - optional: true - - '@esbuild/linux-x64@0.19.12': + '@esbuild/linux-s390x@0.23.1': optional: true '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/linux-x64@0.23.0': - optional: true - - '@esbuild/netbsd-x64@0.19.12': + '@esbuild/linux-x64@0.23.1': optional: true '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.23.0': + '@esbuild/netbsd-x64@0.23.1': optional: true - '@esbuild/openbsd-arm64@0.23.0': - optional: true - - '@esbuild/openbsd-x64@0.19.12': + '@esbuild/openbsd-arm64@0.23.1': optional: true '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.23.0': - optional: true - - '@esbuild/sunos-x64@0.19.12': + '@esbuild/openbsd-x64@0.23.1': optional: true '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.23.0': - optional: true - - '@esbuild/win32-arm64@0.19.12': + '@esbuild/sunos-x64@0.23.1': optional: true '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-arm64@0.23.0': - optional: true - - '@esbuild/win32-ia32@0.19.12': + '@esbuild/win32-arm64@0.23.1': optional: true '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-ia32@0.23.0': - optional: true - - '@esbuild/win32-x64@0.19.12': - optional: true - - '@esbuild/win32-x64@0.21.5': - optional: true - - '@esbuild/win32-x64@0.23.0': - optional: true - - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': - dependencies: - eslint: 8.57.0 - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.10.0': {} - - '@eslint/eslintrc@2.1.4': - dependencies: - ajv: 6.12.6 - debug: 4.3.6 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@8.57.0': {} - - '@fastify/busboy@2.1.1': {} - - '@hattip/core@0.0.45': {} - - '@hattip/headers@0.0.45': - dependencies: - '@hattip/core': 0.0.45 - - '@hattip/polyfills@0.0.45': - dependencies: - '@hattip/core': 0.0.45 - '@whatwg-node/fetch': 0.9.18 - node-fetch-native: 1.6.4 - - '@hattip/walk@0.0.45': - dependencies: - '@hattip/headers': 0.0.45 - cac: 6.7.14 - mime-types: 2.1.35 - - '@humanwhocodes/config-array@0.11.14': - dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.6 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + '@esbuild/win32-ia32@0.23.1': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true - '@humanwhocodes/module-importer@1.0.1': {} + '@esbuild/win32-x64@0.23.1': + optional: true - '@humanwhocodes/object-schema@2.0.3': {} + '@fastify/busboy@2.1.1': {} '@isaacs/cliui@8.0.2': dependencies: @@ -4230,33 +3607,27 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@jest/schemas@29.6.3': - dependencies: - '@sinclair/typebox': 0.27.8 - '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/set-array@1.2.1': {} - '@jridgewell/sourcemap-codec@1.4.15': {} + '@jridgewell/sourcemap-codec@1.5.0': {} '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - - '@kamilkisiela/fast-url-parser@1.1.4': {} + '@jridgewell/sourcemap-codec': 1.5.0 '@manypkg/find-root@1.1.0': dependencies: @@ -4265,11 +3636,9 @@ snapshots: find-up: 4.1.0 fs-extra: 8.1.0 - '@manypkg/find-root@2.2.2': + '@manypkg/find-root@2.2.3': dependencies: - '@manypkg/tools': 1.1.1 - find-up: 4.1.0 - fs-extra: 8.1.0 + '@manypkg/tools': 1.1.2 '@manypkg/get-packages@1.1.3': dependencies: @@ -4280,12 +3649,11 @@ snapshots: globby: 11.1.0 read-yaml-file: 1.1.0 - '@manypkg/tools@1.1.1': + '@manypkg/tools@1.1.2': dependencies: - fs-extra: 8.1.0 - globby: 11.1.0 + fast-glob: 3.3.2 jju: 1.4.0 - read-yaml-file: 1.1.0 + js-yaml: 4.1.0 '@mapbox/node-pre-gyp@1.0.11': dependencies: @@ -4296,7 +3664,7 @@ snapshots: nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 - semver: 7.6.2 + semver: 7.6.3 tar: 6.2.1 transitivePeerDependencies: - encoding @@ -4330,17 +3698,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@mdx-js/react@3.0.1(@types/react@18.2.79)(react@18.2.0)': + '@mdx-js/react@3.0.1(@types/react@18.3.3)(react@18.3.1)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 18.2.79 - react: 18.2.0 + '@types/react': 18.3.3 + react: 18.3.1 - '@mdx-js/rollup@3.0.1(rollup@4.19.0)': + '@mdx-js/rollup@3.0.1(rollup@4.21.0)': dependencies: '@mdx-js/mdx': 3.0.1 - '@rollup/pluginutils': 5.1.0(rollup@4.19.0) - rollup: 4.19.0 + '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + rollup: 4.21.0 source-map: 0.7.4 vfile: 6.0.1 transitivePeerDependencies: @@ -4370,60 +3738,60 @@ snapshots: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rollup/pluginutils@5.1.0(rollup@4.19.0)': + '@rollup/pluginutils@5.1.0(rollup@4.21.0)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.19.0 + rollup: 4.21.0 - '@rollup/rollup-android-arm-eabi@4.19.0': + '@rollup/rollup-android-arm-eabi@4.21.0': optional: true - '@rollup/rollup-android-arm64@4.19.0': + '@rollup/rollup-android-arm64@4.21.0': optional: true - '@rollup/rollup-darwin-arm64@4.19.0': + '@rollup/rollup-darwin-arm64@4.21.0': optional: true - '@rollup/rollup-darwin-x64@4.19.0': + '@rollup/rollup-darwin-x64@4.21.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.19.0': + '@rollup/rollup-linux-arm-gnueabihf@4.21.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.19.0': + '@rollup/rollup-linux-arm-musleabihf@4.21.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.19.0': + '@rollup/rollup-linux-arm64-gnu@4.21.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.19.0': + '@rollup/rollup-linux-arm64-musl@4.21.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.19.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.21.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.19.0': + '@rollup/rollup-linux-riscv64-gnu@4.21.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.19.0': + '@rollup/rollup-linux-s390x-gnu@4.21.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.19.0': + '@rollup/rollup-linux-x64-gnu@4.21.0': optional: true - '@rollup/rollup-linux-x64-musl@4.19.0': + '@rollup/rollup-linux-x64-musl@4.21.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.19.0': + '@rollup/rollup-win32-arm64-msvc@4.21.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.19.0': + '@rollup/rollup-win32-ia32-msvc@4.21.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.19.0': + '@rollup/rollup-win32-x64-msvc@4.21.0': optional: true '@shuding/opentype.js@1.4.0-beta.0': @@ -4431,57 +3799,55 @@ snapshots: fflate: 0.7.4 string.prototype.codepointat: 0.2.1 - '@sinclair/typebox@0.27.8': {} - - '@swc/core-darwin-arm64@1.4.16': + '@swc/core-darwin-arm64@1.7.14': optional: true - '@swc/core-darwin-x64@1.4.16': + '@swc/core-darwin-x64@1.7.14': optional: true - '@swc/core-linux-arm-gnueabihf@1.4.16': + '@swc/core-linux-arm-gnueabihf@1.7.14': optional: true - '@swc/core-linux-arm64-gnu@1.4.16': + '@swc/core-linux-arm64-gnu@1.7.14': optional: true - '@swc/core-linux-arm64-musl@1.4.16': + '@swc/core-linux-arm64-musl@1.7.14': optional: true - '@swc/core-linux-x64-gnu@1.4.16': + '@swc/core-linux-x64-gnu@1.7.14': optional: true - '@swc/core-linux-x64-musl@1.4.16': + '@swc/core-linux-x64-musl@1.7.14': optional: true - '@swc/core-win32-arm64-msvc@1.4.16': + '@swc/core-win32-arm64-msvc@1.7.14': optional: true - '@swc/core-win32-ia32-msvc@1.4.16': + '@swc/core-win32-ia32-msvc@1.7.14': optional: true - '@swc/core-win32-x64-msvc@1.4.16': + '@swc/core-win32-x64-msvc@1.7.14': optional: true - '@swc/core@1.4.16': + '@swc/core@1.7.14': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.6 + '@swc/types': 0.1.12 optionalDependencies: - '@swc/core-darwin-arm64': 1.4.16 - '@swc/core-darwin-x64': 1.4.16 - '@swc/core-linux-arm-gnueabihf': 1.4.16 - '@swc/core-linux-arm64-gnu': 1.4.16 - '@swc/core-linux-arm64-musl': 1.4.16 - '@swc/core-linux-x64-gnu': 1.4.16 - '@swc/core-linux-x64-musl': 1.4.16 - '@swc/core-win32-arm64-msvc': 1.4.16 - '@swc/core-win32-ia32-msvc': 1.4.16 - '@swc/core-win32-x64-msvc': 1.4.16 + '@swc/core-darwin-arm64': 1.7.14 + '@swc/core-darwin-x64': 1.7.14 + '@swc/core-linux-arm-gnueabihf': 1.7.14 + '@swc/core-linux-arm64-gnu': 1.7.14 + '@swc/core-linux-arm64-musl': 1.7.14 + '@swc/core-linux-x64-gnu': 1.7.14 + '@swc/core-linux-x64-musl': 1.7.14 + '@swc/core-win32-arm64-msvc': 1.7.14 + '@swc/core-win32-ia32-msvc': 1.7.14 + '@swc/core-win32-x64-msvc': 1.7.14 '@swc/counter@0.1.3': {} - '@swc/types@0.1.6': + '@swc/types@0.1.12': dependencies: '@swc/counter': 0.1.3 @@ -4507,11 +3873,11 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 18.19.31 + '@types/node': 18.19.45 '@types/connect@3.4.38': dependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.45 '@types/debug@4.1.12': dependencies: @@ -4525,7 +3891,7 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.45 '@types/qs': 6.9.15 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -4557,14 +3923,14 @@ snapshots: '@types/node-fetch@2.6.11': dependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.45 form-data: 4.0.0 '@types/node@12.20.55': {} '@types/node@16.18.11': {} - '@types/node@18.19.31': + '@types/node@18.19.45': dependencies: undici-types: 5.26.5 @@ -4574,11 +3940,11 @@ snapshots: '@types/range-parser@1.2.7': {} - '@types/react-dom@18.2.25': + '@types/react-dom@18.3.0': dependencies: - '@types/react': 18.2.79 + '@types/react': 18.3.3 - '@types/react@18.2.79': + '@types/react@18.3.3': dependencies: '@types/prop-types': 15.7.12 csstype: 3.1.3 @@ -4588,117 +3954,33 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 18.19.31 + '@types/node': 18.19.45 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 18.19.31 + '@types/node': 18.19.45 '@types/send': 0.17.4 '@types/unist@2.0.10': {} '@types/unist@3.0.2': {} - '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 7.18.0 - eslint: 8.57.0 - graphemer: 1.4.0 - ignore: 5.3.1 - natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4)': - dependencies: - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.3.6 - eslint: 8.57.0 - optionalDependencies: - typescript: 5.5.4 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@7.18.0': - dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 - - '@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)': - dependencies: - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) - debug: 4.3.6 - eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@7.18.0': {} - - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4)': - dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.3.6 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) - eslint: 8.57.0 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/visitor-keys@7.18.0': - dependencies: - '@typescript-eslint/types': 7.18.0 - eslint-visitor-keys: 3.4.3 - '@ungap/structured-clone@1.2.0': {} - '@universal-middleware/express@0.0.2': + '@universal-middleware/core@0.2.3': {} + + '@universal-middleware/express@0.2.1': dependencies: - '@hattip/core': 0.0.45 - '@hattip/polyfills': 0.0.45 - '@hattip/walk': 0.0.45 + '@universal-middleware/core': 0.2.3 '@vercel/build-utils@8.3.6': {} '@vercel/edge-config-fs@0.1.0': {} - '@vercel/edge-config@1.1.0(typescript@5.5.4)': + '@vercel/edge-config@1.2.1': dependencies: '@vercel/edge-config-fs': 0.1.0 - ts-essentials: 9.4.1(typescript@5.5.4) - transitivePeerDependencies: - - typescript '@vercel/error-utils@2.0.2': {} @@ -4706,8 +3988,8 @@ snapshots: dependencies: '@mapbox/node-pre-gyp': 1.0.11 '@rollup/pluginutils': 4.2.1 - acorn: 8.11.3 - acorn-import-attributes: 1.9.5(acorn@8.11.3) + acorn: 8.12.1 + acorn-import-attributes: 1.9.5(acorn@8.12.1) async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 @@ -4720,7 +4002,7 @@ snapshots: - encoding - supports-color - '@vercel/node@3.2.8(@swc/core@1.4.16)': + '@vercel/node@3.2.8(@swc/core@1.7.14)': dependencies: '@edge-runtime/node-utils': 2.3.0 '@edge-runtime/primitives': 4.1.0 @@ -4739,7 +4021,7 @@ snapshots: node-fetch: 2.6.9 path-to-regexp: 6.2.1 ts-morph: 12.0.0 - ts-node: 10.9.1(@swc/core@1.4.16)(@types/node@16.18.11)(typescript@4.9.5) + ts-node: 10.9.1(@swc/core@1.7.14)(@types/node@16.18.11)(typescript@4.9.5) typescript: 4.9.5 undici: 5.28.4 transitivePeerDependencies: @@ -4766,56 +4048,45 @@ snapshots: json-schema-to-ts: 1.6.4 ts-morph: 12.0.0 - '@vitejs/plugin-react-swc@3.6.0(vite@5.4.0(@types/node@18.19.31))': + '@vitejs/plugin-react-swc@3.7.0(vite@5.4.1(@types/node@18.19.45))': dependencies: - '@swc/core': 1.4.16 - vite: 5.4.0(@types/node@18.19.31) + '@swc/core': 1.7.14 + vite: 5.4.1(@types/node@18.19.45) transitivePeerDependencies: - '@swc/helpers' - '@vitest/expect@1.5.0': + '@vitest/expect@2.0.5': dependencies: - '@vitest/spy': 1.5.0 - '@vitest/utils': 1.5.0 - chai: 4.4.1 + '@vitest/spy': 2.0.5 + '@vitest/utils': 2.0.5 + chai: 5.1.1 + tinyrainbow: 1.2.0 - '@vitest/runner@1.5.0': + '@vitest/pretty-format@2.0.5': dependencies: - '@vitest/utils': 1.5.0 - p-limit: 5.0.0 - pathe: 1.1.2 + tinyrainbow: 1.2.0 - '@vitest/snapshot@1.5.0': + '@vitest/runner@2.0.5': dependencies: - magic-string: 0.30.10 + '@vitest/utils': 2.0.5 pathe: 1.1.2 - pretty-format: 29.7.0 - - '@vitest/spy@1.5.0': - dependencies: - tinyspy: 2.2.1 - '@vitest/utils@1.5.0': + '@vitest/snapshot@2.0.5': dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - - '@whatwg-node/events@0.1.1': {} + '@vitest/pretty-format': 2.0.5 + magic-string: 0.30.11 + pathe: 1.1.2 - '@whatwg-node/fetch@0.9.18': + '@vitest/spy@2.0.5': dependencies: - '@whatwg-node/node-fetch': 0.5.11 - urlpattern-polyfill: 10.0.0 + tinyspy: 3.0.0 - '@whatwg-node/node-fetch@0.5.11': + '@vitest/utils@2.0.5': dependencies: - '@kamilkisiela/fast-url-parser': 1.1.4 - '@whatwg-node/events': 0.1.1 - busboy: 1.6.0 - fast-querystring: 1.1.2 - tslib: 2.6.3 + '@vitest/pretty-format': 2.0.5 + estree-walker: 3.0.3 + loupe: 3.1.1 + tinyrainbow: 1.2.0 abbrev@1.1.1: {} @@ -4824,17 +4095,17 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-import-attributes@1.9.5(acorn@8.11.3): + acorn-import-attributes@1.9.5(acorn@8.12.1): dependencies: - acorn: 8.11.3 + acorn: 8.12.1 - acorn-jsx@5.3.2(acorn@8.11.3): + acorn-jsx@5.3.2(acorn@8.12.1): dependencies: - acorn: 8.11.3 + acorn: 8.12.1 acorn-walk@8.3.2: {} - acorn@8.11.3: {} + acorn@8.12.1: {} agent-base@6.0.2: dependencies: @@ -4848,6 +4119,7 @@ snapshots: fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 + optional: true ajv@8.6.3: dependencies: @@ -4858,10 +4130,6 @@ snapshots: ansi-colors@4.1.3: {} - ansi-escapes@7.0.0: - dependencies: - environment: 1.1.0 - ansi-regex@5.0.1: {} ansi-regex@6.0.1: {} @@ -4874,8 +4142,6 @@ snapshots: dependencies: color-convert: 2.0.1 - ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} any-promise@1.3.0: {} @@ -4904,7 +4170,7 @@ snapshots: array-union@2.1.0: {} - assertion-error@1.1.0: {} + assertion-error@2.0.1: {} astring@1.8.6: {} @@ -4964,15 +4230,11 @@ snapshots: buffer-from@1.1.2: {} - bundle-require@5.0.0(esbuild@0.23.0): + bundle-require@5.0.0(esbuild@0.23.1): dependencies: - esbuild: 0.23.0 + esbuild: 0.23.1 load-tsconfig: 0.2.5 - busboy@1.6.0: - dependencies: - streamsearch: 1.1.0 - bytes@3.1.2: {} cac@6.7.14: {} @@ -4985,21 +4247,17 @@ snapshots: get-intrinsic: 1.2.4 set-function-length: 1.2.2 - callsites@3.1.0: {} - camelize@1.0.1: {} ccount@2.0.1: {} - chai@4.4.1: + chai@5.1.1: dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.3 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.0.8 + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.1 + pathval: 2.0.0 chalk@2.4.2: dependencies: @@ -5007,13 +4265,6 @@ snapshots: escape-string-regexp: 1.0.5 supports-color: 5.5.0 - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.3.0: {} - character-entities-html4@2.1.0: {} character-entities-legacy@3.0.0: {} @@ -5024,9 +4275,7 @@ snapshots: chardet@0.7.0: {} - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 + check-error@2.1.1: {} chokidar@3.6.0: dependencies: @@ -5046,15 +4295,6 @@ snapshots: cjs-module-lexer@1.2.3: {} - cli-cursor@5.0.0: - dependencies: - restore-cursor: 5.1.0 - - cli-truncate@4.0.0: - dependencies: - slice-ansi: 5.0.0 - string-width: 7.1.0 - code-block-writer@10.1.1: {} collapse-white-space@2.1.0: {} @@ -5073,22 +4313,16 @@ snapshots: color-support@1.1.3: {} - colorette@2.0.20: {} - combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 comma-separated-tokens@2.0.3: {} - commander@12.1.0: {} - commander@4.1.1: {} concat-map@0.0.1: {} - confbox@0.1.7: {} - consola@3.2.3: {} console-control-strings@1.1.0: {} @@ -5157,11 +4391,7 @@ snapshots: dependencies: character-entities: 2.0.2 - deep-eql@4.1.3: - dependencies: - type-detect: 4.0.8 - - deep-is@0.1.4: {} + deep-eql@5.0.2: {} define-data-property@1.1.4: dependencies: @@ -5187,18 +4417,12 @@ snapshots: dependencies: dequal: 2.0.3 - diff-sequences@29.6.3: {} - diff@4.0.2: {} dir-glob@3.0.1: dependencies: path-type: 4.0.0 - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - eastasianwidth@0.2.0: {} edge-runtime@2.5.9: @@ -5228,8 +4452,6 @@ snapshots: ansi-colors: 4.1.3 strip-ansi: 6.0.1 - environment@1.1.0: {} - es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 @@ -5238,7 +4460,7 @@ snapshots: es-module-lexer@1.4.1: {} - es-module-lexer@1.5.0: {} + es-module-lexer@1.5.4: {} esbuild-android-64@0.14.47: optional: true @@ -5323,32 +4545,6 @@ snapshots: esbuild-windows-64: 0.14.47 esbuild-windows-arm64: 0.14.47 - esbuild@0.19.12: - optionalDependencies: - '@esbuild/aix-ppc64': 0.19.12 - '@esbuild/android-arm': 0.19.12 - '@esbuild/android-arm64': 0.19.12 - '@esbuild/android-x64': 0.19.12 - '@esbuild/darwin-arm64': 0.19.12 - '@esbuild/darwin-x64': 0.19.12 - '@esbuild/freebsd-arm64': 0.19.12 - '@esbuild/freebsd-x64': 0.19.12 - '@esbuild/linux-arm': 0.19.12 - '@esbuild/linux-arm64': 0.19.12 - '@esbuild/linux-ia32': 0.19.12 - '@esbuild/linux-loong64': 0.19.12 - '@esbuild/linux-mips64el': 0.19.12 - '@esbuild/linux-ppc64': 0.19.12 - '@esbuild/linux-riscv64': 0.19.12 - '@esbuild/linux-s390x': 0.19.12 - '@esbuild/linux-x64': 0.19.12 - '@esbuild/netbsd-x64': 0.19.12 - '@esbuild/openbsd-x64': 0.19.12 - '@esbuild/sunos-x64': 0.19.12 - '@esbuild/win32-arm64': 0.19.12 - '@esbuild/win32-ia32': 0.19.12 - '@esbuild/win32-x64': 0.19.12 - esbuild@0.21.5: optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 @@ -5375,107 +4571,39 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - esbuild@0.23.0: + esbuild@0.23.1: optionalDependencies: - '@esbuild/aix-ppc64': 0.23.0 - '@esbuild/android-arm': 0.23.0 - '@esbuild/android-arm64': 0.23.0 - '@esbuild/android-x64': 0.23.0 - '@esbuild/darwin-arm64': 0.23.0 - '@esbuild/darwin-x64': 0.23.0 - '@esbuild/freebsd-arm64': 0.23.0 - '@esbuild/freebsd-x64': 0.23.0 - '@esbuild/linux-arm': 0.23.0 - '@esbuild/linux-arm64': 0.23.0 - '@esbuild/linux-ia32': 0.23.0 - '@esbuild/linux-loong64': 0.23.0 - '@esbuild/linux-mips64el': 0.23.0 - '@esbuild/linux-ppc64': 0.23.0 - '@esbuild/linux-riscv64': 0.23.0 - '@esbuild/linux-s390x': 0.23.0 - '@esbuild/linux-x64': 0.23.0 - '@esbuild/netbsd-x64': 0.23.0 - '@esbuild/openbsd-arm64': 0.23.0 - '@esbuild/openbsd-x64': 0.23.0 - '@esbuild/sunos-x64': 0.23.0 - '@esbuild/win32-arm64': 0.23.0 - '@esbuild/win32-ia32': 0.23.0 - '@esbuild/win32-x64': 0.23.0 + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 escape-html@1.0.3: {} escape-string-regexp@1.0.5: {} - escape-string-regexp@4.0.0: {} - - eslint-scope@7.2.2: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@3.4.3: {} - - eslint@8.57.0: - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.0 - '@humanwhocodes/config-array': 0.11.14 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.6 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 - ignore: 5.3.1 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - - espree@9.6.1: - dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) - eslint-visitor-keys: 3.4.3 - esprima@4.0.1: {} - esquery@1.5.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@5.3.0: {} - estree-util-attach-comments@3.0.0: dependencies: '@types/estree': 1.0.5 @@ -5506,12 +4634,8 @@ snapshots: dependencies: '@types/estree': 1.0.5 - esutils@2.0.3: {} - etag@1.8.1: {} - eventemitter3@5.0.1: {} - execa@5.1.1: dependencies: cross-spawn: 7.0.3 @@ -5582,8 +4706,6 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 - fast-decode-uri-component@1.0.1: {} - fast-deep-equal@3.1.3: {} fast-glob@3.3.2: @@ -5594,13 +4716,8 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.7 - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} - - fast-querystring@1.1.2: - dependencies: - fast-decode-uri-component: 1.0.1 + fast-json-stable-stringify@2.1.0: + optional: true fastq@1.17.1: dependencies: @@ -5613,10 +4730,6 @@ snapshots: fflate@0.7.4: {} - file-entry-cache@6.0.1: - dependencies: - flat-cache: 3.2.0 - file-uri-to-path@1.0.0: {} fill-range@7.1.1: @@ -5650,14 +4763,6 @@ snapshots: micromatch: 4.0.7 pkg-dir: 4.2.0 - flat-cache@3.2.0: - dependencies: - flatted: 3.3.1 - keyv: 4.5.4 - rimraf: 3.0.2 - - flatted@3.3.1: {} - foreground-child@3.1.1: dependencies: cross-spawn: 7.0.3 @@ -5712,8 +4817,6 @@ snapshots: strip-ansi: 6.0.1 wide-align: 1.1.5 - get-east-asian-width@1.2.0: {} - get-func-name@2.0.2: {} get-intrinsic@1.2.4: @@ -5728,7 +4831,7 @@ snapshots: get-stream@8.0.1: {} - get-tsconfig@4.7.5: + get-tsconfig@4.7.6: dependencies: resolve-pkg-maps: 1.0.0 @@ -5736,10 +4839,6 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - glob@10.3.12: dependencies: foreground-child: 3.1.1 @@ -5757,10 +4856,6 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - globals@13.24.0: - dependencies: - type-fest: 0.20.2 - globby@11.1.0: dependencies: array-union: 2.1.0 @@ -5776,12 +4871,8 @@ snapshots: graceful-fs@4.2.11: {} - graphemer@1.4.0: {} - has-flag@3.0.0: {} - has-flag@4.0.0: {} - has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.0 @@ -5864,21 +4955,12 @@ snapshots: human-signals@5.0.0: {} - husky@9.1.4: {} - iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 ignore@5.3.1: {} - import-fresh@3.3.0: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - imurmurhash@0.1.4: {} - inflight@1.0.6: dependencies: once: 1.4.0 @@ -5909,12 +4991,6 @@ snapshots: is-fullwidth-code-point@3.0.0: {} - is-fullwidth-code-point@4.0.0: {} - - is-fullwidth-code-point@5.0.0: - dependencies: - get-east-asian-width: 1.2.0 - is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -5923,8 +4999,6 @@ snapshots: is-number@7.0.0: {} - is-path-inside@3.0.3: {} - is-plain-obj@4.1.0: {} is-reference@3.0.2: @@ -5957,8 +5031,6 @@ snapshots: js-tokens@4.0.0: {} - js-tokens@9.0.0: {} - js-yaml@3.14.1: dependencies: argparse: 1.0.10 @@ -5968,32 +5040,20 @@ snapshots: dependencies: argparse: 2.0.1 - json-buffer@3.0.1: {} - json-schema-to-ts@1.6.4: dependencies: '@types/json-schema': 7.0.15 ts-toolbelt: 6.15.5 - json-schema-traverse@0.4.1: {} + json-schema-traverse@0.4.1: + optional: true json-schema-traverse@1.0.0: {} - json-stable-stringify-without-jsonify@1.0.1: {} - jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - lilconfig@3.1.2: {} linebreak@1.1.0: @@ -6003,30 +5063,6 @@ snapshots: lines-and-columns@1.2.4: {} - lint-staged@15.2.8: - dependencies: - chalk: 5.3.0 - commander: 12.1.0 - debug: 4.3.6 - execa: 8.0.1 - lilconfig: 3.1.2 - listr2: 8.2.4 - micromatch: 4.0.7 - pidtree: 0.6.0 - string-argv: 0.3.2 - yaml: 2.5.0 - transitivePeerDependencies: - - supports-color - - listr2@8.2.4: - dependencies: - cli-truncate: 4.0.0 - colorette: 2.0.20 - eventemitter3: 5.0.1 - log-update: 6.1.0 - rfdc: 1.4.1 - wrap-ansi: 9.0.0 - load-tsconfig@0.2.5: {} load-yaml-file@0.2.0: @@ -6036,11 +5072,6 @@ snapshots: pify: 4.0.1 strip-bom: 3.0.0 - local-pkg@0.5.0: - dependencies: - mlly: 1.6.1 - pkg-types: 1.1.0 - locate-path@5.0.0: dependencies: p-locate: 4.1.0 @@ -6049,27 +5080,17 @@ snapshots: dependencies: p-locate: 5.0.0 - lodash.merge@4.6.2: {} - lodash.sortby@4.7.0: {} lodash.startcase@4.4.0: {} - log-update@6.1.0: - dependencies: - ansi-escapes: 7.0.0 - cli-cursor: 5.0.0 - slice-ansi: 7.1.0 - strip-ansi: 7.1.0 - wrap-ansi: 9.0.0 - longest-streak@3.1.0: {} loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 - loupe@2.3.7: + loupe@3.1.1: dependencies: get-func-name: 2.0.2 @@ -6080,9 +5101,9 @@ snapshots: pseudomap: 1.0.2 yallist: 2.1.2 - magic-string@0.30.10: + magic-string@0.30.11: dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 magicast@0.3.4: dependencies: @@ -6268,8 +5289,8 @@ snapshots: micromark-extension-mdxjs@3.0.0: dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) micromark-extension-mdx-expression: 3.0.0 micromark-extension-mdx-jsx: 3.0.0 micromark-extension-mdx-md: 2.0.0 @@ -6430,8 +5451,6 @@ snapshots: mimic-fn@4.0.0: {} - mimic-function@5.0.1: {} - minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -6455,13 +5474,6 @@ snapshots: mkdirp@1.0.4: {} - mlly@1.6.1: - dependencies: - acorn: 8.11.3 - pathe: 1.1.2 - pkg-types: 1.1.0 - ufo: 1.5.3 - mri@1.2.0: {} mrmime@2.0.0: {} @@ -6482,14 +5494,10 @@ snapshots: nanoid@5.0.7: {} - natural-compare@1.4.0: {} - negotiator@0.6.3: {} node-domexception@1.0.0: {} - node-fetch-native@1.6.4: {} - node-fetch@2.6.9: dependencies: whatwg-url: 5.0.0 @@ -6547,19 +5555,6 @@ snapshots: dependencies: mimic-fn: 4.0.0 - onetime@7.0.0: - dependencies: - mimic-function: 5.0.1 - - optionator@0.9.3: - dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - os-tmpdir@1.0.2: {} outdent@0.5.0: {} @@ -6576,10 +5571,6 @@ snapshots: dependencies: yocto-queue: 0.1.0 - p-limit@5.0.0: - dependencies: - yocto-queue: 1.0.0 - p-locate@4.1.0: dependencies: p-limit: 2.3.0 @@ -6594,10 +5585,6 @@ snapshots: pako@0.2.9: {} - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - parse-css-color@0.2.1: dependencies: color-name: 1.1.4 @@ -6643,7 +5630,7 @@ snapshots: pathe@1.1.2: {} - pathval@1.1.1: {} + pathval@2.0.0: {} periscopic@3.1.0: dependencies: @@ -6657,8 +5644,6 @@ snapshots: picomatch@2.3.1: {} - pidtree@0.6.0: {} - pify@4.0.1: {} pirates@4.0.6: {} @@ -6667,18 +5652,12 @@ snapshots: dependencies: find-up: 4.1.0 - pkg-types@1.1.0: - dependencies: - confbox: 0.1.7 - mlly: 1.6.1 - pathe: 1.1.2 - - postcss-load-config@6.0.1(postcss@8.4.41)(tsx@4.16.2)(yaml@2.5.0): + postcss-load-config@6.0.1(postcss@8.4.41)(tsx@4.17.0)(yaml@2.5.0): dependencies: lilconfig: 3.1.2 optionalDependencies: postcss: 8.4.41 - tsx: 4.16.2 + tsx: 4.17.0 yaml: 2.5.0 postcss-value-parser@4.2.0: {} @@ -6696,18 +5675,8 @@ snapshots: path-exists: 4.0.0 which-pm: 2.0.0 - prelude-ls@1.2.1: {} - prettier@2.8.8: {} - prettier@3.3.3: {} - - pretty-format@29.7.0: - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.2.0 - pretty-ms@7.0.1: dependencies: parse-ms: 2.1.0 @@ -6738,24 +5707,22 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 - react-dom@18.2.0(react@18.2.0): + react-dom@18.3.1(react@18.3.1): dependencies: loose-envify: 1.4.0 - react: 18.2.0 - scheduler: 0.23.0 - - react-is@18.2.0: {} + react: 18.3.1 + scheduler: 0.23.2 - react-streaming@0.3.37(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + react-streaming@0.3.43(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@brillout/import': 0.2.3 '@brillout/json-serializer': 0.5.13 '@brillout/picocolors': 1.0.14 isbot-fast: 1.2.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) - react@18.2.0: + react@18.3.1: dependencies: loose-envify: 1.4.0 @@ -6804,45 +5771,36 @@ snapshots: require-from-string@2.0.2: {} - resolve-from@4.0.0: {} - resolve-from@5.0.0: {} resolve-pkg-maps@1.0.0: {} - restore-cursor@5.1.0: - dependencies: - onetime: 7.0.0 - signal-exit: 4.1.0 - reusify@1.0.4: {} - rfdc@1.4.1: {} - rimraf@3.0.2: dependencies: glob: 7.2.3 - rollup@4.19.0: + rollup@4.21.0: dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.19.0 - '@rollup/rollup-android-arm64': 4.19.0 - '@rollup/rollup-darwin-arm64': 4.19.0 - '@rollup/rollup-darwin-x64': 4.19.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.19.0 - '@rollup/rollup-linux-arm-musleabihf': 4.19.0 - '@rollup/rollup-linux-arm64-gnu': 4.19.0 - '@rollup/rollup-linux-arm64-musl': 4.19.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.19.0 - '@rollup/rollup-linux-riscv64-gnu': 4.19.0 - '@rollup/rollup-linux-s390x-gnu': 4.19.0 - '@rollup/rollup-linux-x64-gnu': 4.19.0 - '@rollup/rollup-linux-x64-musl': 4.19.0 - '@rollup/rollup-win32-arm64-msvc': 4.19.0 - '@rollup/rollup-win32-ia32-msvc': 4.19.0 - '@rollup/rollup-win32-x64-msvc': 4.19.0 + '@rollup/rollup-android-arm-eabi': 4.21.0 + '@rollup/rollup-android-arm64': 4.21.0 + '@rollup/rollup-darwin-arm64': 4.21.0 + '@rollup/rollup-darwin-x64': 4.21.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.21.0 + '@rollup/rollup-linux-arm-musleabihf': 4.21.0 + '@rollup/rollup-linux-arm64-gnu': 4.21.0 + '@rollup/rollup-linux-arm64-musl': 4.21.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.21.0 + '@rollup/rollup-linux-riscv64-gnu': 4.21.0 + '@rollup/rollup-linux-s390x-gnu': 4.21.0 + '@rollup/rollup-linux-x64-gnu': 4.21.0 + '@rollup/rollup-linux-x64-musl': 4.21.0 + '@rollup/rollup-win32-arm64-msvc': 4.21.0 + '@rollup/rollup-win32-ia32-msvc': 4.21.0 + '@rollup/rollup-win32-x64-msvc': 4.21.0 fsevents: 2.3.3 run-parallel@1.2.0: @@ -6866,13 +5824,13 @@ snapshots: postcss-value-parser: 4.2.0 yoga-wasm-web: 0.3.3 - scheduler@0.23.0: + scheduler@0.23.2: dependencies: loose-envify: 1.4.0 semver@6.3.1: {} - semver@7.6.2: {} + semver@7.6.3: {} send@0.18.0: dependencies: @@ -6949,16 +5907,6 @@ snapshots: slash@3.0.0: {} - slice-ansi@5.0.0: - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - - slice-ansi@7.1.0: - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 5.0.0 - source-map-js@1.2.0: {} source-map-support@0.5.21: @@ -6989,10 +5937,6 @@ snapshots: std-env@3.7.0: {} - streamsearch@1.1.0: {} - - string-argv@0.3.2: {} - string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -7005,12 +5949,6 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 - string-width@7.1.0: - dependencies: - emoji-regex: 10.3.0 - get-east-asian-width: 1.2.0 - strip-ansi: 7.1.0 - string.prototype.codepointat@0.2.1: {} string_decoder@1.3.0: @@ -7036,12 +5974,6 @@ snapshots: strip-final-newline@3.0.0: {} - strip-json-comments@3.1.1: {} - - strip-literal@2.1.0: - dependencies: - js-tokens: 9.0.0 - style-to-object@0.4.4: dependencies: inline-style-parser: 0.1.1 @@ -7064,10 +5996,6 @@ snapshots: dependencies: has-flag: 3.0.0 - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - tar@6.2.1: dependencies: chownr: 2.0.0 @@ -7079,8 +6007,6 @@ snapshots: term-size@2.2.1: {} - text-table@0.2.0: {} - thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -7095,11 +6021,13 @@ snapshots: tiny-inflate@1.0.3: {} - tinybench@2.8.0: {} + tinybench@2.9.0: {} + + tinypool@1.0.1: {} - tinypool@0.8.4: {} + tinyrainbow@1.2.0: {} - tinyspy@2.2.1: {} + tinyspy@3.0.0: {} tmp@0.0.33: dependencies: @@ -7127,14 +6055,6 @@ snapshots: trough@2.2.0: {} - ts-api-utils@1.3.0(typescript@5.5.4): - dependencies: - typescript: 5.5.4 - - ts-essentials@9.4.1(typescript@5.5.4): - optionalDependencies: - typescript: 5.5.4 - ts-interface-checker@0.1.13: {} ts-morph@12.0.0: @@ -7142,7 +6062,7 @@ snapshots: '@ts-morph/common': 0.11.1 code-block-writer: 10.1.1 - ts-node@10.9.1(@swc/core@1.4.16)(@types/node@16.18.11)(typescript@4.9.5): + ts-node@10.9.1(@swc/core@1.7.14)(@types/node@16.18.11)(typescript@4.9.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -7150,7 +6070,7 @@ snapshots: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 16.18.11 - acorn: 8.11.3 + acorn: 8.12.1 acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 @@ -7160,32 +6080,30 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.4.16 + '@swc/core': 1.7.14 ts-toolbelt@6.15.5: {} - tslib@2.6.3: {} - - tsup@8.2.4(@swc/core@1.4.16)(postcss@8.4.41)(tsx@4.16.2)(typescript@5.5.4)(yaml@2.5.0): + tsup@8.2.4(@swc/core@1.7.14)(postcss@8.4.41)(tsx@4.17.0)(typescript@5.5.4)(yaml@2.5.0): dependencies: - bundle-require: 5.0.0(esbuild@0.23.0) + bundle-require: 5.0.0(esbuild@0.23.1) cac: 6.7.14 chokidar: 3.6.0 consola: 3.2.3 debug: 4.3.6 - esbuild: 0.23.0 + esbuild: 0.23.1 execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 picocolors: 1.0.1 - postcss-load-config: 6.0.1(postcss@8.4.41)(tsx@4.16.2)(yaml@2.5.0) + postcss-load-config: 6.0.1(postcss@8.4.41)(tsx@4.17.0)(yaml@2.5.0) resolve-from: 5.0.0 - rollup: 4.19.0 + rollup: 4.21.0 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tree-kill: 1.2.2 optionalDependencies: - '@swc/core': 1.4.16 + '@swc/core': 1.7.14 postcss: 8.4.41 typescript: 5.5.4 transitivePeerDependencies: @@ -7194,21 +6112,13 @@ snapshots: - tsx - yaml - tsx@4.16.2: + tsx@4.17.0: dependencies: - esbuild: 0.21.5 - get-tsconfig: 4.7.5 + esbuild: 0.23.1 + get-tsconfig: 4.7.6 optionalDependencies: fsevents: 2.3.3 - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - - type-detect@4.0.8: {} - - type-fest@0.20.2: {} - type-is@1.6.18: dependencies: media-typer: 0.3.0 @@ -7218,8 +6128,6 @@ snapshots: typescript@5.5.4: {} - ufo@1.5.3: {} - undici-types@5.26.5: {} undici@5.28.4: @@ -7281,8 +6189,6 @@ snapshots: dependencies: punycode: 2.3.1 - urlpattern-polyfill@10.0.0: {} - util-deprecate@1.0.2: {} utils-merge@1.0.1: {} @@ -7302,38 +6208,39 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - vike-react@0.4.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(vike@0.4.183(vite@5.4.0(@types/node@18.19.31)))(vite@5.4.0(@types/node@18.19.31)): + vike-react@0.5.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vike@0.4.188(react-streaming@0.3.43(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@5.4.1(@types/node@18.19.45))): dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-streaming: 0.3.37(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - vike: 0.4.183(vite@5.4.0(@types/node@18.19.31)) - vite: 5.4.0(@types/node@18.19.31) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-streaming: 0.3.43(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + vike: 0.4.188(react-streaming@0.3.43(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@5.4.1(@types/node@18.19.45)) - vike@0.4.183(vite@5.4.0(@types/node@18.19.31)): + vike@0.4.188(react-streaming@0.3.43(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@5.4.1(@types/node@18.19.45)): dependencies: '@brillout/import': 0.2.3 '@brillout/json-serializer': 0.5.13 '@brillout/picocolors': 1.0.14 '@brillout/require-shim': 0.1.2 - '@brillout/vite-plugin-server-entry': 0.4.6 - acorn: 8.11.3 + '@brillout/vite-plugin-server-entry': 0.4.8 + acorn: 8.12.1 cac: 6.7.14 - es-module-lexer: 1.5.0 - esbuild: 0.19.12 + es-module-lexer: 1.5.4 + esbuild: 0.23.1 fast-glob: 3.3.2 - semver: 7.6.2 + semver: 7.6.3 sirv: 2.0.4 source-map-support: 0.5.21 - vite: 5.4.0(@types/node@18.19.31) + vite: 5.4.1(@types/node@18.19.45) + optionalDependencies: + react-streaming: 0.3.43(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - vite-node@1.5.0(@types/node@18.19.31): + vite-node@2.0.5(@types/node@18.19.45): dependencies: cac: 6.7.14 debug: 4.3.6 pathe: 1.1.2 - picocolors: 1.0.1 - vite: 5.4.0(@types/node@18.19.31) + tinyrainbow: 1.2.0 + vite: 5.4.1(@types/node@18.19.45) transitivePeerDependencies: - '@types/node' - less @@ -7345,40 +6252,39 @@ snapshots: - supports-color - terser - vite@5.4.0(@types/node@18.19.31): + vite@5.4.1(@types/node@18.19.45): dependencies: esbuild: 0.21.5 postcss: 8.4.41 - rollup: 4.19.0 + rollup: 4.21.0 optionalDependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.45 fsevents: 2.3.3 - vitest@1.5.0(@edge-runtime/vm@3.2.0)(@types/node@18.19.31): + vitest@2.0.5(@edge-runtime/vm@4.0.2)(@types/node@18.19.45): dependencies: - '@vitest/expect': 1.5.0 - '@vitest/runner': 1.5.0 - '@vitest/snapshot': 1.5.0 - '@vitest/spy': 1.5.0 - '@vitest/utils': 1.5.0 - acorn-walk: 8.3.2 - chai: 4.4.1 + '@ampproject/remapping': 2.3.0 + '@vitest/expect': 2.0.5 + '@vitest/pretty-format': 2.0.5 + '@vitest/runner': 2.0.5 + '@vitest/snapshot': 2.0.5 + '@vitest/spy': 2.0.5 + '@vitest/utils': 2.0.5 + chai: 5.1.1 debug: 4.3.6 execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.10 + magic-string: 0.30.11 pathe: 1.1.2 - picocolors: 1.0.1 std-env: 3.7.0 - strip-literal: 2.1.0 - tinybench: 2.8.0 - tinypool: 0.8.4 - vite: 5.4.0(@types/node@18.19.31) - vite-node: 1.5.0(@types/node@18.19.31) - why-is-node-running: 2.2.2 + tinybench: 2.9.0 + tinypool: 1.0.1 + tinyrainbow: 1.2.0 + vite: 5.4.1(@types/node@18.19.45) + vite-node: 2.0.5(@types/node@18.19.45) + why-is-node-running: 2.3.0 optionalDependencies: - '@edge-runtime/vm': 3.2.0 - '@types/node': 18.19.31 + '@edge-runtime/vm': 4.0.2 + '@types/node': 18.19.45 transitivePeerDependencies: - less - lightningcss @@ -7419,7 +6325,7 @@ snapshots: dependencies: isexe: 2.0.0 - why-is-node-running@2.2.2: + why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 stackback: 0.0.2 @@ -7440,26 +6346,19 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.1.0 - wrap-ansi@9.0.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 7.1.0 - strip-ansi: 7.1.0 - wrappy@1.0.2: {} yallist@2.1.2: {} yallist@4.0.0: {} - yaml@2.5.0: {} + yaml@2.5.0: + optional: true yn@3.1.1: {} yocto-queue@0.1.0: {} - yocto-queue@1.0.0: {} - yoga-wasm-web@0.3.3: {} zod@3.23.8: {} diff --git a/tsconfig.json b/tsconfig.json index 2001dd69..572b7f2f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,7 +2,7 @@ "compilerOptions": { "strict": true, "module": "ESNext", - "moduleResolution": "Node", + "moduleResolution": "Bundler", "target": "ES2022", "lib": ["ESNext"], "esModuleInterop": true